Skip to content

Conversation

@ParaskP7
Copy link
Contributor

@ParaskP7 ParaskP7 commented May 25, 2023

Parent #17567

This PR update firebaseConfigVersion to 21.4.0.

Also, as part of this update the below transitive dependencies were added:

  • On the WordPress module (5c1eeba):
    • com.google.firebase:firebase-iid

PS: @zwarm @AjeshRPai I added you as the main reviewers, not so randomly (*), since I just wanted someone from the WordPress team to be aware of and sign-off on that change for WPAndroid. I also added the @wordpress-mobile/apps-infrastructure team, but this in done only for monitoring purposes, as such, I am not expecting any active review from that team. Thus, feel free to merge this PR if you deem so.

(*): The not so randomly happened because I wanted to get in touch with you to understand more on how you would test this update, the fact that you were involved with this #17497 PR, and the fact that we are both involved with the feature that related to this #13980 PR (aka Scan and Threat Details).


Refactor List:

  1. Move codeable get free estimate url remote config to wrapper

To test:

  1. See the dependency tree diff result and verify correctness.
  2. Thoroughly smoke test any Firebase remote config functionality on both, the WordPress and Jetpack apps, and see if everything is working as expected.
  3. In addition to the above smoke test, you can expand the below and follow the inner and more explicitly test steps within:
1. Deep Linking Functionality [DeepLinkingIntentReceiverActivity.java + DeepLinkingIntentReceiverViewModel.kt + DeepLinkOpenWebLinksWithJetpackHelper.kt]

ℹ️ This test applies to both, the WordPress and Jetpack apps.
⁉️ See testing instructions on this #17497 PR that introduced this remote config.

2. Threat Details Screen [ThreatDetailsFragment.kt + ThreatDetailsViewModel.kt + ThreatDetailsNavigationEvents.kt]

ℹ️ This test applies to both, the WordPress and Jetpack apps.
⁉️ See testing instructions on this #13980 PR that introduced this remote config.

3. Crash Logging Functionality [CrashLoggingModule.java + WPCrashLoggingDataProvider.kt + WPPerformanceMonitoringConfig.kt]️

ℹ️ This test applies to both, the WordPress and Jetpack apps.
⁉️ See testing instructions on this #18496 PR that introduced this remote config.

FYI: I also created this temporal Firebase related deps_update_firebase_config_to_21_4_0 remote config to try and test this update, or Firebase Remote Config in general, as I just couldn't and that kind of raised a question, that is, whether Firebase Remote Config works at all. 🤔


Merge instructions

  • @zwarm let's figure out how to properly test the Firebase Remote Config functionality, using this temporal Firebase related deps_update_firebase_config_to_21_4_0 remote config, or any other way. For some reason I couldn't and I was keep getting an empty string value (""). The same apply for this 2. Threat Details Screen test above. Let's discuss as I might be missing something trivial here... 🤷 -> Related Comment
  • Remove [PR] Not Ready For Merge] label.
  • Merge PR to trunk.

Regression Notes

  1. Potential unintended areas of impact

    • Potential breakage or misbehaviour on any or all Firebase related remote config functionalities.
  2. What I did to test those areas of impact (or what existing automated tests I relied on)

    • See To test section above.
  3. What automated tests I added (or what prevented me from doing so)

    • N/A

PR submission checklist:

  • I have completed the Regression Notes.
  • I have considered adding accessibility improvements for my changes.
  • I have considered if this change warrants user-facing release notes and have added them to RELEASE-NOTES.txt if necessary.

UI Changes testing checklist:

  • Portrait and landscape orientations.
  • Light and dark modes.
  • Fonts: Larger, smaller and bold text.
  • High contrast.
  • Talkback.
  • Languages with large words or with letters/accents not frequently used in English.
  • Right-to-left languages. (Even if translation isn’t complete, formatting should still respect the right-to-left layout)
  • Large and small screen sizes. (Tablet and smaller phones)
  • Multi-tasking: Split screen and Pop-up view. (Android 10 or higher)

ParaskP7 added 10 commits May 25, 2023 13:58
Release Notes: https://firebase.google.com/support/release-notes/
android#remote-config_v19-2-0

------------------------------------------------------------------------

FYI: Migrated to use the Firebase installations service directly instead
of using an indirect dependency via the Firebase Instance ID SDK.
It is generally recommended that transitively used dependencies should
be declared directly.

