├── .gitignore
├── .travis.yml
├── LICENSE
├── README.md
├── app
├── .gitignore
├── build.gradle
├── proguard-rules.pro
└── src
│ └── main
│ ├── AndroidManifest.xml
│ ├── ic_launcher-web.png
│ ├── java
│ └── com
│ │ └── wallet
│ │ └── crypto
│ │ └── trustapp
│ │ ├── App.java
│ │ ├── C.java
│ │ ├── di
│ │ ├── AccountsManageModule.java
│ │ ├── ActivityScope.java
│ │ ├── AddTokenModule.java
│ │ ├── AppComponent.java
│ │ ├── BuildersModule.java
│ │ ├── ConfirmationModule.java
│ │ ├── FragmentScope.java
│ │ ├── GasSettingsModule.java
│ │ ├── ImportModule.java
│ │ ├── RepositoriesModule.java
│ │ ├── SendModule.java
│ │ ├── SettingsFragmentModule.java
│ │ ├── SettingsModule.java
│ │ ├── SplashModule.java
│ │ ├── TokensModule.java
│ │ ├── ToolsModule.java
│ │ ├── TransactionDetailModule.java
│ │ └── TransactionsModule.java
│ │ ├── entity
│ │ ├── Address.java
│ │ ├── ApiErrorException.java
│ │ ├── ErrorEnvelope.java
│ │ ├── GasSettings.java
│ │ ├── NetworkInfo.java
│ │ ├── ServiceErrorException.java
│ │ ├── ServiceException.java
│ │ ├── Ticker.java
│ │ ├── Token.java
│ │ ├── TokenInfo.java
│ │ ├── Transaction.java
│ │ ├── TransactionContract.java
│ │ ├── TransactionOperation.java
│ │ └── Wallet.java
│ │ ├── interact
│ │ ├── AddTokenInteract.java
│ │ ├── CreateTransactionInteract.java
│ │ ├── CreateTransactionInteractType.java
│ │ ├── CreateWalletInteract.java
│ │ ├── DeleteWalletInteract.java
│ │ ├── ExportWalletInteract.java
│ │ ├── FetchGasSettingsInteract.java
│ │ ├── FetchTokensInteract.java
│ │ ├── FetchTransactionsInteract.java
│ │ ├── FetchWalletsInteract.java
│ │ ├── FindDefaultNetworkInteract.java
│ │ ├── FindDefaultWalletInteract.java
│ │ ├── GetDefaultWalletBalance.java
│ │ ├── ImportWalletInteract.java
│ │ ├── SetDefaultWalletInteract.java
│ │ └── rx
│ │ │ └── operator
│ │ │ ├── CompletableErrorProxyOperator.java
│ │ │ ├── Operators.java
│ │ │ └── SavePasswordOperator.java
│ │ ├── repository
│ │ ├── EthereumNetworkRepository.java
│ │ ├── EthereumNetworkRepositoryType.java
│ │ ├── OnNetworkChangeListener.java
│ │ ├── PasswordStore.java
│ │ ├── PreferenceRepositoryType.java
│ │ ├── RealmTokenSource.java
│ │ ├── SharedPreferenceRepository.java
│ │ ├── TokenLocalSource.java
│ │ ├── TokenRepository.java
│ │ ├── TokenRepositoryType.java
│ │ ├── TransactionInDiskSource.java
│ │ ├── TransactionInMemorySource.java
│ │ ├── TransactionLocalSource.java
│ │ ├── TransactionRepository.java
│ │ ├── TransactionRepositoryType.java
│ │ ├── TrustPasswordStore.java
│ │ ├── WalletRepository.java
│ │ ├── WalletRepositoryType.java
│ │ └── entity
│ │ │ └── RealmTokenInfo.java
│ │ ├── router
│ │ ├── AddTokenRouter.java
│ │ ├── ConfirmationRouter.java
│ │ ├── ExternalBrowserRouter.java
│ │ ├── GasSettingsRouter.java
│ │ ├── ImportWalletRouter.java
│ │ ├── ManageWalletsRouter.java
│ │ ├── MyAddressRouter.java
│ │ ├── MyTokensRouter.java
│ │ ├── SendRouter.java
│ │ ├── SendTokenRouter.java
│ │ ├── SettingsRouter.java
│ │ ├── TransactionDetailRouter.java
│ │ └── TransactionsRouter.java
│ │ ├── service
│ │ ├── AccountKeystoreService.java
│ │ ├── BlockExplorerClient.java
│ │ ├── BlockExplorerClientType.java
│ │ ├── CoinmarketcapTickerService.java
│ │ ├── EthplorerTokenService.java
│ │ ├── GethKeystoreAccountService.java
│ │ ├── TickerService.java
│ │ ├── TokenExplorerClientType.java
│ │ └── TrustWalletTickerService.java
│ │ ├── ui
│ │ ├── AddTokenActivity.java
│ │ ├── BaseActivity.java
│ │ ├── ConfirmationActivity.java
│ │ ├── GasSettingsActivity.java
│ │ ├── ImportKeystoreFragment.java
│ │ ├── ImportPrivateKeyFragment.java
│ │ ├── ImportWalletActivity.java
│ │ ├── MyAddressActivity.java
│ │ ├── SendActivity.java
│ │ ├── SettingsActivity.java
│ │ ├── SettingsFragment.java
│ │ ├── SplashActivity.java
│ │ ├── TokensActivity.java
│ │ ├── TransactionDetailActivity.java
│ │ ├── TransactionsActivity.java
│ │ ├── WalletsActivity.java
│ │ ├── barcode
│ │ │ ├── BarcodeCaptureActivity.java
│ │ │ ├── BarcodeTracker.java
│ │ │ └── BarcodeTrackerFactory.java
│ │ ├── camera
│ │ │ ├── CameraSource.java
│ │ │ └── CameraSourcePreview.java
│ │ └── widget
│ │ │ ├── OnBackupClickListener.java
│ │ │ ├── OnDepositClickListener.java
│ │ │ ├── OnImportKeystoreListener.java
│ │ │ ├── OnImportPrivateKeyListener.java
│ │ │ ├── OnTokenClickListener.java
│ │ │ ├── OnTransactionClickListener.java
│ │ │ ├── adapter
│ │ │ ├── TabPagerAdapter.java
│ │ │ ├── TokensAdapter.java
│ │ │ ├── TransactionsAdapter.java
│ │ │ └── WalletsAdapter.java
│ │ │ ├── entity
│ │ │ ├── DateSortedItem.java
│ │ │ ├── SortedItem.java
│ │ │ ├── TimestampSortedItem.java
│ │ │ └── TransactionSortedItem.java
│ │ │ └── holder
│ │ │ ├── BinderViewHolder.java
│ │ │ ├── TokenHolder.java
│ │ │ ├── TransactionDateHolder.java
│ │ │ ├── TransactionHolder.java
│ │ │ └── WalletHolder.java
│ │ ├── util
│ │ ├── BalanceUtils.java
│ │ ├── KS.java
│ │ ├── KeyboardUtils.java
│ │ ├── LogInterceptor.java
│ │ ├── QRURLParser.java
│ │ └── RootUtil.java
│ │ ├── viewmodel
│ │ ├── AddTokenViewModel.java
│ │ ├── AddTokenViewModelFactory.java
│ │ ├── BaseNavigationActivity.java
│ │ ├── BaseViewModel.java
│ │ ├── ConfirmationViewModel.java
│ │ ├── ConfirmationViewModelFactory.java
│ │ ├── CreateAccountViewModel.java
│ │ ├── CreateAccountViewModelFactory.java
│ │ ├── GasSettingsViewModel.java
│ │ ├── GasSettingsViewModelFactory.java
│ │ ├── ImportWalletViewModel.java
│ │ ├── ImportWalletViewModelFactory.java
│ │ ├── SendViewModel.java
│ │ ├── SendViewModelFactory.java
│ │ ├── SplashViewModel.java
│ │ ├── SplashViewModelFactory.java
│ │ ├── TokensViewModel.java
│ │ ├── TokensViewModelFactory.java
│ │ ├── TransactionDetailViewModel.java
│ │ ├── TransactionDetailViewModelFactory.java
│ │ ├── TransactionsViewModel.java
│ │ ├── TransactionsViewModelFactory.java
│ │ ├── WalletsViewModel.java
│ │ └── WalletsViewModelFactory.java
│ │ └── widget
│ │ ├── AddWalletView.java
│ │ ├── BackupView.java
│ │ ├── BackupWarningView.java
│ │ ├── DepositView.java
│ │ ├── EmptyTransactionsView.java
│ │ ├── HelperTextInputLayout.java
│ │ └── SystemView.java
│ ├── res
│ ├── drawable-hdpi
│ │ ├── ic_action_deposit.png
│ │ ├── ic_facebook.png
│ │ ├── settings_rpc_server.png
│ │ └── token_icon.png
│ ├── drawable-mdpi
│ │ ├── ic_action_deposit.png
│ │ ├── ic_facebook.png
│ │ ├── ic_share_white_24dp.xml
│ │ ├── settings_rpc_server.png
│ │ └── token_icon.png
│ ├── drawable-nodpi
│ │ ├── no_transactions_mascot.png
│ │ ├── onboarding_erc20.png
│ │ └── settings_facebook.png
│ ├── drawable-v21
│ │ └── bg_ripple_primary_color.xml
│ ├── drawable-xhdpi
│ │ ├── ic_action_deposit.png
│ │ ├── ic_facebook.png
│ │ ├── settings_rpc_server.png
│ │ └── token_icon.png
│ ├── drawable-xxhdpi
│ │ ├── ic_action_deposit.png
│ │ ├── ic_facebook.png
│ │ ├── settings_rpc_server.png
│ │ └── token_icon.png
│ ├── drawable
│ │ ├── bg_ripple_primary_color.xml
│ │ ├── ic_add_black_24dp.xml
│ │ ├── ic_add_circle_black_24dp.xml
│ │ ├── ic_add_white_24dp.xml
│ │ ├── ic_arrow_downward_black_24dp.xml
│ │ ├── ic_arrow_upward_black_24dp.xml
│ │ ├── ic_attach_money_white_24dp.xml
│ │ ├── ic_autorenew_black_24dp.xml
│ │ ├── ic_backup_black_24dp.xml
│ │ ├── ic_call_received_white_24dp.xml
│ │ ├── ic_chevron_right_black_24dp.xml
│ │ ├── ic_code_black_24dp.xml
│ │ ├── ic_content_paste_black_24dp.xml
│ │ ├── ic_dashboard_black_24dp.xml
│ │ ├── ic_delete_forever_black_24dp.xml
│ │ ├── ic_error_outline_black_24dp.xml
│ │ ├── ic_file_download_black_24dp.xml
│ │ ├── ic_home_black_24dp.xml
│ │ ├── ic_import_export_black_24dp.xml
│ │ ├── ic_notifications_black_24dp.xml
│ │ ├── ic_send_white_24dp.xml
│ │ ├── ic_settings_white_24dp.xml
│ │ ├── ic_share_black_24dp.xml
│ │ ├── ic_swap_horiz_white_24dp.xml
│ │ ├── ic_warning_black_24dp.xml
│ │ └── splash_background.xml
│ ├── font
│ │ ├── roboto_bolt.ttf
│ │ └── roboto_regular.ttf
│ ├── layout-land
│ │ └── layout_dialog_warning_backup.xml
│ ├── layout
│ │ ├── account_list_content.xml
│ │ ├── activity_add_token.xml
│ │ ├── activity_confirm.xml
│ │ ├── activity_gas_settings.xml
│ │ ├── activity_import_wallet.xml
│ │ ├── activity_my_address.xml
│ │ ├── activity_send.xml
│ │ ├── activity_settings.xml
│ │ ├── activity_splash.xml
│ │ ├── activity_tokens.xml
│ │ ├── activity_transaction_detail.xml
│ │ ├── activity_transactions.xml
│ │ ├── activity_wallets.xml
│ │ ├── fragment_import_keystore.xml
│ │ ├── fragment_import_private_key.xml
│ │ ├── item_token.xml
│ │ ├── item_transaction.xml
│ │ ├── item_transactions_date_head.xml
│ │ ├── item_wallet_manage.xml
│ │ ├── layout_app_bar.xml
│ │ ├── layout_app_bar_with_tab.xml
│ │ ├── layout_barcode_capture.xml
│ │ ├── layout_dialog_add_account.xml
│ │ ├── layout_dialog_backup.xml
│ │ ├── layout_dialog_deposit.xml
│ │ ├── layout_dialog_warning_backup.xml
│ │ ├── layout_empty_add_account.xml
│ │ ├── layout_empty_transactions.xml
│ │ ├── layout_page_intro.xml
│ │ ├── layout_simple_toolbar.xml
│ │ └── layout_system_view.xml
│ ├── menu
│ │ ├── confirmation_menu.xml
│ │ ├── menu_add.xml
│ │ ├── menu_deposit.xml
│ │ ├── menu_main_network.xml
│ │ ├── menu_secondary_network.xml
│ │ ├── menu_settings.xml
│ │ ├── menu_share.xml
│ │ ├── send_menu.xml
│ │ └── send_settings_menu.xml
│ ├── mipmap-anydpi-v26
│ │ ├── ic_launcher.xml
│ │ ├── ic_launcher_round.xml
│ │ └── ic_splash.png
│ ├── mipmap-hdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_background.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_round.png
│ │ ├── settings_backup.png
│ │ ├── settings_bug.png
│ │ ├── settings_donate.png
│ │ ├── settings_email.png
│ │ ├── settings_open_source.png
│ │ ├── settings_privacy_policy.png
│ │ ├── settings_rating.png
│ │ ├── settings_server.png
│ │ ├── settings_telegram.png
│ │ ├── settings_terms.png
│ │ ├── settings_twitter.png
│ │ └── token_logo.png
│ ├── mipmap-mdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_background.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_round.png
│ │ ├── settings_backup.png
│ │ ├── settings_bug.png
│ │ ├── settings_donate.png
│ │ ├── settings_email.png
│ │ ├── settings_open_source.png
│ │ ├── settings_privacy_policy.png
│ │ ├── settings_rating.png
│ │ ├── settings_server.png
│ │ ├── settings_telegram.png
│ │ ├── settings_terms.png
│ │ ├── settings_twitter.png
│ │ └── token_logo.png
│ ├── mipmap-xhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_background.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_round.png
│ │ ├── settings_backup.png
│ │ ├── settings_bug.png
│ │ ├── settings_donate.png
│ │ ├── settings_email.png
│ │ ├── settings_open_source.png
│ │ ├── settings_privacy_policy.png
│ │ ├── settings_rating.png
│ │ ├── settings_server.png
│ │ ├── settings_telegram.png
│ │ ├── settings_terms.png
│ │ ├── settings_twitter.png
│ │ └── token_logo.png
│ ├── mipmap-xxhdpi
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_background.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_round.png
│ │ ├── settings_backup.png
│ │ ├── settings_bug.png
│ │ ├── settings_donate.png
│ │ ├── settings_email.png
│ │ ├── settings_open_source.png
│ │ ├── settings_privacy_policy.png
│ │ ├── settings_rating.png
│ │ ├── settings_server.png
│ │ ├── settings_telegram.png
│ │ ├── settings_terms.png
│ │ ├── settings_twitter.png
│ │ └── token_logo.png
│ ├── mipmap-xxxhdpi
│ │ ├── backup_warning.png
│ │ ├── ic_launcher.png
│ │ ├── ic_launcher_background.png
│ │ ├── ic_launcher_foreground.png
│ │ ├── ic_launcher_round.png
│ │ ├── ic_splash.png
│ │ ├── onboarding_lock.png
│ │ ├── onboarding_open_source.png
│ │ ├── onboarding_rocket.png
│ │ ├── qr_code_icon.png
│ │ ├── settings_backup.png
│ │ ├── settings_bug.png
│ │ ├── settings_donate.png
│ │ ├── settings_email.png
│ │ ├── settings_export.png
│ │ ├── settings_open_source.png
│ │ ├── settings_privacy_policy.png
│ │ ├── settings_rating.png
│ │ ├── settings_server.png
│ │ ├── settings_telegram.png
│ │ ├── settings_terms.png
│ │ ├── settings_twitter.png
│ │ └── token_logo.png
│ ├── values-land
│ │ └── dimens.xml
│ ├── values
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── helper_input_layout_res.xml
│ │ ├── ic_launcher_background.xml
│ │ ├── strings.xml
│ │ └── styles.xml
│ └── xml
│ │ └── fragment_settings.xml
│ └── settings_rating-web.png
├── build.gradle
├── gradle.properties
├── gradle
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── settings.gradle
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea
2 | .DS_Store
3 | /captures
4 | .externalNativeBuild
5 |
6 | ### Android ###
7 | # Built application files
8 | *.apk
9 | *.ap_
10 | *.iml
11 | *.swp
12 | *.swo
13 |
14 | # Files for the Dalvik VM
15 | *.dex
16 |
17 | # Java class files
18 | *.class
19 |
20 | # Generated files
21 | bin/
22 | gen/
23 |
24 | # Gradle files
25 | .gradle/
26 | /build
27 | app/release
28 |
29 | # Fastlane
30 | fastlane/report.xml
31 |
32 | # Local configuration file (sdk path, etc)
33 | /local.properties
34 |
35 | # Proguard folder generated by Eclipse
36 | proguard/
37 |
38 | # Log Files
39 | *.log
40 |
41 | # Android Studio Navigation editor temp files
42 | .navigation/
43 |
44 | ### Android Patch ###
45 | gen-external-apklibs
46 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: android
2 | sudo: false
3 | android:
4 | components:
5 | # Uncomment the lines below if you want to
6 | # use the latest revision of Android SDK Tools
7 | - tools
8 | - platform-tools
9 |
10 | # The BuildTools version used by your project
11 | - build-tools-26.0.2
12 |
13 | # The SDK version used to compile your project
14 | - android-26
15 |
16 | - extra-android-m2repository
17 | - extra-google-android-support
18 |
19 | # Specify at least one system image,
20 | # if you need to run emulator(s) during your tests
21 | - sys-img-x86-android-26
22 |
23 | licenses:
24 | - 'android-sdk-preview-license-.+'
25 | - 'android-sdk-license-.+'
26 | - 'google-gdk-license-.+'
27 |
28 | install:
29 | - true
30 |
31 | script:
32 | - ./gradlew build
33 |
34 | after_success:
35 | - bash <(curl -s https://copilot.blackducksoftware.com/ci/travis/scripts/upload)
36 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Trust - Ethereum Wallet for Android
2 |
3 | [](https://travis-ci.org/TrustWallet/trust-wallet-android)
4 | [](https://github.com/fastlane/fastlane/blob/master/LICENSE)
5 |
6 | [
](https://play.google.com/store/apps/details?id=com.wallet.crypto.trustapp)
7 |
8 | [
](https://play.google.com/store/apps/details?id=com.wallet.crypto.trustapp)
9 |
10 | Welcome to Trust's open source Android app!
11 |
12 | Please read our post on why Android open source development harm our users: https://medium.com/@trustwallet/why-open-sourcing-android-app-could-be-a-harm-to-the-crypto-community-fb3ae1707dc6
13 |
14 | Website: https://trustwalletapp.com
15 |
16 | Download Android version: https://play.google.com/store/apps/details?id=com.wallet.crypto.trustapp
17 |
18 | Blog: https://medium.com/@trustwallet
19 |
20 |
21 |
--------------------------------------------------------------------------------
/app/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 |
--------------------------------------------------------------------------------
/app/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | # Add project specific ProGuard rules here.
2 | # By default, the flags in this file are appended to flags specified
3 | # in /home/marat/Android/Sdk/tools/proguard/proguard-android.txt
4 | # You can edit the include path and order by changing the proguardFiles
5 | # directive in build.gradle.
6 | #
7 | # For more details, see
8 | # http://developer.android.com/guide/developing/tools/proguard.html
9 |
10 | # Add any project specific keep options here:
11 |
12 | # If your project uses WebView with JS, uncomment the following
13 | # and specify the fully qualified class name to the JavaScript interface
14 | # class:
15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 | # public *;
17 | #}
18 |
19 | # Uncomment this to preserve the line number information for
20 | # debugging stack traces.
21 | #-keepattributes SourceFile,LineNumberTable
22 |
23 | # If you keep the line number information, uncomment this to
24 | # hide the original source file name.
25 | #-renamesourcefileattribute SourceFile
26 |
--------------------------------------------------------------------------------
/app/src/main/ic_launcher-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/ic_launcher-web.png
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/App.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp;
2 |
3 | import android.app.Activity;
4 | import android.support.multidex.MultiDexApplication;
5 |
6 | import com.wallet.crypto.trustapp.di.DaggerAppComponent;
7 |
8 | import javax.inject.Inject;
9 |
10 | import dagger.android.AndroidInjector;
11 | import dagger.android.DispatchingAndroidInjector;
12 | import dagger.android.HasActivityInjector;
13 | import io.realm.Realm;
14 |
15 | public class App extends MultiDexApplication implements HasActivityInjector {
16 |
17 | @Inject
18 | DispatchingAndroidInjector dispatchingAndroidInjector;
19 |
20 | @Override
21 | public void onCreate() {
22 | super.onCreate();
23 | Realm.init(this);
24 | DaggerAppComponent
25 | .builder()
26 | .application(this)
27 | .build()
28 | .inject(this);
29 | }
30 |
31 | @Override
32 | public AndroidInjector activityInjector() {
33 | return dispatchingAndroidInjector;
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/di/ActivityScope.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.di;
2 |
3 | import java.lang.annotation.Retention;
4 |
5 | import javax.inject.Scope;
6 |
7 | import static java.lang.annotation.RetentionPolicy.RUNTIME;
8 |
9 | @Scope
10 | @Retention(RUNTIME)
11 | public @interface ActivityScope {
12 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/di/AddTokenModule.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.di;
2 |
3 | import com.wallet.crypto.trustapp.interact.AddTokenInteract;
4 | import com.wallet.crypto.trustapp.interact.FindDefaultWalletInteract;
5 | import com.wallet.crypto.trustapp.repository.TokenRepositoryType;
6 | import com.wallet.crypto.trustapp.repository.WalletRepositoryType;
7 | import com.wallet.crypto.trustapp.router.MyTokensRouter;
8 | import com.wallet.crypto.trustapp.viewmodel.AddTokenViewModelFactory;
9 |
10 | import dagger.Module;
11 | import dagger.Provides;
12 |
13 | @Module
14 | public class AddTokenModule {
15 |
16 | @Provides
17 | AddTokenViewModelFactory addTokenViewModelFactory(
18 | AddTokenInteract addTokenInteract,
19 | FindDefaultWalletInteract findDefaultWalletInteract,
20 | MyTokensRouter myTokensRouter) {
21 | return new AddTokenViewModelFactory(
22 | addTokenInteract, findDefaultWalletInteract, myTokensRouter);
23 | }
24 |
25 | @Provides
26 | AddTokenInteract provideAddTokenInteract(
27 | TokenRepositoryType tokenRepository,
28 | WalletRepositoryType walletRepository) {
29 | return new AddTokenInteract(walletRepository, tokenRepository);
30 | }
31 |
32 | @Provides
33 | FindDefaultWalletInteract provideFindDefaultWalletInteract(WalletRepositoryType walletRepository) {
34 | return new FindDefaultWalletInteract(walletRepository);
35 | }
36 |
37 | @Provides
38 | MyTokensRouter provideMyTokensRouter() {
39 | return new MyTokensRouter();
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/di/AppComponent.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.di;
2 |
3 | import com.wallet.crypto.trustapp.App;
4 |
5 | import javax.inject.Singleton;
6 |
7 | import dagger.BindsInstance;
8 | import dagger.Component;
9 | import dagger.android.support.AndroidSupportInjectionModule;
10 |
11 | @Singleton
12 | @Component(modules = {
13 | AndroidSupportInjectionModule.class,
14 | ToolsModule.class,
15 | RepositoriesModule.class,
16 | BuildersModule.class })
17 | public interface AppComponent {
18 |
19 | @Component.Builder
20 | interface Builder {
21 | @BindsInstance
22 | Builder application(App app);
23 | AppComponent build();
24 | }
25 | void inject(App app);
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/di/FragmentScope.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.di;
2 |
3 | import java.lang.annotation.Retention;
4 |
5 | import javax.inject.Scope;
6 |
7 | import static java.lang.annotation.RetentionPolicy.RUNTIME;
8 |
9 | @Scope
10 | @Retention(RUNTIME)
11 | public @interface FragmentScope {
12 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/di/GasSettingsModule.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.di;
2 |
3 |
4 | import com.wallet.crypto.trustapp.interact.FindDefaultNetworkInteract;
5 | import com.wallet.crypto.trustapp.repository.EthereumNetworkRepositoryType;
6 | import com.wallet.crypto.trustapp.viewmodel.GasSettingsViewModelFactory;
7 |
8 | import dagger.Module;
9 | import dagger.Provides;
10 |
11 | @Module
12 | public class GasSettingsModule {
13 |
14 | @Provides
15 | public GasSettingsViewModelFactory provideGasSettingsViewModelFactory(FindDefaultNetworkInteract findDefaultNetworkInteract) {
16 | return new GasSettingsViewModelFactory(findDefaultNetworkInteract);
17 | }
18 |
19 | @Provides
20 | FindDefaultNetworkInteract provideFindDefaultNetworkInteract(
21 | EthereumNetworkRepositoryType ethereumNetworkRepositoryType) {
22 | return new FindDefaultNetworkInteract(ethereumNetworkRepositoryType);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/di/ImportModule.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.di;
2 |
3 | import com.wallet.crypto.trustapp.interact.ImportWalletInteract;
4 | import com.wallet.crypto.trustapp.repository.PasswordStore;
5 | import com.wallet.crypto.trustapp.repository.WalletRepositoryType;
6 | import com.wallet.crypto.trustapp.viewmodel.ImportWalletViewModelFactory;
7 |
8 | import dagger.Module;
9 | import dagger.Provides;
10 |
11 | @Module
12 | class ImportModule {
13 | @Provides
14 | ImportWalletViewModelFactory provideImportWalletViewModelFactory(
15 | ImportWalletInteract importWalletInteract) {
16 | return new ImportWalletViewModelFactory(importWalletInteract);
17 | }
18 |
19 | @Provides
20 | ImportWalletInteract provideImportWalletInteract(
21 | WalletRepositoryType walletRepository, PasswordStore passwordStore) {
22 | return new ImportWalletInteract(walletRepository, passwordStore);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/di/SendModule.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.di;
2 |
3 | import com.wallet.crypto.trustapp.router.ConfirmationRouter;
4 | import com.wallet.crypto.trustapp.viewmodel.SendViewModelFactory;
5 |
6 | import dagger.Module;
7 | import dagger.Provides;
8 |
9 | @Module
10 | class SendModule {
11 | @Provides
12 | SendViewModelFactory provideSendViewModelFactory(ConfirmationRouter confirmationRouter) {
13 | return new SendViewModelFactory(confirmationRouter);
14 | }
15 |
16 | @Provides
17 | ConfirmationRouter provideConfirmationRouter() {
18 | return new ConfirmationRouter();
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/di/SettingsFragmentModule.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.di;
2 |
3 | import com.wallet.crypto.trustapp.interact.FindDefaultWalletInteract;
4 | import com.wallet.crypto.trustapp.repository.WalletRepositoryType;
5 | import com.wallet.crypto.trustapp.router.ManageWalletsRouter;
6 |
7 | import dagger.Module;
8 | import dagger.Provides;
9 |
10 | @Module
11 | class SettingsFragmentModule {
12 | @Provides
13 | FindDefaultWalletInteract provideFindDefaultWalletInteract(WalletRepositoryType walletRepository) {
14 | return new FindDefaultWalletInteract(walletRepository);
15 | }
16 |
17 | @Provides
18 | ManageWalletsRouter provideManageWalletsRouter() {
19 | return new ManageWalletsRouter();
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/di/SettingsModule.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.di;
2 |
3 | import com.wallet.crypto.trustapp.ui.SettingsFragment;
4 |
5 | import dagger.Module;
6 | import dagger.android.ContributesAndroidInjector;
7 |
8 | @Module
9 | public interface SettingsModule {
10 | @FragmentScope
11 | @ContributesAndroidInjector(modules = {SettingsFragmentModule.class})
12 | SettingsFragment settingsFragment();
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/di/SplashModule.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.di;
2 |
3 | import com.wallet.crypto.trustapp.interact.FetchWalletsInteract;
4 | import com.wallet.crypto.trustapp.repository.WalletRepositoryType;
5 | import com.wallet.crypto.trustapp.viewmodel.SplashViewModelFactory;
6 |
7 | import dagger.Module;
8 | import dagger.Provides;
9 |
10 | @Module
11 | public class SplashModule {
12 |
13 | @Provides
14 | SplashViewModelFactory provideSplashViewModelFactory(FetchWalletsInteract fetchWalletsInteract) {
15 | return new SplashViewModelFactory(fetchWalletsInteract);
16 | }
17 |
18 | @Provides
19 | FetchWalletsInteract provideFetchWalletInteract(WalletRepositoryType walletRepository) {
20 | return new FetchWalletsInteract(walletRepository);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/di/TokensModule.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.di;
2 |
3 | import com.wallet.crypto.trustapp.interact.FetchTokensInteract;
4 | import com.wallet.crypto.trustapp.interact.FindDefaultNetworkInteract;
5 | import com.wallet.crypto.trustapp.repository.EthereumNetworkRepositoryType;
6 | import com.wallet.crypto.trustapp.repository.TokenRepositoryType;
7 | import com.wallet.crypto.trustapp.router.AddTokenRouter;
8 | import com.wallet.crypto.trustapp.router.SendTokenRouter;
9 | import com.wallet.crypto.trustapp.router.TransactionsRouter;
10 | import com.wallet.crypto.trustapp.viewmodel.TokensViewModelFactory;
11 |
12 | import dagger.Module;
13 | import dagger.Provides;
14 |
15 | @Module
16 | class TokensModule {
17 |
18 | @Provides
19 | TokensViewModelFactory provideTokensViewModelFactory(
20 | FindDefaultNetworkInteract findDefaultNetworkInteract,
21 | FetchTokensInteract fetchTokensInteract,
22 | AddTokenRouter addTokenRouter,
23 | SendTokenRouter sendTokenRouter,
24 | TransactionsRouter transactionsRouter) {
25 | return new TokensViewModelFactory(
26 | findDefaultNetworkInteract,
27 | fetchTokensInteract,
28 | addTokenRouter,
29 | sendTokenRouter,
30 | transactionsRouter);
31 | }
32 |
33 | @Provides
34 | FindDefaultNetworkInteract provideFindDefaultNetworkInteract(
35 | EthereumNetworkRepositoryType networkRepository) {
36 | return new FindDefaultNetworkInteract(networkRepository);
37 | }
38 |
39 | @Provides
40 | FetchTokensInteract provideFetchTokensInteract(TokenRepositoryType tokenRepository) {
41 | return new FetchTokensInteract(tokenRepository);
42 | }
43 |
44 | @Provides
45 | AddTokenRouter provideAddTokenRouter() {
46 | return new AddTokenRouter();
47 | }
48 |
49 | @Provides
50 | SendTokenRouter provideSendTokenRouter() {
51 | return new SendTokenRouter();
52 | }
53 |
54 | @Provides
55 | TransactionsRouter provideTransactionsRouter() {
56 | return new TransactionsRouter();
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/di/ToolsModule.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.di;
2 |
3 | import android.content.Context;
4 |
5 | import com.google.gson.Gson;
6 | import com.wallet.crypto.trustapp.App;
7 | import com.wallet.crypto.trustapp.repository.PasswordStore;
8 | import com.wallet.crypto.trustapp.repository.TrustPasswordStore;
9 | import com.wallet.crypto.trustapp.util.LogInterceptor;
10 |
11 | import javax.inject.Singleton;
12 |
13 | import dagger.Module;
14 | import dagger.Provides;
15 | import okhttp3.OkHttpClient;
16 |
17 | @Module
18 | class ToolsModule {
19 | @Provides
20 | Context provideContext(App application) {
21 | return application.getApplicationContext();
22 | }
23 |
24 | @Singleton
25 | @Provides
26 | Gson provideGson() {
27 | return new Gson();
28 | }
29 |
30 | @Singleton
31 | @Provides
32 | OkHttpClient okHttpClient() {
33 | return new OkHttpClient.Builder()
34 | .addInterceptor(new LogInterceptor())
35 | .build();
36 | }
37 |
38 | @Singleton
39 | @Provides
40 | PasswordStore passwordStore(Context context) {
41 | return new TrustPasswordStore(context);
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/di/TransactionDetailModule.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.di;
2 |
3 | import com.wallet.crypto.trustapp.interact.FindDefaultNetworkInteract;
4 | import com.wallet.crypto.trustapp.interact.FindDefaultWalletInteract;
5 | import com.wallet.crypto.trustapp.repository.EthereumNetworkRepositoryType;
6 | import com.wallet.crypto.trustapp.repository.WalletRepositoryType;
7 | import com.wallet.crypto.trustapp.router.ExternalBrowserRouter;
8 | import com.wallet.crypto.trustapp.viewmodel.TransactionDetailViewModelFactory;
9 |
10 | import dagger.Module;
11 | import dagger.Provides;
12 |
13 | @Module
14 | public class TransactionDetailModule {
15 |
16 | @Provides
17 | TransactionDetailViewModelFactory provideTransactionDetailViewModelFactory(
18 | FindDefaultNetworkInteract findDefaultNetworkInteract,
19 | FindDefaultWalletInteract findDefaultWalletInteract,
20 | ExternalBrowserRouter externalBrowserRouter) {
21 | return new TransactionDetailViewModelFactory(
22 | findDefaultNetworkInteract, findDefaultWalletInteract, externalBrowserRouter);
23 | }
24 |
25 | @Provides
26 | FindDefaultNetworkInteract provideFindDefaultNetworkInteract(
27 | EthereumNetworkRepositoryType ethereumNetworkRepository) {
28 | return new FindDefaultNetworkInteract(ethereumNetworkRepository);
29 | }
30 |
31 | @Provides
32 | ExternalBrowserRouter externalBrowserRouter() {
33 | return new ExternalBrowserRouter();
34 | }
35 |
36 | @Provides
37 | FindDefaultWalletInteract findDefaultWalletInteract(WalletRepositoryType walletRepository) {
38 | return new FindDefaultWalletInteract(walletRepository);
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/entity/Address.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.entity;
2 |
3 | import android.text.TextUtils;
4 |
5 | import java.util.regex.Pattern;
6 |
7 | public class Address {
8 |
9 | private static final Pattern ignoreCaseAddrPattern = Pattern.compile("(?i)^(0x)?[0-9a-f]{40}$");
10 | private static final Pattern lowerCaseAddrPattern = Pattern.compile("^(0x)?[0-9a-f]{40}$");
11 | private static final Pattern upperCaseAddrPattern = Pattern.compile("^(0x)?[0-9A-F]{40}$");
12 |
13 | public final String value;
14 |
15 | public Address(String value) {
16 | this.value = value;
17 | }
18 |
19 | public static boolean isAddress(String address) {
20 | return !(TextUtils.isEmpty(address) || !ignoreCaseAddrPattern.matcher(address).find())
21 | && (lowerCaseAddrPattern.matcher(address).find() || upperCaseAddrPattern.matcher(address).find());
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/entity/ApiErrorException.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.entity;
2 |
3 | public class ApiErrorException extends Exception {
4 | private final ErrorEnvelope errorEnvelope;
5 |
6 | public ApiErrorException(ErrorEnvelope errorEnvelope) {
7 | super(errorEnvelope.message);
8 |
9 | this.errorEnvelope = errorEnvelope;
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/entity/ErrorEnvelope.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.entity;
2 |
3 | import android.support.annotation.Nullable;
4 |
5 | import com.wallet.crypto.trustapp.C;
6 |
7 | public class ErrorEnvelope {
8 | public final int code;
9 | @Nullable
10 | public final String message;
11 | @Nullable
12 | private final Throwable throwable;
13 |
14 | public ErrorEnvelope(@Nullable String message) {
15 | this(C.ErrorCode.UNKNOWN, message);
16 | }
17 |
18 | public ErrorEnvelope(int code, @Nullable String message) {
19 | this(code, message, null);
20 | }
21 |
22 | public ErrorEnvelope(int code, @Nullable String message, @Nullable Throwable throwable) {
23 | this.code = code;
24 | this.message = message;
25 | this.throwable = throwable;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/entity/GasSettings.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.entity;
2 |
3 |
4 | import android.os.Parcel;
5 | import android.os.Parcelable;
6 |
7 | import java.math.BigInteger;
8 |
9 | public class GasSettings implements Parcelable {
10 | public final BigInteger gasPrice;
11 | public final BigInteger gasLimit;
12 |
13 | public GasSettings(BigInteger gasPrice, BigInteger gasLimit) {
14 | this.gasPrice = gasPrice;
15 | this.gasLimit = gasLimit;
16 | }
17 |
18 | private GasSettings(Parcel in) {
19 | gasPrice = new BigInteger(in.readString());
20 | gasLimit = new BigInteger(in.readString());
21 | }
22 |
23 | public static final Creator CREATOR = new Creator() {
24 | @Override
25 | public GasSettings createFromParcel(Parcel in) {
26 | return new GasSettings(in);
27 | }
28 |
29 | @Override
30 | public GasSettings[] newArray(int size) {
31 | return new GasSettings[size];
32 | }
33 | };
34 |
35 | @Override
36 | public int describeContents() {
37 | return 0;
38 | }
39 |
40 | @Override
41 | public void writeToParcel(Parcel parcel, int i) {
42 | parcel.writeString(gasPrice.toString(10));
43 | parcel.writeString(gasLimit.toString(10));
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/entity/NetworkInfo.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.entity;
2 |
3 | public class NetworkInfo {
4 | public final String name;
5 | public final String symbol;
6 | public final String rpcServerUrl;
7 | public final String backendUrl;
8 | public final String etherscanUrl;
9 | public final int chainId;
10 | public final boolean isMainNetwork;
11 |
12 | public NetworkInfo(
13 | String name,
14 | String symbol,
15 | String rpcServerUrl,
16 | String backendUrl,
17 | String etherscanUrl,
18 | int chainId,
19 | boolean isMainNetwork) {
20 | this.name = name;
21 | this.symbol = symbol;
22 | this.rpcServerUrl = rpcServerUrl;
23 | this.backendUrl = backendUrl;
24 | this.etherscanUrl = etherscanUrl;
25 | this.chainId = chainId;
26 | this.isMainNetwork = isMainNetwork;
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/entity/ServiceErrorException.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.entity;
2 |
3 | import android.support.annotation.Nullable;
4 |
5 | public class ServiceErrorException extends Exception {
6 |
7 | public static final int UNKNOWN_ERROR = -1;
8 | public static final int INVALID_DATA = 1;
9 | public static final int KEY_STORE_ERROR = 1001;
10 | public static final int FAIL_TO_SAVE_IV_FILE = 1002;
11 | public static final int KEY_STORE_SECRET = 1003;
12 | public static final int USER_NOT_AUTHENTICATED = 1004;
13 | public static final int KEY_IS_GONE = 1005;
14 | public static final int IV_OR_ALIAS_NO_ON_DISK = 1006;
15 | public static final int INVALID_KEY = 1007;
16 |
17 | public final int code;
18 |
19 | public ServiceErrorException(int code, @Nullable String message, Throwable throwable) {
20 | super(message, throwable);
21 | this.code = code;
22 | }
23 |
24 | public ServiceErrorException(int code, @Nullable String message) {
25 | this(code, message, null);
26 | }
27 |
28 | public ServiceErrorException(int code) {
29 | this(code, null);
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/entity/ServiceException.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.entity;
2 |
3 | public class ServiceException extends Exception {
4 | public final ErrorEnvelope error;
5 |
6 | public ServiceException(String message) {
7 | super(message);
8 |
9 | error = new ErrorEnvelope(message);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/entity/Ticker.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.entity;
2 |
3 | import com.google.gson.annotations.SerializedName;
4 |
5 | public class Ticker {
6 | public String id;
7 | public String name;
8 | public String symbol;
9 | public String price;
10 | @SerializedName("percent_change_24h")
11 | public String percentChange24h;
12 | }
13 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/entity/Token.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.entity;
2 |
3 | import android.os.Parcel;
4 | import android.os.Parcelable;
5 |
6 | import java.math.BigDecimal;
7 | import java.math.BigInteger;
8 |
9 | public class Token implements Parcelable {
10 | public final TokenInfo tokenInfo;
11 | public final BigDecimal balance;
12 |
13 | public Token(TokenInfo tokenInfo, BigDecimal balance) {
14 | this.tokenInfo = tokenInfo;
15 | this.balance = balance;
16 | }
17 |
18 | private Token(Parcel in) {
19 | tokenInfo = in.readParcelable(TokenInfo.class.getClassLoader());
20 | balance = new BigDecimal(in.readString());
21 | }
22 |
23 | public static final Creator CREATOR = new Creator() {
24 | @Override
25 | public Token createFromParcel(Parcel in) {
26 | return new Token(in);
27 | }
28 |
29 | @Override
30 | public Token[] newArray(int size) {
31 | return new Token[size];
32 | }
33 | };
34 |
35 | @Override
36 | public int describeContents() {
37 | return 0;
38 | }
39 |
40 | @Override
41 | public void writeToParcel(Parcel dest, int flags) {
42 | dest.writeParcelable(tokenInfo, flags);
43 | dest.writeString(balance.toString());
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/entity/TokenInfo.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.entity;
2 |
3 | import android.os.Parcel;
4 | import android.os.Parcelable;
5 |
6 | public class TokenInfo implements Parcelable {
7 | public final String address;
8 | public final String name;
9 | public final String symbol;
10 | public final int decimals;
11 |
12 | public TokenInfo(String address, String name, String symbol, int decimals) {
13 | this.address = address;
14 | this.name = name;
15 | this.symbol = symbol;
16 | this.decimals = decimals;
17 | }
18 |
19 | private TokenInfo(Parcel in) {
20 | address = in.readString();
21 | name = in.readString();
22 | symbol = in.readString();
23 | decimals = in.readInt();
24 | }
25 |
26 | public static final Creator CREATOR = new Creator() {
27 | @Override
28 | public TokenInfo createFromParcel(Parcel in) {
29 | return new TokenInfo(in);
30 | }
31 |
32 | @Override
33 | public TokenInfo[] newArray(int size) {
34 | return new TokenInfo[size];
35 | }
36 | };
37 |
38 | @Override
39 | public int describeContents() {
40 | return 0;
41 | }
42 |
43 | @Override
44 | public void writeToParcel(Parcel dest, int flags) {
45 | dest.writeString(address);
46 | dest.writeString(name);
47 | dest.writeString(symbol);
48 | dest.writeInt(decimals);
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/entity/TransactionContract.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.entity;
2 |
3 | import android.os.Parcel;
4 | import android.os.Parcelable;
5 |
6 | public class TransactionContract implements Parcelable {
7 | public String address;
8 | public String name;
9 | public String totalSupply;
10 | public long decimals;
11 | public String symbol;
12 |
13 | protected TransactionContract(Parcel in) {
14 | address = in.readString();
15 | name = in.readString();
16 | totalSupply = in.readString();
17 | decimals = in.readLong();
18 | symbol = in.readString();
19 | }
20 |
21 | public static final Creator CREATOR = new Creator() {
22 | @Override
23 | public TransactionContract createFromParcel(Parcel in) {
24 | return new TransactionContract(in);
25 | }
26 |
27 | @Override
28 | public TransactionContract[] newArray(int size) {
29 | return new TransactionContract[size];
30 | }
31 | };
32 |
33 | @Override
34 | public int describeContents() {
35 | return 0;
36 | }
37 |
38 | @Override
39 | public void writeToParcel(Parcel parcel, int i) {
40 | parcel.writeString(address);
41 | parcel.writeString(name);
42 | parcel.writeString(totalSupply);
43 | parcel.writeLong(decimals);
44 | parcel.writeString(symbol);
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/entity/TransactionOperation.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.entity;
2 |
3 | import android.os.Parcel;
4 | import android.os.Parcelable;
5 |
6 | public class TransactionOperation implements Parcelable {
7 | public String transactionId;
8 | public String viewType;
9 | public String from;
10 | public String to;
11 | public String value;
12 | public TransactionContract contract;
13 |
14 | public TransactionOperation() {
15 |
16 | }
17 |
18 | private TransactionOperation(Parcel in) {
19 | transactionId = in.readString();
20 | viewType = in.readString();
21 | from = in.readString();
22 | to = in.readString();
23 | value = in.readString();
24 | contract = in.readParcelable(TransactionContract.class.getClassLoader());
25 | }
26 |
27 | public static final Creator CREATOR = new Creator() {
28 | @Override
29 | public TransactionOperation createFromParcel(Parcel in) {
30 | return new TransactionOperation(in);
31 | }
32 |
33 | @Override
34 | public TransactionOperation[] newArray(int size) {
35 | return new TransactionOperation[size];
36 | }
37 | };
38 |
39 | @Override
40 | public int describeContents() {
41 | return 0;
42 | }
43 |
44 | @Override
45 | public void writeToParcel(Parcel parcel, int flags) {
46 | parcel.writeString(transactionId);
47 | parcel.writeString(viewType);
48 | parcel.writeString(from);
49 | parcel.writeString(to);
50 | parcel.writeString(value);
51 | parcel.writeParcelable(contract, flags);
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/entity/Wallet.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.entity;
2 |
3 | import android.os.Parcel;
4 | import android.os.Parcelable;
5 |
6 | public class Wallet implements Parcelable {
7 | public final String address;
8 |
9 | public Wallet(String address) {
10 | this.address = address;
11 | }
12 |
13 | private Wallet(Parcel in) {
14 | address = in.readString();
15 | }
16 |
17 | public static final Creator CREATOR = new Creator() {
18 | @Override
19 | public Wallet createFromParcel(Parcel in) {
20 | return new Wallet(in);
21 | }
22 |
23 | @Override
24 | public Wallet[] newArray(int size) {
25 | return new Wallet[size];
26 | }
27 | };
28 |
29 | public boolean sameAddress(String address) {
30 | return this.address.equals(address);
31 | }
32 |
33 | @Override
34 | public int describeContents() {
35 | return 0;
36 | }
37 |
38 | @Override
39 | public void writeToParcel(Parcel parcel, int i) {
40 | parcel.writeString(address);
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/interact/AddTokenInteract.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.interact;
2 |
3 | import com.wallet.crypto.trustapp.repository.TokenRepositoryType;
4 | import com.wallet.crypto.trustapp.repository.WalletRepositoryType;
5 |
6 | import io.reactivex.Completable;
7 | import io.reactivex.android.schedulers.AndroidSchedulers;
8 |
9 | public class AddTokenInteract {
10 | private final TokenRepositoryType tokenRepository;
11 | private final WalletRepositoryType walletRepository;
12 |
13 | public AddTokenInteract(
14 | WalletRepositoryType walletRepository, TokenRepositoryType tokenRepository) {
15 | this.walletRepository = walletRepository;
16 | this.tokenRepository = tokenRepository;
17 | }
18 |
19 | public Completable add(String address, String symbol, int decimals) {
20 | return walletRepository
21 | .getDefaultWallet()
22 | .flatMapCompletable(wallet -> tokenRepository
23 | .addToken(wallet, address, symbol, decimals)
24 | .observeOn(AndroidSchedulers.mainThread()));
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/interact/CreateTransactionInteract.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.interact;
2 |
3 |
4 | import com.wallet.crypto.trustapp.entity.Wallet;
5 | import com.wallet.crypto.trustapp.repository.PasswordStore;
6 | import com.wallet.crypto.trustapp.repository.TokenRepository;
7 | import com.wallet.crypto.trustapp.repository.TransactionRepositoryType;
8 |
9 | import java.math.BigInteger;
10 |
11 | import io.reactivex.Single;
12 | import io.reactivex.android.schedulers.AndroidSchedulers;
13 |
14 | public class CreateTransactionInteract {
15 | private final TransactionRepositoryType transactionRepository;
16 | private final PasswordStore passwordStore;
17 |
18 | public CreateTransactionInteract(TransactionRepositoryType transactionRepository, PasswordStore passwordStore) {
19 | this.transactionRepository = transactionRepository;
20 | this.passwordStore = passwordStore;
21 | }
22 |
23 | public Single create(Wallet from, String to, BigInteger subunitAmount, BigInteger gasPrice, BigInteger gasLimit, byte[] data) {
24 | return passwordStore.getPassword(from)
25 | .flatMap(password ->
26 | transactionRepository.createTransaction(from, to, subunitAmount, gasPrice, gasLimit, data, password)
27 | .observeOn(AndroidSchedulers.mainThread()));
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/interact/CreateTransactionInteractType.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.interact;
2 |
3 |
4 | import com.wallet.crypto.trustapp.entity.Wallet;
5 |
6 | import java.math.BigInteger;
7 |
8 | import io.reactivex.Single;
9 |
10 | public interface CreateTransactionInteractType {
11 |
12 | public Single create(Wallet from, String to, String wei, BigInteger gasPrice, BigInteger gasLimit, String password);
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/interact/CreateWalletInteract.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.interact;
2 |
3 | import com.wallet.crypto.trustapp.entity.Wallet;
4 | import com.wallet.crypto.trustapp.interact.rx.operator.Operators;
5 | import com.wallet.crypto.trustapp.repository.PasswordStore;
6 | import com.wallet.crypto.trustapp.repository.WalletRepositoryType;
7 |
8 | import io.reactivex.Single;
9 |
10 | import static com.wallet.crypto.trustapp.interact.rx.operator.Operators.completableErrorProxy;
11 |
12 | public class CreateWalletInteract {
13 |
14 | private final WalletRepositoryType walletRepository;
15 | private final PasswordStore passwordStore;
16 |
17 | public CreateWalletInteract(WalletRepositoryType walletRepository, PasswordStore passwordStore) {
18 | this.walletRepository = walletRepository;
19 | this.passwordStore = passwordStore;
20 | }
21 |
22 | public Single create() {
23 | return passwordStore.generatePassword()
24 | .flatMap(masterPassword -> walletRepository
25 | .createWallet(masterPassword)
26 | .compose(Operators.savePassword(passwordStore, walletRepository, masterPassword))
27 | .flatMap(wallet -> passwordVerification(wallet, masterPassword)));
28 | }
29 |
30 | private Single passwordVerification(Wallet wallet, String masterPassword) {
31 | return passwordStore
32 | .getPassword(wallet)
33 | .flatMap(password -> walletRepository
34 | .exportWallet(wallet, password, password)
35 | .flatMap(keyStore -> walletRepository.findWallet(wallet.address)))
36 | .onErrorResumeNext(throwable -> walletRepository
37 | .deleteWallet(wallet.address, masterPassword)
38 | .lift(completableErrorProxy(throwable))
39 | .toSingle(() -> wallet));
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/interact/DeleteWalletInteract.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.interact;
2 |
3 | import com.wallet.crypto.trustapp.entity.Wallet;
4 | import com.wallet.crypto.trustapp.repository.PasswordStore;
5 | import com.wallet.crypto.trustapp.repository.WalletRepositoryType;
6 |
7 | import io.reactivex.Single;
8 | import io.reactivex.android.schedulers.AndroidSchedulers;
9 |
10 | /**
11 | * Delete and fetch wallets
12 | */
13 | public class DeleteWalletInteract {
14 | private final WalletRepositoryType walletRepository;
15 | private final PasswordStore passwordStore;
16 |
17 | public DeleteWalletInteract(WalletRepositoryType walletRepository, PasswordStore passwordStore) {
18 | this.walletRepository = walletRepository;
19 | this.passwordStore = passwordStore;
20 | }
21 |
22 | public Single delete(Wallet wallet) {
23 | return passwordStore.getPassword(wallet)
24 | .flatMapCompletable(password -> walletRepository.deleteWallet(wallet.address, password))
25 | .andThen(walletRepository.fetchWallets())
26 | .observeOn(AndroidSchedulers.mainThread());
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/interact/ExportWalletInteract.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.interact;
2 |
3 | import com.wallet.crypto.trustapp.entity.Wallet;
4 | import com.wallet.crypto.trustapp.repository.PasswordStore;
5 | import com.wallet.crypto.trustapp.repository.WalletRepositoryType;
6 |
7 | import io.reactivex.Single;
8 | import io.reactivex.android.schedulers.AndroidSchedulers;
9 |
10 | public class ExportWalletInteract {
11 |
12 | private final WalletRepositoryType walletRepository;
13 | private final PasswordStore passwordStore;
14 |
15 | public ExportWalletInteract(WalletRepositoryType walletRepository, PasswordStore passwordStore) {
16 | this.walletRepository = walletRepository;
17 | this.passwordStore = passwordStore;
18 | }
19 |
20 | public Single export(Wallet wallet, String backupPassword) {
21 | return passwordStore
22 | .getPassword(wallet)
23 | .flatMap(password -> walletRepository
24 | .exportWallet(wallet, password, backupPassword))
25 | .observeOn(AndroidSchedulers.mainThread());
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/interact/FetchGasSettingsInteract.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.interact;
2 |
3 |
4 | import com.wallet.crypto.trustapp.entity.GasSettings;
5 | import com.wallet.crypto.trustapp.repository.PreferenceRepositoryType;
6 |
7 | public class FetchGasSettingsInteract {
8 | private final PreferenceRepositoryType repository;
9 |
10 | public FetchGasSettingsInteract(PreferenceRepositoryType repository) {
11 | this.repository = repository;
12 | }
13 |
14 | public GasSettings fetch(boolean forTokenTransfer) {
15 | return repository.getGasSettings(forTokenTransfer);
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/interact/FetchTokensInteract.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.interact;
2 |
3 | import com.wallet.crypto.trustapp.entity.Token;
4 | import com.wallet.crypto.trustapp.entity.Wallet;
5 | import com.wallet.crypto.trustapp.repository.TokenRepositoryType;
6 |
7 | import io.reactivex.Observable;
8 | import io.reactivex.Single;
9 | import io.reactivex.android.schedulers.AndroidSchedulers;
10 | import io.reactivex.schedulers.Schedulers;
11 |
12 | public class FetchTokensInteract {
13 |
14 | private final TokenRepositoryType tokenRepository;
15 |
16 | public FetchTokensInteract(TokenRepositoryType tokenRepository) {
17 | this.tokenRepository = tokenRepository;
18 | }
19 |
20 | public Observable fetch(Wallet wallet) {
21 | return tokenRepository.fetch(wallet.address)
22 | .subscribeOn(Schedulers.io())
23 | .observeOn(AndroidSchedulers.mainThread());
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/interact/FetchTransactionsInteract.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.interact;
2 |
3 | import com.wallet.crypto.trustapp.entity.Transaction;
4 | import com.wallet.crypto.trustapp.entity.Wallet;
5 | import com.wallet.crypto.trustapp.repository.TransactionRepositoryType;
6 |
7 | import io.reactivex.Observable;
8 | import io.reactivex.android.schedulers.AndroidSchedulers;
9 |
10 | public class FetchTransactionsInteract {
11 |
12 | private final TransactionRepositoryType transactionRepository;
13 |
14 | public FetchTransactionsInteract(TransactionRepositoryType transactionRepository) {
15 | this.transactionRepository = transactionRepository;
16 | }
17 |
18 | public Observable fetch(Wallet wallet) {
19 | return transactionRepository
20 | .fetchTransaction(wallet)
21 | .observeOn(AndroidSchedulers.mainThread());
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/interact/FetchWalletsInteract.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.interact;
2 |
3 | import com.wallet.crypto.trustapp.entity.Wallet;
4 | import com.wallet.crypto.trustapp.repository.WalletRepositoryType;
5 |
6 | import io.reactivex.Single;
7 | import io.reactivex.android.schedulers.AndroidSchedulers;
8 |
9 | public class FetchWalletsInteract {
10 |
11 | private final WalletRepositoryType accountRepository;
12 |
13 | public FetchWalletsInteract(WalletRepositoryType accountRepository) {
14 | this.accountRepository = accountRepository;
15 | }
16 |
17 | public Single fetch() {
18 | return accountRepository
19 | .fetchWallets()
20 | .observeOn(AndroidSchedulers.mainThread());
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/interact/FindDefaultNetworkInteract.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.interact;
2 |
3 | import com.wallet.crypto.trustapp.entity.NetworkInfo;
4 | import com.wallet.crypto.trustapp.repository.EthereumNetworkRepositoryType;
5 |
6 | import io.reactivex.Single;
7 | import io.reactivex.android.schedulers.AndroidSchedulers;
8 |
9 | public class FindDefaultNetworkInteract {
10 |
11 | private final EthereumNetworkRepositoryType ethereumNetworkRepository;
12 |
13 | public FindDefaultNetworkInteract(EthereumNetworkRepositoryType ethereumNetworkRepository) {
14 | this.ethereumNetworkRepository = ethereumNetworkRepository;
15 | }
16 |
17 | public Single find() {
18 | return Single.just(ethereumNetworkRepository.getDefaultNetwork())
19 | .observeOn(AndroidSchedulers.mainThread());
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/interact/FindDefaultWalletInteract.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.interact;
2 |
3 | import com.wallet.crypto.trustapp.entity.Wallet;
4 | import com.wallet.crypto.trustapp.repository.WalletRepositoryType;
5 |
6 | import io.reactivex.Flowable;
7 | import io.reactivex.Single;
8 | import io.reactivex.android.schedulers.AndroidSchedulers;
9 |
10 | public class FindDefaultWalletInteract {
11 |
12 | private final WalletRepositoryType walletRepository;
13 |
14 | public FindDefaultWalletInteract(WalletRepositoryType walletRepository) {
15 | this.walletRepository = walletRepository;
16 | }
17 |
18 | public Single find() {
19 | return walletRepository
20 | .getDefaultWallet()
21 | .onErrorResumeNext(walletRepository
22 | .fetchWallets()
23 | .to(single -> Flowable.fromArray(single.blockingGet()))
24 | .firstOrError()
25 | .flatMapCompletable(walletRepository::setDefaultWallet)
26 | .andThen(walletRepository.getDefaultWallet()))
27 | .observeOn(AndroidSchedulers.mainThread());
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/interact/ImportWalletInteract.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.interact;
2 |
3 | import com.wallet.crypto.trustapp.entity.Wallet;
4 | import com.wallet.crypto.trustapp.interact.rx.operator.Operators;
5 | import com.wallet.crypto.trustapp.repository.PasswordStore;
6 | import com.wallet.crypto.trustapp.repository.WalletRepositoryType;
7 |
8 | import io.reactivex.Single;
9 | import io.reactivex.android.schedulers.AndroidSchedulers;
10 |
11 | public class ImportWalletInteract {
12 |
13 | private final WalletRepositoryType walletRepository;
14 | private final PasswordStore passwordStore;
15 |
16 | public ImportWalletInteract(WalletRepositoryType walletRepository, PasswordStore passwordStore) {
17 | this.walletRepository = walletRepository;
18 | this.passwordStore = passwordStore;
19 | }
20 |
21 | public Single importKeystore(String keystore, String password) {
22 | return passwordStore
23 | .generatePassword()
24 | .flatMap(newPassword -> walletRepository
25 | .importKeystoreToWallet(keystore, password, newPassword)
26 | .compose(Operators.savePassword(passwordStore, walletRepository, newPassword)))
27 | .observeOn(AndroidSchedulers.mainThread());
28 | }
29 |
30 | public Single importPrivateKey(String privateKey) {
31 | return passwordStore
32 | .generatePassword()
33 | .flatMap(newPassword -> walletRepository
34 | .importPrivateKeyToWallet(privateKey, newPassword)
35 | .compose(Operators.savePassword(passwordStore, walletRepository, newPassword)))
36 | .observeOn(AndroidSchedulers.mainThread());
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/interact/SetDefaultWalletInteract.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.interact;
2 |
3 | import com.wallet.crypto.trustapp.entity.Wallet;
4 | import com.wallet.crypto.trustapp.repository.WalletRepositoryType;
5 |
6 | import io.reactivex.Completable;
7 | import io.reactivex.android.schedulers.AndroidSchedulers;
8 |
9 | public class SetDefaultWalletInteract {
10 |
11 | private WalletRepositoryType accountRepository;
12 |
13 | public SetDefaultWalletInteract(WalletRepositoryType walletRepositoryType) {
14 | this.accountRepository = walletRepositoryType;
15 | }
16 |
17 | public Completable set(Wallet wallet) {
18 | return accountRepository
19 | .setDefaultWallet(wallet)
20 | .observeOn(AndroidSchedulers.mainThread());
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/interact/rx/operator/CompletableErrorProxyOperator.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.interact.rx.operator;
2 |
3 | import io.reactivex.CompletableObserver;
4 | import io.reactivex.CompletableOperator;
5 | import io.reactivex.observers.DisposableCompletableObserver;
6 |
7 | public class CompletableErrorProxyOperator implements CompletableOperator {
8 |
9 | private final Throwable throwable;
10 |
11 | CompletableErrorProxyOperator(Throwable throwable) {
12 | this.throwable = throwable;
13 | }
14 |
15 | @Override
16 | public CompletableObserver apply(CompletableObserver observer) throws Exception {
17 | return new DisposableCompletableObserver() {
18 | @Override
19 | public void onComplete() {
20 | if (!isDisposed()) {
21 | observer.onError(throwable);
22 | }
23 | }
24 |
25 | @Override
26 | public void onError(Throwable ex) {
27 | if (!isDisposed()) {
28 | observer.onError(ex);
29 | }
30 | }
31 | };
32 | }
33 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/interact/rx/operator/Operators.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.interact.rx.operator;
2 |
3 | import com.wallet.crypto.trustapp.entity.Wallet;
4 | import com.wallet.crypto.trustapp.repository.PasswordStore;
5 | import com.wallet.crypto.trustapp.repository.WalletRepositoryType;
6 |
7 | import io.reactivex.CompletableOperator;
8 | import io.reactivex.SingleTransformer;
9 |
10 | public class Operators {
11 |
12 | public static SingleTransformer savePassword(
13 | PasswordStore passwordStore, WalletRepositoryType walletRepository, String password) {
14 | return new SavePasswordOperator(passwordStore, walletRepository, password);
15 | }
16 |
17 | public static CompletableOperator completableErrorProxy(Throwable throwable) {
18 | return new CompletableErrorProxyOperator(throwable);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/interact/rx/operator/SavePasswordOperator.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.interact.rx.operator;
2 |
3 | import com.wallet.crypto.trustapp.entity.Wallet;
4 | import com.wallet.crypto.trustapp.repository.PasswordStore;
5 | import com.wallet.crypto.trustapp.repository.WalletRepositoryType;
6 |
7 | import io.reactivex.Single;
8 | import io.reactivex.SingleSource;
9 | import io.reactivex.SingleTransformer;
10 | import io.reactivex.observers.DisposableCompletableObserver;
11 |
12 | public class SavePasswordOperator implements SingleTransformer {
13 |
14 | private final PasswordStore passwordStore;
15 | private final String password;
16 | private final WalletRepositoryType walletRepository;
17 |
18 | public SavePasswordOperator(
19 | PasswordStore passwordStore, WalletRepositoryType walletRepository, String password) {
20 | this.passwordStore = passwordStore;
21 | this.password = password;
22 | this.walletRepository = walletRepository;
23 | }
24 |
25 | @Override
26 | public SingleSource apply(Single upstream) {
27 | Wallet wallet = upstream.blockingGet();
28 | return passwordStore
29 | .setPassword(wallet, password)
30 | .onErrorResumeNext(err -> walletRepository.deleteWallet(wallet.address, password)
31 | .lift(observer -> new DisposableCompletableObserver() {
32 | @Override
33 | public void onComplete() {
34 | observer.onError(err);
35 | }
36 |
37 | @Override
38 | public void onError(Throwable e) {
39 | observer.onError(e);
40 | }
41 | }))
42 | .toSingle(() -> wallet);
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/repository/EthereumNetworkRepositoryType.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.repository;
2 |
3 | import com.wallet.crypto.trustapp.entity.NetworkInfo;
4 | import com.wallet.crypto.trustapp.entity.Ticker;
5 |
6 | import io.reactivex.Single;
7 |
8 | public interface EthereumNetworkRepositoryType {
9 |
10 | NetworkInfo getDefaultNetwork();
11 |
12 | void setDefaultNetworkInfo(NetworkInfo networkInfo);
13 |
14 | NetworkInfo[] getAvailableNetworkList();
15 |
16 | void addOnChangeDefaultNetwork(OnNetworkChangeListener onNetworkChanged);
17 |
18 | Single getTicker();
19 | }
20 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/repository/OnNetworkChangeListener.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.repository;
2 |
3 | import com.wallet.crypto.trustapp.entity.NetworkInfo;
4 |
5 | public interface OnNetworkChangeListener {
6 | void onNetworkChanged(NetworkInfo networkInfo);
7 | }
8 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/repository/PasswordStore.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.repository;
2 |
3 | import com.wallet.crypto.trustapp.entity.Wallet;
4 |
5 | import io.reactivex.Completable;
6 | import io.reactivex.Single;
7 |
8 | public interface PasswordStore {
9 | Single getPassword(Wallet wallet);
10 | Completable setPassword(Wallet wallet, String password);
11 | Single generatePassword();
12 | }
13 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/repository/PreferenceRepositoryType.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.repository;
2 |
3 | import com.wallet.crypto.trustapp.entity.GasSettings;
4 |
5 | public interface PreferenceRepositoryType {
6 | String getCurrentWalletAddress();
7 | void setCurrentWalletAddress(String address);
8 |
9 | String getDefaultNetwork();
10 | void setDefaultNetwork(String netName);
11 |
12 | GasSettings getGasSettings(boolean forTokenTransfer);
13 | void setGasSettings(GasSettings gasPrice);
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/repository/TokenLocalSource.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.repository;
2 |
3 | import com.wallet.crypto.trustapp.entity.NetworkInfo;
4 | import com.wallet.crypto.trustapp.entity.TokenInfo;
5 | import com.wallet.crypto.trustapp.entity.Wallet;
6 |
7 | import io.reactivex.Completable;
8 | import io.reactivex.Single;
9 |
10 | public interface TokenLocalSource {
11 | Completable put(NetworkInfo networkInfo, Wallet wallet, TokenInfo tokenInfo);
12 | Single fetch(NetworkInfo networkInfo, Wallet wallet);
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/repository/TokenRepositoryType.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.repository;
2 |
3 | import com.wallet.crypto.trustapp.entity.Token;
4 | import com.wallet.crypto.trustapp.entity.Wallet;
5 |
6 | import io.reactivex.Completable;
7 | import io.reactivex.Observable;
8 |
9 | public interface TokenRepositoryType {
10 |
11 | Observable fetch(String walletAddress);
12 |
13 | Completable addToken(Wallet wallet, String address, String symbol, int decimals);
14 | }
15 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/repository/TransactionInDiskSource.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.repository;
2 |
3 | import com.wallet.crypto.trustapp.entity.Transaction;
4 | import com.wallet.crypto.trustapp.entity.Wallet;
5 |
6 | import io.reactivex.Single;
7 |
8 | public class TransactionInDiskSource implements TransactionLocalSource {
9 | @Override
10 | public Single fetchTransaction(Wallet wallet) {
11 | return null;
12 | }
13 |
14 | @Override
15 | public void putTransactions(Wallet wallet, Transaction[] transactions) {
16 |
17 | }
18 |
19 | @Override
20 | public void clear() {
21 |
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/repository/TransactionInMemorySource.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.repository;
2 |
3 | import android.text.format.DateUtils;
4 |
5 | import com.wallet.crypto.trustapp.entity.Transaction;
6 | import com.wallet.crypto.trustapp.entity.Wallet;
7 |
8 | import java.util.Map;
9 |
10 | import io.reactivex.Single;
11 |
12 | // TODO: Add pagination.
13 | public class TransactionInMemorySource implements TransactionLocalSource {
14 |
15 | private static final long MAX_TIME_OUT = DateUtils.MINUTE_IN_MILLIS;
16 | private final Map cache = new java.util.concurrent.ConcurrentHashMap<>();
17 |
18 | @Override
19 | public Single fetchTransaction(Wallet wallet) {
20 | return Single.fromCallable(() -> {
21 | CacheUnit unit = cache.get(wallet.address);
22 | Transaction[] transactions = new Transaction[0];
23 | if (unit != null) {
24 | if (System.currentTimeMillis() - unit.create > MAX_TIME_OUT) {
25 | cache.remove(wallet.address);
26 | } else {
27 | transactions = unit.transactions;
28 | }
29 |
30 | }
31 | return transactions;
32 | });
33 | }
34 |
35 | @Override
36 | public void putTransactions(Wallet wallet, Transaction[] transactions) {
37 | cache.put(wallet.address, new CacheUnit(wallet.address, System.currentTimeMillis(), transactions));
38 | }
39 |
40 | @Override
41 | public void clear() {
42 | cache.clear();
43 | }
44 |
45 | private static class CacheUnit {
46 | final String accountAddress;
47 | final long create;
48 | final Transaction[] transactions;
49 |
50 | private CacheUnit(String accountAddress, long create, Transaction[] transactions) {
51 | this.accountAddress = accountAddress;
52 | this.create = create;
53 | this.transactions = transactions;
54 | }
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/repository/TransactionLocalSource.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.repository;
2 |
3 | import com.wallet.crypto.trustapp.entity.Transaction;
4 | import com.wallet.crypto.trustapp.entity.Wallet;
5 |
6 | import io.reactivex.Single;
7 |
8 | public interface TransactionLocalSource {
9 | Single fetchTransaction(Wallet wallet);
10 |
11 | void putTransactions(Wallet wallet, Transaction[] transactions);
12 |
13 | void clear();
14 | }
15 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/repository/TransactionRepositoryType.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.repository;
2 |
3 | import com.wallet.crypto.trustapp.entity.Transaction;
4 | import com.wallet.crypto.trustapp.entity.Wallet;
5 |
6 | import java.math.BigInteger;
7 |
8 | import io.reactivex.Maybe;
9 | import io.reactivex.Observable;
10 | import io.reactivex.Single;
11 |
12 | public interface TransactionRepositoryType {
13 | Observable fetchTransaction(Wallet wallet);
14 | Maybe findTransaction(Wallet wallet, String transactionHash);
15 | Single createTransaction(Wallet from, String toAddress, BigInteger subunitAmount, BigInteger gasPrice, BigInteger gasLimit, byte[] data, String password);
16 | }
17 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/repository/TrustPasswordStore.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.repository;
2 |
3 | import android.content.Context;
4 |
5 | import com.wallet.crypto.trustapp.entity.Wallet;
6 | import com.wallet.crypto.trustapp.util.KS;
7 |
8 | import java.security.SecureRandom;
9 |
10 | import io.reactivex.Completable;
11 | import io.reactivex.Single;
12 |
13 | public class TrustPasswordStore implements PasswordStore {
14 |
15 | private final Context context;
16 |
17 | public TrustPasswordStore(Context context) {
18 | this.context = context;
19 | }
20 |
21 | @Override
22 | public Single getPassword(Wallet wallet) {
23 | return Single.fromCallable(() -> new String(KS.get(context, wallet.address)));
24 | }
25 |
26 | @Override
27 | public Completable setPassword(Wallet wallet, String password) {
28 | return Completable.fromAction(() -> KS.put(context, wallet.address, password));
29 | }
30 |
31 | @Override
32 | public Single generatePassword() {
33 | return Single.fromCallable(() -> {
34 | byte bytes[] = new byte[256];
35 | SecureRandom random = new SecureRandom();
36 | random.nextBytes(bytes);
37 | return new String(bytes);
38 | });
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/repository/WalletRepositoryType.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.repository;
2 |
3 | import com.wallet.crypto.trustapp.entity.Wallet;
4 |
5 | import java.math.BigInteger;
6 |
7 | import io.reactivex.Completable;
8 | import io.reactivex.Maybe;
9 | import io.reactivex.Single;
10 |
11 | public interface WalletRepositoryType {
12 | Single fetchWallets();
13 | Single findWallet(String address);
14 |
15 | Single createWallet(String password);
16 | Single importKeystoreToWallet(String store, String password, String newPassword);
17 | Single importPrivateKeyToWallet(String privateKey, String newPassword);
18 | Single exportWallet(Wallet wallet, String password, String newPassword);
19 |
20 | Completable deleteWallet(String address, String password);
21 |
22 | Completable setDefaultWallet(Wallet wallet);
23 | Single getDefaultWallet();
24 |
25 | Single balanceInWei(Wallet wallet);
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/repository/entity/RealmTokenInfo.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.repository.entity;
2 |
3 | import io.realm.RealmObject;
4 | import io.realm.annotations.PrimaryKey;
5 |
6 | public class RealmTokenInfo extends RealmObject {
7 | @PrimaryKey
8 | private String address;
9 | private String name;
10 | private String symbol;
11 | private int decimals;
12 | private long addedTime;
13 |
14 | public int getDecimals() {
15 | return decimals;
16 | }
17 |
18 | public void setDecimals(int decimals) {
19 | this.decimals = decimals;
20 | }
21 |
22 | public String getSymbol() {
23 | return symbol;
24 | }
25 |
26 | public void setSymbol(String symbol) {
27 | this.symbol = symbol;
28 | }
29 |
30 | public String getName() {
31 | return name;
32 | }
33 |
34 | public void setName(String name) {
35 | this.name = name;
36 | }
37 |
38 | public String getAddress() {
39 | return address;
40 | }
41 |
42 | public void setAddress(String address) {
43 | this.address = address;
44 | }
45 |
46 | public long getAddedTime() {
47 | return addedTime;
48 | }
49 |
50 | public void setAddedTime(long addedTime) {
51 | this.addedTime = addedTime;
52 | }
53 | }
54 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/router/AddTokenRouter.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.router;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 |
6 | import com.wallet.crypto.trustapp.ui.AddTokenActivity;
7 |
8 | public class AddTokenRouter {
9 |
10 | public void open(Context context) {
11 | Intent intent = new Intent(context, AddTokenActivity.class);
12 | context.startActivity(intent);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/router/ConfirmationRouter.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.router;
2 |
3 |
4 | import android.content.Context;
5 | import android.content.Intent;
6 |
7 | import com.wallet.crypto.trustapp.C;
8 | import com.wallet.crypto.trustapp.ui.ConfirmationActivity;
9 |
10 | import java.math.BigInteger;
11 |
12 | public class ConfirmationRouter {
13 | public void open(Context context, String to, BigInteger amount, String contractAddress, int decimals, String symbol, boolean sendingTokens) {
14 | Intent intent = new Intent(context, ConfirmationActivity.class);
15 | intent.putExtra(C.EXTRA_TO_ADDRESS, to);
16 | intent.putExtra(C.EXTRA_AMOUNT, amount.toString());
17 | intent.putExtra(C.EXTRA_CONTRACT_ADDRESS, contractAddress);
18 | intent.putExtra(C.EXTRA_DECIMALS, decimals);
19 | intent.putExtra(C.EXTRA_SYMBOL, symbol);
20 | intent.putExtra(C.EXTRA_SENDING_TOKENS, sendingTokens);
21 | context.startActivity(intent);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/router/ExternalBrowserRouter.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.router;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 | import android.net.Uri;
6 |
7 | public class ExternalBrowserRouter {
8 |
9 | public void open(Context context, Uri uri) {
10 | Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uri);
11 | context.startActivity(launchBrowser);
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/router/GasSettingsRouter.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.router;
2 |
3 |
4 | import android.app.Activity;
5 | import android.content.Intent;
6 |
7 | import com.wallet.crypto.trustapp.C;
8 | import com.wallet.crypto.trustapp.entity.GasSettings;
9 | import com.wallet.crypto.trustapp.ui.GasSettingsActivity;
10 | import com.wallet.crypto.trustapp.viewmodel.GasSettingsViewModel;
11 |
12 | public class GasSettingsRouter {
13 | public void open(Activity context, GasSettings gasSettings) {
14 | Intent intent = new Intent(context, GasSettingsActivity.class);
15 | intent.putExtra(C.EXTRA_GAS_PRICE, gasSettings.gasPrice.toString());
16 | intent.putExtra(C.EXTRA_GAS_LIMIT, gasSettings.gasLimit.toString());
17 | context.startActivityForResult(intent, GasSettingsViewModel.SET_GAS_SETTINGS);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/router/ImportWalletRouter.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.router;
2 |
3 | import android.app.Activity;
4 | import android.content.Context;
5 | import android.content.Intent;
6 |
7 | import com.wallet.crypto.trustapp.ui.ImportWalletActivity;
8 |
9 | public class ImportWalletRouter {
10 |
11 | public void open(Context context) {
12 | Intent intent = new Intent(context, ImportWalletActivity.class);
13 | context.startActivity(intent);
14 | }
15 |
16 | public void openForResult(Activity activity, int requestCode) {
17 | Intent intent = new Intent(activity, ImportWalletActivity.class);
18 | activity.startActivityForResult(intent, requestCode);
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/router/ManageWalletsRouter.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.router;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 |
6 | import com.wallet.crypto.trustapp.ui.WalletsActivity;
7 |
8 | public class ManageWalletsRouter {
9 |
10 | public void open(Context context, boolean isClearStack) {
11 | Intent intent = new Intent(context, WalletsActivity.class);
12 | if (isClearStack) {
13 | intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
14 | }
15 | context.startActivity(intent);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/router/MyAddressRouter.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.router;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 |
6 | import com.wallet.crypto.trustapp.entity.Wallet;
7 | import com.wallet.crypto.trustapp.ui.MyAddressActivity;
8 |
9 | import static com.wallet.crypto.trustapp.C.Key.WALLET;
10 |
11 | public class MyAddressRouter {
12 |
13 | public void open(Context context, Wallet wallet) {
14 | Intent intent = new Intent(context, MyAddressActivity.class);
15 | intent.putExtra(WALLET, wallet);
16 | context.startActivity(intent);
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/router/MyTokensRouter.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.router;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 |
6 | import com.wallet.crypto.trustapp.entity.Wallet;
7 | import com.wallet.crypto.trustapp.ui.TokensActivity;
8 |
9 | import static com.wallet.crypto.trustapp.C.Key.WALLET;
10 |
11 | public class MyTokensRouter {
12 |
13 | public void open(Context context, Wallet wallet) {
14 | Intent intent = new Intent(context, TokensActivity.class);
15 | intent.putExtra(WALLET, wallet);
16 | intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
17 | context.startActivity(intent);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/router/SendRouter.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.router;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 |
6 | import com.wallet.crypto.trustapp.ui.SendActivity;
7 |
8 | public class SendRouter {
9 |
10 | public void open(Context context) {
11 | Intent intent = new Intent(context, SendActivity.class);
12 | context.startActivity(intent);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/router/SendTokenRouter.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.router;
2 |
3 |
4 | import android.content.Context;
5 | import android.content.Intent;
6 |
7 | import com.wallet.crypto.trustapp.C;
8 | import com.wallet.crypto.trustapp.ui.SendActivity;
9 |
10 | public class SendTokenRouter {
11 | public void open(Context context, String address, String symbol, int decimals) {
12 | Intent intent = new Intent(context, SendActivity.class);
13 | intent.putExtra(C.EXTRA_SENDING_TOKENS, true);
14 | intent.putExtra(C.EXTRA_CONTRACT_ADDRESS, address);
15 | intent.putExtra(C.EXTRA_SYMBOL, symbol);
16 | intent.putExtra(C.EXTRA_DECIMALS, decimals);
17 | context.startActivity(intent);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/router/SettingsRouter.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.router;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 |
6 | import com.wallet.crypto.trustapp.ui.SettingsActivity;
7 |
8 | public class SettingsRouter {
9 |
10 | public void open(Context context) {
11 | Intent intent = new Intent(context, SettingsActivity.class);
12 | context.startActivity(intent);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/router/TransactionDetailRouter.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.router;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 |
6 | import com.wallet.crypto.trustapp.entity.Transaction;
7 | import com.wallet.crypto.trustapp.ui.TransactionDetailActivity;
8 |
9 | import static com.wallet.crypto.trustapp.C.Key.TRANSACTION;
10 |
11 | public class TransactionDetailRouter {
12 |
13 | public void open(Context context, Transaction transaction) {
14 | Intent intent = new Intent(context, TransactionDetailActivity.class);
15 | intent.putExtra(TRANSACTION, transaction);
16 | context.startActivity(intent);
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/router/TransactionsRouter.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.router;
2 |
3 | import android.content.Context;
4 | import android.content.Intent;
5 |
6 | import com.wallet.crypto.trustapp.ui.TransactionsActivity;
7 |
8 | public class TransactionsRouter {
9 | public void open(Context context, boolean isClearStack) {
10 | Intent intent = new Intent(context, TransactionsActivity.class);
11 | if (isClearStack) {
12 | intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
13 | }
14 | context.startActivity(intent);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/service/BlockExplorerClientType.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.service;
2 |
3 | import com.wallet.crypto.trustapp.entity.Transaction;
4 |
5 | import io.reactivex.Observable;
6 |
7 | public interface BlockExplorerClientType {
8 | Observable fetchTransactions(String forAddress);
9 | }
10 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/service/TickerService.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.service;
2 |
3 | import com.wallet.crypto.trustapp.entity.Ticker;
4 |
5 | import io.reactivex.Observable;
6 |
7 | public interface TickerService {
8 |
9 | Observable fetchTickerPrice(String ticker);
10 | }
11 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/service/TokenExplorerClientType.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.service;
2 |
3 | import com.wallet.crypto.trustapp.entity.TokenInfo;
4 |
5 | import io.reactivex.Observable;
6 |
7 | public interface TokenExplorerClientType {
8 | Observable fetch(String walletAddress);
9 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/ui/BaseActivity.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.ui;
2 |
3 | import android.support.v7.app.ActionBar;
4 | import android.support.v7.app.AppCompatActivity;
5 | import android.support.v7.widget.Toolbar;
6 | import android.view.MenuItem;
7 |
8 | import com.wallet.crypto.trustapp.R;
9 |
10 |
11 | public abstract class BaseActivity extends AppCompatActivity {
12 |
13 | protected Toolbar toolbar() {
14 | Toolbar toolbar = findViewById(R.id.toolbar);
15 | if (toolbar != null) {
16 | setSupportActionBar(toolbar);
17 | toolbar.setTitle(getTitle());
18 | }
19 | enableDisplayHomeAsUp();
20 | return toolbar;
21 | }
22 |
23 | protected void setTitle(String title) {
24 | ActionBar actionBar = getSupportActionBar();
25 | if (actionBar != null) {
26 | actionBar.setTitle(title);
27 | }
28 | }
29 |
30 | protected void setSubtitle(String subtitle) {
31 | ActionBar actionBar = getSupportActionBar();
32 | if (actionBar != null) {
33 | actionBar.setSubtitle(subtitle);
34 | }
35 | }
36 |
37 | protected void enableDisplayHomeAsUp() {
38 | ActionBar actionBar = getSupportActionBar();
39 | if (actionBar != null) {
40 | actionBar.setDisplayHomeAsUpEnabled(true);
41 | }
42 | }
43 |
44 | protected void dissableDisplayHomeAsUp() {
45 | ActionBar actionBar = getSupportActionBar();
46 | if (actionBar != null) {
47 | actionBar.setDisplayHomeAsUpEnabled(false);
48 | }
49 | }
50 |
51 | protected void hideToolbar() {
52 | ActionBar actionBar = getSupportActionBar();
53 | if (actionBar != null) {
54 | actionBar.hide();
55 | }
56 | }
57 |
58 | protected void showToolbar() {
59 | ActionBar actionBar = getSupportActionBar();
60 | if (actionBar != null) {
61 | actionBar.show();
62 | }
63 | }
64 |
65 | @Override
66 | public boolean onOptionsItemSelected(MenuItem item) {
67 | switch (item.getItemId()) {
68 | case android.R.id.home:
69 | finish();
70 | break;
71 | }
72 | return true;
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/ui/SettingsActivity.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.ui;
2 |
3 | import android.app.Fragment;
4 | import android.os.Bundle;
5 | import android.view.MenuItem;
6 |
7 | import com.wallet.crypto.trustapp.R;
8 | import com.wallet.crypto.trustapp.router.TransactionsRouter;
9 |
10 | import javax.inject.Inject;
11 |
12 | import dagger.android.AndroidInjection;
13 | import dagger.android.AndroidInjector;
14 | import dagger.android.DispatchingAndroidInjector;
15 | import dagger.android.HasFragmentInjector;
16 |
17 | public class SettingsActivity extends BaseActivity implements HasFragmentInjector {
18 |
19 | @Inject
20 | DispatchingAndroidInjector fragmentInjector;
21 |
22 | @Override
23 | protected void onCreate(Bundle savedInstanceState) {
24 | AndroidInjection.inject(this);
25 | super.onCreate(savedInstanceState);
26 | setContentView(R.layout.activity_settings);
27 | toolbar();
28 | // Display the fragment as the main content.
29 | getFragmentManager().beginTransaction()
30 | .replace(R.id.fragment_container, new SettingsFragment())
31 | .commit();
32 | }
33 |
34 | @Override
35 | public boolean onOptionsItemSelected(MenuItem item) {
36 | switch (item.getItemId()) {
37 | case android.R.id.home: {
38 | new TransactionsRouter().open(this, true);
39 | return true;
40 | }
41 | }
42 | return super.onOptionsItemSelected(item);
43 | }
44 |
45 | @Override
46 | public void onBackPressed() {
47 | new TransactionsRouter().open(this, true);
48 | }
49 |
50 | @Override
51 | public AndroidInjector fragmentInjector() {
52 | return fragmentInjector;
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/ui/SplashActivity.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.ui;
2 |
3 | import android.arch.lifecycle.ViewModelProviders;
4 | import android.os.Bundle;
5 | import android.support.v7.app.AppCompatActivity;
6 |
7 | import com.wallet.crypto.trustapp.entity.Wallet;
8 | import com.wallet.crypto.trustapp.router.ManageWalletsRouter;
9 | import com.wallet.crypto.trustapp.router.TransactionsRouter;
10 | import com.wallet.crypto.trustapp.viewmodel.SplashViewModel;
11 | import com.wallet.crypto.trustapp.viewmodel.SplashViewModelFactory;
12 |
13 | import javax.inject.Inject;
14 |
15 | import dagger.android.AndroidInjection;
16 |
17 | public class SplashActivity extends AppCompatActivity {
18 |
19 | @Inject
20 | SplashViewModelFactory splashViewModelFactory;
21 | SplashViewModel splashViewModel;
22 |
23 |
24 | @Override
25 | protected void onCreate(Bundle savedInstanceState) {
26 | AndroidInjection.inject(this);
27 | super.onCreate(savedInstanceState);
28 |
29 | splashViewModel = ViewModelProviders.of(this, splashViewModelFactory)
30 | .get(SplashViewModel.class);
31 | splashViewModel.wallets().observe(this, this::onWallets);
32 | }
33 |
34 | private void onWallets(Wallet[] wallets) {
35 | // Start home activity
36 | if (wallets.length == 0) {
37 | new ManageWalletsRouter().open(this, true);
38 | } else {
39 | new TransactionsRouter().open(this, true);
40 | }
41 | }
42 |
43 | }
44 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/ui/barcode/BarcodeTracker.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) The Android Open Source Project
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.wallet.crypto.trustapp.ui.barcode;
17 |
18 | import android.content.Context;
19 |
20 | import com.google.android.gms.vision.Tracker;
21 | import com.google.android.gms.vision.barcode.Barcode;
22 |
23 | class BarcodeTracker extends Tracker {
24 | private BarcodeGraphicTrackerCallback mListener;
25 |
26 | public interface BarcodeGraphicTrackerCallback {
27 | void onDetectedQrCode(Barcode barcode);
28 | }
29 |
30 | BarcodeTracker(Context listener) {
31 | mListener = (BarcodeGraphicTrackerCallback) listener;
32 | }
33 |
34 | @Override
35 | public void onNewItem(int id, Barcode item) {
36 | if (item.displayValue != null) {
37 | mListener.onDetectedQrCode(item);
38 | }
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/ui/barcode/BarcodeTrackerFactory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) The Android Open Source Project
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 | package com.wallet.crypto.trustapp.ui.barcode;
17 |
18 | import android.content.Context;
19 |
20 | import com.google.android.gms.vision.MultiProcessor;
21 | import com.google.android.gms.vision.Tracker;
22 | import com.google.android.gms.vision.barcode.Barcode;
23 |
24 | /**
25 | * Factory for creating a tracker and associated graphic to be associated with a new barcode_capture. The
26 | * multi-processor uses this factory to create barcode_capture trackers as needed -- one for each barcode_capture.
27 | */
28 | class BarcodeTrackerFactory implements MultiProcessor.Factory {
29 | private Context mContext;
30 |
31 | BarcodeTrackerFactory(Context context) {
32 | mContext = context;
33 | }
34 |
35 | @Override
36 | public Tracker create(Barcode barcode) {
37 | return new BarcodeTracker(mContext);
38 | }
39 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/ui/widget/OnBackupClickListener.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.ui.widget;
2 |
3 | import android.view.View;
4 |
5 | import com.wallet.crypto.trustapp.entity.Wallet;
6 |
7 | public interface OnBackupClickListener {
8 | void onBackupClick(View view, Wallet wallet);
9 | }
10 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/ui/widget/OnDepositClickListener.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.ui.widget;
2 |
3 | import android.net.Uri;
4 | import android.view.View;
5 |
6 | public interface OnDepositClickListener {
7 |
8 | void onDepositClick(View view, Uri uri);
9 | }
10 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/ui/widget/OnImportKeystoreListener.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.ui.widget;
2 |
3 | public interface OnImportKeystoreListener {
4 | void onKeystore(String keystore, String password);
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/ui/widget/OnImportPrivateKeyListener.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.ui.widget;
2 |
3 | public interface OnImportPrivateKeyListener {
4 |
5 | void onPrivateKey(String key);
6 | }
7 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/ui/widget/OnTokenClickListener.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.ui.widget;
2 |
3 | import android.view.View;
4 |
5 | import com.wallet.crypto.trustapp.entity.Token;
6 |
7 | public interface OnTokenClickListener {
8 | void onTokenClick(View view, Token token);
9 | }
10 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/ui/widget/OnTransactionClickListener.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.ui.widget;
2 |
3 | import android.view.View;
4 |
5 | import com.wallet.crypto.trustapp.entity.Transaction;
6 |
7 | public interface OnTransactionClickListener {
8 | void onTransactionClick(View view, Transaction transaction);
9 | }
10 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/ui/widget/adapter/TabPagerAdapter.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.ui.widget.adapter;
2 |
3 | import android.support.v4.app.Fragment;
4 | import android.support.v4.app.FragmentManager;
5 | import android.support.v4.app.FragmentPagerAdapter;
6 | import android.support.v4.util.Pair;
7 |
8 | import java.util.List;
9 |
10 | public class TabPagerAdapter extends FragmentPagerAdapter {
11 |
12 | private final List> pages;
13 |
14 | public TabPagerAdapter(FragmentManager fm, List> pages) {
15 | super(fm);
16 |
17 | this.pages = pages;
18 | }
19 |
20 | // Return fragment with respect to position.
21 | @Override
22 | public Fragment getItem(int position) {
23 | return pages.get(position).second;
24 | }
25 |
26 | @Override
27 | public int getCount() {
28 | return pages.size();
29 | }
30 |
31 | // This method returns the title of the tab according to its position.
32 | @Override
33 | public CharSequence getPageTitle(int position) {
34 | return pages.get(position).first;
35 | }
36 |
37 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/ui/widget/adapter/TokensAdapter.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.ui.widget.adapter;
2 |
3 | import android.support.v7.widget.RecyclerView;
4 | import android.view.ViewGroup;
5 |
6 | import com.wallet.crypto.trustapp.R;
7 | import com.wallet.crypto.trustapp.entity.Token;
8 | import com.wallet.crypto.trustapp.ui.widget.OnTokenClickListener;
9 | import com.wallet.crypto.trustapp.ui.widget.holder.TokenHolder;
10 |
11 | import java.util.ArrayList;
12 | import java.util.Arrays;
13 | import java.util.List;
14 |
15 | public class TokensAdapter extends RecyclerView.Adapter {
16 |
17 | private final OnTokenClickListener onTokenClickListener;
18 | private final List items = new ArrayList<>();
19 |
20 | public TokensAdapter(OnTokenClickListener onTokenClickListener) {
21 | this.onTokenClickListener = onTokenClickListener;
22 | }
23 |
24 | @Override
25 | public TokenHolder onCreateViewHolder(ViewGroup parent, int viewType) {
26 | TokenHolder tokenHolder = new TokenHolder(R.layout.item_token, parent);
27 | tokenHolder.setOnTokenClickListener(onTokenClickListener);
28 | return tokenHolder;
29 | }
30 |
31 | @Override
32 | public void onBindViewHolder(TokenHolder holder, int position) {
33 | holder.bind(items.get(position));
34 | }
35 |
36 | @Override
37 | public int getItemCount() {
38 | return items.size();
39 | }
40 |
41 | public void setTokens(Token[] tokens) {
42 | items.clear();
43 | items.addAll(Arrays.asList(tokens));
44 | notifyDataSetChanged();
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/ui/widget/entity/DateSortedItem.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.ui.widget.entity;
2 |
3 | import android.text.format.DateUtils;
4 |
5 | import com.wallet.crypto.trustapp.ui.widget.holder.TransactionDateHolder;
6 |
7 | import java.util.Calendar;
8 | import java.util.Date;
9 | import java.util.TimeZone;
10 |
11 | public class DateSortedItem extends TimestampSortedItem {
12 | public DateSortedItem(Date value) {
13 | super(TransactionDateHolder.VIEW_TYPE, value, 0, DESC);
14 | }
15 |
16 | @Override
17 | public Date getTimestamp() {
18 | return value;
19 | }
20 |
21 | @Override
22 | public boolean areContentsTheSame(SortedItem newItem) {
23 | return viewType == newItem.viewType && value.equals(((TimestampSortedItem) newItem).value);
24 | }
25 |
26 | @Override
27 | public boolean areItemsTheSame(SortedItem other) {
28 | return viewType == other.viewType;
29 | }
30 |
31 | public static DateSortedItem round(long timeStampInSec) {
32 | Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
33 | calendar.setTimeInMillis(timeStampInSec * DateUtils.SECOND_IN_MILLIS);
34 | calendar.set(Calendar.MILLISECOND, 999);
35 | calendar.set(Calendar.SECOND, 59);
36 | calendar.set(Calendar.MINUTE, 59);
37 | calendar.set(Calendar.HOUR_OF_DAY, 23);
38 | return new DateSortedItem(calendar.getTime());
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/ui/widget/entity/SortedItem.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.ui.widget.entity;
2 |
3 | import java.util.ArrayList;
4 | import java.util.List;
5 |
6 | public abstract class SortedItem {
7 | protected final List tags = new ArrayList<>();
8 |
9 | public final int viewType;
10 | public final T value;
11 | public final int weight;
12 |
13 | public SortedItem(int viewType, T value, int weight) {
14 | this.viewType = viewType;
15 | this.value = value;
16 | this.weight = weight;
17 | }
18 |
19 | public abstract int compare(SortedItem other);
20 |
21 | public abstract boolean areContentsTheSame(SortedItem newItem);
22 |
23 | public abstract boolean areItemsTheSame(SortedItem other);
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/ui/widget/entity/TimestampSortedItem.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.ui.widget.entity;
2 |
3 | import java.util.Date;
4 |
5 | public abstract class TimestampSortedItem extends SortedItem {
6 |
7 | public static final int ADC = 1;
8 | public static final int DESC = -1;
9 |
10 | private static final int IS_TIMESTAMP_TAG = 1;
11 |
12 | private final int order;
13 |
14 |
15 | public TimestampSortedItem(int viewType, T value, int weight, int order) {
16 | super(viewType, value, weight);
17 | tags.add(IS_TIMESTAMP_TAG);
18 | this.order = order;
19 | }
20 |
21 | public abstract Date getTimestamp();
22 |
23 | @Override
24 | public int compare(SortedItem other) {
25 | if (other.tags.contains(IS_TIMESTAMP_TAG)) {
26 | TimestampSortedItem otherTimestamp = (TimestampSortedItem) other;
27 | return order * (getTimestamp().compareTo(otherTimestamp.getTimestamp()));/*
28 | ? 1 : getTimestamp() == otherTimestamp.getTimestamp() ? 0 : -1);*/
29 | }
30 | return Integer.MIN_VALUE;
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/ui/widget/entity/TransactionSortedItem.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.ui.widget.entity;
2 |
3 | import android.text.format.DateUtils;
4 |
5 | import com.wallet.crypto.trustapp.entity.Transaction;
6 |
7 | import java.util.Calendar;
8 | import java.util.Date;
9 | import java.util.TimeZone;
10 |
11 | public class TransactionSortedItem extends TimestampSortedItem {
12 |
13 | public TransactionSortedItem(int viewType, Transaction value, int order) {
14 | super(viewType, value, 0, order);
15 | }
16 |
17 | @Override
18 | public int compare(SortedItem other) {
19 | return super.compare(other);
20 | // return other.viewType == TransactionHolder.VIEW_TYPE ||
21 | // ? super.compare(other)
22 | // : weight - other.weight;
23 | }
24 |
25 | @Override
26 | public boolean areContentsTheSame(SortedItem newItem) {
27 | if (viewType == newItem.viewType) {
28 | Transaction transaction = (Transaction)newItem.value;
29 | return value.hash.equals(transaction.hash) && value.timeStamp == transaction.timeStamp;
30 | }
31 | return false;
32 | }
33 |
34 | @Override
35 | public boolean areItemsTheSame(SortedItem other) {
36 | return viewType == other.viewType;
37 | }
38 |
39 | @Override
40 | public Date getTimestamp() {
41 | Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
42 | calendar.setTimeInMillis(value.timeStamp * DateUtils.SECOND_IN_MILLIS);
43 | return calendar.getTime();
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/ui/widget/holder/BinderViewHolder.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.ui.widget.holder;
2 |
3 | import android.content.Context;
4 | import android.os.Bundle;
5 | import android.support.annotation.NonNull;
6 | import android.support.annotation.Nullable;
7 | import android.support.v7.widget.RecyclerView;
8 | import android.view.LayoutInflater;
9 | import android.view.View;
10 | import android.view.ViewGroup;
11 |
12 | public abstract class BinderViewHolder extends RecyclerView.ViewHolder {
13 | public BinderViewHolder(int resId, ViewGroup parent) {
14 | super(LayoutInflater.from(parent.getContext())
15 | .inflate(resId, parent, false));
16 | }
17 |
18 | public abstract void bind(@Nullable T data, @NonNull Bundle addition);
19 |
20 | public void bind(@Nullable T data) {
21 | bind(data, Bundle.EMPTY);
22 | }
23 |
24 | protected T findViewById(int id) {
25 | return itemView.findViewById(id);
26 | }
27 |
28 | protected Context getContext() {
29 | return itemView.getContext();
30 | }
31 |
32 | protected String getString(int stringResId) {
33 | return getContext().getString(stringResId);
34 | }
35 |
36 |
37 | public String getString(int stringResId, Object... args) {
38 | return getContext().getString(stringResId, args);
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/ui/widget/holder/TransactionDateHolder.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.ui.widget.holder;
2 |
3 | import android.os.Bundle;
4 | import android.support.annotation.NonNull;
5 | import android.support.annotation.Nullable;
6 | import android.text.format.DateFormat;
7 | import android.view.ViewGroup;
8 | import android.widget.TextView;
9 |
10 | import com.wallet.crypto.trustapp.R;
11 |
12 | import java.util.Calendar;
13 | import java.util.Date;
14 | import java.util.TimeZone;
15 |
16 | public class TransactionDateHolder extends BinderViewHolder {
17 |
18 | // private static final String DATE_TEMPLATE = "MM/dd/yy H:mm:ss zzz";
19 |
20 | public static final int VIEW_TYPE = 1004;
21 | private final TextView title;
22 |
23 | public TransactionDateHolder(int resId, ViewGroup parent) {
24 | super(resId, parent);
25 |
26 | title = findViewById(R.id.title);
27 | }
28 |
29 | @Override
30 | public void bind(@Nullable Date data, @NonNull Bundle addition) {
31 | if (data == null) {
32 | title.setText(null);
33 | } else {
34 | java.text.DateFormat dateFormat = DateFormat.getMediumDateFormat(getContext());
35 | dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
36 | Calendar calendar = Calendar.getInstance();
37 | calendar.setTimeZone(TimeZone.getTimeZone("UTC"));
38 | calendar.setTime(data);
39 | title.setText(dateFormat.format(calendar.getTime()));
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/util/KeyboardUtils.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.util;
2 |
3 | import android.content.Context;
4 | import android.view.View;
5 | import android.view.inputmethod.InputMethodManager;
6 |
7 | public class KeyboardUtils {
8 |
9 | public static void showKeyboard(View view) {
10 | InputMethodManager inputMethodManager
11 | = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
12 | if (inputMethodManager != null) {
13 | inputMethodManager.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);
14 | }
15 | }
16 |
17 | public static void hideKeyboard(View view) {
18 | InputMethodManager inputMethodManager
19 | = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
20 | if (inputMethodManager != null) {
21 | inputMethodManager.hideSoftInputFromWindow(
22 | view.getWindowToken(), 0);
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/util/RootUtil.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.util;
2 |
3 | import java.io.BufferedReader;
4 | import java.io.File;
5 | import java.io.InputStreamReader;
6 |
7 | /** @author Kevin Kowalewski */
8 | public class RootUtil {
9 | public static boolean isDeviceRooted() {
10 | return checkRootMethod1() || checkRootMethod2() || checkRootMethod3();
11 | }
12 |
13 | private static boolean checkRootMethod1() {
14 | String buildTags = android.os.Build.TAGS;
15 | return buildTags != null && buildTags.contains("test-keys");
16 | }
17 |
18 | private static boolean checkRootMethod2() {
19 | String[] paths = { "/system/app/Superuser.apk", "/sbin/su", "/system/bin/su", "/system/xbin/su", "/data/local/xbin/su", "/data/local/bin/su", "/system/sd/xbin/su",
20 | "/system/bin/failsafe/su", "/data/local/su", "/su/bin/su"};
21 | for (String path : paths) {
22 | if (new File(path).exists()) {
23 | return true;
24 | }
25 | }
26 | return false;
27 | }
28 |
29 | private static boolean checkRootMethod3() {
30 | Process process = null;
31 | try {
32 | process = Runtime.getRuntime().exec(new String[] { "/system/xbin/which", "su" });
33 | BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
34 | if (in.readLine() != null) return true;
35 | return false;
36 | } catch (Throwable t) {
37 | return false;
38 | } finally {
39 | if (process != null) process.destroy();
40 | }
41 | }
42 | }
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/viewmodel/AddTokenViewModel.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.viewmodel;
2 |
3 | import android.arch.lifecycle.LiveData;
4 | import android.arch.lifecycle.MutableLiveData;
5 | import android.content.Context;
6 |
7 | import com.wallet.crypto.trustapp.interact.AddTokenInteract;
8 | import com.wallet.crypto.trustapp.interact.FindDefaultWalletInteract;
9 | import com.wallet.crypto.trustapp.router.MyTokensRouter;
10 |
11 | public class AddTokenViewModel extends BaseViewModel {
12 |
13 | private final AddTokenInteract addTokenInteract;
14 | private final FindDefaultWalletInteract findDefaultWalletInteract;
15 | private final MyTokensRouter myTokensRouter;
16 |
17 | private final MutableLiveData result = new MutableLiveData<>();
18 |
19 | AddTokenViewModel(
20 | AddTokenInteract addTokenInteract,
21 | FindDefaultWalletInteract findDefaultWalletInteract,
22 | MyTokensRouter myTokensRouter) {
23 | this.addTokenInteract = addTokenInteract;
24 | this.findDefaultWalletInteract = findDefaultWalletInteract;
25 | this.myTokensRouter = myTokensRouter;
26 | }
27 |
28 | public void save(String address, String symbol, int decimals) {
29 | addTokenInteract
30 | .add(address, symbol, decimals)
31 | .subscribe(this::onSaved, this::onError);
32 | }
33 |
34 | private void onSaved() {
35 | progress.postValue(false);
36 | result.postValue(true);
37 | }
38 |
39 | public LiveData result() {
40 | return result;
41 | }
42 |
43 | public void showTokens(Context context) {
44 | findDefaultWalletInteract
45 | .find()
46 | .subscribe(w -> myTokensRouter.open(context, w));
47 |
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/viewmodel/AddTokenViewModelFactory.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.viewmodel;
2 |
3 | import android.arch.lifecycle.ViewModel;
4 | import android.arch.lifecycle.ViewModelProvider;
5 | import android.support.annotation.NonNull;
6 |
7 | import com.wallet.crypto.trustapp.interact.AddTokenInteract;
8 | import com.wallet.crypto.trustapp.interact.FindDefaultWalletInteract;
9 | import com.wallet.crypto.trustapp.router.MyTokensRouter;
10 |
11 | public class AddTokenViewModelFactory implements ViewModelProvider.Factory {
12 |
13 | private final AddTokenInteract addTokenInteract;
14 | private final FindDefaultWalletInteract findDefaultWalletInteract;
15 | private final MyTokensRouter myTokensRouter;
16 |
17 | public AddTokenViewModelFactory(
18 | AddTokenInteract addTokenInteract,
19 | FindDefaultWalletInteract findDefaultWalletInteract,
20 | MyTokensRouter myTokensRouter) {
21 | this.addTokenInteract = addTokenInteract;
22 | this.findDefaultWalletInteract = findDefaultWalletInteract;
23 | this.myTokensRouter = myTokensRouter;
24 | }
25 |
26 | @NonNull
27 | @Override
28 | public T create(@NonNull Class modelClass) {
29 | return (T) new AddTokenViewModel(addTokenInteract, findDefaultWalletInteract, myTokensRouter);
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/viewmodel/BaseNavigationActivity.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.viewmodel;
2 |
3 | import android.support.annotation.MenuRes;
4 | import android.support.annotation.NonNull;
5 | import android.support.design.widget.BottomNavigationView;
6 | import android.view.MenuItem;
7 |
8 | import com.wallet.crypto.trustapp.R;
9 | import com.wallet.crypto.trustapp.ui.BaseActivity;
10 |
11 | public class BaseNavigationActivity extends BaseActivity implements BottomNavigationView.OnNavigationItemSelectedListener {
12 |
13 | private BottomNavigationView navigation;
14 |
15 | protected void initBottomNavigation() {
16 | navigation = findViewById(R.id.bottom_navigation);
17 | navigation.setOnNavigationItemSelectedListener(this);
18 | }
19 |
20 | protected void setBottomMenu(@MenuRes int menuRes) {
21 | navigation.getMenu().clear();
22 | navigation.inflateMenu(menuRes);
23 | }
24 |
25 | @Override
26 | public boolean onNavigationItemSelected(@NonNull MenuItem item) {
27 | return false;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/viewmodel/BaseViewModel.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.viewmodel;
2 |
3 | import android.arch.lifecycle.LiveData;
4 | import android.arch.lifecycle.MutableLiveData;
5 | import android.arch.lifecycle.ViewModel;
6 | import android.util.Log;
7 |
8 | import com.wallet.crypto.trustapp.C;
9 | import com.wallet.crypto.trustapp.entity.ErrorEnvelope;
10 | import com.wallet.crypto.trustapp.entity.ServiceException;
11 |
12 | import io.reactivex.disposables.Disposable;
13 |
14 | public class BaseViewModel extends ViewModel {
15 |
16 | protected final MutableLiveData error = new MutableLiveData<>();
17 | protected final MutableLiveData progress = new MutableLiveData<>();
18 | protected Disposable disposable;
19 |
20 | @Override
21 | protected void onCleared() {
22 | cancel();
23 | }
24 |
25 | protected void cancel() {
26 | if (disposable != null && !disposable.isDisposed()) {
27 | disposable.dispose();
28 | }
29 | }
30 |
31 | public LiveData error() {
32 | return error;
33 | }
34 |
35 | public LiveData progress() {
36 | return progress;
37 | }
38 |
39 | protected void onError(Throwable throwable) {
40 | if (throwable instanceof ServiceException) {
41 | error.postValue(((ServiceException) throwable).error);
42 | } else {
43 | error.postValue(new ErrorEnvelope(C.ErrorCode.UNKNOWN, null, throwable));
44 | // TODO: Add dialog with offer send error log to developers: notify about error.
45 | Log.d("SESSION", "Err", throwable);
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/viewmodel/ConfirmationViewModelFactory.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.viewmodel;
2 |
3 | import android.arch.lifecycle.ViewModel;
4 | import android.arch.lifecycle.ViewModelProvider;
5 | import android.support.annotation.NonNull;
6 |
7 | import com.wallet.crypto.trustapp.interact.CreateTransactionInteract;
8 | import com.wallet.crypto.trustapp.interact.FetchGasSettingsInteract;
9 | import com.wallet.crypto.trustapp.interact.FindDefaultWalletInteract;
10 | import com.wallet.crypto.trustapp.router.GasSettingsRouter;
11 |
12 | public class ConfirmationViewModelFactory implements ViewModelProvider.Factory {
13 |
14 | private FindDefaultWalletInteract findDefaultWalletInteract;
15 | private FetchGasSettingsInteract fetchGasSettingsInteract;
16 | private CreateTransactionInteract createTransactionInteract;
17 | private GasSettingsRouter gasSettingsRouter;
18 |
19 | public ConfirmationViewModelFactory(FindDefaultWalletInteract findDefaultWalletInteract,
20 | FetchGasSettingsInteract fetchGasSettingsInteract,
21 | CreateTransactionInteract createTransactionInteract,
22 | GasSettingsRouter gasSettingsRouter) {
23 | this.findDefaultWalletInteract = findDefaultWalletInteract;
24 | this.fetchGasSettingsInteract = fetchGasSettingsInteract;
25 | this.createTransactionInteract = createTransactionInteract;
26 | this.gasSettingsRouter = gasSettingsRouter;
27 | }
28 |
29 | @NonNull
30 | @Override
31 | public T create(@NonNull Class modelClass) {
32 | return (T) new ConfirmationViewModel(findDefaultWalletInteract, fetchGasSettingsInteract, createTransactionInteract, gasSettingsRouter);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/viewmodel/CreateAccountViewModel.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.viewmodel;
2 |
3 | public class CreateAccountViewModel extends BaseViewModel {
4 |
5 | public CreateAccountViewModel() {
6 |
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/viewmodel/CreateAccountViewModelFactory.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.viewmodel;
2 |
3 |
4 | import android.arch.lifecycle.ViewModel;
5 | import android.arch.lifecycle.ViewModelProvider;
6 | import android.support.annotation.NonNull;
7 |
8 | public class CreateAccountViewModelFactory implements ViewModelProvider.Factory {
9 |
10 | public CreateAccountViewModelFactory() { }
11 |
12 | @NonNull
13 | @Override
14 | public T create(@NonNull Class modelClass) {
15 | return (T) new CreateAccountViewModel();
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/viewmodel/GasSettingsViewModel.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.viewmodel;
2 |
3 |
4 | import android.arch.lifecycle.LiveData;
5 | import android.arch.lifecycle.MutableLiveData;
6 |
7 | import com.wallet.crypto.trustapp.entity.NetworkInfo;
8 | import com.wallet.crypto.trustapp.interact.FindDefaultNetworkInteract;
9 |
10 | import java.math.BigInteger;
11 |
12 | public class GasSettingsViewModel extends BaseViewModel {
13 |
14 | public static final int SET_GAS_SETTINGS = 1;
15 |
16 | private FindDefaultNetworkInteract findDefaultNetworkInteract;
17 |
18 | private MutableLiveData gasPrice = new MutableLiveData<>();
19 | private MutableLiveData gasLimit = new MutableLiveData<>();
20 | private MutableLiveData defaultNetwork = new MutableLiveData<>();
21 |
22 | public GasSettingsViewModel(FindDefaultNetworkInteract findDefaultNetworkInteract) {
23 | this.findDefaultNetworkInteract = findDefaultNetworkInteract;
24 | gasPrice.setValue(new BigInteger("0"));
25 | gasLimit.setValue(new BigInteger("0"));
26 | }
27 |
28 | public void prepare() {
29 | findDefaultNetworkInteract
30 | .find()
31 | .subscribe(this::onDefaultNetwork, this::onError);
32 | }
33 |
34 | public MutableLiveData gasPrice() {
35 | return gasPrice;
36 | }
37 |
38 | public MutableLiveData gasLimit() {
39 | return gasLimit;
40 | }
41 |
42 | public LiveData defaultNetwork() {
43 | return defaultNetwork;
44 | }
45 |
46 | private void onDefaultNetwork(NetworkInfo networkInfo) {
47 | defaultNetwork.setValue(networkInfo);
48 | }
49 |
50 | public BigInteger networkFee() {
51 | return gasPrice.getValue().multiply(gasLimit.getValue());
52 | }
53 |
54 | }
55 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/viewmodel/GasSettingsViewModelFactory.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.viewmodel;
2 |
3 |
4 | import android.arch.lifecycle.ViewModel;
5 | import android.arch.lifecycle.ViewModelProvider;
6 | import android.support.annotation.NonNull;
7 |
8 | import com.wallet.crypto.trustapp.interact.FindDefaultNetworkInteract;
9 |
10 | public class GasSettingsViewModelFactory implements ViewModelProvider.Factory {
11 |
12 | FindDefaultNetworkInteract findDefaultNetworkInteract;
13 |
14 | public GasSettingsViewModelFactory(FindDefaultNetworkInteract findDefaultNetworkInteract) {
15 | this.findDefaultNetworkInteract = findDefaultNetworkInteract;
16 | }
17 |
18 | @NonNull
19 | @Override
20 | public T create(@NonNull Class modelClass) {
21 | return (T) new GasSettingsViewModel(findDefaultNetworkInteract);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/viewmodel/ImportWalletViewModel.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.viewmodel;
2 |
3 | import android.arch.lifecycle.LiveData;
4 | import android.arch.lifecycle.MutableLiveData;
5 |
6 | import com.wallet.crypto.trustapp.entity.Wallet;
7 | import com.wallet.crypto.trustapp.interact.ImportWalletInteract;
8 | import com.wallet.crypto.trustapp.ui.widget.OnImportKeystoreListener;
9 | import com.wallet.crypto.trustapp.ui.widget.OnImportPrivateKeyListener;
10 |
11 | public class ImportWalletViewModel extends BaseViewModel implements OnImportKeystoreListener, OnImportPrivateKeyListener {
12 |
13 | private final ImportWalletInteract importWalletInteract;
14 | private final MutableLiveData wallet = new MutableLiveData<>();
15 |
16 | ImportWalletViewModel(ImportWalletInteract importWalletInteract) {
17 | this.importWalletInteract = importWalletInteract;
18 | }
19 |
20 | @Override
21 | public void onKeystore(String keystore, String password) {
22 | progress.postValue(true);
23 | importWalletInteract
24 | .importKeystore(keystore, password)
25 | .subscribe(this::onWallet, this::onError);
26 | }
27 |
28 | @Override
29 | public void onPrivateKey(String key) {
30 | progress.postValue(true);
31 | importWalletInteract
32 | .importPrivateKey(key)
33 | .subscribe(this::onWallet, this::onError);
34 | }
35 |
36 | public LiveData wallet() {
37 | return wallet;
38 | }
39 |
40 | private void onWallet(Wallet wallet) {
41 | progress.postValue(false);
42 | this.wallet.postValue(wallet);
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/viewmodel/ImportWalletViewModelFactory.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.viewmodel;
2 |
3 | import android.arch.lifecycle.ViewModel;
4 | import android.arch.lifecycle.ViewModelProvider;
5 | import android.support.annotation.NonNull;
6 |
7 | import com.wallet.crypto.trustapp.interact.ImportWalletInteract;
8 |
9 | public class ImportWalletViewModelFactory implements ViewModelProvider.Factory {
10 |
11 | private final ImportWalletInteract importWalletInteract;
12 |
13 | public ImportWalletViewModelFactory(ImportWalletInteract importWalletInteract) {
14 | this.importWalletInteract = importWalletInteract;
15 | }
16 |
17 | @NonNull
18 | @Override
19 | public T create(@NonNull Class modelClass) {
20 | return (T) new ImportWalletViewModel(importWalletInteract);
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/viewmodel/SendViewModel.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.viewmodel;
2 |
3 | import android.arch.lifecycle.MutableLiveData;
4 | import android.content.Context;
5 |
6 | import com.wallet.crypto.trustapp.entity.Transaction;
7 | import com.wallet.crypto.trustapp.entity.Wallet;
8 | import com.wallet.crypto.trustapp.router.ConfirmationRouter;
9 |
10 | import java.math.BigInteger;
11 |
12 | public class SendViewModel extends BaseViewModel {
13 | private final MutableLiveData defaultWallet = new MutableLiveData<>();
14 | private final MutableLiveData transaction = new MutableLiveData<>();
15 | private final ConfirmationRouter confirmationRouter;
16 |
17 | SendViewModel(ConfirmationRouter confirmationRouter) {
18 | this.confirmationRouter = confirmationRouter;
19 | }
20 |
21 | public void openConfirmation(Context context, String to, BigInteger amount, String contractAddress, int decimals, String symbol, boolean sendingTokens) {
22 | confirmationRouter.open(context, to, amount, contractAddress, decimals, symbol, sendingTokens);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/viewmodel/SendViewModelFactory.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.viewmodel;
2 |
3 | import android.arch.lifecycle.ViewModel;
4 | import android.arch.lifecycle.ViewModelProvider;
5 |
6 | import com.wallet.crypto.trustapp.router.ConfirmationRouter;
7 |
8 | import io.reactivex.annotations.NonNull;
9 |
10 | public class SendViewModelFactory implements ViewModelProvider.Factory {
11 |
12 | private final ConfirmationRouter confirmationRouter;
13 |
14 | public SendViewModelFactory(ConfirmationRouter confirmationRouter) {
15 | this.confirmationRouter = confirmationRouter;
16 | }
17 |
18 | @NonNull
19 | @Override
20 | public T create(@NonNull Class modelClass) {
21 | return (T) new SendViewModel(confirmationRouter);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/viewmodel/SplashViewModel.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.viewmodel;
2 |
3 | import android.arch.lifecycle.LiveData;
4 | import android.arch.lifecycle.MutableLiveData;
5 | import android.arch.lifecycle.ViewModel;
6 |
7 | import com.wallet.crypto.trustapp.entity.Wallet;
8 | import com.wallet.crypto.trustapp.interact.FetchWalletsInteract;
9 |
10 | public class SplashViewModel extends ViewModel {
11 | private final FetchWalletsInteract fetchWalletsInteract;
12 | private MutableLiveData wallets = new MutableLiveData<>();
13 |
14 | SplashViewModel(FetchWalletsInteract fetchWalletsInteract) {
15 | this.fetchWalletsInteract = fetchWalletsInteract;
16 |
17 | fetchWalletsInteract
18 | .fetch()
19 | .subscribe(wallets::postValue, this::onError);
20 | }
21 |
22 | private void onError(Throwable throwable) {
23 | wallets.postValue(new Wallet[0]);
24 | }
25 |
26 | public LiveData wallets() {
27 | return wallets;
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/viewmodel/SplashViewModelFactory.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.viewmodel;
2 |
3 | import android.arch.lifecycle.ViewModel;
4 | import android.arch.lifecycle.ViewModelProvider;
5 | import android.support.annotation.NonNull;
6 |
7 | import com.wallet.crypto.trustapp.interact.FetchWalletsInteract;
8 |
9 | public class SplashViewModelFactory implements ViewModelProvider.Factory {
10 |
11 | private final FetchWalletsInteract fetchWalletsInteract;
12 |
13 | public SplashViewModelFactory(FetchWalletsInteract fetchWalletsInteract) {
14 | this.fetchWalletsInteract = fetchWalletsInteract;
15 | }
16 | @NonNull
17 | @Override
18 | public T create(@NonNull Class modelClass) {
19 | return (T) new SplashViewModel(fetchWalletsInteract);
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/viewmodel/TokensViewModelFactory.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.viewmodel;
2 |
3 | import android.arch.lifecycle.ViewModel;
4 | import android.arch.lifecycle.ViewModelProvider;
5 | import android.support.annotation.NonNull;
6 |
7 | import com.wallet.crypto.trustapp.interact.FetchTokensInteract;
8 | import com.wallet.crypto.trustapp.interact.FindDefaultNetworkInteract;
9 | import com.wallet.crypto.trustapp.router.AddTokenRouter;
10 | import com.wallet.crypto.trustapp.router.SendTokenRouter;
11 | import com.wallet.crypto.trustapp.router.TransactionsRouter;
12 |
13 | public class TokensViewModelFactory implements ViewModelProvider.Factory {
14 |
15 | private final FindDefaultNetworkInteract findDefaultNetworkInteract;
16 | private final FetchTokensInteract fetchTokensInteract;
17 | private final AddTokenRouter addTokenRouter;
18 | private final SendTokenRouter sendTokenRouter;
19 | private final TransactionsRouter transactionsRouter;
20 |
21 | public TokensViewModelFactory(FindDefaultNetworkInteract findDefaultNetworkInteract,
22 | FetchTokensInteract fetchTokensInteract,
23 | AddTokenRouter addTokenRouter,
24 | SendTokenRouter sendTokenRouter,
25 | TransactionsRouter transactionsRouter) {
26 | this.findDefaultNetworkInteract = findDefaultNetworkInteract;
27 | this.fetchTokensInteract = fetchTokensInteract;
28 | this.addTokenRouter = addTokenRouter;
29 | this.sendTokenRouter = sendTokenRouter;
30 | this.transactionsRouter = transactionsRouter;
31 | }
32 |
33 | @NonNull
34 | @Override
35 | public T create(@NonNull Class modelClass) {
36 | return (T) new TokensViewModel(
37 | findDefaultNetworkInteract,
38 | fetchTokensInteract,
39 | addTokenRouter,
40 | sendTokenRouter,
41 | transactionsRouter);
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/viewmodel/TransactionDetailViewModelFactory.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.viewmodel;
2 |
3 | import android.arch.lifecycle.ViewModel;
4 | import android.arch.lifecycle.ViewModelProvider;
5 | import android.support.annotation.NonNull;
6 |
7 | import com.wallet.crypto.trustapp.interact.FindDefaultNetworkInteract;
8 | import com.wallet.crypto.trustapp.interact.FindDefaultWalletInteract;
9 | import com.wallet.crypto.trustapp.router.ExternalBrowserRouter;
10 |
11 | public class TransactionDetailViewModelFactory implements ViewModelProvider.Factory {
12 |
13 | private final FindDefaultNetworkInteract findDefaultNetworkInteract;
14 | private final FindDefaultWalletInteract findDefaultWalletInteract;
15 | private final ExternalBrowserRouter externalBrowserRouter;
16 |
17 | public TransactionDetailViewModelFactory(
18 | FindDefaultNetworkInteract findDefaultNetworkInteract,
19 | FindDefaultWalletInteract findDefaultWalletInteract,
20 | ExternalBrowserRouter externalBrowserRouter) {
21 | this.findDefaultNetworkInteract = findDefaultNetworkInteract;
22 | this.findDefaultWalletInteract = findDefaultWalletInteract;
23 | this.externalBrowserRouter = externalBrowserRouter;
24 | }
25 |
26 | @NonNull
27 | @Override
28 | public T create(@NonNull Class modelClass) {
29 | return (T) new TransactionDetailViewModel(
30 | findDefaultNetworkInteract,
31 | findDefaultWalletInteract,
32 | externalBrowserRouter);
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/widget/BackupView.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.widget;
2 |
3 | import android.content.Context;
4 | import android.support.annotation.NonNull;
5 | import android.view.LayoutInflater;
6 | import android.widget.EditText;
7 | import android.widget.FrameLayout;
8 |
9 | import com.wallet.crypto.trustapp.R;
10 |
11 | public class BackupView extends FrameLayout {
12 | private EditText password;
13 |
14 | public BackupView(@NonNull Context context) {
15 | super(context);
16 |
17 | init();
18 | }
19 |
20 | private void init() {
21 | LayoutInflater.from(getContext())
22 | .inflate(R.layout.layout_dialog_backup, this, true);
23 | password = findViewById(R.id.password);
24 | }
25 |
26 | public String getPassword() {
27 | return password.getText().toString();
28 | }
29 |
30 | public void showKeyBoard() {
31 | password.requestFocus();
32 | }
33 |
34 | @Override
35 | protected void onAttachedToWindow() {
36 | super.onAttachedToWindow();
37 | showKeyBoard();
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/app/src/main/java/com/wallet/crypto/trustapp/widget/EmptyTransactionsView.java:
--------------------------------------------------------------------------------
1 | package com.wallet.crypto.trustapp.widget;
2 |
3 | import android.content.Context;
4 | import android.support.annotation.NonNull;
5 | import android.view.LayoutInflater;
6 | import android.widget.FrameLayout;
7 |
8 | import com.wallet.crypto.trustapp.R;
9 | import com.wallet.crypto.trustapp.entity.NetworkInfo;
10 |
11 | public class EmptyTransactionsView extends FrameLayout {
12 |
13 | public EmptyTransactionsView(@NonNull Context context, OnClickListener onClickListener) {
14 | super(context);
15 |
16 | LayoutInflater.from(getContext())
17 | .inflate(R.layout.layout_empty_transactions, this, true);
18 |
19 | findViewById(R.id.action_buy).setOnClickListener(onClickListener);
20 | }
21 |
22 | public void setNetworkInfo(NetworkInfo networkInfo) {
23 | if (networkInfo.isMainNetwork) {
24 | findViewById(R.id.action_buy).setVisibility(VISIBLE);
25 | } else {
26 | findViewById(R.id.action_buy).setVisibility(GONE);
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_action_deposit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/drawable-hdpi/ic_action_deposit.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_facebook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/drawable-hdpi/ic_facebook.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/settings_rpc_server.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/drawable-hdpi/settings_rpc_server.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/token_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/drawable-hdpi/token_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_action_deposit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/drawable-mdpi/ic_action_deposit.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_facebook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/drawable-mdpi/ic_facebook.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_share_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/settings_rpc_server.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/drawable-mdpi/settings_rpc_server.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/token_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/drawable-mdpi/token_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-nodpi/no_transactions_mascot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/drawable-nodpi/no_transactions_mascot.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-nodpi/onboarding_erc20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/drawable-nodpi/onboarding_erc20.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-nodpi/settings_facebook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/drawable-nodpi/settings_facebook.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v21/bg_ripple_primary_color.xml:
--------------------------------------------------------------------------------
1 |
5 | -
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_action_deposit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/drawable-xhdpi/ic_action_deposit.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_facebook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/drawable-xhdpi/ic_facebook.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/settings_rpc_server.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/drawable-xhdpi/settings_rpc_server.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/token_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/drawable-xhdpi/token_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_action_deposit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/drawable-xxhdpi/ic_action_deposit.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_facebook.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/drawable-xxhdpi/ic_facebook.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/settings_rpc_server.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/drawable-xxhdpi/settings_rpc_server.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/token_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/drawable-xxhdpi/token_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/bg_ripple_primary_color.xml:
--------------------------------------------------------------------------------
1 |
2 | -
3 |
4 |
5 |
6 |
7 |
8 | -
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_add_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_add_circle_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_add_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_arrow_downward_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_arrow_upward_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_attach_money_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_autorenew_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_backup_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_call_received_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_chevron_right_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_code_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_content_paste_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_dashboard_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_delete_forever_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_error_outline_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_file_download_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_home_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_import_export_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_notifications_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_send_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_settings_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_share_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_swap_horiz_white_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_warning_black_24dp.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/splash_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 | -
6 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/font/roboto_bolt.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/font/roboto_bolt.ttf
--------------------------------------------------------------------------------
/app/src/main/res/font/roboto_regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/font/roboto_regular.ttf
--------------------------------------------------------------------------------
/app/src/main/res/layout/account_list_content.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
16 |
17 |
31 |
32 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_import_wallet.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_my_address.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
17 |
25 |
32 |
40 |
48 |
49 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
14 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_splash.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_tokens.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
18 |
23 |
24 |
32 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_transactions.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
19 |
24 |
25 |
33 |
40 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_wallets.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
18 |
23 |
24 |
31 |
38 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_token.xml:
--------------------------------------------------------------------------------
1 |
2 |
13 |
21 |
35 |
44 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_transactions_date_head.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
23 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/item_wallet_manage.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
20 |
36 |
46 |
56 |
57 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/layout_app_bar.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/layout_app_bar_with_tab.xml:
--------------------------------------------------------------------------------
1 |
9 |
17 |
26 |
27 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/layout_barcode_capture.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/layout_dialog_backup.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
18 |
27 |
33 |
34 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/layout_empty_transactions.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
14 |
22 |
32 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/layout_page_intro.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
21 |
29 |
40 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/layout_simple_toolbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/layout_system_view.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
14 |
21 |
27 |
37 |
38 |
43 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/confirmation_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_add.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_deposit.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_main_network.xml:
--------------------------------------------------------------------------------
1 |
2 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_secondary_network.xml:
--------------------------------------------------------------------------------
1 |
2 |
15 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/menu_share.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/send_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/send_settings_menu.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-anydpi-v26/ic_splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-anydpi-v26/ic_splash.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-hdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/settings_backup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-hdpi/settings_backup.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/settings_bug.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-hdpi/settings_bug.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/settings_donate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-hdpi/settings_donate.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/settings_email.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-hdpi/settings_email.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/settings_open_source.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-hdpi/settings_open_source.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/settings_privacy_policy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-hdpi/settings_privacy_policy.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/settings_rating.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-hdpi/settings_rating.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/settings_server.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-hdpi/settings_server.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/settings_telegram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-hdpi/settings_telegram.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/settings_terms.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-hdpi/settings_terms.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/settings_twitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-hdpi/settings_twitter.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-hdpi/token_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-hdpi/token_logo.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-mdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/settings_backup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-mdpi/settings_backup.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/settings_bug.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-mdpi/settings_bug.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/settings_donate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-mdpi/settings_donate.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/settings_email.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-mdpi/settings_email.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/settings_open_source.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-mdpi/settings_open_source.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/settings_privacy_policy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-mdpi/settings_privacy_policy.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/settings_rating.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-mdpi/settings_rating.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/settings_server.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-mdpi/settings_server.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/settings_telegram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-mdpi/settings_telegram.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/settings_terms.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-mdpi/settings_terms.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/settings_twitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-mdpi/settings_twitter.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-mdpi/token_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-mdpi/token_logo.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/settings_backup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xhdpi/settings_backup.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/settings_bug.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xhdpi/settings_bug.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/settings_donate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xhdpi/settings_donate.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/settings_email.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xhdpi/settings_email.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/settings_open_source.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xhdpi/settings_open_source.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/settings_privacy_policy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xhdpi/settings_privacy_policy.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/settings_rating.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xhdpi/settings_rating.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/settings_server.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xhdpi/settings_server.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/settings_telegram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xhdpi/settings_telegram.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/settings_terms.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xhdpi/settings_terms.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/settings_twitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xhdpi/settings_twitter.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xhdpi/token_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xhdpi/token_logo.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/settings_backup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxhdpi/settings_backup.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/settings_bug.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxhdpi/settings_bug.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/settings_donate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxhdpi/settings_donate.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/settings_email.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxhdpi/settings_email.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/settings_open_source.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxhdpi/settings_open_source.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/settings_privacy_policy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxhdpi/settings_privacy_policy.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/settings_rating.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxhdpi/settings_rating.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/settings_server.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxhdpi/settings_server.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/settings_telegram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxhdpi/settings_telegram.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/settings_terms.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxhdpi/settings_terms.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/settings_twitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxhdpi/settings_twitter.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxhdpi/token_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxhdpi/token_logo.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/backup_warning.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxxhdpi/backup_warning.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/ic_splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxxhdpi/ic_splash.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/onboarding_lock.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxxhdpi/onboarding_lock.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/onboarding_open_source.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxxhdpi/onboarding_open_source.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/onboarding_rocket.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxxhdpi/onboarding_rocket.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/qr_code_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxxhdpi/qr_code_icon.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/settings_backup.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxxhdpi/settings_backup.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/settings_bug.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxxhdpi/settings_bug.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/settings_donate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxxhdpi/settings_donate.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/settings_email.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxxhdpi/settings_email.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/settings_export.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxxhdpi/settings_export.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/settings_open_source.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxxhdpi/settings_open_source.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/settings_privacy_policy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxxhdpi/settings_privacy_policy.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/settings_rating.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxxhdpi/settings_rating.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/settings_server.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxxhdpi/settings_server.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/settings_telegram.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxxhdpi/settings_telegram.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/settings_terms.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxxhdpi/settings_terms.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/settings_twitter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxxhdpi/settings_twitter.png
--------------------------------------------------------------------------------
/app/src/main/res/mipmap-xxxhdpi/token_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/res/mipmap-xxxhdpi/token_logo.png
--------------------------------------------------------------------------------
/app/src/main/res/values-land/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 230dp
4 | 120dp
5 |
--------------------------------------------------------------------------------
/app/src/main/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #2fbb4f
4 | #f7506c
5 | #FFFFFFFF
6 | #313849
7 |
8 | #2e91db
9 | #1E76CE
10 | #2e91db
11 |
12 |
13 | #40000000
14 |
15 | #89000000
16 | #dd000000
17 |
18 | #40000000
19 |
20 | #AAFFFFFF
21 |
22 | #FF000000
23 | #FFFFFFFF
24 |
25 | #89000000
26 |
27 |
--------------------------------------------------------------------------------
/app/src/main/res/values/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | 16dp
4 | 16dp
5 |
6 | 16dp
7 | 200dp
8 | 200dp
9 | 16dp
10 |
11 | 4dp
12 | 8dp
13 | 16dp
14 | 32dp
15 | 64dp
16 |
17 | 4dp
18 | 8dp
19 | 16dp
20 | 32dp
21 | 64dp
22 |
23 | 12sp
24 | 16sp
25 | 26sp
26 | 72dp
27 | 14sp
28 | 48dp
29 | 56dp
30 |
31 | 340dp
32 | 200dp
33 |
34 |
--------------------------------------------------------------------------------
/app/src/main/res/values/helper_input_layout_res.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/values/ic_launcher_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #FFFFFF
4 |
--------------------------------------------------------------------------------
/app/src/main/settings_rating-web.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/app/src/main/settings_rating-web.png
--------------------------------------------------------------------------------
/build.gradle:
--------------------------------------------------------------------------------
1 | // Top-level build file where you can add configuration options common to all sub-projects/modules.
2 |
3 | buildscript {
4 | repositories {
5 | google()
6 | jcenter()
7 | mavenCentral()
8 | maven { url 'https://jitpack.io' }
9 | google()
10 | }
11 | dependencies {
12 | classpath 'com.android.tools.build:gradle:3.2.0'
13 | classpath "io.realm:realm-gradle-plugin:4.3.1"
14 | }
15 | }
16 |
17 | allprojects {
18 | repositories {
19 | jcenter()
20 | google()
21 | mavenCentral()
22 | maven { url 'https://jitpack.io' }
23 | }
24 | }
25 |
26 | task clean(type: Delete) {
27 | delete rootProject.buildDir
28 | }
29 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # Project-wide Gradle settings.
2 |
3 | # IDE (e.g. Android Studio) users:
4 | # Gradle settings configured through the IDE *will override*
5 | # any settings specified in this file.
6 |
7 | # For more details on how to configure your build environment visit
8 | # http://www.gradle.org/docs/current/userguide/build_environment.html
9 |
10 | # Specifies the JVM arguments used for the daemon process.
11 | # The setting is particularly useful for tweaking memory settings.
12 | org.gradle.jvmargs=-Xmx1536m
13 |
14 | # When configured, Gradle will run in incubating parallel mode.
15 | # This option should only be used with decoupled projects. More details, visit
16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
17 | # org.gradle.parallel=true
18 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/trustwallet/trust-wallet-android-source/4d9ad8315aa4e5f5232e91be5bf1156770870e44/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Thu Oct 11 09:51:40 GMT+07:00 2018
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
7 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 |
--------------------------------------------------------------------------------