From e2d20dc70cc8bbbd66fdac1d8d9a9e9a7cd4b83e Mon Sep 17 00:00:00 2001 From: Daniel Ip Date: Mon, 18 Sep 2017 21:54:32 +1000 Subject: [PATCH] Implement Promises for loading sdks --- dist/angular2-social-login.module.d.ts | 2 +- dist/angular2-social-login.module.js | 81 +++++++++++---------- dist/angular2-social-login.module.js.map | 2 +- dist/auth.service.js | 2 +- dist/auth.service.js.map | 2 +- dist/index.js.map | 2 +- src/angular2-social-login.module.ts | 89 ++++++++++++++---------- 7 files changed, 102 insertions(+), 78 deletions(-) diff --git a/dist/angular2-social-login.module.d.ts b/dist/angular2-social-login.module.d.ts index e73d504..5ea6da3 100644 --- a/dist/angular2-social-login.module.d.ts +++ b/dist/angular2-social-login.module.d.ts @@ -1,4 +1,4 @@ import { IProviders } from "./auth.service"; export declare class Angular2SocialLoginModule { - static loadProvidersScripts(config: IProviders): void; + static loadProvidersScripts(config: IProviders): Promise; } diff --git a/dist/angular2-social-login.module.js b/dist/angular2-social-login.module.js index 13e9bb1..efee05c 100644 --- a/dist/angular2-social-login.module.js +++ b/dist/angular2-social-login.module.js @@ -6,55 +6,66 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, }; import { NgModule } from "@angular/core"; import { AuthService } from "./auth.service"; -var Angular2SocialLoginModule = (function () { +var Angular2SocialLoginModule = /** @class */ (function () { function Angular2SocialLoginModule() { } Angular2SocialLoginModule.loadProvidersScripts = function (config) { var loadProvidersScripts = { google: function (info) { - var d = document, gJs, ref = d.getElementsByTagName('script')[0]; - gJs = d.createElement('script'); - gJs.async = true; - gJs.src = "//apis.google.com/js/platform.js"; - gJs.onload = function () { - gapi.load('auth2', function () { - gapi.auth2.init({ - client_id: info["clientId"], - scope: 'email' + return new Promise(function (resolve, reject) { + var d = document, gJs, ref = d.getElementsByTagName('script')[0]; + gJs = d.createElement('script'); + gJs.async = true; + gJs.src = "//apis.google.com/js/platform.js"; + gJs.onload = function () { + gapi.load('auth2', function () { + gapi.auth2.init({ + client_id: info["clientId"], + scope: 'email' + }); + resolve(true); }); - }); - }; - ref.parentNode.insertBefore(gJs, ref); + }; + ref.parentNode.insertBefore(gJs, ref); + }); }, linkedin: function (info) { - var lIN, d = document, ref = d.getElementsByTagName('script')[0]; - lIN = d.createElement('script'); - lIN.async = false; - lIN.src = "//platform.linkedin.com/in.js"; - lIN.text = ("api_key: " + info["clientId"]).replace("\"", ""); - ref.parentNode.insertBefore(lIN, ref); + return new Promise(function (resolve, reject) { + var lIN, d = document, ref = d.getElementsByTagName('script')[0]; + lIN = d.createElement('script'); + lIN.async = false; + lIN.src = "//platform.linkedin.com/in.js"; + lIN.text = ("api_key: " + info["clientId"]).replace("\"", ""); + ref.parentNode.insertBefore(lIN, ref); + resolve(true); + }); }, facebook: function (info) { - var d = document, fbJs, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; - fbJs = d.createElement('script'); - fbJs.id = id; - fbJs.async = true; - fbJs.src = "//connect.facebook.net/en_US/sdk.js"; - fbJs.onload = function () { - FB.init({ - appId: info["clientId"], - status: true, - cookie: true, - xfbml: true, - version: info["apiVersion"] - }); - }; - ref.parentNode.insertBefore(fbJs, ref); + return new Promise(function (resolve, reject) { + var d = document, fbJs, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0]; + fbJs = d.createElement('script'); + fbJs.id = id; + fbJs.async = true; + fbJs.src = "//connect.facebook.net/en_US/sdk.js"; + fbJs.onload = function () { + FB.init({ + appId: info["clientId"], + status: true, + cookie: true, + xfbml: true, + version: info["apiVersion"] + }); + resolve(true); + }; + ref.parentNode.insertBefore(fbJs, ref); + }); } }; + var promises = []; Object.keys(config).forEach(function (provider) { - loadProvidersScripts[provider](config[provider]); + promises.push(loadProvidersScripts[provider](config[provider])); }); + return Promise.all(promises); }; Angular2SocialLoginModule = __decorate([ NgModule({ diff --git a/dist/angular2-social-login.module.js.map b/dist/angular2-social-login.module.js.map index b6c99e0..536350e 100644 --- a/dist/angular2-social-login.module.js.map +++ b/dist/angular2-social-login.module.js.map @@ -1 +1 @@ -{"version":3,"file":"angular2-social-login.module.js","sourceRoot":"","sources":["../src/angular2-social-login.module.ts"],"names":[],"mappings":"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","sourcesContent":["import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { AuthService, IProviders, IProvider } from \"./auth.service\";\n\ndeclare let gapi: any;\ndeclare let IN: any;\ndeclare let FB: any;\n\n@NgModule({\n providers: [AuthService]\n})\nexport class Angular2SocialLoginModule{\n static loadProvidersScripts(config: IProviders): void{\n const loadProvidersScripts: Object = {\n google: (info: IProvider) => {\n let d = document, gJs, ref: any = d.getElementsByTagName('script')[0];\n gJs = d.createElement('script');\n gJs.async = true;\n gJs.src = \"//apis.google.com/js/platform.js\";\n\n gJs.onload = function() {\n gapi.load('auth2', function() {\n gapi.auth2.init({\n client_id: info[\"clientId\"],\n scope: 'email'\n })\n })\n }\n ref.parentNode.insertBefore(gJs, ref);\n },\n linkedin: (info: IProvider) => {\n let lIN, d = document, ref: any = d.getElementsByTagName('script')[0];\n lIN = d.createElement('script');\n lIN.async = false;\n lIN.src = \"//platform.linkedin.com/in.js\";\n lIN.text = (\"api_key: \" + info[\"clientId\"]).replace(\"\\\"\", \"\");\n ref.parentNode.insertBefore(lIN, ref);\n },\n facebook: (info: IProvider) => {\n let d = document, fbJs, id = 'facebook-jssdk', ref: any = d.getElementsByTagName('script')[0];\n fbJs = d.createElement('script');\n fbJs.id = id;\n fbJs.async = true;\n fbJs.src = \"//connect.facebook.net/en_US/sdk.js\";\n\n fbJs.onload = function() {\n FB.init({\n appId: info[\"clientId\"],\n status: true,\n cookie: true,\n xfbml: true,\n version: info[\"apiVersion\"]\n });\n };\n\n ref.parentNode.insertBefore(fbJs, ref);\n }\n }\n\n Object.keys(config).forEach((provider: string) => {\n (loadProvidersScripts)[provider](config[provider]);\n });\n }\n}\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]} \ No newline at end of file +{"version":3,"file":"angular2-social-login.module.js","sourceRoot":"","sources":["../src/angular2-social-login.module.ts"],"names":[],"mappings":"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","sourcesContent":["import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { AuthService, IProviders, IProvider } from \"./auth.service\";\n\ndeclare let gapi: any;\ndeclare let IN: any;\ndeclare let FB: any;\n\n@NgModule({\n providers: [AuthService]\n})\nexport class Angular2SocialLoginModule{\n static loadProvidersScripts(config: IProviders): Promise{\n const loadProvidersScripts: Object = {\n google: (info: IProvider) => {\n return new Promise((resolve, reject)=>{\n let d = document, gJs, ref: any = d.getElementsByTagName('script')[0];\n gJs = d.createElement('script');\n gJs.async = true;\n gJs.src = \"//apis.google.com/js/platform.js\";\n \n gJs.onload = function() {\n gapi.load('auth2', function() {\n gapi.auth2.init({\n client_id: info[\"clientId\"],\n scope: 'email'\n })\n resolve(true);\n })\n }\n ref.parentNode.insertBefore(gJs, ref);\n });\n },\n linkedin: (info: IProvider) => {\n return new Promise((resolve, reject)=>{\n let lIN, d = document, ref: any = d.getElementsByTagName('script')[0];\n lIN = d.createElement('script');\n lIN.async = false;\n lIN.src = \"//platform.linkedin.com/in.js\";\n lIN.text = (\"api_key: \" + info[\"clientId\"]).replace(\"\\\"\", \"\");\n ref.parentNode.insertBefore(lIN, ref);\n resolve(true);\n });\n },\n facebook: (info: IProvider) => {\n return new Promise((resolve, reject)=>{\n let d = document, fbJs, id = 'facebook-jssdk', ref: any = d.getElementsByTagName('script')[0];\n fbJs = d.createElement('script');\n fbJs.id = id;\n fbJs.async = true;\n fbJs.src = \"//connect.facebook.net/en_US/sdk.js\";\n \n fbJs.onload = function() {\n FB.init({\n appId: info[\"clientId\"],\n status: true,\n cookie: true,\n xfbml: true,\n version: info[\"apiVersion\"]\n });\n resolve(true);\n };\n \n ref.parentNode.insertBefore(fbJs, ref);\n });\n }\n }\n\n let promises:Array> = [];\n\n Object.keys(config).forEach((provider: string) => {\n promises.push((loadProvidersScripts)[provider](config[provider]));\n });\n\n return Promise.all(promises);\n }\n}"]} \ No newline at end of file diff --git a/dist/auth.service.js b/dist/auth.service.js index e12360b..06ccce4 100644 --- a/dist/auth.service.js +++ b/dist/auth.service.js @@ -6,7 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, }; import { Injectable } from "@angular/core"; import { Observable } from "rxjs/Observable"; -var AuthService = (function () { +var AuthService = /** @class */ (function () { function AuthService() { } AuthService.prototype.login = function (provider) { diff --git a/dist/auth.service.js.map b/dist/auth.service.js.map index 1a7ec8e..d70bd73 100644 --- a/dist/auth.service.js.map +++ b/dist/auth.service.js.map @@ -1 +1 @@ -{"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../src/auth.service.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAiB7C;IAAA;IA2IA,CAAC;IAxIG,2BAAK,GAAL,UAAM,QAAgB;QAAtB,iBAgFC;QA/EG,MAAM,CAAC,UAAU,CAAC,MAAM,CACpB,UAAC,QAA0B;YACvB,MAAM,CAAA,CAAC,QAAQ,CAAC,CAAA,CAAC;gBACb,KAAK,QAAQ;oBACG,EAAE,CAAC,CAAC,OAAM,CAAC,KAAI,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,CAAA,CAAC;wBACnC,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;oBAC9C,CAAC;oBACD,EAAE,CAAA,CAAC,CAAC,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAA,CAAC;wBAC7B,KAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;4BACrB,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;4BAClD,QAAQ,CAAC,IAAI,CAAC,KAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;4BAC9C,QAAQ,CAAC,QAAQ,EAAE,CAAC;wBACxB,CAAC,CAAC,CAAC;oBACP,CAAC;oBAAA,IAAI,CAAA,CAAC;wBACF,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;wBAClD,QAAQ,CAAC,IAAI,CAAC,KAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;wBAC9C,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBACxB,CAAC;oBAED,KAAK,CAAC;gBACtB,KAAK,UAAU;oBACC,EAAE,CAAC,cAAc,CAAC,UAAC,QAAa;wBAC5B,EAAE,CAAA,CAAC,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,CAAA,CAAC;4BAChC,EAAE,CAAC,GAAG,CAAC,+BAA+B,EAAE,UAAC,GAAQ;gCAC7C,EAAE,CAAA,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAA,CAAC;oCAClB,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gCAC9B,CAAC;gCAAA,IAAI,CAAA,CAAC;oCACF,IAAI,WAAW,GAAG;wCACd,IAAI,EAAE,GAAG,CAAC,IAAI;wCACd,KAAK,EAAE,GAAG,CAAC,KAAK;wCAChB,GAAG,EAAE,GAAG,CAAC,EAAE;wCACX,QAAQ,EAAE,UAAU;wCACpB,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG;wCAC3B,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,WAAW;qCAC3C,CAAA;oCACD,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;oCACpD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oCAC3B,QAAQ,CAAC,QAAQ,EAAE,CAAC;gCACxB,CAAC;4BACL,CAAC,CAAC,CAAC;wBACP,CAAC;wBACD,IAAI,CAAA,CAAC;4BACD,EAAE,CAAC,KAAK,CAAC,UAAC,QAAa;gCACnB,EAAE,CAAA,CAAC,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,CAAA,CAAC;oCAChC,EAAE,CAAC,GAAG,CAAC,+BAA+B,EAAE,UAAC,GAAQ;wCAC7C,EAAE,CAAA,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAA,CAAC;4CAClB,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wCAC9B,CAAC;wCAAA,IAAI,CAAA,CAAC;4CACF,IAAI,WAAW,GAAG;gDACd,IAAI,EAAE,GAAG,CAAC,IAAI;gDACd,KAAK,EAAE,GAAG,CAAC,KAAK;gDAChB,GAAG,EAAE,GAAG,CAAC,EAAE;gDACX,QAAQ,EAAE,UAAU;gDACpB,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG;gDAC3B,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,WAAW;6CAC3C,CAAA;4CACD,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;4CACpD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;4CAC3B,QAAQ,CAAC,QAAQ,EAAE,CAAC;wCACxB,CAAC;oCACL,CAAC,CAAC,CAAC;gCACP,CAAC;4BACL,CAAC,EAAE,EAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAC,CAAC,CAAC;wBACjD,CAAC;oBACL,CAAC,CAAC,CAAC;oBACH,KAAK,CAAC;gBACtB,KAAK,UAAU;oBACC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;wBACd,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC,MAAM,CAAC,UAAS,GAAQ;4BAChG,IAAI,WAAW,GAAG,EAAC,IAAI,EAAE,GAAG,CAAC,SAAS,GAAG,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,EAAC,CAAC;4BAChJ,YAAY,CAAC,OAAO,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;4BACpD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;4BAC3B,QAAQ,CAAC,QAAQ,EAAE,CAAC;wBACxB,CAAC,CAAC,CAAC;oBACP,CAAC,CAAC,CAAC;oBACH,KAAK,CAAC;YAC1B,CAAC;QACL,CAAC,CACJ,CAAA;IACL,CAAC;IAED,4BAAM,GAAN;QACI,IAAI,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QACvD,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,UAAC,QAAa;YACnC,MAAM,CAAA,CAAC,QAAQ,CAAC,CAAA,CAAC;gBACb,KAAK,QAAQ;oBACG,IAAI,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;oBACnD,EAAE,CAAC,CAAC,OAAM,CAAC,QAAQ,CAAC,IAAI,WAAW,IAAI,QAAQ,IAAI,IAAI,CAAC,CACxD,CAAC;wBACG,QAAQ,CAAC,MAAM,EAAE,CAAC;oBACtB,CAAC;oBACD,IAAI,CAAC,GAAG,QAAQ,EAAE,QAAQ,SAAA,CAAC;oBAC3B,IAAI,GAAG,GAAQ,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnD,QAAQ,GAAG,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;oBACrC,QAAQ,CAAC,GAAG,GAAG,oCAAoC,CAAC;oBACpD,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAC;oBAC5B,QAAQ,CAAC,EAAE,GAAG,UAAU,CAAC;oBACzB,YAAY,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;oBAC3C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACpB,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBACpB,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;oBAC3C,KAAK,CAAC;gBACtB,KAAK,UAAU;oBACC,EAAE,CAAC,MAAM,CAAC,UAAS,GAAQ;wBACvB,YAAY,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;wBAC3C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACpB,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBACxB,CAAC,CAAC,CAAC;oBACH,KAAK,CAAC;gBACtB,KAAK,UAAU;oBACC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;wBACX,YAAY,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;wBAC3C,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACpB,QAAQ,CAAC,QAAQ,EAAE,CAAC;oBAClC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACG,KAAK,CAAC;YAC1B,CAAC;QACL,CAAC,CAAC,CAAA;IACN,CAAC;IAEO,6CAAuB,GAA/B;QACI,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;QAC/C,IAAI,OAAO,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC;QAC5C,IAAI,OAAO,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;QACrD,IAAI,WAAW,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC,YAAY,CAAC;QAC7D,MAAM,CAAC;YACH,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE,OAAO;YAChB,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE;YACpB,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE;YACvB,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE;YACzB,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE;YAC5B,QAAQ,EAAE,QAAQ;SACrB,CAAC;IACN,CAAC;IA1IQ,WAAW;QADvB,UAAU,EAAE;OACA,WAAW,CA2IvB;IAAD,kBAAC;CAAA,AA3ID,IA2IC;SA3IY,WAAW","sourcesContent":["import { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs/Observable\";\nimport { Observer } from \"rxjs/Observer\";\n\ndeclare let gapi: any;\ndeclare let IN: any;\ndeclare let FB: any;\n\nexport interface IProvider {\n clientId: string;\n apiVersion?: string;\n}\n\nexport interface IProviders {\n [provider: string]: IProvider;\n}\n\n@Injectable()\nexport class AuthService {\n gauth: any;\n \n login(provider: string): Observable{\n return Observable.create(\n (observer: Observer) => {\n switch(provider){\n case \"google\":\n if (typeof(this.gauth) == \"undefined\"){\n this.gauth = gapi.auth2.getAuthInstance();\n }\n if(!this.gauth.isSignedIn.get()){\n this.gauth.signIn().then(() => {\n localStorage.setItem('_login_provider', 'google');\n observer.next(this._fetchGoogleUserDetails());\n observer.complete();\n });\n }else{\n localStorage.setItem('_login_provider', 'google');\n observer.next(this._fetchGoogleUserDetails());\n observer.complete();\n }\n \n break;\n case \"facebook\":\n FB.getLoginStatus((response: any) => {\n if(response.status === \"connected\"){\n FB.api('/me?fields=name,email,picture', (res: any) => {\n if(!res || res.error){\n observer.error(res.error);\n }else{\n let userDetails = {\n name: res.name, \n email: res.email, \n uid: res.id, \n provider: \"facebook\", \n image: res.picture.data.url,\n token: response.authResponse.accessToken\n }\n localStorage.setItem('_login_provider', 'facebook');\n observer.next(userDetails);\n observer.complete();\n }\n });\n }\n else{\n FB.login((response: any) => {\n if(response.status === \"connected\"){\n FB.api('/me?fields=name,email,picture', (res: any) => {\n if(!res || res.error){\n observer.error(res.error);\n }else{\n let userDetails = {\n name: res.name, \n email: res.email, \n uid: res.id, \n provider: \"facebook\", \n image: res.picture.data.url,\n token: response.authResponse.accessToken\n }\n localStorage.setItem('_login_provider', 'facebook');\n observer.next(userDetails);\n observer.complete();\n }\n });\n }\n }, {scope: 'email', auth_type: \"rerequest\"});\n }\n });\n break;\n case \"linkedin\":\n IN.User.authorize(function(){\n IN.API.Raw(\"/people/~:(id,first-name,last-name,email-address,picture-url)\").result(function(res: any){\n let userDetails = {name: res.firstName + \" \" + res.lastName, email: res.emailAddress, uid: res.id, provider: \"linkedIN\", image: res.pictureUrl};\n localStorage.setItem('_login_provider', 'linkedin');\n observer.next(userDetails);\n observer.complete();\n });\n });\n break;\n }\n }\n )\n }\n\n logout(): Observable{\n let provider = localStorage.getItem(\"_login_provider\");\n return Observable.create((observer: any) => {\n switch(provider){\n case \"google\":\n let gElement = document.getElementById(\"gSignout\");\n if (typeof(gElement) != 'undefined' && gElement != null)\n {\n gElement.remove();\n }\n let d = document, gSignout;\n let ref: any = d.getElementsByTagName('script')[0];\n gSignout = d.createElement('script');\n gSignout.src = \"https://accounts.google.com/Logout\";\n gSignout.type = \"text/html\";\n gSignout.id = \"gSignout\";\n localStorage.removeItem('_login_provider');\n observer.next(true);\n observer.complete();\n ref.parentNode.insertBefore(gSignout, ref);\n break;\n case \"facebook\":\n FB.logout(function(res: any){\n localStorage.removeItem('_login_provider');\n observer.next(true);\n observer.complete();\n });\n break;\n case \"linkedin\":\n IN.User.logout(function(){\n localStorage.removeItem('_login_provider');\n observer.next(true);\n observer.complete();\n \t\t\t\t}, {});\n break;\n }\n })\n }\n\n private _fetchGoogleUserDetails(){\n let currentUser = this.gauth.currentUser.get();\n let profile = currentUser.getBasicProfile();\n let idToken = currentUser.getAuthResponse().id_token;\n let accessToken = currentUser.getAuthResponse().access_token;\n return {\n token: accessToken,\n idToken: idToken,\n uid: profile.getId(),\n name: profile.getName(),\n email: profile.getEmail(),\n image: profile.getImageUrl(),\n provider: \"google\"\n };\n }\n}\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]} \ No newline at end of file +{"version":3,"file":"auth.service.js","sourceRoot":"","sources":["../src/auth.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable } from \"@angular/core\";\nimport { Observable } from \"rxjs/Observable\";\nimport { Observer } from \"rxjs/Observer\";\n\ndeclare let gapi: any;\ndeclare let IN: any;\ndeclare let FB: any;\n\nexport interface IProvider {\n clientId: string;\n apiVersion?: string;\n}\n\nexport interface IProviders {\n [provider: string]: IProvider;\n}\n\n@Injectable()\nexport class AuthService {\n gauth: any;\n \n login(provider: string): Observable{\n return Observable.create(\n (observer: Observer) => {\n switch(provider){\n case \"google\":\n if (typeof(this.gauth) == \"undefined\"){\n this.gauth = gapi.auth2.getAuthInstance();\n }\n if(!this.gauth.isSignedIn.get()){\n this.gauth.signIn().then(() => {\n localStorage.setItem('_login_provider', 'google');\n observer.next(this._fetchGoogleUserDetails());\n observer.complete();\n });\n }else{\n localStorage.setItem('_login_provider', 'google');\n observer.next(this._fetchGoogleUserDetails());\n observer.complete();\n }\n \n break;\n case \"facebook\":\n FB.getLoginStatus((response: any) => {\n if(response.status === \"connected\"){\n FB.api('/me?fields=name,email,picture', (res: any) => {\n if(!res || res.error){\n observer.error(res.error);\n }else{\n let userDetails = {\n name: res.name, \n email: res.email, \n uid: res.id, \n provider: \"facebook\", \n image: res.picture.data.url,\n token: response.authResponse.accessToken\n }\n localStorage.setItem('_login_provider', 'facebook');\n observer.next(userDetails);\n observer.complete();\n }\n });\n }\n else{\n FB.login((response: any) => {\n if(response.status === \"connected\"){\n FB.api('/me?fields=name,email,picture', (res: any) => {\n if(!res || res.error){\n observer.error(res.error);\n }else{\n let userDetails = {\n name: res.name, \n email: res.email, \n uid: res.id, \n provider: \"facebook\", \n image: res.picture.data.url,\n token: response.authResponse.accessToken\n }\n localStorage.setItem('_login_provider', 'facebook');\n observer.next(userDetails);\n observer.complete();\n }\n });\n }\n }, {scope: 'email', auth_type: \"rerequest\"});\n }\n });\n break;\n case \"linkedin\":\n IN.User.authorize(function(){\n IN.API.Raw(\"/people/~:(id,first-name,last-name,email-address,picture-url)\").result(function(res: any){\n let userDetails = {name: res.firstName + \" \" + res.lastName, email: res.emailAddress, uid: res.id, provider: \"linkedIN\", image: res.pictureUrl};\n localStorage.setItem('_login_provider', 'linkedin');\n observer.next(userDetails);\n observer.complete();\n });\n });\n break;\n }\n }\n )\n }\n\n logout(): Observable{\n let provider = localStorage.getItem(\"_login_provider\");\n return Observable.create((observer: any) => {\n switch(provider){\n case \"google\":\n let gElement = document.getElementById(\"gSignout\");\n if (typeof(gElement) != 'undefined' && gElement != null)\n {\n gElement.remove();\n }\n let d = document, gSignout;\n let ref: any = d.getElementsByTagName('script')[0];\n gSignout = d.createElement('script');\n gSignout.src = \"https://accounts.google.com/Logout\";\n gSignout.type = \"text/html\";\n gSignout.id = \"gSignout\";\n localStorage.removeItem('_login_provider');\n observer.next(true);\n observer.complete();\n ref.parentNode.insertBefore(gSignout, ref);\n break;\n case \"facebook\":\n FB.logout(function(res: any){\n localStorage.removeItem('_login_provider');\n observer.next(true);\n observer.complete();\n });\n break;\n case \"linkedin\":\n IN.User.logout(function(){\n localStorage.removeItem('_login_provider');\n observer.next(true);\n observer.complete();\n \t\t\t\t}, {});\n break;\n }\n })\n }\n\n private _fetchGoogleUserDetails(){\n let currentUser = this.gauth.currentUser.get();\n let profile = currentUser.getBasicProfile();\n let idToken = currentUser.getAuthResponse().id_token;\n let accessToken = currentUser.getAuthResponse().access_token;\n return {\n token: accessToken,\n idToken: idToken,\n uid: profile.getId(),\n name: profile.getName(),\n email: profile.getEmail(),\n image: profile.getImageUrl(),\n provider: \"google\"\n };\n }\n}"]} \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map index 1abaee7..d8a5f53 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAc,MAAM,gBAAgB,CAAC","sourcesContent":["export { Angular2SocialLoginModule } from \"./angular2-social-login.module\";\nexport { AuthService, IProviders } from \"./auth.service\";\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAc,MAAM,gBAAgB,CAAC","sourcesContent":["export { Angular2SocialLoginModule } from \"./angular2-social-login.module\";\nexport { AuthService, IProviders } from \"./auth.service\";"]} \ No newline at end of file diff --git a/src/angular2-social-login.module.ts b/src/angular2-social-login.module.ts index 8e3065d..cb3f857 100644 --- a/src/angular2-social-login.module.ts +++ b/src/angular2-social-login.module.ts @@ -9,55 +9,68 @@ declare let FB: any; providers: [AuthService] }) export class Angular2SocialLoginModule{ - static loadProvidersScripts(config: IProviders): void{ + static loadProvidersScripts(config: IProviders): Promise{ const loadProvidersScripts: Object = { google: (info: IProvider) => { - let d = document, gJs, ref: any = d.getElementsByTagName('script')[0]; - gJs = d.createElement('script'); - gJs.async = true; - gJs.src = "//apis.google.com/js/platform.js"; - - gJs.onload = function() { - gapi.load('auth2', function() { - gapi.auth2.init({ - client_id: info["clientId"], - scope: 'email' + return new Promise((resolve, reject)=>{ + let d = document, gJs, ref: any = d.getElementsByTagName('script')[0]; + gJs = d.createElement('script'); + gJs.async = true; + gJs.src = "//apis.google.com/js/platform.js"; + + gJs.onload = function() { + gapi.load('auth2', function() { + gapi.auth2.init({ + client_id: info["clientId"], + scope: 'email' + }) + resolve(true); }) - }) - } - ref.parentNode.insertBefore(gJs, ref); + } + ref.parentNode.insertBefore(gJs, ref); + }); }, linkedin: (info: IProvider) => { - let lIN, d = document, ref: any = d.getElementsByTagName('script')[0]; - lIN = d.createElement('script'); - lIN.async = false; - lIN.src = "//platform.linkedin.com/in.js"; - lIN.text = ("api_key: " + info["clientId"]).replace("\"", ""); - ref.parentNode.insertBefore(lIN, ref); + return new Promise((resolve, reject)=>{ + let lIN, d = document, ref: any = d.getElementsByTagName('script')[0]; + lIN = d.createElement('script'); + lIN.async = false; + lIN.src = "//platform.linkedin.com/in.js"; + lIN.text = ("api_key: " + info["clientId"]).replace("\"", ""); + ref.parentNode.insertBefore(lIN, ref); + resolve(true); + }); }, facebook: (info: IProvider) => { - let d = document, fbJs, id = 'facebook-jssdk', ref: any = d.getElementsByTagName('script')[0]; - fbJs = d.createElement('script'); - fbJs.id = id; - fbJs.async = true; - fbJs.src = "//connect.facebook.net/en_US/sdk.js"; - - fbJs.onload = function() { - FB.init({ - appId: info["clientId"], - status: true, - cookie: true, - xfbml: true, - version: info["apiVersion"] - }); - }; - - ref.parentNode.insertBefore(fbJs, ref); + return new Promise((resolve, reject)=>{ + let d = document, fbJs, id = 'facebook-jssdk', ref: any = d.getElementsByTagName('script')[0]; + fbJs = d.createElement('script'); + fbJs.id = id; + fbJs.async = true; + fbJs.src = "//connect.facebook.net/en_US/sdk.js"; + + fbJs.onload = function() { + FB.init({ + appId: info["clientId"], + status: true, + cookie: true, + xfbml: true, + version: info["apiVersion"] + }); + resolve(true); + }; + + ref.parentNode.insertBefore(fbJs, ref); + }); } } + let promises:Array> = []; + Object.keys(config).forEach((provider: string) => { - (loadProvidersScripts)[provider](config[provider]); + promises.push((loadProvidersScripts)[provider](config[provider])); }); + + return Promise.all(promises); } } \ No newline at end of file