Skip to content

Conversation

@JosephSanjaya
Copy link
Contributor

@JosephSanjaya JosephSanjaya commented Aug 21, 2025

📱 Description

The Unlock Screen has been redesigned with a new header, body, and footer structure for a cleaner and more organized look.

Platform

  • Android
  • iOS
  • Games-Unity
  • DevOps (AWS)
  • Website
  • C/Golang

🎯 Type of Change

  • 🐛 Bug fix
  • ✨ New feature
  • 🔧 Refactoring (code change that neither fixes a bug nor adds a feature)
  • 📚 Documentation update
  • 🎨 UI/UX improvement
  • ⚡ Performance improvement
  • 🧪 Test addition or improvement

📋 Changes

  • Revamped UI: The Unlock Screen has been redesigned with a new header, body, and footer structure for a cleaner and more organized look.
  • Dark Mode Toggle: Users can now toggle dark mode directly from the Unlock Screen.
  • Version Display: The app version is now displayed on the Unlock Screen.
  • Code Refinements:
    • Added BrainWalletLogo composable.
    • Added VersionCodeProvider for accessing version information.
    • PasscodeIndicator now accepts a modifier.
    • BrainwalletScaffold now supports a bottomBar.
    • Introduced LocalDarkModeFlag for theme access.
    • Added new drawable resources for the QR code icon and colored logo.
  • String Resource Update: The LTC price string format was updated.
  • Testing: Added unit tests for VersionCodeProvider.

🔗 Related Issues

🧪 Tests Status

  • Tests ran successfully locally?
  • Added more tests? How many? 3
  • Code coverage percentage of the codebase: __%

📸 Screenshots/Videos

Before After
image Animation

🎯 Reviewers

@kcw-grunt, @josikie

@kcw-grunt
Copy link
Collaborator

Thanks @JosephSanjaya .

We do not need a redesign. Just copy the current iOS design.

Please attach before and after screenshots to the PR.

@JosephSanjaya
Copy link
Contributor Author

Updated description before and after @kcw-grunt

@JosephSanjaya
Copy link
Contributor Author

Thanks @JosephSanjaya .

We do not need a redesign. Just copy the current iOS design.

Please attach before and after screenshots to the PR.

I think based on the GitHub issue, the change might not be as straightforward, since I’ll need to do a bit of refactoring in the legacy code to make some of the components reusable.

@JosephSanjaya
Copy link
Contributor Author

JosephSanjaya commented Aug 21, 2025

To be clear, I'm referring to the UI...design

We do need to see the before and after screenshot in the PR.

GH markedown is simple.

Please add it here

Before After
image Animation

updated the PR a while ago but here it is

@josikie
Copy link
Collaborator

josikie commented Aug 22, 2025

👀

@JosephSanjaya JosephSanjaya mentioned this pull request Aug 22, 2025
16 tasks
@JosephSanjaya JosephSanjaya force-pushed the js/feat/#138-new-lock-screen branch from c54fcd7 to ca0f85a Compare August 23, 2025 00:01
@JosephSanjaya JosephSanjaya added the enhancement New feature or request label Aug 23, 2025
@JosephSanjaya JosephSanjaya changed the title feat(#138): Improve Unlock Screen UI and add dark mode toggle feat(#138): Update Unlock Screen UI Aug 23, 2025
@JosephSanjaya JosephSanjaya added this to the Sprint 33 milestone Aug 23, 2025
@JosephSanjaya
Copy link
Contributor Author

any update regarding the PR @josikie @kcw-grunt ?

@josikie
Copy link
Collaborator

josikie commented Aug 23, 2025

Wait, I'm taking a look tonight @JosephSanjaya

Copy link
Collaborator

@josikie josikie left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks good! Thank you @JosephSanjaya

photo_2025-08-23_22-51-13
photo_2025-08-23_22-51-12
photo_2025-08-23_22-51-08

It just the QR code on light mode is too big ,the dollars text's colors don't match with the light mode, and the check besides it also need a match color to light mode, can you change it? Thanks

photo_2025-08-23_22-51-10

@JosephSanjaya
Copy link
Contributor Author

Okay thanks will look into it!

@JosephSanjaya
Copy link
Contributor Author

It looks good! Thank you @JosephSanjaya

photo_2025-08-23_22-51-13 photo_2025-08-23_22-51-12 photo_2025-08-23_22-51-08

It just the QR code on light mode is too big ,the dollars text's colors don't match with the light mode, and the check besides it also need a match color to light mode, can you change it? Thanks

photo_2025-08-23_22-51-10

for the QR i think the size is the same, the illusion is causing by the with background of the QR

@josikie
Copy link
Collaborator

josikie commented Aug 23, 2025

My pleasure! It almost covering the address @JosephSanjaya

@JosephSanjaya JosephSanjaya force-pushed the js/feat/#138-new-lock-screen branch from ca0f85a to 6baacd7 Compare August 24, 2025 02:09
@JosephSanjaya
Copy link
Contributor Author

Because im reusing component dialog, i see that the dialog components still not following our design system causing this problem. I already push the changes.

Light

Before After
image {2582A430-83C5-4F2B-8A60-77D77A0B8A22}

Dark

Before After
image {AED24656-6FEE-4FF1-B549-6B4C737D5877}

Can you recheck again @josikie

@josikie
Copy link
Collaborator

josikie commented Aug 24, 2025

Yes, I will check @JosephSanjaya

Copy link
Collaborator

@kcw-grunt kcw-grunt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please respond to my querires here:

@JosephSanjaya Is this recommended for all of the JC Kotlin scaffolding? We are reusing the old version extensively. How is this helping?

and

here

@JosephSanjaya ☝️ ? This seems quite arbitrary. Please explain the thinking of this number

containerColor = BrainwalletTheme.colors.surface,
contentColor = BrainwalletTheme.colors.content,
topBar = topBar,
bottomBar = bottomBar,
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JosephSanjaya Is this recommended for all of the JC Kotlin scaffolding? We are reusing the old version extensively. How is this helping?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JosephSanjaya ☝️ ?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JosephSanjaya ☝️ ?

Copy link
Contributor Author

@JosephSanjaya JosephSanjaya Aug 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you mean why we wrap the scaffold ? @kcw-grunt

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

By adding bottomBar, we’re simply exposing the full Scaffold contract through our wrapper. Since Scaffold has its own built-in handling for bottom components (like positioning and content padding), it’s better to expose and use it directly rather This way we stay consistent with the Material API, and avoid rework if a screen later needs a bottomBar.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

and bottomBar has default value, so we will not affect any other composable that use it

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Got it. Thanks @JosephSanjaya

textAlign = TextAlign.End,
color = BrainwalletTheme.colors.border
)
BrainWalletLogo(modifier = Modifier.width(268.dp))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Need to compare based on device sizes

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@JosephSanjaya ☝️ ? This seems quite arbitrary. Please explain the thinking of this number

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

{361E83A1-B6E1-4A0C-BB7F-A114DDF40740} Here is the preview based on: - Dark/Light Mode - Different Screen Size - Font SCale system settings by percentage.

The number i get from figma, and use DP to handle screen sizes

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

