diff --git a/ios/RNFirebase/links/RNFirebaseLinks.h b/ios/RNFirebase/links/RNFirebaseLinks.h index e6669aac..e89dfa17 100644 --- a/ios/RNFirebase/links/RNFirebaseLinks.h +++ b/ios/RNFirebase/links/RNFirebaseLinks.h @@ -3,6 +3,7 @@ #import #if __has_include() +#import #import #import diff --git a/ios/RNFirebase/links/RNFirebaseLinks.m b/ios/RNFirebase/links/RNFirebaseLinks.m index f7a70952..23f0c69c 100644 --- a/ios/RNFirebase/links/RNFirebaseLinks.m +++ b/ios/RNFirebase/links/RNFirebaseLinks.m @@ -1,5 +1,4 @@ #import "RNFirebaseLinks.h" -#import "Firebase.h" #if __has_include() #import "RNFirebaseEvents.h" @@ -123,7 +122,7 @@ RCT_EXPORT_METHOD(getInitialLink:(RCTPromiseResolveBlock)resolve rejecter:(RCTPr if (self.bridge.launchOptions[UIApplicationLaunchOptionsURLKey]) { NSURL* url = (NSURL*)self.bridge.launchOptions[UIApplicationLaunchOptionsURLKey]; [self handleInitialLinkFromCustomSchemeURL:url resolver:resolve rejecter:reject]; - + } else { NSDictionary *userActivityDictionary = self.bridge.launchOptions[UIApplicationLaunchOptionsUserActivityDictionaryKey]; @@ -133,7 +132,7 @@ RCT_EXPORT_METHOD(getInitialLink:(RCTPromiseResolveBlock)resolve rejecter:(RCTPr RCT_EXPORT_METHOD(createDynamicLink: (NSDictionary *) metadata resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) { FIRDynamicLinkComponents *components = [self getDynamicLinkComponentsFromMetadata:metadata]; - + if (components == nil) { reject(@"links/failure", @"Failed to create Dynamic Link", nil); } else { @@ -145,7 +144,7 @@ RCT_EXPORT_METHOD(createDynamicLink: (NSDictionary *) metadata resolver:(RCTProm RCT_EXPORT_METHOD(createShortDynamicLink: (NSDictionary *) metadata resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) { FIRDynamicLinkComponents *components = [self getDynamicLinkComponentsFromMetadata:metadata]; - + [components shortenWithCompletion:^(NSURL *_Nullable shortURL, NSArray *_Nullable warnings, NSError *_Nullable error) { diff --git a/lib/firebase-app.js b/lib/firebase-app.js index 7e48bb24..57c5e47e 100644 --- a/lib/firebase-app.js +++ b/lib/firebase-app.js @@ -12,6 +12,7 @@ import RemoteConfig from './modules/config'; import Storage, { statics as StorageStatics } from './modules/storage'; import Database, { statics as DatabaseStatics } from './modules/database'; import Messaging, { statics as MessagingStatics } from './modules/messaging'; +import Links, { statics as LinksStatics } from './modules/links'; const FirebaseCoreModule = NativeModules.RNFirebase; @@ -35,6 +36,7 @@ export default class FirebaseApp { this.messaging = this._staticsOrModuleInstance(MessagingStatics, Messaging); this.perf = this._staticsOrModuleInstance({}, Performance); this.storage = this._staticsOrModuleInstance(StorageStatics, Storage); + this.links = this._staticsOrModuleInstance(LinksStatics, Links); this._extendedProps = {}; } diff --git a/lib/modules/links/index.js b/lib/modules/links/index.js index 78fc55c5..26832171 100644 --- a/lib/modules/links/index.js +++ b/lib/modules/links/index.js @@ -1,29 +1,22 @@ -import { NativeEventEmitter, NativeModules } from 'react-native' -import { Base } from './../base' -import { nativeSDKMissing } from './../../utils' - -const FirebaseLinks = NativeModules.RNFirebaseLinks -const FirebaseLinksEvt = FirebaseLinks && new NativeEventEmitter(FirebaseLinks) +import ModuleBase from './../../utils/ModuleBase'; const EVENT_TYPE = { Link: 'dynamic_link_received', -} +}; /** * @class Links */ -export default class Links extends Base { - constructor(firebase, options = {}) { - super(firebase, options) - if (!FirebaseLinks) { - return nativeSDKMissing('links') - } +export default class Links extends ModuleBase { + static _NAMESPACE = 'links'; + static _NATIVE_MODULE = 'RNFirebaseLinks'; - this.namespace = 'firebase:links' + constructor(firebaseApp: Object, options: Object = {}) { + super(firebaseApp, options, true); } get EVENT_TYPE() { - return EVENT_TYPE + return EVENT_TYPE; } /** @@ -31,7 +24,7 @@ export default class Links extends Base { * @returns {*} */ getInitialLink() { - return FirebaseLinks.getInitialLink() + return this._native.getInitialLink(); } /** @@ -40,19 +33,19 @@ export default class Links extends Base { * @returns {*} */ onLink(listener: Function): () => any { - const rnListener = FirebaseLinksEvt.addListener(EVENT_TYPE.Link, listener) - return () => rnListener.remove() + const rnListener = this._eventEmitter.addListener(EVENT_TYPE.Link, listener); + return () => rnListener.remove(); } createDynamicLink(parameters: Object = {}): Promise { - return FirebaseLinks.createDynamicLink(parameters) + return this._native.createDynamicLink(parameters); } createShortDynamicLink(parameters: Object = {}): Promise { - return FirebaseLinks.createShortDynamicLink(parameters) + return this._native.createShortDynamicLink(parameters); } } export const statics = { EVENT_TYPE, -} +};