@cause-911/social-network
Version:
Run `npm install @cause-911/social-network --save` to add this library to your project
850 lines (840 loc) • 25.4 kB
JavaScript
import { Injectable, ɵɵdefineInjectable, ɵɵinject, Component, NgModule } from '@angular/core';
import { Observable, of, forkJoin } from 'rxjs';
import { HttpBackend, HttpClient } from '@angular/common/http';
import { map, retryWhen, delay, take, catchError } from 'rxjs/operators';
import { CauseCoreModule } from '@cause-911/core';
/**
* @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 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: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
LoadScriptService.ctorParameters = function () { return []; };
/** @nocollapse */ LoadScriptService.ngInjectableDef = ɵɵ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 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 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(map((/**
* @return {?}
*/
function () { return _this.initializeSDK(); })), retryWhen((/**
* @param {?} error
* @return {?}
*/
function (error) { return error.pipe(delay(200), take(25)); })), catchError((/**
* @param {?} error
* @return {?}
*/
function (error) { return of(error); })));
};
/**
* @return {?}
*/
FacebookService.prototype.findManageablePage = /**
* @return {?}
*/
function () {
var _this = this;
return 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 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(catchError((/**
* @param {?} error
* @return {?}
*/
function (error) {
return _this.httpClient.post("https://graph.facebook.com/" + pageId + "/feed", body);
})), 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(map((/**
* @param {?} response
* @return {?}
*/
function (response) { return response['id']; })));
posts.push(task);
}));
return forkJoin(posts);
};
/**
* @private
* @param {?} userId
* @return {?}
*/
FacebookService.prototype.listAccessiblePage = /**
* @private
* @param {?} userId
* @return {?}
*/
function (userId) {
return 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 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 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: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
FacebookService.ctorParameters = function () { return [
{ type: HttpBackend },
{ type: LoadScriptService }
]; };
/** @nocollapse */ FacebookService.ngInjectableDef = ɵɵdefineInjectable({ factory: function FacebookService_Factory() { return new FacebookService(ɵɵinject(HttpBackend), ɵɵ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 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(map((/**
* @return {?}
*/
function () { return _this.initializeSDK(); })), retryWhen((/**
* @param {?} error
* @return {?}
*/
function (error) { return error.pipe(delay(200), take(25)); })), catchError((/**
* @param {?} error
* @return {?}
*/
function (error) { return of(error); })));
};
/**
* @return {?}
*/
TwitterService.prototype.findManageablePage = /**
* @return {?}
*/
function () {
var _this = this;
/** @type {?} */
var loadError = this.validateSDK();
if (loadError) {
return of(loadError);
}
return 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 of(loadError);
}
return 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 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 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 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: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
TwitterService.ctorParameters = function () { return [
{ type: HttpClient },
{ type: LoadScriptService }
]; };
/** @nocollapse */ TwitterService.ngInjectableDef = ɵɵdefineInjectable({ factory: function TwitterService_Factory() { return new TwitterService(ɵɵinject(HttpClient), ɵɵ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: Injectable, args: [{
providedIn: 'root'
},] }
];
/** @nocollapse */
SocialNetworkService.ctorParameters = function () { return []; };
/** @nocollapse */ SocialNetworkService.ngInjectableDef = ɵɵ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: 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: NgModule, args: [{
declarations: [
SocialNetworkComponent
],
exports: [
SocialNetworkComponent
],
imports: [
CauseCoreModule,
],
},] }
];
return SocialNetworkModule;
}());
export { FacebookService, SocialNetworkComponent, SocialNetworkModule, SocialNetworkService, TwitterService, LoadScriptService as ɵa };
//# sourceMappingURL=cause-911-social-network.js.map