diff --git a/phonegap-facebook-plugin/phonegap-facebook-plugin-tests.ts b/phonegap-facebook-plugin/phonegap-facebook-plugin-tests.ts new file mode 100644 index 0000000000..4053255108 --- /dev/null +++ b/phonegap-facebook-plugin/phonegap-facebook-plugin-tests.ts @@ -0,0 +1,114 @@ +/// + +facebookConnectPlugin.api("a", ["b", "c"]); +facebookConnectPlugin.api("a", ["b", "c"], (result: any) => {}); +facebookConnectPlugin.api("a", ["b", "c"], (result: any) => {}, (error: string) => {}); + +facebookConnectPlugin.getAccessToken((token: string) => {}); +facebookConnectPlugin.getAccessToken((token: string) => {}, (error: string) => {}); + +facebookConnectPlugin.getLoginStatus(); +facebookConnectPlugin.getLoginStatus((status: PhonegapFacebookPlugin.LoginResult) => { + var accessToken: string = status.authResponse.accessToken; + var expiresIn: string = status.authResponse.expiresIn; + var secret: string = status.authResponse.secret; + var session_key: boolean = status.authResponse.session_key; + var sig: string = status.authResponse.sig; + var userID: string = status.authResponse.userID; + var status1: string = status.status; +}, (error: string) => {}); + +facebookConnectPlugin.logEvent("a"); +facebookConnectPlugin.logEvent("a", {}); +facebookConnectPlugin.logEvent("a", {}, 42); +facebookConnectPlugin.logEvent("a", {}, 42, () => {}); +facebookConnectPlugin.logEvent("a", {}, 42, () => {}, (error: string) => {}); + +facebookConnectPlugin.logPurchase(42, "a"); +facebookConnectPlugin.logPurchase(42, "a", () => {}); +facebookConnectPlugin.logPurchase(42, "a", () => {}, (error: string) => {}); + +facebookConnectPlugin.login(["a", "b"], (result: PhonegapFacebookPlugin.LoginResult) => { + var accessToken: string = result.authResponse.accessToken; + var expiresIn: string = result.authResponse.expiresIn; + var secret: string = result.authResponse.secret; + var session_key: boolean = result.authResponse.session_key; + var sig: string = result.authResponse.sig; + var userID: string = result.authResponse.userID; + var status: string = result.status; +}, (error: string) => {}); + +facebookConnectPlugin.logout(); +facebookConnectPlugin.logout(() => {}); +facebookConnectPlugin.logout(() => {}, (error: string) => {}); + +//#region BaseDialog + +var baseDialogOptions: PhonegapFacebookPlugin.BaseDialogOptions = { + method: "a" +}; + +facebookConnectPlugin.showDialog(baseDialogOptions, (status: PhonegapFacebookPlugin.BaseDialogResult) => {}, (error: string) => {}); + +//#endregion + +//#region Feed Dialog + +var feedDialogOptions: PhonegapFacebookPlugin.FeedDialogOptions = { + method: "feed", + from: "a", + to: "b", + link: "c", + picture: "d", + source: "e", + name: "f", + caption: "g", + description: "h", + ref: "i" +}; + +facebookConnectPlugin.showDialog(feedDialogOptions, (status: PhonegapFacebookPlugin.FeedDialogResult) => { + var post_id: string = status.post_id; +}, (error: string) => {}); + +//#endregion + +//#region Send Dialog + +var sendDialogOptions: PhonegapFacebookPlugin.SendDialogOptions = { + method: "send", + to: "a", + link: "b" +}; + +facebookConnectPlugin.showDialog(sendDialogOptions, (status: PhonegapFacebookPlugin.SendDialogResult) => { +}, (error: string) => {}); + +//#endregion + +//#region Share Dialog + +var shareDialogOptions: PhonegapFacebookPlugin.ShareDialogOptions = { + method: "share", + href: "a" +}; + +facebookConnectPlugin.showDialog(shareDialogOptions, (status: PhonegapFacebookPlugin.ShareDialogResult) => { + var post_id: string = status.post_id; +}, (error: string) => {}); + +//#endregion + +//#region Share Open Graph Dialog + +var shareOpenGraphDialogOptions: PhonegapFacebookPlugin.ShareOpenGraphDialogOptions = { + method: "share_open_graph", + action_type: "a", + action_properties: "b" +}; + +facebookConnectPlugin.showDialog(shareOpenGraphDialogOptions, (status: PhonegapFacebookPlugin.ShareDialogResult) => { + var post_id: string = status.post_id; +}, (error: string) => {}); + +//#endregion \ No newline at end of file diff --git a/phonegap-facebook-plugin/phonegap-facebook-plugin.d.ts b/phonegap-facebook-plugin/phonegap-facebook-plugin.d.ts new file mode 100644 index 0000000000..02544b3b86 --- /dev/null +++ b/phonegap-facebook-plugin/phonegap-facebook-plugin.d.ts @@ -0,0 +1,292 @@ +// Type definitions for phonegap-facebook-plugin 0.11.0 +// Project: https://github.com/Wizcorp/phonegap-facebook-plugin +// Definitions by: Justin Unterreiner +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +declare module PhonegapFacebookPlugin { + + //#region API Methods + + interface FacebookConnectPluginStatic { + + /** + * Allows access to the Facebook Graph API. This API allows for additional permission because, unlike login, the Graph API can + * accept multiple permissions. In order to make calls to the Graph API on behalf of a user, the user has to be logged into your + * app using Facebook login. + * + * @param graphPath The graph API path to use for the query. + * @param permissions The permissions to request. + * @param successCallback The callback to be executed when the call completes successfully. + * @param failureCallback The callback to be executed when the call fails. + */ + api: (graphPath: string, permissions: string[], successCallback?: (result: any) => void, failureCallback?: (error: string) => void) => void; + + /** + * Used to retreive the access token for the current user. + * + * @param successCallback The callback to be executed when the call completes successfully. + * @param failureCallback The callback to be executed when the call fails. + */ + getAccessToken: (successCallback?: (token: string) => void, failureCallback?: (error: string) => void) => void; + + /** + * Used to get the login status for the current user. + * + * @param successCallback The callback to be executed when the call completes successfully. + * @param failureCallback The callback to be executed when the call fails. + */ + getLoginStatus: (successCallback?: (status: LoginResult) => void, failureCallback?: (error: string) => void) => void; + + /** + * Used to log an event. + * + * @param name Name of the event. + * @param params Extra data to log with the event (optional). + * @param valueToSum a property which is an arbitrary number that can represent any value (e.g., a price or a quantity). + * When reported, all of the valueToSum properties will be summed together. For example, if 10 people each purchased + * one item that cost $10 (and passed in valueToSum) then they would be summed to report a number of $100. (optional) + * @param successCallback The callback to be executed when the call completes successfully. + * @param failureCallback The callback to be executed when the call fails. + */ + logEvent: (name: string, params?: any, valueToSum?: number, successCallback?: () => void, failureCallback?: (error: string) => void) => void; + + /** + * Used to log a purchase. + * + * @param value The value of the purchase. + * @param currency An ISO-4217 currency code. + * @param successCallback The callback to be executed when the call completes successfully. + * @param failureCallback The callback to be executed when the call fails. + */ + logPurchase: (value: number, currency: string, successCallback?: () => void, failureCallback?: (error: string) => void) => void; + + /** + * Used to log the user in via Facebook. Calling this will result in a Facebook login dialog (or external + * webpage) launching. Once the user completes the flow, one of the two callbacks will be executed. + * + * @param permissions The permissions to request during login. + * @param successCallback The callback to be executed when the call completes successfully. + * @param failureCallback The callback to be executed when the call fails. + */ + login: (permissions: string[], successCallback?: (result: LoginResult) => void, failureCallback?: (error: string) => void) => void; + + /** + * Used to log the user out of Facebook. This will invalidate their access token. + * + * @param successCallback The callback to be executed when the call completes successfully. + * @param failureCallback The callback to be executed when the call fails. + */ + logout: (successCallback?: () => void, failureCallback?: (error: string) => void) => void; + + /** + * Used to open a Facebook dialog. + * + * @param options The options that control the dialog and it's behavior. + * @param successCallback The callback to be executed when the call completes successfully. + * @param failureCallback The callback to be executed when the call fails. + */ + showDialog: (options: BaseDialogOptions, successCallback?: (status: BaseDialogResult) => void, failureCallback?: (error: string) => void) => void; + } + + //#endregion + + //#region Method Parameters + + interface BaseDialogOptions { + + /** + * The type of dialog to show, can be one of the following. + * + * Depeneding on the type, a different options object will be used: + * + * Method Options Type + * feed FeedDialogOptions + * send SendDialogOptions + * share ShareDialogOptions + * share_open_graph ShareOpenGraphDialogOptions + */ + method: string; + } + + /** + * You can add the Feed Dialog to your app so people can publish individual stories to their timeline. This + * includes captions that your app manages and a personal comment from the person sharing the content. + * + * For use with showDialog() of method type 'feed'. + */ + interface FeedDialogOptions extends BaseDialogOptions { + + /** + * The ID of the person posting the message. If this is unspecified, it defaults to the current person. + * If specified, it must be the ID of the person or of a page that the person administers. + */ + from?: string; + + /** + * The ID of the profile that this story will be published to. If this is unspecified, it defaults to + * the value of from. The ID must be a friend who also uses your app. + */ + to?: string; + + /** + * The link attached to this post. + */ + link?: string; + + /** + * The URL of a picture attached to this post. The picture must be at least 200px by 200px. + */ + picture?: string; + + /** + * The URL of a media file (either SWF or MP3) attached to this post. If SWF, you must also specify + * 'picture' to provide a thumbnail for the video. + */ + source?: string; + + /** + * The name of the link attachment. + */ + name?: string; + + /** + * The caption of the link (appears beneath the link name). If not specified, this field is automatically + * populated with the URL of the link. + */ + caption?: string; + + /** + * The description of the link (appears beneath the link caption). If not specified, this field is + * automatically populated by information scraped from the link, typically the title of the page. + */ + description?: string; + + /** + * This argument is a comma-separated list, consisting of at most 5 distinct items, each of length at + * least 1 and at most 15 characters drawn from the set + * '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_'. + * Each category is used in Facebook Insights to help you measure the performance of different types + * of post. + */ + ref?: string; + } + + /** + * The Send Dialog lets people privately send content to specific friends. They'll have the option to privately + * share a link as a Facebook message or group post. The Send Dialog does not require any extended permissions. + * + * For use with showDialog() of method type 'send'. + */ + interface SendDialogOptions extends BaseDialogOptions { + + /** + * A user ID of a recipient. Once the dialog comes up, the sender can specify additional people, and groups + * addresses as recipients. Sending content to a Facebook group will post it to the group's wall. + */ + to: string; + + /** + * Required parameter. The URL that is being sent in the message. + */ + link: string; + } + + /** + * The Share dialog prompts a person to publish an individual story or an Open Graph story to their timeline. + * This does not require Facebook Login or any extended permissions, so it is the easiest way to enable + * sharing on web. + * + * For use with showDialog() of method type 'share'. + */ + interface ShareDialogOptions extends BaseDialogOptions { + + /** + * The link attached to this post. Required when using method share. Include open graph meta tags in the + * page at this URL to customize the story that is shared. + */ + href: string; + } + + /** + * The Share dialog prompts a person to publish an individual story or an Open Graph story to their timeline. + * This does not require Facebook Login or any extended permissions, so it is the easiest way to enable + * sharing on web. + * + * For use with showDialog() of method type 'share_open_graph'. + */ + interface ShareOpenGraphDialogOptions extends BaseDialogOptions { + + /** + * A string specifying which Open Graph action type to publish, e.g., og.likes for the built in like type. + * The dialog also supports approved custom types. + */ + action_type: string; + + /** + * A JSON object of key/value pairs specifying parameters which correspond to the action_type being used. + * Valid key/value pairs are the same parameters that can be used when publishing Open Graph Actions using + * the API. + */ + action_properties: string; + } + + //#endregion + + //#region Callback Results + + /** + * Result for the login() and getLoginStatus() success callbacks. + */ + interface LoginResult { + authResponse: { + accessToken: string; + expiresIn: string; + secret: string; + session_key: boolean; + sig: string; + userID: string; + }, + status: string; + } + + /** + * The base result type for all showDialog() success callbacks. + */ + interface BaseDialogResult { + error_code: string; + error_message: string; + } + + /** + * The response object returned from a success callback for showDialog() of type 'feed'. + */ + interface FeedDialogResult extends BaseDialogResult { + + /** + * The ID of the posted story, if the person chose to publish. + */ + post_id: string; + } + + /** + * The response object returned from a success callback for showDialog() of type 'send'. + */ + interface SendDialogResult extends BaseDialogResult { + } + + /** + * The response object returned from a success callback for showDialog() of type 'share' or 'share_open_graph'. + */ + interface ShareDialogResult extends BaseDialogResult { + + /** + * Only available if the user is logged into your app using Facebook and has granted publish_actions. + * If present, this is the ID of the published Open Graph story. + */ + post_id: string; + } + + //#endregion +} + +declare var facebookConnectPlugin: PhonegapFacebookPlugin.FacebookConnectPluginStatic; \ No newline at end of file