temporary disable link registration, methods rename, undo prettify in lib/firebase.js
This commit is contained in:
parent
5728fa76bc
commit
d4a1304bea
|
@ -33,8 +33,8 @@ public class RNFirebaseLinks extends ReactContextBaseJavaModule implements Activ
|
||||||
|
|
||||||
public RNFirebaseLinks(ReactApplicationContext reactContext) {
|
public RNFirebaseLinks(ReactApplicationContext reactContext) {
|
||||||
super(reactContext);
|
super(reactContext);
|
||||||
getReactApplicationContext().addActivityEventListener(this);
|
//getReactApplicationContext().addActivityEventListener(this);
|
||||||
registerLinksHandler();
|
//registerLinksHandler();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -51,55 +51,54 @@ public class RNFirebaseLinks extends ReactContextBaseJavaModule implements Activ
|
||||||
Activity activity = getCurrentActivity();
|
Activity activity = getCurrentActivity();
|
||||||
if (activity == null) {
|
if (activity == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
FirebaseDynamicLinks.getInstance()
|
FirebaseDynamicLinks.getInstance()
|
||||||
.getDynamicLink(activity.getIntent())
|
.getDynamicLink(activity.getIntent())
|
||||||
.addOnSuccessListener(activity, new OnSuccessListener<PendingDynamicLinkData>() {
|
.addOnSuccessListener(activity, new OnSuccessListener<PendingDynamicLinkData>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
|
public void onSuccess(PendingDynamicLinkData pendingDynamicLinkData) {
|
||||||
// Get deep link from result (may be null if no link is found)
|
// Get deep link from result (may be null if no link is found)
|
||||||
if (pendingDynamicLinkData != null) {
|
if (pendingDynamicLinkData != null) {
|
||||||
Uri deepLinkUri = pendingDynamicLinkData.getLink();
|
Uri deepLinkUri = pendingDynamicLinkData.getLink();
|
||||||
String deepLink = deepLinkUri.toString();
|
String deepLink = deepLinkUri.toString();
|
||||||
// TODO: Validate that this is called when opening from a deep link
|
// TODO: Validate that this is called when opening from a deep link
|
||||||
if (initialLink == null) {
|
if (initialLink == null) {
|
||||||
initialLink = deepLink;
|
initialLink = deepLink;
|
||||||
}
|
|
||||||
Utils.sendEvent(getReactApplicationContext(), "dynamic_link_received", deepLink);
|
|
||||||
}
|
}
|
||||||
|
Utils.sendEvent(getReactApplicationContext(), "dynamic_link_received", deepLink);
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
.addOnFailureListener(activity, new OnFailureListener() {
|
})
|
||||||
@Override
|
.addOnFailureListener(activity, new OnFailureListener() {
|
||||||
public void onFailure(@NonNull Exception e) {
|
@Override
|
||||||
Log.w(TAG, "getDynamicLink:onFailure", e);
|
public void onFailure(@NonNull Exception e) {
|
||||||
}
|
Log.w(TAG, "getDynamicLink:onFailure", e);
|
||||||
});
|
}
|
||||||
}
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) {
|
public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) {
|
||||||
// Not required for this module
|
// Not required for this module
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNewIntent(Intent intent) {
|
public void onNewIntent(Intent intent) {
|
||||||
// TODO: Do I need to re-register the links handler for each new intent?
|
// TODO: Do I need to re-register the links handler for each new intent?
|
||||||
}
|
}
|
||||||
|
|
||||||
@ReactMethod
|
@ReactMethod
|
||||||
public void createDynamicLink(final ReadableMap parameters, final Promise promise) {
|
public void createDynamicLink(final ReadableMap parameters, final Promise promise) {
|
||||||
try {
|
try {
|
||||||
Map<String, Object> m = Utils.recursivelyDeconstructReadableMap(parameters);
|
Map<String, Object> m = Utils.recursivelyDeconstructReadableMap(parameters);
|
||||||
|
|
||||||
DynamicLink.Builder builder = setDynamicLinkBuilderFromMap(m);
|
DynamicLink.Builder builder = getDynamicLinkBuilderFromMap(m);
|
||||||
Uri link = builder.buildDynamicLink().getUri();
|
Uri link = builder.buildDynamicLink().getUri();
|
||||||
|
|
||||||
Log.d(TAG, "created dynamic link: " + link.toString());
|
Log.d(TAG, "created dynamic link: " + link.toString());
|
||||||
promise.resolve(link.toString());
|
promise.resolve(link.toString());
|
||||||
}
|
} catch (Exception ex) {
|
||||||
catch(Exception ex) {
|
|
||||||
Log.e(TAG, "create dynamic link failure " + ex.getMessage());
|
Log.e(TAG, "create dynamic link failure " + ex.getMessage());
|
||||||
promise.reject("links/failure", ex.getMessage(), ex);
|
promise.reject("links/failure", ex.getMessage(), ex);
|
||||||
}
|
}
|
||||||
|
@ -107,58 +106,54 @@ public class RNFirebaseLinks extends ReactContextBaseJavaModule implements Activ
|
||||||
|
|
||||||
@ReactMethod
|
@ReactMethod
|
||||||
public void createShortDynamicLink(final ReadableMap parameters, final Promise promise) {
|
public void createShortDynamicLink(final ReadableMap parameters, final Promise promise) {
|
||||||
try {
|
try {
|
||||||
Map<String, Object> m = Utils.recursivelyDeconstructReadableMap(parameters);
|
Map<String, Object> m = Utils.recursivelyDeconstructReadableMap(parameters);
|
||||||
|
|
||||||
DynamicLink.Builder builder = setDynamicLinkBuilderFromMap(m);
|
DynamicLink.Builder builder = getDynamicLinkBuilderFromMap(m);
|
||||||
|
|
||||||
Task<ShortDynamicLink> shortLinkTask = getShortDynamicLinkTask(builder, m)
|
Task<ShortDynamicLink> shortLinkTask = getShortDynamicLinkTask(builder, m)
|
||||||
.addOnCompleteListener(new OnCompleteListener<ShortDynamicLink>() {
|
.addOnCompleteListener(new OnCompleteListener<ShortDynamicLink>() {
|
||||||
@Override
|
@Override
|
||||||
public void onComplete(@NonNull Task<ShortDynamicLink> task) {
|
public void onComplete(@NonNull Task<ShortDynamicLink> task) {
|
||||||
if (task.isSuccessful()) {
|
if (task.isSuccessful()) {
|
||||||
Uri shortLink = task.getResult().getShortLink();
|
Uri shortLink = task.getResult().getShortLink();
|
||||||
Log.d(TAG, "created short dynamic link: " + shortLink.toString());
|
Log.d(TAG, "created short dynamic link: " + shortLink.toString());
|
||||||
promise.resolve(shortLink.toString());
|
promise.resolve(shortLink.toString());
|
||||||
} else {
|
} else {
|
||||||
Log.e(TAG, "create shot dynamic link failure " + task.getException().getMessage());
|
Log.e(TAG, "create short dynamic link failure " + task.getException().getMessage());
|
||||||
promise.reject("links/failure", task.getException().getMessage(), task.getException());
|
promise.reject("links/failure", task.getException().getMessage(), task.getException());
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
}
|
});
|
||||||
catch(Exception ex) {
|
} catch (Exception ex) {
|
||||||
Log.e(TAG, "create short dynamic link failure " + ex.getMessage());
|
Log.e(TAG, "create short dynamic link failure " + ex.getMessage());
|
||||||
promise.reject("links/failure", ex.getMessage(), ex);
|
promise.reject("links/failure", ex.getMessage(), ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private Task<ShortDynamicLink> getShortDynamicLinkTask(final DynamicLink.Builder builder ,final Map<String, Object> m) {
|
private Task<ShortDynamicLink> getShortDynamicLinkTask(final DynamicLink.Builder builder, final Map<String, Object> m) {
|
||||||
Map<String, Object> suffixParameters = (Map<String, Object>) m.get("suffix");
|
Map<String, Object> suffixParameters = (Map<String, Object>) m.get("suffix");
|
||||||
if (suffixParameters != null) {
|
if (suffixParameters != null) {
|
||||||
String option = (String) suffixParameters.get("option");
|
String option = (String) suffixParameters.get("option");
|
||||||
if (option.equals("SHORT")) {
|
if ("SHORT".equals(option)) {
|
||||||
return builder.buildShortDynamicLink(ShortDynamicLink.Suffix.SHORT);
|
return builder.buildShortDynamicLink(ShortDynamicLink.Suffix.SHORT);
|
||||||
}
|
} else if ("UNGUESSABLE".equals(option)) {
|
||||||
else if (option.equals("UNGUESSABLE")) {
|
|
||||||
return builder.buildShortDynamicLink(ShortDynamicLink.Suffix.UNGUESSABLE);
|
return builder.buildShortDynamicLink(ShortDynamicLink.Suffix.UNGUESSABLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return builder.buildShortDynamicLink();
|
return builder.buildShortDynamicLink();
|
||||||
}
|
}
|
||||||
|
|
||||||
private DynamicLink.Builder setDynamicLinkBuilderFromMap(final Map<String, Object> m) {
|
private DynamicLink.Builder getDynamicLinkBuilderFromMap(final Map<String, Object> m) {
|
||||||
DynamicLink.Builder parametersBuilder = FirebaseDynamicLinks.getInstance().createDynamicLink();
|
DynamicLink.Builder parametersBuilder = FirebaseDynamicLinks.getInstance().createDynamicLink();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
parametersBuilder.setLink(Uri.parse((String)m.get("link")));
|
parametersBuilder.setLink(Uri.parse((String) m.get("link")));
|
||||||
parametersBuilder.setDynamicLinkDomain((String)m.get("dynamicLinkDomain"));
|
parametersBuilder.setDynamicLinkDomain((String) m.get("dynamicLinkDomain"));
|
||||||
|
|
||||||
setAndroidParameters(m, parametersBuilder);
|
setAndroidParameters(m, parametersBuilder);
|
||||||
setIosParameters(m, parametersBuilder);
|
setIosParameters(m, parametersBuilder);
|
||||||
//setNavigationInfoParameters(m, parametersBuilder);
|
|
||||||
setSocialMetaTagParameters(m, parametersBuilder);
|
setSocialMetaTagParameters(m, parametersBuilder);
|
||||||
setAnalyticsParameters(m, parametersBuilder);
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Log.e(TAG, "error while building parameters " + e.getMessage());
|
Log.e(TAG, "error while building parameters " + e.getMessage());
|
||||||
|
@ -172,14 +167,14 @@ public class RNFirebaseLinks extends ReactContextBaseJavaModule implements Activ
|
||||||
if (androidParameters != null) {
|
if (androidParameters != null) {
|
||||||
DynamicLink.AndroidParameters.Builder androidParametersBuilder =
|
DynamicLink.AndroidParameters.Builder androidParametersBuilder =
|
||||||
androidParameters.containsKey("androidPackageName") ?
|
androidParameters.containsKey("androidPackageName") ?
|
||||||
new DynamicLink.AndroidParameters.Builder((String)androidParameters.get("androidPackageName")) :
|
new DynamicLink.AndroidParameters.Builder((String) androidParameters.get("androidPackageName")) :
|
||||||
new DynamicLink.AndroidParameters.Builder();
|
new DynamicLink.AndroidParameters.Builder();
|
||||||
|
|
||||||
if (androidParameters.containsKey("androidFallbackLink")) {
|
if (androidParameters.containsKey("androidFallbackLink")) {
|
||||||
androidParametersBuilder.setFallbackUrl(Uri.parse((String)androidParameters.get("androidFallbackLink")));
|
androidParametersBuilder.setFallbackUrl(Uri.parse((String) androidParameters.get("androidFallbackLink")));
|
||||||
}
|
}
|
||||||
if (androidParameters.containsKey("androidMinPackageVersionCode")) {
|
if (androidParameters.containsKey("androidMinPackageVersionCode")) {
|
||||||
androidParametersBuilder.setMinimumVersion(((Double)androidParameters.get("androidMinPackageVersionCode")).intValue());
|
androidParametersBuilder.setMinimumVersion(((Double) androidParameters.get("androidMinPackageVersionCode")).intValue());
|
||||||
}
|
}
|
||||||
parametersBuilder.setAndroidParameters(androidParametersBuilder.build());
|
parametersBuilder.setAndroidParameters(androidParametersBuilder.build());
|
||||||
}
|
}
|
||||||
|
@ -189,42 +184,29 @@ public class RNFirebaseLinks extends ReactContextBaseJavaModule implements Activ
|
||||||
Map<String, Object> iosParameters = (Map<String, Object>) m.get("iosInfo");
|
Map<String, Object> iosParameters = (Map<String, Object>) m.get("iosInfo");
|
||||||
//TODO: see what happens if bundleId is missing
|
//TODO: see what happens if bundleId is missing
|
||||||
if (iosParameters != null && iosParameters.containsKey("iosBundleId")) {
|
if (iosParameters != null && iosParameters.containsKey("iosBundleId")) {
|
||||||
DynamicLink.IosParameters.Builder iosParametersBuilder = new DynamicLink.IosParameters.Builder((String)iosParameters.get("iosBundleId"));
|
DynamicLink.IosParameters.Builder iosParametersBuilder = new DynamicLink.IosParameters.Builder((String) iosParameters.get("iosBundleId"));
|
||||||
if (iosParameters.containsKey("iosAppStoreId")) {
|
if (iosParameters.containsKey("iosAppStoreId")) {
|
||||||
iosParametersBuilder.setAppStoreId((String)iosParameters.get("iosAppStoreId"));
|
iosParametersBuilder.setAppStoreId((String) iosParameters.get("iosAppStoreId"));
|
||||||
}
|
}
|
||||||
if (iosParameters.containsKey("iosCustomScheme")) {
|
if (iosParameters.containsKey("iosCustomScheme")) {
|
||||||
iosParametersBuilder.setCustomScheme((String)iosParameters.get("iosCustomScheme"));
|
iosParametersBuilder.setCustomScheme((String) iosParameters.get("iosCustomScheme"));
|
||||||
}
|
}
|
||||||
if (iosParameters.containsKey("iosFallbackLink")) {
|
if (iosParameters.containsKey("iosFallbackLink")) {
|
||||||
iosParametersBuilder.setFallbackUrl(Uri.parse((String)iosParameters.get("iosFallbackLink")));
|
iosParametersBuilder.setFallbackUrl(Uri.parse((String) iosParameters.get("iosFallbackLink")));
|
||||||
}
|
}
|
||||||
if (iosParameters.containsKey("iosIpadBundleId")) {
|
if (iosParameters.containsKey("iosIpadBundleId")) {
|
||||||
iosParametersBuilder.setIpadBundleId((String)iosParameters.get("iosIpadBundleId"));
|
iosParametersBuilder.setIpadBundleId((String) iosParameters.get("iosIpadBundleId"));
|
||||||
}
|
}
|
||||||
if (iosParameters.containsKey("iosIpadFallbackLink")) {
|
if (iosParameters.containsKey("iosIpadFallbackLink")) {
|
||||||
iosParametersBuilder.setIpadFallbackUrl(Uri.parse((String)iosParameters.get("iosIpadFallbackLink")));
|
iosParametersBuilder.setIpadFallbackUrl(Uri.parse((String) iosParameters.get("iosIpadFallbackLink")));
|
||||||
}
|
}
|
||||||
if (iosParameters.containsKey("iosMinPackageVersionCode")) {
|
if (iosParameters.containsKey("iosMinPackageVersionCode")) {
|
||||||
iosParametersBuilder.setMinimumVersion((String)iosParameters.get("iosMinPackageVersionCode"));
|
iosParametersBuilder.setMinimumVersion((String) iosParameters.get("iosMinPackageVersionCode"));
|
||||||
}
|
}
|
||||||
parametersBuilder.setIosParameters(iosParametersBuilder.build());
|
parametersBuilder.setIosParameters(iosParametersBuilder.build());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// private void setNavigationInfoParameters(final Map<String, Object> m, final DynamicLink.Builder parametersBuilder) {
|
|
||||||
// Map<String, Object> navigationInfoParameters = (Map<String, Object>) m.get("navigationInfo");
|
|
||||||
// if (navigationInfoParameters != null) {
|
|
||||||
// DynamicLink.NavigationInfoParameters.Builder navigationInfoParametersBuilder =
|
|
||||||
// new DynamicLink.NavigationInfoParameters.Builder();
|
|
||||||
//
|
|
||||||
// if (navigationInfoParameters.containsKey("enableForcedRedirect")) {
|
|
||||||
// navigationInfoParametersBuilder.setForcedRedirectEnabled((boolean)navigationInfoParameters.get("enableForcedRedirect"));
|
|
||||||
// }
|
|
||||||
// parametersBuilder.setNavigationInfoParameters(navigationInfoParametersBuilder.build());
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
private void setSocialMetaTagParameters(final Map<String, Object> m, final DynamicLink.Builder parametersBuilder) {
|
private void setSocialMetaTagParameters(final Map<String, Object> m, final DynamicLink.Builder parametersBuilder) {
|
||||||
Map<String, Object> socialMetaTagParameters = (Map<String, Object>) m.get("socialMetaTagInfo");
|
Map<String, Object> socialMetaTagParameters = (Map<String, Object>) m.get("socialMetaTagInfo");
|
||||||
if (socialMetaTagParameters != null) {
|
if (socialMetaTagParameters != null) {
|
||||||
|
@ -232,67 +214,15 @@ public class RNFirebaseLinks extends ReactContextBaseJavaModule implements Activ
|
||||||
new DynamicLink.SocialMetaTagParameters.Builder();
|
new DynamicLink.SocialMetaTagParameters.Builder();
|
||||||
|
|
||||||
if (socialMetaTagParameters.containsKey("socialDescription")) {
|
if (socialMetaTagParameters.containsKey("socialDescription")) {
|
||||||
socialMetaTagParametersBuilder.setDescription((String)socialMetaTagParameters.get("socialDescription"));
|
socialMetaTagParametersBuilder.setDescription((String) socialMetaTagParameters.get("socialDescription"));
|
||||||
}
|
}
|
||||||
if (socialMetaTagParameters.containsKey("socialImageLink")) {
|
if (socialMetaTagParameters.containsKey("socialImageLink")) {
|
||||||
socialMetaTagParametersBuilder.setImageUrl(Uri.parse((String)socialMetaTagParameters.get("socialImageLink")));
|
socialMetaTagParametersBuilder.setImageUrl(Uri.parse((String) socialMetaTagParameters.get("socialImageLink")));
|
||||||
}
|
}
|
||||||
if (socialMetaTagParameters.containsKey("socialTitle")) {
|
if (socialMetaTagParameters.containsKey("socialTitle")) {
|
||||||
socialMetaTagParametersBuilder.setTitle((String)socialMetaTagParameters.get("socialTitle"));
|
socialMetaTagParametersBuilder.setTitle((String) socialMetaTagParameters.get("socialTitle"));
|
||||||
}
|
}
|
||||||
parametersBuilder.setSocialMetaTagParameters(socialMetaTagParametersBuilder.build());
|
parametersBuilder.setSocialMetaTagParameters(socialMetaTagParametersBuilder.build());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setAnalyticsParameters (final Map<String, Object> m, final DynamicLink.Builder parametersBuilder) {
|
|
||||||
Map<String, Object> analyticsParameters = (Map<String, Object>) m.get("analyticsInfo");
|
|
||||||
if (analyticsParameters != null) {
|
|
||||||
setGoogleAnalyticsParameters(analyticsParameters, parametersBuilder);
|
|
||||||
setItunesConnectAnalyticsParameters(analyticsParameters, parametersBuilder);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setGoogleAnalyticsParameters(final Map<String, Object> m, final DynamicLink.Builder parametersBuilder) {
|
|
||||||
Map<String, Object> googleAnalyticsParameters = (Map<String, Object>) m.get("googlePlayAnalytics");
|
|
||||||
if (googleAnalyticsParameters != null) {
|
|
||||||
DynamicLink.GoogleAnalyticsParameters.Builder googleAnalyticsParametersBuilder =
|
|
||||||
new DynamicLink.GoogleAnalyticsParameters.Builder();
|
|
||||||
|
|
||||||
if (googleAnalyticsParameters.containsKey("utmCampaign")) {
|
|
||||||
googleAnalyticsParametersBuilder.setCampaign((String)googleAnalyticsParameters.get("utmCampaign"));
|
|
||||||
}
|
|
||||||
if (googleAnalyticsParameters.containsKey("utmContent")) {
|
|
||||||
googleAnalyticsParametersBuilder.setContent((String)googleAnalyticsParameters.get("utmContent"));
|
|
||||||
}
|
|
||||||
if (googleAnalyticsParameters.containsKey("utmMedium")) {
|
|
||||||
googleAnalyticsParametersBuilder.setMedium((String)googleAnalyticsParameters.get("utmMedium"));
|
|
||||||
}
|
|
||||||
if (googleAnalyticsParameters.containsKey("utmSource")) {
|
|
||||||
googleAnalyticsParametersBuilder.setSource((String)googleAnalyticsParameters.get("utmSource"));
|
|
||||||
}
|
|
||||||
if (googleAnalyticsParameters.containsKey("utmTerm")) {
|
|
||||||
googleAnalyticsParametersBuilder.setTerm((String)googleAnalyticsParameters.get("utmTerm"));
|
|
||||||
}
|
|
||||||
parametersBuilder.setGoogleAnalyticsParameters(googleAnalyticsParametersBuilder.build());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setItunesConnectAnalyticsParameters(final Map<String, Object> m, final DynamicLink.Builder parametersBuilder) {
|
|
||||||
Map<String, Object> itunesConnectAnalyticsParameters = (Map<String, Object>) m.get("itunesConnectAnalytics");
|
|
||||||
if (itunesConnectAnalyticsParameters != null) {
|
|
||||||
DynamicLink.ItunesConnectAnalyticsParameters.Builder itunesConnectAnalyticsParametersBuilder =
|
|
||||||
new DynamicLink.ItunesConnectAnalyticsParameters.Builder();
|
|
||||||
|
|
||||||
if (itunesConnectAnalyticsParameters.containsKey("at")) {
|
|
||||||
itunesConnectAnalyticsParametersBuilder.setAffiliateToken((String)itunesConnectAnalyticsParameters.get("at"));
|
|
||||||
}
|
|
||||||
if (itunesConnectAnalyticsParameters.containsKey("ct")) {
|
|
||||||
itunesConnectAnalyticsParametersBuilder.setCampaignToken((String)itunesConnectAnalyticsParameters.get("ct"));
|
|
||||||
}
|
|
||||||
if (itunesConnectAnalyticsParameters.containsKey("pt")) {
|
|
||||||
itunesConnectAnalyticsParametersBuilder.setProviderToken((String)itunesConnectAnalyticsParameters.get("pt"));
|
|
||||||
}
|
|
||||||
parametersBuilder.setItunesConnectAnalyticsParameters(itunesConnectAnalyticsParametersBuilder.build());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,8 +7,8 @@
|
||||||
RCT_EXPORT_MODULE();
|
RCT_EXPORT_MODULE();
|
||||||
|
|
||||||
RCT_EXPORT_METHOD(createDynamicLink: (NSDictionary *) metadata resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
|
RCT_EXPORT_METHOD(createDynamicLink: (NSDictionary *) metadata resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
|
||||||
FIRDynamicLinkComponents *components = [self setDynamicLinkBuilderFromMap:metadata];
|
FIRDynamicLinkComponents *components = [self getDynamicLinkComponentsFromMetadata:metadata];
|
||||||
|
|
||||||
if (components == nil) {
|
if (components == nil) {
|
||||||
reject(@"links/failure", @"error", nil);
|
reject(@"links/failure", @"error", nil);
|
||||||
} else {
|
} else {
|
||||||
|
@ -19,8 +19,8 @@ RCT_EXPORT_METHOD(createDynamicLink: (NSDictionary *) metadata resolver:(RCTProm
|
||||||
}
|
}
|
||||||
|
|
||||||
RCT_EXPORT_METHOD(createShortDynamicLink: (NSDictionary *) metadata resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
|
RCT_EXPORT_METHOD(createShortDynamicLink: (NSDictionary *) metadata resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject) {
|
||||||
FIRDynamicLinkComponents *components = [self setDynamicLinkBuilderFromMap:metadata];
|
FIRDynamicLinkComponents *components = [self getDynamicLinkComponentsFromMetadata:metadata];
|
||||||
|
|
||||||
[components shortenWithCompletion:^(NSURL *_Nullable shortURL,
|
[components shortenWithCompletion:^(NSURL *_Nullable shortURL,
|
||||||
NSArray *_Nullable warnings,
|
NSArray *_Nullable warnings,
|
||||||
NSError *_Nullable error) {
|
NSError *_Nullable error) {
|
||||||
|
@ -35,7 +35,7 @@ RCT_EXPORT_METHOD(createShortDynamicLink: (NSDictionary *) metadata resolver:(RC
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
- (FIRDynamicLinkComponents *)setDynamicLinkBuilderFromMap:(NSDictionary *)metadata {
|
- (FIRDynamicLinkComponents *)getDynamicLinkComponentsFromMetadata:(NSDictionary *)metadata {
|
||||||
NSURL *link = [NSURL URLWithString:metadata[@"link"]];
|
NSURL *link = [NSURL URLWithString:metadata[@"link"]];
|
||||||
FIRDynamicLinkComponents *components =
|
FIRDynamicLinkComponents *components =
|
||||||
[FIRDynamicLinkComponents componentsWithLink:link domain:metadata[@"dynamicLinkDomain"]];
|
[FIRDynamicLinkComponents componentsWithLink:link domain:metadata[@"dynamicLinkDomain"]];
|
||||||
|
|
179
lib/firebase.js
179
lib/firebase.js
|
@ -2,121 +2,106 @@
|
||||||
* @providesModule Firebase
|
* @providesModule Firebase
|
||||||
* @flow
|
* @flow
|
||||||
*/
|
*/
|
||||||
import { NativeModules } from 'react-native'
|
import { NativeModules } from 'react-native';
|
||||||
|
|
||||||
import Log from './utils/log'
|
import Log from './utils/log';
|
||||||
import { isObject } from './utils'
|
import { isObject } from './utils';
|
||||||
|
|
||||||
// modules
|
// modules
|
||||||
import Auth, { statics as AuthStatics } from './modules/auth'
|
import Auth, { statics as AuthStatics } from './modules/auth';
|
||||||
import Storage, { statics as StorageStatics } from './modules/storage'
|
import Storage, { statics as StorageStatics } from './modules/storage';
|
||||||
import Database, { statics as DatabaseStatics } from './modules/database'
|
import Database, { statics as DatabaseStatics } from './modules/database';
|
||||||
import Messaging, { statics as MessagingStatics } from './modules/messaging'
|
import Messaging, { statics as MessagingStatics } from './modules/messaging';
|
||||||
import Analytics from './modules/analytics'
|
import Analytics from './modules/analytics';
|
||||||
import Crash from './modules/crash'
|
import Crash from './modules/crash';
|
||||||
import RemoteConfig from './modules/config'
|
import RemoteConfig from './modules/config';
|
||||||
import Performance from './modules/perf'
|
import Performance from './modules/perf';
|
||||||
import AdMob, { statics as AdMobStatics } from './modules/admob'
|
import AdMob, { statics as AdMobStatics } from './modules/admob';
|
||||||
import Links, { statics as LinksStatics } from './modules/links'
|
import Links, { statics as LinksStatics } from './modules/links';
|
||||||
|
|
||||||
const instances: Object = { default: null }
|
const instances: Object = { default: null };
|
||||||
const FirebaseModule = NativeModules.RNFirebase
|
const FirebaseModule = NativeModules.RNFirebase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @class Firebase
|
* @class Firebase
|
||||||
*/
|
*/
|
||||||
export default class Firebase {
|
export default class Firebase {
|
||||||
_log: ?Object
|
_log: ?Object;
|
||||||
_auth: ?Object
|
_auth: ?Object;
|
||||||
_store: ?Object
|
_store: ?Object;
|
||||||
_storage: ?Object
|
_storage: ?Object;
|
||||||
_database: ?Object
|
_database: ?Object;
|
||||||
_presence: ?Object
|
_presence: ?Object;
|
||||||
_analytics: ?Object
|
_analytics: ?Object;
|
||||||
_constants: ?Object
|
_constants: ?Object;
|
||||||
_messaging: ?Object
|
_messaging: ?Object;
|
||||||
_config: ?Object
|
_config: ?Object;
|
||||||
_crash: ?Object
|
_crash: ?Object;
|
||||||
_perf: ?Object
|
_perf: ?Object;
|
||||||
_admob: ?Object
|
_admob: ?Object;
|
||||||
_links: ?Object
|
_links: ?Object;
|
||||||
|
|
||||||
auth: Function
|
auth: Function;
|
||||||
crash: Function
|
crash: Function;
|
||||||
storage: Function
|
storage: Function;
|
||||||
database: Function
|
database: Function;
|
||||||
analytics: Function
|
analytics: Function;
|
||||||
messaging: Function
|
messaging: Function;
|
||||||
config: Function
|
config: Function;
|
||||||
perf: Function
|
perf: Function;
|
||||||
admob: Function
|
admob: Function;
|
||||||
links: Function
|
links: Function;
|
||||||
|
|
||||||
eventHandlers: Object
|
eventHandlers: Object;
|
||||||
debug: boolean
|
debug: boolean;
|
||||||
options: {
|
options: {
|
||||||
errorOnMissingPlayServices: boolean,
|
errorOnMissingPlayServices: boolean,
|
||||||
debug?: boolean,
|
debug?: boolean,
|
||||||
persistence?: boolean,
|
persistence?: boolean
|
||||||
}
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param options
|
* @param options
|
||||||
*/
|
*/
|
||||||
constructor(options: Object = {}) {
|
constructor(options: Object = {}) {
|
||||||
this.eventHandlers = {}
|
this.eventHandlers = {};
|
||||||
this.debug = options.debug || false
|
this.debug = options.debug || false;
|
||||||
this.options = Object.assign(
|
this.options = Object.assign({ errorOnMissingPlayServices: true, promptOnMissingPlayServices: true }, options);
|
||||||
{ errorOnMissingPlayServices: true, promptOnMissingPlayServices: true },
|
|
||||||
options
|
|
||||||
)
|
|
||||||
|
|
||||||
if (this.debug) {
|
if (this.debug) {
|
||||||
Log.enable(this.debug)
|
Log.enable(this.debug);
|
||||||
}
|
}
|
||||||
|
|
||||||
this._log = new Log('firebase')
|
this._log = new Log('firebase');
|
||||||
|
|
||||||
if (!this.googleApiAvailability.isAvailable) {
|
if (!this.googleApiAvailability.isAvailable) {
|
||||||
if (
|
if (this.options.promptOnMissingPlayServices && this.googleApiAvailability.isUserResolvableError) {
|
||||||
this.options.promptOnMissingPlayServices &&
|
FirebaseModule.promptPlayServices();
|
||||||
this.googleApiAvailability.isUserResolvableError
|
|
||||||
) {
|
|
||||||
FirebaseModule.promptPlayServices()
|
|
||||||
} else {
|
} else {
|
||||||
const error = `Google Play Services is required to run this application but no valid installation was found (Code ${this
|
const error = `Google Play Services is required to run this application but no valid installation was found (Code ${this.googleApiAvailability.status}).`;
|
||||||
.googleApiAvailability.status}).`
|
|
||||||
if (this.options.errorOnMissingPlayServices) {
|
if (this.options.errorOnMissingPlayServices) {
|
||||||
throw new Error(error)
|
throw new Error(error);
|
||||||
} else {
|
} else {
|
||||||
console.warn(error)
|
console.warn(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.auth = this._staticsOrInstance('auth', AuthStatics, Auth)
|
this.auth = this._staticsOrInstance('auth', AuthStatics, Auth);
|
||||||
this.storage = this._staticsOrInstance('storage', StorageStatics, Storage)
|
this.storage = this._staticsOrInstance('storage', StorageStatics, Storage);
|
||||||
this.database = this._staticsOrInstance(
|
this.database = this._staticsOrInstance('database', DatabaseStatics, Database);
|
||||||
'database',
|
this.messaging = this._staticsOrInstance('messaging', MessagingStatics, Messaging);
|
||||||
DatabaseStatics,
|
this.analytics = this._staticsOrInstance('analytics', {}, Analytics);
|
||||||
Database
|
this.crash = this._staticsOrInstance('crash', {}, Crash);
|
||||||
)
|
this.config = this._staticsOrInstance('config', {}, RemoteConfig);
|
||||||
this.messaging = this._staticsOrInstance(
|
this.perf = this._staticsOrInstance('perf', {}, Performance);
|
||||||
'messaging',
|
this.admob = this._staticsOrInstance('admob', AdMobStatics, AdMob);
|
||||||
MessagingStatics,
|
this.links = this._staticsOrInstance('links', LinksStatics, Links);
|
||||||
Messaging
|
|
||||||
)
|
|
||||||
this.analytics = this._staticsOrInstance('analytics', {}, Analytics)
|
|
||||||
this.crash = this._staticsOrInstance('crash', {}, Crash)
|
|
||||||
this.config = this._staticsOrInstance('config', {}, RemoteConfig)
|
|
||||||
this.perf = this._staticsOrInstance('perf', {}, Performance)
|
|
||||||
this.admob = this._staticsOrInstance('admob', AdMobStatics, AdMob)
|
|
||||||
this.links = this._staticsOrInstance('links', LinksStatics, Links)
|
|
||||||
|
|
||||||
// init auth to start listeners
|
// init auth to start listeners
|
||||||
if (NativeModules.RNFirebaseAuth) {
|
if (NativeModules.RNFirebaseAuth) {
|
||||||
this.auth()
|
this.auth();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,29 +113,23 @@ export default class Firebase {
|
||||||
*/
|
*/
|
||||||
static initializeApp(options: Object = {}, name: string = 'default') {
|
static initializeApp(options: Object = {}, name: string = 'default') {
|
||||||
if (!isObject(options)) {
|
if (!isObject(options)) {
|
||||||
throw new Error(
|
throw new Error('Firebase.initializeApp(options <- requires a configuration object');
|
||||||
'Firebase.initializeApp(options <- requires a configuration object'
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof name !== 'string') {
|
if (typeof name !== 'string') {
|
||||||
throw new Error(
|
throw new Error('Firebase.initializeApp(options, name <- requires a string value');
|
||||||
'Firebase.initializeApp(options, name <- requires a string value'
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (name !== 'default') {
|
if (name !== 'default') {
|
||||||
throw new Error(
|
throw new Error('RNFirebase currently only supports one instance of firebase - the default one.');
|
||||||
'RNFirebase currently only supports one instance of firebase - the default one.'
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!instances[name]) instances[name] = new Firebase(options)
|
if (!instances[name]) instances[name] = new Firebase(options);
|
||||||
return instances[name]
|
return instances[name];
|
||||||
}
|
}
|
||||||
|
|
||||||
get apps(): Array<string> {
|
get apps(): Array<string> {
|
||||||
return Object.keys(instances)
|
return Object.keys(instances);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -159,16 +138,14 @@ export default class Firebase {
|
||||||
*/
|
*/
|
||||||
get googleApiAvailability(): GoogleApiAvailabilityType {
|
get googleApiAvailability(): GoogleApiAvailabilityType {
|
||||||
// if not available then return a fake object for ios - saves doing platform specific logic.
|
// if not available then return a fake object for ios - saves doing platform specific logic.
|
||||||
return (
|
return FirebaseModule.googleApiAvailability || { isAvailable: true, status: 0 };
|
||||||
FirebaseModule.googleApiAvailability || { isAvailable: true, status: 0 }
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Logger
|
* Logger
|
||||||
*/
|
*/
|
||||||
get log(): Log {
|
get log(): Log {
|
||||||
return this._log
|
return this._log;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -181,19 +158,19 @@ export default class Firebase {
|
||||||
*/
|
*/
|
||||||
_staticsOrInstance(name, statics, InstanceClass): Function {
|
_staticsOrInstance(name, statics, InstanceClass): Function {
|
||||||
const getInstance = () => {
|
const getInstance = () => {
|
||||||
const internalPropName = `_${name}`
|
const internalPropName = `_${name}`;
|
||||||
|
|
||||||
// $FlowFixMe
|
// $FlowFixMe
|
||||||
if (!this[internalPropName]) {
|
if (!this[internalPropName]) {
|
||||||
// $FlowFixMe
|
// $FlowFixMe
|
||||||
this[internalPropName] = new InstanceClass(this)
|
this[internalPropName] = new InstanceClass(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
// $FlowFixMe
|
// $FlowFixMe
|
||||||
return this[internalPropName]
|
return this[internalPropName];
|
||||||
}
|
};
|
||||||
|
|
||||||
Object.assign(getInstance, statics || {})
|
Object.assign(getInstance, statics || {});
|
||||||
return getInstance
|
return getInstance;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue