1+ import { Application } from '@nativescript/core' ;
12import { deserialize , firebase , FirebaseApp , FirebaseError } from '@nativescript/firebase-core' ;
23import { IDynamicLink , IDynamicLinkAnalyticsParameters , IDynamicLinkAndroidParameters , IDynamicLinkIOSParameters , IDynamicLinkITunesParameters , IDynamicLinkNavigationParameters , IDynamicLinkParameters , IDynamicLinks , IDynamicLinkSocialParameters , ShortLinkType } from './common' ;
34
@@ -13,73 +14,7 @@ Object.defineProperty(fb, 'dynamicLinks', {
1314 writable : false ,
1415} ) ;
1516
16- declare const FIRApp ;
17- let appDelegate : AppDelegateImpl ;
18- let _launchOptions : NSDictionary < string , any > ;
19- @NativeClass
20- @ObjCClass ( UIApplicationDelegate )
21- class AppDelegateImpl extends UIResponder implements UIApplicationDelegate {
22- static get sharedInstance ( ) {
23- if ( ! appDelegate ) {
24- appDelegate = AppDelegateImpl . alloc ( ) . init ( ) as AppDelegateImpl ;
25- }
26- return appDelegate ;
27- }
28-
29- static get launchOptions ( ) {
30- return _launchOptions ;
31- }
32- applicationOpenURLOptions ( app : UIApplication , url : NSURL , options : NSDictionary < string , any > ) : boolean {
33- return this . applicationOpenURLSourceApplicationAnnotation ( app , url , options . objectForKey ( UIApplicationOpenURLOptionsSourceApplicationKey ) , options . objectForKey ( UIApplicationOpenURLOptionsAnnotationKey ) ) ;
34- }
35-
36- applicationOpenURLSourceApplicationAnnotation ( application : UIApplication , url : NSURL , sourceApplication : string , annotation : any ) : boolean {
37- let dynamicLink = FIRDynamicLinks . dynamicLinks ( ) . dynamicLinkFromCustomSchemeURL ( url ) ;
38-
39- if ( ! dynamicLink ) {
40- dynamicLink = FIRDynamicLinks . dynamicLinks ( ) . dynamicLinkFromUniversalLinkURL ( url ) ;
41- }
42-
43- if ( ! dynamicLink ) {
44- return false ;
45- }
46-
47- if ( dynamicLink . url ) {
48- if ( typeof DynamicLinks . _onLink === 'function' ) {
49- DynamicLinks . _onLink ( DynamicLink . fromNative ( dynamicLink ) ) ;
50- }
51- }
52-
53- return false ;
54- }
55-
56- applicationContinueUserActivityRestorationHandler ( application : UIApplication , userActivity : NSUserActivity , restorationHandler : ( p1 : NSArray < UIUserActivityRestoring > ) => void ) : boolean {
57- let retried = false ;
58- let callback = ( dynamicLink , error ) => {
59- if ( ! error && dynamicLink ?. url ) {
60- if ( typeof DynamicLinks . _onLink === 'function' ) {
61- DynamicLinks . _onLink ( DynamicLink . fromNative ( dynamicLink ) ) ;
62- }
63- }
64-
65- if ( error && ! retried && NSPOSIXErrorDomain === error . domain && error . code === 53 ) {
66- retried = true ;
67- FIRDynamicLinks . dynamicLinks ( ) . handleUniversalLinkCompletion ( userActivity . webpageURL , callback ) ;
68- }
69-
70- if ( error ) {
71- console . error ( 'Unknown error occurred when attempting to handle a universal link' , error ) ;
72- }
73- } ;
74- FIRDynamicLinks . dynamicLinks ( ) . handleUniversalLinkCompletion ( userActivity . webpageURL , callback ) ;
75- return false ;
76- }
77-
78- applicationDidFinishLaunchingWithOptions ?( application : UIApplication , launchOptions : NSDictionary < string , any > ) : boolean {
79- _launchOptions = launchOptions ;
80- return false ;
81- }
82- }
17+ declare const FIRApp , TNSFirebaseDynamicLinksAppDelegate ;
8318
8419export class DynamicLinkAnalyticsParameters implements IDynamicLinkAnalyticsParameters {
8520 #native: FIRDynamicLinkGoogleAnalyticsParameters ;
@@ -494,24 +429,25 @@ export class DynamicLink implements IDynamicLink {
494429 get ios ( ) {
495430 return this . native ;
496431 }
432+
433+ toJSON ( ) {
434+ return {
435+ minimumAppVersion : this . minimumAppVersion ,
436+ url : this . url ,
437+ utmParameters : this . utmParameters ,
438+ } ;
439+ }
497440}
498441
499442export class DynamicLinks implements IDynamicLinks {
500443 #native: FIRDynamicLinks ;
501444 #app: FirebaseApp ;
502- static _onLink : ( link : DynamicLink ) => void ;
503- static #appDelegateInitialized = false ;
445+ static #onLink: ( link : DynamicLink ) => void ;
504446 constructor ( ) {
505- if ( defaultDynamicLinks ) {
447+ if ( defaultDynamicLinks ) {
506448 return defaultDynamicLinks ;
507449 }
508450 defaultDynamicLinks = this ;
509-
510- if ( ! DynamicLinks . #appDelegateInitialized) {
511- GULAppDelegateSwizzler . proxyOriginalDelegate ( ) ;
512- GULAppDelegateSwizzler . registerAppDelegateInterceptor ( AppDelegateImpl . sharedInstance ) ;
513- DynamicLinks . #appDelegateInitialized = true ;
514- }
515451 }
516452
517453 createLink ( link : string , domainUriPrefix : string ) : DynamicLinkParameters {
@@ -542,7 +478,14 @@ export class DynamicLinks implements IDynamicLinks {
542478 }
543479
544480 onLink ( listener : ( link : DynamicLink ) => void ) {
545- DynamicLinks . _onLink = listener ;
481+ DynamicLinks . #onLink = listener ;
482+ if ( listener ) {
483+ TNSFirebaseDynamicLinksAppDelegate . onLinkCallback = ( link ) => {
484+ listener ( DynamicLink . fromNative ( link ) ) ;
485+ } ;
486+ } else {
487+ TNSFirebaseDynamicLinksAppDelegate . onLinkCallback = null ;
488+ }
546489 }
547490 resolveLink ( link : string ) : Promise < DynamicLink > {
548491 return new Promise ( ( resolve , reject ) => {
0 commit comments