| 455 | } |
| 456 | |
| 457 | export class DynamicLinks implements IDynamicLinks { |
| 458 | _native: FIRDynamicLinks; |
| 459 | _app: FirebaseApp; |
| 460 | static _onLink: OnLinkListener; |
| 461 | constructor() { |
| 462 | if (defaultDynamicLinks) { |
| 463 | return defaultDynamicLinks; |
| 464 | } |
| 465 | defaultDynamicLinks = this; |
| 466 | } |
| 467 | |
| 468 | createLink(link: string, domainUriPrefix: string): DynamicLinkParameters { |
| 469 | return DynamicLinkParameters.fromNative(FIRDynamicLinkComponents.alloc().initWithLinkDomainURIPrefix(NSURL.URLWithString(link), domainUriPrefix)); |
| 470 | } |
| 471 | createShortLink(link: string, domainUriPrefix: string, shortLinkType = ShortLinkType.DEFAULT): DynamicLinkParameters { |
| 472 | const nativeLink = FIRDynamicLinkComponents.alloc().initWithLinkDomainURIPrefix(NSURL.URLWithString(link), domainUriPrefix); |
| 473 | const options = FIRDynamicLinkComponentsOptions.options(); |
| 474 | switch (shortLinkType) { |
| 475 | case ShortLinkType.SHORT: |
| 476 | options.pathLength = FIRShortDynamicLinkPathLength.Short; |
| 477 | break; |
| 478 | case ShortLinkType.UNGUESSABLE: |
| 479 | options.pathLength = FIRShortDynamicLinkPathLength.Unguessable; |
| 480 | break; |
| 481 | default: |
| 482 | options.pathLength = FIRShortDynamicLinkPathLength.Default; |
| 483 | break; |
| 484 | } |
| 485 | nativeLink.options = options; |
| 486 | return DynamicLinkParameters.fromNative(nativeLink); |
| 487 | } |
| 488 | |
| 489 | buildLink(link: DynamicLinkParameters): Promise<string> { |
| 490 | if (link.native.options) { |
| 491 | // short link |
| 492 | return new Promise((resolve, reject) => { |
| 493 | link.native.shortenWithCompletion((url, warnings, error) => { |
| 494 | if (error) { |
| 495 | reject(FirebaseError.fromNative(error)); |
| 496 | } else { |
| 497 | resolve(url.absoluteString); |
| 498 | } |
| 499 | }); |
| 500 | }); |
| 501 | } else { |
| 502 | // long link |
| 503 | return Promise.resolve(link.native.url.absoluteString); |
| 504 | } |
| 505 | } |
| 506 | |
| 507 | onLink(listener: OnLinkListener) { |
| 508 | DynamicLinks._onLink = listener; |
| 509 | if (listener) { |
| 510 | TNSFirebaseDynamicLinksAppDelegate.onLinkCallback = (link, error) => { |
| 511 | listener(DynamicLink.fromNative(link), error && FirebaseError.fromNative(error)); |
| 512 | }; |
| 513 | } else { |
| 514 | TNSFirebaseDynamicLinksAppDelegate.onLinkCallback = null; |
nothing calls this directly
no outgoing calls
no test coverage detected