FacebookImpl.ts 1.3 KB

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