vue-socials
Version:
Social media share buttons and counts for Vue.js
58 lines (50 loc) • 1.67 kB
JavaScript
import { defineComponent } from 'vue';
import JSONP from '../../utils/jsonp.js';
import getSerialisedParams from '../../utils/getSerialisedParams.js';
import getSeparatedList from '../../utils/getSeparatedList.js';
import BaseCount from '../../mixins/BaseCount/BaseCount.js';
/**
* Hey!
*
* SFacebookCount component used for Facebook social network
* @link https://www.facebook.com/
* @example https://graph.facebook.com/?url=https://github.com/
*/
var SFacebookCount = /* #__PURE__ */defineComponent({
mixins: [BaseCount('Facebook')],
methods: {
handleFacebookResponse: function handleFacebookResponse(data) {
this.handleResult(data);
if ('engagement' in data) {
var _data$engagement;
this.handleCount((_data$engagement = data.engagement) === null || _data$engagement === void 0 ? void 0 : _data$engagement.share_count);
}
}
},
mounted: function mounted() {
var _this = this;
var BASE_URL = 'https://graph.facebook.com/';
var shareOptions = this.shareOptions;
var id = shareOptions.id,
accessToken = shareOptions.accessToken,
fields = shareOptions.fields,
scopes = shareOptions.scopes;
var finalURL = "".concat(BASE_URL).concat(getSerialisedParams({
id: id,
access_token: accessToken,
fields: getSeparatedList(fields),
scopes: getSeparatedList(scopes)
}));
this.handleLoading(true);
JSONP(finalURL, function (err, data) {
_this.handleLoading(false);
if (data) {
_this.handleFacebookResponse(data);
}
if (err) {
_this.handleError(err);
}
});
}
});
export default SFacebookCount;