------------------------------------------------------------------------

FYI: In this specific case and as per the Firebase 'Remote Config'
version '19.2.0; release note, when using this library, if explicitly
calling 'Instance ID' APIs and relying on an indirect dependency for the
'Instance ID' SDK, the app needs to be updated to either have a direct
dependency on the 'Instance ID' SDK added, or to use the new Firebase
installations SDK to access client identifiers, which include Firebase
installation IDs or installation auth tokens.

For more info see: https://firebase.google.com/support/release-notes/
android#remote-config_v19-2-0
This is done for consistency purposes with the Firebase related
dependency versions.
This is done to make sure that everything 'FirebaseRemoteConfig' related
is only being accessed via the 'FirebaseRemoteConfigWrapper', thus
aligning this with any other such call across the app, which in turn
will make it easier to reason about all Firebase 'Remote Config' related
functionality configured for this project.
Release Notes: https://firebase.google.com/support/release-notes/
android#remote-config_v20-0-3

------------------------------------------------------------------------

FYI: Added support for other Firebase products to integrate with Remote
Config.

PS: It seems that although there exist a release for '20.0.4', the
release notes for '20.0.4' are not available. Thus, the '20.0.4' update,
but at the same time, having the link for the '20.0.3' release notes.
Release Notes: https://firebase.google.com/support/release-notes/
android#remote-config_v21-0-2

------------------------------------------------------------------------

FYI: Internal changes to support dynamic feature modules.
Release Notes: https://firebase.google.com/support/release-notes/
android#remote-config_v21-1-2

------------------------------------------------------------------------

FYI: Added first-open time to Remote Config server requests.
Release Notes: https://firebase.google.com/support/release-notes/
android#remote-config_v21-2-1

------------------------------------------------------------------------

FYI: Firebase now supports Kotlin coroutines.
Release Notes: https://firebase.google.com/support/release-notes/
android#remote-config_v21-3-0

------------------------------------------------------------------------

FYI: Added support for real-time config updates.

For more info see: https://firebase.google.com/docs/remote-config/
get-started?platform=android#add-real-time-listener
Release Notes: https://firebase.google.com/support/release-notes/
android#remote-config_v21-4-0

------------------------------------------------------------------------

FYI: Updated to accommodate the release of the updated Remote Config
Kotlin extensions library.
@wpmobilebot
Copy link
Contributor

Found 1 violations:

The PR caused the following dependency changes:

