Closed ahmadzraiq closed 1 year ago
These versions:
"@react-native-firebase/analytics": "^10.0.0",
"@react-native-firebase/app": "^10.0.0",
"@react-native-firebase/crashlytics": "^10.0.0",
"@react-native-firebase/dynamic-links": "^10.0.0",
"@react-native-firebase/firestore": "^10.0.0",
"@react-native-firebase/messaging": "^10.0.0",
Are about a year and a half of bugfixes and releases old. I would update to current, as reproductions on old versions typically have no value
This is dangerous!!
target 'ImageNotification' do
pod 'Firebase/Messaging', '~> 7.6.0' # eg 6.31.0
end
You want to define a firebase version and have both react-native-firebase and this definition share it, more like this:
...as described here: https://rnfirebase.io/#ios
Otherwise it's possible you are specifying incompatible versions. Downside to that is then you have to track the version along with react-native-firebase releases. It might be best to remove the version specifier entirely, then react-native-firebase will pin it with its internal dependency that has a version, and the pod here should simply align itself. You can verify that behavior by examining Podfile.lock to make sure it's the expected version from here https://github.com/invertase/react-native-firebase/blob/f10891a6d8079766374ceb7790a824d90306946a/packages/app/package.json#L68 for the version of react-native-firebase you are on
If this still reproduces on the current version, we can investigate, although it might be interesting to try to reproduce this with the firebase-js-sdk or with one of the native quickstarts to determine if the error is in an underlying SDK / is just "normal" firebase behavior or whether we have a bug here https://github.com/firebase/quickstart-ios/tree/master/firestore https://github.com/firebase/quickstart-js/tree/master/firestore
@mikehardy I've switched to another branch that has newer version, I've update my environment have a look, And I think the problem isn't with firebase setup
Okay, but that's still not actually up to date, right? I don't have a lot of time right now to reproduce this - my best advice for a rapid resolution is still:
it might be interesting to try to reproduce this with the firebase-js-sdk or with one of the native quickstarts to determine if the error is in an underlying SDK / is just "normal" firebase behavior or whether we have a bug here https://github.com/firebase/quickstart-ios/tree/master/firestore https://github.com/firebase/quickstart-js/tree/master/firestore
I just want to know if what i did is right as a logic or i have missed something like indexes.
And the answer is I don't know. I don't use firebase that way, apologies
Hello 👋, to help manage issues we automatically close stale issues.
This issue has been automatically marked as stale because it has not had activity for quite some time.Has this issue been fixed, or does it still require attention?
This issue will be closed in 15 days if no further activity occurs.
Thank you for your contributions.
Issue
I want listen to new and update user conversations, NOT to the old conversations
I've tried two things but none of them work
First one I made the listener to listen to new and update docs depend on createdAt
Second one I've got a last conversion id and passed that to the listener like this
The only thing that's working with me, if I listen to whole conversations
The problem here it will return all conversations in the first time
Project Files
Javascript
Click To Expand
#### `package.json`: ``` { "main": "index.js", "scripts": { "android": "react-native run-android", "ios": "react-native run-ios", "start": "react-native start", "wm-d": "watchman watch-del-all", "android-dev": "react-native run-android --variant=devdebug --appIdSuffix=dev", "android-prod": "react-native run-android --variant=proddebug", "ios-dev": "react-native run-ios --scheme 'swiitchDev' --configuration DebugDev", "ios-prod": "react-native run-ios --scheme 'swiitch' --configuration Debug", "code-push-prod": "appcenter codepush release-react -a Swiitch/swiitch-ios -d Production -m && appcenter codepush release-react -a Swiitch/swiitch-android -d Production -m", "code-push-dev": "appcenter codepush release-react -a Swiitch/swiitch-ios -d Staging -m && appcenter codepush release-react -a Swiitch/swiitch-android -d Staging -m", "test": "jest", "postinstall": "patch-package", "lint": "eslint --fix --ext .js,.jsx ." }, "dependencies": { "@codler/react-native-keyboard-aware-scroll-view": "^2.0.1", "@gorhom/portal": "^1.0.14", "@invertase/react-native-apple-authentication": "^2.2.2", "@react-native-clipboard/clipboard": "^1.10.0", "@react-native-community/async-storage": "~1.12.0", "@react-native-community/checkbox": "^0.5.12", "@react-native-community/netinfo": "^9.3.0", "@react-native-community/picker": "^1.8.1", "@react-native-firebase/analytics": "^14.11.0", "@react-native-firebase/app": "^14.11.0", "@react-native-firebase/crashlytics": "^14.11.0", "@react-native-firebase/dynamic-links": "^14.11.0", "@react-native-firebase/firestore": "^14.11.0", "@react-native-firebase/messaging": "^14.11.0", "@react-native-google-signin/google-signin": "^8.0.0", "@react-native-masked-view/masked-view": "^0.2.7", "@react-navigation/bottom-tabs": "^6.3.2", "@react-navigation/drawer": "^6.4.3", "@react-navigation/elements": "^1.3.4", "@react-navigation/material-top-tabs": "^6.2.2", "@react-navigation/native": "^6.0.11", "@react-navigation/stack": "^6.2.2", "axios": "^0.18.0", "formik": "^2.2.9", "i18next": "^21.8.14", "lodash": "^4.17.21", "lottie-react-native": "^5.1.3", "mixpanel-react-native": "^1.5.0", "moment": "^2.29.4", "native-base": "^3.4.9", "query-string": "^7.1.1", "react": "18.2.0", "react-dom": "18.2.0", "react-i18next": "^11.18.1", "react-native": "0.69.2", "react-native-adjust": "^4.29.6", "react-native-autocomplete-input": "^5.1.0", "react-native-code-push": "^7.0.4", "react-native-config": "^1.4.6", "react-native-device-info": "^10.0.2", "react-native-fast-image": "^8.5.11", "react-native-fbsdk-next": "^10.0.0", "react-native-fs": "^2.20.0", "react-native-geolocation-service": "^5.3.0", "react-native-gesture-handler": "^2.5.0", "react-native-google-places-autocomplete": "^2.4.1", "react-native-hyperlink": "^0.0.19", "react-native-image-pan-zoom": "^2.1.12", "react-native-image-picker": "^4.8.4", "react-native-image-zoom-viewer": "^3.0.1", "react-native-in-app-message": "^1.0.33", "react-native-inappbrowser-reborn": "^3.6.3", "react-native-keyboard-aware-scroll-view": "^0.9.5", "react-native-linear-gradient": "^2.6.2", "react-native-loading-spinner-overlay": "^2.0.0", "react-native-maps": "^1.0.3", "react-native-modalize": "^2.0.13", "react-native-option-menu": "^1.1.3", "react-native-pager-view": "^5.4.25", "react-native-permissions": "^3.6.0", "react-native-qrcode-svg": "^6.1.2", "react-native-ratings": "^8.1.0", "react-native-reanimated": "^2.9.1", "react-native-redash": "^18.0.0", "react-native-responsive-fontsize": "^0.5.1", "react-native-restart": "0.0.24", "react-native-safe-area-context": "4.3.1", "react-native-screens": "~3.15.0", "react-native-share": "^7.6.6", "react-native-shared-element": "^0.8.4", "react-native-skeleton-placeholder": "^5.0.0", "react-native-snap-carousel": "^4.0.0-beta.6", "react-native-splash-screen": "^3.3.0", "react-native-status-bar-height": "^2.6.0", "react-native-svg": "^12.4.0", "react-native-swiper": "^1.6.0", "react-native-tab-view": "^3.1.1", "react-native-toast-message": "^2.1.5", "react-native-tracking-transparency": "^0.1.1", "react-native-vector-icons": "^9.2.0", "react-native-video": "^6.0.0-alpha.1", "react-native-view-shot": "^3.3.0", "react-native-webview": "^11.22.7", "react-navigation-shared-element": "^3.1.3", "react-redux": "^8.0.2", "recombee-js-api-client": "^4.0.0", "redux": "^4.2.0", "redux-thunk": "^2.4.1", "yup": "^0.32.11" }, "devDependencies": { "@babel/core": "~7.18.9", "@react-native-community/eslint-config": "^3.0.3", "babel-jest": "~28.1.3", "eslint": "^8.20.0", "eslint-config-airbnb": "^19.0.4", "eslint-plugin-import": "^2.26.0", "eslint-plugin-jsx-a11y": "^6.6.0", "eslint-plugin-react": "^7.30.1", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-native": "^4.0.0", "jest": "~28.1.3", "metro-react-native-babel-preset": "^0.71.3", "metro-react-native-babel-transformer": "^0.71.3", "patch-package": "^6.4.7", "prettier": "^2.7.1", "react-native-svg-transformer": "^1.0.0", "react-test-renderer": "~18.2.0", "reactotron-react-native": "^5.0.2", "reactotron-redux": "^3.1.3" }, "jest": { "preset": "react-native" }, "private": true, "name": "swiitch" } ``` #### `firebase.json` for react-native-firebase v6: ```json { "react-native": {} } ```
iOS
Click To Expand
#### `ios/Podfile`: - [ ] I'm not using Pods - [x] I'm using Pods and my Podfile looks like: ```ruby require_relative '../node_modules/react-native/scripts/react_native_pods' require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' project 'swiitch', 'DebugDev' => :debug, 'Debug' => :debug, 'ReleaseDev' => :release, 'Release' => :release platform :ios, '13.0' install! 'cocoapods', :deterministic_uuids => false production = ENV["PRODUCTION"] == "1" target 'swiitch' do rn_maps_path = '../node_modules/react-native-maps' pod 'react-native-google-maps', :path => rn_maps_path pod 'GoogleMaps' pod 'Google-Maps-iOS-Utils' pod 'GoogleSignIn', '~> 6.2.2' permissions_path = '../node_modules/react-native-permissions/ios' pod 'Permission-Camera', :path => "#{permissions_path}/Camera" pod 'Permission-PhotoLibrary', :path => "#{permissions_path}/PhotoLibrary" config = use_native_modules! # Flags change depending on the env values. flags = get_default_flags() use_react_native!( :path => config[:reactNativePath], :production => production, # to enable hermes on iOS, change `false` to `true` and then install pods :hermes_enabled => true, :fabric_enabled => flags[:fabric_enabled], :flipper_configuration => FlipperConfiguration.enabled, # An absolute path to your application root. :app_path => "#{Pod::Config.instance.installation_root}/.." ) post_install do |installer| react_native_post_install(installer) __apply_Xcode_12_5_M1_post_install_workaround(installer) end end target 'ImageNotification' do pod 'Firebase/Messaging', '~> 8.15.0' end ``` #### `AppDelegate.mm`: ``` #import "AppDelegate.h" #import
#import
#import
#import
#import
#import "ReactNativeConfig.h"
#import
#import
#import
#import
#import
#if RCT_NEW_ARCH_ENABLED
#import
#import
#import
#import
#import
#import
#import
static NSString *const kRNConcurrentRoot = @"concurrentRoot";
@interface AppDelegate () {
RCTTurboModuleManager *_turboModuleManager;
RCTSurfacePresenterBridgeAdapter *_bridgeAdapter;
std::shared_ptr _reactNativeConfig;
facebook::react::ContextContainer::Shared _contextContainer;
}
@end
#endif
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if ([FIRApp defaultApp] == nil) {
[FIRApp configure];
}
RCTAppSetupPrepareApp(application);
NSString *googleMapApiKey = [ReactNativeConfig envFor:@"GOOGLE_MAPS_API_KEY_IOS"];
[GMSServices provideAPIKey:googleMapApiKey];
[FBSDKApplicationDelegate.sharedInstance initializeSDK];
[[FBSDKApplicationDelegate sharedInstance] application:application
didFinishLaunchingWithOptions:launchOptions];
RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
#if RCT_NEW_ARCH_ENABLED
_contextContainer = std::make_shared();
_reactNativeConfig = std::make_shared();
_contextContainer->insert("ReactNativeConfig", _reactNativeConfig);
_bridgeAdapter = [[RCTSurfacePresenterBridgeAdapter alloc] initWithBridge:bridge contextContainer:_contextContainer];
bridge.surfacePresenter = _bridgeAdapter.surfacePresenter;
#endif
NSDictionary *initProps = [self prepareInitialProps];
UIView *rootView = RCTAppSetupDefaultRootView(bridge, @"main", initProps);
if (@available(iOS 13.0, *)) {
rootView.backgroundColor = [UIColor systemBackgroundColor];
} else {
rootView.backgroundColor = [UIColor whiteColor];
}
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
UIViewController *rootViewController = [UIViewController new];
rootViewController.view = rootView;
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];
return YES;
}
/// This method controls whether the `concurrentRoot`feature of React18 is turned on or off.
///
/// @see: https://reactjs.org/blog/2022/03/29/react-v18.html
/// @note: This requires to be rendering on Fabric (i.e. on the New Architecture).
/// @return: `true` if the `concurrentRoot` feture is enabled. Otherwise, it returns `false`.
- (BOOL)concurrentRootEnabled
{
// Switch this bool to turn on and off the concurrent root
return true;
}
- (NSDictionary *)prepareInitialProps
{
NSMutableDictionary *initProps = [NSMutableDictionary new];
#ifdef RCT_NEW_ARCH_ENABLED
initProps[kRNConcurrentRoot] = @([self concurrentRootEnabled]);
#endif
return initProps;
}
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
#if DEBUG
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"];
#else
return [CodePush bundleURL];
#endif
}
// Linking API
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options {
if ([[FBSDKApplicationDelegate sharedInstance] application:application openURL:url options:options] || [RNGoogleSignin application:application openURL:url options:options]) {
return YES;
}
if ([RCTLinkingManager application:application openURL:url options:options]) {
return YES;
}
return NO;
}
// Universal Links
- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray> * _Nullable))restorationHandler {
return [RCTLinkingManager application:application
continueUserActivity:userActivity
restorationHandler:restorationHandler];
}
#if RCT_NEW_ARCH_ENABLED
#pragma mark - RCTCxxBridgeDelegate
- (std::unique_ptr)jsExecutorFactoryForBridge:(RCTBridge *)bridge
{
_turboModuleManager = [[RCTTurboModuleManager alloc] initWithBridge:bridge
delegate:self
jsInvoker:bridge.jsCallInvoker];
return RCTAppSetupDefaultJsExecutorFactory(bridge, _turboModuleManager);
}
#pragma mark RCTTurboModuleManagerDelegate
- (Class)getModuleClassFromName:(const char *)name
{
return RCTCoreModulesClassProvider(name);
}
- (std::shared_ptr)getTurboModule:(const std::string &)name
jsInvoker:(std::shared_ptr)jsInvoker
{
return nullptr;
}
- (std::shared_ptr)getTurboModule:(const std::string &)name
initParams:
(const facebook::react::ObjCTurboModule::InitParams &)params
{
return nullptr;
}
- (id)getModuleInstanceFromClass:(Class)moduleClass
{
return RCTAppSetupDefaultModuleFromClass(moduleClass);
}
#endif
@end
```
Android
Click To Expand
#### Have you converted to AndroidX? - [ ] my application is an AndroidX application? - [ ] I am using `android/gradle.settings` `jetifier=true` for Android compatibility? - [ ] I am using the NPM package `jetifier` for react-native compatibility? #### `android/build.gradle`: ```groovy // N/A ``` #### `android/app/build.gradle`: ```groovy // N/A ``` #### `android/settings.gradle`: ```groovy // N/A ``` #### `MainApplication.java`: ```java // N/A ``` #### `AndroidManifest.xml`: ```xml ```
Environment
Click To Expand
**`react-native info` output:** ``` System: OS: macOS 12.3.1 CPU: (10) arm64 Apple M1 Pro Memory: 129.78 MB / 16.00 GB Shell: 5.8 - /bin/zsh Binaries: Node: 18.6.0 - /opt/homebrew/bin/node Yarn: 1.22.18 - /opt/homebrew/bin/yarn npm: 8.13.2 - /opt/homebrew/bin/npm Watchman: 2022.07.04.00 - /opt/homebrew/bin/watchman Managers: CocoaPods: 1.11.3 - /opt/homebrew/bin/pod SDKs: iOS SDK: Platforms: DriverKit 21.4, iOS 15.5, macOS 12.3, tvOS 15.4, watchOS 8.5 Android SDK: Not Found IDEs: Android Studio: 2021.2 AI-212.5712.43.2112.8609683 Xcode: 13.4.1/13F100 - /usr/bin/xcodebuild Languages: Java: 11.0.16 - /usr/bin/javac npmPackages: @react-native-community/cli: Not Found react: 18.2.0 => 18.2.0 react-native: 0.69.2 => 0.69.2 react-native-macos: Not Found npmGlobalPackages: *react-native*: Not Found ``` - **Platform that you're experiencing the issue on**: - [ ] iOS - [ ] Android - [ ] **iOS** but have not tested behavior on Android - [ ] **Android** but have not tested behavior on iOS - [x] Both - **`react-native-firebase` version you're using that has this issue:** - `e.g. 7.6.0` - **`Firebase` module(s) you're using that has the issue:** - `e.g. Instance ID` - **Are you using `TypeScript`?** - NO