├── .github └── FUNDING.yml ├── .gitignore ├── LICENSE ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── cafe │ │ └── adriel │ │ └── cryp │ │ └── ExampleInstrumentedTest.kt │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── cafe │ │ │ └── adriel │ │ │ └── cryp │ │ │ ├── Analytics.kt │ │ │ ├── App.kt │ │ │ ├── Const.kt │ │ │ ├── Event.kt │ │ │ ├── Ext.kt │ │ │ ├── model │ │ │ ├── entity │ │ │ │ ├── Crypto.kt │ │ │ │ ├── CryptoUnit.kt │ │ │ │ ├── MessageType.kt │ │ │ │ ├── Prices.kt │ │ │ │ ├── Wallet.kt │ │ │ │ └── response │ │ │ │ │ ├── BalanceResponse.kt │ │ │ │ │ └── SupportedCryptosResponse.kt │ │ │ └── repository │ │ │ │ ├── CryptoRepository.kt │ │ │ │ ├── PreferenceRepository.kt │ │ │ │ ├── PriceRepository.kt │ │ │ │ ├── WalletRepository.kt │ │ │ │ ├── adapter │ │ │ │ └── BigDecimalAdapter.kt │ │ │ │ └── factory │ │ │ │ └── ServiceFactory.kt │ │ │ └── view │ │ │ ├── BaseActivity.kt │ │ │ ├── BaseFragment.kt │ │ │ ├── IView.kt │ │ │ ├── custom │ │ │ ├── AppCompatPreferenceActivity.kt │ │ │ ├── CounterTextView.kt │ │ │ ├── CryptoLogoView.kt │ │ │ ├── QrCodeOverlayView.kt │ │ │ ├── ScrollAwareFabBehavior.kt │ │ │ └── VerticalSeparatorDecoration.kt │ │ │ ├── settings │ │ │ ├── SettingsActivity.kt │ │ │ └── SettingsFragment.kt │ │ │ └── wallet │ │ │ ├── add │ │ │ ├── AddWalletActivity.kt │ │ │ ├── AddWalletPresenter.kt │ │ │ └── AddWalletView.kt │ │ │ ├── list │ │ │ ├── WalletAdapterItem.kt │ │ │ ├── WalletListActivity.kt │ │ │ ├── WalletListPresenter.kt │ │ │ └── WalletListView.kt │ │ │ ├── scan │ │ │ └── ScanWalletActivity.kt │ │ │ ├── select │ │ │ ├── CryptoAdapterItem.kt │ │ │ └── SelectCryptoActivity.kt │ │ │ └── show │ │ │ └── ShowWalletActivity.kt │ └── res │ │ ├── drawable │ │ ├── cryp.xml │ │ ├── ic_add.xml │ │ ├── ic_arrow_right.xml │ │ ├── ic_close.xml │ │ ├── ic_delete.xml │ │ ├── ic_edit.xml │ │ ├── ic_launcher_background.xml │ │ ├── ic_launcher_foreground.xml │ │ ├── ic_qrcode.xml │ │ ├── ic_qrcode_frame.xml │ │ ├── ic_refresh.xml │ │ ├── ic_search.xml │ │ ├── ic_settings.xml │ │ ├── ic_share.xml │ │ ├── logo_act.xml │ │ ├── logo_ada.xml │ │ ├── logo_adx.xml │ │ ├── logo_ae.xml │ │ ├── logo_aion.xml │ │ ├── logo_amp.xml │ │ ├── logo_ant.xml │ │ ├── logo_ardr.xml │ │ ├── logo_ark.xml │ │ ├── logo_ast.xml │ │ ├── logo_atm.xml │ │ ├── logo_bat.xml │ │ ├── logo_bay.xml │ │ ├── logo_bccoin.xml │ │ ├── logo_bch.xml │ │ ├── logo_bcn.xml │ │ ├── logo_bdl.xml │ │ ├── logo_bela.xml │ │ ├── logo_blk.xml │ │ ├── logo_block.xml │ │ ├── logo_bnb.xml │ │ ├── logo_bnt.xml │ │ ├── logo_bq.xml │ │ ├── logo_bqx.xml │ │ ├── logo_btc.xml │ │ ├── logo_btcd.xml │ │ ├── logo_btcz.xml │ │ ├── logo_btg.xml │ │ ├── logo_btm.xml │ │ ├── logo_bts.xml │ │ ├── logo_btx.xml │ │ ├── logo_burst.xml │ │ ├── logo_cdn.xml │ │ ├── logo_clam.xml │ │ ├── logo_cloak.xml │ │ ├── logo_cnd.xml │ │ ├── logo_cnx.xml │ │ ├── logo_cred.xml │ │ ├── logo_crpt.xml │ │ ├── logo_cvc.xml │ │ ├── logo_dash.xml │ │ ├── logo_dat.xml │ │ ├── logo_data.xml │ │ ├── logo_dbc.xml │ │ ├── logo_dcn.xml │ │ ├── logo_dcr.xml │ │ ├── logo_dent.xml │ │ ├── logo_dgb.xml │ │ ├── logo_dgd.xml │ │ ├── logo_doge.xml │ │ ├── logo_dogeth.xml │ │ ├── logo_drgn.xml │ │ ├── logo_edg.xml │ │ ├── logo_elf.xml │ │ ├── logo_ella.xml │ │ ├── logo_emc.xml │ │ ├── logo_emc2.xml │ │ ├── logo_eng.xml │ │ ├── logo_eos.xml │ │ ├── logo_etc.xml │ │ ├── logo_eth.xml │ │ ├── logo_etn.xml │ │ ├── logo_etp.xml │ │ ├── logo_evx.xml │ │ ├── logo_exp.xml │ │ ├── logo_fair.xml │ │ ├── logo_fct.xml │ │ ├── logo_fil.xml │ │ ├── logo_fldc.xml │ │ ├── logo_flo.xml │ │ ├── logo_ftc.xml │ │ ├── logo_fun.xml │ │ ├── logo_game.xml │ │ ├── logo_gas.xml │ │ ├── logo_gbx.xml │ │ ├── logo_gbyte.xml │ │ ├── logo_gno.xml │ │ ├── logo_gnt.xml │ │ ├── logo_grc.xml │ │ ├── logo_grs.xml │ │ ├── logo_gup.xml │ │ ├── logo_gvt.xml │ │ ├── logo_gxs.xml │ │ ├── logo_hpb.xml │ │ ├── logo_hsr.xml │ │ ├── logo_huc.xml │ │ ├── logo_hush.xml │ │ ├── logo_icn.xml │ │ ├── logo_icx.xml │ │ ├── logo_ignis.xml │ │ ├── logo_ins.xml │ │ ├── logo_iop.xml │ │ ├── logo_iost.xml │ │ ├── logo_iot.xml │ │ ├── logo_kcs.xml │ │ ├── logo_kin.xml │ │ ├── logo_kmd.xml │ │ ├── logo_knc.xml │ │ ├── logo_krb.xml │ │ ├── logo_lbc.xml │ │ ├── logo_link.xml │ │ ├── logo_lkk.xml │ │ ├── logo_lrc.xml │ │ ├── logo_lsk.xml │ │ ├── logo_ltc.xml │ │ ├── logo_maid.xml │ │ ├── logo_mana.xml │ │ ├── logo_mcap.xml │ │ ├── logo_mco.xml │ │ ├── logo_med.xml │ │ ├── logo_mkr.xml │ │ ├── logo_mln.xml │ │ ├── logo_mnx.xml │ │ ├── logo_mona.xml │ │ ├── logo_mtl.xml │ │ ├── logo_music.xml │ │ ├── logo_nas.xml │ │ ├── logo_nav.xml │ │ ├── logo_nebl.xml │ │ ├── logo_neo.xml │ │ ├── logo_neos.xml │ │ ├── logo_ngc.xml │ │ ├── logo_nlc2.xml │ │ ├── logo_nlg.xml │ │ ├── logo_nmc.xml │ │ ├── logo_nxs.xml │ │ ├── logo_nxt.xml │ │ ├── logo_omg.xml │ │ ├── logo_omni.xml │ │ ├── logo_ost.xml │ │ ├── logo_pac.xml │ │ ├── logo_part.xml │ │ ├── logo_pasl.xml │ │ ├── logo_pay.xml │ │ ├── logo_pink.xml │ │ ├── logo_pirl.xml │ │ ├── logo_pivx.xml │ │ ├── logo_plr.xml │ │ ├── logo_poe.xml │ │ ├── logo_pot.xml │ │ ├── logo_powr.xml │ │ ├── logo_ppc.xml │ │ ├── logo_ppp.xml │ │ ├── logo_ppt.xml │ │ ├── logo_prl.xml │ │ ├── logo_pura.xml │ │ ├── logo_qash.xml │ │ ├── logo_qlc.xml │ │ ├── logo_qsp.xml │ │ ├── logo_qtum.xml │ │ ├── logo_rads.xml │ │ ├── logo_rcn.xml │ │ ├── logo_rdd.xml │ │ ├── logo_rdn.xml │ │ ├── logo_rep.xml │ │ ├── logo_req.xml │ │ ├── logo_rhoc.xml │ │ ├── logo_ric.xml │ │ ├── logo_rise.xml │ │ ├── logo_rlc.xml │ │ ├── logo_rpx.xml │ │ ├── logo_salt.xml │ │ ├── logo_san.xml │ │ ├── logo_sbd.xml │ │ ├── logo_sc.xml │ │ ├── logo_sky.xml │ │ ├── logo_smart.xml │ │ ├── logo_sngls.xml │ │ ├── logo_snt.xml │ │ ├── logo_sphtx.xml │ │ ├── logo_srn.xml │ │ ├── logo_start.xml │ │ ├── logo_steem.xml │ │ ├── logo_storj.xml │ │ ├── logo_storm.xml │ │ ├── logo_strat.xml │ │ ├── logo_sub.xml │ │ ├── logo_sys.xml │ │ ├── logo_taas.xml │ │ ├── logo_tau.xml │ │ ├── logo_tix.xml │ │ ├── logo_tkn.xml │ │ ├── logo_tnc.xml │ │ ├── logo_trig.xml │ │ ├── logo_trx.xml │ │ ├── logo_tzc.xml │ │ ├── logo_ubq.xml │ │ ├── logo_usdt.xml │ │ ├── logo_ven.xml │ │ ├── logo_veri.xml │ │ ├── logo_via.xml │ │ ├── logo_vivo.xml │ │ ├── logo_vrc.xml │ │ ├── logo_vtc.xml │ │ ├── logo_wabi.xml │ │ ├── logo_waves.xml │ │ ├── logo_wax.xml │ │ ├── logo_wtc.xml │ │ ├── logo_xbc.xml │ │ ├── logo_xcp.xml │ │ ├── logo_xdn.xml │ │ ├── logo_xem.xml │ │ ├── logo_xlm.xml │ │ ├── logo_xmg.xml │ │ ├── logo_xmr.xml │ │ ├── logo_xmy.xml │ │ ├── logo_xp.xml │ │ ├── logo_xpm.xml │ │ ├── logo_xrb.xml │ │ ├── logo_xrp.xml │ │ ├── logo_xtz.xml │ │ ├── logo_xuc.xml │ │ ├── logo_xvc.xml │ │ ├── logo_xvg.xml │ │ ├── logo_xzc.xml │ │ ├── logo_zcl.xml │ │ ├── logo_zec.xml │ │ ├── logo_zen.xml │ │ └── logo_zrx.xml │ │ ├── layout │ │ ├── activity_add_wallet.xml │ │ ├── activity_scan_wallet.xml │ │ ├── activity_select_crypto.xml │ │ ├── activity_show_wallet.xml │ │ ├── activity_wallet_list.xml │ │ ├── list_item_crypto.xml │ │ ├── list_item_wallet.xml │ │ ├── state_empty.xml │ │ ├── state_loading.xml │ │ ├── state_not_found.xml │ │ └── view_crypto_logo.xml │ │ ├── menu │ │ ├── menu_search.xml │ │ ├── menu_settings.xml │ │ └── menu_share.xml │ │ ├── mipmap-anydpi-v26 │ │ └── ic_launcher.xml │ │ ├── mipmap-hdpi │ │ └── ic_launcher.png │ │ ├── mipmap-ldpi │ │ └── ic_launcher.png │ │ ├── mipmap-mdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxhdpi │ │ └── ic_launcher.png │ │ ├── mipmap-xxxhdpi │ │ └── ic_launcher.png │ │ ├── raw │ │ ├── anim_coin_stack.json │ │ ├── anim_empty_box.json │ │ └── anim_scan_qrcode.json │ │ ├── values-pt │ │ └── strings.xml │ │ ├── values │ │ ├── attrs.xml │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ │ └── xml │ │ └── settings.xml │ └── test │ └── java │ └── cafe │ └── adriel │ └── cryp │ └── ExampleUnitTest.kt ├── art ├── empty-state.gif ├── open-add-wallet.gif ├── scan-wallet.gif └── screenshots.png ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | ko_fi: adrielcafe 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | *.apk 3 | .gradle 4 | .DS_Store 5 | .externalNativeBuild 6 | /local.properties 7 | /.idea 8 | /build 9 | /captures 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License 2 | 3 | Copyright (c) 2018 Adriel Café 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Cryp Icon](app/src/main/res/mipmap-xxhdpi/ic_launcher.png) 2 | 3 | # Cryp 4 | An cryptocurrency portfolio app for Android (WIP) 5 | 6 | ![Cryp Icon](art/screenshots.png) 7 | 8 | |![Empty state](art/empty-state.gif)|![Open Add Wallet activity](art/open-add-wallet.gif)|![Scan Wallet](art/scan-wallet.gif)| 9 | |---|---|---| 10 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | /release 3 | google-services.json -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Cryp 2 | -keep class cafe.adriel.cryp.model.entity.** { *; } 3 | -keep class android.support.v7.widget.SearchView { *; } 4 | 5 | # Kotlin 6 | -dontwarn org.jetbrains.annotations.** 7 | -dontwarn kotlin.reflect.jvm.internal.** 8 | -keep public class kotlin.reflect.jvm.internal.impl.builtins.* { public *; } 9 | 10 | # Moshi 11 | -dontwarn okio.** 12 | -dontwarn javax.annotation.** 13 | -keepclasseswithmembers class * { 14 | @com.squareup.moshi.* ; 15 | } 16 | -keep @com.squareup.moshi.JsonQualifier interface * 17 | -keepclassmembers class ** { 18 | @com.squareup.moshi.FromJson *; 19 | @com.squareup.moshi.ToJson *; 20 | } 21 | -keep class kotlin.Metadata { *; } 22 | -keepclassmembers class kotlin.Metadata { 23 | public ; 24 | } 25 | 26 | # FastAdapter 27 | -dontwarn com.mikepenz.fastadapter.** 28 | -dontwarn com.mikepenz.fastadapter_extensions.items.* 29 | 30 | # Retrofit 31 | -dontwarn okio.** 32 | -dontnote retrofit2.Platform 33 | -dontwarn retrofit2.Platform$Java8 34 | -keepattributes Signature 35 | -keepattributes Exceptions 36 | 37 | # OkHttp 38 | -dontwarn okhttp3.** 39 | -dontwarn okio.** 40 | -dontwarn javax.annotation.** 41 | -dontwarn org.conscrypt.** 42 | -keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase -------------------------------------------------------------------------------- /app/src/androidTest/java/cafe/adriel/cryp/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package cafe.adriel.cryp 2 | 3 | import android.support.test.InstrumentationRegistry 4 | import android.support.test.runner.AndroidJUnit4 5 | 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | import org.junit.Assert.* 10 | 11 | @RunWith(AndroidJUnit4::class) 12 | class ExampleInstrumentedTest { 13 | @Test 14 | fun useAppContext() { 15 | val appContext = InstrumentationRegistry.getTargetContext() 16 | assertEquals("cafe.adriel.cryp", appContext.packageName) 17 | } 18 | } -------------------------------------------------------------------------------- /app/src/main/java/cafe/adriel/cryp/Event.kt: -------------------------------------------------------------------------------- 1 | package cafe.adriel.cryp 2 | 3 | import cafe.adriel.cryp.model.entity.Crypto 4 | 5 | data class SwipeMenuOpenedEvent(val itemId: Long) 6 | 7 | data class QrCodeScannedEvent(val text: String) 8 | 9 | data class SelectedCryptoEvent(val crypto: Crypto) -------------------------------------------------------------------------------- /app/src/main/java/cafe/adriel/cryp/model/entity/Crypto.kt: -------------------------------------------------------------------------------- 1 | package cafe.adriel.cryp.model.entity 2 | 3 | import android.annotation.SuppressLint 4 | import cafe.adriel.cryp.App 5 | import com.squareup.moshi.Json 6 | import io.mironov.smuggler.AutoParcelable 7 | 8 | @SuppressLint("ParcelCreator") 9 | data class Crypto( 10 | @Json(name = "Symbol") 11 | val symbol: String, 12 | @Json(name = "CoinName") 13 | val name: String, 14 | @Json(name = "IsTrading") 15 | val isTrading: Boolean = false) : AutoParcelable { 16 | 17 | val fullName = "$name ($symbol)" 18 | val logoResId = App.context.resources.getIdentifier( 19 | "logo_${symbol.toLowerCase()}", "drawable", App.context.packageName) 20 | 21 | fun hasLogo() = logoResId > 0 22 | 23 | } -------------------------------------------------------------------------------- /app/src/main/java/cafe/adriel/cryp/model/entity/CryptoUnit.kt: -------------------------------------------------------------------------------- 1 | package cafe.adriel.cryp.model.entity 2 | 3 | enum class CryptoUnit(val fullName: String) { 4 | BTC("BTC"), 5 | M_BTC("mBTC"), 6 | BITS("Bits"), 7 | SATOSHI("Satoshi"); 8 | 9 | override fun toString() = fullName 10 | 11 | } -------------------------------------------------------------------------------- /app/src/main/java/cafe/adriel/cryp/model/entity/MessageType.kt: -------------------------------------------------------------------------------- 1 | package cafe.adriel.cryp.model.entity 2 | 3 | enum class MessageType { 4 | DEFAULT, 5 | SUCCESS, 6 | INFO, 7 | WARN, 8 | ERROR 9 | } -------------------------------------------------------------------------------- /app/src/main/java/cafe/adriel/cryp/model/entity/Prices.kt: -------------------------------------------------------------------------------- 1 | package cafe.adriel.cryp.model.entity 2 | 3 | import android.annotation.SuppressLint 4 | import io.mironov.smuggler.AutoParcelable 5 | import java.math.BigDecimal 6 | 7 | @SuppressLint("ParcelCreator") 8 | data class Prices( 9 | val cryptoSymbol: String, 10 | var priceBtc: BigDecimal = BigDecimal.ZERO, 11 | var priceEth: BigDecimal = BigDecimal.ZERO, 12 | var priceCurrency: BigDecimal = BigDecimal.ZERO) : AutoParcelable -------------------------------------------------------------------------------- /app/src/main/java/cafe/adriel/cryp/model/entity/response/BalanceResponse.kt: -------------------------------------------------------------------------------- 1 | package cafe.adriel.cryp.model.entity.response 2 | 3 | import android.annotation.SuppressLint 4 | import io.mironov.smuggler.AutoParcelable 5 | import java.math.BigDecimal 6 | 7 | @SuppressLint("ParcelCreator") 8 | data class BalanceResponse( 9 | val balance: BigDecimal = BigDecimal.ONE.negate()) : AutoParcelable -------------------------------------------------------------------------------- /app/src/main/java/cafe/adriel/cryp/model/entity/response/SupportedCryptosResponse.kt: -------------------------------------------------------------------------------- 1 | package cafe.adriel.cryp.model.entity.response 2 | 3 | import android.annotation.SuppressLint 4 | import cafe.adriel.cryp.model.entity.Crypto 5 | import com.squareup.moshi.Json 6 | import io.mironov.smuggler.AutoParcelable 7 | 8 | @SuppressLint("ParcelCreator") 9 | data class SupportedCryptosResponse( 10 | @Json(name = "Data") 11 | val data: Map) : AutoParcelable -------------------------------------------------------------------------------- /app/src/main/java/cafe/adriel/cryp/model/repository/PreferenceRepository.kt: -------------------------------------------------------------------------------- 1 | package cafe.adriel.cryp.model.repository 2 | 3 | import android.preference.PreferenceManager 4 | import cafe.adriel.cryp.App 5 | import cafe.adriel.cryp.Const 6 | import cafe.adriel.cryp.R 7 | import cafe.adriel.cryp.model.entity.CryptoUnit 8 | import java.util.* 9 | 10 | object PreferenceRepository { 11 | 12 | private val prefDb by lazy { 13 | PreferenceManager.getDefaultSharedPreferences(App.context) 14 | } 15 | 16 | fun isFirstOpen() = 17 | prefDb.getBoolean(Const.PREF_FIRST_OPEN, true) 18 | 19 | fun setFirstOpen(firstOpen: Boolean) = 20 | prefDb.edit() 21 | .putBoolean(Const.PREF_FIRST_OPEN, firstOpen) 22 | .apply() 23 | 24 | fun getSupportedLanguages() = 25 | App.context.resources.getStringArray(R.array.language_values) 26 | 27 | fun getLanguage() = 28 | Locale.forLanguageTag( 29 | prefDb.getString(Const.PREF_LANGUAGE, Locale.ENGLISH.language)) 30 | 31 | fun setLanguage(language: String) = 32 | prefDb.edit() 33 | .putString(Const.PREF_LANGUAGE, language) 34 | .apply() 35 | 36 | fun getCurrency() = 37 | Currency.getInstance(prefDb.getString(Const.PREF_CURRENCY, Const.DEFAULT_CURRENCY)) 38 | 39 | fun getCryptoUnit() = 40 | CryptoUnit.valueOf( 41 | prefDb.getString(Const.PREF_CRYPTO_UNIT, CryptoUnit.BTC.name)) 42 | 43 | } -------------------------------------------------------------------------------- /app/src/main/java/cafe/adriel/cryp/model/repository/adapter/BigDecimalAdapter.kt: -------------------------------------------------------------------------------- 1 | package cafe.adriel.cryp.model.repository.adapter 2 | 3 | import cafe.adriel.cryp.Const 4 | import com.squareup.moshi.FromJson 5 | import com.squareup.moshi.ToJson 6 | import java.math.BigDecimal 7 | import java.math.MathContext 8 | import java.math.RoundingMode 9 | 10 | class BigDecimalAdapter { 11 | 12 | @ToJson 13 | fun toJson(value: BigDecimal) = 14 | value.toPlainString() 15 | 16 | @FromJson 17 | fun fromJson(value: String) = 18 | // Satoshi format 19 | if (value.endsWith(".0") || !value.contains('.')) 20 | BigDecimal(value, MathContext.DECIMAL128) 21 | .setScale(0, RoundingMode.DOWN) / Const.BTC_TO_SATOSHI.toBigDecimal() 22 | // BTC format 23 | else 24 | BigDecimal(value, MathContext.DECIMAL128) 25 | .setScale(8, RoundingMode.DOWN) 26 | 27 | } -------------------------------------------------------------------------------- /app/src/main/java/cafe/adriel/cryp/view/BaseFragment.kt: -------------------------------------------------------------------------------- 1 | package cafe.adriel.cryp.view 2 | 3 | import android.os.Bundle 4 | import com.arellomobile.mvp.MvpAppCompatFragment 5 | import com.evernote.android.state.StateSaver 6 | 7 | abstract class BaseFragment : MvpAppCompatFragment(){ 8 | 9 | override fun onCreate(savedInstanceState: Bundle?) { 10 | super.onCreate(savedInstanceState) 11 | StateSaver.restoreInstanceState(this, savedInstanceState) 12 | } 13 | 14 | override fun onSaveInstanceState(outState: Bundle) { 15 | super.onSaveInstanceState(outState) 16 | StateSaver.saveInstanceState(this, outState) 17 | } 18 | 19 | } -------------------------------------------------------------------------------- /app/src/main/java/cafe/adriel/cryp/view/IView.kt: -------------------------------------------------------------------------------- 1 | package cafe.adriel.cryp.view 2 | 3 | import android.support.annotation.StringRes 4 | import cafe.adriel.cryp.model.entity.MessageType 5 | import com.arellomobile.mvp.MvpView 6 | 7 | interface IView : MvpView { 8 | 9 | fun showMessage(@StringRes messageRes: Int, type: MessageType = MessageType.DEFAULT) 10 | fun showMessage(message: String, type: MessageType = MessageType.DEFAULT) 11 | 12 | fun showProgressDialog(title: String, message: String) 13 | fun hideProgressDialog() 14 | 15 | } -------------------------------------------------------------------------------- /app/src/main/java/cafe/adriel/cryp/view/custom/QrCodeOverlayView.kt: -------------------------------------------------------------------------------- 1 | package cafe.adriel.cryp.view.custom 2 | 3 | import android.content.Context 4 | import android.graphics.Canvas 5 | import android.graphics.Paint 6 | import android.graphics.PointF 7 | import android.util.AttributeSet 8 | import android.view.View 9 | import cafe.adriel.cryp.R 10 | import cafe.adriel.cryp.colorFrom 11 | 12 | class QrCodeOverlayView(context: Context, attributeSet: AttributeSet? = null) 13 | : View(context, attributeSet) { 14 | 15 | private var points: Array? = null 16 | private var paint = Paint() 17 | 18 | init { 19 | paint.apply { 20 | color = colorFrom(R.color.colorAccent) 21 | style = Paint.Style.FILL 22 | } 23 | } 24 | 25 | override fun draw(canvas: Canvas) { 26 | super.draw(canvas) 27 | points?.forEach { 28 | canvas.drawCircle(it.x, it.y, 20f, paint) 29 | } 30 | } 31 | 32 | fun setPoints(points: Array) { 33 | this.points = points 34 | invalidate() 35 | } 36 | } -------------------------------------------------------------------------------- /app/src/main/java/cafe/adriel/cryp/view/custom/VerticalSeparatorDecoration.kt: -------------------------------------------------------------------------------- 1 | package cafe.adriel.cryp.view.custom 2 | 3 | import android.graphics.Rect 4 | import android.support.v7.widget.RecyclerView 5 | import android.view.View 6 | import cafe.adriel.cryp.px 7 | 8 | class VerticalSeparatorDecoration(val height: Int) : RecyclerView.ItemDecoration() { 9 | 10 | override fun getItemOffsets(outRect: Rect, view: View, parent: RecyclerView, state: RecyclerView.State) { 11 | val itemPosition = parent.getChildAdapterPosition(view) 12 | val itemCount = state.itemCount 13 | 14 | // First item 15 | if(itemPosition == 0) { 16 | outRect.set(0, height.px, 0, 0) 17 | // Last item 18 | } else if(itemCount > 0 && itemPosition == itemCount - 1){ 19 | outRect.set(0, 0, 0, height.px) 20 | } 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /app/src/main/java/cafe/adriel/cryp/view/wallet/add/AddWalletView.kt: -------------------------------------------------------------------------------- 1 | package cafe.adriel.cryp.view.wallet.add 2 | 3 | import cafe.adriel.cryp.view.IView 4 | 5 | interface AddWalletView : IView { 6 | 7 | fun close() 8 | 9 | } -------------------------------------------------------------------------------- /app/src/main/java/cafe/adriel/cryp/view/wallet/list/WalletListView.kt: -------------------------------------------------------------------------------- 1 | package cafe.adriel.cryp.view.wallet.list 2 | 3 | import cafe.adriel.cryp.model.entity.Wallet 4 | import cafe.adriel.cryp.view.IView 5 | 6 | interface WalletListView: IView { 7 | 8 | fun remove(wallet: Wallet) 9 | 10 | } -------------------------------------------------------------------------------- /app/src/main/java/cafe/adriel/cryp/view/wallet/scan/ScanWalletActivity.kt: -------------------------------------------------------------------------------- 1 | package cafe.adriel.cryp.view.wallet.scan 2 | 3 | import android.graphics.PointF 4 | import android.os.Bundle 5 | import cafe.adriel.cryp.Analytics 6 | import cafe.adriel.cryp.QrCodeScannedEvent 7 | import cafe.adriel.cryp.R 8 | import cafe.adriel.cryp.view.BaseActivity 9 | import cafe.adriel.kbus.KBus 10 | import com.dlazaro66.qrcodereaderview.QRCodeReaderView 11 | import kotlinx.android.synthetic.main.activity_scan_wallet.* 12 | 13 | class ScanWalletActivity : BaseActivity(), QRCodeReaderView.OnQRCodeReadListener { 14 | 15 | private var qrCodeRead = false 16 | 17 | override fun onCreate(savedInstanceState: Bundle?) { 18 | super.onCreate(savedInstanceState) 19 | setContentView(R.layout.activity_scan_wallet) 20 | 21 | vReader.setOnQRCodeReadListener(this) 22 | vReader.forceAutoFocus() 23 | } 24 | 25 | override fun onQRCodeRead(text: String?, points: Array?) { 26 | points?.let { vOverlay.setPoints(it) } 27 | text?.let { 28 | if(!qrCodeRead) { 29 | qrCodeRead = true 30 | vReader.postDelayed({ 31 | KBus.post(QrCodeScannedEvent(it)) 32 | Analytics.logScanWallet() 33 | finish() 34 | }, 500) 35 | } 36 | } 37 | } 38 | 39 | } -------------------------------------------------------------------------------- /app/src/main/java/cafe/adriel/cryp/view/wallet/select/CryptoAdapterItem.kt: -------------------------------------------------------------------------------- 1 | package cafe.adriel.cryp.view.wallet.select 2 | 3 | import android.support.v7.widget.RecyclerView 4 | import android.view.View 5 | import cafe.adriel.cryp.R 6 | import cafe.adriel.cryp.model.entity.Crypto 7 | import com.mikepenz.fastadapter.items.AbstractItem 8 | import kotlinx.android.synthetic.main.list_item_crypto.view.* 9 | 10 | class CryptoAdapterItem(val crypto: Crypto) : 11 | AbstractItem() { 12 | 13 | override fun getIdentifier() = crypto.symbol.hashCode().toLong() 14 | 15 | override fun getType() = layoutRes 16 | 17 | override fun getLayoutRes() = R.layout.list_item_crypto 18 | 19 | override fun getViewHolder(v: View?) = ViewHolder(v!!) 20 | 21 | override fun bindView(holder: ViewHolder, payloads: MutableList) { 22 | super.bindView(holder, payloads) 23 | holder.itemView?.apply { 24 | vCryptoSymbol.text = crypto.symbol 25 | vCryptoName.text = crypto.name 26 | vCryptoLogo.setCrypto(crypto) 27 | // vAutoRefresh.visibility = if(crypto.autoRefresh) View.VISIBLE else View.GONE 28 | } 29 | } 30 | 31 | override fun unbindView(holder: ViewHolder) { 32 | super.unbindView(holder) 33 | holder.itemView?.apply { 34 | vCryptoSymbol.text = "" 35 | vCryptoName.text = "" 36 | vCryptoLogo.clear() 37 | vAutoRefresh.visibility = View.GONE 38 | } 39 | } 40 | 41 | inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) 42 | 43 | } -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_add.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_arrow_right.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_close.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_delete.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_edit.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_launcher_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 13 | 14 | 20 | 23 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_qrcode.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 15 | 18 | 21 | 24 | 27 | 30 | 33 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_qrcode_frame.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_refresh.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_search.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_settings.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/ic_share.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_act.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_adx.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_ae.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_ardr.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_ark.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_ast.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_atm.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_bat.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_bay.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_bccoin.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_bch.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_bcn.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_bdl.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_bela.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_blk.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_block.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_bnb.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_bnt.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_bq.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_btc.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_btcd.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_btm.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_bts.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_burst.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_cdn.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_cnd.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_cred.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_crpt.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 27 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_cvc.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_dash.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_dat.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_data.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_dcn.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_dcr.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_dgd.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_doge.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_dogeth.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_drgn.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_ella.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_emc.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_emc2.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 18 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_eos.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_etc.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_eth.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 18 | 22 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_etn.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_evx.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_exp.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_fil.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_game.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_gas.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_gbx.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_gbyte.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_gno.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_gnt.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_gup.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_gvt.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_hsr.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_huc.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_icn.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_icx.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_ignis.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_iop.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_iost.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_kcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_kmd.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_knc.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_krb.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_lbc.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_link.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_lkk.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_lrc.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_ltc.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_maid.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | 22 | 29 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_mcap.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_mco.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_med.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_mkr.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_mln.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_mnx.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_mona.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_mtl.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_music.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_nav.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_nebl.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_neo.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_neos.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_ngc.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_nlc2.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_nlg.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_nmc.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_nxs.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_nxt.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_omg.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_omni.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_ost.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_pasl.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_pay.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_pink.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 20 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_pirl.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_pivx.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_plr.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_poe.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_pot.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_ppc.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_ppp.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_ppt.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_pura.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_qsp.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_rads.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_rdd.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 18 | 30 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_rdn.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_req.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_ric.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_rise.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_rpx.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_salt.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_san.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_sbd.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_sc.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 23 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_sky.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_smart.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_sngls.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_snt.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_sphtx.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_steem.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_storm.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_strat.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_sub.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_sys.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 11 | 21 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_taas.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_tau.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 24 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_tkn.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_tnc.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_tzc.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_ubq.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 14 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_usdt.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 19 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_ven.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_veri.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_via.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_vivo.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_vrc.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_vtc.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_waves.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_wax.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_xbc.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_xcp.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_xdn.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_xem.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 25 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_xlm.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_xmg.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_xmr.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_xmy.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_xp.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 20 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_xpm.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_xrp.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 22 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_xuc.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_xvc.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_xvg.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_xzc.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 17 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_zcl.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 26 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_zec.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 18 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/logo_zen.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_scan_wallet.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 15 | 16 | 20 | 21 | 27 | 28 | -------------------------------------------------------------------------------- /app/src/main/res/layout/state_loading.xml: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/layout/state_not_found.xml: -------------------------------------------------------------------------------- 1 | 2 | 12 | 13 | 20 | 21 | 31 | 32 | -------------------------------------------------------------------------------- /app/src/main/res/layout/view_crypto_logo.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 17 | 18 | 33 | 34 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_search.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 14 | 15 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_settings.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_share.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adrielcafe/CrypAndroidApp/5e9c5f805c66990f4b7da3169a0044bb251ccd22/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-ldpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adrielcafe/CrypAndroidApp/5e9c5f805c66990f4b7da3169a0044bb251ccd22/app/src/main/res/mipmap-ldpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adrielcafe/CrypAndroidApp/5e9c5f805c66990f4b7da3169a0044bb251ccd22/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adrielcafe/CrypAndroidApp/5e9c5f805c66990f4b7da3169a0044bb251ccd22/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adrielcafe/CrypAndroidApp/5e9c5f805c66990f4b7da3169a0044bb251ccd22/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adrielcafe/CrypAndroidApp/5e9c5f805c66990f4b7da3169a0044bb251ccd22/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #336e7b 4 | #266370 5 | #1e8bc3 6 | #2574a9 7 | #442574a9 8 | 9 | #424242 10 | #6c7a89 11 | #bdc3c7 12 | #dadfe1 13 | #ecf0f1 14 | 15 | #cf000f 16 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 13 | 19 | 20 | 23 | 24 | -------------------------------------------------------------------------------- /app/src/test/java/cafe/adriel/cryp/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package cafe.adriel.cryp 2 | 3 | import org.junit.Assert.assertEquals 4 | import org.junit.Test 5 | 6 | class ExampleUnitTest { 7 | @Test 8 | fun addition_isCorrect() { 9 | assertEquals(4, 2 + 2) 10 | } 11 | } -------------------------------------------------------------------------------- /art/empty-state.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adrielcafe/CrypAndroidApp/5e9c5f805c66990f4b7da3169a0044bb251ccd22/art/empty-state.gif -------------------------------------------------------------------------------- /art/open-add-wallet.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adrielcafe/CrypAndroidApp/5e9c5f805c66990f4b7da3169a0044bb251ccd22/art/open-add-wallet.gif -------------------------------------------------------------------------------- /art/scan-wallet.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adrielcafe/CrypAndroidApp/5e9c5f805c66990f4b7da3169a0044bb251ccd22/art/scan-wallet.gif -------------------------------------------------------------------------------- /art/screenshots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adrielcafe/CrypAndroidApp/5e9c5f805c66990f4b7da3169a0044bb251ccd22/art/screenshots.png -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.support_version = '27.1.0' 3 | ext.firebase_version = '11.8.0' 4 | ext.kotlin_version = '1.2.21' 5 | ext.moxy_version = '1.5.3' 6 | ext.retrofit_version = '2.3.0' 7 | ext.moshi_version = '1.5.0' 8 | ext.android_state_version = '1.2.0' 9 | ext.permissions_dispatcher_version = '3.1.0' 10 | ext.fastadapter_version = '3.2.4' 11 | 12 | dependencies { 13 | classpath 'com.android.tools.build:gradle:3.1.0-beta4' 14 | classpath 'com.google.gms:google-services:3.2.0' 15 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 16 | classpath "io.mironov.smuggler:smuggler-plugin:0.13.2" 17 | classpath 'com.github.ben-manes:gradle-versions-plugin:0.17.0' 18 | } 19 | repositories { 20 | google() 21 | jcenter() 22 | mavenCentral() 23 | } 24 | } 25 | 26 | allprojects { 27 | repositories { 28 | google() 29 | jcenter() 30 | mavenCentral() 31 | maven { url "https://jitpack.io" } 32 | } 33 | } 34 | 35 | task clean(type: Delete) { 36 | delete rootProject.buildDir 37 | } -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx8g 2 | org.gradle.parallel=true 3 | org.gradle.daemon=true 4 | org.gradle.caching=true 5 | org.gradle.configureondemand=true 6 | kotlin.incremental.usePreciseJavaTracking=true -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adrielcafe/CrypAndroidApp/5e9c5f805c66990f4b7da3169a0044bb251ccd22/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sun Oct 01 15:07:42 BRT 2017 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.5-all.zip 7 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | --------------------------------------------------------------------------------