++--- com.google.firebase:firebase-iid:21.1.0
+|    +--- androidx.collection:collection:1.0.0 -> 1.2.0 (*)
+|    +--- androidx.core:core:1.0.0 -> 1.10.0 (*)
+|    +--- androidx.legacy:legacy-support-core-utils:1.0.0 (*)
+|    +--- com.google.android.gms:play-services-basement:17.0.0 -> 18.1.0 (*)
+|    +--- com.google.android.gms:play-services-cloud-messaging:16.0.0
+|    |    +--- com.google.android.gms:play-services-basement:17.0.0 -> 18.1.0 (*)
+|    |    \--- com.google.android.gms:play-services-tasks:17.0.0 -> 18.0.2 (*)
+|    +--- com.google.android.gms:play-services-stats:17.0.0
+|    |    +--- androidx.legacy:legacy-support-core-utils:1.0.0 (*)
+|    |    \--- com.google.android.gms:play-services-basement:17.0.0 -> 18.1.0 (*)
+|    +--- com.google.android.gms:play-services-tasks:17.0.0 -> 18.0.2 (*)
+|    +--- com.google.firebase:firebase-common:19.5.0 -> 20.3.1
+|    |    +--- com.google.firebase:firebase-annotations:16.2.0
+|    |    |    \--- javax.inject:javax.inject:1
+|    |    +--- com.google.firebase:firebase-components:17.1.0
+|    |    |    +--- androidx.annotation:annotation:1.5.0 -> 1.6.0 (*)
+|    |    |    +--- com.google.errorprone:error_prone_annotations:2.9.0 -> 2.15.0
+|    |    |    \--- com.google.firebase:firebase-annotations:16.2.0 (*)
+|    |    +--- androidx.concurrent:concurrent-futures:1.1.0 (*)
+|    |    +--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|    |    \--- com.google.android.gms:play-services-tasks:18.0.2 (*)
+|    +--- com.google.firebase:firebase-components:16.1.0 -> 17.1.0 (*)
+|    +--- com.google.firebase:firebase-iid-interop:17.1.0
+|    |    +--- com.google.android.gms:play-services-basement:17.0.0 -> 18.1.0 (*)
+|    |    \--- com.google.android.gms:play-services-tasks:17.0.0 -> 18.0.2 (*)
+|    +--- com.google.firebase:firebase-installations:16.3.5 -> 17.1.2
+|    |    +--- com.google.firebase:firebase-common:20.3.0 -> 20.3.1 (*)
+|    |    +--- com.google.firebase:firebase-installations-interop:17.1.0
+|    |    |    +--- com.google.android.gms:play-services-tasks:18.0.1 -> 18.0.2 (*)
+|    |    |    \--- com.google.firebase:firebase-annotations:16.1.0 -> 16.2.0 (*)
+|    |    +--- com.google.firebase:firebase-components:17.1.0 (*)
+|    |    +--- com.google.firebase:firebase-annotations:16.2.0 (*)
+|    |    \--- com.google.android.gms:play-services-tasks:18.0.1 -> 18.0.2 (*)
+|    \--- com.google.firebase:firebase-installations-interop:16.0.1 -> 17.1.0 (*)
++--- com.google.firebase:firebase-config:21.4.0
+|    +--- com.google.firebase:firebase-installations:17.1.2 (*)
+|    +--- com.google.firebase:firebase-annotations:16.2.0 (*)
+|    +--- com.google.firebase:firebase-common:20.3.1 (*)
+|    +--- com.google.firebase:firebase-abt:21.1.1
+|    |    +--- com.google.firebase:firebase-common:20.2.0 -> 20.3.1 (*)
+|    |    +--- com.google.firebase:firebase-components:17.0.1 -> 17.1.0 (*)
+|    |    +--- com.google.firebase:firebase-measurement-connector:18.0.0
+|    |    |    \--- com.google.android.gms:play-services-basement:17.0.0 -> 18.1.0 (*)
+|    |    \--- com.google.android.gms:play-services-basement:18.1.0 (*)
+|    +--- com.google.firebase:firebase-components:17.1.0 (*)
+|    +--- com.google.firebase:firebase-installations-interop:17.1.0 (*)
+|    +--- com.google.firebase:firebase-measurement-connector:18.0.0 (*)
+|    \--- com.google.android.gms:play-services-tasks:18.0.1 -> 18.0.2 (*)
 +--- com.google.firebase:firebase-messaging:21.1.0
-|    +--- com.google.android.gms:play-services-cloud-messaging:16.0.0
-|    |    +--- com.google.android.gms:play-services-basement:17.0.0 -> 18.1.0 (*)
-|    |    \--- com.google.android.gms:play-services-tasks:17.0.0 -> 18.0.2 (*)
+|    +--- com.google.android.gms:play-services-cloud-messaging:16.0.0 (*)
-|    +--- com.google.android.gms:play-services-stats:17.0.0
-|    |    +--- androidx.legacy:legacy-support-core-utils:1.0.0 (*)
-|    |    \--- com.google.android.gms:play-services-basement:17.0.0 -> 18.1.0 (*)
+|    +--- com.google.android.gms:play-services-stats:17.0.0 (*)
-|    +--- com.google.firebase:firebase-common:19.5.0
-|    |    +--- com.google.android.gms:play-services-basement:17.0.0 -> 18.1.0 (*)
-|    |    +--- com.google.android.gms:play-services-tasks:17.0.0 -> 18.0.2 (*)
-|    |    \--- com.google.firebase:firebase-components:16.1.0
-|    |         +--- androidx.annotation:annotation:1.1.0 -> 1.6.0 (*)
-|    |         \--- com.google.firebase:firebase-annotations:16.0.0
+|    +--- com.google.firebase:firebase-common:19.5.0 -> 20.3.1 (*)
-|    +--- com.google.firebase:firebase-components:16.1.0 (*)
+|    +--- com.google.firebase:firebase-components:16.1.0 -> 17.1.0 (*)
 |    +--- com.google.firebase:firebase-datatransport:17.0.10
