From 9d99ee131b2a0a6bfee0c3fce6883a8942588997 Mon Sep 17 00:00:00 2001 From: Kerry Washington Date: Tue, 21 May 2024 01:05:49 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=80[Release=20v.2.10.0-20240421]=20Mer?= =?UTF-8?q?ge=20into=20Main=20(#181)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image * move constants where they are used * respect constant nomenclature * make “ltcPriceLbl” same textSize as “ltcAmount” * WIP: Login/Register views (#159) * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image Co-authored-by: Kerry Washington * version bump and upgrade * make sure listeners are not NULL * make sure to call super * remove unused code * Move transactions to HistoryFragment * fix typo * Remove fonts in assets folder. Delete BREdit and BRText and use styles * Reformat Code: layout files * Reformat code: anim files * Reformat code: animator files * code refactor * connect login and register views to API * make partnerapi as git submodule * update partnerapi * BRKeystore: remove duplicated entry (FAIL_COUNT_ALIAS) * after successful registration, show up a confirmation and send user back to login * remove test code * add ktlint and format kotlin files * update partnerapi * fix typo * set views Ids * Transfer view: add “Logout” button and handle navigation * transfer view: add padding bottom to “Transfer” button * gradle: code format * use default NDK version=21.0.6113669 * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * setup kotlin * cleanup + use timber * use androidx fragment * update libs * FragmentSend: IDE convertion to kotlin * FragmentSend: tweak kotlin conversion * FragmentSend: UD integration * BRButton: disable touch effect when disabled * DynamicDonationFragment: convert to android * DynamicDonationFragment: use lambda * UDResolution: only resolve LTC domains * FragmentSend: translation * translate “Lookup” * rename tryBitcoinURL to tryLitecoinURL * add kotlin doc * Release v1.20.0 (simplex) (#190) * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) * Release v1.20.0 - Simplex (#187) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) Co-authored-by: Kerry Co-authored-by: Ebenezer * bump app version 1.21.0(631) * bugfix: send view stays after send confirmation disappears * remove UD error toasts * clear the LTC address before each Lookup * show up a confirmation toast if UD resolution is successful * bump version v1.21.0(632) * UD: add Analytics events * FragmentSend: disable Lookup button until the domain string is at least 4 chars * bump version v1.21.0(633) * Release v1.21.0 (#193) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * setup kotlin * cleanup + use timber * use androidx fragment * update libs * FragmentSend: IDE convertion to kotlin * FragmentSend: tweak kotlin conversion * FragmentSend: UD integration * BRButton: disable touch effect when disabled * DynamicDonationFragment: convert to android * DynamicDonationFragment: use lambda * UDResolution: only resolve LTC domains * FragmentSend: translation * translate “Lookup” * rename tryBitcoinURL to tryLitecoinURL * add kotlin doc * Release v1.20.0 (simplex) (#190) * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) * bump app version 1.21.0(631) * bugfix: send view stays after send confirmation disappears * remove UD error toasts * clear the LTC address before each Lookup * show up a confirmation toast if UD resolution is successful * bump version v1.21.0(632) * UD: add Analytics events * FragmentSend: disable Lookup button until the domain string is at least 4 chars * bump version v1.21.0(633) Co-authored-by: Kerry Co-authored-by: Ebenezer * fix build errors * Tapping on BuyTab shows up the BuyTabFragment * BuyTabFragment: add horizontal divider * replace listener with lambda * BuyTab: change fiat selector * FragmentBuy: add toolbar and show progress while page is loading * rename menu tab from “Spend” to “Card” * change register view header title * register view: change fields order according to iOS * register view: remove address2 field * login view: handle forgot password * tweak login/register views * transfer view v1 * update partnerapi lib * Replace “Bread” with “Litewallet” * Replace “Bread” with “Litewallet” * remove empty java class * bugFix(Send view): Send with Scan crashes * ScanQRActivity: code clean-up * login/register views: extract texts into strings resource * Buy tab: remove “choose fiat” from partner item view * login/register views: localize texts * reduce password length from 8 to 6 at least * bump version v2.0.0(634) * bugfix: make sure the market price displays only 2 decimals * bump version v2.0.0(635) * Release v2.0.0 card v1 (#202) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image * move constants where they are used * respect constant nomenclature * make “ltcPriceLbl” same textSize as “ltcAmount” * WIP: Login/Register views (#159) * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image Co-authored-by: Kerry Washington * version bump and upgrade * make sure listeners are not NULL * make sure to call super * remove unused code * Move transactions to HistoryFragment * fix typo * Remove fonts in assets folder. Delete BREdit and BRText and use styles * Reformat Code: layout files * Reformat code: anim files * Reformat code: animator files * code refactor * connect login and register views to API * make partnerapi as git submodule * update partnerapi * BRKeystore: remove duplicated entry (FAIL_COUNT_ALIAS) * after successful registration, show up a confirmation and send user back to login * remove test code * add ktlint and format kotlin files * update partnerapi * fix typo * set views Ids * Transfer view: add “Logout” button and handle navigation * transfer view: add padding bottom to “Transfer” button * gradle: code format * use default NDK version=21.0.6113669 * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * setup kotlin * cleanup + use timber * use androidx fragment * update libs * FragmentSend: IDE convertion to kotlin * FragmentSend: tweak kotlin conversion * FragmentSend: UD integration * BRButton: disable touch effect when disabled * DynamicDonationFragment: convert to android * DynamicDonationFragment: use lambda * UDResolution: only resolve LTC domains * FragmentSend: translation * translate “Lookup” * rename tryBitcoinURL to tryLitecoinURL * add kotlin doc * Release v1.20.0 (simplex) (#190) * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) * bump app version 1.21.0(631) * bugfix: send view stays after send confirmation disappears * remove UD error toasts * clear the LTC address before each Lookup * show up a confirmation toast if UD resolution is successful * bump version v1.21.0(632) * UD: add Analytics events * FragmentSend: disable Lookup button until the domain string is at least 4 chars * bump version v1.21.0(633) * fix build errors * Tapping on BuyTab shows up the BuyTabFragment * BuyTabFragment: add horizontal divider * replace listener with lambda * BuyTab: change fiat selector * FragmentBuy: add toolbar and show progress while page is loading * rename menu tab from “Spend” to “Card” * change register view header title * register view: change fields order according to iOS * register view: remove address2 field * login view: handle forgot password * tweak login/register views * transfer view v1 * update partnerapi lib * Replace “Bread” with “Litewallet” * Replace “Bread” with “Litewallet” * remove empty java class * bugFix(Send view): Send with Scan crashes * ScanQRActivity: code clean-up * login/register views: extract texts into strings resource * Buy tab: remove “choose fiat” from partner item view * login/register views: localize texts * reduce password length from 8 to 6 at least * bump version v2.0.0(634) * bugfix: make sure the market price displays only 2 decimals * bump version v2.0.0(635) Co-authored-by: Kerry Co-authored-by: Ebenezer * refacto(FragmentMenu): use lambda + code reformat * feature: Replace Customer Email with Zendesk HC * [TechDebt] Add issue templates (#208) * Add issue templates * polished per comments * [Bugfix] Header price update occludes the other text (#207) * Change the font mixe * Set the font to autosizing - helps by setting the max width * add balance label in header * fix error: Attribute autoSizeMinTextSize is only used in API level 26 and higher (current min is 23) * fix crash from Firebase: BreadActivity.java line 444 https://github.com/litecoin-foundation/loafwallet-android/issues/211 * fix crash in RegisterFragment.kt at line 68 https://github.com/litecoin-foundation/loafwallet-android/issues/212 * PR reviews * bump version v2.1.0(636) * add card disclaimer dialog * bump version v2.1.1(637) * Release v2.1.0 (into master) (#227) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image * move constants where they are used * respect constant nomenclature * make “ltcPriceLbl” same textSize as “ltcAmount” * WIP: Login/Register views (#159) * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image Co-authored-by: Kerry Washington * version bump and upgrade * make sure listeners are not NULL * make sure to call super * remove unused code * Move transactions to HistoryFragment * fix typo * Remove fonts in assets folder. Delete BREdit and BRText and use styles * Reformat Code: layout files * Reformat code: anim files * Reformat code: animator files * code refactor * connect login and register views to API * make partnerapi as git submodule * update partnerapi * BRKeystore: remove duplicated entry (FAIL_COUNT_ALIAS) * after successful registration, show up a confirmation and send user back to login * remove test code * add ktlint and format kotlin files * update partnerapi * fix typo * set views Ids * Transfer view: add “Logout” button and handle navigation * transfer view: add padding bottom to “Transfer” button * gradle: code format * use default NDK version=21.0.6113669 * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * setup kotlin * cleanup + use timber * use androidx fragment * update libs * FragmentSend: IDE convertion to kotlin * FragmentSend: tweak kotlin conversion * FragmentSend: UD integration * BRButton: disable touch effect when disabled * DynamicDonationFragment: convert to android * DynamicDonationFragment: use lambda * UDResolution: only resolve LTC domains * FragmentSend: translation * translate “Lookup” * rename tryBitcoinURL to tryLitecoinURL * add kotlin doc * Release v1.20.0 (simplex) (#190) * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) * bump app version 1.21.0(631) * bugfix: send view stays after send confirmation disappears * remove UD error toasts * clear the LTC address before each Lookup * show up a confirmation toast if UD resolution is successful * bump version v1.21.0(632) * UD: add Analytics events * FragmentSend: disable Lookup button until the domain string is at least 4 chars * bump version v1.21.0(633) * fix build errors * Tapping on BuyTab shows up the BuyTabFragment * BuyTabFragment: add horizontal divider * replace listener with lambda * BuyTab: change fiat selector * FragmentBuy: add toolbar and show progress while page is loading * rename menu tab from “Spend” to “Card” * change register view header title * register view: change fields order according to iOS * register view: remove address2 field * login view: handle forgot password * tweak login/register views * transfer view v1 * update partnerapi lib * Replace “Bread” with “Litewallet” * Replace “Bread” with “Litewallet” * remove empty java class * bugFix(Send view): Send with Scan crashes * ScanQRActivity: code clean-up * login/register views: extract texts into strings resource * Buy tab: remove “choose fiat” from partner item view * login/register views: localize texts * reduce password length from 8 to 6 at least * bump version v2.0.0(634) * bugfix: make sure the market price displays only 2 decimals * bump version v2.0.0(635) * refacto(FragmentMenu): use lambda + code reformat * feature: Replace Customer Email with Zendesk HC * [TechDebt] Add issue templates (#208) * Add issue templates * polished per comments * [Bugfix] Header price update occludes the other text (#207) * Change the font mixe * Set the font to autosizing - helps by setting the max width * add balance label in header * fix error: Attribute autoSizeMinTextSize is only used in API level 26 and higher (current min is 23) * fix crash from Firebase: BreadActivity.java line 444 https://github.com/litecoin-foundation/loafwallet-android/issues/211 * fix crash in RegisterFragment.kt at line 68 https://github.com/litecoin-foundation/loafwallet-android/issues/212 * PR reviews * bump version v2.1.0(636) Co-authored-by: Kerry Co-authored-by: Ebenezer * feat(Moonpay): add partner * feat(Moonpay): use CustomTabs * feat(Moonpay): add translation * fix(*): remove extra “\” * Release v2.1.1 (into master) (#243) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image * move constants where they are used * respect constant nomenclature * make “ltcPriceLbl” same textSize as “ltcAmount” * WIP: Login/Register views (#159) * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image Co-authored-by: Kerry Washington * version bump and upgrade * make sure listeners are not NULL * make sure to call super * remove unused code * Move transactions to HistoryFragment * fix typo * Remove fonts in assets folder. Delete BREdit and BRText and use styles * Reformat Code: layout files * Reformat code: anim files * Reformat code: animator files * code refactor * connect login and register views to API * make partnerapi as git submodule * update partnerapi * BRKeystore: remove duplicated entry (FAIL_COUNT_ALIAS) * after successful registration, show up a confirmation and send user back to login * remove test code * add ktlint and format kotlin files * update partnerapi * fix typo * set views Ids * Transfer view: add “Logout” button and handle navigation * transfer view: add padding bottom to “Transfer” button * gradle: code format * use default NDK version=21.0.6113669 * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * setup kotlin * cleanup + use timber * use androidx fragment * update libs * FragmentSend: IDE convertion to kotlin * FragmentSend: tweak kotlin conversion * FragmentSend: UD integration * BRButton: disable touch effect when disabled * DynamicDonationFragment: convert to android * DynamicDonationFragment: use lambda * UDResolution: only resolve LTC domains * FragmentSend: translation * translate “Lookup” * rename tryBitcoinURL to tryLitecoinURL * add kotlin doc * Release v1.20.0 (simplex) (#190) * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) * bump app version 1.21.0(631) * bugfix: send view stays after send confirmation disappears * remove UD error toasts * clear the LTC address before each Lookup * show up a confirmation toast if UD resolution is successful * bump version v1.21.0(632) * UD: add Analytics events * FragmentSend: disable Lookup button until the domain string is at least 4 chars * bump version v1.21.0(633) * fix build errors * Tapping on BuyTab shows up the BuyTabFragment * BuyTabFragment: add horizontal divider * replace listener with lambda * BuyTab: change fiat selector * FragmentBuy: add toolbar and show progress while page is loading * rename menu tab from “Spend” to “Card” * change register view header title * register view: change fields order according to iOS * register view: remove address2 field * login view: handle forgot password * tweak login/register views * transfer view v1 * update partnerapi lib * Replace “Bread” with “Litewallet” * Replace “Bread” with “Litewallet” * remove empty java class * bugFix(Send view): Send with Scan crashes * ScanQRActivity: code clean-up * login/register views: extract texts into strings resource * Buy tab: remove “choose fiat” from partner item view * login/register views: localize texts * reduce password length from 8 to 6 at least * bump version v2.0.0(634) * bugfix: make sure the market price displays only 2 decimals * bump version v2.0.0(635) * refacto(FragmentMenu): use lambda + code reformat * feature: Replace Customer Email with Zendesk HC * [TechDebt] Add issue templates (#208) * Add issue templates * polished per comments * [Bugfix] Header price update occludes the other text (#207) * Change the font mixe * Set the font to autosizing - helps by setting the max width * add balance label in header * fix error: Attribute autoSizeMinTextSize is only used in API level 26 and higher (current min is 23) * fix crash from Firebase: BreadActivity.java line 444 https://github.com/litecoin-foundation/loafwallet-android/issues/211 * fix crash in RegisterFragment.kt at line 68 https://github.com/litecoin-foundation/loafwallet-android/issues/212 * PR reviews * bump version v2.1.0(636) * add card disclaimer dialog * bump version v2.1.1(637) Co-authored-by: Kerry Co-authored-by: Ebenezer * cleanup(*): remove unused methods * feat(in-app review): add in-app review * refacto: use lambda and wrap if in brackets * refacto * refacto: use lambda * show up the in-app review dialog on the 5th send transactions * bump version v2.2.0(638) * [Release v2.2.0] Merge into master (#250) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image * move constants where they are used * respect constant nomenclature * make “ltcPriceLbl” same textSize as “ltcAmount” * WIP: Login/Register views (#159) * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image Co-authored-by: Kerry Washington * version bump and upgrade * make sure listeners are not NULL * make sure to call super * remove unused code * Move transactions to HistoryFragment * fix typo * Remove fonts in assets folder. Delete BREdit and BRText and use styles * Reformat Code: layout files * Reformat code: anim files * Reformat code: animator files * code refactor * connect login and register views to API * make partnerapi as git submodule * update partnerapi * BRKeystore: remove duplicated entry (FAIL_COUNT_ALIAS) * after successful registration, show up a confirmation and send user back to login * remove test code * add ktlint and format kotlin files * update partnerapi * fix typo * set views Ids * Transfer view: add “Logout” button and handle navigation * transfer view: add padding bottom to “Transfer” button * gradle: code format * use default NDK version=21.0.6113669 * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * setup kotlin * cleanup + use timber * use androidx fragment * update libs * FragmentSend: IDE convertion to kotlin * FragmentSend: tweak kotlin conversion * FragmentSend: UD integration * BRButton: disable touch effect when disabled * DynamicDonationFragment: convert to android * DynamicDonationFragment: use lambda * UDResolution: only resolve LTC domains * FragmentSend: translation * translate “Lookup” * rename tryBitcoinURL to tryLitecoinURL * add kotlin doc * Release v1.20.0 (simplex) (#190) * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) * bump app version 1.21.0(631) * bugfix: send view stays after send confirmation disappears * remove UD error toasts * clear the LTC address before each Lookup * show up a confirmation toast if UD resolution is successful * bump version v1.21.0(632) * UD: add Analytics events * FragmentSend: disable Lookup button until the domain string is at least 4 chars * bump version v1.21.0(633) * fix build errors * Tapping on BuyTab shows up the BuyTabFragment * BuyTabFragment: add horizontal divider * replace listener with lambda * BuyTab: change fiat selector * FragmentBuy: add toolbar and show progress while page is loading * rename menu tab from “Spend” to “Card” * change register view header title * register view: change fields order according to iOS * register view: remove address2 field * login view: handle forgot password * tweak login/register views * transfer view v1 * update partnerapi lib * Replace “Bread” with “Litewallet” * Replace “Bread” with “Litewallet” * remove empty java class * bugFix(Send view): Send with Scan crashes * ScanQRActivity: code clean-up * login/register views: extract texts into strings resource * Buy tab: remove “choose fiat” from partner item view * login/register views: localize texts * reduce password length from 8 to 6 at least * bump version v2.0.0(634) * bugfix: make sure the market price displays only 2 decimals * bump version v2.0.0(635) * refacto(FragmentMenu): use lambda + code reformat * feature: Replace Customer Email with Zendesk HC * [TechDebt] Add issue templates (#208) * Add issue templates * polished per comments * [Bugfix] Header price update occludes the other text (#207) * Change the font mixe * Set the font to autosizing - helps by setting the max width * add balance label in header * fix error: Attribute autoSizeMinTextSize is only used in API level 26 and higher (current min is 23) * fix crash from Firebase: BreadActivity.java line 444 https://github.com/litecoin-foundation/loafwallet-android/issues/211 * fix crash in RegisterFragment.kt at line 68 https://github.com/litecoin-foundation/loafwallet-android/issues/212 * PR reviews * bump version v2.1.0(636) * add card disclaimer dialog * bump version v2.1.1(637) * feat(Moonpay): add partner * feat(Moonpay): use CustomTabs * feat(Moonpay): add translation * fix(*): remove extra “\” * cleanup(*): remove unused methods * feat(in-app review): add in-app review * refacto: use lambda and wrap if in brackets * refacto * refacto: use lambda * show up the in-app review dialog on the 5th send transactions * bump version v2.2.0(638) Co-authored-by: Kerry Co-authored-by: Ebenezer * feat(card tab): hide for non-US users * refacto(LoginActivity): use lambda, cleanup * LoginActivity: remove “My address” button * add LTC current price to login view * remove LTC current price from history view * added localizations * Added Indonesian language support (#262) * Added Indonesian language support * Changed Indonesian language resource folder from values-idn to values-in * Translated a missing lines, remove line break, and change Simplex explanation back to English * Reverted back to translating Simplex and Moonpay explanations Co-authored-by: Ryan Petter * Added Turkish language support (#263) * Added Turkish language support * Added - to Turkish Language resource folder. Now the folder is named values-tr rather than values tr. * Fixed a few translation and got rid of non translatable lines * Reverted back to translating Simplex and Moonpay explanations Co-authored-by: Ryan Petter * upgrade gradle build tools * bump version v2.3.0(639) * bump version v2.3.1(640) * show available card balance * update card disclaimer * card balance: localize error message * default implementation of showError(Int) * Updated the new logo app icon (#282) - Added the round circle version(s) - Added the sqare version(s) - Addred the rounded corner * Release v2.3.1 into master (#268) (#281) * Release v1.20.0 - Simplex (#187) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) Co-authored-by: Kerry Co-authored-by: Ebenezer * Release v1.21.0 (#193) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * setup kotlin * cleanup + use timber * use androidx fragment * update libs * FragmentSend: IDE convertion to kotlin * FragmentSend: tweak kotlin conversion * FragmentSend: UD integration * BRButton: disable touch effect when disabled * DynamicDonationFragment: convert to android * DynamicDonationFragment: use lambda * UDResolution: only resolve LTC domains * FragmentSend: translation * translate “Lookup” * rename tryBitcoinURL to tryLitecoinURL * add kotlin doc * Release v1.20.0 (simplex) (#190) * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) * bump app version 1.21.0(631) * bugfix: send view stays after send confirmation disappears * remove UD error toasts * clear the LTC address before each Lookup * show up a confirmation toast if UD resolution is successful * bump version v1.21.0(632) * UD: add Analytics events * FragmentSend: disable Lookup button until the domain string is at least 4 chars * bump version v1.21.0(633) Co-authored-by: Kerry Co-authored-by: Ebenezer * Release v2.0.0 card v1 (#202) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image * move constants where they are used * respect constant nomenclature * make “ltcPriceLbl” same textSize as “ltcAmount” * WIP: Login/Register views (#159) * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image Co-authored-by: Kerry Washington * version bump and upgrade * make sure listeners are not NULL * make sure to call super * remove unused code * Move transactions to HistoryFragment * fix typo * Remove fonts in assets folder. Delete BREdit and BRText and use styles * Reformat Code: layout files * Reformat code: anim files * Reformat code: animator files * code refactor * connect login and register views to API * make partnerapi as git submodule * update partnerapi * BRKeystore: remove duplicated entry (FAIL_COUNT_ALIAS) * after successful registration, show up a confirmation and send user back to login * remove test code * add ktlint and format kotlin files * update partnerapi * fix typo * set views Ids * Transfer view: add “Logout” button and handle navigation * transfer view: add padding bottom to “Transfer” button * gradle: code format * use default NDK version=21.0.6113669 * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * setup kotlin * cleanup + use timber * use androidx fragment * update libs * FragmentSend: IDE convertion to kotlin * FragmentSend: tweak kotlin conversion * FragmentSend: UD integration * BRButton: disable touch effect when disabled * DynamicDonationFragment: convert to android * DynamicDonationFragment: use lambda * UDResolution: only resolve LTC domains * FragmentSend: translation * translate “Lookup” * rename tryBitcoinURL to tryLitecoinURL * add kotlin doc * Release v1.20.0 (simplex) (#190) * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) * bump app version 1.21.0(631) * bugfix: send view stays after send confirmation disappears * remove UD error toasts * clear the LTC address before each Lookup * show up a confirmation toast if UD resolution is successful * bump version v1.21.0(632) * UD: add Analytics events * FragmentSend: disable Lookup button until the domain string is at least 4 chars * bump version v1.21.0(633) * fix build errors * Tapping on BuyTab shows up the BuyTabFragment * BuyTabFragment: add horizontal divider * replace listener with lambda * BuyTab: change fiat selector * FragmentBuy: add toolbar and show progress while page is loading * rename menu tab from “Spend” to “Card” * change register view header title * register view: change fields order according to iOS * register view: remove address2 field * login view: handle forgot password * tweak login/register views * transfer view v1 * update partnerapi lib * Replace “Bread” with “Litewallet” * Replace “Bread” with “Litewallet” * remove empty java class * bugFix(Send view): Send with Scan crashes * ScanQRActivity: code clean-up * login/register views: extract texts into strings resource * Buy tab: remove “choose fiat” from partner item view * login/register views: localize texts * reduce password length from 8 to 6 at least * bump version v2.0.0(634) * bugfix: make sure the market price displays only 2 decimals * bump version v2.0.0(635) Co-authored-by: Kerry Co-authored-by: Ebenezer * Release v2.1.0 (into master) (#227) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image * move constants where they are used * respect constant nomenclature * make “ltcPriceLbl” same textSize as “ltcAmount” * WIP: Login/Register views (#159) * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image Co-authored-by: Kerry Washington * version bump and upgrade * make sure listeners are not NULL * make sure to call super * remove unused code * Move transactions to HistoryFragment * fix typo * Remove fonts in assets folder. Delete BREdit and BRText and use styles * Reformat Code: layout files * Reformat code: anim files * Reformat code: animator files * code refactor * connect login and register views to API * make partnerapi as git submodule * update partnerapi * BRKeystore: remove duplicated entry (FAIL_COUNT_ALIAS) * after successful registration, show up a confirmation and send user back to login * remove test code * add ktlint and format kotlin files * update partnerapi * fix typo * set views Ids * Transfer view: add “Logout” button and handle navigation * transfer view: add padding bottom to “Transfer” button * gradle: code format * use default NDK version=21.0.6113669 * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * setup kotlin * cleanup + use timber * use androidx fragment * update libs * FragmentSend: IDE convertion to kotlin * FragmentSend: tweak kotlin conversion * FragmentSend: UD integration * BRButton: disable touch effect when disabled * DynamicDonationFragment: convert to android * DynamicDonationFragment: use lambda * UDResolution: only resolve LTC domains * FragmentSend: translation * translate “Lookup” * rename tryBitcoinURL to tryLitecoinURL * add kotlin doc * Release v1.20.0 (simplex) (#190) * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) * bump app version 1.21.0(631) * bugfix: send view stays after send confirmation disappears * remove UD error toasts * clear the LTC address before each Lookup * show up a confirmation toast if UD resolution is successful * bump version v1.21.0(632) * UD: add Analytics events * FragmentSend: disable Lookup button until the domain string is at least 4 chars * bump version v1.21.0(633) * fix build errors * Tapping on BuyTab shows up the BuyTabFragment * BuyTabFragment: add horizontal divider * replace listener with lambda * BuyTab: change fiat selector * FragmentBuy: add toolbar and show progress while page is loading * rename menu tab from “Spend” to “Card” * change register view header title * register view: change fields order according to iOS * register view: remove address2 field * login view: handle forgot password * tweak login/register views * transfer view v1 * update partnerapi lib * Replace “Bread” with “Litewallet” * Replace “Bread” with “Litewallet” * remove empty java class * bugFix(Send view): Send with Scan crashes * ScanQRActivity: code clean-up * login/register views: extract texts into strings resource * Buy tab: remove “choose fiat” from partner item view * login/register views: localize texts * reduce password length from 8 to 6 at least * bump version v2.0.0(634) * bugfix: make sure the market price displays only 2 decimals * bump version v2.0.0(635) * refacto(FragmentMenu): use lambda + code reformat * feature: Replace Customer Email with Zendesk HC * [TechDebt] Add issue templates (#208) * Add issue templates * polished per comments * [Bugfix] Header price update occludes the other text (#207) * Change the font mixe * Set the font to autosizing - helps by setting the max width * add balance label in header * fix error: Attribute autoSizeMinTextSize is only used in API level 26 and higher (current min is 23) * fix crash from Firebase: BreadActivity.java line 444 https://github.com/litecoin-foundation/loafwallet-android/issues/211 * fix crash in RegisterFragment.kt at line 68 https://github.com/litecoin-foundation/loafwallet-android/issues/212 * PR reviews * bump version v2.1.0(636) Co-authored-by: Kerry Co-authored-by: Ebenezer * Release v2.1.1 (into master) (#243) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * … * 🦺[Tech Debt] Added new issues templates (#270) * Added normalized issue templates for Litewallet: Android * per review notes * Feature: switch language (#277) * in-app change language * tweak ChangeLanguage bottom sheet * version bump - Update to v2.4.0 - Update to Version Code: (640) * WIP: Merge Commit in progress * Updated merge * Updated the merge conflicts * bump build number * 🚀[Release v2.4.0] Merge into Master (#285) * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image * move constants where they are used * respect constant nomenclature * make “ltcPriceLbl” same textSize as “ltcAmount” * WIP: Login/Register views (#159) * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image Co-authored-by: Kerry Washington * version bump and upgrade * make sure listeners are not NULL * make sure to call super * remove unused code * Move transactions to HistoryFragment * fix typo * Remove fonts in assets folder. Delete BREdit and BRText and use styles * Reformat Code: layout files * Reformat code: anim files * Reformat code: animator files * code refactor * connect login and register views to API * make partnerapi as git submodule * update partnerapi * BRKeystore: remove duplicated entry (FAIL_COUNT_ALIAS) * after successful registration, show up a confirmation and send user back to login * remove test code * add ktlint and format kotlin files * update partnerapi * fix typo * set views Ids * Transfer view: add “Logout” button and handle navigation * transfer view: add padding bottom to “Transfer” button * gradle: code format * use default NDK version=21.0.6113669 * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * setup kotlin * cleanup + use timber * use androidx fragment * update libs * FragmentSend: IDE convertion to kotlin * FragmentSend: tweak kotlin conversion * FragmentSend: UD integration * BRButton: disable touch effect when disabled * DynamicDonationFragment: convert to android * DynamicDonationFragment: use lambda * UDResolution: only resolve LTC domains * FragmentSend: translation * translate “Lookup” * rename tryBitcoinURL to tryLitecoinURL * add kotlin doc * Release v1.20.0 (simplex) (#190) * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) * bump app version 1.21.0(631) * bugfix: send view stays after send confirmation disappears * remove UD error toasts * clear the LTC address before each Lookup * show up a confirmation toast if UD resolution is successful * bump version v1.21.0(632) * UD: add Analytics events * FragmentSend: disable Lookup button until the domain string is at least 4 chars * bump version v1.21.0(633) * fix build errors * Tapping on BuyTab shows up the BuyTabFragment * BuyTabFragment: add horizontal divider * replace listener with lambda * BuyTab: change fiat selector * FragmentBuy: add toolbar and show progress while page is loading * rename menu tab from “Spend” to “Card” * change register view header title * register view: change fields order according to iOS * register view: remove address2 field * login view: handle forgot password * tweak login/register views * transfer view v1 * update partnerapi lib * Replace “Bread” with “Litewallet” * Replace “Bread” with “Litewallet” * remove empty java class * bugFix(Send view): Send with Scan crashes * ScanQRActivity: code clean-up * login/register views: extract texts into strings resource * Buy tab: remove “choose fiat” from partner item view * login/register views: localize texts * reduce password length from 8 to 6 at least * bump version v2.0.0(634) * bugfix: make sure the market price displays only 2 decimals * bump version v2.0.0(635) * refacto(FragmentMenu): use lambda + code reformat * feature: Replace Customer Email with Zendesk HC * [TechDebt] Add issue templates (#208) * Add issue templates * polished per comments * [Bugfix] Header price update occludes the other text (#207) * Change the font mixe * Set the font to autosizing - helps by setting the max width * add balance label in header * fix error: Attribute autoSizeMinTextSize is only used in API level 26 and higher (current min is 23) * fix crash from Firebase: BreadActivity.java line 444 https://github.com/litecoin-foundation/loafwallet-android/issues/211 * fix crash in RegisterFragment.kt at line 68 https://github.com/litecoin-foundation/loafwallet-android/issues/212 * PR reviews * bump version v2.1.0(636) * add card disclaimer dialog * bump version v2.1.1(637) * feat(Moonpay): add partner * feat(Moonpay): use CustomTabs * feat(Moonpay): add translation * fix(*): remove extra “\” * cleanup(*): remove unused methods * feat(in-app review): add in-app review * refacto: use lambda and wrap if in brackets * refacto * refacto: use lambda * show up the in-app review dialog on the 5th send transactions * bump version v2.2.0(638) * feat(card tab): hide for non-US users * refacto(LoginActivity): use lambda, cleanup * LoginActivity: remove “My address” button * add LTC current price to login view * remove LTC current price from history view * added localizations * Added Indonesian language support (#262) * Added Indonesian language support * Changed Indonesian language resource folder from values-idn to values-in * Translated a missing lines, remove line break, and change Simplex explanation back to English * Reverted back to translating Simplex and Moonpay explanations Co-authored-by: Ryan Petter * Added Turkish language support (#263) * Added Turkish language support * Added - to Turkish Language resource folder. Now the folder is named values-tr rather than values tr. * Fixed a few translation and got rid of non translatable lines * Reverted back to translating Simplex and Moonpay explanations Co-authored-by: Ryan Petter * upgrade gradle build tools * bump version v2.3.0(639) * bump version v2.3.1(640) * show available card balance * update card disclaimer * card balance: localize error message * default implementation of showError(Int) * Updated the new logo app icon (#282) - Added the round circle version(s) - Added the sqare version(s) - Addred the rounded corner * Release v2.3.1 into master (#268) (#281) * Release v1.20.0 - Simplex (#187) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) Co-authored-by: Kerry Co-authored-by: Ebenezer * Release v1.21.0 (#193) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * setup kotlin * cleanup + use timber * use androidx fragment * update libs * FragmentSend: IDE convertion to kotlin * FragmentSend: tweak kotlin conversion * FragmentSend: UD integration * BRButton: disable touch effect when disabled * DynamicDonationFragment: convert to android * DynamicDonationFragment: use lambda * UDResolution: only resolve LTC domains * FragmentSend: translation * translate “Lookup” * rename tryBitcoinURL to tryLitecoinURL * add kotlin doc * Release v1.20.0 (simplex) (#190) * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) * bump app version 1.21.0(631) * bugfix: send view stays after send confirmation disappears * remove UD error toasts * clear the LTC address before each Lookup * show up a confirmation toast if UD resolution is successful * bump version v1.21.0(632) * UD: add Analytics events * FragmentSend: disable Lookup button until the domain string is at least 4 chars * bump version v1.21.0(633) Co-authored-by: Kerry Co-authored-by: Ebenezer * Release v2.0.0 card v1 (#202) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image * move constants where they are used * respect constant nomenclature * make “ltcPriceLbl” same textSize as “ltcAmount” * WIP: Login/Register views (#159) * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image Co-authored-by: Kerry Washington * version bump and upgrade * make sure listeners are not NULL * make sure to call super * remove unused code * Move transactions to HistoryFragment * fix typo * Remove fonts in assets folder. Delete BREdit and BRText and use styles * Reformat Code: layout files * Reformat code: anim files * Reformat code: animator files * code refactor * connect login and register views to API * make partnerapi as git submodule * update partnerapi * BRKeystore: remove duplicated entry (FAIL_COUNT_ALIAS) * after successful registration, show up a confirmation and send user back to login * remove test code * add ktlint and format kotlin files * update partnerapi * fix typo * set views Ids * Transfer view: add “Logout” button and handle navigation * transfer view: add padding bottom to “Transfer” button * gradle: code format * use default NDK version=21.0.6113669 * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * setup kotlin * cleanup + use timber * use androidx fragment * update libs * FragmentSend: IDE convertion to kotlin * FragmentSend: tweak kotlin conversion * FragmentSend: UD integration * BRButton: disable touch effect when disabled * DynamicDonationFragment: convert to android * DynamicDonationFragment: use lambda * UDResolution: only resolve LTC domains * FragmentSend: translation * translate “Lookup” * rename tryBitcoinURL to tryLitecoinURL * add kotlin doc * Release v1.20.0 (simplex) (#190) * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) * bump app version 1.21.0(631) * bugfix: send view stays after send confirmation disappears * remove UD error toasts * clear the LTC address before each Lookup * show up a confirmation toast if UD resolution is successful * bump version v1.21.0(632) * UD: add Analytics events * FragmentSend: disable Lookup button until the domain string is at least 4 chars * bump version v1.21.0(633) * fix build errors * Tapping on BuyTab shows up the BuyTabFragment * BuyTabFragment: add horizontal divider * replace listener with lambda * BuyTab: change fiat selector * FragmentBuy: add toolbar and show progress while page is loading * rename menu tab from “Spend” to “Card” * change register view header title * register view: change fields order according to iOS * register view: remove address2 field * login view: handle forgot password * tweak login/register views * transfer view v1 * update partnerapi lib * Replace “Bread” with “Litewallet” * Replace “Bread” with “Litewallet” * remove empty java class * bugFix(Send view): Send with Scan crashes * ScanQRActivity: code clean-up * login/register views: extract texts into strings resource * Buy tab: remove “choose fiat” from partner item view * login/register views: localize texts * reduce password length from 8 to 6 at least * bump version v2.0.0(634) * bugfix: make sure the market price displays only 2 decimals * bump version v2.0.0(635) Co-authored-by: Kerry Co-authored-by: Ebenezer * Release v2.1.0 (into master) (#227) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro sc… * 🚀[Release v2.4.0] Merge into Dev (#288) * update gradle * Change the prefix of the build .aab * 🦺[Tech Debt] Upgrade to API 27+ (#290) * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image * move constants where they are used * respect constant nomenclature * make “ltcPriceLbl” same textSize as “ltcAmount” * WIP: Login/Register views (#159) * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image Co-authored-by: Kerry Washington * version bump and upgrade * make sure listeners are not NULL * make sure to call super * remove unused code * Move transactions to HistoryFragment * fix typo * Remove fonts in assets folder. Delete BREdit and BRText and use styles * Reformat Code: layout files * Reformat code: anim files * Reformat code: animator files * code refactor * connect login and register views to API * make partnerapi as git submodule * update partnerapi * BRKeystore: remove duplicated entry (FAIL_COUNT_ALIAS) * after successful registration, show up a confirmation and send user back to login * remove test code * add ktlint and format kotlin files * update partnerapi * fix typo * set views Ids * Transfer view: add “Logout” button and handle navigation * transfer view: add padding bottom to “Transfer” button * gradle: code format * use default NDK version=21.0.6113669 * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * setup kotlin * cleanup + use timber * use androidx fragment * update libs * FragmentSend: IDE convertion to kotlin * FragmentSend: tweak kotlin conversion * FragmentSend: UD integration * BRButton: disable touch effect when disabled * DynamicDonationFragment: convert to android * DynamicDonationFragment: use lambda * UDResolution: only resolve LTC domains * FragmentSend: translation * translate “Lookup” * rename tryBitcoinURL to tryLitecoinURL * add kotlin doc * Release v1.20.0 (simplex) (#190) * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) * bump app version 1.21.0(631) * bugfix: send view stays after send confirmation disappears * remove UD error toasts * clear the LTC address before each Lookup * show up a confirmation toast if UD resolution is successful * bump version v1.21.0(632) * UD: add Analytics events * FragmentSend: disable Lookup button until the domain string is at least 4 chars * bump version v1.21.0(633) * fix build errors * Tapping on BuyTab shows up the BuyTabFragment * BuyTabFragment: add horizontal divider * replace listener with lambda * BuyTab: change fiat selector * FragmentBuy: add toolbar and show progress while page is loading * rename menu tab from “Spend” to “Card” * change register view header title * register view: change fields order according to iOS * register view: remove address2 field * login view: handle forgot password * tweak login/register views * transfer view v1 * update partnerapi lib * Replace “Bread” with “Litewallet” * Replace “Bread” with “Litewallet” * remove empty java class * bugFix(Send view): Send with Scan crashes * ScanQRActivity: code clean-up * login/register views: extract texts into strings resource * Buy tab: remove “choose fiat” from partner item view * login/register views: localize texts * reduce password length from 8 to 6 at least * bump version v2.0.0(634) * bugfix: make sure the market price displays only 2 decimals * bump version v2.0.0(635) * refacto(FragmentMenu): use lambda + code reformat * feature: Replace Customer Email with Zendesk HC * [TechDebt] Add issue templates (#208) * Add issue templates * polished per comments * [Bugfix] Header price update occludes the other text (#207) * Change the font mixe * Set the font to autosizing - helps by setting the max width * add balance label in header * fix error: Attribute autoSizeMinTextSize is only used in API level 26 and higher (current min is 23) * fix crash from Firebase: BreadActivity.java line 444 https://github.com/litecoin-foundation/loafwallet-android/issues/211 * fix crash in RegisterFragment.kt at line 68 https://github.com/litecoin-foundation/loafwallet-android/issues/212 * PR reviews * bump version v2.1.0(636) * add card disclaimer dialog * bump version v2.1.1(637) * feat(Moonpay): add partner * feat(Moonpay): use CustomTabs * feat(Moonpay): add translation * fix(*): remove extra “\” * cleanup(*): remove unused methods * feat(in-app review): add in-app review * refacto: use lambda and wrap if in brackets * refacto * refacto: use lambda * show up the in-app review dialog on the 5th send transactions * bump version v2.2.0(638) * feat(card tab): hide for non-US users * refacto(LoginActivity): use lambda, cleanup * LoginActivity: remove “My address” button * add LTC current price to login view * remove LTC current price from history view * added localizations * Added Indonesian language support (#262) * Added Indonesian language support * Changed Indonesian language resource folder from values-idn to values-in * Translated a missing lines, remove line break, and change Simplex explanation back to English * Reverted back to translating Simplex and Moonpay explanations Co-authored-by: Ryan Petter * Added Turkish language support (#263) * Added Turkish language support * Added - to Turkish Language resource folder. Now the folder is named values-tr rather than values tr. * Fixed a few translation and got rid of non translatable lines * Reverted back to translating Simplex and Moonpay explanations Co-authored-by: Ryan Petter * upgrade gradle build tools * bump version v2.3.0(639) * bump version v2.3.1(640) * show available card balance * update card disclaimer * card balance: localize error message * default implementation of showError(Int) * Updated the new logo app icon (#282) - Added the round circle version(s) - Added the sqare version(s) - Addred the rounded corner * Release v2.3.1 into master (#268) (#281) * Release v1.20.0 - Simplex (#187) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) Co-authored-by: Kerry Co-authored-by: Ebenezer * Release v1.21.0 (#193) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * setup kotlin * cleanup + use timber * use androidx fragment * update libs * FragmentSend: IDE convertion to kotlin * FragmentSend: tweak kotlin conversion * FragmentSend: UD integration * BRButton: disable touch effect when disabled * DynamicDonationFragment: convert to android * DynamicDonationFragment: use lambda * UDResolution: only resolve LTC domains * FragmentSend: translation * translate “Lookup” * rename tryBitcoinURL to tryLitecoinURL * add kotlin doc * Release v1.20.0 (simplex) (#190) * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) * bump app version 1.21.0(631) * bugfix: send view stays after send confirmation disappears * remove UD error toasts * clear the LTC address before each Lookup * show up a confirmation toast if UD resolution is successful * bump version v1.21.0(632) * UD: add Analytics events * FragmentSend: disable Lookup button until the domain string is at least 4 chars * bump version v1.21.0(633) Co-authored-by: Kerry Co-authored-by: Ebenezer * Release v2.0.0 card v1 (#202) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image * move constants where they are used * respect constant nomenclature * make “ltcPriceLbl” same textSize as “ltcAmount” * WIP: Login/Register views (#159) * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image Co-authored-by: Kerry Washington * version bump and upgrade * make sure listeners are not NULL * make sure to call super * remove unused code * Move transactions to HistoryFragment * fix typo * Remove fonts in assets folder. Delete BREdit and BRText and use styles * Reformat Code: layout files * Reformat code: anim files * Reformat code: animator files * code refactor * connect login and register views to API * make partnerapi as git submodule * update partnerapi * BRKeystore: remove duplicated entry (FAIL_COUNT_ALIAS) * after successful registration, show up a confirmation and send user back to login * remove test code * add ktlint and format kotlin files * update partnerapi * fix typo * set views Ids * Transfer view: add “Logout” button and handle navigation * transfer view: add padding bottom to “Transfer” button * gradle: code format * use default NDK version=21.0.6113669 * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * setup kotlin * cleanup + use timber * use androidx fragment * update libs * FragmentSend: IDE convertion to kotlin * FragmentSend: tweak kotlin conversion * FragmentSend: UD integration * BRButton: disable touch effect when disabled * DynamicDonationFragment: convert to android * DynamicDonationFragment: use lambda * UDResolution: only resolve LTC domains * FragmentSend: translation * translate “Lookup” * rename tryBitcoinURL to tryLitecoinURL * add kotlin doc * Release v1.20.0 (simplex) (#190) * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) * bump app version 1.21.0(631) * bugfix: send view stays after send confirmation disappears * remove UD error toasts * clear the LTC address before each Lookup * show up a confirmation toast if UD resolution is successful * bump version v1.21.0(632) * UD: add Analytics events * FragmentSend: disable Lookup button until the domain string is at least 4 chars * bump version v1.21.0(633) * fix build errors * Tapping on BuyTab shows up the BuyTabFragment * BuyTabFragment: add horizontal divider * replace listener with lambda * BuyTab: change fiat selector * FragmentBuy: add toolbar and show progress while page is loading * rename menu tab from “Spend” to “Card” * change register view header title * register view: change fields order according to iOS * register view: remove address2 field * login view: handle forgot password * tweak login/register views * transfer view v1 * update partnerapi lib * Replace “Bread” with “Litewallet” * Replace “Bread” with “Litewallet” * remove empty java class * bugFix(Send view): Send with Scan crashes * ScanQRActivity: code clean-up * login/register views: extract texts into strings resource * Buy tab: remove “choose fiat” from partner item view * login/register views: localize texts * reduce password length from 8 to 6 at least * bump version v2.0.0(634) * bugfix: make sure the market price displays only 2 decimals * bump version v2.0.0(635) Co-authored-by: Kerry Co-authored-by: Ebenezer * Release v2.1.0 (into master) (#227) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Use… * Squashed commit of the following: commit e387529d8ce5834fdcddd30a3e477956971e002c Author: Kerry Washington Date: Thu Nov 18 15:00:41 2021 -0800 🦺[Tech Debt] Upgrade to API 27+ (#290) * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image * move constants where they are used * respect constant nomenclature * make “ltcPriceLbl” same textSize as “ltcAmount” * WIP: Login/Register views (#159) * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image Co-authored-by: Kerry Washington * version bump and upgrade * make sure listeners are not NULL * make sure to call super * remove unused code * Move transactions to HistoryFragment * fix typo * Remove fonts in assets folder. Delete BREdit and BRText and use styles * Reformat Code: layout files * Reformat code: anim files * Reformat code: animator files * code refactor * connect login and register views to API * make partnerapi as git submodule * update partnerapi * BRKeystore: remove duplicated entry (FAIL_COUNT_ALIAS) * after successful registration, show up a confirmation and send user back to login * remove test code * add ktlint and format kotlin files * update partnerapi * fix typo * set views Ids * Transfer view: add “Logout” button and handle navigation * transfer view: add padding bottom to “Transfer” button * gradle: code format * use default NDK version=21.0.6113669 * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * setup kotlin * cleanup + use timber * use androidx fragment * update libs * FragmentSend: IDE convertion to kotlin * FragmentSend: tweak kotlin conversion * FragmentSend: UD integration * BRButton: disable touch effect when disabled * DynamicDonationFragment: convert to android * DynamicDonationFragment: use lambda * UDResolution: only resolve LTC domains * FragmentSend: translation * translate “Lookup” * rename tryBitcoinURL to tryLitecoinURL * add kotlin doc * Release v1.20.0 (simplex) (#190) * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) * bump app version 1.21.0(631) * bugfix: send view stays after send confirmation disappears * remove UD error toasts * clear the LTC address before each Lookup * show up a confirmation toast if UD resolution is successful * bump version v1.21.0(632) * UD: add Analytics events * FragmentSend: disable Lookup button until the domain string is at least 4 chars * bump version v1.21.0(633) * fix build errors * Tapping on BuyTab shows up the BuyTabFragment * BuyTabFragment: add horizontal divider * replace listener with lambda * BuyTab: change fiat selector * FragmentBuy: add toolbar and show progress while page is loading * rename menu tab from “Spend” to “Card” * change register view header title * register view: change fields order according to iOS * register view: remove address2 field * login view: handle forgot password * tweak login/register views * transfer view v1 * update partnerapi lib * Replace “Bread” with “Litewallet” * Replace “Bread” with “Litewallet” * remove empty java class * bugFix(Send view): Send with Scan crashes * ScanQRActivity: code clean-up * login/register views: extract texts into strings resource * Buy tab: remove “choose fiat” from partner item view * login/register views: localize texts * reduce password length from 8 to 6 at least * bump version v2.0.0(634) * bugfix: make sure the market price displays only 2 decimals * bump version v2.0.0(635) * refacto(FragmentMenu): use lambda + code reformat * feature: Replace Customer Email with Zendesk HC * [TechDebt] Add issue templates (#208) * Add issue templates * polished per comments * [Bugfix] Header price update occludes the other text (#207) * Change the font mixe * Set the font to autosizing - helps by setting the max width * add balance label in header * fix error: Attribute autoSizeMinTextSize is only used in API level 26 and higher (current min is 23) * fix crash from Firebase: BreadActivity.java line 444 https://github.com/litecoin-foundation/loafwallet-android/issues/211 * fix crash in RegisterFragment.kt at line 68 https://github.com/litecoin-foundation/loafwallet-android/issues/212 * PR reviews * bump version v2.1.0(636) * add card disclaimer dialog * bump version v2.1.1(637) * feat(Moonpay): add partner * feat(Moonpay): use CustomTabs * feat(Moonpay): add translation * fix(*): remove extra “\” * cleanup(*): remove unused methods * feat(in-app review): add in-app review * refacto: use lambda and wrap if in brackets * refacto * refacto: use lambda * show up the in-app review dialog on the 5th send transactions * bump version v2.2.0(638) * feat(card tab): hide for non-US users * refacto(LoginActivity): use lambda, cleanup * LoginActivity: remove “My address” button * add LTC current price to login view * remove LTC current price from history view * added localizations * Added Indonesian language support (#262) * Added Indonesian language support * Changed Indonesian language resource folder from values-idn to values-in * Translated a missing lines, remove line break, and change Simplex explanation back to English * Reverted back to translating Simplex and Moonpay explanations Co-authored-by: Ryan Petter * Added Turkish language support (#263) * Added Turkish language support * Added - to Turkish Language resource folder. Now the folder is named values-tr rather than values tr. * Fixed a few translation and got rid of non translatable lines * Reverted back to translating Simplex and Moonpay explanations Co-authored-by: Ryan Petter * upgrade gradle build tools * bump version v2.3.0(639) * bump version v2.3.1(640) * show available card balance * update card disclaimer * card balance: localize error message * default implementation of showError(Int) * Updated the new logo app icon (#282) - Added the round circle version(s) - Added the sqare version(s) - Addred the rounded corner * Release v2.3.1 into master (#268) (#281) * Release v1.20.0 - Simplex (#187) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) Co-authored-by: Kerry Co-authored-by: Ebenezer * Release v1.21.0 (#193) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * setup kotlin * cleanup + use timber * use androidx fragment * update libs * FragmentSend: IDE convertion to kotlin * FragmentSend: tweak kotlin conversion * FragmentSend: UD integration * BRButton: disable touch effect when disabled * DynamicDonationFragment: convert to android * DynamicDonationFragment: use lambda * UDResolution: only resolve LTC domains * FragmentSend: translation * translate “Lookup” * rename tryBitcoinURL to tryLitecoinURL * add kotlin doc * Release v1.20.0 (simplex) (#190) * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) * bump app version 1.21.0(631) * bugfix: send view stays after send confirmation disappears * remove UD error toasts * clear the LTC address before each Lookup * show up a confirmation toast if UD resolution is successful * bump version v1.21.0(632) * UD: add Analytics events * FragmentSend: disable Lookup button until the domain string is at least 4 chars * bump version v1.21.0(633) Co-authored-by: Kerry Co-authored-by: Ebenezer * Release v2.0.0 card v1 (#202) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image * move constants where they are used * respect constant nomenclature * make “ltcPriceLbl” same textSize as “ltcAmount” * WIP: Login/Register views (#159) * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image Co-authored-by: Kerry Washington * version bump and upgrade * make sure listeners are not NULL * make sure to call super * remove unused code * Move transactions to HistoryFragment * fix typo * Remove fonts in assets folder. Delete BREdit and BRText and use styles * Reformat Code: layout files * Reformat code: anim files * Reformat code: animator files * code refactor * connect login and register views to API * make partnerapi as git submodule * update partnerapi * BRKeystore: remove duplicated entry (FAIL_COUNT_ALIAS) * after successful registration, show up a confirmation and send user back to login * remove test code * add ktlint and format kotlin files * update partnerapi * fix typo * set views Ids * Transfer view: add “Logout” button and handle navigation * transfer view: add padding bottom to “Transfer” button * gradle: code format * use default NDK version=21.0.6113669 * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * setup kotlin * cleanup + use timber * use androidx fragment * update libs * FragmentSend: IDE convertion to kotlin * FragmentSend: tweak kotlin conversion * FragmentSend: UD integration * BRButton: disable touch effect when disabled * DynamicDonationFragment: convert to android * DynamicDonationFragment: use lambda * UDResolution: only resolve LTC domains * FragmentSend: translation * translate “Lookup” * rename tryBitcoinURL to tryLitecoinURL * add kotlin doc * Release v1.20.0 (simplex) (#190) * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) * bump app version 1.21.0(631) * bugfix: send view stays after send confirmation disappears * remove UD error toasts * clear the LTC address before each Lookup * show up a confirmation toast if UD resolution is successful * bump version v1.21.0(632) * UD: add Analytics events * FragmentSend: disable Lookup button until the domain string is at least 4 chars * bump version v1.21.0(633) * fix build errors * Tapping on BuyTab shows up the BuyTabFragment * BuyTabFragment: add horizontal divider * replace listener with lambda * BuyTab: change fiat selector * FragmentBuy: add toolbar and show progress while page is loading * rename menu tab from “Spend” to “Card” * change register view header title * register view: change fields order according to iOS * register view: remove address2 field * login view: handle forgot password * tweak login/register views * transfer view v1 * update partnerapi lib * Replace “Bread” with “Litewallet” * Replace “Bread” with “Litewallet” * remove empty java class * bugFix(Send view): Send with Scan crashes * ScanQRActivity: code clean-up * login/register views: extract texts into strings resource * Buy tab: remove “choose fiat” from partner item view * login/register views: localize texts * reduce password length from 8 to 6 at least * bump version v2.0.0(634) * bugfix: make sure the market price displays only 2 decimals * bump version v2.0.0(635) Co-authored-by: Kerry Co-authored-by: Ebenezer * Release v2.1.0 (into master) (#227) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322e… * Remove big headers * Removed CameraPlugin class - This class is a rememnant of the BRD plan. But it was dead code. - Image Saver was also removed. - Image Reader should be removed. * code bump - to closely track the deletions * Removal of the GeoLocationPlugin code bump * Removed unused plugins - Deleted KVStore Plugin - Deleted Link Plugin - code bump * Removed WebActivity class -Not being used. code bump * Removed More unsused code - Removed BitID - Removed GeoLocation Code - Removed inspection results - Removed WithdrawBCHActivity - code bump * Removal of HTTPServer references... - removal of cruft - removed dead code - code number bump * Refactor Removed BRHTTPHelper class Reduce cruft in APIClient - Some methods being used - Will reduce more in upcoming commits Removed the huge header Removed empty classes Removed excessive headers Remove references to BitID and BCH Renamed the GET url method Removed unused imports in APIClient Removed some KeyStore code * Update dependencies - upgrade dependency versions - update layouts and fragments to use databinding - upgrade to latest build tools - update partnerapi submodule * update submodule * build bump - gradle changes * Squashed commit of the following: commit e387529d8ce5834fdcddd30a3e477956971e002c Author: Kerry Washington Date: Thu Nov 18 15:00:41 2021 -0800 🦺[Tech Debt] Upgrade to API 27+ (#290) * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image * move constants where they are used * respect constant nomenclature * make “ltcPriceLbl” same textSize as “ltcAmount” * WIP: Login/Register views (#159) * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image Co-authored-by: Kerry Washington * version bump and upgrade * make sure listeners are not NULL * make sure to call super * remove unused code * Move transactions to HistoryFragment * fix typo * Remove fonts in assets folder. Delete BREdit and BRText and use styles * Reformat Code: layout files * Reformat code: anim files * Reformat code: animator files * code refactor * connect login and register views to API * make partnerapi as git submodule * update partnerapi * BRKeystore: remove duplicated entry (FAIL_COUNT_ALIAS) * after successful registration, show up a confirmation and send user back to login * remove test code * add ktlint and format kotlin files * update partnerapi * fix typo * set views Ids * Transfer view: add “Logout” button and handle navigation * transfer view: add padding bottom to “Transfer” button * gradle: code format * use default NDK version=21.0.6113669 * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * setup kotlin * cleanup + use timber * use androidx fragment * update libs * FragmentSend: IDE convertion to kotlin * FragmentSend: tweak kotlin conversion * FragmentSend: UD integration * BRButton: disable touch effect when disabled * DynamicDonationFragment: convert to android * DynamicDonationFragment: use lambda * UDResolution: only resolve LTC domains * FragmentSend: translation * translate “Lookup” * rename tryBitcoinURL to tryLitecoinURL * add kotlin doc * Release v1.20.0 (simplex) (#190) * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) * bump app version 1.21.0(631) * bugfix: send view stays after send confirmation disappears * remove UD error toasts * clear the LTC address before each Lookup * show up a confirmation toast if UD resolution is successful * bump version v1.21.0(632) * UD: add Analytics events * FragmentSend: disable Lookup button until the domain string is at least 4 chars * bump version v1.21.0(633) * fix build errors * Tapping on BuyTab shows up the BuyTabFragment * BuyTabFragment: add horizontal divider * replace listener with lambda * BuyTab: change fiat selector * FragmentBuy: add toolbar and show progress while page is loading * rename menu tab from “Spend” to “Card” * change register view header title * register view: change fields order according to iOS * register view: remove address2 field * login view: handle forgot password * tweak login/register views * transfer view v1 * update partnerapi lib * Replace “Bread” with “Litewallet” * Replace “Bread” with “Litewallet” * remove empty java class * bugFix(Send view): Send with Scan crashes * ScanQRActivity: code clean-up * login/register views: extract texts into strings resource * Buy tab: remove “choose fiat” from partner item view * login/register views: localize texts * reduce password length from 8 to 6 at least * bump version v2.0.0(634) * bugfix: make sure the market price displays only 2 decimals * bump version v2.0.0(635) * refacto(FragmentMenu): use lambda + code reformat * feature: Replace Customer Email with Zendesk HC * [TechDebt] Add issue templates (#208) * Add issue templates * polished per comments * [Bugfix] Header price update occludes the other text (#207) * Change the font mixe * Set the font to autosizing - helps by setting the max width * add balance label in header * fix error: Attribute autoSizeMinTextSize is only used in API level 26 and higher (current min is 23) * fix crash from Firebase: BreadActivity.java line 444 https://github.com/litecoin-foundation/loafwallet-android/issues/211 * fix crash in RegisterFragment.kt at line 68 https://github.com/litecoin-foundation/loafwallet-android/issues/212 * PR reviews * bump version v2.1.0(636) * add card disclaimer dialog * bump version v2.1.1(637) * feat(Moonpay): add partner * feat(Moonpay): use CustomTabs * feat(Moonpay): add translation * fix(*): remove extra “\” * cleanup(*): remove unused methods * feat(in-app review): add in-app review * refacto: use lambda and wrap if in brackets * refacto * refacto: use lambda * show up the in-app review dialog on the 5th send transactions * bump version v2.2.0(638) * feat(card tab): hide for non-US users * refacto(LoginActivity): use lambda, cleanup * LoginActivity: remove “My address” button * add LTC current price to login view * remove LTC current price from history view * added localizations * Added Indonesian language support (#262) * Added Indonesian language support * Changed Indonesian language resource folder from values-idn to values-in * Translated a missing lines, remove line break, and change Simplex explanation back to English * Reverted back to translating Simplex and Moonpay explanations Co-authored-by: Ryan Petter * Added Turkish language support (#263) * Added Turkish language support * Added - to Turkish Language resource folder. Now the folder is named values-tr rather than values tr. * Fixed a few translation and got rid of non translatable lines * Reverted back to translating Simplex and Moonpay explanations Co-authored-by: Ryan Petter * upgrade gradle build tools * bump version v2.3.0(639) * bump version v2.3.1(640) * show available card balance * update card disclaimer * card balance: localize error message * default implementation of showError(Int) * Updated the new logo app icon (#282) - Added the round circle version(s) - Added the sqare version(s) - Addred the rounded corner * Release v2.3.1 into master (#268) (#281) * Release v1.20.0 - Simplex (#187) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) Co-authored-by: Kerry Co-authored-by: Ebenezer * Release v1.21.0 (#193) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * setup kotlin * cleanup + use timber * use androidx fragment * update libs * FragmentSend: IDE convertion to kotlin * FragmentSend: tweak kotlin conversion * FragmentSend: UD integration * BRButton: disable touch effect when disabled * DynamicDonationFragment: convert to android * DynamicDonationFragment: use lambda * UDResolution: only resolve LTC domains * FragmentSend: translation * translate “Lookup” * rename tryBitcoinURL to tryLitecoinURL * add kotlin doc * Release v1.20.0 (simplex) (#190) * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) * bump app version 1.21.0(631) * bugfix: send view stays after send confirmation disappears * remove UD error toasts * clear the LTC address before each Lookup * show up a confirmation toast if UD resolution is successful * bump version v1.21.0(632) * UD: add Analytics events * FragmentSend: disable Lookup button until the domain string is at least 4 chars * bump version v1.21.0(633) Co-authored-by: Kerry Co-authored-by: Ebenezer * Release v2.0.0 card v1 (#202) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322ed19315d802f09544b8c60f6. * Ea/update fonts (#70) * Use BarlowSemiCondensed in lieu of CircularPro (excluding CircularPro-Book) * Swap CircularPro-Book.otf for BarlowSemiCondensed-Medium.ttf * added circleci and build bump * updated cofing.yml v2 * update config.yml v 3 * update v4 * update v6 * linter error fix for ci, small confirm field polish * silence linter on InvalidPackages * error fix update gradle * turn off abortonError * List of partners screen * Handle tap on simplex partner item * code clean-up * refactor the buy URL generation * pass choosen currency code to buy fragment * Remove horizontal linear layout and base align “choose fiat” with CAD, EUR, JPY and USD * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image * move constants where they are used * respect constant nomenclature * make “ltcPriceLbl” same textSize as “ltcAmount” * WIP: Login/Register views (#159) * Dynamic donation (#118) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * increase donation but height * version bump (#121) * Fee types (#123) * send screen: change donation button * cleanup * redundant string.format call * dynamic donation feature * localization * set fee types color to litewallet blue * move icons to xxx folder * set donate/send buttons color to litewallet blue * use spinner instead of numberpicker * make spinner full width * increase margin top of slider * increase slider thumb size * send screen: tweak ISO but * send screen: increase donate button height * Fix wrong donation amount * add luxury fee’s type * set default values * dynamic donation: make sure fee is regular * add note to refactor later * WIP: Timber crashlytics (#124) * timber integration + replace Log with Timber * Replace all Log with Timber. In production environment Timber.e() or Timber.i() will automatically report any crash or message to FirebaseCrashlytics * better description * Kcw grunt/fbug fixes bugfixes (#126) * WIP working out the cross lang acceptance. WIP removing Firebase Manager code. Revert "WIP working out the cross lang acceptance." This reverts commit 4cfbafca0c841df6945216c63959fcede0487470. WIP working out the conflicts Analytics working getting more locations. * tested all custom events refactored to the standard firebase way * removed dev code * added Analytics Manager class * update per review notes * moved the costants and removed enum * version bump * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * V1.19.0 (#135) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead Co-authored-by: mosadialiou * version bump and send test checks (#138) * new donate addresses (#136) * Revert 129 fix intro bug (#131) * fix intro screen (#129) * Barry/fix ltc testnet (#128) * Change bitcoin-testnet with litecoin-testnet * cleanup * Revert "fix intro screen (#129)" This reverts commit d355738abff612a9ff0a44ddcf5b9ad80a141c0c. * Fix intro bug (#130) * fix intro screen * fix wrong stroke color * add intro message * clean up * remove globalLayoutListener only if the tree observer is alive * clean up Co-authored-by: mosadialiou * update loafwallet core (#132) * version bump * Hotfix: Users unable to send (#134) * Fix: Users unable to send * clean up * use timber instead * new donate addresses * add ADDRESS_SCHEME key to donation event * fix inverted key-value * clean up Co-authored-by: Kerry Washington * version bump * Added Litewallet * fix broken link * updated README.md (#145) * updated README.md * added links * uodate header image * new hdr * added donations * move donations * change link * add private link * polish link * copy edit * add indo * address * fix addresses * Bugfix: [UI Alignment] Extra comma in send view (#153) * fix extra comma in send view * Refactor getReceiver method * remove extra linebreak * code cleanup * remove dead code * reverse check order for perf. * Fix: remove “donate to” prepended to the donation account * remove “PLATFORM” which is already added by Firebase Analytics * to v1.19.3 (612) (#154) * use bottom navigation view * update buy/spend/receive navigation icons * Change send/receive navigation icon names * localize history tab title * Just “Acheter” * Add fonts as resources * setup kotlin * upgrade grade + dependencies * login/register views * Replace search icon with menu icon and show up LTC price * login/register UX * Prevent view not rendering in layout editor * code cleanup * missing resources * reduce toolbar height * Specify a material colors for the app * Remove unused file * Transfer view * update litecoin card image Co-authored-by: Kerry Washington * version bump and upgrade * make sure listeners are not NULL * make sure to call super * remove unused code * Move transactions to HistoryFragment * fix typo * Remove fonts in assets folder. Delete BREdit and BRText and use styles * Reformat Code: layout files * Reformat code: anim files * Reformat code: animator files * code refactor * connect login and register views to API * make partnerapi as git submodule * update partnerapi * BRKeystore: remove duplicated entry (FAIL_COUNT_ALIAS) * after successful registration, show up a confirmation and send user back to login * remove test code * add ktlint and format kotlin files * update partnerapi * fix typo * set views Ids * Transfer view: add “Logout” button and handle navigation * transfer view: add padding bottom to “Transfer” button * gradle: code format * use default NDK version=21.0.6113669 * use Timber instead of Log * convert BreadActivity to FragmentActivity in order to handle back pressed from fragments * handle back button on BuyFragment * upgrade firebase libs version to latest * Handle AUD, GBP, HKD, IDR, RUB and SGD currencies * upgrade gradle/gradle build tool to respectively 6.5 and 4.1.0 * handle document upload for KYC verification * update support/policy/social links * update README: replace iOS by Android * use zendesk support email address * make sure the selected fiat option is always visible * setup kotlin * cleanup + use timber * use androidx fragment * update libs * FragmentSend: IDE convertion to kotlin * FragmentSend: tweak kotlin conversion * FragmentSend: UD integration * BRButton: disable touch effect when disabled * DynamicDonationFragment: convert to android * DynamicDonationFragment: use lambda * UDResolution: only resolve LTC domains * FragmentSend: translation * translate “Lookup” * rename tryBitcoinURL to tryLitecoinURL * add kotlin doc * Release v1.20.0 (simplex) (#190) * FragmentBuy: use https for simplex prod URL * bump app version 1.20.0(630) * bump app version 1.21.0(631) * bugfix: send view stays after send confirmation disappears * remove UD error toasts * clear the LTC address before each Lookup * show up a confirmation toast if UD resolution is successful * bump version v1.21.0(632) * UD: add Analytics events * FragmentSend: disable Lookup button until the domain string is at least 4 chars * bump version v1.21.0(633) * fix build errors * Tapping on BuyTab shows up the BuyTabFragment * BuyTabFragment: add horizontal divider * replace listener with lambda * BuyTab: change fiat selector * FragmentBuy: add toolbar and show progress while page is loading * rename menu tab from “Spend” to “Card” * change register view header title * register view: change fields order according to iOS * register view: remove address2 field * login view: handle forgot password * tweak login/register views * transfer view v1 * update partnerapi lib * Replace “Bread” with “Litewallet” * Replace “Bread” with “Litewallet” * remove empty java class * bugFix(Send view): Send with Scan crashes * ScanQRActivity: code clean-up * login/register views: extract texts into strings resource * Buy tab: remove “choose fiat” from partner item view * login/register views: localize texts * reduce password length from 8 to 6 at least * bump version v2.0.0(634) * bugfix: make sure the market price displays only 2 decimals * bump version v2.0.0(635) Co-authored-by: Kerry Co-authored-by: Ebenezer * Release v2.1.0 (into master) (#227) * upgraded Gradle * upgraded to androidx and synced gradle * Reverted test to menu * Added brand fonts * added color names * replaced logo with new logo and added litewallet blue and removed some gradient views # Conflicts: # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * gradle sync * refactoring views..still need to add version code to launch screen # Conflicts: # .idea/caches/build_file_checksums.ser # .idea/caches/gradle_models.ser # app/.cxx/cmake/loafDebug/x86/.ninja_deps # app/.cxx/cmake/loafDebug/x86/.ninja_log * updated per latest gradle * added in the version number at login * removed superflous L * polished header * moved version label for intro # Conflicts: # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_deps # app/.cxx/cmake/loafDebug/arm64-v8a/.ninja_log # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_deps # app/.cxx/cmake/loafDebug/armeabi-v7a/.ninja_log # app/.cxx/cmake/loafDebug/x86_64/.ninja_deps # app/.cxx/cmake/loafDebug/x86_64/.ninja_log * upgrade to 26 min and 29 Android * worked in the donate layouts but not functional * WIP added buy tab button * WIP buy tab * WIP added in the buy tab prior to the webview * added in webview got Buy Tab * comment out the Buy Tab until server is ready * update for signing fixed naming * updated icons and Litewallet naming * added USE Biometric permission * moved layout * added in the old toolbar and logo but flipper still being debugged * WIP debuggin layout of the header toolbar * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * V1.18.1 (#65) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * show up buy button * Upgrade dependencies * added donation info and functionality (#67) * added donation info and functionality * per review comments * Tweak L/$ price labels animation (#69) * Unversionned app/.cxx folder since it s auto * Unversionned .idea/caches folder since it is autogenerated * Fix layout issue: the price = LTC labels * directly set the text size. the system will scale it * change ltc price color to white * update the btc naming to ltc * use meaningful naming * remove commented code * Fix: text prices should be about 20% smaller * price flipper margins should be lower on the bottom * Tweak L/$ price labels animation * remove useless attributes clipChildren and clipToPadding * Revert "remove useless attributes clipChildren and clipToPadding" This reverts commit 0a4fec50b6d4e322e… * Add files via upload * Update README.md * 🚀[ Release v.2.6.0] Merge into Main (#12) * Added український language - add uk xml file - removed the nl, sv, da files - Escaped apostrphes in UK strings file - Updated language choices * 🥳[Feature] Unstoppable ext update (#11) * WIP: DNC Dropped in the UD code prior to testing * Added study link * Fix unstoppable domains dependency * Updated the UD ext text WIP::::Need to refactor once UK and deletion on SV, NL, DA * added UK lang Co-authored-by: Victor Sima * version bump * Hotfix/crashes v2.6.0 (#17) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom Co-authored-by: kcw-grunt Co-authored-by: Victor Sima * 🚀[Release] v2.6.1 (#20) * Added український language - add uk xml file - removed the nl, sv, da files - Escaped apostrphes in UK strings file - Updated language choices * 🥳[Feature] Unstoppable ext update (#11) * WIP: DNC Dropped in the UD code prior to testing * Added study link * Fix unstoppable domains dependency * Updated the UD ext text WIP::::Need to refactor once UK and deletion on SV, NL, DA * added UK lang Co-authored-by: Victor Sima * This potentially silences the BRSharedPrefs lookup error (#15) -Litewallet uses the users locale and their currency but the currency may not match. So there is a soft fail. At worst case it should simply default to USD….this is the update for that. Firebase: https://console.firebase.google.com/u/0/project/litewallet-beta/crashlytics/app/android:com.loafwallet/issues/c9ce04d68423ae25f0ee05f2d2e203fa?time=last-seven-days&sessionEventKey=626FCF7303B900017224281106C0856A_1671561729542858575 * 💣🐞[Hotbug fix] sharedprefs fb fix (#19) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom * subproject commit * version bump * Disabled FB send, Added Get Tasks * Patch to hard code fees - Static fees - Removed the dep - Turn crashlytics back on/off/on Co-authored-by: Victor Sima * version code bump Co-authored-by: Victor Sima * partnerapi update * 🚀[ Release v.2.7.0] Merge into Main (#30) * Added український language - add uk xml file - removed the nl, sv, da files - Escaped apostrphes in UK strings file - Updated language choices * 💣🐞[Hotbug fix] sharedprefs fb fix (#19) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom * subproject commit * version bump * Disabled FB send, Added Get Tasks * Patch to hard code fees - Static fees - Removed the dep - Turn crashlytics back on/off/on Co-authored-by: Victor Sima * 🚀[ Release v.2.6.0] Merge into Develop (#13) * version bump * Hotfix/crashes v2.6.0 (#17) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom Co-authored-by: kcw-grunt Co-authored-by: Victor Sima * 🚀[Release] v2.6.1 (#21) * version code bump * 🚀[ Release v.2.6.0] Merge into Main (#12) * Added український language - add uk xml file - removed the nl, sv, da files - Escaped apostrphes in UK strings file - Updated language choices * 🥳[Feature] Unstoppable ext update (#11) * WIP: DNC Dropped in the UD code prior to testing * Added study link * Fix unstoppable domains dependency * Updated the UD ext text WIP::::Need to refactor once UK and deletion on SV, NL, DA * added UK lang Co-authored-by: Victor Sima * version bump * Hotfix/crashes v2.6.0 (#17) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom Co-authored-by: kcw-grunt Co-authored-by: Victor Sima Co-authored-by: Victor Sima * Feature/add bitrefill (#28) * added bitrefill - added kotlin fix * Added localizations - added logo * Added Bitrefill Link * hides fiat scollview from Bitrefill * Adjusted the padding at the buy tab item view * fixe test in Bitrefill detail * fied logo and layout * bump version and version code * Feature/update branding (#29) * added new logo - reset the layout * version code * replaced coin logo * bump versioncode * fixed dep version * added Bitrefill web listener Co-authored-by: Victor Sima * Create FUNDING.yml For GH Sponsor * 🚀[ Release v.2.7.1] Merge into Main (#100) * 💣🐞[Hotbug fix] sharedprefs fb fix (#19) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom * subproject commit * version bump * Disabled FB send, Added Get Tasks * Patch to hard code fees - Static fees - Removed the dep - Turn crashlytics back on/off/on Co-authored-by: Victor Sima * 🚀[ Release v.2.6.0] Merge into Develop (#13) * version bump * Hotfix/crashes v2.6.0 (#17) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom Co-authored-by: kcw-grunt Co-authored-by: Victor Sima * 🚀[Release] v2.6.1 (#21) * version code bump * 🚀[ Release v.2.6.0] Merge into Main (#12) * Added український language - add uk xml file - removed the nl, sv, da files - Escaped apostrphes in UK strings file - Updated language choices * 🥳[Feature] Unstoppable ext update (#11) * WIP: DNC Dropped in the UD code prior to testing * Added study link * Fix unstoppable domains dependency * Updated the UD ext text WIP::::Need to refactor once UK and deletion on SV, NL, DA * added UK lang Co-authored-by: Victor Sima * version bump * Hotfix/crashes v2.6.0 (#17) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom Co-authored-by: kcw-grunt Co-authored-by: Victor Sima Co-authored-by: Victor Sima * Feature/add bitrefill (#28) * added bitrefill - added kotlin fix * Added localizations - added logo * Added Bitrefill Link * hides fiat scollview from Bitrefill * Adjusted the padding at the buy tab item view * fixe test in Bitrefill detail * fied logo and layout * bump version and version code * Feature/update branding (#29) * added new logo - reset the layout * version code * Create ISSUE_TEMPLATE * Delete ISSUE_TEMPLATE * Create test.md * Create bug_report.md * Delete bug_report.md * Create feature.md * Create feature_request.md * Create request.md * Create spike.md * Create techdebt.md * Delete feature.md * Delete feature_request.md * Delete request.md * Delete spike.md * Delete tech_debt.md * Delete test.md * 🚀[ Release v.2.7.0] Merge into Develop (#32) * replaced coin logo * bump versioncode * fixed dep version * added Bitrefill web listener * [Techdebt/] pdate match firebase events 33 (#48) * Added the equivalenmt events - updated web link * WIP : Should compile * Fixed constants * Udpaded all Analytics constants * Added basic tests - This is WIP - Need to debug the Tests * version bump * fiexd compile bug * version bump * renmoved staging * moved backup rates * code bump * Updated test configs * Move api resources to central location - version code bump Co-authored-by: Victor Sima * 🚀[ Release v.2.8.0] Merge into Main (#123) * 💣🐞[Hotbug fix] sharedprefs fb fix (#19) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom * subproject commit * version bump * Disabled FB send, Added Get Tasks * Patch to hard code fees - Static fees - Removed the dep - Turn crashlytics back on/off/on Co-authored-by: Victor Sima * 🚀[ Release v.2.6.0] Merge into Develop (#13) * version bump * Hotfix/crashes v2.6.0 (#17) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom Co-authored-by: kcw-grunt Co-authored-by: Victor Sima * 🚀[Release] v2.6.1 (#21) * version code bump * 🚀[ Release v.2.6.0] Merge into Main (#12) * Added український language - add uk xml file - removed the nl, sv, da files - Escaped apostrphes in UK strings file - Updated language choices * 🥳[Feature] Unstoppable ext update (#11) * WIP: DNC Dropped in the UD code prior to testing * Added study link * Fix unstoppable domains dependency * Updated the UD ext text WIP::::Need to refactor once UK and deletion on SV, NL, DA * added UK lang Co-authored-by: Victor Sima * version bump * Hotfix/crashes v2.6.0 (#17) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom Co-authored-by: kcw-grunt Co-authored-by: Victor Sima Co-authored-by: Victor Sima * Feature/add bitrefill (#28) * added bitrefill - added kotlin fix * Added localizations - added logo * Added Bitrefill Link * hides fiat scollview from Bitrefill * Adjusted the padding at the buy tab item view * fixe test in Bitrefill detail * fied logo and layout * bump version and version code * Feature/update branding (#29) * added new logo - reset the layout * version code * Create ISSUE_TEMPLATE * Delete ISSUE_TEMPLATE * Create test.md * Delete test.md * 🚀[ Release v.2.7.0] Merge into Develop (#32) * replaced coin logo * bump versioncode * fixed dep version * added Bitrefill web listener * [Techdebt/] pdate match firebase events 33 (#48) * Added the equivalenmt events - updated web link * WIP : Should compile * Fixed constants * Udpaded all Analytics constants * Added basic tests - This is WIP - Need to debug the Tests * version bump * fiexd compile bug * Fix - revert FragmentBuy webview test (#72) * 🚀[ Release v.2.7.1] Merge into Develop (#104) * 🚀[ Release v.2.7.0] Merge into Main (#30) * Added український language - add uk xml file - removed the nl, sv, da files - Escaped apostrphes in UK strings file - Updated language choices * 💣🐞[Hotbug fix] sharedprefs fb fix (#19) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom * subproject commit * version bump * Disabled FB send, Added Get Tasks * Patch to hard code fees - Static fees - Removed the dep - Turn crashlytics back on/off/on Co-authored-by: Victor Sima * 🚀[ Release v.2.6.0] Merge into Develop (#13) * version bump * Hotfix/crashes v2.6.0 (#17) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom Co-authored-by: kcw-grunt Co-authored-by: Victor Sima * 🚀[Release] v2.6.1 (#21) * version code bump * 🚀[ Release v.2.6.0] Merge into Main (#12) * Added український language - add uk xml file - removed the nl, sv, da files - Escaped apostrphes in UK strings file - Updated language choices * 🥳[Feature] Unstoppable ext update (#11) * WIP: DNC Dropped in the UD code prior to testing * Added study link * Fix unstoppable domains dependency * Updated the UD ext text WIP::::Need to refactor once UK and deletion on SV, NL, DA * added UK lang Co-authored-by: Victor Sima * version bump * Hotfix/crashes v2.6.0 (#17) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom Co-authored-by: kcw-grunt Co-authored-by: Victor Sima Co-authored-by: Victor Sima * Feature/add bitrefill (#28) * added bitrefill - added kotlin fix * Added localizations - added logo * Added Bitrefill Link * hides fiat scollview from Bitrefill * Adjusted the padding at the buy tab item view * fixe test in Bitrefill detail * fied logo and layout * bump version and version code * Feature/update branding (#29) * added new logo - reset the layout * version code * replaced coin logo * bump versioncode * fixed dep version * added Bitrefill web listener Co-authored-by: Victor Sima * Create FUNDING.yml For GH Sponsor * 💣🐞[Hotbug fix] sharedprefs fb fix (#19) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom * subproject commit * version bump * Disabled FB send, Added Get Tasks * Patch to hard code fees - Static fees - Removed the dep - Turn crashlytics back on/off/on Co-authored-by: Victor Sima * Feature/add bitrefill (#28) * added bitrefill - added kotlin fix * Added localizations - added logo * Added Bitrefill Link * hides fiat scollview from Bitrefill * Adjusted the padding at the buy tab item view * fixe test in Bitrefill detail * fied logo and layout * bump version and version code * Feature/update branding (#29) * added new logo - reset the layout * version code * 🚀[ Release v.2.7.0] Merge into Develop (#32) * replaced coin logo * bump versioncode * fixed dep version * added Bitrefill web listener * [Techdebt/] pdate match firebase events 33 (#48) * Added the equivalenmt events - updated web link * WIP : Should compile * Fixed constants * Udpaded all Analytics constants * Added basic tests - This is WIP - Need to debug the Tests * version bump * fiexd compile bug * version bump * renmoved staging * moved backup rates * code bump * Updated test configs * Move api resources to central location - version code bump Co-authored-by: Victor Sima * Commented out the partial work * Add .circleci/config.yml (#74) * Feature - donation disclaimer modal (#75) * Feature - add donation modal disclaimer - #60 * Add missing strings * Upgraded AS - Reduced donation amount - Renamed id WIP * updated stirings key format - updated the donation address * code bump Co-authored-by: kcw-grunt * Feature - Show Litecoin Card as Webview (#82) * Feature - Show Litecoin Card as Webview - remove partner api library - create card frament webview and add to bottom nav - fixes #58 * bump version code * Fix UI crash * bump version code Co-authored-by: kcw-grunt * version code bump - updated version labels to include the version code * Task - Reduce country iso exception (#118) - reduce emissions of "java.lang.IllegalArgumentException: Unsupported ISO 3166 country: en" * made the webview fileprivate (#120) - the idea is that it will help evaluate the js callbacks * Refactors version name and code to BRConstants (#121) * 🐜[Bugfix] Refactor strings files (#122) * bump version code * Refactor strings files There were many unused strings and they were removed. * bump version code --------- Co-authored-by: Victor Sima * 🚀[ Release v.2.8.1] Merge into Main (#133) * 💣🐞[Hotbug fix] sharedprefs fb fix (#19) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom * subproject commit * version bump * Disabled FB send, Added Get Tasks * Patch to hard code fees - Static fees - Removed the dep - Turn crashlytics back on/off/on Co-authored-by: Victor Sima * 🚀[ Release v.2.6.0] Merge into Develop (#13) * version bump * Hotfix/crashes v2.6.0 (#17) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom Co-authored-by: kcw-grunt Co-authored-by: Victor Sima * 🚀[Release] v2.6.1 (#21) * version code bump * 🚀[ Release v.2.6.0] Merge into Main (#12) * Added український language - add uk xml file - removed the nl, sv, da files - Escaped apostrphes in UK strings file - Updated language choices * 🥳[Feature] Unstoppable ext update (#11) * WIP: DNC Dropped in the UD code prior to testing * Added study link * Fix unstoppable domains dependency * Updated the UD ext text WIP::::Need to refactor once UK and deletion on SV, NL, DA * added UK lang Co-authored-by: Victor Sima * version bump * Hotfix/crashes v2.6.0 (#17) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom Co-authored-by: kcw-grunt Co-authored-by: Victor Sima Co-authored-by: Victor Sima * Feature/add bitrefill (#28) * added bitrefill - added kotlin fix * Added localizations - added logo * Added Bitrefill Link * hides fiat scollview from Bitrefill * Adjusted the padding at the buy tab item view * fixe test in Bitrefill detail * fied logo and layout * bump version and version code * Feature/update branding (#29) * added new logo - reset the layout * version code * Create ISSUE_TEMPLATE * Delete ISSUE_TEMPLATE * Create test.md * Delete test.md * 🚀[ Release v.2.7.0] Merge into Develop (#32) * replaced coin logo * bump versioncode * fixed dep version * added Bitrefill web listener * [Techdebt/] pdate match firebase events 33 (#48) * Added the equivalenmt events - updated web link * WIP : Should compile * Fixed constants * Udpaded all Analytics constants * Added basic tests - This is WIP - Need to debug the Tests * version bump * fiexd compile bug * Fix - revert FragmentBuy webview test (#72) * 🚀[ Release v.2.7.1] Merge into Develop (#104) * 🚀[ Release v.2.7.0] Merge into Main (#30) * Added український language - add uk xml file - removed the nl, sv, da files - Escaped apostrphes in UK strings file - Updated language choices * 💣🐞[Hotbug fix] sharedprefs fb fix (#19) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom * subproject commit * version bump * Disabled FB send, Added Get Tasks * Patch to hard code fees - Static fees - Removed the dep - Turn crashlytics back on/off/on Co-authored-by: Victor Sima * 🚀[ Release v.2.6.0] Merge into Develop (#13) * version bump * Hotfix/crashes v2.6.0 (#17) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom Co-authored-by: kcw-grunt Co-authored-by: Victor Sima * 🚀[Release] v2.6.1 (#21) * version code bump * 🚀[ Release v.2.6.0] Merge into Main (#12) * Added український language - add uk xml file - removed the nl, sv, da files - Escaped apostrphes in UK strings file - Updated language choices * 🥳[Feature] Unstoppable ext update (#11) * WIP: DNC Dropped in the UD code prior to testing * Added study link * Fix unstoppable domains dependency * Updated the UD ext text WIP::::Need to refactor once UK and deletion on SV, NL, DA * added UK lang Co-authored-by: Victor Sima * version bump * Hotfix/crashes v2.6.0 (#17) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom Co-authored-by: kcw-grunt Co-authored-by: Victor Sima Co-authored-by: Victor Sima * Feature/add bitrefill (#28) * added bitrefill - added kotlin fix * Added localizations - added logo * Added Bitrefill Link * hides fiat scollview from Bitrefill * Adjusted the padding at the buy tab item view * fixe test in Bitrefill detail * fied logo and layout * bump version and version code * Feature/update branding (#29) * added new logo - reset the layout * version code * replaced coin logo * bump versioncode * fixed dep version * added Bitrefill web listener Co-authored-by: Victor Sima * Create FUNDING.yml For GH Sponsor * 💣🐞[Hotbug fix] sharedprefs fb fix (#19) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom * subproject commit * version bump * Disabled FB send, Added Get Tasks * Patch to hard code fees - Static fees - Removed the dep - Turn crashlytics back on/off/on Co-authored-by: Victor Sima * Feature/add bitrefill (#28) * added bitrefill - added kotlin fix * Added localizations - added logo * Added Bitrefill Link * hides fiat scollview from Bitrefill * Adjusted the padding at the buy tab item view * fixe test in Bitrefill detail * fied logo and layout * bump version and version code * Feature/update branding (#29) * added new logo - reset the layout * version code * 🚀[ Release v.2.7.0] Merge into Develop (#32) * replaced coin logo * bump versioncode * fixed dep version * added Bitrefill web listener * [Techdebt/] pdate match firebase events 33 (#48) * Added the equivalenmt events - updated web link * WIP : Should compile * Fixed constants * Udpaded all Analytics constants * Added basic tests - This is WIP - Need to debug the Tests * version bump * fiexd compile bug * version bump * renmoved staging * moved backup rates * code bump * Updated test configs * Move api resources to central location - version code bump Co-authored-by: Victor Sima * Commented out the partial work * Add .circleci/config.yml (#74) * Feature - donation disclaimer modal (#75) * Feature - add donation modal disclaimer - #60 * Add missing strings * Upgraded AS - Reduced donation amount - Renamed id WIP * updated stirings key format - updated the donation address * code bump Co-authored-by: kcw-grunt * Feature - Show Litecoin Card as Webview (#82) * Feature - Show Litecoin Card as Webview - remove partner api library - create card frament webview and add to bottom nav - fixes #58 * bump version code * Fix UI crash * bump version code Co-authored-by: kcw-grunt * 🚀[Release v.2.8.0] Merge into Develop (#124) * 💣🐞[Hotbug fix] sharedprefs fb fix (#19) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom * subproject commit * version bump * Disabled FB send, Added Get Tasks * Patch to hard code fees - Static fees - Removed the dep - Turn crashlytics back on/off/on Co-authored-by: Victor Sima * Feature/add bitrefill (#28) * added bitrefill - added kotlin fix * Added localizations - added logo * Added Bitrefill Link * hides fiat scollview from Bitrefill * Adjusted the padding at the buy tab item view * fixe test in Bitrefill detail * fied logo and layout * bump version and version code * Feature/update branding (#29) * added new logo - reset the layout * version code * Delete ISSUE_TEMPLATE * 🚀[ Release v.2.7.0] Merge into Develop (#32) * replaced coin logo * bump versioncode * fixed dep version * added Bitrefill web listener * [Techdebt/] pdate match firebase events 33 (#48) * Added the equivalenmt events - updated web link * WIP : Should compile * Fixed constants * Udpaded all Analytics constants * Added basic tests - This is WIP - Need to debug the Tests * version bump * fiexd compile bug * 🚀[ Release v.2.7.1] Merge into Develop (#104) * 🚀[ Release v.2.7.0] Merge into Main (#30) * Added український language - add uk xml file - removed the nl, sv, da files - Escaped apostrphes in UK strings file - Updated language choices * 💣🐞[Hotbug fix] sharedprefs fb fix (#19) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom * subproject commit * version bump * Disabled FB send, Added Get Tasks * Patch to hard code fees - Static fees - Removed the dep - Turn crashlytics back on/off/on Co-authored-by: Victor Sima * 🚀[ Release v.2.6.0] Merge into Develop (#13) * version bump * Hotfix/crashes v2.6.0 (#17) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom Co-authored-by: kcw-grunt Co-authored-by: Victor Sima * 🚀[Release] v2.6.1 (#21) * version code bump * 🚀[ Release v.2.6.0] Merge into Main (#12) * Added український language - add uk xml file - removed the nl, sv, da files - Escaped apostrphes in UK strings file - Updated language choices * 🥳[Feature] Unstoppable ext update (#11) * WIP: DNC Dropped in the UD code prior to testing * Added study link * Fix unstoppable domains dependency * Updated the UD ext text WIP::::Need to refactor once UK and deletion on SV, NL, DA * added UK lang Co-authored-by: Victor Sima * version bump * Hotfix/crashes v2.6.0 (#17) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom Co-authored-by: kcw-grunt Co-authored-by: Victor Sima Co-authored-by: Victor Sima * Feature/add bitrefill (#28) * added bitrefill - added kotlin fix * Added localizations - added logo * Added Bitrefill Link * hides fiat scollview from Bitrefill * Adjusted the padding at the buy tab item view * fixe test in Bitrefill detail * fied logo and layout * bump version and version code * Feature/update branding (#29) * added new logo - reset the layout * version code * replaced coin logo * bump versioncode * fixed dep version * added Bitrefill web listener Co-authored-by: Victor Sima * Create FUNDING.yml For GH Sponsor * 💣🐞[Hotbug fix] sharedprefs fb fix (#19) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom * subproject commit * version bump * Disabled FB send, Added Get Tasks * Patch to hard code fees - Static fees - Removed the dep - Turn crashlytics back on/off/on Co-authored-by: Victor Sima * Feature/add bitrefill (#28) * added bitrefill - added kotlin fix * Added localizations - added logo * Added Bitrefill Link * hides fiat scollview from Bitrefill * Adjusted the padding at the buy tab item view * fixe test in Bitrefill detail * fied logo and layout * bump version and version code * Feature/update branding (#29) * added new logo - reset the layout * version code * 🚀[ Release v.2.7.0] Merge into Develop (#32) * replaced coin logo * bump versioncode * fixed dep version * added Bitrefill web listener * [Techdebt/] pdate match firebase events 33 (#48) * Added the equivalenmt events - updated web link * WIP : Should compile * Fixed constants * Udpaded all Analytics constants * Added basic tests - This is WIP - Need to debug the Tests * version bump * fiexd compile bug * version bump * renmoved staging * moved backup rates * code bump * Updated test configs * Move api resources to central location - version code bump Co-authored-by: Victor Sima * Feature - donation disclaimer modal (#75) * Feature - add donation modal disclaimer - #60 * Add missing strings * Upgraded AS - Reduced donation amount - Renamed id WIP * updated stirings key format - updated the donation address * code bump Co-authored-by: kcw-grunt * Feature - Show Litecoin Card as Webview (#82) * Feature - Show Litecoin Card as Webview - remove partner api library - create card frament webview and add to bottom nav - fixes #58 * bump version code * Fix UI crash * bump version code Co-authored-by: kcw-grunt * version code bump - updated version labels to include the version code * Task - Reduce country iso exception (#118) - reduce emissions of "java.lang.IllegalArgumentException: Unsupported ISO 3166 country: en" * made the webview fileprivate (#120) - the idea is that it will help evaluate the js callbacks * Refactors version name and code to BRConstants (#121) * 🐜[Bugfix] Refactor strings files (#122) * bump version code * Refactor strings files There were many unused strings and they were removed. * bump version code * resolved bad resolution --------- Co-authored-by: Victor Sima * 🐜[Bugfix] Fragment fingerprint crash 125 (#131) * Removed comments and header as a non-effecting change * Refactored by overriding onAnimation Used notes from : https://stackoverflow.com/questions/4750939/android-animation-is-not-finished-in-onanimationend There calling super.onAnimationEnd(animation) seems to resolves the crash * Clearing the layout should be valid ?? * version code and name bump * Added semi-permenant test point - No Error Nominal Response..where the crash used to be - version code bump * - remove animation logic from fragment#onStop() - remove fragment close logic from SlideDetector - clean up duplicate fragmentmanager stack pop - other small fixes --------- Co-authored-by: Victor Sima * 🐜[Bugfix] Displaylistcanvas 129 (#130) * fixed broken Timber by reverting to 4.7.1 - horrible but effectuve fix: remove reference to a deleted file. use a placeholder that is tiny. The size made the difference in the Crash * version name and code bump * bump version name and code * reset to version name and code --------- Co-authored-by: Victor Sima * 💣🐞[Hotbug fix] sharedprefs fb fix (#19) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom * subproject commit * version bump * Disabled FB send, Added Get Tasks * Patch to hard code fees - Static fees - Removed the dep - Turn crashlytics back on/off/on Co-authored-by: Victor Sima * Feature/update branding (#29) * added new logo - reset the layout * version code * Delete ISSUE_TEMPLATE * Create test.md * Delete test.md * 🚀[ Release v.2.7.0] Merge into Develop (#32) * replaced coin logo * bump versioncode * fixed dep version * added Bitrefill web listener * [Techdebt/] pdate match firebase events 33 (#48) * Added the equivalenmt events - updated web link * WIP : Should compile * Fixed constants * Udpaded all Analytics constants * Added basic tests - This is WIP - Need to debug the Tests * version bump * fiexd compile bug * 🚀[ Release v.2.7.1] Merge into Develop (#104) * 🚀[ Release v.2.7.0] Merge into Main (#30) * Added український language - add uk xml file - removed the nl, sv, da files - Escaped apostrphes in UK strings file - Updated language choices * 💣🐞[Hotbug fix] sharedprefs fb fix (#19) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom * subproject commit * version bump * Disabled FB send, Added Get Tasks * Patch to hard code fees - Static fees - Removed the dep - Turn crashlytics back on/off/on Co-authored-by: Victor Sima * 🚀[ Release v.2.6.0] Merge into Develop (#13) * version bump * Hotfix/crashes v2.6.0 (#17) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom Co-authored-by: kcw-grunt Co-authored-by: Victor Sima * 🚀[Release] v2.6.1 (#21) * version code bump * 🚀[ Release v.2.6.0] Merge into Main (#12) * Added український language - add uk xml file - removed the nl, sv, da files - Escaped apostrphes in UK strings file - Updated language choices * 🥳[Feature] Unstoppable ext update (#11) * WIP: DNC Dropped in the UD code prior to testing * Added study link * Fix unstoppable domains dependency * Updated the UD ext text WIP::::Need to refactor once UK and deletion on SV, NL, DA * added UK lang Co-authored-by: Victor Sima * version bump * Hotfix/crashes v2.6.0 (#17) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom Co-authored-by: kcw-grunt Co-authored-by: Victor Sima Co-authored-by: Victor Sima * Feature/add bitrefill (#28) * added bitrefill - added kotlin fix * Added localizations - added logo * Added Bitrefill Link * hides fiat scollview from Bitrefill * Adjusted the padding at the buy tab item view * fixe test in Bitrefill detail * fied logo and layout * bump version and version code * Feature/update branding (#29) * added new logo - reset the layout * version code * replaced coin logo * bump versioncode * fixed dep version * added Bitrefill web listener Co-authored-by: Victor Sima * Create FUNDING.yml For GH Sponsor * 💣🐞[Hotbug fix] sharedprefs fb fix (#19) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom * subproject commit * version bump * Disabled FB send, Added Get Tasks * Patch to hard code fees - Static fees - Removed the dep - Turn crashlytics back on/off/on Co-authored-by: Victor Sima * Feature/add bitrefill (#28) * added bitrefill - added kotlin fix * Added localizations - added logo * Added Bitrefill Link * hides fiat scollview from Bitrefill * Adjusted the padding at the buy tab item view * fixe test in Bitrefill detail * fied logo and layout * bump version and version code * Feature/update branding (#29) * added new logo - reset the layout * version code * 🚀[ Release v.2.7.0] Merge into Develop (#32) * replaced coin logo * bump versioncode * fixed dep version * added Bitrefill web listener * [Techdebt/] pdate match firebase events 33 (#48) * Added the equivalenmt events - updated web link * WIP : Should compile * Fixed constants * Udpaded all Analytics constants * Added basic tests - This is WIP - Need to debug the Tests * version bump * fiexd compile bug * version bump * renmoved staging * moved backup rates * code bump * Updated test configs * Move api resources to central location - version code bump Co-authored-by: Victor Sima * Commented out the partial work * Feature - donation disclaimer modal (#75) * Feature - add donation modal disclaimer - #60 * Add missing strings * Upgraded AS - Reduced donation amount - Renamed id WIP * updated stirings key format - updated the donation address * code bump Co-authored-by: kcw-grunt * Feature - Show Litecoin Card as Webview (#82) * Feature - Show Litecoin Card as Webview - remove partner api library - create card frament webview and add to bottom nav - fixes #58 * bump version code * Fix UI crash * bump version code Co-authored-by: kcw-grunt * 🚀[Release v.2.8.0] Merge into Develop (#124) * 💣🐞[Hotbug fix] sharedprefs fb fix (#19) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom * subproject commit * version bump * Disabled FB send, Added Get Tasks * Patch to hard code fees - Static fees - Removed the dep - Turn crashlytics back on/off/on Co-authored-by: Victor Sima * Feature/add bitrefill (#28) * added bitrefill - added kotlin fix * Added localizations - added logo * Added Bitrefill Link * hides fiat scollview from Bitrefill * Adjusted the padding at the buy tab item view * fixe test in Bitrefill detail * fied logo and layout * bump version and version code * Feature/update branding (#29) * added new logo - reset the layout * version code * Delete ISSUE_TEMPLATE * 🚀[ Release v.2.7.0] Merge into Develop (#32) * replaced coin logo * bump versioncode * fixed dep version * added Bitrefill web listener * [Techdebt/] pdate match firebase events 33 (#48) * Added the equivalenmt events - updated web link * WIP : Should compile * Fixed constants * Udpaded all Analytics constants * Added basic tests - This is WIP - Need to debug the Tests * version bump * fiexd compile bug * 🚀[ Release v.2.7.1] Merge into Develop (#104) * 🚀[ Release v.2.7.0] Merge into Main (#30) * Added український language - add uk xml file - removed the nl, sv, da files - Escaped apostrphes in UK strings file - Updated language choices * 💣🐞[Hotbug fix] sharedprefs fb fix (#19) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom * subproject commit * version bump * Disabled FB send, Added Get Tasks * Patch to hard code fees - Static fees - Removed the dep - Turn crashlytics back on/off/on Co-authored-by: Victor Sima * 🚀[ Release v.2.6.0] Merge into Develop (#13) * version bump * Hotfix/crashes v2.6.0 (#17) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom Co-authored-by: kcw-grunt Co-authored-by: Victor Sima * 🚀[Release] v2.6.1 (#21) * version code bump * 🚀[ Release v.2.6.0] Merge into Main (#12) * Added український language - add uk xml file - removed the nl, sv, da files - Escaped apostrphes in UK strings file - Updated language choices * 🥳[Feature] Unstoppable ext update (#11) * WIP: DNC Dropped in the UD code prior to testing * Added study link * Fix unstoppable domains dependency * Updated the UD ext text WIP::::Need to refactor once UK and deletion on SV, NL, DA * added UK lang Co-authored-by: Victor Sima * version bump * Hotfix/crashes v2.6.0 (#17) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom Co-authored-by: kcw-grunt Co-authored-by: Victor Sima Co-authored-by: Victor Sima * Feature/add bitrefill (#28) * added bitrefill - added kotlin fix * Added localizations - added logo * Added Bitrefill Link * hides fiat scollview from Bitrefill * Adjusted the padding at the buy tab item view * fixe test in Bitrefill detail * fied logo and layout * bump version and version code * Feature/update branding (#29) * added new logo - reset the layout * version code * replaced coin logo * bump versioncode * fixed dep version * added Bitrefill web listener Co-authored-by: Victor Sima * Create FUNDING.yml For GH Sponsor * 💣🐞[Hotbug fix] sharedprefs fb fix (#19) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom * subproject commit * version bump * Disabled FB send, Added Get Tasks * Patch to hard code fees - Static fees - Removed the dep - Turn crashlytics back on/off/on Co-authored-by: Victor Sima * Feature/add bitrefill (#28) * added bitrefill - added kotlin fix * Added localizations - added logo * Added Bitrefill Link * hides fiat scollview from Bitrefill * Adjusted the padding at the buy tab item view * fixe test in Bitrefill detail * fied logo and layout * bump version and version code * Feature/update branding (#29) * added new logo - reset the layout * version code * 🚀[ Release v.2.7.0] Merge into Develop (#32) * replaced coin logo * bump versioncode * fixed dep version * added Bitrefill web listener * [Techdebt/] pdate match firebase events 33 (#48) * Added the equivalenmt events - updated web link * WIP : Should compile * Fixed constants * Udpaded all Analytics constants * Added basic tests - This is WIP - Need to debug the Tests * version bump * fiexd compile bug * version bump * renmoved staging * moved backup rates * code bump * Updated test configs * Move api resources to central location - version code bump Co-authored-by: Victor Sima * Feature - donation disclaimer modal (#75) * Feature - add donation modal disclaimer - #60 * Add missing strings * Upgraded AS - Reduced donation amount - Renamed id WIP * updated stirings key format - updated the donation address * code bump Co-authored-by: kcw-grunt * Feature - Show Litecoin Card as Webview (#82) * Feature - Show Litecoin Card as Webview - remove partner api library - create card frament webview and add to bottom nav - fixes #58 * bump version code * Fix UI crash * bump version code Co-authored-by: kcw-grunt * version code bump - updated version labels to include the version code * Task - Reduce country iso exception (#118) - reduce emissions of "java.lang.IllegalArgumentException: Unsupported ISO 3166 country: en" * made the webview fileprivate (#120) - the idea is that it will help evaluate the js callbacks * Refactors version name and code to BRConstants (#121) * 🐜[Bugfix] Refactor strings files (#122) * bump version code * Refactor strings files There were many unused strings and they were removed. * bump version code * resolved bad resolution --------- Co-authored-by: Victor Sima * 🚀[ Release v.2.8.1] Merge into Develop (#134) * 🚀[ Release v.2.8.0] Merge into Main (#123) * 💣🐞[Hotbug fix] sharedprefs fb fix (#19) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom * subproject commit * version bump * Disabled FB send, Added Get Tasks * Patch to hard code fees - Static fees - Removed the dep - Turn crashlytics back on/off/on Co-authored-by: Victor Sima * 🚀[ Release v.2.6.0] Merge into Develop (#13) * version bump * Hotfix/crashes v2.6.0 (#17) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom Co-authored-by: kcw-grunt Co-authored-by: Victor Sima * 🚀[Release] v2.6.1 (#21) * version code bump * 🚀[ Release v.2.6.0] Merge into Main (#12) * Added український language - add uk xml file - removed the nl, sv, da files - Escaped apostrphes in UK strings file - Updated language choices * 🥳[Feature] Unstoppable ext update (#11) * WIP: DNC Dropped in the UD code prior to testing * Added study link * Fix unstoppable domains dependency * Updated the UD ext text WIP::::Need to refactor once UK and deletion on SV, NL, DA * added UK lang Co-authored-by: Victor Sima * version bump * Hotfix/crashes v2.6.0 (#17) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom Co-authored-by: kcw-grunt Co-authored-by: Victor Sima Co-authored-by: Victor Sima * Feature/add bitrefill (#28) * added bitrefill - added kotlin fix * Added localizations - added logo * Added Bitrefill Link * hides fiat scollview from Bitrefill * Adjusted the padding at the buy tab item view * fixe test in Bitrefill detail * fied logo and layout * bump version and version code * Feature/update branding (#29) * added new logo - reset the layout * version code * Create ISSUE_TEMPLATE * Delete ISSUE_TEMPLATE * Create test.md * Delete test.md * 🚀[ Release v.2.7.0] Merge into Develop (#32) * replaced coin logo * bump versioncode * fixed dep version * added Bitrefill web listener * [Techdebt/] pdate match firebase events 33 (#48) * Added the equivalenmt events - updated web link * WIP : Should compile * Fixed constants * Udpaded all Analytics constants * Added basic tests - This is WIP - Need to debug the Tests * version bump * fiexd compile bug * Fix - revert FragmentBuy webview test (#72) * 🚀[ Release v.2.7.1] Merge into Develop (#104) * 🚀[ Release v.2.7.0] Merge into Main (#30) * Added український language - add uk xml file - removed the nl, sv, da files - Escaped apostrphes in UK strings file - Updated language choices * 💣🐞[Hotbug fix] sharedprefs fb fix (#19) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom * subproject commit * version bump * Disabled FB send, Added Get Tasks * Patch to hard code fees - Static fees - Removed the dep - Turn crashlytics back on/off/on Co-authored-by: Victor Sima * 🚀[ Release v.2.6.0] Merge into Develop (#13) * version bump * Hotfix/crashes v2.6.0 (#17) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom Co-authored-by: kcw-grunt Co-authored-by: Victor Sima * 🚀[Release] v2.6.1 (#21) * version code bump * 🚀[ Release v.2.6.0] Merge into Main (#12) * Added український language - add uk xml file - removed the nl, sv, da files - Escaped apostrphes in UK strings file - Updated language choices * 🥳[Feature] Unstoppable ext update (#11) * WIP: DNC Dropped in the UD code prior to testing * Added study link * Fix unstoppable domains dependency * Updated the UD ext text WIP::::Need to refactor once UK and deletion on SV, NL, DA * added UK lang Co-authored-by: Victor Sima * version bump * Hotfix/crashes v2.6.0 (#17) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom Co-authored-by: kcw-grunt Co-authored-by: Victor Sima Co-authored-by: Victor Sima * Feature/add bitrefill (#28) * added bitrefill - added kotlin fix * Added localizations - added logo * Added Bitrefill Link * hides fiat scollview from Bitrefill * Adjusted the padding at the buy tab item view * fixe test in Bitrefill detail * fied logo and layout * bump version and version code * Feature/update branding (#29) * added new logo - reset the layout * version code * replaced coin logo * bump versioncode * fixed dep version * added Bitrefill web listener Co-authored-by: Victor Sima * Create FUNDING.yml For GH Sponsor * 💣🐞[Hotbug fix] sharedprefs fb fix (#19) * Added notes * Bugfix - add missing pendingIntent flag for android 13 * Use firebase bom * subproject commit * version bump * Disabled FB send, Added Get Tasks * Patch to hard code fees - Static fees - Removed the dep - Turn crashlytics back on/off/on Co-authored-by: Victor Sima * Feature/add bitrefill (#28) * added bitrefill - added kotlin fix * Added localizations - added logo * Added Bitrefill Link * hides fiat scollview from Bitrefill * Adjusted the padding at the buy tab item view * fixe test in Bitrefill detail * fied logo and layout * bump version and version code * Feature/update branding (#29) * added new logo - reset the layout * version code * 🚀[ Release v.2.7.0] Merge into Develop (#32) * replaced coin logo * bump versioncode * fixed dep version * added Bitrefill web listener * [Techdebt/] pdate match firebase events 33 (#48) * Added the equivalenmt events - updated web link * WIP : Should compile * Fixed constants * Udpaded all Analytics constants * Added basic tests - This is WIP - Need to debug the Tests * version bump * fiexd compile bug * version bump * renmoved staging * moved backup rates * code bump * Updated test configs * Move api resources to central location - version code bump Co-authored-by: Victor Sima * Commented out the partial work * Add .circleci/config.yml (#74) * Feature - donation disclaimer modal (#75) * Feature - add donation modal disclaimer - #60 * Add missing strings * Upgraded AS - Reduced donation amount - Renamed id WIP * updated stirings key format - updated the donation address * code bump Co-authored-by: kcw-grunt * Feature - Show Litecoin Card as Webview (#82) * Feature - Show Litecoin Card as Webview - remove partner api library - create card frament webview and add to bottom nav - fixes #58 * bump version code * Fix UI crash * bump version code Co-authored-by: kcw-grunt * version code bump - updated version labels to include the version code * Task - Reduce country iso exception (#118) - reduce emissions of "java.lang.IllegalArgumentException: Unsupported ISO 3166 country: en" * made the webview fileprivate (#120) - the idea is that it will help evaluate the js callbacks * Refactors version name and code to BRConstants (#121) * 🐜[Bugfix] Refactor strings files (#122) * bump version code * Refactor strings files There were many unused strings and they were removed. * bump version code --------- Co-authored-by: Victor Sima * bump version name and code * reset to version name and code --------- Co-authored-by: Victor Sima * 🥳[Feature] Add bech32 to enable ltc1 addresses & false positive rate (Bloom Filter) interface (#137) * Patched in the changes from losh11/bech32 - Pulled in all the changes from loafwallet-core - From Apr 10, 2022 * Various development refactors - Updated the tx and addressess lookup URLs - Updated gitignore - Removed old binaries from project - Appended timber debug prefix to “timber:” to easily filter in Logcat - Bump version code * Resolved conflicts and merged Merge branch 'feature/add-bech32' of https://github.com/litecoin-foundation/litewallet-android into feature/add-bech32-14 - Resolved conflicts - re-added timber prefix * Add logic to retrieve and display seed phrase * Added Timber logs - added localizations - version and code bump - Removed the direct wallet info fetch - This call caused the app the reset the seed. - instead we are simply pulling the seed from the keystore - lean to call for seed * Post testing improvement for FP rates - The sync period is long in the current configuration - Spent a few days testing to see if certain false-positives rate for the BloomFilter to adjust the sync time. - the trade off is: quicker sync = less privacy Here are the rates that will be offered: fpr = 0.00005 , sync 77 mins , anonymous fpr = 0.00002 , sync 42 mins, semi-private fpr = 0.00001 , sync 19 mins, low-privacy * Added layout for false positive rate Added localizations for false positive waiting to add the func fpupdate(double newfalseupdate) in the loafwallet-core Adding the needed interface * Keep build.gradle - Restore files - some jni fixes - Cleanup - Signed-off-by: Victor Sima * All are compiling added the interface in C and Java - updated to the latest [loafwallet-core](https://github.com/litecoin-foundation/loafwallet-core/tree/master-android) branch: master-android commit: 63b18b8 * Updated the gradle to 7.4.2 bumped code and version * Adjusted analytics for sync - updated to the latest v1.4.0 loafwallet-core - updated to the v1.3.0 of loafwallet-core - Added logging to start collecting the sync times - updated the loafwallet-core to v1.5.0 * Included a snackbar to notify users on sync. - Included in the Intro Activity - Included in the Login (Lock) Activity - Added translations for the snackbar --------- Co-authored-by: Victor Sima * resolved conflcts from rebase from main * 🚀[ Release v.2.8.4] Merge into Develop (#141) * updated privacy policy location - code bump * polished the sync duration - adjusted the sync output * Bugfix - fix menuClose() crash in FragmentMenu (#140) * Bugfix - fix image resource crash (#139) - fixes RuntimeException: Canvas: trying to draw too large bitmap * Bugfix - Phrase Reminder crash (#143) - added an exception handler for UserNotAuthenticatedException. - note: this should allow for the system to display the native authorization UI when needed - fixes issue - https://console.firebase.google.com/u/0/project/litewallet-beta/crashlytics/app/android:com.loafwallet/issues/09dac17241309f0e823ef597a9a82cd4 * 🦺[Techdebt] remove litecoin card 145 (#146) * Removed fragments re Card * Removed Card related translations * removed Card usages * version bump * 🦺[Techdebt] Remove simplex (#148) * Removed the localizations * remove code * Upgraded kotlin and Android (#158) * Upgraded kotlin and Android - set the min SDKs - added helper code in Android Manifest to avoid the error when merging - refactored per deprecations Signed-off-by: kcw-grunt * Downgrading the Timber dependency - added constants and tweaked tne config to avoid merge manifest errors - updated gitignore Signed-off-by: kcw-grunt * bump code number - updated gitignore - added perms Signed-off-by: kcw-grunt --------- Signed-off-by: kcw-grunt * 🏄🏼‍♂️ [Feature] Add push notifications (#162) * Finally fixed the PN dep error caused by Firebase - Added more analytics for the push notifications - Simple clean up refactoring Signed-off-by: kcw-grunt * Added the AdvertID into the BreadApp singleton Signed-off-by: kcw-grunt * Added access and location of the key file - addess access object, JSON object, method to read and operate - updated gitignore Signed-off-by: kcw-grunt --------- Signed-off-by: kcw-grunt * Add language option in create and restore view (Scroll Language in Intro Activity) (#167) * Added audios and audios data source * Changed Intro's UI, Added Adapter, and Added country resources. * Convert CountryLanguageAdapter to Kotlin, added shadow and made text item bold when selected * Added audio feature to play the language on each item * Added pop up yes or no UI * Added pop up yes or cancel * Change text's sizes * Updated the lockscreen 160 (#164) * Update Gitignore * Updated lockscreen * Changed color to white, Added litewallet dark blue color * Added PAD (#169) refactored to get compile Signed-off-by: kcw-grunt * Change layout width to match parent and background to the correct color (#170) * Added Announcement view to encourage email mailing list (#168) * 🛠️ [Techdebt] Update loafwallet core 163 (#165) * Finally fixed the PN dep error caused by Firebase - Added more analytics for the push notifications - Simple clean up refactoring Signed-off-by: kcw-grunt Added the AdvertID into the BreadApp singleton Signed-off-by: kcw-grunt * Added access and location of the key file - addess access object, JSON object, method to read and operate - updated gitignore Signed-off-by: kcw-grunt * updated the latest commit Signed-off-by: kcw-grunt * DO NOT SQUASH - bugfix: com.breadwallet.tools.manager.BRSharedPrefs.getIso Biggest bug in when the user has ru as the as a default language https://console.firebase.google.com/project/litewallet-beta/crashlytics/app/android:com.loafwallet/issues/78150fde415a8e4c174f19e2ff2e0988?time=1703682751000:1706274751000&sessionEventKey=65B37C4E00DC00016CE457C04AD2C024_1906783813838484053 - Testing to set to RU for ru Signed-off-by: kcw-grunt * cleanup after locating bug Signed-off-by: kcw-grunt --------- Signed-off-by: kcw-grunt * Adding a close buttin in the Settings Modal (#166) - Should be dismiss to the parent - Added close buttons - refactored the onSaveInstances Signed-off-by: kcw-grunt * force remove json Signed-off-by: kcw-grunt * updated the gitignore added debug paths Signed-off-by: kcw-grunt * Put announce updates view on create and recreate (#175) * Put AnnounceUpdatesViewActivity in button create and restore * Added enable on back invoke call on Manifest * Added src/main/assets inside fast_follow_asset_pack_01 folder * Create Folder src/main/assets * delete test file * Create directory src/main/assets inside fast_follow_asset_pack_01 * Rename file to empty_file * Added Functionality to button yes language (#178) * 🛠️ [Techdebt] Refactor code and inline fees (#179) * Removed sensitive data Signed-off-by: kcw-grunt * In Progress Refactoring Code - Removed cruft - bump version - working ops address being generated Signed-off-by: kcw-grunt * tieredOps working - refactor cleanup - renaming and refactor…project running! - created and sent a transaction - Renamed some code from Bitcoin to Litecoin - remove whitespace - created a set to create the intersection - Filtered out the address as targeted - added textview for Service Fee - condensed the inits - Renamed from iso to more meaningful names Signed-off-by: kcw-grunt * More refactor - Moved Fee Manager - Changed the rate polls - renamed getIso to getIsoSymbol - Removed saveEvent - Adjusted hot spot of Amount Edit - added full names to buttons. - added extra check before donating - commented out the new params - Fixes the Unsopported ISO bug - Removed old code Signed-off-by: kcw-grunt * Relabeled Bitcoin to Litecoin in places - Cleaned up the detail text in Transaction Item - updated confirmation label - Tried hide the keyboard Signed-off-by: kcw-grunt * bumped version updated tiers : 1713522152 Signed-off-by: kcw-grunt * Debug of the com.breadwallet.tools.security.AuthManager.authPrompt -version bump -moved google serivces plugin to the bottom per Pusher Suggest -code bump Signed-off-by: kcw-grunt --------- Signed-off-by: kcw-grunt * Move the fetching the partner key to an earlier phase Signed-off-by: kcw-grunt * small test to see what happens the fingerprint fail Signed-off-by: kcw-grunt * resolved conflicts frm main to release branch Signed-off-by: kcw-grunt * Fixed a conflict resolution error Signed-off-by: kcw-grunt * Bugfix Missing .id in layout https://console.firebase.google.com/project/litewallet-beta/crashlytics/app/android:com.loafwallet/issues/4f30e4c78fcb51b994692bac37ee633d?versions=v2.10.0%20(20240421)&time=last-twenty-four-hours&types=crash&sessionEventKey=66274B8303A8000154783FED38290873_1939381778360647602 Signed-off-by: kcw-grunt * bump code Signed-off-by: kcw-grunt --------- Signed-off-by: kcw-grunt Co-authored-by: Mohamed Barry Co-authored-by: Ebenezer Co-authored-by: RyanPetter <46852625+RyanPetter@users.noreply.github.com> Co-authored-by: Ryan Petter Co-authored-by: Victor Sima Co-authored-by: Victor Sima Co-authored-by: Josi Kie <54074780+josikie@users.noreply.github.com> --- .gitignore | 26 +- .idea/androidTestResultsUserPreferences.xml | 13 + app/build.gradle | 18 +- app/src/main/AndroidManifest.xml | 1 + .../main/java/com/breadwallet/BreadApp.java | 61 +-- .../com/breadwallet/entities/IntroLanguage.kt | 8 +- .../entities/IntroLanguageResource.kt | 56 ++- .../activities/AnnounceUpdatesViewActivity.kt | 36 +- .../presenter/activities/BreadActivity.java | 6 +- .../presenter/activities/LoginActivity.java | 15 +- .../activities/intro/IntroActivity.java | 47 +- .../settings/DisplayCurrencyActivity.java | 4 +- .../settings/FingerprintActivity.java | 6 +- .../activities/settings/SettingsActivity.java | 2 +- .../settings/SpendLimitActivity.java | 4 +- .../settings/SyncBlockchainActivity.java | 5 +- .../presenter/entities/PartnerNames.kt | 1 + .../presenter/entities/TransactionDataItem.kt | 92 ++++ .../presenter/entities/TransactionItem.java | 36 ++ .../presenter/entities/TxItem.java | 1 - .../fragments/DynamicDonationFragment.java | 28 +- .../fragments/FragmentFingerprint.java | 27 +- .../presenter/fragments/FragmentPin.java | 18 - .../fragments/FragmentRequestAmount.java | 12 +- .../presenter/fragments/FragmentSend.kt | 407 ++++++++---------- .../fragments/FragmentTransactionItem.java | 82 ++-- .../tools/adapter/CountryLanguageAdapter.kt | 28 +- .../tools/adapter/TransactionListAdapter.java | 59 ++- .../tools/manager/BRApiManager.java | 32 +- .../tools/manager/BREventManager.java | 106 ----- .../tools/manager/BRSharedPrefs.java | 7 +- .../breadwallet/tools/manager/FeeManager.java | 77 +++- .../tools/manager/SyncManager.java | 13 +- .../breadwallet/tools/security/BRSender.java | 150 +++---- .../tools/security/BitcoinUrlHandler.java | 17 +- .../breadwallet/tools/security/PostAuth.java | 16 +- .../tools/threads/ImportPrivKeyTask.java | 10 +- .../tools/threads/PaymentProtocolTask.java | 8 +- .../breadwallet/tools/util/BRCurrency.java | 5 +- .../breadwallet/tools/util/BRExchange.java | 59 ++- .../com/breadwallet/tools/util/Utils.java | 89 +++- .../breadwallet/wallet/BRWalletManager.java | 22 +- app/src/main/java/com/platform/APIClient.java | 1 + app/src/main/jni/transition/wallet.c | 50 ++- app/src/main/jni/transition/wallet.h | 5 + .../layout/activity_announce_updates_view.xml | 39 +- .../res/layout/activity_sync_blockchain.xml | 15 +- app/src/main/res/layout/fragment_send.xml | 66 +-- app/src/main/res/layout/syncing_item.xml | 1 - .../res/layout/transaction_details_item.xml | 32 +- app/src/main/res/values-de/strings.xml | 9 + app/src/main/res/values-es/strings.xml | 9 + app/src/main/res/values-fr/strings.xml | 9 + app/src/main/res/values-in/strings.xml | 9 + app/src/main/res/values-it/strings.xml | 9 + app/src/main/res/values-ja/strings.xml | 9 + app/src/main/res/values-ko/strings.xml | 9 + app/src/main/res/values-pt/strings.xml | 9 + app/src/main/res/values-ru/strings.xml | 9 + app/src/main/res/values-tr/strings.xml | 8 + app/src/main/res/values-uk/strings.xml | 9 + app/src/main/res/values-zh-rCN/strings.xml | 11 +- app/src/main/res/values-zh-rTW/strings.xml | 9 + app/src/main/res/values/strings.xml | 11 +- .../src/main/assets/audio/bahasaindonesia.mp3 | Bin 0 -> 8928 bytes .../src/main/assets/audio/coinflip.mp3 | Bin 0 -> 23680 bytes .../src/main/assets/audio/deutsch.mp3 | Bin 0 -> 3936 bytes .../src/main/assets/audio/english.mp3 | Bin 0 -> 3936 bytes .../src/main/assets/audio/french.mp3 | Bin 0 -> 3648 bytes .../src/main/assets/audio/italiano.mp3 | Bin 0 -> 4416 bytes .../src/main/assets/audio/japanese.mp3 | Bin 0 -> 4320 bytes .../src/main/assets/audio/korean.mp3 | Bin 0 -> 4416 bytes .../src/main/assets/audio/portugues.mp3 | Bin 0 -> 5280 bytes .../src/main/assets/audio/russian.mp3 | Bin 0 -> 4224 bytes .../src/main/assets/audio/spanish.mp3 | Bin 0 -> 4032 bytes .../main/assets/audio/traditionalchinese.mp3 | Bin 0 -> 5088 bytes .../src/main/assets/audio/turkish.mp3 | Bin 0 -> 3552 bytes .../src/main/assets/audio/ukrainian.mp3 | Bin 0 -> 5184 bytes 78 files changed, 1165 insertions(+), 883 deletions(-) create mode 100644 app/src/main/java/com/breadwallet/presenter/entities/TransactionDataItem.kt create mode 100644 app/src/main/java/com/breadwallet/presenter/entities/TransactionItem.java create mode 100644 fast_follow_asset_pack_01/src/main/assets/audio/bahasaindonesia.mp3 create mode 100644 fast_follow_asset_pack_01/src/main/assets/audio/coinflip.mp3 create mode 100644 fast_follow_asset_pack_01/src/main/assets/audio/deutsch.mp3 create mode 100644 fast_follow_asset_pack_01/src/main/assets/audio/english.mp3 create mode 100644 fast_follow_asset_pack_01/src/main/assets/audio/french.mp3 create mode 100644 fast_follow_asset_pack_01/src/main/assets/audio/italiano.mp3 create mode 100644 fast_follow_asset_pack_01/src/main/assets/audio/japanese.mp3 create mode 100644 fast_follow_asset_pack_01/src/main/assets/audio/korean.mp3 create mode 100644 fast_follow_asset_pack_01/src/main/assets/audio/portugues.mp3 create mode 100644 fast_follow_asset_pack_01/src/main/assets/audio/russian.mp3 create mode 100644 fast_follow_asset_pack_01/src/main/assets/audio/spanish.mp3 create mode 100644 fast_follow_asset_pack_01/src/main/assets/audio/traditionalchinese.mp3 create mode 100644 fast_follow_asset_pack_01/src/main/assets/audio/turkish.mp3 create mode 100644 fast_follow_asset_pack_01/src/main/assets/audio/ukrainian.mp3 diff --git a/.gitignore b/.gitignore index c517bddcf..c0aa7262f 100644 --- a/.gitignore +++ b/.gitignore @@ -74,12 +74,30 @@ crash.txt /projectFilesBackup/ /publishTODO.txt .idea/copyright/ -/app/google-services.json -/app/partner-keys.json -/app/src/main/assets/partner-keys.json /.idea/markdown-navigator/ /app/src/main/java/com/breadwallet/presenter/fragments/FragmentBreadSignal.java /fastlane/ fastlane/ + +/.idea/appInsightsSettings.xml + + ## Partner +/app/partner-keys.json +/app/src/main/assets/partner-keys.json partner-keys.json -/.idea/appInsightsSettings.xml \ No newline at end of file + +## Google Services +app/src/litewallet/release/google-services.json +app/src/release/litewallet/google-services.json +app/src/litewallet/google-services.json +app/src/release/google-services.json +app/src/litewalletRelease/google-services.json +app/google-services.json + +app/src/litewallet/debug/google-services.json +app/src/debug/litewallet/google-services.json +app/src/litewallet/google-services.json +app/src/debug/google-services.json +app/src/litewalletDebug/google-services.json +/app/release/google-services.json +/app/debug/google-services.json diff --git a/.idea/androidTestResultsUserPreferences.xml b/.idea/androidTestResultsUserPreferences.xml index 3a1d302ad..17c62e012 100644 --- a/.idea/androidTestResultsUserPreferences.xml +++ b/.idea/androidTestResultsUserPreferences.xml @@ -19,6 +19,19 @@ + + + + + + + diff --git a/app/build.gradle b/app/build.gradle index 9c6370e66..589330fb8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,7 +1,6 @@ apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt' -apply plugin: 'com.google.gms.google-services' apply plugin: 'com.google.firebase.crashlytics' apply plugin: 'kotlin-parcelize' @@ -66,8 +65,8 @@ android { applicationId = 'com.loafwallet' minSdkVersion 31 targetSdkVersion 33 - versionCode 20240326 - versionName "v2.9.1" + versionCode 20240424 + versionName "v2.10.0" multiDexEnabled true archivesBaseName = "${versionName}(${versionCode})" @@ -214,13 +213,13 @@ android { } buildTypes { -// gitUpdateModules() -// proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' - release { signingConfig signingConfigs.release - minifyEnabled = false + minifyEnabled = true debuggable = false + //DEV: Mothballing gitUpdateModules() until time to resolve: + //gitUpdateModules() + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' ndk { minifyEnabled = false @@ -318,7 +317,7 @@ dependencies { // push notifications implementation 'com.google.firebase:firebase-messaging:23.4.0' - implementation 'com.pusher:push-notifications-android:1.8.0' + implementation 'com.pusher:push-notifications-android:1.9.0' // Timber implementation 'com.jakewharton.timber:timber:4.7.1' @@ -375,4 +374,5 @@ tasks.register("ktlintFormat", JavaExec) { jvmArgs "--add-opens=java.base/java.lang=ALL-UNNAMED" // see https://pinterest.github.io/ktlint/install/cli/#command-line-usage for more information args "-F", "src/**/*.kt", "**.kts", "!**/build/**" -} \ No newline at end of file +} +apply plugin: 'com.google.gms.google-services' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 38b29950f..125365c27 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -56,6 +56,7 @@ android:name=".presenter.activities.AnnounceUpdatesViewActivity" android:exported="false" android:label="Litewallet" + android:enableOnBackInvokedCallback="true" android:theme="@style/AppTheme" /> { + //fetch instance ID + String instanceID = Utils.fetchPartnerKey(this, + PartnerNames.PUSHERSTAGING); + // setup Push Notifications + loadAdvertisingAndPush(instanceID, this); + }).start(); WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE); Display display = wm.getDefaultDisplay(); @@ -80,12 +77,9 @@ public void onCreate() { DISPLAY_HEIGHT_PX = size.y; mFingerprintManager = (FingerprintManager) getSystemService(Context.FINGERPRINT_SERVICE); } - - public static Context getBreadContext() { return currentActivity == null ? SyncReceiver.app : currentActivity; } - public static void setBreadContext(Activity app) { currentActivity = app; } @@ -94,16 +88,13 @@ public static void fireListeners() { if (listeners == null) return; for (OnAppBackgrounded lis : listeners) lis.onBackgrounded(); } - public static void addOnBackgroundedListener(OnAppBackgrounded listener) { if (listeners == null) listeners = new ArrayList<>(); if (!listeners.contains(listener)) listeners.add(listener); } - public static boolean isAppInBackground(final Context context) { return context == null || activityCounter.get() <= 0; } - //call onStop on evert activity so public static void onStop(final BRActivity app) { if (isBackgroundChecker != null) isBackgroundChecker.cancel(); @@ -123,23 +114,21 @@ public void run() { isBackgroundChecker.schedule(backgroundCheck, 500, 500); } - @Override protected void attachBaseContext(Context base) { LocaleHelper.Companion.init(base); super.attachBaseContext(LocaleHelper.Companion.getInstance().setLocale(base)); } - public interface OnAppBackgrounded { void onBackgrounded(); } - private void loadAdvertisingAndPush(Context app) { - Thread thr = new Thread(new Runnable() { + private void loadAdvertisingAndPush(String instanceID, Context app) { + new Thread(new Runnable() { @Override public void run() { try { AdvertisingIdClient.Info adInfo = AdvertisingIdClient.getAdvertisingIdInfo(app); - finished(adInfo); + finishedLoadingPushService( instanceID, adInfo); } catch (IllegalStateException e) { e.printStackTrace(); } catch (GooglePlayServicesRepairableException e) { @@ -149,35 +138,29 @@ public void run() { } catch (GooglePlayServicesNotAvailableException e) { e.printStackTrace(); } - finished(null); + String emptyID = ""; + finishedLoadingPushService(emptyID,null); + Bundle params = new Bundle(); + params.putString("pusher_instanceid_not_found",emptyID); + AnalyticsManager.logCustomEventWithParams(BRConstants._20200112_ERR, params); } - }); - thr.start(); + }).start(); } - - private void finished(final AdvertisingIdClient.Info adInfo) { - if(adInfo!=null) { - + private void finishedLoadingPushService(final String instanceID, AdvertisingIdClient.Info adInfo) { + if(adInfo!=null && instanceID != "") { + // setup Pusher Interests String adInfoString = adInfo.getId(); String generalAndroidInterest = "general-android"; String debugGeneralAndroidInterest = "debug-general-android"; - String pusherInstanceID = Utils.fetchPartnerKey(this, PartnerNames.PUSHERSTAGING); - // setup Push Notifications - //This worked had to add the iid dep https://github.com/mixpanel/mixpanel-android/issues/744 - PushNotifications.start(getApplicationContext(), pusherInstanceID); + PushNotifications.start(getApplicationContext(), instanceID); PushNotifications.addDeviceInterest(generalAndroidInterest); PushNotifications.addDeviceInterest(debugGeneralAndroidInterest); //Send params for pusher setup - Bundle params = new Bundle(); - params.putString("general-interest",generalAndroidInterest); - params.putString("debug-general-interest",debugGeneralAndroidInterest); - params.putString("device-ad-info",adInfoString); - AnalyticsManager.logCustomEventWithParams(BRConstants._20240123_RAGI, params); + AnalyticsManager.logCustomEvent(BRConstants._20240123_RAGI); } } - private static class CrashReportingTree extends Timber.Tree { private static final String CRASHLYTICS_KEY_PRIORITY = "priority"; private static final String CRASHLYTICS_KEY_TAG = "tag"; diff --git a/app/src/main/java/com/breadwallet/entities/IntroLanguage.kt b/app/src/main/java/com/breadwallet/entities/IntroLanguage.kt index 38176d09f..90e25c588 100644 --- a/app/src/main/java/com/breadwallet/entities/IntroLanguage.kt +++ b/app/src/main/java/com/breadwallet/entities/IntroLanguage.kt @@ -1,8 +1,10 @@ package com.breadwallet.entities data class IntroLanguage( - val lang: String, - val desc: String, - val audio: Int, + val code: String, + val name : String, + val desc : String, + val audio : Int, val message: String, + val lang: Language ) diff --git a/app/src/main/java/com/breadwallet/entities/IntroLanguageResource.kt b/app/src/main/java/com/breadwallet/entities/IntroLanguageResource.kt index 52dc716e1..4f8a27ee7 100644 --- a/app/src/main/java/com/breadwallet/entities/IntroLanguageResource.kt +++ b/app/src/main/java/com/breadwallet/entities/IntroLanguageResource.kt @@ -3,71 +3,113 @@ package com.breadwallet.entities import com.breadwallet.R class IntroLanguageResource { - fun loadResources(): Array { - return arrayOf( + + fun loadResources() : Array{ + return arrayOf ( IntroLanguage( + Language.ENGLISH.code, Language.ENGLISH.title, "The most secure and safest way to use Litecoin.", R.raw.english, "Are you sure you want to change the language to English?", + Language.ENGLISH ), IntroLanguage( + Language.SPANISH.code, Language.SPANISH.title, "La forma más segura de usar Litecoin.", R.raw.spanish, "¿Estás seguro de que quieres cambiar el idioma a español?", + Language.SPANISH ), IntroLanguage( + Language.INDONESIAN.code, Language.INDONESIAN.title, "Cara paling aman dan teraman untuk menggunakan Litecoin.", R.raw.bahasaindonesia, "Yakin ingin mengubah bahasanya ke bahasa Indonesia?", + Language.INDONESIAN ), IntroLanguage( + Language.GERMAN.code, Language.GERMAN.title, "Die sicherste Option zur Nutzung von Litecoin.", R.raw.deutsch, "Sind Sie sicher, dass Sie die Sprache auf Deutsch ändern möchten?", + Language.GERMAN ), IntroLanguage( + Language.UKRAINIAN.code, Language.UKRAINIAN.title, "Найбезпечніший і найбезпечніший спосіб використання Litecoin.", R.raw.ukrainian, "Ви впевнені, що хочете змінити мову на українську?", + Language.UKRAINIAN + ), + IntroLanguage( + Language.CHINESE_TRADITIONAL.code, + Language.CHINESE_TRADITIONAL.title, + "使用萊特幣最安全、最有保障的方式。", + R.raw.traditionalchinese, + "您確定要將語言改為中文嗎?", + Language.CHINESE_TRADITIONAL ), - IntroLanguage(Language.CHINESE_TRADITIONAL.title, "使用萊特幣最安全、最有保障的方式。", R.raw.traditionalchinese, "您確定要將語言改為中文嗎?"), IntroLanguage( + Language.ITALIAN.code, Language.ITALIAN.title, "Il modo più sicuro per usare i Litecoin.", R.raw.italiano, "Sei sicuro di voler cambiare la lingua in italiano?", + Language.ITALIAN + ), + IntroLanguage( + Language.KOREAN.code, + Language.KOREAN.title, + "Litecoin을 사용하는 가장 안정되고 안전한 방법.", + R.raw.korean, + "언어를 한국어로 변경하시겠습니까?", + Language.KOREAN ), - IntroLanguage(Language.KOREAN.title, "Litecoin을 사용하는 가장 안정되고 안전한 방법.", R.raw.korean, "언어를 한국어로 변경하시겠습니까?"), IntroLanguage( + Language.FRENCH.code, Language.FRENCH.title, "La façon la plus sécurisée et sûre d'utiliser Litecoin.", R.raw.french, - "Êtes-vous sûr de vouloir changer la langue en français ?", + "Êtes-vous sûr de vouloir changer la langue en français ?", + Language.FRENCH ), IntroLanguage( + Language.TURKISH.code, Language.TURKISH.title, "Litecoin'i kullanmanın en güvenli ve en güvenli yolu.", R.raw.turkish, "Dili türkçeye değiştirmek istediğinizden emin misiniz?", + Language.TURKISH + ), + IntroLanguage( + Language.JAPANESE.code, + Language.JAPANESE.title, + "最も安全にリテコインを使う手段。", + R.raw.japanese, + "言語を日本語に変更してもよろしいですか?", + Language.JAPANESE ), - IntroLanguage(Language.JAPANESE.title, "最も安全にリテコインを使う手段。", R.raw.japanese, "言語を日本語に変更してもよろしいですか?"), IntroLanguage( + Language.PORTUGUESE.code, Language.PORTUGUESE.title, "A forma mais protegida e segura de utilizar a Litecoin.", R.raw.portugues, "Tem certeza de que deseja alterar o idioma para português?", + Language.PORTUGUESE ), IntroLanguage( + Language.PORTUGUESE.code, Language.RUSSIAN.title, "Самый надежный и безопасный способ использования биткойна.", R.raw.russian, "Вы уверены, что хотите сменить язык на русский?", - ), + Language.RUSSIAN + ) ) } } diff --git a/app/src/main/java/com/breadwallet/presenter/activities/AnnounceUpdatesViewActivity.kt b/app/src/main/java/com/breadwallet/presenter/activities/AnnounceUpdatesViewActivity.kt index 460582971..efb3df1c0 100644 --- a/app/src/main/java/com/breadwallet/presenter/activities/AnnounceUpdatesViewActivity.kt +++ b/app/src/main/java/com/breadwallet/presenter/activities/AnnounceUpdatesViewActivity.kt @@ -1,11 +1,16 @@ package com.breadwallet.presenter.activities +import android.app.Activity +import android.content.Intent +import android.os.Build import android.os.Bundle import android.webkit.WebView import android.widget.Button +import android.widget.ImageButton import androidx.appcompat.app.AppCompatActivity import com.breadwallet.R import com.breadwallet.databinding.ActivityAnnounceUpdatesViewBinding +import com.breadwallet.presenter.activities.intro.RecoverActivity class AnnounceUpdatesViewActivity : AppCompatActivity() { private lateinit var binding: ActivityAnnounceUpdatesViewBinding @@ -17,13 +22,38 @@ class AnnounceUpdatesViewActivity : AppCompatActivity() { binding = ActivityAnnounceUpdatesViewBinding.inflate(layoutInflater) setContentView(binding.root) + val isNewWallet : Boolean = intent.getBooleanExtra("isNewWallet", false) + val buttonNoThanks: Button = findViewById(R.id.btnNoThanks) + buttonNoThanks.setOnClickListener{ + nextActivity(isNewWallet) + } + + val buttonClose: ImageButton = findViewById(R.id.btnClose) + buttonClose.setOnClickListener{ + nextActivity(isNewWallet) + } + val webView: WebView = findViewById(R.id.webViewEmail) webView.settings.javaScriptEnabled = true webView.loadUrl(url) + } - val buttonNoThanks: Button = findViewById(R.id.btnNoThanks) - buttonNoThanks.setOnClickListener { - finish() + fun nextActivity(isNewWallet : Boolean) { + if (isNewWallet) { + val intent = Intent(this, SetPinActivity::class.java) + startActivity(intent) + }else { + val intent = Intent(this, RecoverActivity::class.java) + startActivity(intent) + } + overridePendingTransition(R.anim.enter_from_right, R.anim.exit_to_left) + if (Build.VERSION.SDK_INT >= 34) { + overrideActivityTransition( + Activity.OVERRIDE_TRANSITION_OPEN, + R.anim.enter_from_right, + R.anim.exit_to_left + ) } } } + diff --git a/app/src/main/java/com/breadwallet/presenter/activities/BreadActivity.java b/app/src/main/java/com/breadwallet/presenter/activities/BreadActivity.java index fafa3438b..6a0ce314c 100644 --- a/app/src/main/java/com/breadwallet/presenter/activities/BreadActivity.java +++ b/app/src/main/java/com/breadwallet/presenter/activities/BreadActivity.java @@ -368,17 +368,17 @@ public void updateUI() { BRExecutor.getInstance().forLightWeightBackgroundTasks().execute(() -> { Thread.currentThread().setName(Thread.currentThread().getName() + ":updateUI"); //sleep a little in order to make sure all the commits are finished (like SharePreferences commits) - String iso = BRSharedPrefs.getIso(BreadActivity.this); + String iso = BRSharedPrefs.getIsoSymbol(BreadActivity.this); //current amount in litoshis final BigDecimal amount = new BigDecimal(BRSharedPrefs.getCatchedBalance(BreadActivity.this)); //amount in LTC units - BigDecimal btcAmount = BRExchange.getBitcoinForSatoshis(BreadActivity.this, amount); + BigDecimal btcAmount = BRExchange.getLitecoinForLitoshis(BreadActivity.this, amount); final String formattedBTCAmount = BRCurrency.getFormattedCurrencyString(BreadActivity.this, "LTC", btcAmount); //amount in currency units - final BigDecimal curAmount = BRExchange.getAmountFromSatoshis(BreadActivity.this, iso, amount); + final BigDecimal curAmount = BRExchange.getAmountFromLitoshis(BreadActivity.this, iso, amount); final String formattedCurAmount = BRCurrency.getFormattedCurrencyString(BreadActivity.this, iso, curAmount); runOnUiThread(() -> { primaryPrice.setText(formattedBTCAmount); diff --git a/app/src/main/java/com/breadwallet/presenter/activities/LoginActivity.java b/app/src/main/java/com/breadwallet/presenter/activities/LoginActivity.java index ca174729c..045bac4bc 100644 --- a/app/src/main/java/com/breadwallet/presenter/activities/LoginActivity.java +++ b/app/src/main/java/com/breadwallet/presenter/activities/LoginActivity.java @@ -172,23 +172,10 @@ public void onCancel() { }, 500); setCurrentLtcPrice(); - - if (BuildConfig.VERSION_NAME == "v2.8.4") { - Snackbar.make(parentLayout, - R.string.release_notes, - Snackbar.LENGTH_INDEFINITE).setAction(R.string.Webview_dismiss, new View.OnClickListener() { - @Override - public void onClick(View view) { - - } - }) - .setActionTextColor(getResources().getColor(android.R.color.holo_red_light )) - .show(); - } } private void setCurrentLtcPrice() { - String iso = BRSharedPrefs.getIso(this); + String iso = BRSharedPrefs.getIsoSymbol(this); String formattedCurrency = null; CurrencyEntity currency = CurrencyDataSource.getInstance(this).getCurrencyByIso(iso); diff --git a/app/src/main/java/com/breadwallet/presenter/activities/intro/IntroActivity.java b/app/src/main/java/com/breadwallet/presenter/activities/intro/IntroActivity.java index ace0122f1..fb5886bd2 100644 --- a/app/src/main/java/com/breadwallet/presenter/activities/intro/IntroActivity.java +++ b/app/src/main/java/com/breadwallet/presenter/activities/intro/IntroActivity.java @@ -1,34 +1,25 @@ package com.breadwallet.presenter.activities.intro; -import android.app.AlertDialog; import android.app.Dialog; -import android.content.DialogInterface; import android.content.Intent; import android.graphics.Point; -import android.media.AudioAttributes; -import android.media.MediaPlayer; -import android.net.Uri; import android.os.Bundle; -import android.provider.MediaStore; import android.util.Log; -import android.view.MotionEvent; import android.view.View; import android.widget.Button; import android.widget.TextView; -import android.widget.Toast; import com.breadwallet.presenter.activities.AnnounceUpdatesViewActivity; import androidx.annotation.NonNull; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.breadwallet.entities.IntroLanguageResource; import com.breadwallet.tools.adapter.CountryLanguageAdapter; -import com.breadwallet.tools.listeners.RecyclerItemClickListener; +import com.breadwallet.tools.util.LocaleHelper; import com.google.android.material.snackbar.Snackbar; -import com.breadwallet.BuildConfig; +//import com.breadwallet.BuildConfig; import com.breadwallet.R; import com.breadwallet.presenter.activities.BreadActivity; -import com.breadwallet.presenter.activities.SetPinActivity; import com.breadwallet.presenter.activities.util.BRActivity; import com.breadwallet.tools.animation.BRAnimator; import com.breadwallet.tools.security.BRKeyStore; @@ -38,15 +29,10 @@ import com.breadwallet.tools.util.BRConstants; import com.breadwallet.tools.util.Utils; import com.breadwallet.wallet.BRWalletManager; +import com.google.android.play.core.ktx.BuildConfig; import com.platform.APIClient; - -import org.w3c.dom.Text; - -import java.io.File; -import java.io.IOException; import java.io.Serializable; import java.util.Objects; - import timber.log.Timber; public class IntroActivity extends BRActivity implements Serializable { @@ -55,8 +41,10 @@ public class IntroActivity extends BRActivity implements Serializable { public static IntroActivity introActivity; public static boolean appVisible = false; private static IntroActivity app; + public CountryLanguageAdapter countryLanguageAdapter; public RecyclerView listLangRecyclerView; public IntroLanguageResource introLanguageResource = new IntroLanguageResource(); + public static boolean isNewWallet = false; public static IntroActivity getApp() { return app; } @@ -80,7 +68,7 @@ protected void onCreate(Bundle savedInstanceState) { listLangRecyclerView = findViewById(R.id.language_list); View parentLayout = findViewById(android.R.id.content); LinearLayoutManager layoutManager = new LinearLayoutManager(this); - CountryLanguageAdapter countryLanguageAdapter = new CountryLanguageAdapter(this, introLanguageResource.loadResources()); + countryLanguageAdapter = new CountryLanguageAdapter(this, introLanguageResource.loadResources()); listLangRecyclerView.setAdapter(countryLanguageAdapter); listLangRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @@ -90,7 +78,6 @@ public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newStat if (newState == RecyclerView.SCROLL_STATE_IDLE) { int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition(); int lastVisibleItemPosition = layoutManager.findLastVisibleItemPosition(); - int centerPosition = (lastVisibleItemPosition - firstVisibleItemPosition) / 2 + firstVisibleItemPosition; if (centerPosition != RecyclerView.NO_POSITION) { countryLanguageAdapter.updateCenterPosition(centerPosition); @@ -158,10 +145,16 @@ private void showDialogForItem(String title) { btnYes.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - dialog.dismiss(); + if (LocaleHelper.Companion.getInstance().setLocaleIfNeeded(countryLanguageAdapter.selectedLang())) { + dialog.dismiss(); + recreate(); + }else { + dialog.dismiss(); + } } }); + btnNo.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -191,9 +184,10 @@ public void onClick(View v) { if (!BRAnimator.isClickAllowed()) return; BreadActivity bApp = BreadActivity.getApp(); if (bApp != null) bApp.finish(); - Intent intent = new Intent(IntroActivity.this, SetPinActivity.class); - startActivity(intent); - overridePendingTransition(R.anim.enter_from_right, R.anim.exit_to_left); + isNewWallet = true; + Intent intentEmailNewWallet = new Intent(IntroActivity.this, AnnounceUpdatesViewActivity.class); + intentEmailNewWallet.putExtra("isNewWallet", true); + startActivity(intentEmailNewWallet); } }); @@ -203,9 +197,10 @@ public void onClick(View v) { if (!BRAnimator.isClickAllowed()) return; BreadActivity bApp = BreadActivity.getApp(); if (bApp != null) bApp.finish(); - Intent intent = new Intent(IntroActivity.this, RecoverActivity.class); - startActivity(intent); - overridePendingTransition(R.anim.enter_from_right, R.anim.exit_to_left); + isNewWallet = false; + Intent intentEmailRecover = new Intent(IntroActivity.this, AnnounceUpdatesViewActivity.class); + intentEmailRecover.putExtra("isNewWallet", false); + startActivity(intentEmailRecover); } }); } diff --git a/app/src/main/java/com/breadwallet/presenter/activities/settings/DisplayCurrencyActivity.java b/app/src/main/java/com/breadwallet/presenter/activities/settings/DisplayCurrencyActivity.java index 3cbe551d5..3b8023823 100644 --- a/app/src/main/java/com/breadwallet/presenter/activities/settings/DisplayCurrencyActivity.java +++ b/app/src/main/java/com/breadwallet/presenter/activities/settings/DisplayCurrencyActivity.java @@ -116,10 +116,10 @@ public void onClick(View v) { private void updateExchangeRate() { //set the rate from the last saved - String iso = BRSharedPrefs.getIso(this); + String iso = BRSharedPrefs.getIsoSymbol(this); CurrencyEntity entity = CurrencyDataSource.getInstance(this).getCurrencyByIso(iso); if (entity != null) { - String finalExchangeRate = BRCurrency.getFormattedCurrencyString(DisplayCurrencyActivity.this, BRSharedPrefs.getIso(this), new BigDecimal(entity.rate)); + String finalExchangeRate = BRCurrency.getFormattedCurrencyString(DisplayCurrencyActivity.this, BRSharedPrefs.getIsoSymbol(this), new BigDecimal(entity.rate)); boolean bits = BRSharedPrefs.getCurrencyUnit(this) == BRConstants.CURRENT_UNIT_LITES; exchangeText.setText(BRCurrency.getFormattedCurrencyString(this, "LTC", new BigDecimal(bits ? 1000 : 1)) + " = " + finalExchangeRate); } diff --git a/app/src/main/java/com/breadwallet/presenter/activities/settings/FingerprintActivity.java b/app/src/main/java/com/breadwallet/presenter/activities/settings/FingerprintActivity.java index 794b9c0b0..33da87142 100644 --- a/app/src/main/java/com/breadwallet/presenter/activities/settings/FingerprintActivity.java +++ b/app/src/main/java/com/breadwallet/presenter/activities/settings/FingerprintActivity.java @@ -125,13 +125,13 @@ public void updateDrawState(TextPaint ds) { } private String getLimitText() { - String iso = BRSharedPrefs.getIso(this); + String iso = BRSharedPrefs.getIsoSymbol(this); //amount in satoshis BigDecimal satoshis = new BigDecimal(BRKeyStore.getSpendLimit(this)); //amount in BTC, mBTC or bits - BigDecimal amount = BRExchange.getAmountFromSatoshis(this, "LTC", satoshis); + BigDecimal amount = BRExchange.getAmountFromLitoshis(this, "LTC", satoshis); //amount in user preferred ISO (e.g. USD) - BigDecimal curAmount = BRExchange.getAmountFromSatoshis(this, iso, satoshis); + BigDecimal curAmount = BRExchange.getAmountFromLitoshis(this, iso, satoshis); //formatted string for the label return String.format(getString(R.string.TouchIdSettings_spendingLimit), BRCurrency.getFormattedCurrencyString(this, "LTC", amount), BRCurrency.getFormattedCurrencyString(this, iso, curAmount)); } diff --git a/app/src/main/java/com/breadwallet/presenter/activities/settings/SettingsActivity.java b/app/src/main/java/com/breadwallet/presenter/activities/settings/SettingsActivity.java index a5b2b0662..fba4f2b6d 100644 --- a/app/src/main/java/com/breadwallet/presenter/activities/settings/SettingsActivity.java +++ b/app/src/main/java/com/breadwallet/presenter/activities/settings/SettingsActivity.java @@ -175,7 +175,7 @@ public void onCancel() { }, false)); /*Display Currency*/ - items.add(new BRSettingsItem(getString(R.string.Settings_currency), BRSharedPrefs.getIso(this), v -> { + items.add(new BRSettingsItem(getString(R.string.Settings_currency), BRSharedPrefs.getIsoSymbol(this), v -> { Intent intent = new Intent(SettingsActivity.this, DisplayCurrencyActivity.class); startActivity(intent); overridePendingTransition(R.anim.enter_from_right, R.anim.exit_to_left); diff --git a/app/src/main/java/com/breadwallet/presenter/activities/settings/SpendLimitActivity.java b/app/src/main/java/com/breadwallet/presenter/activities/settings/SpendLimitActivity.java index 731a22d50..28f2cc28b 100644 --- a/app/src/main/java/com/breadwallet/presenter/activities/settings/SpendLimitActivity.java +++ b/app/src/main/java/com/breadwallet/presenter/activities/settings/SpendLimitActivity.java @@ -182,8 +182,8 @@ public View getView(int position, View convertView, @NonNull ViewGroup parent) { // get the TextView and then set the text (item name) and tag (item ID) values TextView textViewItem = convertView.findViewById(R.id.currency_item_text); Integer item = getItem(position); - BigDecimal curAmount = BRExchange.getAmountFromSatoshis(app, BRSharedPrefs.getIso(app), new BigDecimal(item)); - BigDecimal btcAmount = BRExchange.getBitcoinForSatoshis(app, new BigDecimal(item)); + BigDecimal curAmount = BRExchange.getAmountFromLitoshis(app, BRSharedPrefs.getIsoSymbol(app), new BigDecimal(item)); + BigDecimal btcAmount = BRExchange.getLitecoinForLitoshis(app, new BigDecimal(item)); String text = String.format(item == 0 ? app.getString(R.string.TouchIdSpendingLimit) : "%s (%s)", curAmount, btcAmount); textViewItem.setText(text); ImageView checkMark = convertView.findViewById(R.id.currency_checkmark); diff --git a/app/src/main/java/com/breadwallet/presenter/activities/settings/SyncBlockchainActivity.java b/app/src/main/java/com/breadwallet/presenter/activities/settings/SyncBlockchainActivity.java index 8c9fd4b96..941f5be62 100644 --- a/app/src/main/java/com/breadwallet/presenter/activities/settings/SyncBlockchainActivity.java +++ b/app/src/main/java/com/breadwallet/presenter/activities/settings/SyncBlockchainActivity.java @@ -40,7 +40,6 @@ public class SyncBlockchainActivity extends BRActivity { public static boolean appVisible = false; private static TextView syncPreferenceTextView; - private ImageButton fingerPrint; private static SyncBlockchainActivity app; public static SyncBlockchainActivity getApp() { @@ -74,12 +73,12 @@ protected void onCreate(Bundle savedInstanceState) { syncRadioGroup = (RadioGroup) findViewById(R.id.sync_radio_group); - ImageButton faq = (ImageButton) findViewById(R.id.faq_button); syncPreferenceTextView = (TextView) findViewById(R.id.sync_preferences); scanButton = (Button) findViewById(R.id.button_scan); lowPrivacyButton = (Button) findViewById(R.id.radio_low_privacy); semiPrivateButton = (Button) findViewById(R.id.radio_semi_private); anonymousButton = (Button) findViewById(R.id.radio_anonymous); + closeButton = (ImageButton) findViewById(R.id.close_button); lowPrivacyButton.setText(getString(R.string.radio_low_privacy)); semiPrivateButton.setText(getString(R.string.radio_semi_private)); @@ -139,8 +138,6 @@ public void onClick(BRDialogView brDialogView) { }, null, 0); } }); - - closeButton = (ImageButton) findViewById(R.id.close_button); closeButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { diff --git a/app/src/main/java/com/breadwallet/presenter/entities/PartnerNames.kt b/app/src/main/java/com/breadwallet/presenter/entities/PartnerNames.kt index c4e2c9eca..f01b6088b 100644 --- a/app/src/main/java/com/breadwallet/presenter/entities/PartnerNames.kt +++ b/app/src/main/java/com/breadwallet/presenter/entities/PartnerNames.kt @@ -5,6 +5,7 @@ enum class PartnerNames(val key: String) { BITREFILL("bitrefill"), INFURA("infura-api"), LITEWALLETOPS("litewallet-ops"), + OPSALL("litewallet-ops"), LITEWALLETSTART("litewallet-start"), PUSHER("pusher-instance-id"), PUSHERSTAGING("pusher-staging-instance-id"), diff --git a/app/src/main/java/com/breadwallet/presenter/entities/TransactionDataItem.kt b/app/src/main/java/com/breadwallet/presenter/entities/TransactionDataItem.kt new file mode 100644 index 000000000..54fa943c6 --- /dev/null +++ b/app/src/main/java/com/breadwallet/presenter/entities/TransactionDataItem.kt @@ -0,0 +1,92 @@ +package com.breadwallet.presenter.entities + +import com.platform.entities.TxMetaData + +///Refactored Transaction data item. Replaces TxItem +class TransactionDataItem { + + private var timeStamp = 0L; private var sentAmount = 0L; private var receivedAmount = 0L; + private var networkFee = 0L; private var opsFee = 0L; private var balanceAfterTransaction = 0L + private var toAddresses = arrayOf(); private var fromAddresses = arrayOf() + private var blockHeight = 0; private var transactionSize = 0 + private var isValidTransaction = false + private var transactionHash = ByteArray(0) + private var outputAmounts = LongArray(0) + private var transactionHashHexReversed: String? = null + private var metaData: TxMetaData? = null + private val tag: String = TransactionDataItem::class.java.name + + init { + this.timeStamp = timeStamp + this.sentAmount = sentAmount + this.receivedAmount = receivedAmount + this.networkFee = networkFee + this.opsFee = opsFee + this.balanceAfterTransaction = balanceAfterTransaction + this.toAddresses = toAddresses + this.fromAddresses = fromAddresses + this.blockHeight = blockHeight + this.transactionSize = transactionSize + this.isValidTransaction = isValidTransaction + this.transactionHash = transactionHash + this.outputAmounts = outputAmounts + this.transactionHashHexReversed = transactionHashHexReversed + this.metaData = metaData + } + + fun getTransactionBlockHeight(): Int { + return blockHeight + } + + fun getNetworkFee(): Long { + return networkFee + } + + fun getTransactionSize(): Int { + return transactionSize + } + + fun getFromAddresses(): Array { + return fromAddresses + } + + fun getTransactionHash(): ByteArray { + return transactionHash + } + + fun getTxHashHexReversed(): String? { + return transactionHashHexReversed + } + + fun getReceivedAmount(): Long { + return receivedAmount + } + + fun getSentAmount(): Long { + return sentAmount + } + + fun getTimeStamp(): Long { + return timeStamp + } + + fun getToAddresses(): Array { + return toAddresses + } + + fun getBalanceAfterTransaction(): Long { + return balanceAfterTransaction + } + + fun getOutputAmounts(): LongArray { + return outputAmounts + } + + fun isValidTransaction(): Boolean { + return isValidTransaction + } + + fun getTAG(): String { + return tag + } +} diff --git a/app/src/main/java/com/breadwallet/presenter/entities/TransactionItem.java b/app/src/main/java/com/breadwallet/presenter/entities/TransactionItem.java new file mode 100644 index 000000000..93994eacd --- /dev/null +++ b/app/src/main/java/com/breadwallet/presenter/entities/TransactionItem.java @@ -0,0 +1,36 @@ +package com.breadwallet.presenter.entities; + +public class TransactionItem { + public static final String TAG = TransactionItem.class.getName(); + + public byte[] serializedTx; + public String sendAddress; + public String opsAddress; + public long sendAmount; + public long opsFee; + //This variable was previously called -cn- which is too short to know what it means or does + public String certifiedName; + public boolean isAmountRequested; + public String comment; + + public TransactionItem(String sendAddress, String opsAddress, byte[] tx, long sendAmount, long opsFee, String theCertifiedName, boolean isAmountRequested) { + this.isAmountRequested = isAmountRequested; + this.serializedTx = tx; + this.sendAddress = sendAddress; + this.opsAddress = opsAddress; + this.sendAmount = sendAmount; + this.opsFee = opsFee; + this.certifiedName = theCertifiedName; + } + public TransactionItem(String sendAddress, String opsAddress, byte[] tx,long sendAmount, long opsFee, String theCertifiedName, boolean isAmountRequested, String comment) { + this.isAmountRequested = isAmountRequested; + this.serializedTx = tx; + this.sendAddress = sendAddress; + this.opsAddress = opsAddress; + this.sendAmount = sendAmount; + this.opsFee = opsFee; + this.certifiedName = theCertifiedName; + this.comment = comment; + } + +} diff --git a/app/src/main/java/com/breadwallet/presenter/entities/TxItem.java b/app/src/main/java/com/breadwallet/presenter/entities/TxItem.java index ca84b4bfc..8cac523a3 100644 --- a/app/src/main/java/com/breadwallet/presenter/entities/TxItem.java +++ b/app/src/main/java/com/breadwallet/presenter/entities/TxItem.java @@ -49,7 +49,6 @@ public int getBlockHeight() { public long getFee() { return fee; } - public int getTxSize() { return txSize; } diff --git a/app/src/main/java/com/breadwallet/presenter/fragments/DynamicDonationFragment.java b/app/src/main/java/com/breadwallet/presenter/fragments/DynamicDonationFragment.java index 0d5476400..a467fef3d 100644 --- a/app/src/main/java/com/breadwallet/presenter/fragments/DynamicDonationFragment.java +++ b/app/src/main/java/com/breadwallet/presenter/fragments/DynamicDonationFragment.java @@ -19,7 +19,8 @@ import com.breadwallet.R; import com.breadwallet.presenter.customviews.BRDialogView; -import com.breadwallet.presenter.entities.PaymentItem; +import com.breadwallet.presenter.entities.PartnerNames; +import com.breadwallet.presenter.entities.TransactionItem; import com.breadwallet.tools.manager.AnalyticsManager; import com.breadwallet.tools.manager.BRSharedPrefs; import com.breadwallet.tools.manager.FeeManager; @@ -27,6 +28,7 @@ import com.breadwallet.tools.util.BRConstants; import com.breadwallet.tools.util.BRCurrency; import com.breadwallet.tools.util.BRExchange; +import com.breadwallet.tools.util.Utils; import com.breadwallet.wallet.BRWalletManager; import java.math.BigDecimal; @@ -67,7 +69,7 @@ public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { - selectedIso = BRSharedPrefs.getIso(getContext()); + selectedIso = BRSharedPrefs.getIsoSymbol(getContext()); isLTCSwap = BRSharedPrefs.getPreferredLTC(getContext()); addressVal = view.findViewById(R.id.addressVal); @@ -153,11 +155,19 @@ public void onStopTrackingTouch(SeekBar seekBar) { private void sendDonation() { String memo = getString(R.string.Donate_toThe_LWTeam) + chosenAddress; - PaymentItem request = new PaymentItem(new String[]{chosenAddress}, null, mDonationAmount, null, false, memo); + TransactionItem request = new TransactionItem(chosenAddress, + null, + null, + mDonationAmount, + 0, + null, + false, + memo); + Bundle params = new Bundle(); - params.putString("DONATION_ACCOUNT", chosenAddress); - params.putLong("DONATION_AMOUNT", mDonationAmount); - params.putString("ADDRESS_SCHEME", "v2"); + params.putString("donation_address", chosenAddress); + params.putLong("donation_amount", mDonationAmount); + params.putString("address_scheme", "v2"); AnalyticsManager.logCustomEventWithParams(BRConstants._20200223_DD, params); BRSender.getInstance().sendTransaction(getContext(), request); } @@ -169,7 +179,7 @@ private void setFeeToRegular() { AnalyticsManager.logCustomEvent(BRConstants._20200301_DUDFPK); feeManager.resetFeeType(); - BRWalletManager.getInstance().setFeePerKb(feeManager.getFees().regular); + BRWalletManager.getInstance().setFeePerKb(feeManager.currentFees.regular); } private int diff() { @@ -201,12 +211,12 @@ private void updateDonationValues(long donationAmount) { } private String formatLtcAmount(BigDecimal amount) { - BigDecimal ltcAmount = BRExchange.getBitcoinForSatoshis(getContext(), amount); + BigDecimal ltcAmount = BRExchange.getLitecoinForLitoshis(getContext(), amount); return BRCurrency.getFormattedCurrencyString(getContext(), "LTC", ltcAmount); } private String formatIsoAmount(BigDecimal amount) { - BigDecimal fiatAmount = BRExchange.getAmountFromSatoshis(getContext(), selectedIso, amount); + BigDecimal fiatAmount = BRExchange.getAmountFromLitoshis(getContext(), selectedIso, amount); return BRCurrency.getFormattedCurrencyString(getContext(), selectedIso, fiatAmount); } diff --git a/app/src/main/java/com/breadwallet/presenter/fragments/FragmentFingerprint.java b/app/src/main/java/com/breadwallet/presenter/fragments/FragmentFingerprint.java index d1d215707..f731ee1d4 100644 --- a/app/src/main/java/com/breadwallet/presenter/fragments/FragmentFingerprint.java +++ b/app/src/main/java/com/breadwallet/presenter/fragments/FragmentFingerprint.java @@ -110,7 +110,6 @@ public void onClick(View view) { public void onClick(View view) { if (!BRAnimator.isClickAllowed()) return; closeMe(); - goToBackup(); } }); @@ -137,8 +136,6 @@ public void onGlobalLayout() { @Override public void onStop() { super.onStop(); -// animateBackgroundDim(true); -// animateSignalSlide(true); if (!authSucceeded) completion.onCancel(); } @@ -156,25 +153,6 @@ public void onPause() { mFingerprintUiHelper.stopListening(); } - /** - * Switches to backup (password) screen. This either can happen when fingerprint is not - * available or the user chooses to use the password authentication method by pressing the - * button. This can also happen when the user had too many fingerprint attempts. - */ - private void goToBackup() { - final Context app = getContext(); - closeMe(); - - if (mFingerprintUiHelper != null) - mFingerprintUiHelper.stopListening(); - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - AuthManager.getInstance().authPrompt(app, customTitle, customMessage, true, false, completion); - } - }, ANIMATION_DURATION + 100); - } - @Override public void onAuthenticated() { final Activity app = getActivity(); @@ -194,7 +172,10 @@ public void setCompletion(BRAuthCompletion completion) { @Override public void onError() { - goToBackup(); + String authError = "auth_prompt_failed"; + Bundle params = new Bundle(); + params.putString("error_message",authError); + AnalyticsManager.logCustomEventWithParams(BRConstants._20200112_ERR, params); } private void animateBackgroundDim(boolean reverse) { diff --git a/app/src/main/java/com/breadwallet/presenter/fragments/FragmentPin.java b/app/src/main/java/com/breadwallet/presenter/fragments/FragmentPin.java index e091ec74f..527f736ea 100644 --- a/app/src/main/java/com/breadwallet/presenter/fragments/FragmentPin.java +++ b/app/src/main/java/com/breadwallet/presenter/fragments/FragmentPin.java @@ -41,8 +41,6 @@ public class FragmentPin extends Fragment { private View dot6; private StringBuilder pin = new StringBuilder(); private int pinLimit = 6; -// private boolean pinInsertAllowed; - private TextView title; private TextView message; private RelativeLayout dialogLayout; @@ -204,22 +202,6 @@ public void run() { @Override public void onStop() { super.onStop(); -// keyboard.animate() -// .translationY(1000) -// .withLayer(); -// dialogLayout.animate() -// .scaleY(0) -// .scaleX(0).alpha(0); -// mainLayout.animate().alpha(0); -// if (!authSucceeded) -// completion.onCancel(); -// new Handler().postDelayed(new Runnable() { -// @Override -// public void run() { -// if (getActivity() != null) -// getActivity().getFragmentManager().beginTransaction().remove(FragmentPin.this).commit(); -// } -// }, 1000); } public void setCompletion(BRAuthCompletion completion) { diff --git a/app/src/main/java/com/breadwallet/presenter/fragments/FragmentRequestAmount.java b/app/src/main/java/com/breadwallet/presenter/fragments/FragmentRequestAmount.java index 3a09a41b8..8a0625fd2 100644 --- a/app/src/main/java/com/breadwallet/presenter/fragments/FragmentRequestAmount.java +++ b/app/src/main/java/com/breadwallet/presenter/fragments/FragmentRequestAmount.java @@ -109,7 +109,7 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa signalLayout.removeView(request); showCurrencyList(false); - selectedIso = BRSharedPrefs.getPreferredLTC(getContext()) ? "LTC" : BRSharedPrefs.getIso(getContext()); + selectedIso = BRSharedPrefs.getPreferredLTC(getContext()) ? "LTC" : BRSharedPrefs.getIsoSymbol(getContext()); signalLayout.setOnClickListener(v -> { // removeCurrencySelector(); @@ -150,7 +150,7 @@ private void setListeners() { String iso = selectedIso; String strAmount = amountEdit.getText().toString(); BigDecimal bigAmount = new BigDecimal((Utils.isNullOrEmpty(strAmount) || strAmount.equalsIgnoreCase(".")) ? "0" : strAmount); - long amount = BRExchange.getSatoshisFromAmount(getActivity(), iso, bigAmount).longValue(); + long amount = BRExchange.getLitoshisFromAmount(getActivity(), iso, bigAmount).longValue(); String bitcoinUri = Utils.createBitcoinUrl(receiveAddress, amount, null, null, null); QRUtils.share("mailto:", getActivity(), bitcoinUri); @@ -164,7 +164,7 @@ private void setListeners() { // String iso = selectedIso; // String strAmount = amountEdit.getText().toString(); // BigDecimal bigAmount = new BigDecimal((Utils.isNullOrEmpty(strAmount) || strAmount.equalsIgnoreCase(".")) ? "0" : strAmount); -// long amount = BRExchange.getSatoshisFromAmount(getActivity(), iso, bigAmount).longValue(); +// long amount = BRExchange.getLitoshisFromAmount(getActivity(), iso, bigAmount).longValue(); // String bitcoinUri = Utils.createBitcoinUrl(receiveAddress, amount, null, null, null); // QRUtils.share("sms:", getActivity(), bitcoinUri); // } @@ -188,10 +188,10 @@ private void setListeners() { }); isoButton.setOnClickListener(v -> { - if (selectedIso.equalsIgnoreCase(BRSharedPrefs.getIso(getContext()))) { + if (selectedIso.equalsIgnoreCase(BRSharedPrefs.getIsoSymbol(getContext()))) { selectedIso = "LTC"; } else { - selectedIso = BRSharedPrefs.getIso(getContext()); + selectedIso = BRSharedPrefs.getIsoSymbol(getContext()); } boolean generated = generateQrImage(receiveAddress, amountEdit.getText().toString(), selectedIso); if (!generated) @@ -334,7 +334,7 @@ private boolean generateQrImage(String address, String strAmount, String iso) { String amountArg = ""; if (strAmount != null && !strAmount.isEmpty()) { BigDecimal bigAmount = new BigDecimal((Utils.isNullOrEmpty(strAmount) || strAmount.equalsIgnoreCase(".")) ? "0" : strAmount); - long amount = BRExchange.getSatoshisFromAmount(getActivity(), iso, bigAmount).longValue(); + long amount = BRExchange.getLitoshisFromAmount(getActivity(), iso, bigAmount).longValue(); String am = new BigDecimal(amount).divide(new BigDecimal(100000000), 8, BRConstants.ROUNDING_MODE).toPlainString(); amountArg = "?amount=" + am; } diff --git a/app/src/main/java/com/breadwallet/presenter/fragments/FragmentSend.kt b/app/src/main/java/com/breadwallet/presenter/fragments/FragmentSend.kt index 77107f361..081971e7e 100644 --- a/app/src/main/java/com/breadwallet/presenter/fragments/FragmentSend.kt +++ b/app/src/main/java/com/breadwallet/presenter/fragments/FragmentSend.kt @@ -16,16 +16,15 @@ import androidx.annotation.ColorRes import androidx.annotation.StringRes import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintSet -import androidx.core.text.trimmedLength import androidx.fragment.app.Fragment -import androidx.lifecycle.lifecycleScope import androidx.transition.AutoTransition import androidx.transition.Transition import androidx.transition.TransitionManager import com.breadwallet.R import com.breadwallet.presenter.customviews.BRKeyboard import com.breadwallet.presenter.customviews.BRLinearLayoutWithCaret -import com.breadwallet.presenter.entities.PaymentItem +import com.breadwallet.presenter.entities.PartnerNames +import com.breadwallet.presenter.entities.TransactionItem import com.breadwallet.tools.animation.BRAnimator import com.breadwallet.tools.animation.BRDialog import com.breadwallet.tools.animation.SlideDetector @@ -36,46 +35,28 @@ import com.breadwallet.tools.security.BitcoinUrlHandler import com.breadwallet.tools.threads.BRExecutor import com.breadwallet.tools.util.* import com.breadwallet.wallet.BRWalletManager -import com.github.razir.progressbutton.bindProgressButton -import com.github.razir.progressbutton.hideProgress -import com.github.razir.progressbutton.showProgress +import com.google.common.math.Quantiles.scale import timber.log.Timber import java.math.BigDecimal +import java.math.RoundingMode import java.util.regex.Pattern class FragmentSend : Fragment() { - private lateinit var backgroundLayout: ScrollView - private lateinit var signalLayout: LinearLayout - private lateinit var keyboard: BRKeyboard - private lateinit var addressEdit: EditText - private lateinit var scan: Button - private lateinit var paste: Button - private lateinit var send: Button - private lateinit var donate: Button - private lateinit var commentEdit: EditText - private lateinit var amountBuilder: StringBuilder - private lateinit var isoText: TextView - private lateinit var amountEdit: EditText - private lateinit var balanceText: TextView - private lateinit var feeText: TextView + private lateinit var signalLayout: LinearLayout; private lateinit var keyboardLayout: LinearLayout + private lateinit var scanButton: Button; private lateinit var pasteButton: Button; private lateinit var sendButton: Button; private lateinit var donateButton: Button; private lateinit var isoCurrencySymbolButton: Button + private lateinit var commentEdit: EditText; private lateinit var addressEdit: EditText;private lateinit var amountEdit: EditText + private lateinit var isoCurrencySymbolText: TextView; private lateinit var balanceText: TextView; private lateinit var feeText: TextView; private lateinit var feeDescription: TextView; private lateinit var warningText: TextView + private var amountLabelOn = true; private var ignoreCleanup = false; private var feeButtonsShown = false private lateinit var edit: ImageView - private var curBalance: Long = 0 - private var selectedIso: String? = null - private lateinit var isoButton: Button + private var currentBalance: Long = 0 private var keyboardIndex = 0 - private lateinit var keyboardLayout: LinearLayout - private lateinit var close: ImageButton + private lateinit var keyboard: BRKeyboard + private lateinit var closeButton: ImageButton private lateinit var amountLayout: ConstraintLayout private lateinit var feeLayout: BRLinearLayoutWithCaret - private var feeButtonsShown = false - private lateinit var feeDescription: TextView - private lateinit var warningText: TextView - private var amountLabelOn = true - private var ignoreCleanup = false - - private lateinit var udDomainEdit: EditText - private lateinit var udLookupButton: Button - + private var selectedIsoCurrencySymbol: String? = null + private lateinit var backgroundLayout: ScrollView + private lateinit var amountBuilder: StringBuilder override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -87,36 +68,39 @@ class FragmentSend : Fragment() { keyboard = rootView.findViewById(R.id.keyboard) as BRKeyboard keyboard.setBRButtonBackgroundResId(R.drawable.keyboard_white_button) keyboard.setBRKeyboardColor(R.color.white) - isoText = rootView.findViewById(R.id.iso_text) as TextView + isoCurrencySymbolText = rootView.findViewById(R.id.iso_text) as TextView addressEdit = rootView.findViewById(R.id.address_edit) as EditText - scan = rootView.findViewById(R.id.scan) as Button - paste = rootView.findViewById(R.id.paste_button) as Button - - udDomainEdit = rootView.findViewById(R.id.ud_address_edit) - udLookupButton = rootView.findViewById(R.id.ud_lookup_button) + scanButton = rootView.findViewById(R.id.scan) as Button + pasteButton = rootView.findViewById(R.id.paste_button) as Button - send = rootView.findViewById(R.id.send_button) as Button - donate = rootView.findViewById(R.id.donate_button) as Button + sendButton = rootView.findViewById(R.id.send_button) as Button + donateButton = rootView.findViewById(R.id.donate_button) as Button commentEdit = rootView.findViewById(R.id.comment_edit) as EditText amountEdit = rootView.findViewById(R.id.amount_edit) as EditText balanceText = rootView.findViewById(R.id.balance_text) as TextView feeText = rootView.findViewById(R.id.fee_text) as TextView edit = rootView.findViewById(R.id.edit) as ImageView - isoButton = rootView.findViewById(R.id.iso_button) as Button + isoCurrencySymbolButton = rootView.findViewById(R.id.iso_button) as Button keyboardLayout = rootView.findViewById(R.id.keyboard_layout) as LinearLayout amountLayout = rootView.findViewById(R.id.amount_layout) as ConstraintLayout feeLayout = rootView.findViewById(R.id.fee_buttons_layout) as BRLinearLayoutWithCaret feeDescription = rootView.findViewById(R.id.fee_description) as TextView warningText = rootView.findViewById(R.id.warning_text) as TextView - close = rootView.findViewById(R.id.close_button) as ImageButton - selectedIso = - if (BRSharedPrefs.getPreferredLTC(context)) "LTC" else BRSharedPrefs.getIso(context) + closeButton = rootView.findViewById(R.id.close_button) as ImageButton + selectedIsoCurrencySymbol = + if (BRSharedPrefs.getPreferredLTC(context)) "LTC" else BRSharedPrefs.getIsoSymbol(context) amountBuilder = StringBuilder(0) setListeners() - isoText.text = getString(R.string.Send_amountLabel) - isoText.textSize = 18f - isoText.setTextColor(requireContext().getColor(R.color.light_gray)) - isoText.requestLayout() + + /// Setup Currency Button that switches between LTC and the preferred fiat (e.g.; "USD") + isoCurrencySymbolText.text = getString(R.string.Send_amountLabel) + isoCurrencySymbolText.textSize = 18f + isoCurrencySymbolText.setTextColor(requireContext().getColor(R.color.light_gray)) + isoCurrencySymbolText.requestLayout() + + /// Setup Fees Description + feeText.text = "" + signalLayout.setOnTouchListener(SlideDetector(signalLayout) { animateClose() }) AnalyticsManager.logCustomEvent(BRConstants._20191105_VSC) setupFeesSelector(rootView) @@ -128,35 +112,32 @@ class FragmentSend : Fragment() { keyboardIndex = signalLayout.indexOfChild(keyboardLayout) // TODO: all views are using the layout of this button. Views should be refactored without it // Hiding until layouts are built. - val faq = rootView.findViewById(R.id.faq_button) as ImageButton showKeyboard(false) signalLayout.layoutTransition = BRAnimator.getDefaultTransition() - return rootView } override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated(savedInstanceState) - bindProgressButton(udLookupButton) } private fun setupFeesSelector(rootView: View) { val feesSegment = rootView.findViewById(R.id.fees_segment) - feesSegment.setOnCheckedChangeListener { _, checkedId -> onFeeTypeSelected(checkedId) } + feesSegment.setOnCheckedChangeListener { _, checkedTypeId -> onFeeTypeSelected(checkedTypeId) } onFeeTypeSelected(R.id.regular_fee_but) } - private fun onFeeTypeSelected(checkedId: Int) { + private fun onFeeTypeSelected(checkedTypeId: Int) { val feeManager = FeeManager.getInstance() - when (checkedId) { + when (checkedTypeId) { R.id.regular_fee_but -> { feeManager.setFeeType(FeeManager.REGULAR) - BRWalletManager.getInstance().setFeePerKb(feeManager.fees.regular) + BRWalletManager.getInstance().setFeePerKb(feeManager.currentFees.regular) setFeeInformation(R.string.FeeSelector_regularTime, 0, 0, View.GONE) } R.id.economy_fee_but -> { feeManager.setFeeType(FeeManager.ECONOMY) - BRWalletManager.getInstance().setFeePerKb(feeManager.fees.economy) + BRWalletManager.getInstance().setFeePerKb(feeManager.currentFees.economy) setFeeInformation( R.string.FeeSelector_economyTime, R.string.FeeSelector_economyWarning, @@ -166,7 +147,7 @@ class FragmentSend : Fragment() { } R.id.luxury_fee_but -> { feeManager.setFeeType(FeeManager.LUXURY) - BRWalletManager.getInstance().setFeePerKb(feeManager.fees.luxury) + BRWalletManager.getInstance().setFeePerKb(feeManager.currentFees.luxury) setFeeInformation( R.string.FeeSelector_luxuryTime, R.string.FeeSelector_luxuryMessage, @@ -207,9 +188,9 @@ class FragmentSend : Fragment() { balanceText.visibility = View.VISIBLE feeText.visibility = View.VISIBLE edit.visibility = View.VISIBLE - isoText.setTextColor(requireContext().getColor(R.color.almost_black)) - isoText.text = BRCurrency.getSymbolByIso(activity, selectedIso) - isoText.textSize = 28f + isoCurrencySymbolText.setTextColor(requireContext().getColor(R.color.almost_black)) + isoCurrencySymbolText.text = BRCurrency.getSymbolByIso(activity, selectedIsoCurrencySymbol) + isoCurrencySymbolText.textSize = 28f val scaleX = amountEdit.scaleX amountEdit.scaleX = 0f val tr = AutoTransition() @@ -237,7 +218,7 @@ class FragmentSend : Fragment() { set.connect( balanceText.id, ConstraintSet.TOP, - isoText.id, + isoCurrencySymbolText.id, ConstraintSet.BOTTOM, px4, ) @@ -256,20 +237,22 @@ class FragmentSend : Fragment() { px4, ) set.connect( - isoText.id, + isoCurrencySymbolText.id, ConstraintSet.TOP, ConstraintSet.PARENT_ID, ConstraintSet.TOP, px4, ) - set.connect(isoText.id, ConstraintSet.BOTTOM, -1, ConstraintSet.TOP, -1) + set.connect(isoCurrencySymbolText.id, ConstraintSet.BOTTOM, -1, ConstraintSet.TOP, -1) set.applyTo(amountLayout) } } // needed to fix the overlap bug commentEdit.setOnKeyListener( + View.OnKeyListener { v, keyCode, event -> + if (event.action == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_ENTER) { amountLayout.requestLayout() return@OnKeyListener true @@ -277,7 +260,7 @@ class FragmentSend : Fragment() { false }, ) - paste.setOnClickListener( + pasteButton.setOnClickListener( View.OnClickListener { if (!BRAnimator.isClickAllowed()) return@OnClickListener val bitcoinUrl = BRClipboardManager.getClipboard(activity) @@ -344,16 +327,16 @@ class FragmentSend : Fragment() { } }, ) - isoButton.setOnClickListener { - selectedIso = - if (selectedIso.equals(BRSharedPrefs.getIso(context), ignoreCase = true)) { + isoCurrencySymbolButton.setOnClickListener { + selectedIsoCurrencySymbol = + if (selectedIsoCurrencySymbol.equals(BRSharedPrefs.getIsoSymbol(context), ignoreCase = true)) { "LTC" } else { - BRSharedPrefs.getIso(context) + BRSharedPrefs.getIsoSymbol(context) } updateText() } - scan.setOnClickListener( + scanButton.setOnClickListener( View.OnClickListener { if (!BRAnimator.isClickAllowed()) return@OnClickListener saveMetaData() @@ -361,78 +344,21 @@ class FragmentSend : Fragment() { }, ) - udLookupButton.setOnClickListener { - // Disable the button until the domain string is at least 4 chars long (e.g a.zil) - if (udDomainEdit.text.trimmedLength() < 4) return@setOnClickListener - lifecycleScope.executeAsyncTask( - onPreExecute = { - udLookupButton.showProgress { - buttonText = null - progressColorRes = R.color.litecoin_litewallet_blue - } - udLookupButton.isEnabled = false - addressEdit.text = null - AnalyticsManager.logCustomEventWithParams( - BRConstants._20201121_SIL, - Bundle().apply { - putLong( - BRConstants.START_TIME, - System.currentTimeMillis(), - ) - }, - ) - }, - doInBackground = { UDResolution().resolve(udDomainEdit.text.trim().toString()) }, - onPostExecute = { - if (it.error == null) { - AnalyticsManager.logCustomEventWithParams( - BRConstants._20201121_DRIA, - Bundle().apply { - putLong( - BRConstants.SUCCESS_TIME, - System.currentTimeMillis(), - ) - }, - ) - addressEdit.setText(it.address) - BRAnimator.showBreadSignal( - requireActivity(), - getString(R.string.Send_UnstoppableDomains_domainResolved), - null, - R.drawable.ic_check_mark_white, - null, - ) - } else { - AnalyticsManager.logCustomEventWithParams( - BRConstants._20201121_FRIA, - Bundle().apply { - putLong(BRConstants.FAILURE_TIME, System.currentTimeMillis()) - putString(BRConstants.ERROR, it.error.localizedMessage) - }, - ) - Timber.d(it.error) - } - udLookupButton.isEnabled = true - udLookupButton.hideProgress(R.string.Send_UnstoppableDomains_lookup) - }, - ) - } - - send.setOnClickListener( + sendButton.setOnClickListener( View.OnClickListener { if (!BRAnimator.isClickAllowed()) { return@OnClickListener } var allFilled = true - val address = addressEdit.text.toString() + val sendAddress = addressEdit.text.toString() val amountStr = amountBuilder.toString() - val iso = selectedIso + val iso = selectedIsoCurrencySymbol val comment = commentEdit.text.toString() // get amount in satoshis from any isos val bigAmount = BigDecimal(if (Utils.isNullOrEmpty(amountStr)) "0" else amountStr) - val satoshiAmount = BRExchange.getSatoshisFromAmount(activity, iso, bigAmount) - if (address.isEmpty() || !BRWalletManager.validateAddress(address)) { + val litoshiAmount = BRExchange.getLitoshisFromAmount(activity, iso, bigAmount) + if (sendAddress.isEmpty() || !BRWalletManager.validateAddress(sendAddress)) { allFilled = false SpringAnimator.failShakeAnimation(activity, addressEdit) } @@ -440,20 +366,21 @@ class FragmentSend : Fragment() { allFilled = false SpringAnimator.failShakeAnimation(activity, amountEdit) } - if (satoshiAmount.toLong() > BRWalletManager.getInstance().getBalance(activity)) { + if (litoshiAmount.toLong() > BRWalletManager.getInstance().getBalance(activity)) { SpringAnimator.failShakeAnimation(activity, balanceText) SpringAnimator.failShakeAnimation(activity, feeText) } if (allFilled) { BRSender.getInstance().sendTransaction( context, - PaymentItem( - arrayOf(address), + TransactionItem(sendAddress, + Utils.fetchPartnerKey(context, PartnerNames.LITEWALLETOPS), null, - satoshiAmount.toLong(), + litoshiAmount.toLong(), + Utils.tieredOpsFee(context, litoshiAmount.toLong()), null, false, - comment, + comment ), ) AnalyticsManager.logCustomEvent(BRConstants._20191105_DSL) @@ -461,7 +388,7 @@ class FragmentSend : Fragment() { } }, ) - donate.setOnClickListener( + donateButton.setOnClickListener( View.OnClickListener { if (!BRAnimator.isClickAllowed()) { return@OnClickListener @@ -475,10 +402,11 @@ class FragmentSend : Fragment() { animateClose() }, ) - close.setOnClickListener { + closeButton.setOnClickListener { animateClose() } addressEdit.setOnEditorActionListener { _, actionId, event -> + showKeyboard(false) if (event != null && event.keyCode == KeyEvent.KEYCODE_ENTER || actionId == EditorInfo.IME_ACTION_DONE || actionId == EditorInfo.IME_ACTION_NEXT) { Utils.hideKeyboard(activity) Handler().postDelayed({ showKeyboard(true) }, 500) @@ -556,7 +484,7 @@ class FragmentSend : Fragment() { super.onPause() Utils.hideKeyboard(activity) if (!ignoreCleanup) { - savedIso = null + savedIsoCurrencySymbol = null savedAmount = null savedMemo = null } @@ -581,14 +509,14 @@ class FragmentSend : Fragment() { } private fun handleDigitClick(dig: Int) { - val currAmount = amountBuilder.toString() - val iso = selectedIso - if (BigDecimal(currAmount + dig.toString()).toDouble() + val currentAmount = amountBuilder.toString() + val iso = selectedIsoCurrencySymbol + if (BigDecimal(currentAmount + dig.toString()).toDouble() <= BRExchange.getMaxAmount(activity, iso).toDouble() ) { // do not insert 0 if the balance is 0 now - if (currAmount.equals("0", ignoreCase = true)) amountBuilder = StringBuilder("") - if (currAmount.contains(".") && currAmount.length - currAmount.indexOf(".") > + if (currentAmount.equals("0", ignoreCase = true)) amountBuilder = StringBuilder("") + if (currentAmount.contains(".") && currentAmount.length - currentAmount.indexOf(".") > BRCurrency.getMaxDecimalPlaces( iso, ) @@ -601,110 +529,96 @@ class FragmentSend : Fragment() { } private fun handleSeparatorClick() { - val currAmount = amountBuilder.toString() - if (currAmount.contains(".") || BRCurrency.getMaxDecimalPlaces(selectedIso) == 0) return + val currentAmount = amountBuilder.toString() + if (currentAmount.contains(".") || BRCurrency.getMaxDecimalPlaces(selectedIsoCurrencySymbol) == 0) return amountBuilder.append(".") updateText() } private fun handleDeleteClick() { - val currAmount = amountBuilder.toString() - if (currAmount.isNotEmpty()) { - amountBuilder.deleteCharAt(currAmount.length - 1) + val currentAmount = amountBuilder.toString() + if (currentAmount.isNotEmpty()) { + amountBuilder.deleteCharAt(currentAmount.length - 1) updateText() } } private fun updateText() { if (activity == null) return - val tmpAmount = amountBuilder.toString() + var tempDoubleAmountValue = 0.0 + if (amountBuilder.toString() != "" && amountBuilder.toString() != "." ) { + tempDoubleAmountValue = amountBuilder.toString().toDouble() + } + val scaleValue = 4 setAmount() - val iso = selectedIso - val currencySymbol = BRCurrency.getSymbolByIso(activity, selectedIso) - curBalance = BRWalletManager.getInstance().getBalance(activity) - if (!amountLabelOn) isoText.text = currencySymbol - isoButton.text = - String.format( - "%s(%s)", - BRCurrency.getCurrencyName(activity, selectedIso), - currencySymbol, - ) - // Balance depending on ISO - val satoshis = - if (Utils.isNullOrEmpty(tmpAmount) || - tmpAmount.equals( - ".", - ignoreCase = true, - ) - ) { - 0 - } else if (selectedIso.equals("btc", ignoreCase = true)) { - BRExchange.getSatoshisForBitcoin( - activity, - BigDecimal(tmpAmount), - ).toLong() + + // Fetch/Set Current ISOSymbol + val selectedISOSymbol = selectedIsoCurrencySymbol + val currencySymbol = BRCurrency.getSymbolByIso(activity, selectedIsoCurrencySymbol) + if (!amountLabelOn) isoCurrencySymbolText.text = currencySymbol + isoCurrencySymbolButton.text = String.format("%s(%s)", + BRCurrency.getCurrencyName(activity, selectedIsoCurrencySymbol), + currencySymbol) + + // Balance depending on ISOSymbol + currentBalance = BRWalletManager.getInstance().getBalance(activity) + val balanceForISOSymbol = BRExchange.getAmountFromLitoshis(activity, selectedISOSymbol, BigDecimal(currentBalance)) + val formattedBalance = BRCurrency.getFormattedCurrencyString(activity, selectedISOSymbol, balanceForISOSymbol) + + // Current amount depending on ISOSymbol + val currentAmountInLitoshis = + if (selectedIsoCurrencySymbol.equals("LTC", ignoreCase = true)) { + BRExchange.convertltcsToLitoshis(tempDoubleAmountValue).toLong() } else { - BRExchange.getSatoshisFromAmount( - activity, - selectedIso, - BigDecimal(tmpAmount), - ).toLong() - } - val balanceForISO = BRExchange.getAmountFromSatoshis(activity, iso, BigDecimal(curBalance)) - Timber.d("timber: updateText: balanceForISO: %s", balanceForISO) - - // formattedBalance - val formattedBalance = BRCurrency.getFormattedCurrencyString(activity, iso, balanceForISO) - // Balance depending on ISO - var fee: Long - if (satoshis == 0L) { - fee = 0 - } else { - fee = BRWalletManager.getInstance().feeForTransactionAmount(satoshis).toLong() - if (fee == 0L) { - Timber.i("timber: updateText: fee is 0, trying the estimate") - fee = - BRWalletManager.getInstance() - .feeForTransaction(addressEdit.text.toString(), satoshis).toLong() + BRExchange.getLitoshisFromAmount(activity,selectedIsoCurrencySymbol,BigDecimal(tempDoubleAmountValue)).toLong() } - } - val feeForISO = - BRExchange.getAmountFromSatoshis( - activity, - iso, - BigDecimal(if (curBalance == 0L) 0 else fee), - ) - Timber.d("timber: updateText: feeForISO: %s", feeForISO) - // formattedBalance - val aproxFee = BRCurrency.getFormattedCurrencyString(activity, iso, feeForISO) - Timber.d("timber: updateText: aproxFee: %s", aproxFee) - if (BigDecimal( - if (tmpAmount.isEmpty() || - tmpAmount.equals( - ".", - ignoreCase = true, - ) - ) { - "0" - } else { - tmpAmount - }, - ).toDouble() > balanceForISO.toDouble() - ) { + Timber.d("timber: updateText: currentAmountInLitoshis %d",currentAmountInLitoshis) + + // Network Fee depending on ISOSymbol + var networkFee = if(currentAmountInLitoshis > 0) { BRWalletManager.getInstance().feeForTransactionAmount(currentAmountInLitoshis) } + else { 0 } //Amount is zero so network fee is also zero + val networkFeeForISOSymbol = + BRExchange.getAmountFromLitoshis(activity,selectedISOSymbol, BigDecimal(networkFee)).setScale(scaleValue, RoundingMode.HALF_UP) + val formattedNetworkFee = BRCurrency.getFormattedCurrencyString(activity, selectedISOSymbol, networkFeeForISOSymbol) + + // Service Fee depending on ISOSymbol + var serviceFee = Utils.tieredOpsFee(activity, currentAmountInLitoshis) + val serviceFeeForISOSymbol = + BRExchange.getAmountFromLitoshis(activity,selectedISOSymbol,BigDecimal(serviceFee)).setScale(scaleValue, RoundingMode.HALF_UP) + val formattedServiceFee = BRCurrency.getFormattedCurrencyString(activity, selectedISOSymbol, serviceFeeForISOSymbol) + + // Total Fees depending on ISOSymbol + val totalFees = networkFee + serviceFee + val totalFeeForISOSymbol = + BRExchange.getAmountFromLitoshis( activity,selectedISOSymbol,BigDecimal(totalFees)).setScale(scaleValue, RoundingMode.HALF_UP) + val formattedTotalFees = BRCurrency.getFormattedCurrencyString(activity, selectedISOSymbol, totalFeeForISOSymbol) + + // Update UI with alert red when over balance + if (BigDecimal(currentAmountInLitoshis).toDouble() > currentBalance.toDouble()) { balanceText.setTextColor(requireContext().getColor(R.color.warning_color)) feeText.setTextColor(requireContext().getColor(R.color.warning_color)) amountEdit.setTextColor(requireContext().getColor(R.color.warning_color)) - if (!amountLabelOn) isoText.setTextColor(requireContext().getColor(R.color.warning_color)) - } else { + if (!amountLabelOn) isoCurrencySymbolText.setTextColor(requireContext().getColor(R.color.warning_color)) + } + else { balanceText.setTextColor(requireContext().getColor(R.color.light_gray)) feeText.setTextColor(requireContext().getColor(R.color.light_gray)) amountEdit.setTextColor(requireContext().getColor(R.color.almost_black)) - if (!amountLabelOn) isoText.setTextColor(requireContext().getColor(R.color.almost_black)) + if (!amountLabelOn) isoCurrencySymbolText.setTextColor(requireContext().getColor(R.color.almost_black)) } + balanceText.text = getString(R.string.Send_balance, formattedBalance) - feeText.text = String.format(getString(R.string.Send_fee), aproxFee) - donate.text = getString(R.string.Donate_title, currencySymbol) - donate.isEnabled = curBalance >= BRConstants.DONATION_AMOUNT * 2 + feeText.text = String.format("(%s + %s): %s + %s = %s", + getString(R.string.Network_feeLabel), + getString(R.string.Fees_Service), + formattedNetworkFee, + formattedServiceFee, + formattedTotalFees) + //(Network + Service): $0.01 + $1.37 = $1.38 + donateButton.text = getString(R.string.Donate_title, currencySymbol) + + ///Added another check. User must have sent once already before donating + donateButton.isEnabled = currentBalance >= BRConstants.DONATION_AMOUNT * 2 && (TxManager.getInstance().adapter.items.size > 1) amountLayout.requestLayout() } @@ -717,11 +631,11 @@ class FragmentSend : Fragment() { commentEdit.setText(obj.message) } if (obj.amount != null) { - val iso = selectedIso + val iso = selectedIsoCurrencySymbol val satoshiAmount = BigDecimal(obj.amount).multiply(BigDecimal(100000000)) amountBuilder = StringBuilder( - BRExchange.getAmountFromSatoshis(activity, iso, satoshiAmount).toPlainString(), + BRExchange.getAmountFromLitoshis(activity, iso, satoshiAmount).toPlainString(), ) updateText() } @@ -748,6 +662,7 @@ class FragmentSend : Fragment() { newAmount.append(",") } } + amountEdit.setText(newAmount.toString()) } @@ -772,14 +687,14 @@ class FragmentSend : Fragment() { private fun saveMetaData() { if (commentEdit.text.toString().isNotEmpty()) savedMemo = commentEdit.text.toString() if (amountBuilder.toString().isNotEmpty()) savedAmount = amountBuilder.toString() - savedIso = selectedIso + savedIsoCurrencySymbol = selectedIsoCurrencySymbol ignoreCleanup = true } private fun loadMetaData() { ignoreCleanup = false if (!Utils.isNullOrEmpty(savedMemo)) commentEdit.setText(savedMemo) - if (!Utils.isNullOrEmpty(savedIso)) selectedIso = savedIso + if (!Utils.isNullOrEmpty(savedIsoCurrencySymbol)) selectedIsoCurrencySymbol = savedIsoCurrencySymbol if (!Utils.isNullOrEmpty(savedAmount)) { amountBuilder = StringBuilder(savedAmount!!) Handler().postDelayed({ @@ -802,7 +717,33 @@ class FragmentSend : Fragment() { companion object { private var savedMemo: String? = null - private var savedIso: String? = null + private var savedIsoCurrencySymbol: String? = null private var savedAmount: String? = null } } + + + +///DEV WIP + +// val approximateNetworkFee = BRCurrency.getFormattedCurrencyString(activity, selectedISOSymbol, feeForISOSymbol) + +// +// var currentAmountValue = 0L +// val amountString = amountEdit.getText().toString() +// if (amountString != "") { +// currentAmountValue = amountString.toDouble().toLong() +// if (selectedIsoCurrencySymbol.equals("LTC")) { +// currentAmountValue = BRExchange.getAmountFromLitoshis( +// activity, +// selectedISOSymbol, +// BigDecimal(currentAmountValue) +// ).toLong() +// } else { +// currentAmountValue = BRExchange.getLitoshisFromAmount( +// activity, +// selectedISOSymbol, +// BigDecimal(currentAmountValue) +// ).toLong() +// } +// diff --git a/app/src/main/java/com/breadwallet/presenter/fragments/FragmentTransactionItem.java b/app/src/main/java/com/breadwallet/presenter/fragments/FragmentTransactionItem.java index 752313b42..714c35239 100644 --- a/app/src/main/java/com/breadwallet/presenter/fragments/FragmentTransactionItem.java +++ b/app/src/main/java/com/breadwallet/presenter/fragments/FragmentTransactionItem.java @@ -19,6 +19,7 @@ import androidx.annotation.Nullable; import com.breadwallet.R; +import com.breadwallet.presenter.entities.PartnerNames; import com.breadwallet.presenter.entities.TxItem; import com.breadwallet.tools.animation.BRAnimator; import com.breadwallet.tools.animation.SlideDetector; @@ -35,19 +36,25 @@ import java.math.BigDecimal; import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; +import java.util.HashSet; +import java.util.List; import java.util.Locale; +import java.util.Objects; +import java.util.Set; +import java.util.stream.Collectors; import timber.log.Timber; public class FragmentTransactionItem extends Fragment { public TextView mTitle; - private TextView mDescriptionText; + private TextView mLargeDescriptionText; private TextView mSubHeader; private TextView mConfirmationText; private TextView mAvailableSpend; private EditText mCommentText; - private TextView mAmountText; private TextView mAddressText; private TextView mDateText; private TextView mToFromBottom; @@ -63,10 +70,9 @@ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle sa final View rootView = inflater.inflate(R.layout.transaction_details_item, container, false); signalLayout = (LinearLayout) rootView.findViewById(R.id.signal_layout); mTitle = (TextView) rootView.findViewById(R.id.title); - mDescriptionText = (TextView) rootView.findViewById(R.id.description_text); + mLargeDescriptionText = (TextView) rootView.findViewById(R.id.large_description_text); mSubHeader = (TextView) rootView.findViewById(R.id.sub_header); mCommentText = (EditText) rootView.findViewById(R.id.comment_text); - mAmountText = (TextView) rootView.findViewById(R.id.amount_text); mAddressText = (TextView) rootView.findViewById(R.id.address_text); mDateText = (TextView) rootView.findViewById(R.id.date_text); mToFromBottom = (TextView) rootView.findViewById(R.id.to_from); @@ -99,30 +105,56 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { private void fillTexts() { //get the current iso - String iso = BRSharedPrefs.getPreferredLTC(getActivity()) ? "LTC" : BRSharedPrefs.getIso(getContext()); + String iso = BRSharedPrefs.getPreferredLTC(getActivity()) ? "LTC" : BRSharedPrefs.getIsoSymbol(getContext()); + + long opsAmount = Long.MAX_VALUE; + long[] outAmounts = item.getOutAmounts(); + if (outAmounts.length == 3) { + for (int i = 0; i < outAmounts.length; i++) { + long value = outAmounts[i]; + if (value < opsAmount && value != 0L) { + opsAmount = value; + } + } + } + else { + opsAmount = 0L; + } //get the tx amount BigDecimal txAmount = new BigDecimal(item.getReceived() - item.getSent()).abs(); //see if it was sent boolean sent = item.getReceived() - item.getSent() < 0; - //calculated and formatted amount for iso - String amountWithFee = BRCurrency.getFormattedCurrencyString(getActivity(), iso, BRExchange.getAmountFromSatoshis(getActivity(), iso, txAmount)); - String amount = BRCurrency.getFormattedCurrencyString(getActivity(), iso, BRExchange.getAmountFromSatoshis(getActivity(), iso, item.getFee() == -1 ? txAmount : txAmount.subtract(new BigDecimal(item.getFee())))); - //calculated and formatted fee for iso - String fee = BRCurrency.getFormattedCurrencyString(getActivity(), iso, BRExchange.getAmountFromSatoshis(getActivity(), iso, new BigDecimal(item.getFee()))); - //description (Sent $24.32 ....) - Spannable descriptionString = sent ? new SpannableString(String.format(getString(R.string.TransactionDetails_sent), amountWithFee)) : new SpannableString(String.format(getString(R.string.TransactionDetails_received), amount)); - - String startingBalance = BRCurrency.getFormattedCurrencyString(getActivity(), iso, BRExchange.getAmountFromSatoshis(getActivity(), iso, new BigDecimal(sent ? item.getBalanceAfterTx() + txAmount.longValue() : item.getBalanceAfterTx() - txAmount.longValue()))); - String endingBalance = BRCurrency.getFormattedCurrencyString(getActivity(), iso, BRExchange.getAmountFromSatoshis(getActivity(), iso, new BigDecimal(item.getBalanceAfterTx()))); + //calculated and formatted amount for isoSymbol + String amountWithFee = BRCurrency.getFormattedCurrencyString(getActivity(), iso, BRExchange.getAmountFromLitoshis(getActivity(), iso, txAmount.subtract(new BigDecimal(opsAmount)))); + String amount = BRCurrency.getFormattedCurrencyString(getActivity(), iso, BRExchange.getAmountFromLitoshis(getActivity(), iso, item.getFee() == -1 ? txAmount.subtract(new BigDecimal(opsAmount)) : txAmount.subtract(new BigDecimal(item.getFee())).subtract(new BigDecimal(opsAmount)))); + //large sent (Sent $24.32 ....) + Spannable largeDescriptionString = sent ? new SpannableString(String.format(getString(R.string.TransactionDetails_sent), amountWithFee)) : new SpannableString(String.format(getString(R.string.TransactionDetails_received), amount)); + String startingBalance = BRCurrency.getFormattedCurrencyString(getActivity(), iso, BRExchange.getAmountFromLitoshis(getActivity(), iso, new BigDecimal(sent ? item.getBalanceAfterTx() + txAmount.longValue() : item.getBalanceAfterTx() - txAmount.longValue()))); + String endingBalance = BRCurrency.getFormattedCurrencyString(getActivity(), iso, BRExchange.getAmountFromLitoshis(getActivity(), iso, new BigDecimal(item.getBalanceAfterTx()))); String commentString = item.metaData == null || item.metaData.comment == null ? "" : item.metaData.comment; String sb = String.format(getString(R.string.Transaction_starting), startingBalance); String eb = String.format(getString(R.string.Transaction_ending), endingBalance); - String amountString = String.format("%s %s\n\n%s\n%s", amount, item.getFee() == -1 ? "" : String.format(getString(R.string.Transaction_fee), fee), sb, eb); - if (sent) amountString = "-" + amountString; - String addr = item.getTo()[0]; - String toFrom = sent ? String.format(getString(R.string.TransactionDetails_to), addr) : String.format(getString(R.string.TransactionDetails_from), addr); + + //Target sent address + String sendAddress; + Set outputAddressSet = new HashSet(Arrays.asList(item.getTo())); + final String opsString = Utils.fetchPartnerKey(getActivity(), PartnerNames.OPSALL); + List opsList = new ArrayList(Arrays.asList(opsString.split(","))); + Set opsSet = new HashSet<>(); + opsSet.addAll(opsList); + List outputAddresses = outputAddressSet.stream().filter(element -> !opsSet.contains(element)).collect(Collectors.toList()); + List filteredAddress = outputAddresses.stream().filter(Objects::nonNull).collect(Collectors.toList()); + + //Filter method + if (filteredAddress.stream().findFirst().isPresent()) { + sendAddress = filteredAddress.stream().findFirst().get(); + } else { + sendAddress = "ERROR-ADDRESS"; + } + + String toFrom = sent ? String.format(getString(R.string.TransactionDetails_to), sendAddress) : String.format(getString(R.string.TransactionDetails_from), sendAddress); mTxHash.setText(item.getTxHashHexReversed()); mTxHashLink.setOnClickListener(view -> { @@ -183,12 +215,10 @@ private void fillTexts() { mToFromBottom.setText(sent ? getString(R.string.TransactionDirection_to) : getString(R.string.TransactionDirection_address)); mDateText.setText(getFormattedDate(item.getTimeStamp())); - mDescriptionText.setText(TextUtils.concat(descriptionString)); + mLargeDescriptionText.setText(TextUtils.concat(largeDescriptionString)); mSubHeader.setText(toFrom); mCommentText.setText(commentString); - - mAmountText.setText(amountString); - mAddressText.setText(addr); + mAddressText.setText(sendAddress); } private int getLevel(TxItem item) { @@ -270,9 +300,9 @@ private String getFormattedDate(long timeStamp) { return str1 + " " + String.format(getString(R.string.TransactionDetails_from), str2); } - private String getShortAddress(String addr) { - String p1 = addr.substring(0, 5); - String p2 = addr.substring(addr.length() - 5, addr.length()); + private String getShortAddress(String sendAddress) { + String p1 = sendAddress.substring(0, 5); + String p2 = sendAddress.substring(sendAddress.length() - 5, sendAddress.length()); return p1 + "..." + p2; } diff --git a/app/src/main/java/com/breadwallet/tools/adapter/CountryLanguageAdapter.kt b/app/src/main/java/com/breadwallet/tools/adapter/CountryLanguageAdapter.kt index d1913f2ce..b638593cf 100644 --- a/app/src/main/java/com/breadwallet/tools/adapter/CountryLanguageAdapter.kt +++ b/app/src/main/java/com/breadwallet/tools/adapter/CountryLanguageAdapter.kt @@ -14,11 +14,11 @@ import androidx.recyclerview.widget.RecyclerView import com.breadwallet.R import com.breadwallet.entities.IntroLanguage -class CountryLanguageAdapter(context: Context, val languages: Array) : RecyclerView.Adapter() { +class CountryLanguageAdapter(context: Context,val languages: Array) : RecyclerView.Adapter() { private var mCountryLang: Array? = null private var mInflater: LayoutInflater? = null - private var mSelectedItem = -1 - private var barlowFont: Typeface? = null + private var mSelectedItem = -1; + private var barlowFont : Typeface? = null private var mContext: Context? = null private var mediaPlayer: MediaPlayer? = null @@ -40,7 +40,7 @@ class CountryLanguageAdapter(context: Context, val languages: Array { @@ -43,7 +47,6 @@ public class TransactionListAdapter extends RecyclerView.Adapter backUpFeed; private List itemFeed; - // private Map mds; private final int txType = 0; private final int promptType = 1; private final int syncingType = 2; @@ -95,7 +98,6 @@ public void run() { private void updateTxHashes() { if (updatingReverseTxHash) return; updatingReverseTxHash = true; - } public List getItems() { @@ -113,7 +115,6 @@ else if (viewType == syncingType) return new SyncingHolder(inflater.inflate(syncingResId, parent, false)); return null; } - @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { switch (holder.getItemViewType()) { @@ -128,7 +129,6 @@ public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { break; } } - @Override public int getItemViewType(int position) { if (position == 0 && TxManager.getInstance().currentPrompt == PromptManager.PromptItem.SYNCING) { @@ -149,6 +149,7 @@ private void setTexts(final TxHolder convertView, int position) { TxItem item = itemFeed.get(TxManager.getInstance().currentPrompt == null ? position : position - 1); item.metaData = KVStoreManager.getInstance().getTxMetaData(mContext, item.getTxHash()); String commentString = (item.metaData == null || item.metaData.comment == null) ? "" : item.metaData.comment; + String sendAddress = "ERROR-ADDRESS"; convertView.comment.setText(commentString); if (commentString.isEmpty()) { convertView.constraintLayout.removeView(convertView.comment); @@ -175,8 +176,24 @@ private void setTexts(final TxHolder convertView, int position) { convertView.mainLayout.setBackgroundResource(getResourceByPos(position)); convertView.sentReceived.setText(received ? mContext.getString(R.string.TransactionDetails_received, "") : mContext.getString(R.string.TransactionDetails_sent, "")); convertView.toFrom.setText(received ? String.format(mContext.getString(R.string.TransactionDetails_from), "") : String.format(mContext.getString(R.string.TransactionDetails_to), "")); - final String addr = item.getTo()[0]; - convertView.account.setText(addr); + + Set outputAddressSet = new HashSet(Arrays.asList(item.getTo())); + + final String opsString = Utils.fetchPartnerKey(mContext, PartnerNames.OPSALL); + List opsList = new ArrayList(Arrays.asList(opsString.split(","))); + Set opsSet = new HashSet<>(); + opsSet.addAll(opsList); + List outputAddresses = outputAddressSet.stream().filter(element -> !opsSet.contains(element)).collect(Collectors.toList()); + List opsAddressList = outputAddressSet.stream().filter(element -> opsSet.contains(element)).collect(Collectors.toList()); + List filteredAddress = outputAddresses.stream().filter(Objects::nonNull).collect(Collectors.toList()); + //Filter method + if (filteredAddress.stream().findFirst().isPresent()) { + sendAddress = filteredAddress.stream().findFirst().get(); + } else { + sendAddress = "ERROR-ADDRESS"; + } + convertView.account.setText(sendAddress); + int blockHeight = item.getBlockHeight(); int confirms = blockHeight == Integer.MAX_VALUE ? 0 : BRSharedPrefs.getLastBlockHeight(mContext) - blockHeight + 1; @@ -247,18 +264,32 @@ else if (confirms == 3) if (!item.isValid()) convertView.status.setText(mContext.getString(R.string.Transaction_invalid)); - long satoshisAmount = received ? item.getReceived() : (item.getSent() - item.getReceived()); + long[] outAmounts = item.getOutAmounts(); + long opsAmount = Long.MAX_VALUE; + if (outAmounts.length == 3) { + for (int i = 0; i < outAmounts.length; i++) { + + long value = outAmounts[i]; + if (value < opsAmount && value != 0L) { + opsAmount = value; + Timber.d("timber: outAmounts size %d opsAmount value: %d", outAmounts.length, value); + } + } + } + else { + opsAmount = 0L; + } + + long sentLitoshisAmount = received ? item.getReceived() : (item.getSent() - item.getReceived() - opsAmount); boolean isBTCPreferred = BRSharedPrefs.getPreferredLTC(mContext); - String iso = isBTCPreferred ? "LTC" : BRSharedPrefs.getIso(mContext); - convertView.amount.setText(BRCurrency.getFormattedCurrencyString(mContext, iso, BRExchange.getAmountFromSatoshis(mContext, iso, new BigDecimal(satoshisAmount)))); + String iso = isBTCPreferred ? "LTC" : BRSharedPrefs.getIsoSymbol(mContext); + convertView.amount.setText(BRCurrency.getFormattedCurrencyString(mContext, iso, BRExchange.getAmountFromLitoshis(mContext, iso, new BigDecimal(sentLitoshisAmount)))); //if it's 0 we use the current time. long timeStamp = item.getTimeStamp() == 0 ? System.currentTimeMillis() : item.getTimeStamp() * 1000; CharSequence timeSpan = BRDateUtil.getCustomSpan(new Date(timeStamp)); - convertView.timestamp.setText(timeSpan); - } private void setPrompt(final PromptHolder prompt) { @@ -411,8 +442,8 @@ public SyncingHolder(View view) { mainLayout = (RelativeLayout) view.findViewById(R.id.main_layout); constraintLayout = (ConstraintLayout) view.findViewById(R.id.syncing_layout); date = view.findViewById(R.id.sync_date); - label = view.findViewById(R.id.syncing_label); progress = (ProgressBar) view.findViewById(R.id.sync_progress); + label = view.findViewById(R.id.syncing_label); } } diff --git a/app/src/main/java/com/breadwallet/tools/manager/BRApiManager.java b/app/src/main/java/com/breadwallet/tools/manager/BRApiManager.java index 3a90507f0..34666fbd6 100644 --- a/app/src/main/java/com/breadwallet/tools/manager/BRApiManager.java +++ b/app/src/main/java/com/breadwallet/tools/manager/BRApiManager.java @@ -61,9 +61,9 @@ private Set getCurrencies(Activity context) { Set set = new LinkedHashSet<>(); try { JSONArray arr = fetchRates(context); - updateFeePerKb(context); + FeeManager.updateFeePerKb(context); if (arr != null) { - String selectedISO = BRSharedPrefs.getIso(context); + String selectedISO = BRSharedPrefs.getIsoSymbol(context); int length = arr.length(); for (int i = 0; i < length; i++) { CurrencyEntity tmp = new CurrencyEntity(); @@ -102,10 +102,6 @@ public void run() { BRExecutor.getInstance().forLightWeightBackgroundTasks().execute(new Runnable() { @Override public void run() { - if (!BreadApp.isAppInBackground(context)) { - Timber.d("timber: doInBackground: Stopping timer, no activity on."); - BRApiManager.getInstance().stopTimerTask(); - } Set tmp = getCurrencies((Activity) context); CurrencyDataSource.getInstance(context).putCurrencies(tmp); } @@ -125,7 +121,7 @@ public void startTimer(Context context) { initializeTimerTask(context); //schedule the timer, after the first 0ms the TimerTask will run every 60000ms - timer.schedule(timerTask, 0, 60000); + timer.schedule(timerTask, 0, 4000); } public void stopTimerTask() { @@ -142,6 +138,8 @@ public static JSONArray fetchRates(Activity activity) { if (jsonString == null) return null; try { jsonArray = new JSONArray(jsonString); + + Timber.d("timber: JSON %s",jsonArray.toString()); } catch (JSONException ex) { Timber.e(ex); } @@ -164,26 +162,6 @@ public static JSONArray backupFetchRates(Activity activity) { return jsonArray; } - public static void updateFeePerKb(Context app) { - - //Operationally, it makes more sense to review the fees than rely on a server. - // Especially, when the missing server causes a major disconnect - // Using this hard code for a bi-yearly review. This matches the architecture in iOS - // KCW: May 3, 2022 - String jsonString = "{'fee_per_kb': 10000, 'fee_per_kb_economy': 2500, 'fee_per_kb_luxury': 66746}"; - try { - JSONObject obj = new JSONObject(jsonString); - // TODO: Refactor when mobile-api v0.4.0 is in prod - long regularFee = obj.optLong("fee_per_kb"); - long economyFee = obj.optLong("fee_per_kb_economy"); - long luxuryFee = obj.optLong("fee_per_kb_luxury"); - FeeManager.getInstance().setFees(luxuryFee, regularFee, economyFee); - BRSharedPrefs.putFeeTime(app, System.currentTimeMillis()); //store the time of the last successful fee fetch - } catch (JSONException e) { - Timber.e(new IllegalArgumentException("updateFeePerKb: FAILED: " + jsonString, e)); - } - } - // createGETRequestURL // Creates the params and headers to make a GET Request private static String createGETRequestURL(Context app, String myURL) { diff --git a/app/src/main/java/com/breadwallet/tools/manager/BREventManager.java b/app/src/main/java/com/breadwallet/tools/manager/BREventManager.java index 1f365fb30..a337aa117 100644 --- a/app/src/main/java/com/breadwallet/tools/manager/BREventManager.java +++ b/app/src/main/java/com/breadwallet/tools/manager/BREventManager.java @@ -60,112 +60,6 @@ public void pushEvent(String eventName) { @Override public void onBackgrounded() { Timber.d("timber: onBackgrounded: "); - saveEvents(); - pushToServer(); - } - - private void saveEvents() { - JSONArray array = new JSONArray(); - for (Event event : events) { - JSONObject obj = new JSONObject(); - try { - obj.put("sessionId", event.sessionId); - obj.put("time", event.time); - obj.put("eventName", event.eventName); - JSONObject mdObj = new JSONObject(); - if (event.attributes != null && event.attributes.size() > 0) { - for (Map.Entry entry : event.attributes.entrySet()) { - mdObj.put(entry.getKey(), entry.getValue()); - } - } - obj.put("metadata", mdObj); - } catch (JSONException e) { - Timber.e(e); - } - array.put(obj); - } - Context app = BreadApp.getBreadContext(); - if (app != null) { - String fileName = app.getFilesDir().getAbsolutePath() + "/events/" + UUID.randomUUID().toString(); - writeEventsToDisk(fileName, array.toString()); - } else { - Timber.i("timber: saveEvents: FAILED TO WRITE EVENTS TO FILE: app is null"); - } - } - - private void pushToServer() { - Context app = BreadApp.getBreadContext(); - if (app != null) { - List arrs = getEventsFromDisk(app); - int fails = 0; - for (JSONArray arr : arrs) { - JSONObject obj = new JSONObject(); - try { - obj.put("deviceType", 1); - obj.put("appVersion", BRConstants.APP_VERSION_NAME_CODE); - obj.put("events", arr); - - String strUtl = BASE_URL + "/events"; - - final MediaType JSON = MediaType.parse("application/json"); - RequestBody requestBody = RequestBody.create(JSON, obj.toString()); - Request request = new Request.Builder() - .url(strUtl) - .header("Content-Type", "application/json") - .header("Accept", "application/json") - .post(requestBody).build(); - String strResponse = null; - Response response = null; - try { - response = APIClient.getInstance(app).sendRequest(request, true, 0); - if (response != null) - strResponse = response.body().string(); - } catch (IOException e) { - Timber.e(e); - fails++; - } finally { - if (response != null) response.close(); - } - if (Utils.isNullOrEmpty(strResponse)) { - Timber.i("timber: pushToServer: response is empty"); - fails++; - } - } catch (JSONException e) { - Timber.e(e); - fails++; - } - } - if (fails == 0) { - //if no fails then remove the local files. - File dir = new File(app.getFilesDir().getAbsolutePath() + "/events/"); - if (dir.isDirectory()) { - String[] children = dir.list(); - for (int i = 0; i < children.length; i++) { - new File(dir, children[i]).delete(); - } - } else { - Timber.i("timber: pushToServer: missing events directory"); - } - } else { - Timber.i("timber: pushToServer: FAILED with: %s fails", fails); - } - } else { - Timber.i("timber: pushToServer: Failed to push, app is null"); - } - } - - private boolean writeEventsToDisk(String fileName, String json) { - Timber.d("timber: saveEvents: eventsFile: %s,\njson: %s", fileName, json); - try { - FileWriter file = new FileWriter(fileName); - file.write(json); - file.flush(); - file.close(); - return true; - } catch (IOException e) { - Timber.e(e, "timber:Error in Writing"); - } - return false; } //returns the list of JSONArray which consist of Event arrays diff --git a/app/src/main/java/com/breadwallet/tools/manager/BRSharedPrefs.java b/app/src/main/java/com/breadwallet/tools/manager/BRSharedPrefs.java index dd37d766e..88372b4e4 100644 --- a/app/src/main/java/com/breadwallet/tools/manager/BRSharedPrefs.java +++ b/app/src/main/java/com/breadwallet/tools/manager/BRSharedPrefs.java @@ -39,7 +39,7 @@ public static void removeListener(OnIsoChangedListener listener) { isoChangedListeners.remove(listener); } - public static String getIso(Context context) { + public static String getIsoSymbol(Context context) { SharedPreferences settingsToGet = context.getSharedPreferences(BRConstants.PREFS_NAME, 0); String defIso; @@ -49,12 +49,15 @@ public static String getIso(Context context) { if (defaultLanguage == "ru") { defIso = Currency.getInstance(new Locale("ru", "RU")).getCurrencyCode(); } + else if (defaultLanguage == "en") { + defIso = Currency.getInstance(Locale.US).getCurrencyCode(); + } else { defIso = Currency.getInstance(Locale.getDefault()).getCurrencyCode(); } } catch (IllegalArgumentException e) { Timber.e(e); - defIso = Currency.getInstance(new Locale("en", "US")).getCurrencyCode(); + defIso = Currency.getInstance(Locale.US).getCurrencyCode(); } return settingsToGet.getString(BRConstants.CURRENT_CURRENCY, defIso); } diff --git a/app/src/main/java/com/breadwallet/tools/manager/FeeManager.java b/app/src/main/java/com/breadwallet/tools/manager/FeeManager.java index d7955943e..55d5c088e 100644 --- a/app/src/main/java/com/breadwallet/tools/manager/FeeManager.java +++ b/app/src/main/java/com/breadwallet/tools/manager/FeeManager.java @@ -1,11 +1,31 @@ package com.breadwallet.tools.manager; +import static com.breadwallet.tools.util.BRConstants.LW_API_HOST; + +import android.app.Activity; +import android.content.Context; + import androidx.annotation.StringDef; import com.breadwallet.presenter.entities.Fee; +import com.breadwallet.tools.util.Utils; +import com.platform.APIClient; + +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; +import java.io.IOException; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; + +import okhttp3.Request; +import okhttp3.Response; +import timber.log.Timber; /** * Litewallet @@ -26,7 +46,7 @@ public final class FeeManager { private static final FeeManager instance; private String feeType; - private Fee currentFees; + public Fee currentFees; public static FeeManager getInstance() { return instance; @@ -45,10 +65,6 @@ private void initWithDefaultValues() { private FeeManager() { } - public Fee getFees() { - return currentFees; - } - public void setFeeType(@FeeType String feeType) { this.feeType = feeType; } @@ -69,6 +85,57 @@ public void setFees(long luxuryFee, long regularFee, long economyFee) { // TODO: to be implemented when feePerKB API will be ready } + public static void updateFeePerKb(Context app) { + + String jsonString = "{'fee_per_kb': 10000, 'fee_per_kb_economy': 2500, 'fee_per_kb_luxury': 66746}"; + try { + JSONObject obj = new JSONObject(jsonString); + // TODO: Refactor when mobile-api v0.4.0 is in prod + long regularFee = obj.optLong("fee_per_kb"); + long economyFee = obj.optLong("fee_per_kb_economy"); + long luxuryFee = obj.optLong("fee_per_kb_luxury"); + FeeManager.getInstance().setFees(luxuryFee, regularFee, economyFee); + BRSharedPrefs.putFeeTime(app, System.currentTimeMillis()); //store the time of the last successful fee fetch + } catch (JSONException e) { + Timber.e(new IllegalArgumentException("updateFeePerKb: FAILED: " + jsonString, e)); + } + } + + // createGETRequestURL + // Creates the params and headers to make a GET Request + private static String createGETRequestURL(Context app, String myURL) { + Request request = new Request.Builder() + .url(myURL) + .header("Content-Type", "application/json") + .header("Accept", "application/json") + .header("User-agent", Utils.getAgentString(app, "android/HttpURLConnection")) + .get().build(); + String response = null; + Response resp = APIClient.getInstance(app).sendRequest(request, false, 0); + + try { + if (resp == null) { + Timber.i("timber: urlGET: %s resp is null", myURL); + return null; + } + response = resp.body().string(); + String strDate = resp.header("date"); + if (strDate == null) { + Timber.i("timber: urlGET: strDate is null!"); + return response; + } + SimpleDateFormat formatter = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US); + Date date = formatter.parse(strDate); + long timeStamp = date.getTime(); + BRSharedPrefs.putSecureTime(app, timeStamp); + } catch (ParseException | IOException e) { + Timber.e(e); + } finally { + if (resp != null) resp.close(); + } + return response; + } + @Retention(RetentionPolicy.SOURCE) @StringDef({LUXURY, REGULAR, ECONOMY}) public @interface FeeType { diff --git a/app/src/main/java/com/breadwallet/tools/manager/SyncManager.java b/app/src/main/java/com/breadwallet/tools/manager/SyncManager.java index d139e396f..86150e8bd 100644 --- a/app/src/main/java/com/breadwallet/tools/manager/SyncManager.java +++ b/app/src/main/java/com/breadwallet/tools/manager/SyncManager.java @@ -6,6 +6,7 @@ import android.content.Intent; import android.os.Build; +import com.breadwallet.R; import com.breadwallet.presenter.activities.BreadActivity; import com.breadwallet.tools.listeners.SyncReceiver; import com.breadwallet.tools.util.Utils; @@ -79,7 +80,6 @@ public synchronized void stopSyncingProgressThread() { Timber.e(ex); } } - private class SyncProgressTask extends Thread { public double progressStatus = 0; private BreadActivity app; @@ -104,8 +104,10 @@ public void run() { public void run() { if (TxManager.getInstance().syncingHolder != null) TxManager.getInstance().syncingHolder.progress.setProgress((int) (progressStatus * 100)); - if (TxManager.getInstance().syncingHolder != null) + if (TxManager.getInstance().syncingHolder != null) { TxManager.getInstance().syncingHolder.date.setText(Utils.formatTimeStamp(lastBlockTimeStamp, "MMM. dd, yyyy ha")); + TxManager.getInstance().syncingHolder.label.setText(BreadActivity.getApp().getString(R.string.SyncingView_header)); + } } }); } @@ -122,16 +124,17 @@ public void run() { app.runOnUiThread(new Runnable() { @Override public void run() { - if (TxManager.getInstance().currentPrompt != PromptManager.PromptItem.SYNCING) { Timber.d("timber: run: currentPrompt != SYNCING, showPrompt(SYNCING) ...."); TxManager.getInstance().showPrompt(app, PromptManager.PromptItem.SYNCING); } - if (TxManager.getInstance().syncingHolder != null) TxManager.getInstance().syncingHolder.progress.setProgress((int) (progressStatus * 100)); - if (TxManager.getInstance().syncingHolder != null) + if (TxManager.getInstance().syncingHolder != null) { TxManager.getInstance().syncingHolder.date.setText(Utils.formatTimeStamp(lastBlockTimeStamp, "MMM. dd, yyyy ha")); + TxManager.getInstance().syncingHolder.label.setText(BreadActivity.getApp().getString(R.string.SyncingView_header)); + } + } }); diff --git a/app/src/main/java/com/breadwallet/tools/security/BRSender.java b/app/src/main/java/com/breadwallet/tools/security/BRSender.java index b64c92eea..56736968c 100644 --- a/app/src/main/java/com/breadwallet/tools/security/BRSender.java +++ b/app/src/main/java/com/breadwallet/tools/security/BRSender.java @@ -5,12 +5,13 @@ import com.breadwallet.R; import com.breadwallet.presenter.customviews.BRDialogView; -import com.breadwallet.presenter.entities.PaymentItem; +import com.breadwallet.presenter.entities.TransactionItem; import com.breadwallet.presenter.interfaces.BRAuthCompletion; import com.breadwallet.tools.animation.BRAnimator; import com.breadwallet.tools.animation.BRDialog; import com.breadwallet.tools.manager.BRApiManager; import com.breadwallet.tools.manager.BRSharedPrefs; +import com.breadwallet.tools.manager.FeeManager; import com.breadwallet.tools.threads.BRExecutor; import com.breadwallet.tools.util.BRConstants; import com.breadwallet.tools.util.BRCurrency; @@ -27,21 +28,16 @@ public class BRSender { private static BRSender instance; private final static long FEE_EXPIRATION_MILLIS = 72 * 60 * 60 * 1000L; - private boolean timedOut; - private boolean sending; - + private boolean timedOut, sending; private BRSender() { } - public static BRSender getInstance() { if (instance == null) instance = new BRSender(); return instance; } - /** - * Create tx from the PaymentItem object and try to send it - */ - public void sendTransaction(final Context app, final PaymentItem request) { + //Create tx from the TransactionItem object and try to send it + public void sendTransaction(final Context app, final TransactionItem transactionItem) { //array in order to be able to modify the first element from an inner block (can't be final) final String[] errTitle = {null}; final String[] errMessage = {null}; @@ -69,7 +65,7 @@ public void run() { if (sending) timedOut = true; } }).start(); - BRApiManager.updateFeePerKb(app); + FeeManager.updateFeePerKb(app); //if the fee is STILL out of date then fail with network problem message long time = BRSharedPrefs.getFeeTime(app); if (time <= 0 || now - time >= FEE_EXPIRATION_MILLIS) { @@ -81,7 +77,7 @@ public void run() { } } if (!timedOut) - tryPay(app, request); + tryPay(app, transactionItem); else Timber.e(new NullPointerException("did not send, timedOut!")); return; //return so no error is shown @@ -97,7 +93,7 @@ public void run() { return; } catch (FeeNeedsAdjust feeNeedsAdjust) { //offer to change amount, so it would be enough for fee - showAdjustFee((Activity) app, request); + showAdjustFee((Activity) app, transactionItem); return; } catch (FeeOutOfDate ex) { //Fee is out of date, show not connected error @@ -136,21 +132,18 @@ public void onClick(BRDialogView brDialogView) { }); } - /** - * Try transaction and throw appropriate exceptions if something was wrong - * BLOCKS - */ - private void tryPay(final Context app, final PaymentItem paymentRequest) throws InsufficientFundsException, + //Try transaction and throw appropriate exceptions if something was wrong + private void tryPay(final Context app, final TransactionItem transactionItem) throws InsufficientFundsException, AmountSmallerThanMinException, SpendingNotAllowed, FeeNeedsAdjust { - if (paymentRequest == null || paymentRequest.addresses == null) { + if (transactionItem == null || transactionItem.sendAddress == null) { Timber.d("timber: handlePay: WRONG PARAMS"); - String message = paymentRequest == null ? "paymentRequest is null" : "addresses is null"; - RuntimeException ex = new RuntimeException("paymentRequest is malformed: " + message); - + String message = transactionItem == null ? "transactionItem is null" : "addresses is null"; + RuntimeException ex = new RuntimeException("transactionItem is malformed: " + message); Timber.e(ex); throw ex; } - long amount = paymentRequest.amount; + + long sendAmount = transactionItem.sendAmount + transactionItem.opsFee; long balance = BRWalletManager.getInstance().getBalance(app); final BRWalletManager m = BRWalletManager.getInstance(); long minOutputAmount = BRWalletManager.getInstance().getMinOutputAmount(); @@ -162,17 +155,17 @@ private void tryPay(final Context app, final PaymentItem paymentRequest) throws } //check if amount isn't smaller than the min amount - if (isSmallerThanMin(paymentRequest)) { - throw new AmountSmallerThanMinException(amount, balance); + if (isSmallerThanMin(transactionItem)) { + throw new AmountSmallerThanMinException(sendAmount, balance); } //amount is larger than balance - if (isLargerThanBalance(app, paymentRequest)) { - throw new InsufficientFundsException(amount, balance); + if (isLargerThanBalance(app, transactionItem)) { + throw new InsufficientFundsException(sendAmount, balance); } //not enough for fee - if (notEnoughForFee(paymentRequest)) { + if (notEnoughForFee(transactionItem)) { //weird bug when the core BRWalletManager is NULL if (maxOutputAmount == -1) { RuntimeException ex = new RuntimeException("getMaxOutputAmount is -1, meaning _wallet is NULL"); @@ -181,17 +174,20 @@ private void tryPay(final Context app, final PaymentItem paymentRequest) throws } // max you can spend is smaller than the min you can spend if (maxOutputAmount < minOutputAmount) { - throw new InsufficientFundsException(amount, balance); + throw new InsufficientFundsException(sendAmount, balance); } - long feeForTx = m.feeForTransaction(paymentRequest.addresses[0], paymentRequest.amount); - throw new FeeNeedsAdjust(amount, balance, feeForTx); + long feeForTx = m.feeForTransaction(transactionItem.sendAddress, transactionItem.sendAmount + transactionItem.opsFee); + throw new FeeNeedsAdjust(sendAmount, balance, feeForTx); } // payment successful BRExecutor.getInstance().forLightWeightBackgroundTasks().execute(new Runnable() { @Override public void run() { - byte[] tmpTx = m.tryTransaction(paymentRequest.addresses[0], paymentRequest.amount); + byte[] tmpTx = m.tryTransactionWithOps(transactionItem.sendAddress, + transactionItem.sendAmount, + transactionItem.opsAddress, + transactionItem.opsFee); if (tmpTx == null) { //something went wrong, failed to create tx ((Activity) app).runOnUiThread(new Runnable() { @@ -208,14 +204,14 @@ public void onClick(BRDialogView brDialogView) { }); return; } - paymentRequest.serializedTx = tmpTx; - PostAuth.getInstance().setPaymentItem(paymentRequest); - confirmPay(app, paymentRequest); + transactionItem.serializedTx = tmpTx; + PostAuth.getInstance().setTransactionItem(transactionItem); + confirmPay(app, transactionItem); } }); } - private void showAdjustFee(final Activity app, PaymentItem item) { + private void showAdjustFee(final Activity app, TransactionItem item) { BRWalletManager m = BRWalletManager.getInstance(); long maxAmountDouble = m.getMaxOutputAmount(); if (maxAmountDouble == -1) { @@ -240,27 +236,26 @@ public void onClick(BRDialogView brDialogView) { } } - private void confirmPay(final Context ctx, final PaymentItem request) { + private void confirmPay(final Context ctx, final TransactionItem transactionItem) { if (ctx == null) { Timber.i("timber: confirmPay: context is null"); return; } - String message = createConfirmation(ctx, request); + String message = createConfirmation(ctx, transactionItem); double minOutput; - if (request.isAmountRequested) { + if (transactionItem.isAmountRequested) { minOutput = BRWalletManager.getInstance().getMinOutputAmountRequested(); } else { minOutput = BRWalletManager.getInstance().getMinOutputAmount(); } //amount can't be less than the min - if (request.amount < minOutput) { + if (transactionItem.sendAmount < minOutput) { final String bitcoinMinMessage = String.format(Locale.getDefault(), ctx.getString(R.string.PaymentProtocol_Errors_smallTransaction), BRConstants.bitcoinLowercase + new BigDecimal(minOutput).divide(new BigDecimal("100"))); - ((Activity) ctx).runOnUiThread(new Runnable() { @Override public void run() { @@ -276,12 +271,10 @@ public void onClick(BRDialogView brDialogView) { } boolean forcePin = false; - Timber.d("timber: confirmPay: totalSent: %s", BRWalletManager.getInstance().getTotalSent()); - Timber.d("timber: confirmPay: request.amount: %s", request.amount); - Timber.d("timber: confirmPay: total limit: %s", AuthManager.getInstance().getTotalLimit(ctx)); - Timber.d("timber: confirmPay: limit: %s", BRKeyStore.getSpendLimit(ctx)); + Timber.d("timber: confirmPay: totalSent: %s, request.amount: %s, total limit: %s, limit: %s", BRWalletManager.getInstance().getTotalSent(),transactionItem.sendAmount,AuthManager.getInstance().getTotalLimit(ctx),BRKeyStore.getSpendLimit(ctx)); + - if (BRWalletManager.getInstance().getTotalSent() + request.amount > AuthManager.getInstance().getTotalLimit(ctx)) { + if (BRWalletManager.getInstance().getTotalSent() + transactionItem.sendAmount > AuthManager.getInstance().getTotalLimit(ctx)) { forcePin = true; } @@ -312,14 +305,14 @@ public void onCancel() { }); } - private String createConfirmation(Context ctx, PaymentItem request) { - String receiver = getReceiver(request); - - String iso = BRSharedPrefs.getIso(ctx); - + private String createConfirmation(Context ctx, TransactionItem transactionItem) { + String receiver = getReceiver(transactionItem); + String iso = BRSharedPrefs.getIsoSymbol(ctx); BRWalletManager m = BRWalletManager.getInstance(); - long feeForTx = m.feeForTransaction(request.addresses[0], request.amount); - if (feeForTx == 0) { + + long feesForTx = m.feeForTransaction(transactionItem.sendAddress, transactionItem.sendAmount); + long opsFee = Utils.tieredOpsFee(ctx,transactionItem.sendAmount); + if (feesForTx == 0) { long maxAmount = m.getMaxOutputAmount(); if (maxAmount == -1) { RuntimeException ex = new RuntimeException("getMaxOutputAmount is -1, meaning _wallet is NULL"); @@ -336,50 +329,49 @@ public void onClick(BRDialogView brDialogView) { return null; } - feeForTx = m.feeForTransaction(request.addresses[0], maxAmount); - feeForTx += (BRWalletManager.getInstance().getBalance(ctx) - request.amount) % 100; + feesForTx = m.feeForTransaction(transactionItem.sendAddress, maxAmount); + feesForTx += (BRWalletManager.getInstance().getBalance(ctx) - transactionItem.sendAmount) % 100; + feesForTx += opsFee; } - final long total = request.amount + feeForTx; - String formattedAmountBTC = BRCurrency.getFormattedCurrencyString(ctx, "LTC", BRExchange.getBitcoinForSatoshis(ctx, new BigDecimal(request.amount))); - String formattedFeeBTC = BRCurrency.getFormattedCurrencyString(ctx, "LTC", BRExchange.getBitcoinForSatoshis(ctx, new BigDecimal(feeForTx))); - String formattedTotalBTC = BRCurrency.getFormattedCurrencyString(ctx, "LTC", BRExchange.getBitcoinForSatoshis(ctx, new BigDecimal(total))); + final long total = transactionItem.sendAmount + feesForTx + opsFee; + String formattedAmountLTC = BRCurrency.getFormattedCurrencyString(ctx, "LTC", BRExchange.getLitecoinForLitoshis(ctx, new BigDecimal(transactionItem.sendAmount))); + String formattedFeesLTC = BRCurrency.getFormattedCurrencyString(ctx, "LTC", BRExchange.getLitecoinForLitoshis(ctx, new BigDecimal(feesForTx))); + String formattedTotalLTC = BRCurrency.getFormattedCurrencyString(ctx, "LTC", BRExchange.getLitecoinForLitoshis(ctx, new BigDecimal(total))); - String formattedAmount = BRCurrency.getFormattedCurrencyString(ctx, iso, BRExchange.getAmountFromSatoshis(ctx, iso, new BigDecimal(request.amount))); - String formattedFee = BRCurrency.getFormattedCurrencyString(ctx, iso, BRExchange.getAmountFromSatoshis(ctx, iso, new BigDecimal(feeForTx))); - String formattedTotal = BRCurrency.getFormattedCurrencyString(ctx, iso, BRExchange.getAmountFromSatoshis(ctx, iso, new BigDecimal(total))); + String formattedAmount = BRCurrency.getFormattedCurrencyString(ctx, iso, BRExchange.getAmountFromLitoshis(ctx, iso, new BigDecimal(transactionItem.sendAmount))); + String formattedFees = BRCurrency.getFormattedCurrencyString(ctx, iso, BRExchange.getAmountFromLitoshis(ctx, iso, new BigDecimal(feesForTx))); + String formattedTotal = BRCurrency.getFormattedCurrencyString(ctx, iso, BRExchange.getAmountFromLitoshis(ctx, iso, new BigDecimal(total))); //formatted text return receiver + "\n\n" - + ctx.getString(R.string.Confirmation_amountLabel) + " " + formattedAmountBTC + " (" + formattedAmount + ")" - + "\n" + ctx.getString(R.string.Confirmation_feeLabel) + " " + formattedFeeBTC + " (" + formattedFee + ")" - + "\n" + ctx.getString(R.string.Confirmation_totalLabel) + " " + formattedTotalBTC + " (" + formattedTotal + ")" - + (request.comment == null ? "" : "\n\n" + request.comment); + + ctx.getString(R.string.Confirmation_amountLabel) + " " + formattedAmountLTC + " (" + formattedAmount + ")" + + "\n" + ctx.getString(R.string.ConfirmationAllFees_Label) + " " + formattedFeesLTC + " (" + formattedFees + ")" + + "\n" + ctx.getString(R.string.Confirmation_totalLabel) + " " + formattedTotalLTC + " (" + formattedTotal + ")" + + (transactionItem.comment == null ? "" : "\n\n" + transactionItem.comment); } - String getReceiver(PaymentItem item) { - boolean certified = item.cn != null && item.cn.length() != 0; - return certified ? "certified: " + item.cn : Utils.join(item.addresses, ", "); + String getReceiver(TransactionItem item) { + boolean certified = item.certifiedName != null && item.certifiedName.length() != 0; + return certified ? "certified: " + item.certifiedName : item.sendAddress; } - - private boolean isSmallerThanMin(PaymentItem paymentRequest) { + private boolean isSmallerThanMin(TransactionItem transactionItem) { long minAmount = BRWalletManager.getInstance().getMinOutputAmountRequested(); - return paymentRequest.amount < minAmount; + return transactionItem.sendAmount < minAmount; } - private boolean isLargerThanBalance(Context app, PaymentItem paymentRequest) { - return paymentRequest.amount > 0 && paymentRequest.amount > BRWalletManager.getInstance().getBalance(app); + private boolean isLargerThanBalance(Context app, TransactionItem transactionItem) { + return transactionItem.sendAmount > 0 && transactionItem.sendAmount > BRWalletManager.getInstance().getBalance(app); } - private boolean notEnoughForFee(PaymentItem paymentRequest) { + private boolean notEnoughForFee(TransactionItem transactionItem) { BRWalletManager m = BRWalletManager.getInstance(); - long feeForTx = m.feeForTransaction(paymentRequest.addresses[0], paymentRequest.amount); + long feeForTx = m.feeForTransaction(transactionItem.sendAddress, transactionItem.sendAmount); if (feeForTx == 0) { - feeForTx = m.feeForTransaction(paymentRequest.addresses[0], m.getMaxOutputAmount()); + feeForTx = m.feeForTransaction(transactionItem.sendAddress, m.getMaxOutputAmount()); return feeForTx != 0; } return false; } - private static void showSpendNotAllowed(final Context app) { Timber.d("timber: showSpendNotAllowed"); ((Activity) app).runOnUiThread(new Runnable() { @@ -394,7 +386,6 @@ public void onClick(BRDialogView brDialogView) { } }); } - private static class InsufficientFundsException extends Exception { InsufficientFundsException(long amount, long balance) { super("Balance: " + balance + " satoshis, amount: " + amount + " satoshis."); @@ -406,19 +397,16 @@ private static class AmountSmallerThanMinException extends Exception { super("Balance: " + balance + " satoshis, amount: " + amount + " satoshis."); } } - private static class SpendingNotAllowed extends Exception { SpendingNotAllowed() { super("spending is not allowed at the moment"); } } - private static class FeeNeedsAdjust extends Exception { FeeNeedsAdjust(long amount, long balance, long fee) { super("Balance: " + balance + " satoshis, amount: " + amount + " satoshis, fee: " + fee + " satoshis."); } } - private static class FeeOutOfDate extends Exception { FeeOutOfDate(long timestamp, long now) { super("FeeOutOfDate: timestamp: " + timestamp + ",now: " + now); diff --git a/app/src/main/java/com/breadwallet/tools/security/BitcoinUrlHandler.java b/app/src/main/java/com/breadwallet/tools/security/BitcoinUrlHandler.java index 803dd0cd3..597daee07 100644 --- a/app/src/main/java/com/breadwallet/tools/security/BitcoinUrlHandler.java +++ b/app/src/main/java/com/breadwallet/tools/security/BitcoinUrlHandler.java @@ -4,13 +4,15 @@ import com.breadwallet.R; import com.breadwallet.presenter.customviews.BRDialogView; -import com.breadwallet.presenter.entities.PaymentItem; +import com.breadwallet.presenter.entities.PartnerNames; +import com.breadwallet.presenter.entities.TransactionItem; import com.breadwallet.presenter.entities.PaymentRequestWrapper; import com.breadwallet.presenter.entities.RequestObject; import com.breadwallet.tools.animation.BRAnimator; import com.breadwallet.tools.animation.BRDialog; import com.breadwallet.tools.manager.BREventManager; import com.breadwallet.tools.threads.PaymentProtocolTask; +import com.breadwallet.tools.util.Utils; import com.breadwallet.wallet.BRWalletManager; import java.io.UnsupportedEncodingException; @@ -18,6 +20,7 @@ import java.net.URI; import java.net.URISyntaxException; import java.net.URLDecoder; +import java.util.Arrays; import java.util.HashMap; import java.util.Map; @@ -161,8 +164,6 @@ private static boolean tryLitecoinURL(final String url, final FragmentActivity a RequestObject requestObject = getRequestFromString(url); if (requestObject == null || requestObject.address == null || requestObject.address.isEmpty()) return false; - final String[] addresses = new String[1]; - addresses[0] = requestObject.address; String amount = requestObject.amount; @@ -176,7 +177,15 @@ public void run() { } else { if (app != null) { BRAnimator.killAllFragments(app); - BRSender.getInstance().sendTransaction(app, new PaymentItem(addresses, null, new BigDecimal(amount).longValue(), null, true)); + BRSender.getInstance() + .sendTransaction(app, + new TransactionItem(requestObject.address, + Utils.fetchPartnerKey(app, PartnerNames.LITEWALLETOPS), + null, + new BigDecimal(amount).longValue(), + Utils.tieredOpsFee(app, new BigDecimal(amount).longValue()), + null, + true)); } else { Timber.e(new NullPointerException("tryLitecoinURL, app is null!")); } diff --git a/app/src/main/java/com/breadwallet/tools/security/PostAuth.java b/app/src/main/java/com/breadwallet/tools/security/PostAuth.java index c9141515d..f486d5118 100644 --- a/app/src/main/java/com/breadwallet/tools/security/PostAuth.java +++ b/app/src/main/java/com/breadwallet/tools/security/PostAuth.java @@ -14,7 +14,7 @@ import com.breadwallet.presenter.activities.intro.WriteDownActivity; import com.breadwallet.presenter.activities.util.ActivityUTILS; import com.breadwallet.presenter.customviews.BRDialogView; -import com.breadwallet.presenter.entities.PaymentItem; +import com.breadwallet.presenter.entities.TransactionItem; import com.breadwallet.presenter.entities.PaymentRequestWrapper; import com.breadwallet.tools.animation.BRDialog; import com.breadwallet.tools.manager.BRSharedPrefs; @@ -39,7 +39,7 @@ public class PostAuth { private String phraseForKeyStore; - public PaymentItem paymentItem; + public TransactionItem transactionItem; private PaymentRequestWrapper paymentRequest; public static boolean isStuckWithAuthLoop; @@ -184,17 +184,17 @@ public void onPublishTxAuth(final Context app, boolean authAsked) { final byte[] seed = TypesConverter.getNullTerminatedPhrase(rawSeed); try { if (seed.length != 0) { - if (paymentItem != null && paymentItem.serializedTx != null) { - byte[] txHash = walletManager.publishSerializedTransaction(paymentItem.serializedTx, seed); + if (transactionItem != null && transactionItem.serializedTx != null) { + byte[] txHash = walletManager.publishSerializedTransaction(transactionItem.serializedTx, seed); Timber.d("timber: onPublishTxAuth: txhash:" + Arrays.toString(txHash)); if (Utils.isNullOrEmpty(txHash)) { Timber.d("timber: onPublishTxAuth: publishSerializedTransaction returned FALSE"); } else { TxMetaData txMetaData = new TxMetaData(); - txMetaData.comment = paymentItem.comment; + txMetaData.comment = transactionItem.comment; KVStoreManager.getInstance().putTxMetaData(app, txMetaData, txHash); } - paymentItem = null; + transactionItem = null; } else { throw new NullPointerException("payment item is null"); } @@ -244,8 +244,8 @@ public void setPhraseForKeyStore(String phraseForKeyStore) { this.phraseForKeyStore = phraseForKeyStore; } - public void setPaymentItem(PaymentItem item) { - this.paymentItem = item; + public void setTransactionItem(TransactionItem item) { + this.transactionItem = item; } public void setTmpPaymentRequest(PaymentRequestWrapper paymentRequest) { diff --git a/app/src/main/java/com/breadwallet/tools/threads/ImportPrivKeyTask.java b/app/src/main/java/com/breadwallet/tools/threads/ImportPrivKeyTask.java index ac2568180..b174fb0fc 100644 --- a/app/src/main/java/com/breadwallet/tools/threads/ImportPrivKeyTask.java +++ b/app/src/main/java/com/breadwallet/tools/threads/ImportPrivKeyTask.java @@ -70,13 +70,13 @@ protected void onPostExecute(String s) { return; } -// String iso = BRSharedPrefs.getIso(app); +// String iso = BRSharedPrefs.getIsoSymbol(app); - String sentBits = BRCurrency.getFormattedCurrencyString(app, "LTC", BRExchange.getAmountFromSatoshis(app, "LTC", new BigDecimal(importPrivKeyEntity.getAmount()))); -// String sentExchange = BRCurrency.getFormattedCurrencyString(app, iso, BRExchange.getAmountFromSatoshis(app, iso, new BigDecimal(importPrivKeyEntity.getAmount()))); + String sentBits = BRCurrency.getFormattedCurrencyString(app, "LTC", BRExchange.getAmountFromLitoshis(app, "LTC", new BigDecimal(importPrivKeyEntity.getAmount()))); +// String sentExchange = BRCurrency.getFormattedCurrencyString(app, iso, BRExchange.getAmountFromLitoshis(app, iso, new BigDecimal(importPrivKeyEntity.getAmount()))); - String feeBits = BRCurrency.getFormattedCurrencyString(app, "LTC", BRExchange.getAmountFromSatoshis(app, "LTC", new BigDecimal(importPrivKeyEntity.getFee()))); -// String feeExchange = BRCurrency.getFormattedCurrencyString(app, iso, BRExchange.getAmountFromSatoshis(app, iso, new BigDecimal(importPrivKeyEntity.getFee()))); + String feeBits = BRCurrency.getFormattedCurrencyString(app, "LTC", BRExchange.getAmountFromLitoshis(app, "LTC", new BigDecimal(importPrivKeyEntity.getFee()))); +// String feeExchange = BRCurrency.getFormattedCurrencyString(app, iso, BRExchange.getAmountFromLitoshis(app, iso, new BigDecimal(importPrivKeyEntity.getFee()))); if (app == null || importPrivKeyEntity == null) return; String message = String.format(app.getString(R.string.Import_confirm), sentBits, feeBits); diff --git a/app/src/main/java/com/breadwallet/tools/threads/PaymentProtocolTask.java b/app/src/main/java/com/breadwallet/tools/threads/PaymentProtocolTask.java index 308704dd1..cc1d4abdd 100644 --- a/app/src/main/java/com/breadwallet/tools/threads/PaymentProtocolTask.java +++ b/app/src/main/java/com/breadwallet/tools/threads/PaymentProtocolTask.java @@ -285,7 +285,7 @@ private void continueWithThePayment(final Activity app, final String certificati final String memo = (!paymentRequest.memo.isEmpty() ? "\n" : "") + paymentRequest.memo; allAddresses = new StringBuilder(); - final String iso = BRSharedPrefs.getIso(app); + final String iso = BRSharedPrefs.getIsoSymbol(app); final StringBuilder finalAllAddresses = allAddresses; BRExecutor.getInstance().forLightWeightBackgroundTasks().execute(new Runnable() { @Override @@ -310,9 +310,9 @@ public void onClick(BRDialogView brDialogView) { } final long total = paymentRequest.amount + paymentRequest.fee; - BigDecimal bigAm = BRExchange.getAmountFromSatoshis(app, iso, new BigDecimal(paymentRequest.amount)); - BigDecimal bigFee = BRExchange.getAmountFromSatoshis(app, iso, new BigDecimal(paymentRequest.fee)); - BigDecimal bigTotal = BRExchange.getAmountFromSatoshis(app, iso, new BigDecimal(total)); + BigDecimal bigAm = BRExchange.getAmountFromLitoshis(app, iso, new BigDecimal(paymentRequest.amount)); + BigDecimal bigFee = BRExchange.getAmountFromLitoshis(app, iso, new BigDecimal(paymentRequest.fee)); + BigDecimal bigTotal = BRExchange.getAmountFromLitoshis(app, iso, new BigDecimal(total)); final String message = certification + memo + finalAllAddresses.toString() + "\n\n" + "amount: " + BRCurrency.getFormattedCurrencyString(app, iso, bigAm) + "\nnetwork fee: +" + BRCurrency.getFormattedCurrencyString(app, iso, bigFee) + "\ntotal: " + BRCurrency.getFormattedCurrencyString(app, iso, bigTotal); diff --git a/app/src/main/java/com/breadwallet/tools/util/BRCurrency.java b/app/src/main/java/com/breadwallet/tools/util/BRCurrency.java index 56e54b164..25b858e75 100644 --- a/app/src/main/java/com/breadwallet/tools/util/BRCurrency.java +++ b/app/src/main/java/com/breadwallet/tools/util/BRCurrency.java @@ -16,8 +16,7 @@ public class BRCurrency { public static final String TAG = BRCurrency.class.getName(); - - // amount is in currency or BTC (bits, mBTC or BTC) + // amount is in currency or LTC (bits, mLTC or LTC) public static String getFormattedCurrencyString(Context app, String isoCurrencyCode, BigDecimal amount) { // This formats currency values as the user expects to read them (default locale). DecimalFormat currencyFormat = (DecimalFormat) DecimalFormat.getCurrencyInstance(Locale.getDefault()); @@ -28,7 +27,7 @@ public static String getFormattedCurrencyString(Context app, String isoCurrencyC String symbol; decimalFormatSymbols = currencyFormat.getDecimalFormatSymbols(); if (Objects.equals(isoCurrencyCode, "LTC")) { - symbol = BRExchange.getBitcoinSymbol(app); + symbol = BRExchange.getLitecoinSymbol(app); } else { try { currency = Currency.getInstance(isoCurrencyCode); diff --git a/app/src/main/java/com/breadwallet/tools/util/BRExchange.java b/app/src/main/java/com/breadwallet/tools/util/BRExchange.java index a891083a9..7c892ece9 100644 --- a/app/src/main/java/com/breadwallet/tools/util/BRExchange.java +++ b/app/src/main/java/com/breadwallet/tools/util/BRExchange.java @@ -6,7 +6,6 @@ import com.breadwallet.tools.manager.BRSharedPrefs; import com.breadwallet.tools.sqlite.CurrencyDataSource; import com.breadwallet.wallet.BRWalletManager; - import java.math.BigDecimal; import static com.breadwallet.tools.util.BRConstants.CURRENT_UNIT_PHOTONS; @@ -14,19 +13,19 @@ public class BRExchange { - public static final long ONE_LITECOIN = 100000000L; + public static final long ONE_LITECOIN_OF_LITOSHIS = 100000000L; public static BigDecimal getMaxAmount(Context context, String iso) { - final long MAX_BTC = 84000000; + final long MAX_LTC = 84000000; if (iso.equalsIgnoreCase("LTC")) - return getBitcoinForSatoshis(context, new BigDecimal(MAX_BTC * 100000000)); + return getLitecoinForLitoshis(context, new BigDecimal(MAX_LTC * 100000000)); CurrencyEntity ent = CurrencyDataSource.getInstance(context).getCurrencyByIso(iso); if (ent == null) return new BigDecimal(Integer.MAX_VALUE); - return new BigDecimal(ent.rate * MAX_BTC); + return new BigDecimal(ent.rate * MAX_LTC); } - // amount in satoshis - public static BigDecimal getBitcoinForSatoshis(Context app, BigDecimal amount) { + // amount in Litoshis + public static BigDecimal getLitecoinForLitoshis(Context app, BigDecimal amount) { BigDecimal result = new BigDecimal(0); int unit = BRSharedPrefs.getCurrencyUnit(app); switch (unit) { @@ -43,7 +42,7 @@ public static BigDecimal getBitcoinForSatoshis(Context app, BigDecimal amount) { return result; } - public static BigDecimal getSatoshisForBitcoin(Context app, BigDecimal amount) { + public static BigDecimal getLitoshisForLitecoin(Context app, BigDecimal amount) { BigDecimal result = new BigDecimal(0); int unit = BRSharedPrefs.getCurrencyUnit(app); switch (unit) { @@ -60,7 +59,23 @@ public static BigDecimal getSatoshisForBitcoin(Context app, BigDecimal amount) { return result; } - public static String getBitcoinSymbol(Context app) { + //get an iso amount from litoshis + public static BigDecimal getAmountFromLitoshis(Context app, String iso, BigDecimal amount) { + BigDecimal result; + if (iso.equalsIgnoreCase("LTC")) { + result = getLitecoinForLitoshis(app, amount); + } else { + //multiply by 100 because core function localAmount accepts the smallest amount e.g. cents + CurrencyEntity ent = CurrencyDataSource.getInstance(app).getCurrencyByIso(iso); + if (ent == null) return new BigDecimal(0); + BigDecimal rate = new BigDecimal(ent.rate).multiply(new BigDecimal(100)); + result = new BigDecimal(BRWalletManager.getInstance().localAmount(amount.longValue(), rate.doubleValue())) + .divide(new BigDecimal(100), 2, BRConstants.ROUNDING_MODE); + } + return result; + } + + public static String getLitecoinSymbol(Context app) { String currencySymbolString = BRConstants.bitcoinLowercase; if (app != null) { int unit = BRSharedPrefs.getCurrencyUnit(app); @@ -79,28 +94,12 @@ public static String getBitcoinSymbol(Context app) { return currencySymbolString; } - //get an iso amount from satoshis - public static BigDecimal getAmountFromSatoshis(Context app, String iso, BigDecimal amount) { - BigDecimal result; - if (iso.equalsIgnoreCase("LTC")) { - result = getBitcoinForSatoshis(app, amount); - } else { - //multiply by 100 because core function localAmount accepts the smallest amount e.g. cents - CurrencyEntity ent = CurrencyDataSource.getInstance(app).getCurrencyByIso(iso); - if (ent == null) return new BigDecimal(0); - BigDecimal rate = new BigDecimal(ent.rate).multiply(new BigDecimal(100)); - result = new BigDecimal(BRWalletManager.getInstance().localAmount(amount.longValue(), rate.doubleValue())) - .divide(new BigDecimal(100), 2, BRConstants.ROUNDING_MODE); - } - return result; - } - - //get satoshis from an iso amount - public static BigDecimal getSatoshisFromAmount(Context app, String iso, BigDecimal amount) { + //get litoshis from an iso symbol amount + public static BigDecimal getLitoshisFromAmount(Context app, String iso, BigDecimal amount) { BigDecimal result; if (iso.equalsIgnoreCase("LTC")) { - result = BRExchange.getSatoshisForBitcoin(app, amount); + result = BRExchange.getLitoshisForLitecoin(app, amount); } else { //multiply by 100 because core function localAmount accepts the smallest amount e.g. cents CurrencyEntity ent = CurrencyDataSource.getInstance(app).getCurrencyByIso(iso); @@ -111,7 +110,7 @@ public static BigDecimal getSatoshisFromAmount(Context app, String iso, BigDecim return result; } - public static BigDecimal ltcToLitoshi(Double amountLtc) { - return BigDecimal.valueOf(amountLtc).multiply(BigDecimal.valueOf(ONE_LITECOIN)); + public static BigDecimal convertltcsToLitoshis(Double amountLtc) { + return BigDecimal.valueOf(amountLtc).multiply(BigDecimal.valueOf(ONE_LITECOIN_OF_LITOSHIS)); } } diff --git a/app/src/main/java/com/breadwallet/tools/util/Utils.java b/app/src/main/java/com/breadwallet/tools/util/Utils.java index 0634cfd0d..38f2c6b28 100644 --- a/app/src/main/java/com/breadwallet/tools/util/Utils.java +++ b/app/src/main/java/com/breadwallet/tools/util/Utils.java @@ -16,31 +16,40 @@ import android.view.inputmethod.InputMethodManager; import android.widget.Toast; +import java.math.BigInteger; +import java.util.Currency; +import java.util.concurrent.ThreadLocalRandom; import androidx.core.app.ActivityCompat; +import com.breadwallet.R; import com.breadwallet.presenter.activities.intro.IntroActivity; +import com.breadwallet.presenter.entities.CurrencyEntity; import com.breadwallet.presenter.entities.PartnerNames; import com.breadwallet.tools.manager.AnalyticsManager; +import com.breadwallet.tools.manager.BRSharedPrefs; +import com.breadwallet.tools.sqlite.CurrencyDataSource; import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigDecimal; -import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Collection; +import java.util.Collections; +import java.util.Dictionary; +import java.util.Iterator; import java.util.List; +import java.util.ListIterator; import java.util.Locale; import timber.log.Timber; import org.json.*; -import java.io.FileReader; import java.io.InputStream; import static android.content.Context.FINGERPRINT_SERVICE; -import java.io.FileNotFoundException; +import java.util.Set; +import java.util.HashSet; +import java.util.stream.IntStream; import android.content.res.AssetManager; public class Utils { @@ -225,19 +234,40 @@ public static String join(String[] array, CharSequence separator) { } public static String fetchPartnerKey(Context app, PartnerNames name) { - Timber.d("timber: fetch name: %s", name); - JSONObject keyObject; AssetManager assetManager = app.getAssets(); try (InputStream inputStream = assetManager.open("partner-keys.json")) { try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) { StringBuilder sb = new StringBuilder(); String line; + String opsString = ""; while ((line = reader.readLine()) != null) { sb.append(line); } + keyObject = new JSONObject(sb.toString()).getJSONObject("keys"); - Timber.d("timber: fetch obj: %s", keyObject.toString()); + + if (name == PartnerNames.LITEWALLETOPS) { + JSONArray array = new JSONArray(keyObject.get(name.getKey()).toString()); + int randomNum = ThreadLocalRandom.current().nextInt(0, array.length() - 1); + return array.getString(randomNum); + } + else if (name == PartnerNames.OPSALL) { + JSONArray opsArray = new JSONArray(keyObject.get(name.getKey()).toString()); + + if (opsArray != null) { + for (int i=0;i 1000.00) { + return (long) ((3.00 / doubleRate) * 100_000_000.0); + } + else { + return (long) ((3.00 / doubleRate) * 100_000_000.0); + } + } + private static boolean isBetween(double x, double lower, double upper) { + return lower <= x && x <= upper; + } + public static Set litewalletOpsSet(Context app) { + List addressList = Collections.singletonList(Utils.fetchPartnerKey(app, PartnerNames.LITEWALLETOPS)); + return new HashSet(addressList); + } + + private class UInt64 { + public UInt64(BigInteger bigInteger) { + } + } } diff --git a/app/src/main/java/com/breadwallet/wallet/BRWalletManager.java b/app/src/main/java/com/breadwallet/wallet/BRWalletManager.java index 22aac2f7e..a07f3d1f5 100644 --- a/app/src/main/java/com/breadwallet/wallet/BRWalletManager.java +++ b/app/src/main/java/com/breadwallet/wallet/BRWalletManager.java @@ -165,12 +165,6 @@ public synchronized boolean generateRandomSeed(final Context ctx) { BRKeyStore.putWalletCreationTime(walletCreationTime, ctx); final WalletInfo info = new WalletInfo(); info.creationDate = walletCreationTime; - BRExecutor.getInstance().forLightWeightBackgroundTasks().execute(new Runnable() { - @Override - public void run() { - //Removed the push to the KeyStore / Server that is refactored out of the Litewallet code - } - }); byte[] strBytes = TypesConverter.getNullTerminatedPhrase(strPhrase); byte[] pubKey = BRWalletManager.getInstance().getMasterPubKey(strBytes); @@ -383,8 +377,8 @@ public static void onTxAdded(byte[] tx, int blockHeight, long timestamp, final l BRExecutor.getInstance().forMainThreadTasks().execute(new Runnable() { @Override public void run() { - String am = BRCurrency.getFormattedCurrencyString(ctx, "LTC", BRExchange.getBitcoinForSatoshis(ctx, new BigDecimal(amount))); - String amCur = BRCurrency.getFormattedCurrencyString(ctx, BRSharedPrefs.getIso(ctx), BRExchange.getAmountFromSatoshis(ctx, BRSharedPrefs.getIso(ctx), new BigDecimal(amount))); + String am = BRCurrency.getFormattedCurrencyString(ctx, "LTC", BRExchange.getLitecoinForLitoshis(ctx, new BigDecimal(amount))); + String amCur = BRCurrency.getFormattedCurrencyString(ctx, BRSharedPrefs.getIsoSymbol(ctx), BRExchange.getAmountFromLitoshis(ctx, BRSharedPrefs.getIsoSymbol(ctx), new BigDecimal(amount))); String formatted = String.format("%s (%s)", am, amCur); String strToShow = String.format(ctx.getString(R.string.TransactionDetails_received), formatted); showToastWithMessage(ctx, strToShow); @@ -500,6 +494,8 @@ public void initWallet(final Context ctx) { if (!m.isCreated()) { List transactions = TransactionDataSource.getInstance(ctx).getAllTransactions(); + Timber.d("timber: All transactions : %d",transactions.size()); + int transactionsCount = transactions.size(); if (transactionsCount > 0) { m.createTxArrayWithCount(transactionsCount); @@ -519,8 +515,8 @@ public void initWallet(final Context ctx) { BRSharedPrefs.putFirstAddress(ctx, firstAddress); FeeManager feeManager = FeeManager.getInstance(); if (feeManager.isRegularFee()) { - Fee fees = feeManager.getFees(); - BRWalletManager.getInstance().setFeePerKb(fees.regular); + feeManager.updateFeePerKb(ctx); + BRWalletManager.getInstance().setFeePerKb(feeManager.currentFees.regular); } } @@ -626,6 +622,8 @@ public void setFeePerKb(long fee) { public native byte[] tryTransaction(String addressHolder, long amountHolder); + public native byte[] tryTransactionWithOps(String sendAddress, long sendAmount, String opsAddress, long opsFeeAmount); + // returns the given amount (amount is in satoshis) in local currency units (i.e. pennies, pence) // price is local currency units per bitcoin public native long localAmount(long amount, double price); @@ -665,9 +663,7 @@ public void setFeePerKb(long fee) { public native String reverseTxHash(String txHash); public native String txHashToHex(byte[] txHash); - -// public native String txHashSha256Hex(String txHash); - + public native long nativeBalance(); public native long defaultFee(); diff --git a/app/src/main/java/com/platform/APIClient.java b/app/src/main/java/com/platform/APIClient.java index 40befa88c..620698567 100644 --- a/app/src/main/java/com/platform/APIClient.java +++ b/app/src/main/java/com/platform/APIClient.java @@ -83,6 +83,7 @@ public long feePerKb() { try { response = sendRequest(request, false, 0); body = response.body().string(); + Timber.d("timber: fee per kb %s",body); } catch (IOException e) { Timber.e(e); AnalyticsManager.logCustomEvent(BRConstants._20200111_RNI); diff --git a/app/src/main/jni/transition/wallet.c b/app/src/main/jni/transition/wallet.c index cd301a7f0..4b9a1142d 100644 --- a/app/src/main/jni/transition/wallet.c +++ b/app/src/main/jni/transition/wallet.c @@ -359,7 +359,6 @@ JNIEXPORT jobjectArray JNICALL Java_com_breadwallet_wallet_BRWalletManager_getTr jstring txReversed = (*env)->NewStringUTF(env, u256hex(reversedHash)); - jlong Jsent = (jlong) BRWalletAmountSentByTx(_wallet, tempTx); jlong Jreceived = (jlong) BRWalletAmountReceivedFromTx(_wallet, tempTx); jlong Jfee = (jlong) BRWalletFeeForTx(_wallet, tempTx); @@ -410,10 +409,20 @@ JNIEXPORT jobjectArray JNICALL Java_com_breadwallet_wallet_BRWalletManager_getTr jlong JbalanceAfterTx = (jlong) BRWalletBalanceAfterTx(_wallet, tempTx); - jobject txObject = (*env)->NewObject(env, txClass, txObjMid, JtimeStamp, JblockHeight, - JtxHash, txReversed, Jsent, - Jreceived, Jfee, JtoAddresses, JfromAddresses, - JbalanceAfterTx, JtxSize, + jobject txObject = (*env)->NewObject(env, + txClass, + txObjMid, + JtimeStamp, + JblockHeight, + JtxHash, + txReversed, + Jsent, + Jreceived, + Jfee, + JtoAddresses, + JfromAddresses, + JbalanceAfterTx, + JtxSize, JoutAmounts, isValid); (*env)->SetObjectArrayElement(env, globalTxs, (jsize) (txCount - 1 - i), txObject); @@ -539,6 +548,34 @@ Java_com_breadwallet_wallet_BRWalletManager_tryTransaction(JNIEnv *env, jobject return result; } +JNIEXPORT jbyteArray JNICALL +Java_com_breadwallet_wallet_BRWalletManager_tryTransactionWithOps(JNIEnv *env, jobject obj, + jstring jSendAddress, jlong jSendAmount, + jstring jOpsAddress, jlong jOpsFeeAmount) { + __android_log_print(ANDROID_LOG_DEBUG, "Message from C: ", "tryTransactionWithOps"); + if (!_wallet) return 0; + + const char *rawSendAddress = (*env)->GetStringUTFChars(env, jSendAddress, NULL); + const char *rawOpsAddress = (*env)->GetStringUTFChars(env, jOpsAddress, NULL); + + BRTransaction *tx = BRWalletCreateOpsTransaction(_wallet, (uint64_t) jSendAmount, + rawSendAddress, + (uint64_t) jOpsFeeAmount, + rawOpsAddress); + if (!tx) return NULL; + + size_t len = BRTransactionSerialize(tx, NULL, 0); + uint8_t *buf = malloc(len); + + len = BRTransactionSerialize(tx, buf, len); + + jbyteArray result = (*env)->NewByteArray(env, (jsize) len); + + (*env)->SetByteArrayRegion(env, result, 0, (jsize) len, (jbyte *) buf); + free(buf); + return result; +} + JNIEXPORT jboolean JNICALL Java_com_breadwallet_wallet_BRWalletManager_isCreated(JNIEnv *env, jobject obj) { __android_log_print(ANDROID_LOG_DEBUG, "Message from C: ", "wallet isCreated %s", @@ -569,7 +606,7 @@ Java_com_breadwallet_wallet_BRWalletManager_bitcoinAmount(JNIEnv *env, jobject t jlong localAmount, double price) { __android_log_print(ANDROID_LOG_DEBUG, "Message from C: ", "bitcoinAmount: localAmount: %lli, price: %lf", localAmount, price); - return (jlong) BRBitcoinAmount(localAmount, price); + return (jlong) BRLitecoinAmount(localAmount, price); } JNIEXPORT jlong @@ -793,6 +830,7 @@ JNIEXPORT jobject JNICALL Java_com_breadwallet_wallet_BRWalletManager_getPrivKey BRTransactionAddOutput(_privKeyTx, 0, script, scriptLen); uint64_t fee = BRWalletFeeForTxSize(_wallet, BRTransactionSize(_privKeyTx)); + uint64_t oPSFee = 0L; _privKeyTx->outputs[0].amount = _privKeyBalance - fee; diff --git a/app/src/main/jni/transition/wallet.h b/app/src/main/jni/transition/wallet.h index 2396b74c8..3a9a43376 100644 --- a/app/src/main/jni/transition/wallet.h +++ b/app/src/main/jni/transition/wallet.h @@ -76,6 +76,11 @@ JNIEXPORT jobject JNICALL Java_com_breadwallet_wallet_BRWalletManager_tryTransaction(JNIEnv *env, jobject obj, jstring jAddress, jlong jAmount); +JNIEXPORT jobject JNICALL +Java_com_breadwallet_wallet_BRWalletManager_tryTransactionWithOps(JNIEnv *env, jobject obj, + jstring jSendAddress, jlong jSendAmount, + jstring jOpsAddress, jlong jOpsFeeAmount); + JNIEXPORT jboolean JNICALL Java_com_breadwallet_wallet_BRWalletManager_transactionIsVerified(JNIEnv *env, jobject obj, jstring txHash); diff --git a/app/src/main/res/layout/activity_announce_updates_view.xml b/app/src/main/res/layout/activity_announce_updates_view.xml index 66129b6f0..cb3f0a2be 100644 --- a/app/src/main/res/layout/activity_announce_updates_view.xml +++ b/app/src/main/res/layout/activity_announce_updates_view.xml @@ -8,28 +8,41 @@ android:background="@color/litecoin_litewallet_dark_blue" tools:context=".presenter.activities.AnnounceUpdatesViewActivity"> + + + app:layout_constraintTop_toBottomOf="@+id/btnClose" /> @@ -54,13 +69,13 @@ android:fontFamily="@font/barlowsemicondensed_light" android:paddingStart="80dp" android:paddingEnd="80dp" - android:text="No, thanks!" + android:text="@string/Announce.no_thanks" android:textColor="@color/white" - android:textSize="20sp" + android:textSize="15sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/webViewEmail" app:layout_constraintVertical_bias="0.937" /> - \ No newline at end of file + diff --git a/app/src/main/res/layout/activity_sync_blockchain.xml b/app/src/main/res/layout/activity_sync_blockchain.xml index d1fcb3075..3b7d05a6d 100644 --- a/app/src/main/res/layout/activity_sync_blockchain.xml +++ b/app/src/main/res/layout/activity_sync_blockchain.xml @@ -115,13 +115,14 @@ app:layout_constraintRight_toRightOf="parent" /> diff --git a/app/src/main/res/layout/fragment_send.xml b/app/src/main/res/layout/fragment_send.xml index 22918bc3a..39922b3e6 100644 --- a/app/src/main/res/layout/fragment_send.xml +++ b/app/src/main/res/layout/fragment_send.xml @@ -123,68 +123,6 @@ - - - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/syncing_item.xml b/app/src/main/res/layout/syncing_item.xml index 215c1fef9..ebbf94128 100644 --- a/app/src/main/res/layout/syncing_item.xml +++ b/app/src/main/res/layout/syncing_item.xml @@ -39,7 +39,6 @@ android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginTop="16dp" - android:text="@string/SyncingView.header" android:textColor="@color/almost_black" android:textSize="@dimen/sub_header" app:layout_constraintLeft_toLeftOf="parent" diff --git a/app/src/main/res/layout/transaction_details_item.xml b/app/src/main/res/layout/transaction_details_item.xml index 641f8028e..debe1610f 100644 --- a/app/src/main/res/layout/transaction_details_item.xml +++ b/app/src/main/res/layout/transaction_details_item.xml @@ -71,7 +71,7 @@ - - - - - - Halbprivat (~42 Minuten) Anonym (~77 Minuten) WICHTIG: Warten Sie ca. 1 Stunde auf die Synchronisierung! + + + Verpassen Sie nichts! + Schließen + Melden Sie sich an, um über Updates und Wettbewerbe vom Litewallet-Team zu erfahren! Akzeptieren Sie Benachrichtigungen, um Live-Nachrichten, Preise, \u0026 Marktinformationen zu erhalten! + Nein danke! + Service + Netzwerk + Gebühren: diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 2b5f1d908..b01411b9f 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -737,4 +737,13 @@ Semiprivado (~42 minutos) Anónimo (~77 minutos) IMPORTANTE: ¡Espera ~1 hora para sincronizar! + + + No te pierdas nada! + Cerca + ¡Regístrese para recibir actualizaciones y concursos del equipo de Litewallet! ¡Acepte notificaciones para recibir noticias en vivo, precios e información de mercado! + ¡No, gracias! + Servicio + Red + Honorarios: diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index f6aab4f6b..c49b52182 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -738,4 +738,13 @@ Semi-privé (~42 minutes) Anonyme (~77 minutes) IMPORTANT : attendez environ 1 heure pour la synchronisation ! + + + Ne manquez rien! + Fermer + Inscrivez-vous pour recevoir les mises à jour et les concours de l\'équipe Litewallet ! Acceptez les notifications pour recevoir des nouvelles en direct, des prix et des informations sur le marché ! + Non, merci + Service + Réseau + Frais: diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 57bd787ee..afe6e571b 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -740,4 +740,13 @@ Semi-pribadi (~42 menit) Anonim (~77 menit) PENTING: Tunggu ~1 jam untuk sinkronisasi! + + + Jangan Ketinggalan! + Tutup + Daftar untuk mendapatkan informasi terbaru dan kontes dari tim Litewallet! Terima pemberitahuan untuk mendapatkan berita langsung, harga, dan informasi pasar! + Tidak, terimakasih! + Melayani + Jaringan + Biaya: diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 48b9f4ad6..35193f7cd 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -738,4 +738,13 @@ Semi-privato (~42 minuti) Anonimo (~77 minuti) IMPORTANTE: Attendi ~1 ora per la sincronizzazione! + + + Non perdetevi nulla! + Chiudere + Iscriviti per ricevere aggiornamenti e concorsi dal team Litewallet! Accettate le notifiche per ricevere notizie in tempo reale, prezzi e informazioni sul mercato! + No, grazie! + Servizio + Rete + Commissioni: diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index d3c6426a8..3c4500288 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -738,4 +738,13 @@ セミプライベート(~42分) 匿名 (~77 分) 重要: 同期が完了するまで 1 時間ほどお待ちください。 + + + 何も見逃してはいけない + 閉じる + 登録すると、Litewalletチームからの最新情報やコンテストのお知らせを受け取ることができます!通知を受信して、ライブニュース、価格、マーケット情報を入手しましょう! + いえ、結構です + サービス + 通信網 + 料金: diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index e09fbb6ba..f6e4e73b9 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -738,4 +738,13 @@ 세미 프라이빗(~42분) 익명(~77분) 중요: 동기화를 위해 1시간 정도 기다리세요! + + + 하나도 놓치지 마세요! + 닫기 + 라이트월렛 팀으로부터 업데이트 및 콘테스트 소식을 받아보세요! 알림을 수락하여 실시간 뉴스, 가격, 시장 정보를 받아보세요! + 아니요, 괜찮습니다! + 서비스 + 회로망 + 수수료: diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index b680f54ca..088a4c225 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -738,4 +738,13 @@ "Semiprivado (~42 minutos) " "Anônimo (~ 77 minutos) " IMPORTANTE: Aguarde cerca de 1 hora para sincronizar! + + + Não perca nada! + Fechar + Inscreve-te para ouvires as actualizações e concursos da equipa Litewallet! Aceita as notificações para receberes notícias, preços e informações de mercado em tempo real! + Não, obrigado! + Serviço + Rede + Tarifas: diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index e6ffc85da..f7edf7ea5 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -738,4 +738,13 @@ "Полуприватный (~ 42 минуты) " "Аноним (~77 минут) " ВАЖНО: Подождите ~1 час для синхронизации! + + + Не пропустите ничего! + Закрыть + Подпишитесь, чтобы узнавать об обновлениях и конкурсах от команды Litewallet! Принимайте уведомления, чтобы получать новости, информацию о ценах и рынке в режиме реального времени! + Нет, спасибо! + Услуга + Сеть + Сборы: diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index d9aa5580d..16329a75d 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -763,4 +763,12 @@ Anonim (~77 dakika) ÖNEMLİ: Senkronizasyon için ~1 saat bekleyin! + + Hiçbir şeyi kaçırmayın! + Kapat + Litewallet ekibinden güncellemeler ve yarışmalar hakkında bilgi almak için kaydolun! Canlı haberler, fiyat ve piyasa bilgileri almak için bildirimleri kabul edin! + Hayır, sağ ol! + Hizmet + + Ücretler: diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index c42435ea4..c05a5cf06 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -745,4 +745,13 @@ Напівприватний (~42 хвилини) Анонімно (~77 хвилин) ВАЖЛИВО: зачекайте ~1 годину для синхронізації! + + + Не проґавте нічого! + Закрити + Підпишіться, щоб дізнаватися про оновлення та конкурси від команди Litewallet! Підписуйтесь на сповіщення, щоб отримувати актуальні новини, ціни та інформацію про ринок! + Ні, дякую! + Сервіс + Мережа + Збори: diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 0e9a5ab68..9599fa541 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -737,5 +737,14 @@ 低隐私(约 19 分钟) 半私人(约 42 分钟) 匿名(约 77 分钟) - 重要提示:等待约 1 小时进行同步! + 重要提示:等待约 1 小时进行同步! + + + 不要错过任何东西! + 关闭 + 注册以了解 Litewallet 团队的更新和竞赛信息!接受通知,获取实时新闻、价格和市场信息! + 不用了,谢谢 + 服务 + 网络 + 费用: diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index f2b804972..de0f218c8 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -738,4 +738,13 @@ 半私人(約 42 分鐘) 匿名(約 77 分鐘) 重要提示:等待約 1 小時進行同步! + + + 不要錯過任何事情! + 關閉 + 註冊以了解 Litewallet 團隊的最新動態和競賽! 接受通知以獲取即時新聞、價格和市場資訊! + 不,謝謝 + 服務 + 網路 + 費用: diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 39b053dd9..e9a11854f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -87,6 +87,8 @@ Amount to Send: Network Fee: + + Network Processing time: This transaction is predicted to complete in %1$s. @@ -171,7 +173,6 @@ Importing a wallet does not include transaction history or other details. Wrong password, please try again. - Ignore @@ -768,5 +769,11 @@ Anonymous (~77 minutes) IMPORTANT: App will sync to allow 1ltc addresses. Wait ~1 hour for syncing! - + + Don\'t miss a thing! + Close + Signup to hear about updates and contests from the Litewallet team! Accept notifications to get live news, price, \u0026 market information! + No, thanks! + Service + Fees: diff --git a/fast_follow_asset_pack_01/src/main/assets/audio/bahasaindonesia.mp3 b/fast_follow_asset_pack_01/src/main/assets/audio/bahasaindonesia.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..b6ea96ee2678d42a4bb314d6b4a04ecbc1bd7dfe GIT binary patch literal 8928 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 R{x9SE-)8yW|KtC+{~v%HY3%?2 literal 0 HcmV?d00001 diff --git a/fast_follow_asset_pack_01/src/main/assets/audio/coinflip.mp3 b/fast_follow_asset_pack_01/src/main/assets/audio/coinflip.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..976a06f5ba29db578e9497766dc1700baf0a3cc2 GIT binary patch literal 23680 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 C1S38G literal 0 HcmV?d00001 diff --git a/fast_follow_asset_pack_01/src/main/assets/audio/italiano.mp3 b/fast_follow_asset_pack_01/src/main/assets/audio/italiano.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..be7d15b18750962fd00695bb9cae24262ab1a636 GIT binary patch literal 4416 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 literal 0 HcmV?d00001 diff --git a/fast_follow_asset_pack_01/src/main/assets/audio/japanese.mp3 b/fast_follow_asset_pack_01/src/main/assets/audio/japanese.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..379a6938050723055096af20025fa6d452f4032b GIT binary patch literal 4320 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 BkHP=| literal 0 HcmV?d00001 diff --git a/fast_follow_asset_pack_01/src/main/assets/audio/korean.mp3 b/fast_follow_asset_pack_01/src/main/assets/audio/korean.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..f17488e15429e9f3e4bd9a27b3b9ec0b577cb9e3 GIT binary patch literal 4416 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 D^BFm+ literal 0 HcmV?d00001 diff --git a/fast_follow_asset_pack_01/src/main/assets/audio/portugues.mp3 b/fast_follow_asset_pack_01/src/main/assets/audio/portugues.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..f7d54262bd996b2956365b7e60914d3d83cb7fda GIT binary patch literal 5280 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 literal 0 HcmV?d00001 diff --git a/fast_follow_asset_pack_01/src/main/assets/audio/spanish.mp3 b/fast_follow_asset_pack_01/src/main/assets/audio/spanish.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..22a1b75bf571ea777f558b8a622691b11e346360 GIT binary patch literal 4032 zcmeI#XEa>f9suw&dN(scCM0^IGrABm+F z5M+>oU<@LX5Lb&i&*ZK3-uv*@dtcuD_V%Z}PWkP<|L1@Hdu?z>=M?||)cOz<0Dx}( z`?rN$?jJ;~CH2c3Yxq|3ttJ;rr(XX4++L6Rs`dGtkWG`+M5B$tK9B`j771fx;W;E8W3&?{~R$teQZM938O;i)q z2)Zf|1O@#q`H9y8PX%6MbA<{%r%;Ei7?R-sL0YIl)Jdi z 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 JSKYtb{~P66Pfh>; literal 0 HcmV?d00001 diff --git a/fast_follow_asset_pack_01/src/main/assets/audio/traditionalchinese.mp3 b/fast_follow_asset_pack_01/src/main/assets/audio/traditionalchinese.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..b9f00f6cbbfa304d949fd2a280ff21de1a1789d5 GIT binary patch literal 5088 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 F{{ilF$iM&q literal 0 HcmV?d00001