diff --git a/native/android/app/src/main/AndroidManifest.xml b/native/android/app/src/main/AndroidManifest.xml index cdbc142d2..0d1e9d9af 100644 --- a/native/android/app/src/main/AndroidManifest.xml +++ b/native/android/app/src/main/AndroidManifest.xml @@ -1,68 +1,69 @@ diff --git a/native/android/build.gradle b/native/android/build.gradle index a1d67a681..236819591 100644 --- a/native/android/build.gradle +++ b/native/android/build.gradle @@ -1,53 +1,53 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext { buildToolsVersion = "30.0.2" minSdkVersion = 21 - compileSdkVersion = 30 - targetSdkVersion = 30 + compileSdkVersion = 31 + targetSdkVersion = 31 ndkVersion = "21.4.7075529" } repositories { google() mavenCentral() } dependencies { classpath("com.android.tools.build:gradle:4.2.2") classpath("de.undercouch:gradle-download-task:4.0.2") classpath("com.google.gms:google-services:4.2.0") classpath('org.ajoberstar:grgit:1.7.2') // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } ext { reactNativeFFmpegPackage = "min-gpl-lts" } allprojects { repositories { mavenLocal() maven { // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm url(new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim(), "../android")) } maven { // Android JSC is installed from npm url(new File(["node", "--print", "require.resolve('jsc-android/package.json')"].execute(null, rootDir).text.trim(), "../dist")) } mavenCentral { // We don't want to fetch react-native from Maven Central as there are // older versions over there. content { excludeGroup "com.facebook.react" } } google() gradlePluginPortal() maven { url 'https://www.jitpack.io' } jcenter() } } diff --git a/patches/react-native-firebase+5.6.0.patch b/patches/react-native-firebase+5.6.0.patch index 06260de8f..72feee934 100644 --- a/patches/react-native-firebase+5.6.0.patch +++ b/patches/react-native-firebase+5.6.0.patch @@ -1,746 +1,759 @@ +diff --git a/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/DisplayNotificationTask.java b/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/DisplayNotificationTask.java +index c9d63ff..ef725ad 100644 +--- a/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/DisplayNotificationTask.java ++++ b/node_modules/react-native-firebase/android/src/main/java/io/invertase/firebase/notifications/DisplayNotificationTask.java +@@ -475,7 +475,7 @@ public class DisplayNotificationTask extends AsyncTask { + context, + notificationId.hashCode(), + intent, +- PendingIntent.FLAG_UPDATE_CURRENT ++ PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_MUTABLE + ); + } + diff --git a/node_modules/react-native-firebase/dist/common/commonTypes.flow.js.flow b/node_modules/react-native-firebase/dist/common/commonTypes.flow.js.flow index 228a72d..982a997 100644 --- a/node_modules/react-native-firebase/dist/common/commonTypes.flow.js.flow +++ b/node_modules/react-native-firebase/dist/common/commonTypes.flow.js.flow @@ -1,3 +1,5 @@ +// @flow + export type NativeErrorObject = { code: string, message: string, @@ -11,9 +13,9 @@ export type NativeErrorResponse = { [key: string]: ?any, }; -export interface NativeErrorInterface extends Error { +export interface NativeErrorInterface { +code: string; - +message: string; + message: string; +nativeErrorCode: string | number; +nativeErrorMessage: string; } diff --git a/node_modules/react-native-firebase/dist/index.js.flow b/node_modules/react-native-firebase/dist/index.js.flow index 04ee2d9..ba9fdcf 100644 --- a/node_modules/react-native-firebase/dist/index.js.flow +++ b/node_modules/react-native-firebase/dist/index.js.flow @@ -9,7 +9,8 @@ export * from './modules/core/firebase'; /* * Export App types */ -export type { default as App } from './modules/core/app'; +import type AppModule from './modules/core/app'; +export type App = AppModule; /* * Export Auth types diff --git a/node_modules/react-native-firebase/dist/modules/admob/AdRequest.js.flow b/node_modules/react-native-firebase/dist/modules/admob/AdRequest.js.flow index 41d2d5d..c2f5e0a 100644 --- a/node_modules/react-native-firebase/dist/modules/admob/AdRequest.js.flow +++ b/node_modules/react-native-firebase/dist/modules/admob/AdRequest.js.flow @@ -1,4 +1,18 @@ +// @flow + +type AdRequestProps = {| + keywords: string[], + testDevices: string[], + contentUrl?: string, + gender?: Gender, + requestAgent?: string, + isDesignedForFamilies?: boolean, + tagForChildDirectedTreatment?: boolean, +|}; +type Gender = 'male | female | unknown'; export default class AdRequest { + _props: AdRequestProps; + constructor() { this._props = { keywords: [], @@ -6,30 +20,30 @@ export default class AdRequest { }; } - build() { + build(): AdRequestProps { return this._props; } - addTestDevice(deviceId?: string) { + addTestDevice(deviceId?: string): AdRequest { this._props.testDevices.push(deviceId || 'DEVICE_ID_EMULATOR'); return this; } - addKeyword(keyword: string) { + addKeyword(keyword: string): AdRequest { this._props.keywords.push(keyword); return this; } - setBirthday() { + setBirthday(): void { // TODO } - setContentUrl(url: string) { + setContentUrl(url: string): AdRequest { this._props.contentUrl = url; return this; } - setGender(gender: 'male | female | unknown') { + setGender(gender: Gender): AdRequest { const genders = ['male', 'female', 'unknown']; if (genders.includes(gender)) { this._props.gender = gender; @@ -37,21 +51,21 @@ export default class AdRequest { return this; } - setLocation() { + setLocation(): void { // TODO } - setRequestAgent(requestAgent: string) { + setRequestAgent(requestAgent: string): AdRequest { this._props.requestAgent = requestAgent; return this; } - setIsDesignedForFamilies(isDesignedForFamilies: boolean) { + setIsDesignedForFamilies(isDesignedForFamilies: boolean): AdRequest { this._props.isDesignedForFamilies = isDesignedForFamilies; return this; } - tagForChildDirectedTreatment(tagForChildDirectedTreatment: boolean) { + tagForChildDirectedTreatment(tagForChildDirectedTreatment: boolean): AdRequest { this._props.tagForChildDirectedTreatment = tagForChildDirectedTreatment; return this; } diff --git a/node_modules/react-native-firebase/dist/modules/admob/Interstitial.js.flow b/node_modules/react-native-firebase/dist/modules/admob/Interstitial.js.flow index a2f4c82..db795d7 100644 --- a/node_modules/react-native-firebase/dist/modules/admob/Interstitial.js.flow +++ b/node_modules/react-native-firebase/dist/modules/admob/Interstitial.js.flow @@ -1,3 +1,5 @@ +// @flow + import { Platform } from 'react-native'; import { statics } from './'; import AdRequest from './AdRequest'; @@ -8,8 +10,10 @@ import type AdMob from './'; let subscriptions = []; -export default class Interstitial { +class Interstitial { _admob: AdMob; + adUnit: string; + loaded: boolean; constructor(admob: AdMob, adUnit: string) { // Interstitials on iOS require a new instance each time @@ -79,7 +83,7 @@ export default class Interstitial { * Return a local instance of isLoaded * @returns {boolean} */ - isLoaded() { + isLoaded(): boolean { return this.loaded; } @@ -87,7 +91,7 @@ export default class Interstitial { * Show the advert - will only show if loaded * @returns {*} */ - show() { + show(): void { if (this.loaded) { getNativeModule(this._admob).interstitialShowAd(this.adUnit); } @@ -99,7 +103,7 @@ export default class Interstitial { * @param listenerCb * @returns {null} */ - on(eventType, listenerCb) { + on(eventType: string, listenerCb: Function) { if (!statics.EventTypes[eventType]) { console.warn( `Invalid event type provided, must be one of: ${Object.keys( @@ -117,3 +121,5 @@ export default class Interstitial { return sub; } } + +export default Interstitial; diff --git a/node_modules/react-native-firebase/dist/modules/admob/RewardedVideo.js.flow b/node_modules/react-native-firebase/dist/modules/admob/RewardedVideo.js.flow index d89df42..ab3bc43 100644 --- a/node_modules/react-native-firebase/dist/modules/admob/RewardedVideo.js.flow +++ b/node_modules/react-native-firebase/dist/modules/admob/RewardedVideo.js.flow @@ -1,3 +1,5 @@ +// @flow + import { statics } from './'; import AdRequest from './AdRequest'; import { SharedEventEmitter } from '../../utils/events'; @@ -9,6 +11,8 @@ let subscriptions = []; export default class RewardedVideo { _admob: AdMob; + adUnit: string; + loaded: boolean; constructor(admob: AdMob, adUnit: string) { for (let i = 0, len = subscriptions.length; i < len; i++) { @@ -106,7 +110,7 @@ export default class RewardedVideo { * @param listenerCb * @returns {null} */ - on(eventType, listenerCb) { + on(eventType: string, listenerCb: Function) { const types = { ...statics.EventTypes, ...statics.RewardedVideoEventTypes, diff --git a/node_modules/react-native-firebase/dist/modules/auth/AuthSettings.js.flow b/node_modules/react-native-firebase/dist/modules/auth/AuthSettings.js.flow index 997efc7..7b84def 100644 --- a/node_modules/react-native-firebase/dist/modules/auth/AuthSettings.js.flow +++ b/node_modules/react-native-firebase/dist/modules/auth/AuthSettings.js.flow @@ -1,3 +1,5 @@ +// @flow + import { getNativeModule } from '../../utils/native'; import { isAndroid, isIOS } from '../../utils'; diff --git a/node_modules/react-native-firebase/dist/modules/auth/User.js.flow b/node_modules/react-native-firebase/dist/modules/auth/User.js.flow index 96026b6..86c9b24 100644 --- a/node_modules/react-native-firebase/dist/modules/auth/User.js.flow +++ b/node_modules/react-native-firebase/dist/modules/auth/User.js.flow @@ -16,10 +16,10 @@ import type { IdTokenResult, } from './types'; -type UpdateProfile = { - displayName?: string, - photoURL?: string, -}; +type UpdateProfile = $Shape<{| + +displayName?: string, + +photoURL?: string, +|}>; export default class User { _auth: Auth; diff --git a/node_modules/react-native-firebase/dist/modules/core/app.js.flow b/node_modules/react-native-firebase/dist/modules/core/app.js.flow index 6e27c61..27d226d 100644 --- a/node_modules/react-native-firebase/dist/modules/core/app.js.flow +++ b/node_modules/react-native-firebase/dist/modules/core/app.js.flow @@ -21,7 +21,9 @@ import Links, { NAMESPACE as LinksNamespace } from '../links'; import Messaging, { NAMESPACE as MessagingNamespace } from '../messaging'; import Notifications, { NAMESPACE as NotificationsNamespace, + statics as NotificationsStatics, } from '../notifications'; +import type { NativeNotification } from '../notifications/types'; import Performance, { NAMESPACE as PerfNamespace } from '../perf'; import Storage, { NAMESPACE as StorageNamespace } from '../storage'; import Utils, { NAMESPACE as UtilsNamespace } from '../utils'; @@ -63,7 +65,14 @@ export default class App { messaging: () => Messaging; - notifications: () => Notifications; + notifications: { + (): Notifications, + +Android: NotificationsStatics.Android, + +Notification: ( + nativeNotification?: NativeNotification, + notifications?: Notifications, + ) => NotificationsStatics.Notification, + }; perf: () => Performance; @@ -77,7 +86,7 @@ export default class App { fromNative: boolean = false ) { this._name = name; - this._options = Object.assign({}, options); + this._options = { ...options }; if (fromNative) { this._initialized = true; @@ -129,7 +138,7 @@ export default class App { * @return {*} */ get options(): FirebaseOptions { - return Object.assign({}, this._options); + return { ...this._options }; } /** diff --git a/node_modules/react-native-firebase/dist/modules/firestore/DocumentReference.js.flow b/node_modules/react-native-firebase/dist/modules/firestore/DocumentReference.js.flow index b8ef7c2..37fe40e 100644 --- a/node_modules/react-native-firebase/dist/modules/firestore/DocumentReference.js.flow +++ b/node_modules/react-native-firebase/dist/modules/firestore/DocumentReference.js.flow @@ -8,7 +8,7 @@ import CollectionReference from './CollectionReference'; import { parseUpdateArgs } from './utils'; import { buildNativeMap } from './utils/serialize'; import { getNativeModule } from '../../utils/native'; -import { firestoreAutoId, isFunction, isObject } from '../../utils'; +import { firestoreAutoId, isObject } from '../../utils'; import { getAppEventName, SharedEventEmitter } from '../../utils/events'; import type Firestore from './'; @@ -137,8 +137,8 @@ export default class DocumentReference { let observer: Observer; let docListenOptions = {}; // Called with: onNext, ?onError - if (isFunction(optionsOrObserverOrOnNext)) { - if (observerOrOnNextOrOnError && !isFunction(observerOrOnNextOrOnError)) { + if (typeof optionsOrObserverOrOnNext === 'function') { + if (observerOrOnNextOrOnError && typeof observerOrOnNextOrOnError !== 'function') { throw new Error( 'DocumentReference.onSnapshot failed: Second argument must be a valid function.' ); @@ -150,14 +150,14 @@ export default class DocumentReference { }; } else if ( optionsOrObserverOrOnNext && - isObject(optionsOrObserverOrOnNext) + typeof optionsOrObserverOrOnNext === 'object' ) { // Called with: Observer if (optionsOrObserverOrOnNext.next) { - if (isFunction(optionsOrObserverOrOnNext.next)) { + if (typeof optionsOrObserverOrOnNext.next === 'function') { if ( optionsOrObserverOrOnNext.error && - !isFunction(optionsOrObserverOrOnNext.error) + typeof optionsOrObserverOrOnNext.error !== 'function' ) { throw new Error( 'DocumentReference.onSnapshot failed: Observer.error must be a valid function.' @@ -181,27 +181,27 @@ export default class DocumentReference { ) { docListenOptions = optionsOrObserverOrOnNext; // Called with: Options, onNext, ?onError - if (isFunction(observerOrOnNextOrOnError)) { - if (onError && !isFunction(onError)) { + if (typeof observerOrOnNextOrOnError === 'function') { + if (onError && typeof onError !== 'function') { throw new Error( 'DocumentReference.onSnapshot failed: Third argument must be a valid function.' ); } - // $FlowExpectedError: Not coping with the overloaded method signature observer = { + // $FlowExpectedError: Not coping with the overloaded method signature next: observerOrOnNextOrOnError, error: onError, }; // Called with Options, Observer } else if ( observerOrOnNextOrOnError && - isObject(observerOrOnNextOrOnError) && + typeof observerOrOnNextOrOnError === 'object' && observerOrOnNextOrOnError.next ) { - if (isFunction(observerOrOnNextOrOnError.next)) { + if (typeof observerOrOnNextOrOnError.next === 'function') { if ( observerOrOnNextOrOnError.error && - !isFunction(observerOrOnNextOrOnError.error) + typeof observerOrOnNextOrOnError.error !== 'function' ) { throw new Error( 'DocumentReference.onSnapshot failed: Observer.error must be a valid function.' diff --git a/node_modules/react-native-firebase/dist/modules/firestore/FieldValue.js.flow b/node_modules/react-native-firebase/dist/modules/firestore/FieldValue.js.flow index edbd9dc..c4e2598 100644 --- a/node_modules/react-native-firebase/dist/modules/firestore/FieldValue.js.flow +++ b/node_modules/react-native-firebase/dist/modules/firestore/FieldValue.js.flow @@ -2,7 +2,7 @@ * @flow * FieldValue representation wrapper */ -import AnyJs from './utils/any'; +import type { AnyJs } from './utils/any'; import { buildNativeArray } from './utils/serialize'; // TODO: Salakar: Refactor in v6 diff --git a/node_modules/react-native-firebase/dist/modules/firestore/Query.js.flow b/node_modules/react-native-firebase/dist/modules/firestore/Query.js.flow index 1716dbe..80df382 100644 --- a/node_modules/react-native-firebase/dist/modules/firestore/Query.js.flow +++ b/node_modules/react-native-firebase/dist/modules/firestore/Query.js.flow @@ -8,7 +8,7 @@ import SnapshotError from './SnapshotError'; import DocumentSnapshot from './DocumentSnapshot'; import { getNativeModule } from '../../utils/native'; import { buildNativeArray, buildTypeMap } from './utils/serialize'; -import { firestoreAutoId, isFunction, isObject } from '../../utils'; +import { firestoreAutoId, isObject } from '../../utils'; import { getAppEventName, SharedEventEmitter } from '../../utils/events'; import type Firestore from './'; @@ -55,7 +55,7 @@ type FieldOrder = {| fieldPath: NativeFieldPath, |}; -type QueryOptions = { +type QueryOptions = $Shape<{| endAt?: any[], endBefore?: any[], limit?: number, @@ -63,7 +63,7 @@ type QueryOptions = { selectFields?: string[], startAfter?: any[], startAt?: any[], -}; +|}>; export type ObserverOnError = SnapshotError => void; export type ObserverOnNext = QuerySnapshot => void; @@ -274,8 +274,8 @@ export default class Query { let observer: Observer; let metadataChanges = {}; // Called with: onNext, ?onError - if (isFunction(optionsOrObserverOrOnNext)) { - if (observerOrOnNextOrOnError && !isFunction(observerOrOnNextOrOnError)) { + if (typeof optionsOrObserverOrOnNext === 'function') { + if (observerOrOnNextOrOnError && typeof observerOrOnNextOrOnError !== 'function') { throw new Error( 'Query.onSnapshot failed: Second argument must be a valid function.' ); @@ -287,14 +287,14 @@ export default class Query { }; } else if ( optionsOrObserverOrOnNext && - isObject(optionsOrObserverOrOnNext) + typeof optionsOrObserverOrOnNext === 'object' ) { // Called with: Observer if (optionsOrObserverOrOnNext.next) { - if (isFunction(optionsOrObserverOrOnNext.next)) { + if (typeof optionsOrObserverOrOnNext.next === 'function') { if ( optionsOrObserverOrOnNext.error && - !isFunction(optionsOrObserverOrOnNext.error) + typeof optionsOrObserverOrOnNext.error !== 'function' ) { throw new Error( 'Query.onSnapshot failed: Observer.error must be a valid function.' @@ -318,27 +318,27 @@ export default class Query { ) { metadataChanges = optionsOrObserverOrOnNext; // Called with: Options, onNext, ?onError - if (isFunction(observerOrOnNextOrOnError)) { - if (onError && !isFunction(onError)) { + if (typeof observerOrOnNextOrOnError === 'function') { + if (onError && typeof onError !== 'function') { throw new Error( 'Query.onSnapshot failed: Third argument must be a valid function.' ); } - // $FlowExpectedError: Not coping with the overloaded method signature observer = { + // $FlowExpectedError: Not coping with the overloaded method signature next: observerOrOnNextOrOnError, error: onError, }; // Called with Options, Observer } else if ( observerOrOnNextOrOnError && - isObject(observerOrOnNextOrOnError) && + typeof observerOrOnNextOrOnError === 'object' && observerOrOnNextOrOnError.next ) { - if (isFunction(observerOrOnNextOrOnError.next)) { + if (typeof observerOrOnNextOrOnError.next === 'function') { if ( observerOrOnNextOrOnError.error && - !isFunction(observerOrOnNextOrOnError.error) + typeof observerOrOnNextOrOnError.error !== 'function' ) { throw new Error( 'Query.onSnapshot failed: Observer.error must be a valid function.' diff --git a/node_modules/react-native-firebase/dist/modules/firestore/SnapshotError.js.flow b/node_modules/react-native-firebase/dist/modules/firestore/SnapshotError.js.flow index 105574d..c34819e 100644 --- a/node_modules/react-native-firebase/dist/modules/firestore/SnapshotError.js.flow +++ b/node_modules/react-native-firebase/dist/modules/firestore/SnapshotError.js.flow @@ -1,3 +1,5 @@ +// @flow + import NativeError from '../../common/NativeError'; import type { SnapshotErrorInterface } from './firestoreTypes.flow'; import type { NativeErrorResponse } from '../../common/commonTypes.flow'; diff --git a/node_modules/react-native-firebase/dist/modules/firestore/Transaction.js.flow b/node_modules/react-native-firebase/dist/modules/firestore/Transaction.js.flow index 0f96640..b564830 100644 --- a/node_modules/react-native-firebase/dist/modules/firestore/Transaction.js.flow +++ b/node_modules/react-native-firebase/dist/modules/firestore/Transaction.js.flow @@ -18,9 +18,9 @@ type Command = { options?: SetOptions | {}, }; -type SetOptions = { +type SetOptions = $Shape<{| merge: boolean, -}; +|}>; // TODO docs state all get requests must be made FIRST before any modifications // TODO so need to validate that diff --git a/node_modules/react-native-firebase/dist/modules/firestore/TransactionHandler.js.flow b/node_modules/react-native-firebase/dist/modules/firestore/TransactionHandler.js.flow index 624acf0..f4b3039 100644 --- a/node_modules/react-native-firebase/dist/modules/firestore/TransactionHandler.js.flow +++ b/node_modules/react-native-firebase/dist/modules/firestore/TransactionHandler.js.flow @@ -18,7 +18,7 @@ const generateTransactionId = (): number => transactionId++; export type TransactionMeta = { id: number, - stack: string[], + stack: string, reject?: Function, resolve?: Function, transaction: Transaction, diff --git a/node_modules/react-native-firebase/dist/modules/firestore/utils/any.js.flow b/node_modules/react-native-firebase/dist/modules/firestore/utils/any.js.flow index af9d484..caf587e 100644 --- a/node_modules/react-native-firebase/dist/modules/firestore/utils/any.js.flow +++ b/node_modules/react-native-firebase/dist/modules/firestore/utils/any.js.flow @@ -1,4 +1,7 @@ +// @flow + /** * @url https://github.com/firebase/firebase-js-sdk/blob/master/packages/firestore/src/util/misc.ts#L26 */ -export type AnyJs = null | undefined | boolean | number | string | object; +//export type AnyJs = null | void | boolean | number | string | Object; +export type AnyJs = any; diff --git a/node_modules/react-native-firebase/dist/modules/firestore/utils/serialize.js.flow b/node_modules/react-native-firebase/dist/modules/firestore/utils/serialize.js.flow index 0c87d1d..fcf97f0 100644 --- a/node_modules/react-native-firebase/dist/modules/firestore/utils/serialize.js.flow +++ b/node_modules/react-native-firebase/dist/modules/firestore/utils/serialize.js.flow @@ -33,7 +33,7 @@ export const buildNativeMap = (data: Object): { [string]: NativeTypeMap } => { return nativeData; }; -export const buildNativeArray = (array: Object[]): NativeTypeMap[] => { +export const buildNativeArray = (array: any[]): NativeTypeMap[] => { const nativeArray = []; if (array) { array.forEach(value => { diff --git a/node_modules/react-native-firebase/dist/modules/functions/HttpsError.js.flow b/node_modules/react-native-firebase/dist/modules/functions/HttpsError.js.flow index e2c7ed3..2c00aa6 100644 --- a/node_modules/react-native-firebase/dist/modules/functions/HttpsError.js.flow +++ b/node_modules/react-native-firebase/dist/modules/functions/HttpsError.js.flow @@ -1,9 +1,11 @@ +// @flow + import type { FunctionsErrorCode } from './types.flow'; export default class HttpsError extends Error { +details: ?any; - +message: string; + message: string; +code: FunctionsErrorCode; @@ -11,6 +13,8 @@ export default class HttpsError extends Error { super(message); this.code = code; this.details = details; - this.message = message; + if (message) { + this.message = message; + } } } diff --git a/node_modules/react-native-firebase/dist/modules/functions/types.flow.js.flow b/node_modules/react-native-firebase/dist/modules/functions/types.flow.js.flow index 8660827..0ef93c8 100644 --- a/node_modules/react-native-firebase/dist/modules/functions/types.flow.js.flow +++ b/node_modules/react-native-firebase/dist/modules/functions/types.flow.js.flow @@ -1,3 +1,7 @@ +// @flow + +import HttpsError from './HttpsError'; + export type HttpsCallableResult = { data: Object, }; diff --git a/node_modules/react-native-firebase/dist/modules/messaging/IOSMessaging.js.flow b/node_modules/react-native-firebase/dist/modules/messaging/IOSMessaging.js.flow index a97bf75..305b5bc 100644 --- a/node_modules/react-native-firebase/dist/modules/messaging/IOSMessaging.js.flow +++ b/node_modules/react-native-firebase/dist/modules/messaging/IOSMessaging.js.flow @@ -1,3 +1,5 @@ +// @flow + import { getNativeModule } from '../../utils/native'; import { isIOS } from '../../utils'; @@ -5,18 +7,20 @@ import { isIOS } from '../../utils'; import type Messaging from './'; export default class IOSMessaging { + _messaging: Messaging; + constructor(messaging: Messaging) { this._messaging = messaging; } - getAPNSToken(): Promise { + getAPNSToken(): null | Promise { if (!isIOS) { return null; } return getNativeModule(this._messaging).getAPNSToken(); } - registerForRemoteNotifications(): Promise { + registerForRemoteNotifications(): void | Promise { if (!isIOS) { return undefined; } diff --git a/node_modules/react-native-firebase/dist/modules/messaging/RemoteMessage.js.flow b/node_modules/react-native-firebase/dist/modules/messaging/RemoteMessage.js.flow index d076e23..3388775 100644 --- a/node_modules/react-native-firebase/dist/modules/messaging/RemoteMessage.js.flow +++ b/node_modules/react-native-firebase/dist/modules/messaging/RemoteMessage.js.flow @@ -89,7 +89,7 @@ export default class RemoteMessage { * @param data * @returns {RemoteMessage} */ - setData(data: { [string]: string } = {}) { + setData(data: { [string]: string } = {}): RemoteMessage { if (!isObject(data)) { throw new Error( `RemoteMessage:setData expects an object but got type '${typeof data}'.` diff --git a/node_modules/react-native-firebase/dist/modules/messaging/index.js.flow b/node_modules/react-native-firebase/dist/modules/messaging/index.js.flow index 988be94..a030db8 100644 --- a/node_modules/react-native-firebase/dist/modules/messaging/index.js.flow +++ b/node_modules/react-native-firebase/dist/modules/messaging/index.js.flow @@ -8,7 +8,6 @@ import INTERNALS from '../../utils/internals'; import { getLogger } from '../../utils/log'; import ModuleBase from '../../utils/ModuleBase'; import { getNativeModule } from '../../utils/native'; -import { isFunction, isObject } from '../../utils'; import IOSMessaging from './IOSMessaging'; import RemoteMessage from './RemoteMessage'; @@ -89,10 +88,10 @@ export default class Messaging extends ModuleBase { onMessage(nextOrObserver: OnMessage | OnMessageObserver): () => any { let listener: RemoteMessage => any; - if (isFunction(nextOrObserver)) { + if (typeof nextOrObserver === "function") { // $FlowExpectedError: Not coping with the overloaded method signature listener = nextOrObserver; - } else if (isObject(nextOrObserver) && isFunction(nextOrObserver.next)) { + } else if (typeof nextOrObserver === "object" && typeof nextOrObserver.next === "function") { listener = nextOrObserver.next; } else { throw new Error( @@ -114,10 +113,10 @@ export default class Messaging extends ModuleBase { nextOrObserver: OnTokenRefresh | OnTokenRefreshObserver ): () => any { let listener: string => any; - if (isFunction(nextOrObserver)) { + if (typeof nextOrObserver === "function") { // $FlowExpectedError: Not coping with the overloaded method signature listener = nextOrObserver; - } else if (isObject(nextOrObserver) && isFunction(nextOrObserver.next)) { + } else if (typeof nextOrObserver === "object" && typeof nextOrObserver.next === "function") { listener = nextOrObserver.next; } else { throw new Error( diff --git a/node_modules/react-native-firebase/dist/modules/notifications/IOSNotifications.js.flow b/node_modules/react-native-firebase/dist/modules/notifications/IOSNotifications.js.flow index f2ea8ca..5058f52 100644 --- a/node_modules/react-native-firebase/dist/modules/notifications/IOSNotifications.js.flow +++ b/node_modules/react-native-firebase/dist/modules/notifications/IOSNotifications.js.flow @@ -1,3 +1,5 @@ +// @flow + import { getNativeModule } from '../../utils/native'; import type Notifications from './'; diff --git a/node_modules/react-native-firebase/dist/modules/notifications/index.js.flow b/node_modules/react-native-firebase/dist/modules/notifications/index.js.flow index 34e4ee3..22d5dbe 100644 --- a/node_modules/react-native-firebase/dist/modules/notifications/index.js.flow +++ b/node_modules/react-native-firebase/dist/modules/notifications/index.js.flow @@ -7,7 +7,6 @@ import { SharedEventEmitter } from '../../utils/events'; import { getLogger } from '../../utils/log'; import ModuleBase from '../../utils/ModuleBase'; import { getNativeModule } from '../../utils/native'; -import { isFunction, isObject } from '../../utils'; import AndroidAction from './AndroidAction'; import AndroidChannel from './AndroidChannel'; import AndroidChannelGroup from './AndroidChannelGroup'; @@ -212,9 +211,9 @@ export default class Notifications extends ModuleBase { nextOrObserver: OnNotification | OnNotificationObserver ): () => any { let listener; - if (isFunction(nextOrObserver)) { + if (typeof nextOrObserver === "function") { listener = nextOrObserver; - } else if (isObject(nextOrObserver) && isFunction(nextOrObserver.next)) { + } else if (typeof nextOrObserver === "object" && typeof nextOrObserver.next === "function") { listener = nextOrObserver.next; } else { throw new Error( @@ -235,9 +234,9 @@ export default class Notifications extends ModuleBase { nextOrObserver: OnNotification | OnNotificationObserver ): () => any { let listener; - if (isFunction(nextOrObserver)) { + if (typeof nextOrObserver === "function") { listener = nextOrObserver; - } else if (isObject(nextOrObserver) && isFunction(nextOrObserver.next)) { + } else if (typeof nextOrObserver === "object" && typeof nextOrObserver.next === "function") { listener = nextOrObserver.next; } else { throw new Error( @@ -258,9 +257,9 @@ export default class Notifications extends ModuleBase { nextOrObserver: OnNotificationOpened | OnNotificationOpenedObserver ): () => any { let listener; - if (isFunction(nextOrObserver)) { + if (typeof nextOrObserver === "function") { listener = nextOrObserver; - } else if (isObject(nextOrObserver) && isFunction(nextOrObserver.next)) { + } else if (typeof nextOrObserver === "object" && typeof nextOrObserver.next === "function") { listener = nextOrObserver.next; } else { throw new Error( diff --git a/node_modules/react-native-firebase/dist/modules/utils/database.js.flow b/node_modules/react-native-firebase/dist/modules/utils/database.js.flow index 12fda54..d25b305 100644 --- a/node_modules/react-native-firebase/dist/modules/utils/database.js.flow +++ b/node_modules/react-native-firebase/dist/modules/utils/database.js.flow @@ -1,3 +1,5 @@ +// @flow + import SyncTree from '../../utils/SyncTree'; export default { diff --git a/node_modules/react-native-firebase/dist/modules/utils/index.js.flow b/node_modules/react-native-firebase/dist/modules/utils/index.js.flow index 463de92..84f24cf 100644 --- a/node_modules/react-native-firebase/dist/modules/utils/index.js.flow +++ b/node_modules/react-native-firebase/dist/modules/utils/index.js.flow @@ -29,7 +29,7 @@ export default class RNFirebaseUtils extends ModuleBase { }); } - get database(): DatabaseUtils { + get database(): typeof DatabaseUtils { return DatabaseUtils; } diff --git a/node_modules/react-native-firebase/dist/utils/SyncTree.js.flow b/node_modules/react-native-firebase/dist/utils/SyncTree.js.flow index 58d0300..ca6edba 100644 --- a/node_modules/react-native-firebase/dist/utils/SyncTree.js.flow +++ b/node_modules/react-native-firebase/dist/utils/SyncTree.js.flow @@ -19,6 +19,7 @@ type Registration = { listener: Listener, eventRegistrationKey: string, ref: DatabaseReference, + ... }; /**