@cause-911/social-network
Version:
Run `npm install @cause-911/social-network --save` to add this library to your project
859 lines (847 loc) • 29.7 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('rxjs'), require('@angular/common/http'), require('rxjs/operators'), require('@cause-911/core')) :
typeof define === 'function' && define.amd ? define('@cause-911/social-network', ['exports', '@angular/core', 'rxjs', '@angular/common/http', 'rxjs/operators', '@cause-911/core'], factory) :
(global = global || self, factory((global['cause-911'] = global['cause-911'] || {}, global['cause-911']['social-network'] = {}), global.ng.core, global.rxjs, global.ng.common.http, global.rxjs.operators, global.core$1));
}(this, function (exports, core, rxjs, http, operators, core$1) { 'use strict';
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var LoadScriptService = /** @class */ (function () {
function LoadScriptService() {
}
/**
* @param {?} url
* @return {?}
*/
LoadScriptService.prototype.get = /**
* @param {?} url
* @return {?}
*/
function (url) {
return rxjs.Observable.create((/**
* @param {?} observer
* @return {?}
*/
function (observer) {
/** @type {?} */
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = url;
script.onload = (/**
* @return {?}
*/
function () {
observer.next({ script: url, status: 'loaded' });
observer.complete();
});
script.onerror = (/**
* @param {?} error
* @return {?}
*/
function (error) {
observer.error(error);
observer.complete();
});
document.getElementsByTagName('head')[0].appendChild(script);
}));
};
LoadScriptService.decorators = [
{ type: core.Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
LoadScriptService.ctorParameters = function () { return []; };
/** @nocollapse */ LoadScriptService.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function LoadScriptService_Factory() { return new LoadScriptService(); }, token: LoadScriptService, providedIn: "root" });
return LoadScriptService;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var FacebookService = /** @class */ (function () {
function FacebookService(httpBackend, loadScript) {
var _this = this;
this.isLoaded = false;
this.isInitialize = false;
this.httpClient = new http.HttpClient(httpBackend);
loadScript.get('https://connect.facebook.net/en_US/sdk.js').subscribe((/**
* @param {?} response
* @return {?}
*/
function (response) {
_this.isLoaded = true;
}), (/**
* @param {?} error
* @return {?}
*/
function (error) {
_this.error = error;
}));
}
/**
* @param {?} appId
* @param {?=} version
* @return {?}
*/
FacebookService.prototype.initialize = /**
* @param {?} appId
* @param {?=} version
* @return {?}
*/
function (appId, version) {
var _this = this;
if (version === void 0) { version = 'v6.0'; }
this.appId = appId;
this.version = version;
return rxjs.Observable.create((/**
* @param {?} observer
* @return {?}
*/
function (observer) {
if (_this.error) {
observer.error(_this.error);
}
else if (!_this.isLoaded) {
observer.error(new Error('Facebook SDK is not loaded'));
}
else {
observer.next(true);
}
observer.complete();
})).pipe(operators.map((/**
* @return {?}
*/
function () { return _this.initializeSDK(); })), operators.retryWhen((/**
* @param {?} error
* @return {?}
*/
function (error) { return error.pipe(operators.delay(200), operators.take(25)); })), operators.catchError((/**
* @param {?} error
* @return {?}
*/
function (error) { return rxjs.of(error); })));
};
/**
* @return {?}
*/
FacebookService.prototype.findManageablePage = /**
* @return {?}
*/
function () {
var _this = this;
return rxjs.Observable.create((/**
* @param {?} observer
* @return {?}
*/
function (observer) {
/** @type {?} */
var loadError = _this.validateSDK();
if (loadError) {
observer.error(loadError);
}
_this.getAuthentification().subscribe((/**
* @param {?} response
* @return {?}
*/
function (response) {
if (response && response.userID) {
_this.listAccessiblePage(response.userID).subscribe((/**
* @param {?} pages
* @return {?}
*/
function (pages) {
observer.next(pages);
observer.complete();
}), (/**
* @param {?} error
* @return {?}
*/
function (error) {
observer.error(error);
}));
}
else {
observer.error(new Error('No user are connected to Facebook'));
}
}), (/**
* @param {?} error
* @return {?}
*/
function (error) {
observer.error(error);
}));
}));
};
/**
* @return {?}
*/
FacebookService.prototype.askToManagePage = /**
* @return {?}
*/
function () {
var _this = this;
return rxjs.Observable.create((/**
* @param {?} observer
* @return {?}
*/
function (observer) {
/** @type {?} */
var loadError = _this.validateSDK();
if (loadError) {
observer.error(loadError);
}
_this.askTokenWithScope('manage_pages, publish_pages').subscribe((/**
* @param {?} response
* @return {?}
*/
function (response) {
if (!response.userID) {
observer.error(response);
}
else {
_this.listAccessiblePage(response.userID).subscribe((/**
* @param {?} pages
* @return {?}
*/
function (pages) {
observer.next(pages);
observer.complete();
}), (/**
* @param {?} error
* @return {?}
*/
function (error) {
observer.error(error);
}));
}
}), (/**
* @param {?} error
* @return {?}
*/
function (error) {
observer.error(error);
}));
}));
};
/**
* @param {?} pageId
* @param {?} accessToken
* @param {?} message
* @param {?=} photos
* @return {?}
*/
FacebookService.prototype.publishToPage = /**
* @param {?} pageId
* @param {?} accessToken
* @param {?} message
* @param {?=} photos
* @return {?}
*/
function (pageId, accessToken, message, photos) {
var _this = this;
if (photos === void 0) { photos = null; }
/** @type {?} */
var body = {
message: message,
access_token: accessToken,
};
if (photos) {
return this.postUnpublishedPhotos(pageId, accessToken, photos).pipe(operators.catchError((/**
* @param {?} error
* @return {?}
*/
function (error) {
return _this.httpClient.post("https://graph.facebook.com/" + pageId + "/feed", body);
})), operators.map((/**
* @param {?} response
* @return {?}
*/
function (response) {
response.forEach((/**
* @param {?} id
* @param {?} index
* @return {?}
*/
function (id, index) {
body["attached_media[" + index + "]"] = { media_fbid: id };
}));
return _this.httpClient.post("https://graph.facebook.com/" + pageId + "/feed", body);
})));
}
else {
return this.httpClient.post("https://graph.facebook.com/" + pageId + "/feed", body);
}
};
/**
* @private
* @param {?} pageId
* @param {?} accessToken
* @param {?} photos
* @return {?}
*/
FacebookService.prototype.postUnpublishedPhotos = /**
* @private
* @param {?} pageId
* @param {?} accessToken
* @param {?} photos
* @return {?}
*/
function (pageId, accessToken, photos) {
var _this = this;
/** @type {?} */
var posts = [];
photos.forEach((/**
* @param {?} photoUrl
* @return {?}
*/
function (photoUrl) {
/** @type {?} */
var task = _this.httpClient.post("https://graph.facebook.com/" + pageId + "/photos", {
url: photoUrl,
caption: '',
published: false,
access_token: accessToken,
}).pipe(operators.map((/**
* @param {?} response
* @return {?}
*/
function (response) { return response['id']; })));
posts.push(task);
}));
return rxjs.forkJoin(posts);
};
/**
* @private
* @param {?} userId
* @return {?}
*/
FacebookService.prototype.listAccessiblePage = /**
* @private
* @param {?} userId
* @return {?}
*/
function (userId) {
return rxjs.Observable.create((/**
* @param {?} observer
* @return {?}
*/
function (observer) {
FB.api("/" + userId + "/accounts", (/**
* @param {?} response
* @return {?}
*/
function (response) {
if (response && !response.error) {
if (response.data instanceof Error) {
observer.error(response.data);
}
else {
observer.next(response.data);
observer.complete();
}
}
else {
observer.error(response);
}
}));
}));
};
/**
* @private
* @param {?} scope
* @return {?}
*/
FacebookService.prototype.askTokenWithScope = /**
* @private
* @param {?} scope
* @return {?}
*/
function (scope) {
return rxjs.Observable.create((/**
* @param {?} observer
* @return {?}
*/
function (observer) {
FB.login((/**
* @param {?} response
* @return {?}
*/
function (response) {
if (response.authResponse) {
observer.next(response.authResponse);
observer.complete();
}
else {
observer.error(new Error('User cancelled login or did not fully authorize'));
}
}), {
scope: scope,
});
}));
};
/**
* @private
* @return {?}
*/
FacebookService.prototype.getAuthentification = /**
* @private
* @return {?}
*/
function () {
return rxjs.Observable.create((/**
* @param {?} observer
* @return {?}
*/
function (observer) {
/** @type {?} */
var timer = setTimeout((/**
* @return {?}
*/
function () {
observer.error("Facebook SDK can't be used");
}), 2000);
FB.getLoginStatus((/**
* @param {?} response
* @return {?}
*/
function (response) {
clearTimeout(timer);
if (response.status === 'connected') {
observer.next(response.authResponse);
}
else {
observer.next({});
}
observer.complete();
}));
}));
};
/**
* @private
* @return {?}
*/
FacebookService.prototype.initializeSDK = /**
* @private
* @return {?}
*/
function () {
FB.init({
appId: this.appId,
cookie: true,
xfbml: true,
version: this.version,
});
this.isInitialize = true;
};
/**
* @private
* @return {?}
*/
FacebookService.prototype.validateSDK = /**
* @private
* @return {?}
*/
function () {
if (location.protocol !== 'https:') {
return new Error("You can only use the Facebook SDK on HTTPS");
}
if (!this.isInitialize) {
return new Error('You need to initialize the service');
}
return false;
};
FacebookService.decorators = [
{ type: core.Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
FacebookService.ctorParameters = function () { return [
{ type: http.HttpBackend },
{ type: LoadScriptService }
]; };
/** @nocollapse */ FacebookService.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function FacebookService_Factory() { return new FacebookService(core.ɵɵinject(http.HttpBackend), core.ɵɵinject(LoadScriptService)); }, token: FacebookService, providedIn: "root" });
return FacebookService;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var TwitterService = /** @class */ (function () {
function TwitterService(httpClient, loadScript) {
var _this = this;
this.httpClient = httpClient;
this.isLoaded = false;
this.isInitialize = false;
loadScript.get('https://platform.twitter.com/widgets.js').subscribe((/**
* @param {?} response
* @return {?}
*/
function (response) {
_this.isLoaded = true;
}), (/**
* @param {?} error
* @return {?}
*/
function (error) {
_this.error = error;
}));
}
/**
* @param {?} appId
* @return {?}
*/
TwitterService.prototype.initialize = /**
* @param {?} appId
* @return {?}
*/
function (appId) {
var _this = this;
this.appId = appId;
return rxjs.Observable.create((/**
* @param {?} observer
* @return {?}
*/
function (observer) {
if (_this.error) {
observer.error(_this.error);
}
else if (!_this.isLoaded) {
observer.error(new Error('Twitter SDK is not loaded'));
}
else {
observer.next(true);
}
observer.complete();
})).pipe(operators.map((/**
* @return {?}
*/
function () { return _this.initializeSDK(); })), operators.retryWhen((/**
* @param {?} error
* @return {?}
*/
function (error) { return error.pipe(operators.delay(200), operators.take(25)); })), operators.catchError((/**
* @param {?} error
* @return {?}
*/
function (error) { return rxjs.of(error); })));
};
/**
* @return {?}
*/
TwitterService.prototype.findManageablePage = /**
* @return {?}
*/
function () {
var _this = this;
/** @type {?} */
var loadError = this.validateSDK();
if (loadError) {
return rxjs.of(loadError);
}
return rxjs.Observable.create((/**
* @param {?} observer
* @return {?}
*/
function (observer) {
_this.getAuthentification().subscribe((/**
* @param {?} response
* @return {?}
*/
function (response) {
if (response && response.userID) {
_this.listAccessiblePage(response.userID).subscribe((/**
* @param {?} pages
* @return {?}
*/
function (pages) {
observer.next(pages);
observer.complete();
}), (/**
* @param {?} error
* @return {?}
*/
function (error) {
observer.error(error);
}));
}
else {
observer.error(new Error('No user are connected to Facebook'));
}
}), (/**
* @param {?} error
* @return {?}
*/
function (error) {
observer.error(error);
}));
}));
};
/**
* @return {?}
*/
TwitterService.prototype.askToManagePage = /**
* @return {?}
*/
function () {
var _this = this;
/** @type {?} */
var loadError = this.validateSDK();
if (loadError) {
return rxjs.of(loadError);
}
return rxjs.Observable.create((/**
* @param {?} observer
* @return {?}
*/
function (observer) {
_this.getAuthentification().subscribe((/**
* @return {?}
*/
function () {
_this.askTokenWithScope('manage_pages, publish_pages').subscribe((/**
* @param {?} response
* @return {?}
*/
function (response) {
_this.listAccessiblePage(response.userID).subscribe((/**
* @param {?} pages
* @return {?}
*/
function (pages) {
observer.next(pages);
observer.complete();
}), (/**
* @param {?} error
* @return {?}
*/
function (error) {
observer.error(error);
}));
}), (/**
* @param {?} error
* @return {?}
*/
function (error) {
observer.error(error);
}));
}), (/**
* @param {?} error
* @return {?}
*/
function (error) {
observer.error(error);
}));
}));
};
/**
* @param {?} pageId
* @param {?} accessToken
* @param {?} message
* @return {?}
*/
TwitterService.prototype.publishToPage = /**
* @param {?} pageId
* @param {?} accessToken
* @param {?} message
* @return {?}
*/
function (pageId, accessToken, message) {
return this.httpClient.post("https://graph.facebook.com/" + pageId + "/feed", {
message: message,
access_token: accessToken,
});
};
/**
* @private
* @param {?} userId
* @return {?}
*/
TwitterService.prototype.listAccessiblePage = /**
* @private
* @param {?} userId
* @return {?}
*/
function (userId) {
return rxjs.Observable.create((/**
* @param {?} observer
* @return {?}
*/
function (observer) {
/*FB.api(`/${userId}/accounts`, (response: any) => {
if (response && !response.error) {
observer.next(response.data);
} else {
observer.error(response);
}
observer.complete();
});*/
}));
};
/**
* @private
* @param {?} scope
* @return {?}
*/
TwitterService.prototype.askTokenWithScope = /**
* @private
* @param {?} scope
* @return {?}
*/
function (scope) {
return rxjs.Observable.create((/**
* @param {?} observer
* @return {?}
*/
function (observer) {
/*FB.login((response: any) => {
observer.next(response.authResponse);
observer.complete();
}, {
scope: scope,
});*/
}));
};
/**
* @private
* @return {?}
*/
TwitterService.prototype.getAuthentification = /**
* @private
* @return {?}
*/
function () {
return rxjs.Observable.create((/**
* @param {?} observer
* @return {?}
*/
function (observer) {
/*FB.getLoginStatus((response: any) => {
if (response.authResponse) {
observer.next(response.authResponse);
} else {
observer.error(new Error('No facebook connection'));
}
observer.complete();
});*/
}));
};
/**
* @private
* @return {?}
*/
TwitterService.prototype.initializeSDK = /**
* @private
* @return {?}
*/
function () {
var _this = this;
twttr.ready((/**
* @return {?}
*/
function () {
_this.isInitialize = true;
}));
};
/**
* @private
* @return {?}
*/
TwitterService.prototype.validateSDK = /**
* @private
* @return {?}
*/
function () {
if (!this.isInitialize) {
return new Error('You need to initialize the service');
}
return false;
};
TwitterService.decorators = [
{ type: core.Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
TwitterService.ctorParameters = function () { return [
{ type: http.HttpClient },
{ type: LoadScriptService }
]; };
/** @nocollapse */ TwitterService.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function TwitterService_Factory() { return new TwitterService(core.ɵɵinject(http.HttpClient), core.ɵɵinject(LoadScriptService)); }, token: TwitterService, providedIn: "root" });
return TwitterService;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var SocialNetworkService = /** @class */ (function () {
function SocialNetworkService() {
}
SocialNetworkService.decorators = [
{ type: core.Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
SocialNetworkService.ctorParameters = function () { return []; };
/** @nocollapse */ SocialNetworkService.ngInjectableDef = core.ɵɵdefineInjectable({ factory: function SocialNetworkService_Factory() { return new SocialNetworkService(); }, token: SocialNetworkService, providedIn: "root" });
return SocialNetworkService;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var SocialNetworkComponent = /** @class */ (function () {
function SocialNetworkComponent() {
}
/**
* @return {?}
*/
SocialNetworkComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
};
SocialNetworkComponent.decorators = [
{ type: core.Component, args: [{
selector: 'cause-social-network',
template: "<div>{{'core.noGenericComponentOnThisLibrary' | translate}}</div>"
}] }
];
/** @nocollapse */
SocialNetworkComponent.ctorParameters = function () { return []; };
return SocialNetworkComponent;
}());
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
var SocialNetworkModule = /** @class */ (function () {
function SocialNetworkModule() {
}
SocialNetworkModule.decorators = [
{ type: core.NgModule, args: [{
declarations: [
SocialNetworkComponent
],
exports: [
SocialNetworkComponent
],
imports: [
core$1.CauseCoreModule,
],
},] }
];
return SocialNetworkModule;
}());
exports.FacebookService = FacebookService;
exports.SocialNetworkComponent = SocialNetworkComponent;
exports.SocialNetworkModule = SocialNetworkModule;
exports.SocialNetworkService = SocialNetworkService;
exports.TwitterService = TwitterService;
exports.ɵa = LoadScriptService;
Object.defineProperty(exports, '__esModule', { value: true });
}));
//# sourceMappingURL=cause-911-social-network.umd.js.map