-|    |    +--- com.google.firebase:firebase-common:19.5.0 (*)
+|    |    +--- com.google.firebase:firebase-common:19.5.0 -> 20.3.1 (*)
-|    |    \--- com.google.firebase:firebase-components:16.1.0 (*)
+|    |    \--- com.google.firebase:firebase-components:16.1.0 -> 17.1.0 (*)
-|    +--- com.google.firebase:firebase-iid:21.1.0
-|    |    +--- androidx.collection:collection:1.0.0 -> 1.2.0 (*)
-|    |    +--- androidx.core:core:1.0.0 -> 1.10.0 (*)
-|    |    +--- androidx.legacy:legacy-support-core-utils:1.0.0 (*)
-|    |    +--- com.google.android.gms:play-services-basement:17.0.0 -> 18.1.0 (*)
-|    |    +--- com.google.android.gms:play-services-cloud-messaging:16.0.0 (*)
-|    |    +--- com.google.android.gms:play-services-stats:17.0.0 (*)
-|    |    +--- com.google.android.gms:play-services-tasks:17.0.0 -> 18.0.2 (*)
-|    |    +--- com.google.firebase:firebase-common:19.5.0 (*)
-|    |    +--- com.google.firebase:firebase-components:16.1.0 (*)
-|    |    +--- com.google.firebase:firebase-iid-interop:17.1.0
-|    |    |    +--- com.google.android.gms:play-services-basement:17.0.0 -> 18.1.0 (*)
-|    |    |    \--- com.google.android.gms:play-services-tasks:17.0.0 -> 18.0.2 (*)
-|    |    +--- com.google.firebase:firebase-installations:16.3.5
-|    |    |    +--- com.google.android.gms:play-services-tasks:17.0.0 -> 18.0.2 (*)
-|    |    |    +--- com.google.firebase:firebase-common:19.5.0 (*)
-|    |    |    +--- com.google.firebase:firebase-components:16.1.0 (*)
-|    |    |    \--- com.google.firebase:firebase-installations-interop:16.0.1
-|    |    |         +--- com.google.android.gms:play-services-tasks:17.0.0 -> 18.0.2 (*)
-|    |    |         \--- com.google.firebase:firebase-annotations:16.0.0
-|    |    \--- com.google.firebase:firebase-installations-interop:16.0.1 (*)
+|    +--- com.google.firebase:firebase-iid:21.1.0 (*)
-|    +--- com.google.firebase:firebase-installations:16.3.5 (*)
+|    +--- com.google.firebase:firebase-installations:16.3.5 -> 17.1.2 (*)
-|    +--- com.google.firebase:firebase-installations-interop:16.0.1 (*)
+|    +--- com.google.firebase:firebase-installations-interop:16.0.1 -> 17.1.0 (*)
-|    \--- com.google.firebase:firebase-measurement-connector:18.0.0
-|         \--- com.google.android.gms:play-services-basement:17.0.0 -> 18.1.0 (*)
+|    \--- com.google.firebase:firebase-measurement-connector:18.0.0 (*)
+\--- com.google.android.gms:play-services-code-scanner:16.0.0-beta3
+     +--- com.google.firebase:firebase-components:16.1.0 -> 17.1.0 (*)
+     \--- com.google.mlkit:barcode-scanning-common:17.0.0
+          \--- com.google.mlkit:vision-common:17.0.0
+               +--- com.google.firebase:firebase-components:16.1.0 -> 17.1.0 (*)
+               \--- com.google.mlkit:common:18.0.0 -> 18.5.0
+                    \--- com.google.firebase:firebase-components:16.1.0 -> 17.1.0 (*)
-+--- com.google.firebase:firebase-config:19.1.3
-|    +--- com.google.firebase:firebase-abt:19.0.1
-|    |    +--- com.google.android.gms:play-services-basement:17.0.0 -> 18.1.0 (*)
-|    |    +--- com.google.firebase:firebase-common:19.3.0 -> 19.5.0 (*)
-|    |    +--- com.google.firebase:firebase-components:16.0.0 -> 16.1.0 (*)
-|    |    +--- com.google.firebase:firebase-measurement-connector:18.0.0 (*)
-|    |    \--- com.google.protobuf:protobuf-lite:3.0.1
-|    +--- com.google.firebase:firebase-common:19.3.0 -> 19.5.0 (*)
-|    +--- com.google.firebase:firebase-components:16.0.0 -> 16.1.0 (*)
-|    +--- com.google.firebase:firebase-iid:20.0.1 -> 21.1.0 (*)
-|    +--- com.google.firebase:firebase-measurement-connector:18.0.0 (*)
-|    \--- com.google.protobuf:protobuf-lite:3.0.1
-\--- com.google.android.gms:play-services-code-scanner:16.0.0-beta3
-     +--- com.google.firebase:firebase-components:16.1.0 (*)
-     \--- com.google.mlkit:barcode-scanning-common:17.0.0
-          \--- com.google.mlkit:vision-common:17.0.0
-               +--- com.google.firebase:firebase-components:16.1.0 (*)
-               \--- com.google.mlkit:common:18.0.0 -> 18.5.0
-                    \--- com.google.firebase:firebase-components:16.1.0 (*)

