vue-socials
Version:
Social media share buttons and counts for Vue.js
85 lines (70 loc) • 2.02 kB
JavaScript
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;