diff --git a/.npmignore b/.npmignore
index 0890a2e7..d2e4626d 100644
--- a/.npmignore
+++ b/.npmignore
@@ -75,9 +75,15 @@ coverage
yarn.lock
tests
bridge/
-lib/.watchmanconfig
buddybuild_postclone.sh
bin/test.js
.github
example
codorials
+.vscode
+.nyc_output
+React-Native-Firebase.svg
+CONTRIBUTING.md
+CODE_OF_CONDUCT.md
+android/.settings
+README.md
diff --git a/android/src/main/java/io/invertase/firebase/notifications/RNFirebaseNotificationManager.java b/android/src/main/java/io/invertase/firebase/notifications/RNFirebaseNotificationManager.java
index 948ba9bd..185dc4d5 100644
--- a/android/src/main/java/io/invertase/firebase/notifications/RNFirebaseNotificationManager.java
+++ b/android/src/main/java/io/invertase/firebase/notifications/RNFirebaseNotificationManager.java
@@ -36,6 +36,7 @@ import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
+import java.util.Calendar;
import java.util.List;
import java.util.Map;
@@ -357,6 +358,21 @@ public class RNFirebaseNotificationManager {
notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
if (schedule.containsKey("repeatInterval")) {
+ // If fireDate you specify is in the past, the alarm triggers immediately.
+ // So we need to adjust the time for correct operation.
+ if (fireDate < System.currentTimeMillis()) {
+ Calendar newFireDate = Calendar.getInstance();
+ Calendar currentFireDate = Calendar.getInstance();
+ currentFireDate.setTimeInMillis(fireDate);
+
+ newFireDate.add(Calendar.DATE, 1);
+ newFireDate.set(Calendar.HOUR_OF_DAY, currentFireDate.get(Calendar.HOUR_OF_DAY));
+ newFireDate.set(Calendar.MINUTE, currentFireDate.get(Calendar.MINUTE));
+ newFireDate.set(Calendar.SECOND, currentFireDate.get(Calendar.SECOND));
+
+ fireDate = newFireDate.getTimeInMillis();
+ }
+
Long interval = null;
switch (schedule.getString("repeatInterval")) {
case "minute":
diff --git a/bridge/android/app/src/main/AndroidManifest.xml b/bridge/android/app/src/main/AndroidManifest.xml
index b016f89e..61b4e13e 100755
--- a/bridge/android/app/src/main/AndroidManifest.xml
+++ b/bridge/android/app/src/main/AndroidManifest.xml
@@ -65,18 +65,45 @@
-
+
+ android:scheme="http"
+ android:host="je786.app.goo.gl" />
+
+
+
+
+
+
+
+ android:scheme="http"
+ android:host="je786.app.goo.gl" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/bridge/android/app/src/main/java/com/testing/MainActivity.java b/bridge/android/app/src/main/java/com/testing/MainActivity.java
index 286ab301..b0329405 100755
--- a/bridge/android/app/src/main/java/com/testing/MainActivity.java
+++ b/bridge/android/app/src/main/java/com/testing/MainActivity.java
@@ -32,6 +32,10 @@ public class MainActivity extends ReactActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
checkWindowPerms();
+ // ATTENTION: This was auto-generated to handle app links.
+ Intent appLinkIntent = getIntent();
+ String appLinkAction = appLinkIntent.getAction();
+ Uri appLinkData = appLinkIntent.getData();
}
public void checkWindowPerms() {
diff --git a/bridge/android/build.gradle b/bridge/android/build.gradle
index 8e7ee8c7..1fdb7242 100755
--- a/bridge/android/build.gradle
+++ b/bridge/android/build.gradle
@@ -7,7 +7,7 @@ buildscript {
}
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.1.2'
+ classpath 'com.android.tools.build:gradle:3.1.3'
classpath 'com.google.gms:google-services:4.0.1'
classpath 'com.google.firebase:firebase-plugins:1.1.1'
classpath 'io.fabric.tools:gradle:1.25.4'
diff --git a/bridge/e2e/storage/storage.e2e.js b/bridge/e2e/storage/storage.e2e.js
index f5211185..50f28f5b 100644
--- a/bridge/e2e/storage/storage.e2e.js
+++ b/bridge/e2e/storage/storage.e2e.js
@@ -49,6 +49,18 @@ describe('storage()', () => {
.downloadFile(
`${firebase.storage.Native.DOCUMENT_DIRECTORY_PATH}/ok.jpeg`
);
+ await firebase
+ .storage()
+ .ref('/cat.gif')
+ .downloadFile(
+ `${firebase.storage.Native.DOCUMENT_DIRECTORY_PATH}/cat.gif`
+ );
+ await firebase
+ .storage()
+ .ref('/hei.heic')
+ .downloadFile(
+ `${firebase.storage.Native.DOCUMENT_DIRECTORY_PATH}/hei.heic`
+ );
});
it('errors if permission denied', async () => {
@@ -75,6 +87,20 @@ describe('storage()', () => {
`${firebase.storage.Native.DOCUMENT_DIRECTORY_PATH}/ok.jpeg`
);
+ await firebase
+ .storage()
+ .ref('/uploadCat.gif')
+ .putFile(
+ `${firebase.storage.Native.DOCUMENT_DIRECTORY_PATH}/cat.gif`
+ );
+
+ await firebase
+ .storage()
+ .ref('/uploadHei.heic')
+ .putFile(
+ `${firebase.storage.Native.DOCUMENT_DIRECTORY_PATH}/hei.heic`
+ );
+
uploadTaskSnapshot.state.should.eql(firebase.storage.TaskState.SUCCESS);
uploadTaskSnapshot.bytesTransferred.should.eql(
uploadTaskSnapshot.totalBytes
diff --git a/bridge/ios/Podfile b/bridge/ios/Podfile
index e54784fd..5bd2f566 100644
--- a/bridge/ios/Podfile
+++ b/bridge/ios/Podfile
@@ -18,21 +18,21 @@ target 'testing' do
'RCTWebSocket',
]
- pod 'Firebase/AdMob'
- pod 'Firebase/Auth'
- pod 'Firebase/Core'
- pod 'Firebase/Crash'
- pod 'Firebase/Database'
- pod 'Firebase/Functions'
- pod 'Firebase/DynamicLinks'
- pod 'Firebase/Firestore'
- pod 'Firebase/Invites'
- pod 'Firebase/Messaging'
- pod 'Firebase/RemoteConfig'
- pod 'Firebase/Storage'
- pod 'Firebase/Performance'
+ pod 'Firebase/AdMob', '~> 5.3.0'
+ pod 'Firebase/Auth', '~> 5.3.0'
+ pod 'Firebase/Core', '~> 5.3.0'
+ pod 'Firebase/Crash', '~> 5.3.0'
+ pod 'Firebase/Database', '~> 5.3.0'
+ pod 'Firebase/Functions', '~> 5.3.0'
+ pod 'Firebase/DynamicLinks', '~> 5.3.0'
+ pod 'Firebase/Firestore', '~> 5.3.0'
+ pod 'Firebase/Invites', '~> 5.3.0'
+ pod 'Firebase/Messaging', '~> 5.3.0'
+ pod 'Firebase/RemoteConfig', '~> 5.3.0'
+ pod 'Firebase/Storage', '~> 5.3.0'
+ pod 'Firebase/Performance', '~> 5.3.0'
pod 'Fabric', '~> 1.7.5'
- pod 'Crashlytics', '~> 3.10.1'
+ pod 'Crashlytics', '~> 3.10.4'
pod 'RNFirebase', :path => '../../ios/RNFirebase.podspec'
diff --git a/bridge/ios/Podfile.lock b/bridge/ios/Podfile.lock
index da0abb4e..4e947e5f 100644
--- a/bridge/ios/Podfile.lock
+++ b/bridge/ios/Podfile.lock
@@ -5,9 +5,9 @@ PODS:
- BoringSSL/Implementation (10.0.5):
- BoringSSL/Interface (= 10.0.5)
- BoringSSL/Interface (10.0.5)
- - Crashlytics (3.10.2):
- - Fabric (~> 1.7.7)
- - Fabric (1.7.7)
+ - Crashlytics (3.10.4):
+ - Fabric (~> 1.7.9)
+ - Fabric (1.7.9)
- Firebase/AdMob (5.3.0):
- Firebase/Core
- Google-Mobile-Ads-SDK (= 7.31.0)
@@ -162,25 +162,27 @@ PODS:
- GoogleToolboxForMac/Defines (= 2.1.4)
- "GoogleToolboxForMac/NSDictionary+URLArguments (= 2.1.4)"
- "GoogleToolboxForMac/NSString+URLArguments (= 2.1.4)"
- - gRPC (1.12.0):
- - gRPC-RxLibrary (= 1.12.0)
- - gRPC/Main (= 1.12.0)
- - gRPC-Core (1.12.0):
- - gRPC-Core/Implementation (= 1.12.0)
- - gRPC-Core/Interface (= 1.12.0)
- - gRPC-Core/Implementation (1.12.0):
+ - gRPC (1.13.0):
+ - gRPC-RxLibrary (= 1.13.0)
+ - gRPC/Main (= 1.13.0)
+ - gRPC-Core (1.13.0):
+ - gRPC-Core/Implementation (= 1.13.0)
+ - gRPC-Core/Interface (= 1.13.0)
+ - gRPC-Core/Implementation (1.13.0):
- BoringSSL (~> 10.0)
- - gRPC-Core/Interface (= 1.12.0)
+ - gRPC-Core/Interface (= 1.13.0)
- nanopb (~> 0.3)
- - gRPC-Core/Interface (1.12.0)
- - gRPC-ProtoRPC (1.12.0):
- - gRPC (= 1.12.0)
- - gRPC-RxLibrary (= 1.12.0)
+ - gRPC-Core/Interface (1.13.0)
+ - gRPC-ProtoRPC (1.13.0):
+ - gRPC-ProtoRPC/Main (= 1.13.0)
+ - gRPC-ProtoRPC/Main (1.13.0):
+ - gRPC (= 1.13.0)
+ - gRPC-RxLibrary (= 1.13.0)
- Protobuf (~> 3.0)
- - gRPC-RxLibrary (1.12.0)
- - gRPC/Main (1.12.0):
- - gRPC-Core (= 1.12.0)
- - gRPC-RxLibrary (= 1.12.0)
+ - gRPC-RxLibrary (1.13.0)
+ - gRPC/Main (1.13.0):
+ - gRPC-Core (= 1.13.0)
+ - gRPC-RxLibrary (= 1.13.0)
- GTMOAuth2 (1.1.6):
- GTMSessionFetcher (~> 1.1)
- GTMSessionFetcher (1.1.15):
@@ -216,21 +218,21 @@ PODS:
- yoga (0.55.3.React)
DEPENDENCIES:
- - Crashlytics (~> 3.10.1)
+ - Crashlytics (~> 3.10.4)
- Fabric (~> 1.7.5)
- - Firebase/AdMob
- - Firebase/Auth
- - Firebase/Core
- - Firebase/Crash
- - Firebase/Database
- - Firebase/DynamicLinks
- - Firebase/Firestore
- - Firebase/Functions
- - Firebase/Invites
- - Firebase/Messaging
- - Firebase/Performance
- - Firebase/RemoteConfig
- - Firebase/Storage
+ - Firebase/AdMob (~> 5.3.0)
+ - Firebase/Auth (~> 5.3.0)
+ - Firebase/Core (~> 5.3.0)
+ - Firebase/Crash (~> 5.3.0)
+ - Firebase/Database (~> 5.3.0)
+ - Firebase/DynamicLinks (~> 5.3.0)
+ - Firebase/Firestore (~> 5.3.0)
+ - Firebase/Functions (~> 5.3.0)
+ - Firebase/Invites (~> 5.3.0)
+ - Firebase/Messaging (~> 5.3.0)
+ - Firebase/Performance (~> 5.3.0)
+ - Firebase/RemoteConfig (~> 5.3.0)
+ - Firebase/Storage (~> 5.3.0)
- React/Core (from `../node_modules/react-native`)
- React/RCTNetwork (from `../node_modules/react-native`)
- React/RCTText (from `../node_modules/react-native`)
@@ -284,8 +286,8 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS:
BoringSSL: cf3f1793eb6e3c445c4d150456341f149c268a35
- Crashlytics: 0360624eea1c978a743feddb2fb1ef8b37fb7a0d
- Fabric: bda89e242bce1b7b8ab264248cf3407774ce0095
+ Crashlytics: 915a7787b84f635fb2a81f92a90e265c2c413f76
+ Fabric: a2917d3895e4c1569b9c3170de7320ea1b1e6661
Firebase: 68afeeb05461db02d7c9e3215cda28068670f4aa
FirebaseABTesting: 1f50b8d50f5e3469eea54e7463a7b7fe221d1f5e
FirebaseAnalytics: b3628aea54c50464c32c393fb2ea032566e7ecc2
@@ -307,10 +309,10 @@ SPEC CHECKSUMS:
GoogleAPIClientForREST: f7951c455df271bc6259b3ddb4073d0026475ccf
GoogleSignIn: d9ef55b10f0aa401a5de2747f59b725e4b9732ac
GoogleToolboxForMac: 91c824d21e85b31c2aae9bb011c5027c9b4e738f
- gRPC: 9362451032695e2dfb7bafcd3740e3a27939e4ff
- gRPC-Core: 9696b220565b283e021cf2722d473a4a74b7622a
- gRPC-ProtoRPC: a1bd56fb1991a8dae4581250d7259eddabb66779
- gRPC-RxLibrary: 1ed5314e8b38cd6e55c9bfa048387136ae925ce9
+ gRPC: 81b990caa01d7c32605d300c2ffd1b5ba0ef9e49
+ gRPC-Core: a56b086a8ef5ced6f6ba5be5bc0a63fca185015a
+ gRPC-ProtoRPC: 842797fbe05dfcf891afb4a5048e5ccf5f06ef86
+ gRPC-RxLibrary: fa6852f98d6ec0b73c0ec2f6406c26943099d501
GTMOAuth2: c77fe325e4acd453837e72d91e3b5f13116857b2
GTMSessionFetcher: 5fa5b80fd20e439ef5f545fb2cb3ca6c6714caa2
leveldb-library: 08cba283675b7ed2d99629a4bc5fd052cd2bb6a5
@@ -320,6 +322,6 @@ SPEC CHECKSUMS:
RNFirebase: 2b25fd2e60269f26bb0a76c71dcc942b35a77df0
yoga: a23273df0088bf7f2bb7e5d7b00044ea57a2a54a
-PODFILE CHECKSUM: 582ceaad051470812ad9203e13b5ea8ad20c78ac
+PODFILE CHECKSUM: af3286375d5c28aa5d912b64dee23c8f7c4f9282
COCOAPODS: 1.5.3
diff --git a/bridge/package.json b/bridge/package.json
index 1b75558f..f81df1e8 100755
--- a/bridge/package.json
+++ b/bridge/package.json
@@ -13,7 +13,7 @@
"test-android-reuse": "detox test --configuration android.emu.debug --reuse",
"test-android-cover": "nyc detox test --configuration android.emu.debug",
"test-android-cover-reuse": "nyc detox test --configuration android.emu.debug --reuse",
- "test-ios": "detox test --configuration ios.sim.debug",
+ "test-ios": "detox test --configuration ios.sim.debug --loglevel warn",
"test-ios-reuse": "detox test --configuration ios.sim.debug --reuse --loglevel warn",
"test-ios-cover": "nyc detox test --configuration ios.sim.debug",
"test-ios-cover-reuse": "nyc detox test --configuration ios.sim.debug --reuse --loglevel warn",
diff --git a/ios/RNFirebase/fabric/crashlytics/RNFirebaseCrashlytics.h b/ios/RNFirebase/fabric/crashlytics/RNFirebaseCrashlytics.h
index c529237a..b7ddcda1 100644
--- a/ios/RNFirebase/fabric/crashlytics/RNFirebaseCrashlytics.h
+++ b/ios/RNFirebase/fabric/crashlytics/RNFirebaseCrashlytics.h
@@ -2,7 +2,7 @@
#define RNFirebaseCrashlytics_h
#import
-#if __has_include()
+#if __has_include()
#import
@interface RNFirebaseCrashlytics : NSObject {
diff --git a/ios/RNFirebase/fabric/crashlytics/RNFirebaseCrashlytics.m b/ios/RNFirebase/fabric/crashlytics/RNFirebaseCrashlytics.m
index 393f77a1..526c9c0f 100644
--- a/ios/RNFirebase/fabric/crashlytics/RNFirebaseCrashlytics.m
+++ b/ios/RNFirebase/fabric/crashlytics/RNFirebaseCrashlytics.m
@@ -1,7 +1,7 @@
#import "RNFirebaseCrashlytics.h"
-#if __has_include()
-#import
+#if __has_include()
+#import
@implementation RNFirebaseCrashlytics
RCT_EXPORT_MODULE();
diff --git a/ios/RNFirebase/instanceid/RNFirebaseInstanceId.m b/ios/RNFirebase/instanceid/RNFirebaseInstanceId.m
index 2720036b..80d79a6e 100644
--- a/ios/RNFirebase/instanceid/RNFirebaseInstanceId.m
+++ b/ios/RNFirebase/instanceid/RNFirebaseInstanceId.m
@@ -1,7 +1,7 @@
#import "RNFirebaseInstanceId.h"
#if __has_include()
-#import
+//#import
#import
@implementation RNFirebaseInstanceId
@@ -32,9 +32,9 @@ RCT_EXPORT_METHOD(getToken:(NSString *)authorizedEntity
resolver:(RCTPromiseResolveBlock)resolve
rejecter:(RCTPromiseRejectBlock)reject) {
NSDictionary * options = nil;
- if ([FIRMessaging messaging].APNSToken) {
- options = @{@"apns_token": [FIRMessaging messaging].APNSToken};
- }
+// if ([FIRMessaging messaging].APNSToken) {
+// options = @{@"apns_token": [FIRMessaging messaging].APNSToken};
+// }
[[FIRInstanceID instanceID] tokenWithAuthorizedEntity:authorizedEntity scope:scope options:options handler:^(NSString * _Nullable identity, NSError * _Nullable error) {
if (error) {
reject(@"instance_id_error", @"Failed to getToken", error);
diff --git a/lib/modules/auth/phone/PhoneAuthListener.js b/lib/modules/auth/phone/PhoneAuthListener.js
index 36a8a2ac..982a2e10 100644
--- a/lib/modules/auth/phone/PhoneAuthListener.js
+++ b/lib/modules/auth/phone/PhoneAuthListener.js
@@ -32,6 +32,7 @@ export default class PhoneAuthListener {
_timeout: number;
_publicEvents: Object;
_internalEvents: Object;
+ _forceResending: boolean;
_reject: Function | null;
_resolve: Function | null;
_credential: Object | null;
diff --git a/lib/modules/database/Reference.js b/lib/modules/database/Reference.js
index 72171865..1811a23f 100644
--- a/lib/modules/database/Reference.js
+++ b/lib/modules/database/Reference.js
@@ -299,15 +299,15 @@ export default class Reference extends ReferenceBase {
* @param onComplete
* @returns {*}
*/
- push(value: any, onComplete?: Function): ThenableReference {
+ push(value: any, onComplete?: Function): Reference | Promise {
if (value === null || value === undefined) {
- return new ThenableReference(
+ return new Reference(
this._database,
`${this.path}/${generatePushID(this._database._serverTimeOffset)}`
);
}
- const newRef = new ThenableReference(
+ const newRef = new Reference(
this._database,
`${this.path}/${generatePushID(this._database._serverTimeOffset)}`
);
@@ -894,10 +894,10 @@ export default class Reference extends ReferenceBase {
}
// eslint-disable-next-line no-unused-vars
-declare class ThenableReference<+R> extends Reference {
- then(
- onFulfill?: (value: R) => Promise | U,
- onReject?: (error: any) => Promise | U
- ): Promise;
- catch(onReject?: (error: any) => Promise | U): Promise;
-}
+// class ThenableReference<+R> extends Reference {
+// then(
+// onFulfill?: (value: R) => Promise | U,
+// onReject?: (error: any) => Promise | U
+// ): Promise;
+// catch(onReject?: (error: any) => Promise | U): Promise;
+// }
diff --git a/lib/modules/firestore/Query.js b/lib/modules/firestore/Query.js
index 45827019..56164fa0 100644
--- a/lib/modules/firestore/Query.js
+++ b/lib/modules/firestore/Query.js
@@ -13,7 +13,12 @@ import { getNativeModule } from '../../utils/native';
import type Firestore from './';
import type Path from './Path';
-import type { MetadataChanges, QueryDirection, QueryOperator } from './types';
+import type {
+ MetadataChanges,
+ QueryDirection,
+ QueryOperator,
+ GetOptions,
+} from './types';
const DIRECTIONS: { [QueryDirection]: string } = {
ASC: 'ASCENDING',
diff --git a/lib/modules/firestore/types.js b/lib/modules/firestore/types.js
index 6ca120d0..fa97342b 100644
--- a/lib/modules/firestore/types.js
+++ b/lib/modules/firestore/types.js
@@ -27,7 +27,7 @@ export type NativeDocumentChange = {
document: NativeDocumentSnapshot,
newIndex: number,
oldIndex: number,
- type: string,
+ type: 'added' | 'modified' | 'removed',
};
export type NativeDocumentSnapshot = {
diff --git a/lib/utils/index.js b/lib/utils/index.js
index 5680419e..ab7361ab 100644
--- a/lib/utils/index.js
+++ b/lib/utils/index.js
@@ -196,6 +196,7 @@ export function noop(): void {}
* @returns {*}
*/
export function stripTrailingSlash(str: string): string {
+ if (!isString(str)) return str;
return str.endsWith('/') ? str.slice(0, -1) : str;
}
diff --git a/package-lock.json b/package-lock.json
index 4282e0ca..dd49450f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "react-native-firebase",
- "version": "4.2.0",
+ "version": "4.3.4",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
diff --git a/package.json b/package.json
index 6d099010..882d74cb 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "react-native-firebase",
- "version": "4.2.0",
+ "version": "4.3.4",
"author": "Invertase (http://invertase.io)",
"description": "A well tested, feature rich Firebase implementation for React Native, supporting iOS & Android. Individual module support for Admob, Analytics, Auth, Crash Reporting, Cloud Firestore, Database, Dynamic Links, Functions, Messaging (FCM), Remote Config, Storage and more.",
"main": "dist/index.js",