Please review and act accordingly

@wpmobilebot
Copy link
Contributor

WordPress📲 You can test the changes from this Pull Request in WordPress by scanning the QR code below to install the corresponding build.
App NameWordPress WordPress
FlavorJalapeno
Build TypeDebug
Versionpr18513-4e921c0
Commit4e921c0
Direct Downloadwordpress-prototype-build-pr18513-4e921c0.apk
Note: Google Login is not supported on these builds.

@wpmobilebot
Copy link
Contributor

Jetpack📲 You can test the changes from this Pull Request in Jetpack by scanning the QR code below to install the corresponding build.
App NameJetpack Jetpack
FlavorJalapeno
Build TypeDebug
Versionpr18513-4e921c0
Commit4e921c0
Direct Downloadjetpack-prototype-build-pr18513-4e921c0.apk
Note: Google Login is not supported on these builds.

@ParaskP7
Copy link
Contributor Author

👋 @zwarm and FYI that I have managed to test this dependency update, after figuring out what's wrong with our Firebase Remote Config configuration, see internal discussion: C04PWEZSYFL/p1685093537155919

As such, I am now marking this PR as ready for review.

PS: By applying the patch below, you could also verify that, calling FirebaseRemoteConfig.getInstance().fetchAndActivate() and thereafter, everything is working as expected.

FirebaseRemoteConfig_getInstance()_fetchAndActivate().patch


Talking with @AjeshRPai , we might need to follow-up on that and completely remove Firebase Remote Config from our project, as we are mostly depending on our own BE for some time now. 🤔

@ParaskP7 ParaskP7 marked this pull request as ready for review May 26, 2023 10:13
@ParaskP7 ParaskP7 requested a review from AjeshRPai May 26, 2023 10:26
@ParaskP7 ParaskP7 marked this pull request as draft May 26, 2023 10:43
@ParaskP7 ParaskP7 added [Status] Not Ready for Merge Do Not Merge In PRs with this label, our automation will fail a require check, preventing accidental merging and removed [Status] Not Ready for Merge labels May 26, 2023
@ParaskP7 ParaskP7 changed the title [Dependency Updates] Update firebaseConfigVersion to 21.4.0 [Do Not Merge] [Dependency Updates] Update firebaseConfigVersion to 21.4.0 May 26, 2023
@ParaskP7
Copy link
Contributor Author

Talking with @AjeshRPai , we might need to follow-up on that and completely remove Firebase Remote Config from our project, as we are mostly depending on our own BE for some time now. 🤔

FYI: After talking with @AjeshRPai we decided to put this PR back to draft mode and mark it as Do Not Merge, see internal discussion: C04PWEZSYFL/p1685097724276889?thread_ts=1685093537.155919&cid=C04PWEZSYFL

@AjeshRPai
Copy link
Contributor

With this PR, all the remote config values depending on the Firebase have been shifted to rely on WP API. Hence, the Firebase dependency is redundant and has been removed from the codebase with the commit 8ebd647. So closing this PR.

@AjeshRPai AjeshRPai closed this May 29, 2023
@ParaskP7
Copy link
Contributor Author

ParaskP7 commented May 29, 2023

Thank you @AjeshRPai @zwarm ! 🙇 ❤️ 🚀 🎉

@ParaskP7 ParaskP7 deleted the deps/update-firebase-config-to-21.4.0 branch May 31, 2023 09:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependency update Do Not Merge In PRs with this label, our automation will fail a require check, preventing accidental merging Tech Debt

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants