FacebookImpl.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. export interface IFBLoginRes {
  2. accessToken: string;
  3. /** iOS Limited Login JWT; never use as a Graph API access token. */
  4. authenticationToken?: string;
  5. tokenType?: "access" | "authentication";
  6. nonce?: string;
  7. isCancel: boolean;
  8. status?: string;
  9. reason?: string;
  10. }
  11. export type IFBEventValue = string | number;
  12. export type IFBEventParams = Record<string, IFBEventValue>;
  13. export interface IFBShareOptions {
  14. url: string;
  15. hashtag?: string;
  16. quote?: string;
  17. }
  18. export interface IFBShareRes {
  19. success: boolean;
  20. isCancel: boolean;
  21. postId?: string;
  22. reason?: string;
  23. }
  24. export abstract class FacebookImpl {
  25. private _isInitialized = false;
  26. public get isInitialized() { return this._isInitialized; }
  27. abstract init(): void;
  28. protected onInited() {
  29. this._isInitialized = true;
  30. }
  31. async login(): Promise<IFBLoginRes> {
  32. const res = await this.onLogin();
  33. return res;
  34. }
  35. protected abstract onLogin(): Promise<IFBLoginRes>;
  36. abstract logOut(): Promise<boolean>;
  37. abstract share(options: IFBShareOptions): Promise<IFBShareRes>;
  38. abstract logEvent(
  39. eventName: string,
  40. parameters?: IFBEventParams,
  41. valueToSum?: number,
  42. ): Promise<boolean>;
  43. abstract logPurchase(
  44. amount: number,
  45. currency: string,
  46. parameters?: IFBEventParams,
  47. ): Promise<boolean>;
  48. abstract flushEvents(): Promise<boolean>;
  49. }