-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: remote config feature toggle #293
Conversation
import com.google.firebase.remoteconfig.ktx.remoteConfig | ||
import com.litewallet.data.source.RemoteConfigSource | ||
|
||
class Module( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is for dependency injection, since in the future we want to migrate into kotlin, for now we just add this module class, later we will using Koin
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh great, what is koin? @andhikayuana
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's kotlin dependency injection framework.
In short, dependency injection framework like dagger/hilt
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good to think of the future @andhikayuana .
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
sure, since in the future we plan to use kotlin, will revisit this.
as for now, we just using "manual" dependency injection
} | ||
|
||
override fun getString(key: String): String { | ||
return remoteConfig.getString(key) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
currently we just get the value, so it will be changed after restart the app. I think it's enough, but what do you think about not observing the changes for this iteration?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure what you mean regarding not observing changes
@andhikayuana . Do you mean in the FB Remote Config history?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I meant, listening for the updates https://firebase.google.com/docs/remote-config/real-time?platform=android#listen-for-updates.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, thank you! @andhikayuana
String walletAddress = BRSharedPrefs.getReceiveAddress(context); | ||
Long timestamp = new Date().getTime(); | ||
String uuid = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID); | ||
String prefix = partner == Partner.MOONPAY ? "/moonpay/buy" : ""; | ||
return String.format(LW_API_HOST + prefix + "?address=%s&code=%s&idate=%s&uid=%s", walletAddress, currency, timestamp, uuid); | ||
String baseUrl = BreadApp.module.getApiManager().getBaseUrlProd(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Right. Pulls from the module in runtime now. Correct @andhikayuana ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
correct, we use BreadApp.module
as our dependency components/modules
reference: https://developer.android.com/training/dependency-injection/manual
@@ -195,4 +195,8 @@ private String createGETRequestURL(Context app, String myURL) { | |||
} | |||
return response; | |||
} | |||
|
|||
public String getBaseUrlProd() { | |||
return remoteConfigSource.getBoolean(RemoteConfigSource.KEY_API_BASEURL_PROD_NEW_ENABLED) ? LW_API_HOST_NEW : LW_API_HOST; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yup
@@ -101,4 +101,22 @@ class BRApiManagerTest { | |||
assertEquals("AED", jsonAED.optString("code")) | |||
assertEquals("United Arab Emirates Dirham", jsonAED.optString("name")) | |||
} | |||
|
|||
@Test |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
* 🚀[Release v2.11.1 071024] Merge into Develop (#245) * replaced the control in PeerManager.c Signed-off-by: kcw-grunt <[email protected]> * reverted BRBitcoinAmount Signed-off-by: kcw-grunt <[email protected]> * Cleaning up the files Signed-off-by: kcw-grunt <[email protected]> * Removed Pusher remnants Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> * Added Fiat feature, and FCM for push notifications (#247) * Added fiat feature based on language user chose * added fcm for push notifications * Update PushNotificationService.kt * Added new Icon, removed duplicate fcm library, added in app messaging * Added new Icon, removed duplicate fcm library, added in app messaging * Tech debt/add af sdk (#248) * Recent newline Signed-off-by: kcw-grunt <[email protected]> * AF added Refactored cruft - AF working Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> * Techdebt/refactor brevents syncmarkers (#254) * Tech debt/add af sdk (#248) - AF working - Changed requiredActivity - Added analytics error report - test this.Activity is null or not - Bugfix - Phrase Reminder crash - added an exception handler for UserNotAuthenticatedException. - note: this should allow for the system to display the native authorization UI when needed - fixes issue - https://console.firebase.google.com/u/0/project/litewallet-beta/crashlytics/app/android:com.loafwallet/issues/09dac17241309f0e823ef597a9a82cd4 - Added dev note - remove calls to BREventManager - removed BREventManager - renamed error message - fixed Firebase Analytics event error Signed-off-by: kcw-grunt <[email protected]> * version bump update gitignore Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> * Techdebt/ fixed send issue add syncing measurements (#255) * removed unused BRSharedPreferences Signed-off-by: kcw-grunt <[email protected]> * started commenting out more Timber Signed-off-by: kcw-grunt <[email protected]> * Added more shared preferences for syncing Signed-off-by: kcw-grunt <[email protected]> * Commented out many verbose Timber logs Signed-off-by: kcw-grunt <[email protected]> * WIP Still trying to figure out the eplased time and last and start timestamps…??? I dunno Signed-off-by: kcw-grunt <[email protected]> * Moved sync measurment into the method calls Signed-off-by: kcw-grunt <[email protected]> * Debugged the install issue with send - Moved all the measurements in new methods - recalculated measure points - Added analytics - event did_complete_sync was shown! - adding a dummy file to make sure file system is set ||||WIP still verifying the JSON is present - added a blockheight label - changed the sleep time (a hack to allow the device time to refresh the view) to 100 ms from 500ms!! -WIP Why is the bundle not showing on time Signed-off-by: kcw-grunt <[email protected]> * replaces afID to first location Signed-off-by: kcw-grunt <[email protected]> * Removed redundant sync measurements Signed-off-by: kcw-grunt <[email protected]> * code bump Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> * Techdebt/test refactor cruft removal (#250) * Removed non english seed words -Refactor tests - Reset AnalyticsTests Signed-off-by: kcw-grunt <[email protected]> * Rename Bitcoinletter to Litecoinletters -added tests testLitecoinSymbolConstants testAppExternalURLConstants testFirebaseAnalyticsConstants Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> * fix: [#152] make sure using Fragment, FragmentManager and FragmentTransaction from androidx (#260) * fix: [#126] the issue came from FragmentBalanceSeedReminder.fetchSeedPhrase, so we just wrap with runCatching for now to avoid crash (#263) * fix: [#264] add null checking for BRKeyStore.removeAliasAndFiles (#270) * fix: [#265] add null checking, migrate viewpage… (#271) * fix: [WIP][#265] work in progress add null checking, migrate viewpager to viewpager2 and more * fix: [#265] finalize migration some deprecated class and implement null checking at FragmentTransactionItem * fix: dix dismiss outside FragmentTransactionDetails * 🚀[Release v2.12.2 20241118] Merge into Develop (#272) * 🚀[Release v2.11.1 071024] Merge into Main (#246) * replaced the control in PeerManager.c Signed-off-by: kcw-grunt <[email protected]> * reverted BRBitcoinAmount Signed-off-by: kcw-grunt <[email protected]> * Cleaning up the files Signed-off-by: kcw-grunt <[email protected]> * Removed Pusher remnants Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> * version bump Signed-off-by: kcw-grunt <[email protected]> * Removed donation button removed xml removed fragments removed references of the donation removed analytical events Signed-off-by: kcw-grunt <[email protected]> * fix: prevent activity close * code bump Signed-off-by: kcw-grunt <[email protected]> * enabled for Debug Signed-off-by: kcw-grunt <[email protected]> * fix: [#264] add null checking for BRKeyStore.removeAliasAndFiles (#270) * fix: [#265] add null checking, migrate viewpage… (#271) * fix: [WIP][#265] work in progress add null checking, migrate viewpager to viewpager2 and more * fix: [#265] finalize migration some deprecated class and implement null checking at FragmentTransactionItem * fix: dix dismiss outside FragmentTransactionDetails * code bump Signed-off-by: kcw-grunt <[email protected]> * version bump Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> Co-authored-by: andhikayuana <[email protected]> * revert minSDkVersion to 29 (#276) Signed-off-by: kcw-grunt <[email protected]> * fix: [#258] avoid OOM with cache the result of opsAll, previously called multiple times at onBindViewHolder (#277) * fix: [#258] avoid OOM with cache the result of opsAll, previously called multiple times at onBindViewHolder * chore: [#258] cleanup comment * fix: [#266] add null checking and default value based on iOS since getCurrency can produce null (#278) * fix: [#266] add null checking and default value based on iOS since getCurrency can produce null * chore: [#266] cleanup comment * fix: [#274] fixing locale on android 14 and setup test using junit & mockk (#282) * chore: [#274] initial setup test using JUnit & MockK * chore: [#274] add more test case at LocaleHelperTest * fix: [#274] fix default language from shared preferences * fix: [#274] disable language split on AAB * chore: [#274] rename method * chore: [#126] simplify exception handling at BRKeyStore._getData and record exception to Firebase Crashlytics (#283) * Techdebt/remove auth prompt (#256) * Check reenter pin freeze after the auth prompt deleted. Signed-off-by: kcw-grunt <[email protected]> * cleaned up deletion Signed-off-by: kcw-grunt <[email protected]> * Many removals - Removed the fingerprint xml - Removed the Fingerprint Fragment and java files - Removed the enum referencing the fingerprint prompt - Removed check of fingerprint enrollment and checks - Removed biometrics and fingerprint permissions Signed-off-by: kcw-grunt <[email protected]> * removed fingerprint image code and version bump Signed-off-by: kcw-grunt <[email protected]> * chore: remove FragmentFingerprint.java since, not used and failed to build --------- Signed-off-by: kcw-grunt <[email protected]> Co-authored-by: josikie <[email protected]> Co-authored-by: andhikayuana <[email protected]> * 🚀[Release v2.12.4 20241130] Merge into Develop (#286) * 🚀[Release v2.11.1 071024] Merge into Main (#246) * replaced the control in PeerManager.c Signed-off-by: kcw-grunt <[email protected]> * reverted BRBitcoinAmount Signed-off-by: kcw-grunt <[email protected]> * Cleaning up the files Signed-off-by: kcw-grunt <[email protected]> * Removed Pusher remnants Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> * 🚀[Release v2.12.2 20241118] Merge into Main (#273) * 🚀[Release v2.11.1 071024] Merge into Develop (#245) * replaced the control in PeerManager.c Signed-off-by: kcw-grunt <[email protected]> * reverted BRBitcoinAmount Signed-off-by: kcw-grunt <[email protected]> * Cleaning up the files Signed-off-by: kcw-grunt <[email protected]> * Removed Pusher remnants Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> * Added Fiat feature, and FCM for push notifications (#247) * Added fiat feature based on language user chose * added fcm for push notifications * Update PushNotificationService.kt * Added new Icon, removed duplicate fcm library, added in app messaging * Added new Icon, removed duplicate fcm library, added in app messaging * Tech debt/add af sdk (#248) * Recent newline Signed-off-by: kcw-grunt <[email protected]> * AF added Refactored cruft - AF working Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> * Techdebt/refactor brevents syncmarkers (#254) * Tech debt/add af sdk (#248) - AF working - Changed requiredActivity - Added analytics error report - test this.Activity is null or not - Bugfix - Phrase Reminder crash - added an exception handler for UserNotAuthenticatedException. - note: this should allow for the system to display the native authorization UI when needed - fixes issue - https://console.firebase.google.com/u/0/project/litewallet-beta/crashlytics/app/android:com.loafwallet/issues/09dac17241309f0e823ef597a9a82cd4 - Added dev note - remove calls to BREventManager - removed BREventManager - renamed error message - fixed Firebase Analytics event error Signed-off-by: kcw-grunt <[email protected]> * version bump update gitignore Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> * Techdebt/ fixed send issue add syncing measurements (#255) * removed unused BRSharedPreferences Signed-off-by: kcw-grunt <[email protected]> * started commenting out more Timber Signed-off-by: kcw-grunt <[email protected]> * Added more shared preferences for syncing Signed-off-by: kcw-grunt <[email protected]> * Commented out many verbose Timber logs Signed-off-by: kcw-grunt <[email protected]> * WIP Still trying to figure out the eplased time and last and start timestamps…??? I dunno Signed-off-by: kcw-grunt <[email protected]> * Moved sync measurment into the method calls Signed-off-by: kcw-grunt <[email protected]> * Debugged the install issue with send - Moved all the measurements in new methods - recalculated measure points - Added analytics - event did_complete_sync was shown! - adding a dummy file to make sure file system is set ||||WIP still verifying the JSON is present - added a blockheight label - changed the sleep time (a hack to allow the device time to refresh the view) to 100 ms from 500ms!! -WIP Why is the bundle not showing on time Signed-off-by: kcw-grunt <[email protected]> * replaces afID to first location Signed-off-by: kcw-grunt <[email protected]> * Removed redundant sync measurements Signed-off-by: kcw-grunt <[email protected]> * code bump Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> * Techdebt/test refactor cruft removal (#250) * Removed non english seed words -Refactor tests - Reset AnalyticsTests Signed-off-by: kcw-grunt <[email protected]> * Rename Bitcoinletter to Litecoinletters -added tests testLitecoinSymbolConstants testAppExternalURLConstants testFirebaseAnalyticsConstants Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> * fix: [#152] make sure using Fragment, FragmentManager and FragmentTransaction from androidx (#260) * fix: [#126] the issue came from FragmentBalanceSeedReminder.fetchSeedPhrase, so we just wrap with runCatching for now to avoid crash (#263) * version bump Signed-off-by: kcw-grunt <[email protected]> * Removed donation button removed xml removed fragments removed references of the donation removed analytical events Signed-off-by: kcw-grunt <[email protected]> * fix: prevent activity close * code bump Signed-off-by: kcw-grunt <[email protected]> * enabled for Debug Signed-off-by: kcw-grunt <[email protected]> * fix: [#264] add null checking for BRKeyStore.removeAliasAndFiles (#270) * fix: [#265] add null checking, migrate viewpage… (#271) * fix: [WIP][#265] work in progress add null checking, migrate viewpager to viewpager2 and more * fix: [#265] finalize migration some deprecated class and implement null checking at FragmentTransactionItem * fix: dix dismiss outside FragmentTransactionDetails * code bump Signed-off-by: kcw-grunt <[email protected]> * version bump Signed-off-by: kcw-grunt <[email protected]> --------- Signed-off-by: kcw-grunt <[email protected]> Co-authored-by: Josi Kie <[email protected]> Co-authored-by: Andhika Yuana <[email protected]> * bumped version and code * compiled the env (#284) please check @andhikayuana @josikie that you are able to compile * Users complained that recyclerView was setting to the wrong language - Polished to index to a language - bump code * chore: [#126] simplify exception handling at BRKeyStore._getData and record exception to Firebase Crashlytics (#283) --------- Signed-off-by: kcw-grunt <[email protected]> Co-authored-by: Josi Kie <[email protected]> Co-authored-by: Andhika Yuana <[email protected]> * Added abilities to copy transaction id by click the transaction id (#290) * Added abilities to copy transaction id by click the transaction id * Update build.gradle * version and code bump * Unit Test(s) Migration (#287) * chore: [test] add BRConstantsTest for unitTest and deprecated ConstantsTests inside androidTest * chore: [test] remove unused test files * chore: [test] add todo to fill the tests and change package name * chore: [test] add basic example * chore: [test] integrate with ci/cd * chore: [test][ci] fix Cannot find a definition for command named android/restore-gradle-cache * chore: [test][ci] fix Cannot find a definition for command named android/run-tests * chore: [test][ci] fix Unexpected argument(s): test-command * chore: [test][ci] fix Cannot find a definition for executor named android/android-docker * chore: [test][ci] add default for gradle.properties * chore: [test][ci] avoid breaking in build.gradle * chore: [test][ci] enable androidx and jetifier * chore: [test][ci] init submodule * chore: [test][ci] just using run command for execute unit test step * chore: [test][ci] add env for google-services.json * chore: [test][ci] add env for google-services.json * chore: [test][ci] add env for google-services.json * Major refactor of code to move classes to the ideal location - Removed cruft - Moved all tests to the unitTest directory - Remove poorly placed tests into (AndroidTest) - Commented old code into the new Kotlin class(es) - working in the first test of currency - Removed the paymentRequest method - Renamed Classes * chore: resolve CurrencyTests * Added notes --------- Co-authored-by: Kerry Washington <[email protected]> * feat: remote config feature toggle (#293) * feat: [remote-config] wip for remote config feature toggle * feat: [remote-config] implement base url toggle for prod and dev * feat: [test] add BRApiManagerTest * fix: fix getBaseUrlProd for FragmentBuy and add test * chore: change BRApiManager.fetchRates using getBaseUrlProd * version and code bump * Update .gitignore --------- Signed-off-by: kcw-grunt <[email protected]> Co-authored-by: Josi Kie <[email protected]> Co-authored-by: Andhika Yuana <[email protected]> Co-authored-by: josikie <[email protected]>
Overview
Setup Remote Config to more precisely manage feature release and also add the tests