From 6b5870329e037fdc40672a95bf64671a0734a853 Mon Sep 17 00:00:00 2001 From: Dimitar Todorov Date: Mon, 4 Dec 2017 18:04:26 +0200 Subject: [PATCH 1/4] Introduce login behavior options. --- demo-angular/app/app.module.ts | 5 ++--- src/index.android.metadata.json | 2 +- src/index.android.ts | 3 ++- src/index.d.ts | 1 + src/index.ios.metadata.json | 2 +- src/index.ios.ts | 1 + src/login-behavior.d.ts | 24 ++++++++++++++++++++++++ src/login-behavior.metadata.json | 1 + src/login-behavior.ts | 6 ++++++ src/login-manager.d.ts | 4 +++- src/login-manager.ios.ts | 6 +++--- 11 files changed, 45 insertions(+), 10 deletions(-) create mode 100644 src/login-behavior.d.ts create mode 100644 src/login-behavior.metadata.json create mode 100644 src/login-behavior.ts diff --git a/demo-angular/app/app.module.ts b/demo-angular/app/app.module.ts index 70e83ab..622bbf1 100644 --- a/demo-angular/app/app.module.ts +++ b/demo-angular/app/app.module.ts @@ -8,10 +8,9 @@ import { NativeScriptFacebookModule } from "nativescript-facebook/angular"; import * as application from 'tns-core-modules/application'; import { routes } from "./app.routing"; import { NavigationService } from "./services/navigation.service"; +import * as nsFacebook from "nativescript-facebook"; -let nsFacebook = require('nativescript-facebook'); - -application.on(application.launchEvent, function (args) { +application.on(application.launchEvent, function (args) { nsFacebook.init("1771472059772879"); }); diff --git a/src/index.android.metadata.json b/src/index.android.metadata.json index d8a493a..86217a2 100644 --- a/src/index.android.metadata.json +++ b/src/index.android.metadata.json @@ -1 +1 @@ -[{"__symbolic":"module","version":3,"metadata":{},"exports":[{"from":"./login-manager"},{"from":"./login-button"},{"from":"./login-event-data"}]},{"__symbolic":"module","version":1,"metadata":{},"exports":[{"from":"./login-manager"},{"from":"./login-button"},{"from":"./login-event-data"}]}] \ No newline at end of file +[{"__symbolic":"module","version":3,"metadata":{},"exports":[{"from":"./login-manager"},{"from":"./login-button"},{"from":"./login-event-data"},{"from":"./login-behavior"}]},{"__symbolic":"module","version":1,"metadata":{},"exports":[{"from":"./login-manager"},{"from":"./login-button"},{"from":"./login-event-data"},{"from":"./login-behavior"}]}] \ No newline at end of file diff --git a/src/index.android.ts b/src/index.android.ts index 89ebabe..2d9e56b 100644 --- a/src/index.android.ts +++ b/src/index.android.ts @@ -1,3 +1,4 @@ export * from "./login-manager"; export * from "./login-button"; -export * from "./login-event-data"; \ No newline at end of file +export * from "./login-event-data"; +export * from "./login-behavior"; \ No newline at end of file diff --git a/src/index.d.ts b/src/index.d.ts index 1d9dfe0..e203e7b 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -2,3 +2,4 @@ export * from "./login-manager"; export * from "./login-button"; export * from "./login-response"; export * from "./login-event-data"; +export * from "./login-behavior"; diff --git a/src/index.ios.metadata.json b/src/index.ios.metadata.json index 4a8d6e6..5db5f74 100644 --- a/src/index.ios.metadata.json +++ b/src/index.ios.metadata.json @@ -1 +1 @@ -[{"__symbolic":"module","version":3,"metadata":{},"exports":[{"from":"./login-button"},{"from":"./login-manager"},{"from":"./login-event-data"}]},{"__symbolic":"module","version":1,"metadata":{},"exports":[{"from":"./login-button"},{"from":"./login-manager"},{"from":"./login-event-data"}]}] \ No newline at end of file +[{"__symbolic":"module","version":3,"metadata":{},"exports":[{"from":"./login-button"},{"from":"./login-manager"},{"from":"./login-event-data"},{"from":"./login-behavior"}]},{"__symbolic":"module","version":1,"metadata":{},"exports":[{"from":"./login-button"},{"from":"./login-manager"},{"from":"./login-event-data"},{"from":"./login-behavior"}]}] \ No newline at end of file diff --git a/src/index.ios.ts b/src/index.ios.ts index 60d063c..49ec586 100644 --- a/src/index.ios.ts +++ b/src/index.ios.ts @@ -2,6 +2,7 @@ import * as applicationModule from "tns-core-modules/application"; export * from "./login-button"; export * from "./login-manager"; export * from "./login-event-data"; +export * from "./login-behavior"; declare class UIResponder { } declare class NSDictionary { } diff --git a/src/login-behavior.d.ts b/src/login-behavior.d.ts new file mode 100644 index 0000000..54944fb --- /dev/null +++ b/src/login-behavior.d.ts @@ -0,0 +1,24 @@ +export declare enum LoginBehavior { + /** + This is the default behavior, and indicates logging in through the native + Facebook app may be used. The SDK may still use Safari instead. + */ + FBSDKLoginBehaviorNative = 0, + /** + Attempts log in through the Safari or SFSafariViewController, if available. + */ + FBSDKLoginBehaviorBrowser = 1, + /** + Attempts log in through the Facebook account currently signed in through + the device Settings. + @note If the account is not available to the app (either not configured by user or + as determined by the SDK) this behavior falls back to \c FBSDKLoginBehaviorNative. + */ + FBSDKLoginBehaviorSystemAccount = 2, + /** + Attempts log in through a modal \c UIWebView pop up + @note This behavior is only available to certain types of apps. Please check the Facebook + Platform Policy to verify your app meets the restrictions. + */ + FBSDKLoginBehaviorWeb = 3, +} \ No newline at end of file diff --git a/src/login-behavior.metadata.json b/src/login-behavior.metadata.json new file mode 100644 index 0000000..d245f49 --- /dev/null +++ b/src/login-behavior.metadata.json @@ -0,0 +1 @@ +[{"__symbolic":"module","version":3,"metadata":{"LoginBehavior":{"FBSDKLoginBehaviorNative":0,"FBSDKLoginBehaviorBrowser":1,"FBSDKLoginBehaviorSystemAccount":2,"FBSDKLoginBehaviorWeb":3}}},{"__symbolic":"module","version":1,"metadata":{"LoginBehavior":{"FBSDKLoginBehaviorNative":0,"FBSDKLoginBehaviorBrowser":1,"FBSDKLoginBehaviorSystemAccount":2,"FBSDKLoginBehaviorWeb":3}}}] \ No newline at end of file diff --git a/src/login-behavior.ts b/src/login-behavior.ts new file mode 100644 index 0000000..0611790 --- /dev/null +++ b/src/login-behavior.ts @@ -0,0 +1,6 @@ +export enum LoginBehavior { + FBSDKLoginBehaviorNative = 0, + FBSDKLoginBehaviorBrowser = 1, + FBSDKLoginBehaviorSystemAccount = 2, + FBSDKLoginBehaviorWeb = 3, +} \ No newline at end of file diff --git a/src/login-manager.d.ts b/src/login-manager.d.ts index a2ef5d9..eebf6a3 100644 --- a/src/login-manager.d.ts +++ b/src/login-manager.d.ts @@ -2,12 +2,14 @@ export declare function _registerLoginCallback(callback: Function): void; export declare function _registerLogoutCallback(callback: Function): void; export declare let onLoginCallback: Function; export declare let onLogoutCallback: Function; +import { LoginBehavior } from "./login-behavior"; /** * Sets the Facebook application Id for the current app and init the native facebook sdk. * @param {string} fbAppId the application Id +* @param {LoginBehavior} fbLoginBehavior (iOS only) specifies the login behavior, default value: LoginBehavior.FBSDKLoginBehaviorSystemAccount */ -export declare function init(fbId: string): void; +export declare function init(fbId: string, fbLoginBehavior?: LoginBehavior): void; /** * Request the specified publish permissions. * @param {string[]} permissions Array of the requested publish permissions. diff --git a/src/login-manager.ios.ts b/src/login-manager.ios.ts index 25d69c7..171d8f2 100644 --- a/src/login-manager.ios.ts +++ b/src/login-manager.ios.ts @@ -1,5 +1,6 @@ import * as applicationModule from "tns-core-modules/application"; import { LoginResponse } from './login-response'; +import { LoginBehavior } from './login-behavior'; declare let FBSDKLoginManager: any; declare let FBSDKSettings: any; declare class FBSDKLoginManagerLoginResult { isCancelled: boolean; token: any; } @@ -9,7 +10,6 @@ declare class UIApplication { } declare let FBSDKLoginButton: any; declare class NSDictionary { } -const FB_LOGIN_BEHAVIOUR = 2; const LOGIN_PERMISSIONS = ["public_profile", "email"]; // TODO: add getter and setter @@ -18,10 +18,10 @@ export let onLogoutCallback; let loginManager; -export function init(fbId: string) { +export function init(fbId: string, fbLoginBehavior: LoginBehavior = LoginBehavior.FBSDKLoginBehaviorBrowser) { setAppId(fbId); loginManager = FBSDKLoginManager.alloc().init(); - loginManager.loginBehavior = FB_LOGIN_BEHAVIOUR; + loginManager.loginBehavior = fbLoginBehavior; } export function _registerLogoutCallback(callback: Function) { From 1d348c536cd7b0a8d6b292e8eaac461bbc3ebe15 Mon Sep 17 00:00:00 2001 From: Dimitar Todorov Date: Tue, 5 Dec 2017 11:26:45 +0200 Subject: [PATCH 2/4] Remove FBSDK prefix from login options values. --- src/index.ios.ts | 2 +- src/login-behavior.d.ts | 10 +++++----- src/login-behavior.metadata.json | 2 +- src/login-behavior.ts | 8 ++++---- src/login-manager.ios.ts | 2 +- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/index.ios.ts b/src/index.ios.ts index 49ec586..f48fc68 100644 --- a/src/index.ios.ts +++ b/src/index.ios.ts @@ -1,5 +1,5 @@ import * as applicationModule from "tns-core-modules/application"; -export * from "./login-button"; +export * from "./login-button"; export * from "./login-manager"; export * from "./login-event-data"; export * from "./login-behavior"; diff --git a/src/login-behavior.d.ts b/src/login-behavior.d.ts index 54944fb..98c5d82 100644 --- a/src/login-behavior.d.ts +++ b/src/login-behavior.d.ts @@ -3,22 +3,22 @@ export declare enum LoginBehavior { This is the default behavior, and indicates logging in through the native Facebook app may be used. The SDK may still use Safari instead. */ - FBSDKLoginBehaviorNative = 0, + LoginBehaviorNative = 0, /** Attempts log in through the Safari or SFSafariViewController, if available. */ - FBSDKLoginBehaviorBrowser = 1, + LoginBehaviorBrowser = 1, /** Attempts log in through the Facebook account currently signed in through the device Settings. @note If the account is not available to the app (either not configured by user or - as determined by the SDK) this behavior falls back to \c FBSDKLoginBehaviorNative. + as determined by the SDK) this behavior falls back to \c LoginBehaviorNative. */ - FBSDKLoginBehaviorSystemAccount = 2, + LoginBehaviorSystemAccount = 2, /** Attempts log in through a modal \c UIWebView pop up @note This behavior is only available to certain types of apps. Please check the Facebook Platform Policy to verify your app meets the restrictions. */ - FBSDKLoginBehaviorWeb = 3, + LoginBehaviorWeb = 3, } \ No newline at end of file diff --git a/src/login-behavior.metadata.json b/src/login-behavior.metadata.json index d245f49..d98f48a 100644 --- a/src/login-behavior.metadata.json +++ b/src/login-behavior.metadata.json @@ -1 +1 @@ -[{"__symbolic":"module","version":3,"metadata":{"LoginBehavior":{"FBSDKLoginBehaviorNative":0,"FBSDKLoginBehaviorBrowser":1,"FBSDKLoginBehaviorSystemAccount":2,"FBSDKLoginBehaviorWeb":3}}},{"__symbolic":"module","version":1,"metadata":{"LoginBehavior":{"FBSDKLoginBehaviorNative":0,"FBSDKLoginBehaviorBrowser":1,"FBSDKLoginBehaviorSystemAccount":2,"FBSDKLoginBehaviorWeb":3}}}] \ No newline at end of file +[{"__symbolic":"module","version":3,"metadata":{"LoginBehavior":{"LoginBehaviorNative":0,"LoginBehaviorBrowser":1,"LoginBehaviorSystemAccount":2,"LoginBehaviorWeb":3}}},{"__symbolic":"module","version":1,"metadata":{"LoginBehavior":{"LoginBehaviorNative":0,"LoginBehaviorBrowser":1,"LoginBehaviorSystemAccount":2,"LoginBehaviorWeb":3}}}] \ No newline at end of file diff --git a/src/login-behavior.ts b/src/login-behavior.ts index 0611790..df839c9 100644 --- a/src/login-behavior.ts +++ b/src/login-behavior.ts @@ -1,6 +1,6 @@ export enum LoginBehavior { - FBSDKLoginBehaviorNative = 0, - FBSDKLoginBehaviorBrowser = 1, - FBSDKLoginBehaviorSystemAccount = 2, - FBSDKLoginBehaviorWeb = 3, + LoginBehaviorNative = 0, + LoginBehaviorBrowser = 1, + LoginBehaviorSystemAccount = 2, + LoginBehaviorWeb = 3, } \ No newline at end of file diff --git a/src/login-manager.ios.ts b/src/login-manager.ios.ts index 171d8f2..e7d5007 100644 --- a/src/login-manager.ios.ts +++ b/src/login-manager.ios.ts @@ -18,7 +18,7 @@ export let onLogoutCallback; let loginManager; -export function init(fbId: string, fbLoginBehavior: LoginBehavior = LoginBehavior.FBSDKLoginBehaviorBrowser) { +export function init(fbId: string, fbLoginBehavior: LoginBehavior = LoginBehavior.LoginBehaviorBrowser) { setAppId(fbId); loginManager = FBSDKLoginManager.alloc().init(); loginManager.loginBehavior = fbLoginBehavior; From 516a70c5c545adc2ee0a88d2eb54eb6021509d62 Mon Sep 17 00:00:00 2001 From: Dimitar Todorov Date: Tue, 5 Dec 2017 11:36:01 +0200 Subject: [PATCH 3/4] Fix lint errors in app.module.ts --- demo-angular/app/app.module.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/demo-angular/app/app.module.ts b/demo-angular/app/app.module.ts index 622bbf1..8ea4e28 100644 --- a/demo-angular/app/app.module.ts +++ b/demo-angular/app/app.module.ts @@ -10,7 +10,7 @@ import { routes } from "./app.routing"; import { NavigationService } from "./services/navigation.service"; import * as nsFacebook from "nativescript-facebook"; -application.on(application.launchEvent, function (args) { +application.on(application.launchEvent, function (args) { nsFacebook.init("1771472059772879"); }); From 68013e84af23cb654e25d46d922a7d4f45524ab7 Mon Sep 17 00:00:00 2001 From: Dimitar Todorov Date: Wed, 6 Dec 2017 09:58:17 +0200 Subject: [PATCH 4/4] Bump version to 2.1.0. --- src/package.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/package.json b/src/package.json index b017eb3..844a240 100644 --- a/src/package.json +++ b/src/package.json @@ -1,6 +1,6 @@ { "name": "nativescript-facebook", - "version": "2.0.1", + "version": "2.1.0", "description": "NativeScript plugin, wrapper of native Facebook SDK for Adroid and iOS.", "nativescript": { "platforms": { @@ -30,7 +30,8 @@ "email": "support@telerik.com", "url": "http://www.telerik.com" }, - "maintainers": [{ + "maintainers": [ + { "name": "angeltsvetkov", "email": "angel.tsvetkov@progress.com" }, @@ -56,6 +57,6 @@ "@angular/compiler-cli": "~4.0.1", "rxjs": "~5.3.0", "zone.js": "~0.8.4", - "tslint":"~5.4.3" + "tslint": "~5.4.3" } } \ No newline at end of file