class VersionCodeProviderTest {

@Test
fun `Given a version code, When getVersionCode called, Then return that version code`() {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good. Thanks @JosephSanjaya

@JosephSanjaya
Copy link
Contributor Author

JosephSanjaya commented Aug 24, 2025

Sorry @kcw-grunt , your review just showed up for me now, but GitHub says it’s from 3 days ago 😅 Makes it look like I was ignoring it, but I promise I wasn’t it only appeared on my side just now.

@JosephSanjaya JosephSanjaya force-pushed the js/feat/#138-new-lock-screen branch from 6baacd7 to 2fde542 Compare August 25, 2025 09:21
@kcw-grunt kcw-grunt self-requested a review August 25, 2025 10:58
Copy link
Collaborator

@kcw-grunt kcw-grunt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just need rebase / resolve conflicts

@kcw-grunt kcw-grunt self-requested a review August 25, 2025 11:00
Copy link
Collaborator

@kcw-grunt kcw-grunt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just need a rebase @JosephSanjaya

@JosephSanjaya
Copy link
Contributor Author

on progress 🔃

@JosephSanjaya JosephSanjaya force-pushed the js/feat/#138-new-lock-screen branch from 2fde542 to 60d56a1 Compare August 25, 2025 11:21
@kcw-grunt kcw-grunt requested review from josikie and kcw-grunt August 25, 2025 11:43
Copy link
Collaborator

@kcw-grunt kcw-grunt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@kcw-grunt kcw-grunt dismissed josikie’s stale review August 25, 2025 11:51

Accidentally changed status @josikie

@kcw-grunt kcw-grunt merged commit e0aebb5 into develop Aug 25, 2025
2 checks passed
kcw-grunt added a commit that referenced this pull request Aug 25, 2025
* Redesign welcome screen

* Redesign ready screen

* 🚀[Release v4.7.2] Merge into Develop (#127)

* 🚀[Release v4.4.7] Merge into Main  (#70)

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update issue templates

* updated core changes

per @andhikayuana

* Rename .java to .kt

* chore: refactor BRApiManager & APIClient

* chore: remove unused part at APIClient

* feat: wip new peer discovery

* feat: implement selected peer ip address from cache (fetched from API)

* feat: implement selected peer ip address from cache (fetched from API)

* feat: filter out peers with NODE_NETWORK, NODE_BLOOM

* fix: race condition when clear shared prefs values after wipeAll

* Updating the core library

from the new peer discovery (v4.2.0)

* Chore/revert pre peer discovery (Android) (#69)

* chore: update core submodule

* chore: resolve conflict

* Update build.gradle.kts

version and code bump

* chore: for now at BRPeerManager.wrapConnectV2 only using connect, since the core using hardcoded peers

* fix: fix write down confirm screen (#63)

* fix: fix write down confirm screen

* fix: fix allow seed word item not unique

* chore: cherry picked and adjust from
- f2fa8e1e4fb9c7429fa86461b24b4463a7969ecf
- 98644c425b2fdae7b8b424708fb1a61ad983a9d8
- 93969278da8f95adc0c9f0f8411c8a27876a4d77
- 7ad4b9853b7d1bf7ddbaa576242d8800615a48fb
- 8e57d2a67420565b40b753dec5a533776da4821f

* fix: fix crash can't parse response inside LtcRepository.fetchRates

* fix: fix crash (failed parse) when SelectedPeersRepository.fetchSelectedPeers got unsuccessful response

* code bump

* fix: ConcurrentModificationException at BRPeerManager.txStatusUpdate

* feat: implement new API

* code bump

---------

Co-authored-by: Kerry Washington <[email protected]>

---------

Co-authored-by: andhikayuana <[email protected]>

* 🚀[Release v4.5.0] Merge into Main  (#78)

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update issue templates

* updated core changes

per @andhikayuana

* Rename .java to .kt

* chore: refactor BRApiManager & APIClient

* chore: remove unused part at APIClient

* feat: wip new peer discovery

* feat: implement selected peer ip address from cache (fetched from API)

* feat: implement selected peer ip address from cache (fetched from API)

* feat: filter out peers with NODE_NETWORK, NODE_BLOOM

* fix: race condition when clear shared prefs values after wipeAll

* Updating the core library

from the new peer discovery (v4.2.0)

* Chore/revert pre peer discovery (Android) (#69)

* chore: update core submodule

* chore: resolve conflict

* Update build.gradle.kts

version and code bump

* chore: for now at BRPeerManager.wrapConnectV2 only using connect, since the core using hardcoded peers

* fix: fix write down confirm screen (#63)

* fix: fix write down confirm screen

* fix: fix allow seed word item not unique

* chore: cherry picked and adjust from
- f2fa8e1e4fb9c7429fa86461b24b4463a7969ecf
- 98644c425b2fdae7b8b424708fb1a61ad983a9d8
- 93969278da8f95adc0c9f0f8411c8a27876a4d77
- 7ad4b9853b7d1bf7ddbaa576242d8800615a48fb
- 8e57d2a67420565b40b753dec5a533776da4821f

* fix: fix crash can't parse response inside LtcRepository.fetchRates

* fix: fix crash (failed parse) when SelectedPeersRepository.fetchSelectedPeers got unsuccessful response

* code bump

* fix: ConcurrentModificationException at BRPeerManager.txStatusUpdate

* feat: implement new API

* code bump

---------

Co-authored-by: Kerry Washington <[email protected]>

* feat: remove unused activity (ImportActivity) at AndroidManifest.xml (#71)

* fix: fix crash IllegalStateException: cannot make a new request because the previous response is still open (#73)

* code bump

* Feat/move tx fee (#74)

* chore: add new translations at strings.xml

* feat: move network fee to HomeSettingDrawerSheet & remove unused code

* fix: fix dismiss allow state loss (#76)

* fix: fix typo at strings.xml (#75)

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* version and code bump

---------

Co-authored-by: andhikayuana <[email protected]>

* 🚀[Release v4.5.4] Merge into Main (#87)

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update issue templates

* updated core changes

per @andhikayuana

* Rename .java to .kt

* chore: refactor BRApiManager & APIClient

* chore: remove unused part at APIClient

* feat: wip new peer discovery

* feat: implement selected peer ip address from cache (fetched from API)

* feat: implement selected peer ip address from cache (fetched from API)

* feat: filter out peers with NODE_NETWORK, NODE_BLOOM

* fix: race condition when clear shared prefs values after wipeAll

* Updating the core library

from the new peer discovery (v4.2.0)

* Chore/revert pre peer discovery (Android) (#69)

* chore: update core submodule

* chore: resolve conflict

* Update build.gradle.kts

version and code bump

* chore: for now at BRPeerManager.wrapConnectV2 only using connect, since the core using hardcoded peers

* fix: fix write down confirm screen (#63)

* fix: fix write down confirm screen

* fix: fix allow seed word item not unique

* chore: cherry picked and adjust from
- f2fa8e1e4fb9c7429fa86461b24b4463a7969ecf
- 98644c425b2fdae7b8b424708fb1a61ad983a9d8
- 93969278da8f95adc0c9f0f8411c8a27876a4d77
- 7ad4b9853b7d1bf7ddbaa576242d8800615a48fb
- 8e57d2a67420565b40b753dec5a533776da4821f

* fix: fix crash can't parse response inside LtcRepository.fetchRates

* fix: fix crash (failed parse) when SelectedPeersRepository.fetchSelectedPeers got unsuccessful response

* code bump

* fix: ConcurrentModificationException at BRPeerManager.txStatusUpdate

* feat: implement new API

* code bump

---------

Co-authored-by: Kerry Washington <[email protected]>

* feat: remove unused activity (ImportActivity) at AndroidManifest.xml (#71)

* fix: fix crash IllegalStateException: cannot make a new request because the previous response is still open (#73)

* code bump

* Feat/move tx fee (#74)

* chore: add new translations at strings.xml

* feat: move network fee to HomeSettingDrawerSheet & remove unused code

* fix: fix dismiss allow state loss (#76)

* fix: fix typo at strings.xml (#75)

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* version and code bump

* Added support url (#81)

- changed the language
- code bump

* version and code bump

* Revert from eda0f532 & cherry pick (#86)

* version bump

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* chore: set allowSpend to false when recommend rescan click

* fix: add delete transaction data from local database

* Removed chatty event

* chore: add analytics at BRWalletManager.publishCallback

* chore: make sure calculation and static fee same as iOS, add setting for selected fee type

---------

Co-authored-by: Kerry Washington <[email protected]>

* build bump

* Updated README

* code bump

* chore: open bread activity first then open moonpay widget (#88)

* code bump

---------

Co-authored-by: andhikayuana <[email protected]>

* 🚀[Release v4.5.5] Merge into Main (#101)

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update issue templates

* updated core changes

per @andhikayuana

* Rename .java to .kt

* chore: refactor BRApiManager & APIClient

* chore: remove unused part at APIClient

* feat: wip new peer discovery

* feat: implement selected peer ip address from cache (fetched from API)

* feat: implement selected peer ip address from cache (fetched from API)

* feat: filter out peers with NODE_NETWORK, NODE_BLOOM

* fix: race condition when clear shared prefs values after wipeAll

* Updating the core library

from the new peer discovery (v4.2.0)

* Chore/revert pre peer discovery (Android) (#69)

* chore: update core submodule

* chore: resolve conflict

* Update build.gradle.kts

version and code bump

* chore: for now at BRPeerManager.wrapConnectV2 only using connect, since the core using hardcoded peers

* fix: fix write down confirm screen (#63)

* fix: fix write down confirm screen

* fix: fix allow seed word item not unique

* chore: cherry picked and adjust from
- f2fa8e1e4fb9c7429fa86461b24b4463a7969ecf
- 98644c425b2fdae7b8b424708fb1a61ad983a9d8
- 93969278da8f95adc0c9f0f8411c8a27876a4d77
- 7ad4b9853b7d1bf7ddbaa576242d8800615a48fb
- 8e57d2a67420565b40b753dec5a533776da4821f

* fix: fix crash can't parse response inside LtcRepository.fetchRates

* fix: fix crash (failed parse) when SelectedPeersRepository.fetchSelectedPeers got unsuccessful response

* code bump

* fix: ConcurrentModificationException at BRPeerManager.txStatusUpdate

* feat: implement new API

* code bump

---------

Co-authored-by: Kerry Washington <[email protected]>

* feat: remove unused activity (ImportActivity) at AndroidManifest.xml (#71)

* fix: fix crash IllegalStateException: cannot make a new request because the previous response is still open (#73)

* code bump

* Feat/move tx fee (#74)

* chore: add new translations at strings.xml

* feat: move network fee to HomeSettingDrawerSheet & remove unused code

* fix: fix dismiss allow state loss (#76)

* fix: fix typo at strings.xml (#75)

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* version and code bump

* Added support url (#81)

- changed the language
- code bump

* version and code bump

* Revert from eda0f532 & cherry pick (#86)

* version bump

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* chore: set allowSpend to false when recommend rescan click

* fix: add delete transaction data from local database

* Removed chatty event

* chore: add analytics at BRWalletManager.publishCallback

* chore: make sure calculation and static fee same as iOS, add setting for selected fee type

---------

Co-authored-by: Kerry Washington <[email protected]>

* build bump

* chore: open bread activity first then open moonpay widget (#88)

* Adjustment for circleci (#89)

* chore: wip adjustment for screengrab

* chore: [circleci] adjust config.yml

* chore: [circleci] update config.yml, Fastfile, Gemfile.lock, RecoverWalletScreenGrabsTest.kt

* chore: [circleci] for now just unit-test

* fix: android: Footer version label is obfuscated (#92)

* fix: android: Footer version label is obfuscated

* fix: [#92] android: Footer version label is obfuscated

* fix: You saved it right screen reset button covers words (#93)

* fix: [#84] change seed words layout to lazy vertical grid

* fix: [#84] refactor seed words layout

* tiny resizing (#94)

* code and version bump

* change break (#97)

adds a android user agent and externalID

* build code number

fix: [#96] remove bottom_nav_menu_us and just using bottom_nav_menu for consistency (#98)

* fix: [#137] fix: Reset fiat options in Buy / Receive modal (#99)

* Chore/update device data (#100)

* change break

adds a android user agent and externalID

* Update ReceiveDialogViewModel.kt

* chore: refactor request params for fetchMoonpaySignedUrl

---------

Co-authored-by: andhikayuana <[email protected]>

* Update build.gradle.kts

---------

Co-authored-by: andhikayuana <[email protected]>

* 🚀[Release v4.6.0] Merge into Main (#104)

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update issue templates

* updated core changes

per @andhikayuana

* Rename .java to .kt

* chore: refactor BRApiManager & APIClient

* chore: remove unused part at APIClient

* feat: wip new peer discovery

* feat: implement selected peer ip address from cache (fetched from API)

* feat: implement selected peer ip address from cache (fetched from API)

* feat: filter out peers with NODE_NETWORK, NODE_BLOOM

* fix: race condition when clear shared prefs values after wipeAll

* Updating the core library

from the new peer discovery (v4.2.0)

* Chore/revert pre peer discovery (Android) (#69)

* chore: update core submodule

* chore: resolve conflict

* Update build.gradle.kts

version and code bump

* chore: for now at BRPeerManager.wrapConnectV2 only using connect, since the core using hardcoded peers

* fix: fix write down confirm screen (#63)

* fix: fix write down confirm screen

* fix: fix allow seed word item not unique

* chore: cherry picked and adjust from
- f2fa8e1e4fb9c7429fa86461b24b4463a7969ecf
- 98644c425b2fdae7b8b424708fb1a61ad983a9d8
- 93969278da8f95adc0c9f0f8411c8a27876a4d77
- 7ad4b9853b7d1bf7ddbaa576242d8800615a48fb
- 8e57d2a67420565b40b753dec5a533776da4821f

* fix: fix crash can't parse response inside LtcRepository.fetchRates

* fix: fix crash (failed parse) when SelectedPeersRepository.fetchSelectedPeers got unsuccessful response

* code bump

* fix: ConcurrentModificationException at BRPeerManager.txStatusUpdate

* feat: implement new API

* code bump

---------

Co-authored-by: Kerry Washington <[email protected]>

* feat: remove unused activity (ImportActivity) at AndroidManifest.xml (#71)

* fix: fix crash IllegalStateException: cannot make a new request because the previous response is still open (#73)

* code bump

* Feat/move tx fee (#74)

* chore: add new translations at strings.xml

* feat: move network fee to HomeSettingDrawerSheet & remove unused code

* fix: fix dismiss allow state loss (#76)

* fix: fix typo at strings.xml (#75)

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* version and code bump

* Added support url (#81)

- changed the language
- code bump

* version and code bump

* Revert from eda0f532 & cherry pick (#86)

* version bump

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* chore: set allowSpend to false when recommend rescan click

* fix: add delete transaction data from local database

* Removed chatty event

* chore: add analytics at BRWalletManager.publishCallback

* chore: make sure calculation and static fee same as iOS, add setting for selected fee type

---------

Co-authored-by: Kerry Washington <[email protected]>

* build bump

* chore: open bread activity first then open moonpay widget (#88)

* Adjustment for circleci (#89)

* chore: wip adjustment for screengrab

* chore: [circleci] adjust config.yml

* chore: [circleci] update config.yml, Fastfile, Gemfile.lock, RecoverWalletScreenGrabsTest.kt

* chore: [circleci] for now just unit-test

* fix: android: Footer version label is obfuscated (#92)

* fix: android: Footer version label is obfuscated

* fix: [#92] android: Footer version label is obfuscated

* fix: You saved it right screen reset button covers words (#93)

* fix: [#84] change seed words layout to lazy vertical grid

* fix: [#84] refactor seed words layout

* tiny resizing (#94)

* code and version bump

* change break (#97)

adds a android user agent and externalID

* build code number

fix: [#96] remove bottom_nav_menu_us and just using bottom_nav_menu for consistency (#98)

* fix: [#137] fix: Reset fiat options in Buy / Receive modal (#99)

* Chore/update device data (#100)

* change break

adds a android user agent and externalID

* Update ReceiveDialogViewModel.kt

* chore: refactor request params for fetchMoonpaySignedUrl

---------

Co-authored-by: andhikayuana <[email protected]>

* Add agent string obfuscation (#103)

* version bump

* code bump

---------

Co-authored-by: andhikayuana <[email protected]>

* 🚀[Release v4.6.1] Merge into Main (#107)

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update issue templates

* updated core changes

per @andhikayuana

* Rename .java to .kt

* chore: refactor BRApiManager & APIClient

* chore: remove unused part at APIClient

* feat: wip new peer discovery

* feat: implement selected peer ip address from cache (fetched from API)

* feat: implement selected peer ip address from cache (fetched from API)

* feat: filter out peers with NODE_NETWORK, NODE_BLOOM

* fix: race condition when clear shared prefs values after wipeAll

* Updating the core library

from the new peer discovery (v4.2.0)

* Chore/revert pre peer discovery (Android) (#69)

* chore: update core submodule

* chore: resolve conflict

* Update build.gradle.kts

version and code bump

* chore: for now at BRPeerManager.wrapConnectV2 only using connect, since the core using hardcoded peers

* fix: fix write down confirm screen (#63)

* fix: fix write down confirm screen

* fix: fix allow seed word item not unique

* chore: cherry picked and adjust from
- f2fa8e1e4fb9c7429fa86461b24b4463a7969ecf
- 98644c425b2fdae7b8b424708fb1a61ad983a9d8
- 93969278da8f95adc0c9f0f8411c8a27876a4d77
- 7ad4b9853b7d1bf7ddbaa576242d8800615a48fb
- 8e57d2a67420565b40b753dec5a533776da4821f

* fix: fix crash can't parse response inside LtcRepository.fetchRates

* fix: fix crash (failed parse) when SelectedPeersRepository.fetchSelectedPeers got unsuccessful response

* code bump

* fix: ConcurrentModificationException at BRPeerManager.txStatusUpdate

* feat: implement new API

* code bump

---------

Co-authored-by: Kerry Washington <[email protected]>

* feat: remove unused activity (ImportActivity) at AndroidManifest.xml (#71)

* fix: fix crash IllegalStateException: cannot make a new request because the previous response is still open (#73)

* code bump

* Feat/move tx fee (#74)

* chore: add new translations at strings.xml

* feat: move network fee to HomeSettingDrawerSheet & remove unused code

* fix: fix dismiss allow state loss (#76)

* fix: fix typo at strings.xml (#75)

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* version and code bump

* Added support url (#81)

- changed the language
- code bump

* version and code bump

* Revert from eda0f532 & cherry pick (#86)

* version bump

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* chore: set allowSpend to false when recommend rescan click

* fix: add delete transaction data from local database

* Removed chatty event

* chore: add analytics at BRWalletManager.publishCallback

* chore: make sure calculation and static fee same as iOS, add setting for selected fee type

---------

Co-authored-by: Kerry Washington <[email protected]>

* build bump

* chore: open bread activity first then open moonpay widget (#88)

* Adjustment for circleci (#89)

* chore: wip adjustment for screengrab

* chore: [circleci] adjust config.yml

* chore: [circleci] update config.yml, Fastfile, Gemfile.lock, RecoverWalletScreenGrabsTest.kt

* chore: [circleci] for now just unit-test

* fix: android: Footer version label is obfuscated (#92)

* fix: android: Footer version label is obfuscated

* fix: [#92] android: Footer version label is obfuscated

* fix: You saved it right screen reset button covers words (#93)

* fix: [#84] change seed words layout to lazy vertical grid

* fix: [#84] refactor seed words layout

* tiny resizing (#94)

* code and version bump

* change break (#97)

adds a android user agent and externalID

* build code number

fix: [#96] remove bottom_nav_menu_us and just using bottom_nav_menu for consistency (#98)

* fix: [#137] fix: Reset fiat options in Buy / Receive modal (#99)

* Chore/update device data (#100)

* change break

adds a android user agent and externalID

* Update ReceiveDialogViewModel.kt

* chore: refactor request params for fetchMoonpaySignedUrl

---------

Co-authored-by: andhikayuana <[email protected]>

* Add agent string obfuscation (#103)

* updated metadata (#105)

* chore: remove screen lock detection (#106)

* build bump

---------

Co-authored-by: andhikayuana <[email protected]>

* 🚀[Release v4.6.2] Merge into Main (#110)

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update issue templates

* updated core changes

per @andhikayuana

* Rename .java to .kt

* chore: refactor BRApiManager & APIClient

* chore: remove unused part at APIClient

* feat: wip new peer discovery

* feat: implement selected peer ip address from cache (fetched from API)

* feat: implement selected peer ip address from cache (fetched from API)

* feat: filter out peers with NODE_NETWORK, NODE_BLOOM

* fix: race condition when clear shared prefs values after wipeAll

* Updating the core library

from the new peer discovery (v4.2.0)

* Chore/revert pre peer discovery (Android) (#69)

* chore: update core submodule

* chore: resolve conflict

* Update build.gradle.kts

version and code bump

* chore: for now at BRPeerManager.wrapConnectV2 only using connect, since the core using hardcoded peers

* fix: fix write down confirm screen (#63)

* fix: fix write down confirm screen

* fix: fix allow seed word item not unique

* chore: cherry picked and adjust from
- f2fa8e1e4fb9c7429fa86461b24b4463a7969ecf
- 98644c425b2fdae7b8b424708fb1a61ad983a9d8
- 93969278da8f95adc0c9f0f8411c8a27876a4d77
- 7ad4b9853b7d1bf7ddbaa576242d8800615a48fb
- 8e57d2a67420565b40b753dec5a533776da4821f

* fix: fix crash can't parse response inside LtcRepository.fetchRates

* fix: fix crash (failed parse) when SelectedPeersRepository.fetchSelectedPeers got unsuccessful response

* code bump

* fix: ConcurrentModificationException at BRPeerManager.txStatusUpdate

* feat: implement new API

* code bump

---------

Co-authored-by: Kerry Washington <[email protected]>

* feat: remove unused activity (ImportActivity) at AndroidManifest.xml (#71)

* fix: fix crash IllegalStateException: cannot make a new request because the previous response is still open (#73)

* code bump

* Feat/move tx fee (#74)

* chore: add new translations at strings.xml

* feat: move network fee to HomeSettingDrawerSheet & remove unused code

* fix: fix dismiss allow state loss (#76)

* fix: fix typo at strings.xml (#75)

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* version and code bump

* Added support url (#81)

- changed the language
- code bump

* version and code bump

* Revert from eda0f532 & cherry pick (#86)

* version bump

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* chore: set allowSpend to false when recommend rescan click

* fix: add delete transaction data from local database

* Removed chatty event

* chore: add analytics at BRWalletManager.publishCallback

* chore: make sure calculation and static fee same as iOS, add setting for selected fee type

---------

Co-authored-by: Kerry Washington <[email protected]>

* build bump

* chore: open bread activity first then open moonpay widget (#88)

* Adjustment for circleci (#89)

* chore: wip adjustment for screengrab

* chore: [circleci] adjust config.yml

* chore: [circleci] update config.yml, Fastfile, Gemfile.lock, RecoverWalletScreenGrabsTest.kt

* chore: [circleci] for now just unit-test

* fix: android: Footer version label is obfuscated (#92)

* fix: android: Footer version label is obfuscated

* fix: [#92] android: Footer version label is obfuscated

* fix: You saved it right screen reset button covers words (#93)

* fix: [#84] change seed words layout to lazy vertical grid

* fix: [#84] refactor seed words layout

* tiny resizing (#94)

* code and version bump

* change break (#97)

adds a android user agent and externalID

* build code number

fix: [#96] remove bottom_nav_menu_us and just using bottom_nav_menu for consistency (#98)

* fix: [#137] fix: Reset fiat options in Buy / Receive modal (#99)

* Chore/update device data (#100)

* change break

adds a android user agent and externalID

* Update ReceiveDialogViewModel.kt

* chore: refactor request params for fetchMoonpaySignedUrl

---------

Co-authored-by: andhikayuana <[email protected]>

* Add agent string obfuscation (#103)

* updated metadata (#105)

* chore: remove screen lock detection (#106)

* changed to tap

* Added instruction label

-added localizations

* Added 'empty string for when confirm is completed

* version and code bump

* fix typo

replaced click file with mp3
added error sound

* added 3 languages

* 🧰  Fx/seed words UI polish (#108)

* changed to tap

* Added instruction label

-added localizations

* Added 'empty string for when confirm is completed

* version and code bump

* fix typo

replaced click file with mp3
added error sound

* Removed unused audio files

* polished tests

* removed unused asset pack

* code bump

* code bump

* ❇️ Feat/add polish punjabi farsi (#109)

* changed to tap

* Added instruction label

-added localizations

* Added 'empty string for when confirm is completed

* version and code bump

* fix typo

replaced click file with mp3
added error sound

* added 3 languages

* Removed unused audio files

* polished tests

* removed unused asset pack

* code bump

* broke out completion of the seed phrase and navigation

- Feedback was a user could complete seed phrase and not tap "Game and Sync"
- Forced users to start all over
- Saved a correct seed phrase confirmation into memory

* code bump

* fix for

https://console.firebase.google.com/project/brainwallet-mobile/crashlytics/app/android:ltd.grunt.brainwallet/issues/1386f366ab35e9112a6b742d629bb0be?time=last-seven-days&types=crash&sessionEventKey=685DA96C00BF00015A7AFEA30E0DB49C_2098799426616143441

* measure where users tap

* code bump

* fix: fix YourSeedProveItState.isWordUsedCorrectly

* Cleaned commented out BuyLitecoinscreen

* code bump

---------

Co-authored-by: andhikayuana <[email protected]>

* 🚀[Release v4.7.0] Merge into Main  (#115)

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update issue templates

* updated core changes

per @andhikayuana

* Rename .java to .kt

* chore: refactor BRApiManager & APIClient

* chore: remove unused part at APIClient

* feat: wip new peer discovery

* feat: implement selected peer ip address from cache (fetched from API)

* feat: implement selected peer ip address from cache (fetched from API)

* feat: filter out peers with NODE_NETWORK, NODE_BLOOM

* fix: race condition when clear shared prefs values after wipeAll

* Updating the core library

from the new peer discovery (v4.2.0)

* Chore/revert pre peer discovery (Android) (#69)

* chore: update core submodule

* chore: resolve conflict

* Update build.gradle.kts

version and code bump

* chore: for now at BRPeerManager.wrapConnectV2 only using connect, since the core using hardcoded peers

* fix: fix write down confirm screen (#63)

* fix: fix write down confirm screen

* fix: fix allow seed word item not unique

* chore: cherry picked and adjust from
- f2fa8e1e4fb9c7429fa86461b24b4463a7969ecf
- 98644c425b2fdae7b8b424708fb1a61ad983a9d8
- 93969278da8f95adc0c9f0f8411c8a27876a4d77
- 7ad4b9853b7d1bf7ddbaa576242d8800615a48fb
- 8e57d2a67420565b40b753dec5a533776da4821f

* fix: fix crash can't parse response inside LtcRepository.fetchRates

* fix: fix crash (failed parse) when SelectedPeersRepository.fetchSelectedPeers got unsuccessful response

* code bump

* fix: ConcurrentModificationException at BRPeerManager.txStatusUpdate

* feat: implement new API

* code bump

---------

Co-authored-by: Kerry Washington <[email protected]>

* feat: remove unused activity (ImportActivity) at AndroidManifest.xml (#71)

* fix: fix crash IllegalStateException: cannot make a new request because the previous response is still open (#73)

* code bump

* Feat/move tx fee (#74)

* chore: add new translations at strings.xml

* feat: move network fee to HomeSettingDrawerSheet & remove unused code

* fix: fix dismiss allow state loss (#76)

* fix: fix typo at strings.xml (#75)

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* version and code bump

* Added support url (#81)

- changed the language
- code bump

* version and code bump

* Revert from eda0f532 & cherry pick (#86)

* version bump

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* chore: set allowSpend to false when recommend rescan click

* fix: add delete transaction data from local database

* Removed chatty event

* chore: add analytics at BRWalletManager.publishCallback

* chore: make sure calculation and static fee same as iOS, add setting for selected fee type

---------

Co-authored-by: Kerry Washington <[email protected]>

* build bump

* chore: open bread activity first then open moonpay widget (#88)

* Adjustment for circleci (#89)

* chore: wip adjustment for screengrab

* chore: [circleci] adjust config.yml

* chore: [circleci] update config.yml, Fastfile, Gemfile.lock, RecoverWalletScreenGrabsTest.kt

* chore: [circleci] for now just unit-test

* fix: android: Footer version label is obfuscated (#92)

* fix: android: Footer version label is obfuscated

* fix: [#92] android: Footer version label is obfuscated

* fix: You saved it right screen reset button covers words (#93)

* fix: [#84] change seed words layout to lazy vertical grid

* fix: [#84] refactor seed words layout

* tiny resizing (#94)

* code and version bump

* change break (#97)

adds a android user agent and externalID

* build code number

fix: [#96] remove bottom_nav_menu_us and just using bottom_nav_menu for consistency (#98)

* fix: [#137] fix: Reset fiat options in Buy / Receive modal (#99)

* Chore/update device data (#100)

* change break

adds a android user agent and externalID

* Update ReceiveDialogViewModel.kt

* chore: refactor request params for fetchMoonpaySignedUrl

---------

Co-authored-by: andhikayuana <[email protected]>

* Add agent string obfuscation (#103)

* updated metadata (#105)

* chore: remove screen lock detection (#106)

* 🧰  Fx/seed words UI polish (#108)

* changed to tap

* Added instruction label

-added localizations

* Added 'empty string for when confirm is completed

* version and code bump

* fix typo

replaced click file with mp3
added error sound

* ❇️ Feat/add polish punjabi farsi (#109)

* changed to tap

* Added instruction label

-added localizations

* Added 'empty string for when confirm is completed

* version and code bump

* fix typo

replaced click file with mp3
added error sound

* added 3 languages

* Removed unused audio files

* polished tests

* removed unused asset pack

* code bump

* fix: fix YourSeedProveItState.isWordUsedCorrectly (#111)

* Upgrade targetSdk 36 (#113)

* chore: change drawable with density for brainwallet_logotype_white

* chore: adjustment WelcomeScreen.kt

* chore: adjustment for targetSdk 36 also support 16KB page size

* bump

clean extra semicolon

* Update pro-guard-rules

* Updated the version

---------

Co-authored-by: andhikayuana <[email protected]>

* Updated games module to v1.1.0

* Updated the games submodule

* Renamed and tested with user skips

---------

Co-authored-by: andhikayuana <[email protected]>

* Fix(#227): Crash when launching MoonPay Widget (#126)

Refactored the MoonPay widget integration to a dedicated Composable
(`MoonPayWidgetLauncher`) to ensure proper state handling and loading
behavior.

- Added `MoonPayWidgetLauncher.kt` with Composable and ViewModel
  for managing signed URL fetch and Custom Tab launch.
- Ensures loading state covers the whole screen, preventing UI crashes.
- Removed legacy static method `LegacyNavigation.showMoonPayWidget`.
- Updated `ReceiveDialog.kt` and `BuyLitecoinScreen.kt` to use the new
  Composable.
- Minor cleanup in `LegacyNavigation.kt`.

* feat(#138): Improve Unlock Screen UI and add dark mode toggle (#122)

---------

Co-authored-by: Kerry Washington <[email protected]>
Co-authored-by: andhikayuana <[email protected]>
Co-authored-by: Joseph Sanjaya <[email protected]>
kcw-grunt added a commit that referenced this pull request Sep 4, 2025
* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update issue templates

* updated core changes

per @andhikayuana

* Rename .java to .kt

* chore: refactor BRApiManager & APIClient

* chore: remove unused part at APIClient

* feat: wip new peer discovery

* feat: implement selected peer ip address from cache (fetched from API)

* feat: implement selected peer ip address from cache (fetched from API)

* feat: filter out peers with NODE_NETWORK, NODE_BLOOM

* fix: race condition when clear shared prefs values after wipeAll

* Updating the core library

from the new peer discovery (v4.2.0)

* Chore/revert pre peer discovery (Android) (#69)

* chore: update core submodule

* chore: resolve conflict

* Update build.gradle.kts

version and code bump

* chore: for now at BRPeerManager.wrapConnectV2 only using connect, since the core using hardcoded peers

* fix: fix write down confirm screen (#63)

* fix: fix write down confirm screen

* fix: fix allow seed word item not unique

* chore: cherry picked and adjust from
- f2fa8e1e4fb9c7429fa86461b24b4463a7969ecf
- 98644c425b2fdae7b8b424708fb1a61ad983a9d8
- 93969278da8f95adc0c9f0f8411c8a27876a4d77
- 7ad4b9853b7d1bf7ddbaa576242d8800615a48fb
- 8e57d2a67420565b40b753dec5a533776da4821f

* fix: fix crash can't parse response inside LtcRepository.fetchRates

* fix: fix crash (failed parse) when SelectedPeersRepository.fetchSelectedPeers got unsuccessful response

* code bump

* fix: ConcurrentModificationException at BRPeerManager.txStatusUpdate

* feat: implement new API

* code bump

---------

Co-authored-by: Kerry Washington <[email protected]>

* feat: remove unused activity (ImportActivity) at AndroidManifest.xml (#71)

* fix: fix crash IllegalStateException: cannot make a new request because the previous response is still open (#73)

* code bump

* Feat/move tx fee (#74)

* chore: add new translations at strings.xml

* feat: move network fee to HomeSettingDrawerSheet & remove unused code

* fix: fix dismiss allow state loss (#76)

* fix: fix typo at strings.xml (#75)

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* version and code bump

* Added support url (#81)

- changed the language
- code bump

* version and code bump

* Revert from eda0f532 & cherry pick (#86)

* version bump

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* chore: set allowSpend to false when recommend rescan click

* fix: add delete transaction data from local database

* Removed chatty event

* chore: add analytics at BRWalletManager.publishCallback

* chore: make sure calculation and static fee same as iOS, add setting for selected fee type

---------

Co-authored-by: Kerry Washington <[email protected]>

* build bump

* chore: open bread activity first then open moonpay widget (#88)

* Adjustment for circleci (#89)

* chore: wip adjustment for screengrab

* chore: [circleci] adjust config.yml

* chore: [circleci] update config.yml, Fastfile, Gemfile.lock, RecoverWalletScreenGrabsTest.kt

* chore: [circleci] for now just unit-test

* fix: android: Footer version label is obfuscated (#92)

* fix: android: Footer version label is obfuscated

* fix: [#92] android: Footer version label is obfuscated

* fix: You saved it right screen reset button covers words (#93)

* fix: [#84] change seed words layout to lazy vertical grid

* fix: [#84] refactor seed words layout

* tiny resizing (#94)

* code and version bump

* change break (#97)

adds a android user agent and externalID

* build code number

fix: [#96] remove bottom_nav_menu_us and just using bottom_nav_menu for consistency (#98)

* fix: [#137] fix: Reset fiat options in Buy / Receive modal (#99)

* Chore/update device data (#100)

* change break

adds a android user agent and externalID

* Update ReceiveDialogViewModel.kt

* chore: refactor request params for fetchMoonpaySignedUrl

---------

Co-authored-by: andhikayuana <[email protected]>

* Add agent string obfuscation (#103)

* updated metadata (#105)

* chore: remove screen lock detection (#106)

* 🧰  Fx/seed words UI polish (#108)

* changed to tap

* Added instruction label

-added localizations

* Added 'empty string for when confirm is completed

* version and code bump

* fix typo

replaced click file with mp3
added error sound

* ❇️ Feat/add polish punjabi farsi (#109)

* changed to tap

* Added instruction label

-added localizations

* Added 'empty string for when confirm is completed

* version and code bump

* fix typo

replaced click file with mp3
added error sound

* added 3 languages

* Removed unused audio files

* polished tests

* removed unused asset pack

* code bump

* fix: fix YourSeedProveItState.isWordUsedCorrectly (#111)

* Upgrade targetSdk 36 (#113)

* chore: change drawable with density for brainwallet_logotype_white

* chore: adjustment WelcomeScreen.kt

* chore: adjustment for targetSdk 36 also support 16KB page size

* feat(#195): adopt koin annotation for dependency injection (#120)

* Create PULL_REQUEST_TEMPLATE.md

Create PULL_REQUEST_TEMPLATE.md

* bump for test (#121)

* bump for test

* Updated the template

* polishes

* feat(#174): initiate games module (#119)

* Force pushed the version and code bump and catch up with Prod.

* 🚀[Release v4.7.2] Merge into Develop (#127)

* 🚀[Release v4.4.7] Merge into Main  (#70)

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update issue templates

* updated core changes

per @andhikayuana

* Rename .java to .kt

* chore: refactor BRApiManager & APIClient

* chore: remove unused part at APIClient

* feat: wip new peer discovery

* feat: implement selected peer ip address from cache (fetched from API)

* feat: implement selected peer ip address from cache (fetched from API)

* feat: filter out peers with NODE_NETWORK, NODE_BLOOM

* fix: race condition when clear shared prefs values after wipeAll

* Updating the core library

from the new peer discovery (v4.2.0)

* Chore/revert pre peer discovery (Android) (#69)

* chore: update core submodule

* chore: resolve conflict

* Update build.gradle.kts

version and code bump

* chore: for now at BRPeerManager.wrapConnectV2 only using connect, since the core using hardcoded peers

* fix: fix write down confirm screen (#63)

* fix: fix write down confirm screen

* fix: fix allow seed word item not unique

* chore: cherry picked and adjust from
- f2fa8e1e4fb9c7429fa86461b24b4463a7969ecf
- 98644c425b2fdae7b8b424708fb1a61ad983a9d8
- 93969278da8f95adc0c9f0f8411c8a27876a4d77
- 7ad4b9853b7d1bf7ddbaa576242d8800615a48fb
- 8e57d2a67420565b40b753dec5a533776da4821f

* fix: fix crash can't parse response inside LtcRepository.fetchRates

* fix: fix crash (failed parse) when SelectedPeersRepository.fetchSelectedPeers got unsuccessful response

* code bump

* fix: ConcurrentModificationException at BRPeerManager.txStatusUpdate

* feat: implement new API

* code bump

---------

Co-authored-by: Kerry Washington <[email protected]>

---------

Co-authored-by: andhikayuana <[email protected]>

* 🚀[Release v4.5.0] Merge into Main  (#78)

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update issue templates

* updated core changes

per @andhikayuana

* Rename .java to .kt

* chore: refactor BRApiManager & APIClient

* chore: remove unused part at APIClient

* feat: wip new peer discovery

* feat: implement selected peer ip address from cache (fetched from API)

* feat: implement selected peer ip address from cache (fetched from API)

* feat: filter out peers with NODE_NETWORK, NODE_BLOOM

* fix: race condition when clear shared prefs values after wipeAll

* Updating the core library

from the new peer discovery (v4.2.0)

* Chore/revert pre peer discovery (Android) (#69)

* chore: update core submodule

* chore: resolve conflict

* Update build.gradle.kts

version and code bump

* chore: for now at BRPeerManager.wrapConnectV2 only using connect, since the core using hardcoded peers

* fix: fix write down confirm screen (#63)

* fix: fix write down confirm screen

* fix: fix allow seed word item not unique

* chore: cherry picked and adjust from
- f2fa8e1e4fb9c7429fa86461b24b4463a7969ecf
- 98644c425b2fdae7b8b424708fb1a61ad983a9d8
- 93969278da8f95adc0c9f0f8411c8a27876a4d77
- 7ad4b9853b7d1bf7ddbaa576242d8800615a48fb
- 8e57d2a67420565b40b753dec5a533776da4821f

* fix: fix crash can't parse response inside LtcRepository.fetchRates

* fix: fix crash (failed parse) when SelectedPeersRepository.fetchSelectedPeers got unsuccessful response

* code bump

* fix: ConcurrentModificationException at BRPeerManager.txStatusUpdate

* feat: implement new API

* code bump

---------

Co-authored-by: Kerry Washington <[email protected]>

* feat: remove unused activity (ImportActivity) at AndroidManifest.xml (#71)

* fix: fix crash IllegalStateException: cannot make a new request because the previous response is still open (#73)

* code bump

* Feat/move tx fee (#74)

* chore: add new translations at strings.xml

* feat: move network fee to HomeSettingDrawerSheet & remove unused code

* fix: fix dismiss allow state loss (#76)

* fix: fix typo at strings.xml (#75)

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* version and code bump

---------

Co-authored-by: andhikayuana <[email protected]>

* 🚀[Release v4.5.4] Merge into Main (#87)

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update issue templates

* updated core changes

per @andhikayuana

* Rename .java to .kt

* chore: refactor BRApiManager & APIClient

* chore: remove unused part at APIClient

* feat: wip new peer discovery

* feat: implement selected peer ip address from cache (fetched from API)

* feat: implement selected peer ip address from cache (fetched from API)

* feat: filter out peers with NODE_NETWORK, NODE_BLOOM

* fix: race condition when clear shared prefs values after wipeAll

* Updating the core library

from the new peer discovery (v4.2.0)

* Chore/revert pre peer discovery (Android) (#69)

* chore: update core submodule

* chore: resolve conflict

* Update build.gradle.kts

version and code bump

* chore: for now at BRPeerManager.wrapConnectV2 only using connect, since the core using hardcoded peers

* fix: fix write down confirm screen (#63)

* fix: fix write down confirm screen

* fix: fix allow seed word item not unique

* chore: cherry picked and adjust from
- f2fa8e1e4fb9c7429fa86461b24b4463a7969ecf
- 98644c425b2fdae7b8b424708fb1a61ad983a9d8
- 93969278da8f95adc0c9f0f8411c8a27876a4d77
- 7ad4b9853b7d1bf7ddbaa576242d8800615a48fb
- 8e57d2a67420565b40b753dec5a533776da4821f

* fix: fix crash can't parse response inside LtcRepository.fetchRates

* fix: fix crash (failed parse) when SelectedPeersRepository.fetchSelectedPeers got unsuccessful response

* code bump

* fix: ConcurrentModificationException at BRPeerManager.txStatusUpdate

* feat: implement new API

* code bump

---------

Co-authored-by: Kerry Washington <[email protected]>

* feat: remove unused activity (ImportActivity) at AndroidManifest.xml (#71)

* fix: fix crash IllegalStateException: cannot make a new request because the previous response is still open (#73)

* code bump

* Feat/move tx fee (#74)

* chore: add new translations at strings.xml

* feat: move network fee to HomeSettingDrawerSheet & remove unused code

* fix: fix dismiss allow state loss (#76)

* fix: fix typo at strings.xml (#75)

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* version and code bump

* Added support url (#81)

- changed the language
- code bump

* version and code bump

* Revert from eda0f532 & cherry pick (#86)

* version bump

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* chore: set allowSpend to false when recommend rescan click

* fix: add delete transaction data from local database

* Removed chatty event

* chore: add analytics at BRWalletManager.publishCallback

* chore: make sure calculation and static fee same as iOS, add setting for selected fee type

---------

Co-authored-by: Kerry Washington <[email protected]>

* build bump

* Updated README

* code bump

* chore: open bread activity first then open moonpay widget (#88)

* code bump

---------

Co-authored-by: andhikayuana <[email protected]>

* 🚀[Release v4.5.5] Merge into Main (#101)

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update issue templates

* updated core changes

per @andhikayuana

* Rename .java to .kt

* chore: refactor BRApiManager & APIClient

* chore: remove unused part at APIClient

* feat: wip new peer discovery

* feat: implement selected peer ip address from cache (fetched from API)

* feat: implement selected peer ip address from cache (fetched from API)

* feat: filter out peers with NODE_NETWORK, NODE_BLOOM

* fix: race condition when clear shared prefs values after wipeAll

* Updating the core library

from the new peer discovery (v4.2.0)

* Chore/revert pre peer discovery (Android) (#69)

* chore: update core submodule

* chore: resolve conflict

* Update build.gradle.kts

version and code bump

* chore: for now at BRPeerManager.wrapConnectV2 only using connect, since the core using hardcoded peers

* fix: fix write down confirm screen (#63)

* fix: fix write down confirm screen

* fix: fix allow seed word item not unique

* chore: cherry picked and adjust from
- f2fa8e1e4fb9c7429fa86461b24b4463a7969ecf
- 98644c425b2fdae7b8b424708fb1a61ad983a9d8
- 93969278da8f95adc0c9f0f8411c8a27876a4d77
- 7ad4b9853b7d1bf7ddbaa576242d8800615a48fb
- 8e57d2a67420565b40b753dec5a533776da4821f

* fix: fix crash can't parse response inside LtcRepository.fetchRates

* fix: fix crash (failed parse) when SelectedPeersRepository.fetchSelectedPeers got unsuccessful response

* code bump

* fix: ConcurrentModificationException at BRPeerManager.txStatusUpdate

* feat: implement new API

* code bump

---------

Co-authored-by: Kerry Washington <[email protected]>

* feat: remove unused activity (ImportActivity) at AndroidManifest.xml (#71)

* fix: fix crash IllegalStateException: cannot make a new request because the previous response is still open (#73)

* code bump

* Feat/move tx fee (#74)

* chore: add new translations at strings.xml

* feat: move network fee to HomeSettingDrawerSheet & remove unused code

* fix: fix dismiss allow state loss (#76)

* fix: fix typo at strings.xml (#75)

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* version and code bump

* Added support url (#81)

- changed the language
- code bump

* version and code bump

* Revert from eda0f532 & cherry pick (#86)

* version bump

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* chore: set allowSpend to false when recommend rescan click

* fix: add delete transaction data from local database

* Removed chatty event

* chore: add analytics at BRWalletManager.publishCallback

* chore: make sure calculation and static fee same as iOS, add setting for selected fee type

---------

Co-authored-by: Kerry Washington <[email protected]>

* build bump

* chore: open bread activity first then open moonpay widget (#88)

* Adjustment for circleci (#89)

* chore: wip adjustment for screengrab

* chore: [circleci] adjust config.yml

* chore: [circleci] update config.yml, Fastfile, Gemfile.lock, RecoverWalletScreenGrabsTest.kt

* chore: [circleci] for now just unit-test

* fix: android: Footer version label is obfuscated (#92)

* fix: android: Footer version label is obfuscated

* fix: [#92] android: Footer version label is obfuscated

* fix: You saved it right screen reset button covers words (#93)

* fix: [#84] change seed words layout to lazy vertical grid

* fix: [#84] refactor seed words layout

* tiny resizing (#94)

* code and version bump

* change break (#97)

adds a android user agent and externalID

* build code number

fix: [#96] remove bottom_nav_menu_us and just using bottom_nav_menu for consistency (#98)

* fix: [#137] fix: Reset fiat options in Buy / Receive modal (#99)

* Chore/update device data (#100)

* change break

adds a android user agent and externalID

* Update ReceiveDialogViewModel.kt

* chore: refactor request params for fetchMoonpaySignedUrl

---------

Co-authored-by: andhikayuana <[email protected]>

* Update build.gradle.kts

---------

Co-authored-by: andhikayuana <[email protected]>

* 🚀[Release v4.6.0] Merge into Main (#104)

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update issue templates

* updated core changes

per @andhikayuana

* Rename .java to .kt

* chore: refactor BRApiManager & APIClient

* chore: remove unused part at APIClient

* feat: wip new peer discovery

* feat: implement selected peer ip address from cache (fetched from API)

* feat: implement selected peer ip address from cache (fetched from API)

* feat: filter out peers with NODE_NETWORK, NODE_BLOOM

* fix: race condition when clear shared prefs values after wipeAll

* Updating the core library

from the new peer discovery (v4.2.0)

* Chore/revert pre peer discovery (Android) (#69)

* chore: update core submodule

* chore: resolve conflict

* Update build.gradle.kts

version and code bump

* chore: for now at BRPeerManager.wrapConnectV2 only using connect, since the core using hardcoded peers

* fix: fix write down confirm screen (#63)

* fix: fix write down confirm screen

* fix: fix allow seed word item not unique

* chore: cherry picked and adjust from
- f2fa8e1e4fb9c7429fa86461b24b4463a7969ecf
- 98644c425b2fdae7b8b424708fb1a61ad983a9d8
- 93969278da8f95adc0c9f0f8411c8a27876a4d77
- 7ad4b9853b7d1bf7ddbaa576242d8800615a48fb
- 8e57d2a67420565b40b753dec5a533776da4821f

* fix: fix crash can't parse response inside LtcRepository.fetchRates

* fix: fix crash (failed parse) when SelectedPeersRepository.fetchSelectedPeers got unsuccessful response

* code bump

* fix: ConcurrentModificationException at BRPeerManager.txStatusUpdate

* feat: implement new API

* code bump

---------

Co-authored-by: Kerry Washington <[email protected]>

* feat: remove unused activity (ImportActivity) at AndroidManifest.xml (#71)

* fix: fix crash IllegalStateException: cannot make a new request because the previous response is still open (#73)

* code bump

* Feat/move tx fee (#74)

* chore: add new translations at strings.xml

* feat: move network fee to HomeSettingDrawerSheet & remove unused code

* fix: fix dismiss allow state loss (#76)

* fix: fix typo at strings.xml (#75)

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* version and code bump

* Added support url (#81)

- changed the language
- code bump

* version and code bump

* Revert from eda0f532 & cherry pick (#86)

* version bump

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* chore: set allowSpend to false when recommend rescan click

* fix: add delete transaction data from local database

* Removed chatty event

* chore: add analytics at BRWalletManager.publishCallback

* chore: make sure calculation and static fee same as iOS, add setting for selected fee type

---------

Co-authored-by: Kerry Washington <[email protected]>

* build bump

* chore: open bread activity first then open moonpay widget (#88)

* Adjustment for circleci (#89)

* chore: wip adjustment for screengrab

* chore: [circleci] adjust config.yml

* chore: [circleci] update config.yml, Fastfile, Gemfile.lock, RecoverWalletScreenGrabsTest.kt

* chore: [circleci] for now just unit-test

* fix: android: Footer version label is obfuscated (#92)

* fix: android: Footer version label is obfuscated

* fix: [#92] android: Footer version label is obfuscated

* fix: You saved it right screen reset button covers words (#93)

* fix: [#84] change seed words layout to lazy vertical grid

* fix: [#84] refactor seed words layout

* tiny resizing (#94)

* code and version bump

* change break (#97)

adds a android user agent and externalID

* build code number

fix: [#96] remove bottom_nav_menu_us and just using bottom_nav_menu for consistency (#98)

* fix: [#137] fix: Reset fiat options in Buy / Receive modal (#99)

* Chore/update device data (#100)

* change break

adds a android user agent and externalID

* Update ReceiveDialogViewModel.kt

* chore: refactor request params for fetchMoonpaySignedUrl

---------

Co-authored-by: andhikayuana <[email protected]>

* Add agent string obfuscation (#103)

* version bump

* code bump

---------

Co-authored-by: andhikayuana <[email protected]>

* 🚀[Release v4.6.1] Merge into Main (#107)

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update issue templates

* updated core changes

per @andhikayuana

* Rename .java to .kt

* chore: refactor BRApiManager & APIClient

* chore: remove unused part at APIClient

* feat: wip new peer discovery

* feat: implement selected peer ip address from cache (fetched from API)

* feat: implement selected peer ip address from cache (fetched from API)

* feat: filter out peers with NODE_NETWORK, NODE_BLOOM

* fix: race condition when clear shared prefs values after wipeAll

* Updating the core library

from the new peer discovery (v4.2.0)

* Chore/revert pre peer discovery (Android) (#69)

* chore: update core submodule

* chore: resolve conflict

* Update build.gradle.kts

version and code bump

* chore: for now at BRPeerManager.wrapConnectV2 only using connect, since the core using hardcoded peers

* fix: fix write down confirm screen (#63)

* fix: fix write down confirm screen

* fix: fix allow seed word item not unique

* chore: cherry picked and adjust from
- f2fa8e1e4fb9c7429fa86461b24b4463a7969ecf
- 98644c425b2fdae7b8b424708fb1a61ad983a9d8
- 93969278da8f95adc0c9f0f8411c8a27876a4d77
- 7ad4b9853b7d1bf7ddbaa576242d8800615a48fb
- 8e57d2a67420565b40b753dec5a533776da4821f

* fix: fix crash can't parse response inside LtcRepository.fetchRates

* fix: fix crash (failed parse) when SelectedPeersRepository.fetchSelectedPeers got unsuccessful response

* code bump

* fix: ConcurrentModificationException at BRPeerManager.txStatusUpdate

* feat: implement new API

* code bump

---------

Co-authored-by: Kerry Washington <[email protected]>

* feat: remove unused activity (ImportActivity) at AndroidManifest.xml (#71)

* fix: fix crash IllegalStateException: cannot make a new request because the previous response is still open (#73)

* code bump

* Feat/move tx fee (#74)

* chore: add new translations at strings.xml

* feat: move network fee to HomeSettingDrawerSheet & remove unused code

* fix: fix dismiss allow state loss (#76)

* fix: fix typo at strings.xml (#75)

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* version and code bump

* Added support url (#81)

- changed the language
- code bump

* version and code bump

* Revert from eda0f532 & cherry pick (#86)

* version bump

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* chore: set allowSpend to false when recommend rescan click

* fix: add delete transaction data from local database

* Removed chatty event

* chore: add analytics at BRWalletManager.publishCallback

* chore: make sure calculation and static fee same as iOS, add setting for selected fee type

---------

Co-authored-by: Kerry Washington <[email protected]>

* build bump

* chore: open bread activity first then open moonpay widget (#88)

* Adjustment for circleci (#89)

* chore: wip adjustment for screengrab

* chore: [circleci] adjust config.yml

* chore: [circleci] update config.yml, Fastfile, Gemfile.lock, RecoverWalletScreenGrabsTest.kt

* chore: [circleci] for now just unit-test

* fix: android: Footer version label is obfuscated (#92)

* fix: android: Footer version label is obfuscated

* fix: [#92] android: Footer version label is obfuscated

* fix: You saved it right screen reset button covers words (#93)

* fix: [#84] change seed words layout to lazy vertical grid

* fix: [#84] refactor seed words layout

* tiny resizing (#94)

* code and version bump

* change break (#97)

adds a android user agent and externalID

* build code number

fix: [#96] remove bottom_nav_menu_us and just using bottom_nav_menu for consistency (#98)

* fix: [#137] fix: Reset fiat options in Buy / Receive modal (#99)

* Chore/update device data (#100)

* change break

adds a android user agent and externalID

* Update ReceiveDialogViewModel.kt

* chore: refactor request params for fetchMoonpaySignedUrl

---------

Co-authored-by: andhikayuana <[email protected]>

* Add agent string obfuscation (#103)

* updated metadata (#105)

* chore: remove screen lock detection (#106)

* build bump

---------

Co-authored-by: andhikayuana <[email protected]>

* 🚀[Release v4.6.2] Merge into Main (#110)

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update issue templates

* updated core changes

per @andhikayuana

* Rename .java to .kt

* chore: refactor BRApiManager & APIClient

* chore: remove unused part at APIClient

* feat: wip new peer discovery

* feat: implement selected peer ip address from cache (fetched from API)

* feat: implement selected peer ip address from cache (fetched from API)

* feat: filter out peers with NODE_NETWORK, NODE_BLOOM

* fix: race condition when clear shared prefs values after wipeAll

* Updating the core library

from the new peer discovery (v4.2.0)

* Chore/revert pre peer discovery (Android) (#69)

* chore: update core submodule

* chore: resolve conflict

* Update build.gradle.kts

version and code bump

* chore: for now at BRPeerManager.wrapConnectV2 only using connect, since the core using hardcoded peers

* fix: fix write down confirm screen (#63)

* fix: fix write down confirm screen

* fix: fix allow seed word item not unique

* chore: cherry picked and adjust from
- f2fa8e1e4fb9c7429fa86461b24b4463a7969ecf
- 98644c425b2fdae7b8b424708fb1a61ad983a9d8
- 93969278da8f95adc0c9f0f8411c8a27876a4d77
- 7ad4b9853b7d1bf7ddbaa576242d8800615a48fb
- 8e57d2a67420565b40b753dec5a533776da4821f

* fix: fix crash can't parse response inside LtcRepository.fetchRates

* fix: fix crash (failed parse) when SelectedPeersRepository.fetchSelectedPeers got unsuccessful response

* code bump

* fix: ConcurrentModificationException at BRPeerManager.txStatusUpdate

* feat: implement new API

* code bump

---------

Co-authored-by: Kerry Washington <[email protected]>

* feat: remove unused activity (ImportActivity) at AndroidManifest.xml (#71)

* fix: fix crash IllegalStateException: cannot make a new request because the previous response is still open (#73)

* code bump

* Feat/move tx fee (#74)

* chore: add new translations at strings.xml

* feat: move network fee to HomeSettingDrawerSheet & remove unused code

* fix: fix dismiss allow state loss (#76)

* fix: fix typo at strings.xml (#75)

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* version and code bump

* Added support url (#81)

- changed the language
- code bump

* version and code bump

* Revert from eda0f532 & cherry pick (#86)

* version bump

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* chore: set allowSpend to false when recommend rescan click

* fix: add delete transaction data from local database

* Removed chatty event

* chore: add analytics at BRWalletManager.publishCallback

* chore: make sure calculation and static fee same as iOS, add setting for selected fee type

---------

Co-authored-by: Kerry Washington <[email protected]>

* build bump

* chore: open bread activity first then open moonpay widget (#88)

* Adjustment for circleci (#89)

* chore: wip adjustment for screengrab

* chore: [circleci] adjust config.yml

* chore: [circleci] update config.yml, Fastfile, Gemfile.lock, RecoverWalletScreenGrabsTest.kt

* chore: [circleci] for now just unit-test

* fix: android: Footer version label is obfuscated (#92)

* fix: android: Footer version label is obfuscated

* fix: [#92] android: Footer version label is obfuscated

* fix: You saved it right screen reset button covers words (#93)

* fix: [#84] change seed words layout to lazy vertical grid

* fix: [#84] refactor seed words layout

* tiny resizing (#94)

* code and version bump

* change break (#97)

adds a android user agent and externalID

* build code number

fix: [#96] remove bottom_nav_menu_us and just using bottom_nav_menu for consistency (#98)

* fix: [#137] fix: Reset fiat options in Buy / Receive modal (#99)

* Chore/update device data (#100)

* change break

adds a android user agent and externalID

* Update ReceiveDialogViewModel.kt

* chore: refactor request params for fetchMoonpaySignedUrl

---------

Co-authored-by: andhikayuana <[email protected]>

* Add agent string obfuscation (#103)

* updated metadata (#105)

* chore: remove screen lock detection (#106)

* changed to tap

* Added instruction label

-added localizations

* Added 'empty string for when confirm is completed

* version and code bump

* fix typo

replaced click file with mp3
added error sound

* added 3 languages

* 🧰  Fx/seed words UI polish (#108)

* changed to tap

* Added instruction label

-added localizations

* Added 'empty string for when confirm is completed

* version and code bump

* fix typo

replaced click file with mp3
added error sound

* Removed unused audio files

* polished tests

* removed unused asset pack

* code bump

* code bump

* ❇️ Feat/add polish punjabi farsi (#109)

* changed to tap

* Added instruction label

-added localizations

* Added 'empty string for when confirm is completed

* version and code bump

* fix typo

replaced click file with mp3
added error sound

* added 3 languages

* Removed unused audio files

* polished tests

* removed unused asset pack

* code bump

* broke out completion of the seed phrase and navigation

- Feedback was a user could complete seed phrase and not tap "Game and Sync"
- Forced users to start all over
- Saved a correct seed phrase confirmation into memory

* code bump

* fix for

https://console.firebase.google.com/project/brainwallet-mobile/crashlytics/app/android:ltd.grunt.brainwallet/issues/1386f366ab35e9112a6b742d629bb0be?time=last-seven-days&types=crash&sessionEventKey=685DA96C00BF00015A7AFEA30E0DB49C_2098799426616143441

* measure where users tap

* code bump

* fix: fix YourSeedProveItState.isWordUsedCorrectly

* Cleaned commented out BuyLitecoinscreen

* code bump

---------

Co-authored-by: andhikayuana <[email protected]>

* 🚀[Release v4.7.0] Merge into Main  (#115)

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update issue templates

* updated core changes

per @andhikayuana

* Rename .java to .kt

* chore: refactor BRApiManager & APIClient

* chore: remove unused part at APIClient

* feat: wip new peer discovery

* feat: implement selected peer ip address from cache (fetched from API)

* feat: implement selected peer ip address from cache (fetched from API)

* feat: filter out peers with NODE_NETWORK, NODE_BLOOM

* fix: race condition when clear shared prefs values after wipeAll

* Updating the core library

from the new peer discovery (v4.2.0)

* Chore/revert pre peer discovery (Android) (#69)

* chore: update core submodule

* chore: resolve conflict

* Update build.gradle.kts

version and code bump

* chore: for now at BRPeerManager.wrapConnectV2 only using connect, since the core using hardcoded peers

* fix: fix write down confirm screen (#63)

* fix: fix write down confirm screen

* fix: fix allow seed word item not unique

* chore: cherry picked and adjust from
- f2fa8e1e4fb9c7429fa86461b24b4463a7969ecf
- 98644c425b2fdae7b8b424708fb1a61ad983a9d8
- 93969278da8f95adc0c9f0f8411c8a27876a4d77
- 7ad4b9853b7d1bf7ddbaa576242d8800615a48fb
- 8e57d2a67420565b40b753dec5a533776da4821f

* fix: fix crash can't parse response inside LtcRepository.fetchRates

* fix: fix crash (failed parse) when SelectedPeersRepository.fetchSelectedPeers got unsuccessful response

* code bump

* fix: ConcurrentModificationException at BRPeerManager.txStatusUpdate

* feat: implement new API

* code bump

---------

Co-authored-by: Kerry Washington <[email protected]>

* feat: remove unused activity (ImportActivity) at AndroidManifest.xml (#71)

* fix: fix crash IllegalStateException: cannot make a new request because the previous response is still open (#73)

* code bump

* Feat/move tx fee (#74)

* chore: add new translations at strings.xml

* feat: move network fee to HomeSettingDrawerSheet & remove unused code

* fix: fix dismiss allow state loss (#76)

* fix: fix typo at strings.xml (#75)

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* version and code bump

* Added support url (#81)

- changed the language
- code bump

* version and code bump

* Revert from eda0f532 & cherry pick (#86)

* version bump

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* chore: set allowSpend to false when recommend rescan click

* fix: add delete transaction data from local database

* Removed chatty event

* chore: add analytics at BRWalletManager.publishCallback

* chore: make sure calculation and static fee same as iOS, add setting for selected fee type

---------

Co-authored-by: Kerry Washington <[email protected]>

* build bump

* chore: open bread activity first then open moonpay widget (#88)

* Adjustment for circleci (#89)

* chore: wip adjustment for screengrab

* chore: [circleci] adjust config.yml

* chore: [circleci] update config.yml, Fastfile, Gemfile.lock, RecoverWalletScreenGrabsTest.kt

* chore: [circleci] for now just unit-test

* fix: android: Footer version label is obfuscated (#92)

* fix: android: Footer version label is obfuscated

* fix: [#92] android: Footer version label is obfuscated

* fix: You saved it right screen reset button covers words (#93)

* fix: [#84] change seed words layout to lazy vertical grid

* fix: [#84] refactor seed words layout

* tiny resizing (#94)

* code and version bump

* change break (#97)

adds a android user agent and externalID

* build code number

fix: [#96] remove bottom_nav_menu_us and just using bottom_nav_menu for consistency (#98)

* fix: [#137] fix: Reset fiat options in Buy / Receive modal (#99)

* Chore/update device data (#100)

* change break

adds a android user agent and externalID

* Update ReceiveDialogViewModel.kt

* chore: refactor request params for fetchMoonpaySignedUrl

---------

Co-authored-by: andhikayuana <[email protected]>

* Add agent string obfuscation (#103)

* updated metadata (#105)

* chore: remove screen lock detection (#106)

* 🧰  Fx/seed words UI polish (#108)

* changed to tap

* Added instruction label

-added localizations

* Added 'empty string for when confirm is completed

* version and code bump

* fix typo

replaced click file with mp3
added error sound

* ❇️ Feat/add polish punjabi farsi (#109)

* changed to tap

* Added instruction label

-added localizations

* Added 'empty string for when confirm is completed

* version and code bump

* fix typo

replaced click file with mp3
added error sound

* added 3 languages

* Removed unused audio files

* polished tests

* removed unused asset pack

* code bump

* fix: fix YourSeedProveItState.isWordUsedCorrectly (#111)

* Upgrade targetSdk 36 (#113)

* chore: change drawable with density for brainwallet_logotype_white

* chore: adjustment WelcomeScreen.kt

* chore: adjustment for targetSdk 36 also support 16KB page size

* bump

clean extra semicolon

* Update pro-guard-rules

* Updated the version

---------

Co-authored-by: andhikayuana <[email protected]>

* Updated games module to v1.1.0

* Updated the games submodule

* Renamed and tested with user skips

---------

Co-authored-by: andhikayuana <[email protected]>

* Fix(#227): Crash when launching MoonPay Widget (#126)

Refactored the MoonPay widget integration to a dedicated Composable
(`MoonPayWidgetLauncher`) to ensure proper state handling and loading
behavior.

- Added `MoonPayWidgetLauncher.kt` with Composable and ViewModel
  for managing signed URL fetch and Custom Tab launch.
- Ensures loading state covers the whole screen, preventing UI crashes.
- Removed legacy static method `LegacyNavigation.showMoonPayWidget`.
- Updated `ReceiveDialog.kt` and `BuyLitecoinScreen.kt` to use the new
  Composable.
- Minor cleanup in `LegacyNavigation.kt`.

* feat(#138): Improve Unlock Screen UI and add dark mode toggle (#122)

* Redesign welcome screen (#123)

* Redesign welcome screen

* Redesign ready screen

* 🚀[Release v4.7.2] Merge into Develop (#127)

* 🚀[Release v4.4.7] Merge into Main  (#70)

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

…
kcw-grunt added a commit that referenced this pull request Oct 12, 2025
* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update issue templates

* updated core changes

per @andhikayuana

* Rename .java to .kt

* chore: refactor BRApiManager & APIClient

* chore: remove unused part at APIClient

* feat: wip new peer discovery

* feat: implement selected peer ip address from cache (fetched from API)

* feat: implement selected peer ip address from cache (fetched from API)

* feat: filter out peers with NODE_NETWORK, NODE_BLOOM

* fix: race condition when clear shared prefs values after wipeAll

* Updating the core library

from the new peer discovery (v4.2.0)

* Chore/revert pre peer discovery (Android) (#69)

* chore: update core submodule

* chore: resolve conflict

* Update build.gradle.kts

version and code bump

* chore: for now at BRPeerManager.wrapConnectV2 only using connect, since the core using hardcoded peers

* fix: fix write down confirm screen (#63)

* fix: fix write down confirm screen

* fix: fix allow seed word item not unique

* chore: cherry picked and adjust from
- f2fa8e1e4fb9c7429fa86461b24b4463a7969ecf
- 98644c425b2fdae7b8b424708fb1a61ad983a9d8
- 93969278da8f95adc0c9f0f8411c8a27876a4d77
- 7ad4b9853b7d1bf7ddbaa576242d8800615a48fb
- 8e57d2a67420565b40b753dec5a533776da4821f

* fix: fix crash can't parse response inside LtcRepository.fetchRates

* fix: fix crash (failed parse) when SelectedPeersRepository.fetchSelectedPeers got unsuccessful response

* code bump

* fix: ConcurrentModificationException at BRPeerManager.txStatusUpdate

* feat: implement new API

* code bump

---------

Co-authored-by: Kerry Washington <[email protected]>

* feat: remove unused activity (ImportActivity) at AndroidManifest.xml (#71)

* fix: fix crash IllegalStateException: cannot make a new request because the previous response is still open (#73)

* code bump

* Feat/move tx fee (#74)

* chore: add new translations at strings.xml

* feat: move network fee to HomeSettingDrawerSheet & remove unused code

* fix: fix dismiss allow state loss (#76)

* fix: fix typo at strings.xml (#75)

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* version and code bump

* Added support url (#81)

- changed the language
- code bump

* version and code bump

* Revert from eda0f532 & cherry pick (#86)

* version bump

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* chore: set allowSpend to false when recommend rescan click

* fix: add delete transaction data from local database

* Removed chatty event

* chore: add analytics at BRWalletManager.publishCallback

* chore: make sure calculation and static fee same as iOS, add setting for selected fee type

---------

Co-authored-by: Kerry Washington <[email protected]>

* build bump

* chore: open bread activity first then open moonpay widget (#88)

* Adjustment for circleci (#89)

* chore: wip adjustment for screengrab

* chore: [circleci] adjust config.yml

* chore: [circleci] update config.yml, Fastfile, Gemfile.lock, RecoverWalletScreenGrabsTest.kt

* chore: [circleci] for now just unit-test

* fix: android: Footer version label is obfuscated (#92)

* fix: android: Footer version label is obfuscated

* fix: [#92] android: Footer version label is obfuscated

* fix: You saved it right screen reset button covers words (#93)

* fix: [#84] change seed words layout to lazy vertical grid

* fix: [#84] refactor seed words layout

* tiny resizing (#94)

* code and version bump

* change break (#97)

adds a android user agent and externalID

* build code number

fix: [#96] remove bottom_nav_menu_us and just using bottom_nav_menu for consistency (#98)

* fix: [#137] fix: Reset fiat options in Buy / Receive modal (#99)

* Chore/update device data (#100)

* change break

adds a android user agent and externalID

* Update ReceiveDialogViewModel.kt

* chore: refactor request params for fetchMoonpaySignedUrl

---------

Co-authored-by: andhikayuana <[email protected]>

* Add agent string obfuscation (#103)

* updated metadata (#105)

* chore: remove screen lock detection (#106)

* 🧰  Fx/seed words UI polish (#108)

* changed to tap

* Added instruction label

-added localizations

* Added 'empty string for when confirm is completed

* version and code bump

* fix typo

replaced click file with mp3
added error sound

* ❇️ Feat/add polish punjabi farsi (#109)

* changed to tap

* Added instruction label

-added localizations

* Added 'empty string for when confirm is completed

* version and code bump

* fix typo

replaced click file with mp3
added error sound

* added 3 languages

* Removed unused audio files

* polished tests

* removed unused asset pack

* code bump

* fix: fix YourSeedProveItState.isWordUsedCorrectly (#111)

* Upgrade targetSdk 36 (#113)

* chore: change drawable with density for brainwallet_logotype_white

* chore: adjustment WelcomeScreen.kt

* chore: adjustment for targetSdk 36 also support 16KB page size

* feat(#195): adopt koin annotation for dependency injection (#120)

* Create PULL_REQUEST_TEMPLATE.md

Create PULL_REQUEST_TEMPLATE.md

* bump for test (#121)

* bump for test

* Updated the template

* polishes

* feat(#174): initiate games module (#119)

* Force pushed the version and code bump and catch up with Prod.

* 🚀[Release v4.7.2] Merge into Develop (#127)

* 🚀[Release v4.4.7] Merge into Main  (#70)

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update issue templates

* updated core changes

per @andhikayuana

* Rename .java to .kt

* chore: refactor BRApiManager & APIClient

* chore: remove unused part at APIClient

* feat: wip new peer discovery

* feat: implement selected peer ip address from cache (fetched from API)

* feat: implement selected peer ip address from cache (fetched from API)

* feat: filter out peers with NODE_NETWORK, NODE_BLOOM

* fix: race condition when clear shared prefs values after wipeAll

* Updating the core library

from the new peer discovery (v4.2.0)

* Chore/revert pre peer discovery (Android) (#69)

* chore: update core submodule

* chore: resolve conflict

* Update build.gradle.kts

version and code bump

* chore: for now at BRPeerManager.wrapConnectV2 only using connect, since the core using hardcoded peers

* fix: fix write down confirm screen (#63)

* fix: fix write down confirm screen

* fix: fix allow seed word item not unique

* chore: cherry picked and adjust from
- f2fa8e1e4fb9c7429fa86461b24b4463a7969ecf
- 98644c425b2fdae7b8b424708fb1a61ad983a9d8
- 93969278da8f95adc0c9f0f8411c8a27876a4d77
- 7ad4b9853b7d1bf7ddbaa576242d8800615a48fb
- 8e57d2a67420565b40b753dec5a533776da4821f

* fix: fix crash can't parse response inside LtcRepository.fetchRates

* fix: fix crash (failed parse) when SelectedPeersRepository.fetchSelectedPeers got unsuccessful response

* code bump

* fix: ConcurrentModificationException at BRPeerManager.txStatusUpdate

* feat: implement new API

* code bump

---------

Co-authored-by: Kerry Washington <[email protected]>

---------

Co-authored-by: andhikayuana <[email protected]>

* 🚀[Release v4.5.0] Merge into Main  (#78)

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update issue templates

* updated core changes

per @andhikayuana

* Rename .java to .kt

* chore: refactor BRApiManager & APIClient

* chore: remove unused part at APIClient

* feat: wip new peer discovery

* feat: implement selected peer ip address from cache (fetched from API)

* feat: implement selected peer ip address from cache (fetched from API)

* feat: filter out peers with NODE_NETWORK, NODE_BLOOM

* fix: race condition when clear shared prefs values after wipeAll

* Updating the core library

from the new peer discovery (v4.2.0)

* Chore/revert pre peer discovery (Android) (#69)

* chore: update core submodule

* chore: resolve conflict

* Update build.gradle.kts

version and code bump

* chore: for now at BRPeerManager.wrapConnectV2 only using connect, since the core using hardcoded peers

* fix: fix write down confirm screen (#63)

* fix: fix write down confirm screen

* fix: fix allow seed word item not unique

* chore: cherry picked and adjust from
- f2fa8e1e4fb9c7429fa86461b24b4463a7969ecf
- 98644c425b2fdae7b8b424708fb1a61ad983a9d8
- 93969278da8f95adc0c9f0f8411c8a27876a4d77
- 7ad4b9853b7d1bf7ddbaa576242d8800615a48fb
- 8e57d2a67420565b40b753dec5a533776da4821f

* fix: fix crash can't parse response inside LtcRepository.fetchRates

* fix: fix crash (failed parse) when SelectedPeersRepository.fetchSelectedPeers got unsuccessful response

* code bump

* fix: ConcurrentModificationException at BRPeerManager.txStatusUpdate

* feat: implement new API

* code bump

---------

Co-authored-by: Kerry Washington <[email protected]>

* feat: remove unused activity (ImportActivity) at AndroidManifest.xml (#71)

* fix: fix crash IllegalStateException: cannot make a new request because the previous response is still open (#73)

* code bump

* Feat/move tx fee (#74)

* chore: add new translations at strings.xml

* feat: move network fee to HomeSettingDrawerSheet & remove unused code

* fix: fix dismiss allow state loss (#76)

* fix: fix typo at strings.xml (#75)

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* version and code bump

---------

Co-authored-by: andhikayuana <[email protected]>

* 🚀[Release v4.5.4] Merge into Main (#87)

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update issue templates

* updated core changes

per @andhikayuana

* Rename .java to .kt

* chore: refactor BRApiManager & APIClient

* chore: remove unused part at APIClient

* feat: wip new peer discovery

* feat: implement selected peer ip address from cache (fetched from API)

* feat: implement selected peer ip address from cache (fetched from API)

* feat: filter out peers with NODE_NETWORK, NODE_BLOOM

* fix: race condition when clear shared prefs values after wipeAll

* Updating the core library

from the new peer discovery (v4.2.0)

* Chore/revert pre peer discovery (Android) (#69)

* chore: update core submodule

* chore: resolve conflict

* Update build.gradle.kts

version and code bump

* chore: for now at BRPeerManager.wrapConnectV2 only using connect, since the core using hardcoded peers

* fix: fix write down confirm screen (#63)

* fix: fix write down confirm screen

* fix: fix allow seed word item not unique

* chore: cherry picked and adjust from
- f2fa8e1e4fb9c7429fa86461b24b4463a7969ecf
- 98644c425b2fdae7b8b424708fb1a61ad983a9d8
- 93969278da8f95adc0c9f0f8411c8a27876a4d77
- 7ad4b9853b7d1bf7ddbaa576242d8800615a48fb
- 8e57d2a67420565b40b753dec5a533776da4821f

* fix: fix crash can't parse response inside LtcRepository.fetchRates

* fix: fix crash (failed parse) when SelectedPeersRepository.fetchSelectedPeers got unsuccessful response

* code bump

* fix: ConcurrentModificationException at BRPeerManager.txStatusUpdate

* feat: implement new API

* code bump

---------

Co-authored-by: Kerry Washington <[email protected]>

* feat: remove unused activity (ImportActivity) at AndroidManifest.xml (#71)

* fix: fix crash IllegalStateException: cannot make a new request because the previous response is still open (#73)

* code bump

* Feat/move tx fee (#74)

* chore: add new translations at strings.xml

* feat: move network fee to HomeSettingDrawerSheet & remove unused code

* fix: fix dismiss allow state loss (#76)

* fix: fix typo at strings.xml (#75)

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* version and code bump

* Added support url (#81)

- changed the language
- code bump

* version and code bump

* Revert from eda0f532 & cherry pick (#86)

* version bump

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* chore: set allowSpend to false when recommend rescan click

* fix: add delete transaction data from local database

* Removed chatty event

* chore: add analytics at BRWalletManager.publishCallback

* chore: make sure calculation and static fee same as iOS, add setting for selected fee type

---------

Co-authored-by: Kerry Washington <[email protected]>

* build bump

* Updated README

* code bump

* chore: open bread activity first then open moonpay widget (#88)

* code bump

---------

Co-authored-by: andhikayuana <[email protected]>

* 🚀[Release v4.5.5] Merge into Main (#101)

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update issue templates

* updated core changes

per @andhikayuana

* Rename .java to .kt

* chore: refactor BRApiManager & APIClient

* chore: remove unused part at APIClient

* feat: wip new peer discovery

* feat: implement selected peer ip address from cache (fetched from API)

* feat: implement selected peer ip address from cache (fetched from API)

* feat: filter out peers with NODE_NETWORK, NODE_BLOOM

* fix: race condition when clear shared prefs values after wipeAll

* Updating the core library

from the new peer discovery (v4.2.0)

* Chore/revert pre peer discovery (Android) (#69)

* chore: update core submodule

* chore: resolve conflict

* Update build.gradle.kts

version and code bump

* chore: for now at BRPeerManager.wrapConnectV2 only using connect, since the core using hardcoded peers

* fix: fix write down confirm screen (#63)

* fix: fix write down confirm screen

* fix: fix allow seed word item not unique

* chore: cherry picked and adjust from
- f2fa8e1e4fb9c7429fa86461b24b4463a7969ecf
- 98644c425b2fdae7b8b424708fb1a61ad983a9d8
- 93969278da8f95adc0c9f0f8411c8a27876a4d77
- 7ad4b9853b7d1bf7ddbaa576242d8800615a48fb
- 8e57d2a67420565b40b753dec5a533776da4821f

* fix: fix crash can't parse response inside LtcRepository.fetchRates

* fix: fix crash (failed parse) when SelectedPeersRepository.fetchSelectedPeers got unsuccessful response

* code bump

* fix: ConcurrentModificationException at BRPeerManager.txStatusUpdate

* feat: implement new API

* code bump

---------

Co-authored-by: Kerry Washington <[email protected]>

* feat: remove unused activity (ImportActivity) at AndroidManifest.xml (#71)

* fix: fix crash IllegalStateException: cannot make a new request because the previous response is still open (#73)

* code bump

* Feat/move tx fee (#74)

* chore: add new translations at strings.xml

* feat: move network fee to HomeSettingDrawerSheet & remove unused code

* fix: fix dismiss allow state loss (#76)

* fix: fix typo at strings.xml (#75)

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* version and code bump

* Added support url (#81)

- changed the language
- code bump

* version and code bump

* Revert from eda0f532 & cherry pick (#86)

* version bump

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* chore: set allowSpend to false when recommend rescan click

* fix: add delete transaction data from local database

* Removed chatty event

* chore: add analytics at BRWalletManager.publishCallback

* chore: make sure calculation and static fee same as iOS, add setting for selected fee type

---------

Co-authored-by: Kerry Washington <[email protected]>

* build bump

* chore: open bread activity first then open moonpay widget (#88)

* Adjustment for circleci (#89)

* chore: wip adjustment for screengrab

* chore: [circleci] adjust config.yml

* chore: [circleci] update config.yml, Fastfile, Gemfile.lock, RecoverWalletScreenGrabsTest.kt

* chore: [circleci] for now just unit-test

* fix: android: Footer version label is obfuscated (#92)

* fix: android: Footer version label is obfuscated

* fix: [#92] android: Footer version label is obfuscated

* fix: You saved it right screen reset button covers words (#93)

* fix: [#84] change seed words layout to lazy vertical grid

* fix: [#84] refactor seed words layout

* tiny resizing (#94)

* code and version bump

* change break (#97)

adds a android user agent and externalID

* build code number

fix: [#96] remove bottom_nav_menu_us and just using bottom_nav_menu for consistency (#98)

* fix: [#137] fix: Reset fiat options in Buy / Receive modal (#99)

* Chore/update device data (#100)

* change break

adds a android user agent and externalID

* Update ReceiveDialogViewModel.kt

* chore: refactor request params for fetchMoonpaySignedUrl

---------

Co-authored-by: andhikayuana <[email protected]>

* Update build.gradle.kts

---------

Co-authored-by: andhikayuana <[email protected]>

* 🚀[Release v4.6.0] Merge into Main (#104)

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update issue templates

* updated core changes

per @andhikayuana

* Rename .java to .kt

* chore: refactor BRApiManager & APIClient

* chore: remove unused part at APIClient

* feat: wip new peer discovery

* feat: implement selected peer ip address from cache (fetched from API)

* feat: implement selected peer ip address from cache (fetched from API)

* feat: filter out peers with NODE_NETWORK, NODE_BLOOM

* fix: race condition when clear shared prefs values after wipeAll

* Updating the core library

from the new peer discovery (v4.2.0)

* Chore/revert pre peer discovery (Android) (#69)

* chore: update core submodule

* chore: resolve conflict

* Update build.gradle.kts

version and code bump

* chore: for now at BRPeerManager.wrapConnectV2 only using connect, since the core using hardcoded peers

* fix: fix write down confirm screen (#63)

* fix: fix write down confirm screen

* fix: fix allow seed word item not unique

* chore: cherry picked and adjust from
- f2fa8e1e4fb9c7429fa86461b24b4463a7969ecf
- 98644c425b2fdae7b8b424708fb1a61ad983a9d8
- 93969278da8f95adc0c9f0f8411c8a27876a4d77
- 7ad4b9853b7d1bf7ddbaa576242d8800615a48fb
- 8e57d2a67420565b40b753dec5a533776da4821f

* fix: fix crash can't parse response inside LtcRepository.fetchRates

* fix: fix crash (failed parse) when SelectedPeersRepository.fetchSelectedPeers got unsuccessful response

* code bump

* fix: ConcurrentModificationException at BRPeerManager.txStatusUpdate

* feat: implement new API

* code bump

---------

Co-authored-by: Kerry Washington <[email protected]>

* feat: remove unused activity (ImportActivity) at AndroidManifest.xml (#71)

* fix: fix crash IllegalStateException: cannot make a new request because the previous response is still open (#73)

* code bump

* Feat/move tx fee (#74)

* chore: add new translations at strings.xml

* feat: move network fee to HomeSettingDrawerSheet & remove unused code

* fix: fix dismiss allow state loss (#76)

* fix: fix typo at strings.xml (#75)

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* version and code bump

* Added support url (#81)

- changed the language
- code bump

* version and code bump

* Revert from eda0f532 & cherry pick (#86)

* version bump

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* chore: set allowSpend to false when recommend rescan click

* fix: add delete transaction data from local database

* Removed chatty event

* chore: add analytics at BRWalletManager.publishCallback

* chore: make sure calculation and static fee same as iOS, add setting for selected fee type

---------

Co-authored-by: Kerry Washington <[email protected]>

* build bump

* chore: open bread activity first then open moonpay widget (#88)

* Adjustment for circleci (#89)

* chore: wip adjustment for screengrab

* chore: [circleci] adjust config.yml

* chore: [circleci] update config.yml, Fastfile, Gemfile.lock, RecoverWalletScreenGrabsTest.kt

* chore: [circleci] for now just unit-test

* fix: android: Footer version label is obfuscated (#92)

* fix: android: Footer version label is obfuscated

* fix: [#92] android: Footer version label is obfuscated

* fix: You saved it right screen reset button covers words (#93)

* fix: [#84] change seed words layout to lazy vertical grid

* fix: [#84] refactor seed words layout

* tiny resizing (#94)

* code and version bump

* change break (#97)

adds a android user agent and externalID

* build code number

fix: [#96] remove bottom_nav_menu_us and just using bottom_nav_menu for consistency (#98)

* fix: [#137] fix: Reset fiat options in Buy / Receive modal (#99)

* Chore/update device data (#100)

* change break

adds a android user agent and externalID

* Update ReceiveDialogViewModel.kt

* chore: refactor request params for fetchMoonpaySignedUrl

---------

Co-authored-by: andhikayuana <[email protected]>

* Add agent string obfuscation (#103)

* version bump

* code bump

---------

Co-authored-by: andhikayuana <[email protected]>

* 🚀[Release v4.6.1] Merge into Main (#107)

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update issue templates

* updated core changes

per @andhikayuana

* Rename .java to .kt

* chore: refactor BRApiManager & APIClient

* chore: remove unused part at APIClient

* feat: wip new peer discovery

* feat: implement selected peer ip address from cache (fetched from API)

* feat: implement selected peer ip address from cache (fetched from API)

* feat: filter out peers with NODE_NETWORK, NODE_BLOOM

* fix: race condition when clear shared prefs values after wipeAll

* Updating the core library

from the new peer discovery (v4.2.0)

* Chore/revert pre peer discovery (Android) (#69)

* chore: update core submodule

* chore: resolve conflict

* Update build.gradle.kts

version and code bump

* chore: for now at BRPeerManager.wrapConnectV2 only using connect, since the core using hardcoded peers

* fix: fix write down confirm screen (#63)

* fix: fix write down confirm screen

* fix: fix allow seed word item not unique

* chore: cherry picked and adjust from
- f2fa8e1e4fb9c7429fa86461b24b4463a7969ecf
- 98644c425b2fdae7b8b424708fb1a61ad983a9d8
- 93969278da8f95adc0c9f0f8411c8a27876a4d77
- 7ad4b9853b7d1bf7ddbaa576242d8800615a48fb
- 8e57d2a67420565b40b753dec5a533776da4821f

* fix: fix crash can't parse response inside LtcRepository.fetchRates

* fix: fix crash (failed parse) when SelectedPeersRepository.fetchSelectedPeers got unsuccessful response

* code bump

* fix: ConcurrentModificationException at BRPeerManager.txStatusUpdate

* feat: implement new API

* code bump

---------

Co-authored-by: Kerry Washington <[email protected]>

* feat: remove unused activity (ImportActivity) at AndroidManifest.xml (#71)

* fix: fix crash IllegalStateException: cannot make a new request because the previous response is still open (#73)

* code bump

* Feat/move tx fee (#74)

* chore: add new translations at strings.xml

* feat: move network fee to HomeSettingDrawerSheet & remove unused code

* fix: fix dismiss allow state loss (#76)

* fix: fix typo at strings.xml (#75)

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* version and code bump

* Added support url (#81)

- changed the language
- code bump

* version and code bump

* Revert from eda0f532 & cherry pick (#86)

* version bump

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* chore: set allowSpend to false when recommend rescan click

* fix: add delete transaction data from local database

* Removed chatty event

* chore: add analytics at BRWalletManager.publishCallback

* chore: make sure calculation and static fee same as iOS, add setting for selected fee type

---------

Co-authored-by: Kerry Washington <[email protected]>

* build bump

* chore: open bread activity first then open moonpay widget (#88)

* Adjustment for circleci (#89)

* chore: wip adjustment for screengrab

* chore: [circleci] adjust config.yml

* chore: [circleci] update config.yml, Fastfile, Gemfile.lock, RecoverWalletScreenGrabsTest.kt

* chore: [circleci] for now just unit-test

* fix: android: Footer version label is obfuscated (#92)

* fix: android: Footer version label is obfuscated

* fix: [#92] android: Footer version label is obfuscated

* fix: You saved it right screen reset button covers words (#93)

* fix: [#84] change seed words layout to lazy vertical grid

* fix: [#84] refactor seed words layout

* tiny resizing (#94)

* code and version bump

* change break (#97)

adds a android user agent and externalID

* build code number

fix: [#96] remove bottom_nav_menu_us and just using bottom_nav_menu for consistency (#98)

* fix: [#137] fix: Reset fiat options in Buy / Receive modal (#99)

* Chore/update device data (#100)

* change break

adds a android user agent and externalID

* Update ReceiveDialogViewModel.kt

* chore: refactor request params for fetchMoonpaySignedUrl

---------

Co-authored-by: andhikayuana <[email protected]>

* Add agent string obfuscation (#103)

* updated metadata (#105)

* chore: remove screen lock detection (#106)

* build bump

---------

Co-authored-by: andhikayuana <[email protected]>

* 🚀[Release v4.6.2] Merge into Main (#110)

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update issue templates

* updated core changes

per @andhikayuana

* Rename .java to .kt

* chore: refactor BRApiManager & APIClient

* chore: remove unused part at APIClient

* feat: wip new peer discovery

* feat: implement selected peer ip address from cache (fetched from API)

* feat: implement selected peer ip address from cache (fetched from API)

* feat: filter out peers with NODE_NETWORK, NODE_BLOOM

* fix: race condition when clear shared prefs values after wipeAll

* Updating the core library

from the new peer discovery (v4.2.0)

* Chore/revert pre peer discovery (Android) (#69)

* chore: update core submodule

* chore: resolve conflict

* Update build.gradle.kts

version and code bump

* chore: for now at BRPeerManager.wrapConnectV2 only using connect, since the core using hardcoded peers

* fix: fix write down confirm screen (#63)

* fix: fix write down confirm screen

* fix: fix allow seed word item not unique

* chore: cherry picked and adjust from
- f2fa8e1e4fb9c7429fa86461b24b4463a7969ecf
- 98644c425b2fdae7b8b424708fb1a61ad983a9d8
- 93969278da8f95adc0c9f0f8411c8a27876a4d77
- 7ad4b9853b7d1bf7ddbaa576242d8800615a48fb
- 8e57d2a67420565b40b753dec5a533776da4821f

* fix: fix crash can't parse response inside LtcRepository.fetchRates

* fix: fix crash (failed parse) when SelectedPeersRepository.fetchSelectedPeers got unsuccessful response

* code bump

* fix: ConcurrentModificationException at BRPeerManager.txStatusUpdate

* feat: implement new API

* code bump

---------

Co-authored-by: Kerry Washington <[email protected]>

* feat: remove unused activity (ImportActivity) at AndroidManifest.xml (#71)

* fix: fix crash IllegalStateException: cannot make a new request because the previous response is still open (#73)

* code bump

* Feat/move tx fee (#74)

* chore: add new translations at strings.xml

* feat: move network fee to HomeSettingDrawerSheet & remove unused code

* fix: fix dismiss allow state loss (#76)

* fix: fix typo at strings.xml (#75)

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* version and code bump

* Added support url (#81)

- changed the language
- code bump

* version and code bump

* Revert from eda0f532 & cherry pick (#86)

* version bump

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* chore: set allowSpend to false when recommend rescan click

* fix: add delete transaction data from local database

* Removed chatty event

* chore: add analytics at BRWalletManager.publishCallback

* chore: make sure calculation and static fee same as iOS, add setting for selected fee type

---------

Co-authored-by: Kerry Washington <[email protected]>

* build bump

* chore: open bread activity first then open moonpay widget (#88)

* Adjustment for circleci (#89)

* chore: wip adjustment for screengrab

* chore: [circleci] adjust config.yml

* chore: [circleci] update config.yml, Fastfile, Gemfile.lock, RecoverWalletScreenGrabsTest.kt

* chore: [circleci] for now just unit-test

* fix: android: Footer version label is obfuscated (#92)

* fix: android: Footer version label is obfuscated

* fix: [#92] android: Footer version label is obfuscated

* fix: You saved it right screen reset button covers words (#93)

* fix: [#84] change seed words layout to lazy vertical grid

* fix: [#84] refactor seed words layout

* tiny resizing (#94)

* code and version bump

* change break (#97)

adds a android user agent and externalID

* build code number

fix: [#96] remove bottom_nav_menu_us and just using bottom_nav_menu for consistency (#98)

* fix: [#137] fix: Reset fiat options in Buy / Receive modal (#99)

* Chore/update device data (#100)

* change break

adds a android user agent and externalID

* Update ReceiveDialogViewModel.kt

* chore: refactor request params for fetchMoonpaySignedUrl

---------

Co-authored-by: andhikayuana <[email protected]>

* Add agent string obfuscation (#103)

* updated metadata (#105)

* chore: remove screen lock detection (#106)

* changed to tap

* Added instruction label

-added localizations

* Added 'empty string for when confirm is completed

* version and code bump

* fix typo

replaced click file with mp3
added error sound

* added 3 languages

* 🧰  Fx/seed words UI polish (#108)

* changed to tap

* Added instruction label

-added localizations

* Added 'empty string for when confirm is completed

* version and code bump

* fix typo

replaced click file with mp3
added error sound

* Removed unused audio files

* polished tests

* removed unused asset pack

* code bump

* code bump

* ❇️ Feat/add polish punjabi farsi (#109)

* changed to tap

* Added instruction label

-added localizations

* Added 'empty string for when confirm is completed

* version and code bump

* fix typo

replaced click file with mp3
added error sound

* added 3 languages

* Removed unused audio files

* polished tests

* removed unused asset pack

* code bump

* broke out completion of the seed phrase and navigation

- Feedback was a user could complete seed phrase and not tap "Game and Sync"
- Forced users to start all over
- Saved a correct seed phrase confirmation into memory

* code bump

* fix for

https://console.firebase.google.com/project/brainwallet-mobile/crashlytics/app/android:ltd.grunt.brainwallet/issues/1386f366ab35e9112a6b742d629bb0be?time=last-seven-days&types=crash&sessionEventKey=685DA96C00BF00015A7AFEA30E0DB49C_2098799426616143441

* measure where users tap

* code bump

* fix: fix YourSeedProveItState.isWordUsedCorrectly

* Cleaned commented out BuyLitecoinscreen

* code bump

---------

Co-authored-by: andhikayuana <[email protected]>

* 🚀[Release v4.7.0] Merge into Main  (#115)

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update issue templates

* updated core changes

per @andhikayuana

* Rename .java to .kt

* chore: refactor BRApiManager & APIClient

* chore: remove unused part at APIClient

* feat: wip new peer discovery

* feat: implement selected peer ip address from cache (fetched from API)

* feat: implement selected peer ip address from cache (fetched from API)

* feat: filter out peers with NODE_NETWORK, NODE_BLOOM

* fix: race condition when clear shared prefs values after wipeAll

* Updating the core library

from the new peer discovery (v4.2.0)

* Chore/revert pre peer discovery (Android) (#69)

* chore: update core submodule

* chore: resolve conflict

* Update build.gradle.kts

version and code bump

* chore: for now at BRPeerManager.wrapConnectV2 only using connect, since the core using hardcoded peers

* fix: fix write down confirm screen (#63)

* fix: fix write down confirm screen

* fix: fix allow seed word item not unique

* chore: cherry picked and adjust from
- f2fa8e1e4fb9c7429fa86461b24b4463a7969ecf
- 98644c425b2fdae7b8b424708fb1a61ad983a9d8
- 93969278da8f95adc0c9f0f8411c8a27876a4d77
- 7ad4b9853b7d1bf7ddbaa576242d8800615a48fb
- 8e57d2a67420565b40b753dec5a533776da4821f

* fix: fix crash can't parse response inside LtcRepository.fetchRates

* fix: fix crash (failed parse) when SelectedPeersRepository.fetchSelectedPeers got unsuccessful response

* code bump

* fix: ConcurrentModificationException at BRPeerManager.txStatusUpdate

* feat: implement new API

* code bump

---------

Co-authored-by: Kerry Washington <[email protected]>

* feat: remove unused activity (ImportActivity) at AndroidManifest.xml (#71)

* fix: fix crash IllegalStateException: cannot make a new request because the previous response is still open (#73)

* code bump

* Feat/move tx fee (#74)

* chore: add new translations at strings.xml

* feat: move network fee to HomeSettingDrawerSheet & remove unused code

* fix: fix dismiss allow state loss (#76)

* fix: fix typo at strings.xml (#75)

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* version and code bump

* Added support url (#81)

- changed the language
- code bump

* version and code bump

* Revert from eda0f532 & cherry pick (#86)

* version bump

* feat: new UI for receive and topup flow (moonpay integration) (#72)

* feat: [WIP][UI] new UI for receive and topup flow

* feat: [WIP][UI] implement copy address and some refactor

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: replace webview using CustomTabsIntent from androidx.browser

* feat: add PickerWheel

* chore: rename param at QRUtils.generateQR

* chore: revert default startDestination at BrainwalletActivity

* feat: wip moonpay integration

* feat: wip moonpay integration

* chore: new UI for ReceiveDialog

* chore: parse error from response API at BrainwalletViewModel

* chore: add /moonpay/buy-quote and remove dev base url

* chore: make LegacyNavigation.showMoonPayWidget receive params for the widget url

* chore: add GetMoonpayBuyQuoteResponse

* chore: wip moonpay integration to call buy-quote

* fix: fix wheel picker for IDR at ReceiveDialog

* fix: fix invalid signature

* feat: moonpay integration at onboarding flow at BuyLitecoinScreen also fix some stuffs

* chore: replace base url for moonpay buy integration when debug

* chore: introduce LocalCacheSource.kt and cache fetch limits

* chore: adjustment receive dialog UI
- debounce fiat currency to 2s
- increment in 10
- remove decimal places
- default value to 10% of range

* chore: reorder bottom navigation item and add new strings

* chore: add new translations

* chore: refactor UI for buy and receive dialog

* chore: cleanup ReceiveDialogViewModel

* chore: using MoonpayBuyWidget

* chore: adjustment moonpaywidget

* chore: for now moonpay widget using CustomTabsIntent

* chore: set allowSpend to false when recommend rescan click

* fix: add delete transaction data from local database

* Removed chatty event

* chore: add analytics at BRWalletManager.publishCallback

* chore: make sure calculation and static fee same as iOS, add setting for selected fee type

---------

Co-authored-by: Kerry Washington <[email protected]>

* build bump

* chore: open bread activity first then open moonpay widget (#88)

* Adjustment for circleci (#89)

* chore: wip adjustment for screengrab

* chore: [circleci] adjust config.yml

* chore: [circleci] update config.yml, Fastfile, Gemfile.lock, RecoverWalletScreenGrabsTest.kt

* chore: [circleci] for now just unit-test

* fix: android: Footer version label is obfuscated (#92)

* fix: android: Footer version label is obfuscated

* fix: [#92] android: Footer version label is obfuscated

* fix: You saved it right screen reset button covers words (#93)

* fix: [#84] change seed words layout to lazy vertical grid

* fix: [#84] refactor seed words layout

* tiny resizing (#94)

* code and version bump

* change break (#97)

adds a android user agent and externalID

* build code number

fix: [#96] remove bottom_nav_menu_us and just using bottom_nav_menu for consistency (#98)

* fix: [#137] fix: Reset fiat options in Buy / Receive modal (#99)

* Chore/update device data (#100)

* change break

adds a android user agent and externalID

* Update ReceiveDialogViewModel.kt

* chore: refactor request params for fetchMoonpaySignedUrl

---------

Co-authored-by: andhikayuana <[email protected]>

* Add agent string obfuscation (#103)

* updated metadata (#105)

* chore: remove screen lock detection (#106)

* 🧰  Fx/seed words UI polish (#108)

* changed to tap

* Added instruction label

-added localizations

* Added 'empty string for when confirm is completed

* version and code bump

* fix typo

replaced click file with mp3
added error sound

* ❇️ Feat/add polish punjabi farsi (#109)

* changed to tap

* Added instruction label

-added localizations

* Added 'empty string for when confirm is completed

* version and code bump

* fix typo

replaced click file with mp3
added error sound

* added 3 languages

* Removed unused audio files

* polished tests

* removed unused asset pack

* code bump

* fix: fix YourSeedProveItState.isWordUsedCorrectly (#111)

* Upgrade targetSdk 36 (#113)

* chore: change drawable with density for brainwallet_logotype_white

* chore: adjustment WelcomeScreen.kt

* chore: adjustment for targetSdk 36 also support 16KB page size

* bump

clean extra semicolon

* Update pro-guard-rules

* Updated the version

---------

Co-authored-by: andhikayuana <[email protected]>

* Updated games module to v1.1.0

* Updated the games submodule

* Renamed and tested with user skips

---------

Co-authored-by: andhikayuana <[email protected]>

* Fix(#227): Crash when launching MoonPay Widget (#126)

Refactored the MoonPay widget integration to a dedicated Composable
(`MoonPayWidgetLauncher`) to ensure proper state handling and loading
behavior.

- Added `MoonPayWidgetLauncher.kt` with Composable and ViewModel
  for managing signed URL fetch and Custom Tab launch.
- Ensures loading state covers the whole screen, preventing UI crashes.
- Removed legacy static method `LegacyNavigation.showMoonPayWidget`.
- Updated `ReceiveDialog.kt` and `BuyLitecoinScreen.kt` to use the new
  Composable.
- Minor cleanup in `LegacyNavigation.kt`.

* feat(#138): Improve Unlock Screen UI and add dark mode toggle (#122)

* Redesign welcome screen (#123)

* Redesign welcome screen

* Redesign ready screen

* 🚀[Release v4.7.2] Merge into Develop (#127)

* 🚀[Release v4.4.7] Merge into Main  (#70)

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* Add version and code to welcome screen

* reset padding

* Revert "Updated the APIManager"

This reverts commit 4e252ac29cfb6c3ab26ae5ea4a8f6de154311f2e.

# Conflicts:
#	app/src/main/java/com/brainwallet/tools/manager/APIManager.kt

* Reverted the Kotlin APIManager.

* fix: fix crash when FragmentSignal dismissed

* fix: fix sync after wipe

* fix: fix wrong lifecycle to trigger callback at FragmentSignal

* Update i…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants