UNPKG

vue-socials

Version:

Social media share buttons and counts for Vue.js

85 lines (70 loc) 2.02 kB
import { defineComponent } from 'vue'; import BaseCount from '../../mixins/BaseCount/BaseCount.js'; import JSONP from '../../utils/jsonp.js'; /** * Hey! * * SGithubRepoCount component used for Github social network * @link https://github.com/ */ var GITHUB_LINK_TYPES = { watch: 'watch', star: 'star', fork: 'fork', issues: 'issues' }; var SGithubRepoCount = /* #__PURE__ */defineComponent({ name: 'SGithubRepoCount', mixins: [BaseCount('GitHub')], methods: { handleGithubResponse: function handleGithubResponse(data) { var shareOptions = this.shareOptions; var type = shareOptions.type; this.handleResult(data); var count; switch (type) { case GITHUB_LINK_TYPES.watch: if ('subscribers_count' in data.data) { count = data.data.subscribers_count; } break; case GITHUB_LINK_TYPES.fork: if ('forks_count' in data.data) { count = data.data.forks_count; } break; case GITHUB_LINK_TYPES.issues: if ('open_issues_count' in data.data) { count = data.data.open_issues_count; } break; case GITHUB_LINK_TYPES.star: default: if ('stargazers_count' in data.data) { count = data.data.stargazers_count; } break; } this.handleCount(count); } }, mounted: function mounted() { var _this = this; var shareOptions = this.shareOptions; var username = shareOptions.username, repository = shareOptions.repository; var BASE_URL = 'https://api.github.com/'; var finalURL = "".concat(BASE_URL, "repos/").concat(username, "/").concat(repository); this.handleLoading(true); JSONP(finalURL, function (err, data) { _this.handleLoading(false); if (err) { _this.handleError(err); } if (data) { _this.handleGithubResponse(data); } }); } }); export default SGithubRepoCount;