From d130a9ebeb4acbb9756733612340c9a1fe8dd3e2 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 27 Oct 2020 11:28:10 +0300 Subject: [PATCH 01/24] Updated on 2026-08-14 --- .../main/java/com/tangem/tap/MainActivity.kt | 4 +- .../com/tangem/tap/common/redux/AppState.kt | 4 +- .../tap/features/home/redux/HomeMiddleware.kt | 81 +++++++++---------- 3 files changed, 41 insertions(+), 48 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/MainActivity.kt b/app/src/main/java/com/tangem/tap/MainActivity.kt index ffa1f2aa54..d8e89fe868 100644 --- a/app/src/main/java/com/tangem/tap/MainActivity.kt +++ b/app/src/main/java/com/tangem/tap/MainActivity.kt @@ -5,7 +5,6 @@ import android.content.pm.ActivityInfo import android.nfc.NfcAdapter import android.nfc.Tag import android.os.Bundle -import android.os.Handler import androidx.appcompat.app.AppCompatActivity import com.tangem.CardFilter import com.tangem.Config @@ -78,7 +77,7 @@ class MainActivity : AppCompatActivity() { override fun onNewIntent(intent: Intent?) { super.onNewIntent(intent) - Handler(mainLooper).postDelayed( { handleBackgroundScan(intent) } , 200) + handleBackgroundScan(intent) } private fun handleBackgroundScan(intent: Intent?) { @@ -88,6 +87,7 @@ class MainActivity : AppCompatActivity() { val tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG) if (tag != null) { intent.action = null + store.dispatch(NavigationAction.NavigateTo(AppScreen.Home, false)) store.dispatch(HomeAction.ReadCard) } } diff --git a/app/src/main/java/com/tangem/tap/common/redux/AppState.kt b/app/src/main/java/com/tangem/tap/common/redux/AppState.kt index d300bb65b7..5f23825839 100644 --- a/app/src/main/java/com/tangem/tap/common/redux/AppState.kt +++ b/app/src/main/java/com/tangem/tap/common/redux/AppState.kt @@ -8,8 +8,8 @@ import com.tangem.tap.features.details.redux.DetailsMiddleware import com.tangem.tap.features.details.redux.DetailsState import com.tangem.tap.features.disclaimer.redux.DisclaimerMiddleware import com.tangem.tap.features.disclaimer.redux.DisclaimerState +import com.tangem.tap.features.home.redux.HomeMiddleware import com.tangem.tap.features.home.redux.HomeState -import com.tangem.tap.features.home.redux.homeMiddleware import com.tangem.tap.features.send.redux.middlewares.sendMiddleware import com.tangem.tap.features.send.redux.states.SendState import com.tangem.tap.features.wallet.redux.WalletState @@ -31,7 +31,7 @@ data class AppState( fun getMiddleware(): List> { return listOf( logMiddleware, navigationMiddleware, notificationsMiddleware, globalMiddleware, - homeMiddleware, walletMiddleware, sendMiddleware, + HomeMiddleware().homeMiddleware, walletMiddleware, sendMiddleware, DetailsMiddleware().detailsMiddleware, DisclaimerMiddleware().disclaimerMiddleware ) diff --git a/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt b/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt index b67c254be3..ec3297fd27 100644 --- a/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt @@ -17,61 +17,54 @@ import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import org.rekotlin.Middleware -val homeMiddleware: Middleware = { dispatch, state -> - { next -> - { action -> - when (action) { - is HomeAction.CheckIfFirstLaunch -> { - store.dispatch( - HomeAction.CheckIfFirstLaunch.Result(preferencesStorage.isFirstLaunch()) - ) - } - is HomeAction.ReadCard -> { - scope.launch { - val result = tangemSdkManager.scanNote() - withContext(Dispatchers.Main) { - when (result) { - is CompletionResult.Success -> { - store.dispatch(GlobalAction.RestoreAppCurrency) - store.state.globalState.tapWalletManager.onCardScanned(result.data) - showDisclaimerOrNavigateToWallet() +class HomeMiddleware { + val homeMiddleware: Middleware = { dispatch, state -> + { next -> + { action -> + when (action) { + is HomeAction.CheckIfFirstLaunch -> { + store.dispatch( + HomeAction.CheckIfFirstLaunch.Result(preferencesStorage.isFirstLaunch()) + ) + } + is HomeAction.ReadCard -> { + scope.launch { + val result = tangemSdkManager.scanNote() + withContext(Dispatchers.Main) { + when (result) { + is CompletionResult.Success -> { + store.dispatch(GlobalAction.RestoreAppCurrency) + store.state.globalState.tapWalletManager.onCardScanned(result.data) + showDisclaimerOrNavigateToWallet() + } } } } } + is HomeAction.GoToShop -> { + val uri = Uri.parse(CARD_SHOP_URI) + val intent = Intent(Intent.ACTION_VIEW, uri) + startActivity(action.context, intent, null) + } } - is HomeAction.GoToShop -> { - val uri = Uri.parse(CARD_SHOP_URI) - val intent = Intent(Intent.ACTION_VIEW, uri) - startActivity(action.context, intent, null) - } + next(action) } - next(action) } } -} -private fun showDisclaimerOrNavigateToWallet() { - if (preferencesStorage.wasDisclaimerAccepted()) { - navigateToWallet() - } else { - store.dispatch(NavigationAction.NavigateTo(AppScreen.Disclaimer)) - } -} - - -private fun navigateToWallet() { - if (store.state.navigationState.backStack.isNotEmpty()) { - val currentScreen = store.state.navigationState.backStack.last() - if (currentScreen == AppScreen.Home) { - store.dispatch(NavigationAction.NavigateTo(AppScreen.Wallet)) - } else if (currentScreen != AppScreen.Wallet) { - store.dispatch(NavigationAction.PopBackTo(AppScreen.Home)) + private fun showDisclaimerOrNavigateToWallet() { + if (preferencesStorage.wasDisclaimerAccepted()) { store.dispatch(NavigationAction.NavigateTo(AppScreen.Wallet)) + } else { + store.dispatch(NavigationAction.NavigateTo(AppScreen.Disclaimer)) } - } else { - store.dispatch(NavigationAction.NavigateTo(AppScreen.Wallet)) + } + + companion object { + private const val CARD_SHOP_URI = + "https://shop.tangem.com/?afmc=1i&utm_campaign=1i&utm_source=leaddyno&utm_medium=affiliate" } } -private const val CARD_SHOP_URI = "https://shop.tangem.com/?afmc=1i&utm_campaign=1i&utm_source=leaddyno&utm_medium=affiliate" + + From 7fa2d12223ad93cfe3efb8eec7b2f886a56552bd Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 27 Oct 2020 16:32:03 +0300 Subject: [PATCH 02/24] Updated on 2026-08-14 --- app/src/main/res/values-v29/styles.xml | 6 ++++++ app/src/main/res/values/styles.xml | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 app/src/main/res/values-v29/styles.xml diff --git a/app/src/main/res/values-v29/styles.xml b/app/src/main/res/values-v29/styles.xml new file mode 100644 index 0000000000..7032bb8f84 --- /dev/null +++ b/app/src/main/res/values-v29/styles.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 61530d2290..03b88ac43d 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,6 +1,6 @@ - + From 088171f84de1f2a23253953c021b80b5e548b6e5 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 6 Nov 2020 16:52:44 +0300 Subject: [PATCH 08/24] Updated on 2026-08-14 --- app/src/main/res/values-de/strings.xml | 30 +++- app/src/main/res/values-fr/strings.xml | 24 ++- app/src/main/res/values-it/strings.xml | 195 +++++++++++++++++++++++++ app/src/main/res/values/strings.xml | 7 + 4 files changed, 252 insertions(+), 4 deletions(-) create mode 100644 app/src/main/res/values-it/strings.xml diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 1c3a8b8952..467c665f4f 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -162,9 +162,35 @@ RECHTLICHER HAFTUNGSAUSSCHLUSS Nutzungsbedingungen Keine Internetverbindung - Tippen um zu scannen - Tippen um zu scannen Das Zielkonto ist nicht erstellt. Der abzusendende Betrag soll %1$s %2$s + Gebühr oder mehr sein Erhalt der Gebühr fehlgeschlagen + Unbekannter Fehler + Verifikation der PayID ist fehlgeschlagen + PayID wird von der Blockchain nicht unterstützt + PayID ist nicht registriert + PayID-Anfrage ist fehlgeschlagen + + Die Adresse stimmt mit der Adresse Ihrer Brieftasche überein + Nicht genug Geld + Interner Fehler der Blockchain + Falsche Gebühr + Minimaler Betrag ist %s + Restbestand zu klein + + Die Adresse wurde erfolgreich kopiert + + + Zuerst geben Sie die gewünschte PayID ein + + Legen Sie die Karte zum Scannen an + Legen Sie die Karte an + + Ihr Kontostand in dieser Brieftasche ist nicht Null, oder Sie haben unbestätigte Transaktionen. Es ist unmöglich die Funktion der Brieftasche zu löschen. + Dies ist die derzeit aktive Wahl + + Damit Sie beim nächsten Aufladen Ihrer Brieftasche keine erhöhte Provision zahlen, soll der Betrag um %s XTZ reduziert werden + Um %s XTZ reduzieren + Nein, alles senden + \ No newline at end of file diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 4bf21924ff..f315ba278d 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -160,9 +160,29 @@ Avertissement Conditions d\'utilisation Pas de connexion internet - Touchez pour scanner - Touchez pour scanner Le compte cible n\'a pas été créé. Le montant à envoyer doit être de %1$s %2$s + commissions ou plus Échec de réception des commissions + Erreur inconnue + La vérification de PayID a échoué + PayID non pris en charge par la blockchain + PayID non enregistré + La demande de PayID a échoué + L’adresse est la même que celle de votre portefeuille + Solde insuffisant + Erreur interne de la blockchain + Commission non valide + Le montant minimal est de %ы + Le reste est trop petit + L’adresse a été copiée avec succès + Saisissez d’abord le PayID requis + Posez pour scanner + Posez la carte + Votre solde sur ce portefeuille n\'est pas nul, ou vous avez des transactions non confirmées. Impossible de supprimer la fonction du portefeuille + Cette option est déjà active + + Pour ne pas payer une commission élevée la prochaine fois que vous rechargez votre portefeuille, veuillez réduire le montant de %s XTZ + Réduire de% s XTZ + Non, envoyer toute la somme + \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml new file mode 100644 index 0000000000..2be8538f88 --- /dev/null +++ b/app/src/main/res/values-it/strings.xml @@ -0,0 +1,195 @@ + + + + No + Mantieni le modifiche + Avviso + Riprova + Fatto + Annulla + Accesso alla videocamera negato + Non hai fornito l\'accesso alla tua videocamera, modifica le tue impostazioni sulla privacy + Impostazioni + Benvenuti in Tangem. Hai una delle nostre schede?> + Benevenuti di nuovo su Tangem Tap. Scansiona la tua scheda per iniziare. + Si! Scansiona scheda. + Shop + Preparati ad avvicinare la tua scheda sul retro del telefono. + Avvicina + Scansiona scheda + Scansiona + Invia + Crea portafoglio + Tangem Tap + Scegli l\'opzione del portafoglio + Token + Token + Saldo verificato + Il saldo sta per essere caricato… + Blockchain non raggiungibile + Conto non creato + Carica %1$s+ %2$s per creare un conto + Scheda vuota + Crea un portafoglio per iniziare ad utilizzare la tua scheda Tangem + Questa scheda non è supportata + La tua scheda Tangem è stata creata per funzionare con un\'altra applicazione. Leggere il nome e le istruzioni sulla scheda e installare l\'applicazione corretta + Transazione in corso… + Invia\u0020 + su %s + Ricevi\u0020 + da %s + Cerca indirizzo + Crea PayID + portafoglio $s + Crea PayID + Scheda: %s + Nome PayID + $payid.tangem.com + Crea + Ваш PayID – informazioni per te uniche, come il tuo numero di telefono, indirizzo email o ABN. + PayID creato con successo e copiato negli appunti + Errore di risposta durante la creazione del PayID + Questo PayID esiste già. Scegline un altro. + Indirizzo o PayID + Invia + Rete libera + Importo + Commissione + Totale + Importo totale + Indirizzo non valido + Importo non valido + Il totale supera il saldo + La commissione supera il saldo + Insufficiente + Normale + Prioritario + Includi commissione + Sarà inviato %1$s %2$s + ≈ %1$s (inc. commissione: %2$s) + Sarà inviato %1$s %2$s e %1$s %2$s + Saldo: %1$s %2$s + La transazione è stata firmata con successo e inviata al nodo blockchain. Il saldo del portafoglio verrà aggiornato dopo un po\' di tempo + Requisiti + ID scheda + Emittente + Firmato + Hash %s + Valuta dell\'applicazione + Impostazioni + Scheda + Convalidare la scheda + Gestione del portafoglio + Cancella il portafoglio + Questa azione è irreversibile. Se dopo aver eliminato il portafoglio qualcuno invia dei fondi, non potrai ritirarli. + Se dimentichi il codice, perderai la possibilità di utilizzare la scheda. Non è possibile in alcun modo ripristinare o modificare il codice se lo perdi. + Gestione della sicurezza + Mantenimento della scheda + Questo meccanismo protegge dagli avvicinamenti senza contatto sulla scheda. Attiva un ritardo tra la ricezione e l\'esecuzione di un comando. Dopo la prima transazione firmata, questo telefono verrà associato alla scheda e le transazioni verranno firmate immediatamente. + Password + Dovrai inserire una password prima di eseguire qualsiasi comando che modifichi lo stato della scheda. + Codice di accesso + Prima di scansionare la scheda sarà necessario inserire il codice di accesso corretto + Potresti riscontrare problemi con l\'NFC su alcuni iPhone 7/7 + durante la rimozione + Attenzione: questa scheda è già stata ricaricata e ha firmato transazioni in passato. Valuta la possibilità di prelevare immediatamente tutti i fondi se hai ricevuto questa scheda da una fonte inaffidabile. + Questa scheda non è progettata per funzionare con Tangem Tap + La scheda che hai scansionato è una scheda di sviluppo. Non utilizzarla come strumento di pagamento + Le schede emesse prima di settembre 2019 non possono attualmente essere utilizzate con un iPhone. Stiamo lavorando a stretto contatto con Apple per renderle disponibili nelle future versioni di iOS. + Avvicina per firmare + Avvicina la scheda al telefono come mostrato sopra + Avvicina per cancellare il portafoglio + Avvicina per creare il portafoglio + Avvicina per modificare il codice di accesso + Avvicina per modificare la password + PayID non valido + + + + NOTA LEGALE\n +\n +App Tangem Tap (software)\n +\n +1. Il software può essere utilizzato solo con i portafogli hardware Tangem (schede) tramite l\'interfaccia NFC. Il software NON esegue le seguenti operazioni:\n +\n +a) Generazione, archiviazione, trasferimento o accesso a chiavi crittografiche private (segrete) di portafogli blockchain contenenti risorse digitali, inclusa la criptovaluta.\n +\n +b) Generazione, archiviazione, trasferimento o accesso a chiavi segrete, password, passphrase, frasi di ripristino che possono essere utilizzate per recuperare o copiare chiavi private (segrete) su portafogli blockchain contenenti risorse digitali, inclusa la criptovaluta.\n +\n +c) Fornitura di servizi di scambio, negoziazione e investimento per conto di Tandem AG.\n +\n +2. Rischi associati al funzionamento del Software\n +\n +Tandem non sarà ritenuta responsabile per eventuali perdite, danni o reclami derivanti da eventi che rientrano nelle seguenti cinque categorie:\n +\n +a) Errori commessi dall\'utente di qualsiasi software o servizio relativo alla criptovaluta, ad esempio password dimenticate, pagamenti inviati a indirizzi errati e cancellazione accidentale di portafogli blockchain su Schede.\n +\n +b) Problemi con il software e/o qualsiasi software o servizio correlato a blockchain o criptovaluta, come file danneggiati, transazioni generate in modo improprio, librerie crittografiche non sicure, malware.\n +\n +c) Malfunzionamenti tecnici nell\'hardware dell\'utente, incluse le Schede, qualsiasi software o servizio relativo alla criptovaluta, ad esempio, perdita di dati a causa di un dispositivo di archiviazione difettoso o danneggiato.\n +\n +d) Problemi di sicurezza affrontati dall\'utente di qualsiasi software o servizio relativo alla criptovaluta, ad esempio l\'accesso non autorizzato a portafogli e/o account utente.\n +\n +e) Azioni o inattività di terze parti e/o eventi con cui si sono scontrate terze parti, come la bancarotta di fornitori di servizi, attacchi alla sicurezza delle informazioni relative ai fornitori di servizi e frodi perpetrate da terzi.\n +\n +3. Rischi commerciali e di investimento\n +\n +Qualsiasi transazione che coinvolge lo scambio di criptovalute o altre risorse digitali comporta rischi significativi. Qualsiasi transazione che include una valuta comporta dei rischi, inclusa ma non limitata alla possibilità di cambiamenti nelle condizioni economiche che potrebbero influenzare materialmente il valore o la liquidità della valuta. L\'investimento nella speculazione sui cambi di criptovaluta può anche essere soggetto a forti alti e bassi poiché i rispettivi prezzi di mercato fluttuano. È per questo motivo che è consigliabile utilizzare solo capitale di rischio quando si fanno affari in questi mercati.\n +\n +4. Rischi dell\'e-commerce\n +\n +Prima di effettuare transazioni utilizzando un sistema elettronico, è necessario leggere attentamente le norme e i regolamenti delle borse che offrono questo sistema e/o elencano i titoli che si intende negoziare. Il trading online presenta un rischio intrinseco dovuto alla risposta del sistema e ai tempi di accesso, che possono variare a seconda delle condizioni di mercato, delle prestazioni del sistema ed altri fattori. È necessario comprendere questi e altri rischi prima di fare trading.\n +\n +5. Rispetto degli obblighi fiscali\n +\n +Gli utenti del Software sono gli unici responsabili del determinare le eventuali tasse applicate alle loro transazioni in criptovaluta. I proprietari o i contributori del Software NON sono responsabili della determinazione delle tasse che si applicano alle transazioni in criptovaluta.\n +\n +6. Assenza di garanzie\n +\n +Il Software viene fornito "così com\'è" senza garanzia di alcun tipo riguardo al Software e/o a qualsiasi contenuto, dato, materiale e/o servizio fornito con il Software.\n +\n +7. Limitazione di responsabilità\n +\n +Salvo quanto diversamente previsto dalla legge, i proprietari o i contributori del Software non saranno in nessun caso responsabili per eventuali danni di qualsiasi tipo, inclusi, ma non limitati a, perdita di utilizzo, perdita di profitti o perdita di dati derivanti o in qualsiasi modo correlati all\'uso del Software. In nessun modo i proprietari o i contributori del Software sono responsabili delle azioni, decisioni o altri comportamenti presi o non presi da voi in relazione al Software.\n +\n +8. Ultima modifica\n +\n +Questa nota legale è stata modificata l\'ultima volta 01.10.2020. + + + + Per creare un account, invia %1$s %2$s a questo indirizzo + Impossibile ottenere la commissione + Accetta + Amount Exceeds Balance + Terms of service + Nessuna connessione a Internet + + Errore sconosciuto + Verifica del PayID fallita + PayID non supportato dalla blockchain + PayID non registrato + Richiesta PayID fallita + + L\'indirizzo corrisponde all\'indirizzo del tuo portafoglio + Saldo insufficiente + Errore interno della blockchain + Commissione non valida + L\'importo minimo è di %s + L\'importo residuo è molto basso + + L\'indirizzo è stato copiato con successo + + + Inserire prima il PayID desiderato + + Avvicina per scansionare + Avvicina la scheda + + Il tuo saldo su questo portafoglio non è pari a zero o hai transazioni non confermate. Non è possibile eliminare la funzione portafoglio. + E\' l\'opzione attualmente attiva + + Per evitare di pagare una commissione maggiore la prossima volta che ricarichi il tuo portafoglio, riduci l\'importo di %s XTZ + Riduci di %s XTZ + No, invia l\'intero importo + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 2ba6c7aa7f..a14f49d345 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -200,4 +200,11 @@ This is the currently active option + To avoid paying an increased commission the next time you top up your wallet, reduce the amount by %s XTZ + Reduce by %s XTZ + No, send all + + + + \ No newline at end of file From 61b27dcb6bae1ee860ba795fccf53e0221df7324 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 6 Nov 2020 17:02:20 +0300 Subject: [PATCH 09/24] Updated on 2026-08-14 --- app/src/main/res/values-it/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 2be8538f88..5c650f70cc 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -161,7 +161,7 @@ Questa nota legale è stata modificata l\'ultima volta 01.10.2020. Impossibile ottenere la commissione Accetta Amount Exceeds Balance - Terms of service + Termini del servizio Nessuna connessione a Internet Errore sconosciuto From 53bd82df553f0bc67cf5a149d9143517d789a99e Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 6 Nov 2020 18:23:34 +0300 Subject: [PATCH 10/24] Updated on 2026-08-14 --- app/src/main/res/values/strings_untranslated.xml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/src/main/res/values/strings_untranslated.xml b/app/src/main/res/values/strings_untranslated.xml index ee920115aa..f11f7450a8 100644 --- a/app/src/main/res/values/strings_untranslated.xml +++ b/app/src/main/res/values/strings_untranslated.xml @@ -1,7 +1,3 @@ - To avoid paying an increased commission the next time you top up your wallet, reduce the amount by %s XTZ - Reduce by %s XTZ - No, send all - From f6ada0599673c370a36ab4e242919cfb28a13212 Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 9 Nov 2020 10:57:37 +0300 Subject: [PATCH 11/24] Updated on 2026-08-14 --- app/build.gradle | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index c80ef90109..fdce4d1839 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -70,17 +70,9 @@ dependencies { implementation 'com.google.android.material:material:1.2.1' coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.10' - implementation 'com.tangem:blockchain:1.98.0' - implementation('com.tangem:core') { - version { - strictly '1.73.0' - } - } - implementation('com.tangem:sdk:') { - version { - strictly '1.73.0' - } - } + implementation 'com.tangem:blockchain:1.105.0' + implementation 'com.tangem:core:1.79.0' + implementation 'com.tangem:sdk:1.79.0' //lifecycle implementation "androidx.lifecycle:lifecycle-runtime:2.2.0" From 2dc7b666e83358c0f7026e49cdc687599a22e9cc Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 9 Nov 2020 11:36:55 +0300 Subject: [PATCH 12/24] Updated on 2026-08-14 --- app/src/main/res/values-it/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 5c650f70cc..93bac3c897 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -46,7 +46,7 @@ Nome PayID $payid.tangem.com Crea - Ваш PayID – informazioni per te uniche, come il tuo numero di telefono, indirizzo email o ABN. + Il tuo PayID – informazioni per te uniche, come il tuo numero di telefono, indirizzo email o ABN. PayID creato con successo e copiato negli appunti Errore di risposta durante la creazione del PayID Questo PayID esiste già. Scegline un altro. From 9e32251f5db05366bd63bc30cc1325230ceb28e0 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 10 Nov 2020 13:10:59 +0300 Subject: [PATCH 13/24] Updated on 2026-08-14 --- app/build.gradle | 5 +++-- app/src/main/java/com/tangem/tap/TapApplication.kt | 4 ---- .../tap/common/analytics/FirebaseAnalyticsHandler.kt | 10 +++++----- .../java/com/tangem/tap/domain/TapWalletManager.kt | 4 ++-- .../tangem/tap/features/home/redux/HomeMiddleware.kt | 8 ++++++-- .../features/send/redux/middlewares/SendMiddleware.kt | 4 ++-- .../tap/features/wallet/redux/WalletMiddleware.kt | 8 ++++++-- 7 files changed, 24 insertions(+), 19 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index fdce4d1839..1b06c221fa 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -93,8 +93,9 @@ dependencies { implementation 'com.squareup.picasso:picasso:2.71828' // Firebase - implementation 'com.google.firebase:firebase-crashlytics:17.2.2' - implementation 'com.google.firebase:firebase-analytics:17.6.0' + implementation platform('com.google.firebase:firebase-bom:26.0.0') + implementation 'com.google.firebase:firebase-crashlytics' + implementation 'com.google.firebase:firebase-analytics-ktx' testImplementation 'junit:junit:4.13' testImplementation "com.google.truth:truth:1.0.1" diff --git a/app/src/main/java/com/tangem/tap/TapApplication.kt b/app/src/main/java/com/tangem/tap/TapApplication.kt index 9870dd08bf..b19bfc730e 100644 --- a/app/src/main/java/com/tangem/tap/TapApplication.kt +++ b/app/src/main/java/com/tangem/tap/TapApplication.kt @@ -1,8 +1,6 @@ package com.tangem.tap import android.app.Application -import com.tangem.tap.common.analytics.AnalyticsHandler -import com.tangem.tap.common.analytics.FirebaseAnalyticsHandler import com.tangem.tap.common.images.PicassoHelper import com.tangem.tap.common.redux.AppState import com.tangem.tap.common.redux.appReducer @@ -18,7 +16,6 @@ val store = Store( state = AppState() ) lateinit var preferencesStorage: PreferencesStorage -lateinit var analytics: AnalyticsHandler class TapApplication : Application() { override fun onCreate() { @@ -29,6 +26,5 @@ class TapApplication : Application() { NetworkConnectivity.createInstance(store, this) preferencesStorage = PreferencesStorage(this) PicassoHelper.initPicassoWithCaching(this) - analytics = FirebaseAnalyticsHandler(this) } } \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/common/analytics/FirebaseAnalyticsHandler.kt b/app/src/main/java/com/tangem/tap/common/analytics/FirebaseAnalyticsHandler.kt index 6118c73cde..0e092a44bf 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/FirebaseAnalyticsHandler.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/FirebaseAnalyticsHandler.kt @@ -1,14 +1,14 @@ package com.tangem.tap.common.analytics -import android.content.Context import android.os.Bundle import androidx.core.os.bundleOf -import com.google.firebase.analytics.FirebaseAnalytics +import com.google.firebase.analytics.ktx.analytics +import com.google.firebase.ktx.Firebase import com.tangem.commands.Card -class FirebaseAnalyticsHandler(private val context: Context): AnalyticsHandler { +object FirebaseAnalyticsHandler: AnalyticsHandler { override fun triggerEvent(event: AnalyticsEvent, card: Card?) { - FirebaseAnalytics.getInstance(context) + Firebase.analytics .logEvent(AnalyticsEvent.CARD_IS_SCANNED.event, setCardData(card)) } @@ -26,4 +26,4 @@ class FirebaseAnalyticsHandler(private val context: Context): AnalyticsHandler { BATCH_ID("batch_id"), FIRMWARE("firmware"), } -} \ No newline at end of file +} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt b/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt index 76d43787eb..99c1864c96 100644 --- a/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt @@ -6,8 +6,8 @@ import com.tangem.commands.CardStatus import com.tangem.commands.common.network.Result import com.tangem.common.extensions.toHexString import com.tangem.tap.TapConfig -import com.tangem.tap.analytics import com.tangem.tap.common.analytics.AnalyticsEvent +import com.tangem.tap.common.analytics.FirebaseAnalyticsHandler import com.tangem.tap.common.redux.global.CryptoCurrencyName import com.tangem.tap.common.redux.global.FiatCurrencyName import com.tangem.tap.common.redux.global.GlobalAction @@ -81,7 +81,7 @@ class TapWalletManager { suspend fun onCardScanned(data: ScanNoteResponse, addAnalyticsEvent: Boolean = false) { if (addAnalyticsEvent) { - analytics.triggerEvent(AnalyticsEvent.CARD_IS_SCANNED, data.card) + FirebaseAnalyticsHandler.triggerEvent(AnalyticsEvent.CARD_IS_SCANNED, data.card) } tapWorkarounds = TapWorkarounds(data.card) withContext(Dispatchers.Main) { diff --git a/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt b/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt index b35b06f802..987e3c1b3b 100644 --- a/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/home/redux/HomeMiddleware.kt @@ -4,11 +4,15 @@ import android.content.Intent import android.net.Uri import androidx.core.content.ContextCompat.startActivity import com.tangem.common.CompletionResult -import com.tangem.tap.* +import com.tangem.tap.common.analytics.FirebaseAnalyticsHandler import com.tangem.tap.common.redux.AppState import com.tangem.tap.common.redux.global.GlobalAction import com.tangem.tap.common.redux.navigation.AppScreen import com.tangem.tap.common.redux.navigation.NavigationAction +import com.tangem.tap.preferencesStorage +import com.tangem.tap.scope +import com.tangem.tap.store +import com.tangem.tap.tangemSdkManager import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext @@ -26,7 +30,7 @@ class HomeMiddleware { } is HomeAction.ReadCard -> { scope.launch { - val result = tangemSdkManager.scanNote(analytics) + val result = tangemSdkManager.scanNote(FirebaseAnalyticsHandler) withContext(Dispatchers.Main) { when (result) { is CompletionResult.Success -> { diff --git a/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/SendMiddleware.kt b/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/SendMiddleware.kt index f0904be965..34414e9381 100644 --- a/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/SendMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/send/redux/middlewares/SendMiddleware.kt @@ -5,8 +5,8 @@ import com.tangem.blockchain.common.* import com.tangem.blockchain.extensions.Result import com.tangem.blockchain.extensions.Signer import com.tangem.commands.Card -import com.tangem.tap.analytics import com.tangem.tap.common.analytics.AnalyticsEvent +import com.tangem.tap.common.analytics.FirebaseAnalyticsHandler import com.tangem.tap.common.extensions.stripZeroPlainString import com.tangem.tap.common.redux.AppState import com.tangem.tap.common.redux.global.GlobalAction @@ -96,7 +96,7 @@ private fun sendTransaction( withContext(Dispatchers.Main) { when (result) { is Result.Success -> { - analytics.triggerEvent(AnalyticsEvent.TRANSACTION_IS_SENT, card) + FirebaseAnalyticsHandler.triggerEvent(AnalyticsEvent.TRANSACTION_IS_SENT, card) dispatch(SendAction.SendSuccess) dispatch(GlobalAction.UpdateWalletSignedHashes(result.data.walletSignedHashes)) dispatch(WalletAction.UpdateWallet) diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletMiddleware.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletMiddleware.kt index 5b03acb6da..69a69a8509 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletMiddleware.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletMiddleware.kt @@ -11,7 +11,7 @@ import com.tangem.common.CompletionResult import com.tangem.common.extensions.CardType import com.tangem.common.extensions.getType import com.tangem.common.extensions.toHexString -import com.tangem.tap.* +import com.tangem.tap.common.analytics.FirebaseAnalyticsHandler import com.tangem.tap.common.extensions.copyToClipboard import com.tangem.tap.common.redux.AppState import com.tangem.tap.common.redux.navigation.AppScreen @@ -23,6 +23,10 @@ import com.tangem.tap.features.send.redux.PrepareSendScreen import com.tangem.tap.features.wallet.models.toPendingTransactions import com.tangem.tap.network.NetworkConnectivity import com.tangem.tap.network.NetworkStateChanged +import com.tangem.tap.preferencesStorage +import com.tangem.tap.scope +import com.tangem.tap.store +import com.tangem.tap.tangemSdkManager import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.launch @@ -97,7 +101,7 @@ val walletMiddleware: Middleware = { dispatch, state -> } is WalletAction.Scan -> { scope.launch { - val result = tangemSdkManager.scanNote(analytics) + val result = tangemSdkManager.scanNote(FirebaseAnalyticsHandler) when (result) { is CompletionResult.Success -> { store.state.globalState.tapWalletManager From 43fca753b836aa9df6fd5691c23a38f1e2b38cc3 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 10 Nov 2020 15:25:50 +0300 Subject: [PATCH 14/24] Updated on 2026-08-14 --- .../com/tangem/tap/common/analytics/FirebaseAnalyticsHandler.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/tangem/tap/common/analytics/FirebaseAnalyticsHandler.kt b/app/src/main/java/com/tangem/tap/common/analytics/FirebaseAnalyticsHandler.kt index 0e092a44bf..6e7f460773 100644 --- a/app/src/main/java/com/tangem/tap/common/analytics/FirebaseAnalyticsHandler.kt +++ b/app/src/main/java/com/tangem/tap/common/analytics/FirebaseAnalyticsHandler.kt @@ -9,7 +9,7 @@ import com.tangem.commands.Card object FirebaseAnalyticsHandler: AnalyticsHandler { override fun triggerEvent(event: AnalyticsEvent, card: Card?) { Firebase.analytics - .logEvent(AnalyticsEvent.CARD_IS_SCANNED.event, setCardData(card)) + .logEvent(event.event, setCardData(card)) } private fun setCardData(card: Card?): Bundle { From 88b14a06ca7254afcd261360a9aa3852c94356a4 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 11 Nov 2020 10:12:06 +0300 Subject: [PATCH 15/24] Updated on 2026-08-14 --- .../tap/features/wallet/ui/WalletFragment.kt | 37 +++++++++--- .../res/drawable/ic_arrow_up_short_btn.xml | 4 +- app/src/main/res/drawable/ic_group_1243.xml | 15 +++++ .../res/drawable/ic_scan_for_short_btn.xml | 4 ++ app/src/main/res/layout/fragment_wallet.xml | 59 ++++--------------- .../res/layout/layout_wallet_long_buttons.xml | 45 ++++++++++++++ .../layout/layout_wallet_short_buttons.xml | 55 +++++++++++++++++ 7 files changed, 161 insertions(+), 58 deletions(-) create mode 100644 app/src/main/res/drawable/ic_group_1243.xml create mode 100644 app/src/main/res/drawable/ic_scan_for_short_btn.xml create mode 100644 app/src/main/res/layout/layout_wallet_long_buttons.xml create mode 100644 app/src/main/res/layout/layout_wallet_short_buttons.xml diff --git a/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt b/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt index a64b97e5b3..25f00a2e49 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/ui/WalletFragment.kt @@ -29,6 +29,8 @@ import com.tangem.wallet.R import kotlinx.android.synthetic.main.card_balance.* import kotlinx.android.synthetic.main.fragment_wallet.* import kotlinx.android.synthetic.main.layout_address.* +import kotlinx.android.synthetic.main.layout_wallet_long_buttons.* +import kotlinx.android.synthetic.main.layout_wallet_short_buttons.* import org.rekotlin.StoreSubscriber @@ -39,7 +41,6 @@ class WalletFragment : Fragment(R.layout.fragment_wallet), StoreSubscriber R.string.wallet_button_send is WalletMainButton.CreateWalletButton -> R.string.wallet_button_create_wallet } - btn_confirm.text = getString(buttonTitle) - btn_confirm.isEnabled = state.mainButton.enabled - btn_top_up.isEnabled = state.topUpState.allowed + btnConfirm.text = getString(buttonTitle) + btnConfirm.isEnabled = state.mainButton.enabled - btn_confirm.setOnClickListener { + btnConfirm.setOnClickListener { when (state.mainButton) { is WalletMainButton.SendButton -> store.dispatch(WalletAction.Send()) is WalletMainButton.CreateWalletButton -> store.dispatch(WalletAction.CreateWallet) diff --git a/app/src/main/res/drawable/ic_arrow_up_short_btn.xml b/app/src/main/res/drawable/ic_arrow_up_short_btn.xml index 5ac0fb0e46..b739da9ccb 100644 --- a/app/src/main/res/drawable/ic_arrow_up_short_btn.xml +++ b/app/src/main/res/drawable/ic_arrow_up_short_btn.xml @@ -1,8 +1,8 @@ + android:viewportHeight="20"> diff --git a/app/src/main/res/drawable/ic_group_1243.xml b/app/src/main/res/drawable/ic_group_1243.xml new file mode 100644 index 0000000000..c1e2907eb0 --- /dev/null +++ b/app/src/main/res/drawable/ic_group_1243.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_scan_for_short_btn.xml b/app/src/main/res/drawable/ic_scan_for_short_btn.xml new file mode 100644 index 0000000000..1c281ecd9c --- /dev/null +++ b/app/src/main/res/drawable/ic_scan_for_short_btn.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_wallet.xml b/app/src/main/res/layout/fragment_wallet.xml index 660b309ecb..1f139adb02 100644 --- a/app/src/main/res/layout/fragment_wallet.xml +++ b/app/src/main/res/layout/fragment_wallet.xml @@ -85,56 +85,21 @@ android:layout_height="wrap_content" app:layout_constraintTop_toBottomOf="@id/l_card_balance" /> - - + android:visibility="gone"/> - + - diff --git a/app/src/main/res/layout/layout_wallet_long_buttons.xml b/app/src/main/res/layout/layout_wallet_long_buttons.xml new file mode 100644 index 0000000000..3872698afc --- /dev/null +++ b/app/src/main/res/layout/layout_wallet_long_buttons.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/layout_wallet_short_buttons.xml b/app/src/main/res/layout/layout_wallet_short_buttons.xml new file mode 100644 index 0000000000..4971b42309 --- /dev/null +++ b/app/src/main/res/layout/layout_wallet_short_buttons.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + \ No newline at end of file From f3e8ccb3bedbf1068fe492a218a35225d79f8e5a Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 11 Nov 2020 10:13:15 +0300 Subject: [PATCH 16/24] Updated on 2026-08-14 --- app/src/main/java/com/tangem/tap/TapConfig.kt | 1 + .../com/tangem/tap/domain/TapWalletManager.kt | 9 ++++--- .../tap/features/wallet/redux/WalletAction.kt | 8 +++--- .../features/wallet/redux/WalletReducer.kt | 26 +++++++------------ 4 files changed, 20 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/TapConfig.kt b/app/src/main/java/com/tangem/tap/TapConfig.kt index a90d1d36df..9470f2935d 100644 --- a/app/src/main/java/com/tangem/tap/TapConfig.kt +++ b/app/src/main/java/com/tangem/tap/TapConfig.kt @@ -2,6 +2,7 @@ package com.tangem.tap object TapConfig { const val usePayId: Boolean = true + const val useTopUp: Boolean = true const val coinMarketCapKey = "f6622117-c043-47a0-8975-9d673ce484de" const val moonPayApiKey = "pk_test_kc90oYTANy7UQdBavDKGfL4K9l6VEPE" const val moonPayApiSecretKey = "sk_test_V8w4M19LbDjjYOt170s0tGuvXAgyEb1C" diff --git a/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt b/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt index c553e71540..f8550428d9 100644 --- a/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt @@ -57,9 +57,7 @@ class TapWalletManager { withContext(Dispatchers.Main) { when (result) { is Result.Success -> - store.dispatch(WalletAction.UpdateWallet.Success( - result.data, tapWorkarounds?.isStart2Coin != true - )) + store.dispatch(WalletAction.UpdateWallet.Success(result.data)) is Result.Failure -> store.dispatch(WalletAction.UpdateWallet.Failure(result.error?.localizedMessage)) } @@ -103,7 +101,10 @@ class TapWalletManager { store.dispatch(WalletAction.LoadData.Failure(TapError.NoInternetConnection)) return@withContext } - store.dispatch(WalletAction.LoadWallet) + store.dispatch(WalletAction.LoadWallet( + data.walletManager.wallet, data.verifyResponse?.artworkInfo?.id, + tapWorkarounds?.isStart2Coin != true && TapConfig.useTopUp + )) store.dispatch(WalletAction.LoadArtwork(data.card, artworkId)) store.dispatch(WalletAction.LoadFiatRate) store.dispatch(WalletAction.LoadPayId) diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletAction.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletAction.kt index 97e1752ed7..5ac957f1f4 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletAction.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletAction.kt @@ -20,7 +20,9 @@ sealed class WalletAction : Action { data class Failure(val error: TapError) : WalletAction() } - object LoadWallet : WalletAction() { + data class LoadWallet( + val wallet: Wallet, val artworkId: String?, val allowTopUp: Boolean + ) : WalletAction() { data class Success(val wallet: Wallet) : WalletAction() data class NoAccount(val amountToCreateAccount: String) : WalletAction() data class Failure(val errorMessage: String? = null) : WalletAction() @@ -35,7 +37,7 @@ sealed class WalletAction : Action { object UpdateWallet : WalletAction() { object ScheduleUpdatingWallet : WalletAction() - data class Success(val wallet: Wallet, val topUpAllowed: Boolean) : WalletAction() + data class Success(val wallet: Wallet) : WalletAction() data class Failure(val errorMessage: String? = null) : WalletAction() } @@ -50,7 +52,7 @@ sealed class WalletAction : Action { object Failure : WalletAction() } - object DisablePayId: WalletAction() + object DisablePayId : WalletAction() data class LoadArtwork(val card: Card, val artworkId: String?) : WalletAction() { data class Success(val artwork: Artwork) : WalletAction() diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletReducer.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletReducer.kt index 5c495ef9b1..3770fbb499 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletReducer.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletReducer.kt @@ -70,14 +70,8 @@ private fun internalReduce(action: Action, state: AppState): WalletState { } is WalletAction.LoadWallet -> { - val wallet = state.globalState.scanNoteResponse?.walletManager?.wallet - val addressData = if (wallet == null) { - null - } else { - AddressData(wallet.address, wallet.shareUrl, wallet.exploreUrl) - } - val currentArtworkId = state.globalState.scanNoteResponse?.verifyResponse?.artworkInfo?.id - val cardImage = if (newState.cardImage?.artworkId == currentArtworkId) { + val wallet = action.wallet + val cardImage = if (newState.cardImage?.artworkId == action.artworkId) { newState.cardImage } else { null @@ -87,15 +81,15 @@ private fun internalReduce(action: Action, state: AppState): WalletState { cardImage = cardImage, currencyData = BalanceWidgetData( BalanceStatus.Loading, - wallet?.blockchain?.fullName, - currencySymbol = wallet?.blockchain?.currency, - token = wallet?.token?.symbol?.let { + wallet.blockchain.fullName, + currencySymbol = wallet.blockchain.currency, + token = wallet.token?.symbol?.let { TokenData("", tokenSymbol = it) } ), - addressData = addressData, - mainButton = WalletMainButton.SendButton(false) - + addressData = AddressData(wallet.address, wallet.shareUrl, wallet.exploreUrl), + mainButton = WalletMainButton.SendButton(false), + topUpState = TopUpState(allowed = action.allowTopUp) ) } is WalletAction.LoadWallet.Success -> newState = onWalletLoaded(action.wallet, newState) @@ -257,7 +251,6 @@ private fun onWalletLoaded( } else { BalanceStatus.VerifiedOnline } - val topUpState = topUpAllowed?.let { TopUpState(topUpAllowed) } ?: walletState.topUpState return walletState.copy( state = ProgressState.Done, wallet = wallet, currencyData = BalanceWidgetData( @@ -268,7 +261,6 @@ private fun onWalletLoaded( fiatAmount = fiatAmount ), pendingTransactions = pendingTransactions.removeUnknownTransactions(), - mainButton = WalletMainButton.SendButton(sendButtonEnabled), - topUpState = topUpState + mainButton = WalletMainButton.SendButton(sendButtonEnabled) ) } \ No newline at end of file From c9db18c98aa3b2ad88a852c9e393f7933a78b607 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 11 Nov 2020 11:42:23 +0300 Subject: [PATCH 17/24] Updated on 2026-08-14 --- .../tap/features/wallet/redux/WalletReducer.kt | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletReducer.kt b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletReducer.kt index 3770fbb499..358fe8cffc 100644 --- a/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletReducer.kt +++ b/app/src/main/java/com/tangem/tap/features/wallet/redux/WalletReducer.kt @@ -36,7 +36,8 @@ private fun internalReduce(action: Action, state: AppState): WalletState { is WalletAction.EmptyWallet -> newState = newState.copy( state = ProgressState.Done, currencyData = BalanceWidgetData(BalanceStatus.EmptyCard), - mainButton = WalletMainButton.CreateWalletButton(true) + mainButton = WalletMainButton.CreateWalletButton(true), + topUpState = TopUpState(false) ) is WalletAction.LoadData.Failure -> { when (action.error) { @@ -57,13 +58,15 @@ private fun internalReduce(action: Action, state: AppState): WalletState { token = wallet?.token?.symbol?.let { TokenData("", tokenSymbol = it) }), - mainButton = WalletMainButton.SendButton(false) + mainButton = WalletMainButton.SendButton(false), + topUpState = TopUpState(false) ) } is TapError.UnknownBlockchain -> { newState = newState.copy( state = ProgressState.Done, - currencyData = BalanceWidgetData(BalanceStatus.UnknownBlockchain) + currencyData = BalanceWidgetData(BalanceStatus.UnknownBlockchain), + topUpState = TopUpState(false) ) } } @@ -110,7 +113,8 @@ private fun internalReduce(action: Action, state: AppState): WalletState { currencyData = newState.currencyData.copy( status = BalanceStatus.Unreachable, errorMessage = action.errorMessage - ) + ), + topUpState = TopUpState(false) ) is WalletAction.UpdateWallet -> newState = newState.copy(updatingWallet = true) is WalletAction.UpdateWallet.ScheduleUpdatingWallet -> From 5e895538660ccdf0eee2883c68b34156baea1329 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 11 Nov 2020 16:09:54 +0300 Subject: [PATCH 18/24] Updated on 2026-08-14 --- app/src/main/res/values/strings_untranslated.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values/strings_untranslated.xml b/app/src/main/res/values/strings_untranslated.xml index f11f7450a8..834037ecad 100644 --- a/app/src/main/res/values/strings_untranslated.xml +++ b/app/src/main/res/values/strings_untranslated.xml @@ -1,3 +1,3 @@ - + Top Up From b2f7b4ddc207b254553318e3f62ee090c5f6f7f1 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 12 Nov 2020 12:06:47 +0300 Subject: [PATCH 19/24] Updated on 2026-08-14 --- app/build.gradle | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 5d7b82f929..ae51a02977 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -70,9 +70,9 @@ dependencies { implementation 'com.google.android.material:material:1.2.1' coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.10' - implementation 'com.tangem:blockchain:1.105.0' - implementation 'com.tangem:core:1.79.0' - implementation 'com.tangem:sdk:1.79.0' + implementation 'com.tangem:blockchain:1.106.0' + implementation 'com.tangem:core:1.80.0' + implementation 'com.tangem:sdk:1.80.0' // WebView implementation "androidx.browser:browser:1.2.0" From 7282a83c7268a8348872f6cc959ef7181a6fddc8 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 13 Nov 2020 17:24:50 +0300 Subject: [PATCH 20/24] Updated on 2026-08-14 --- app/src/main/java/com/tangem/tap/domain/TapWorkarounds.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/tangem/tap/domain/TapWorkarounds.kt b/app/src/main/java/com/tangem/tap/domain/TapWorkarounds.kt index 9dc11ee062..1ed82ff653 100644 --- a/app/src/main/java/com/tangem/tap/domain/TapWorkarounds.kt +++ b/app/src/main/java/com/tangem/tap/domain/TapWorkarounds.kt @@ -1,10 +1,12 @@ package com.tangem.tap.domain import com.tangem.commands.Card +import java.util.* class TapWorkarounds(val card: Card) { - val isStart2Coin: Boolean = card.cardData?.issuerName == START_2_COIN_ISSUER + val isStart2Coin: Boolean = + card.cardData?.issuerName?.toLowerCase(Locale.US) == START_2_COIN_ISSUER fun isPayIdCreationEnabled(): Boolean { if (isStart2Coin) return false From e7a67488b1f67799b5f41c054b29a134dd769b41 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 13 Nov 2020 17:35:56 +0300 Subject: [PATCH 21/24] Updated on 2026-08-14 --- .../java/com/tangem/tap/domain/TapWalletManager.kt | 10 +++++----- .../main/java/com/tangem/tap/domain/TapWorkarounds.kt | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt b/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt index 47ea2833f3..7334aecc0d 100644 --- a/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt +++ b/app/src/main/java/com/tangem/tap/domain/TapWalletManager.kt @@ -168,12 +168,12 @@ class TapWalletManager { when (result) { is Result.Success -> { val payId = result.data + if (tapWorkarounds?.isPayIdEnabled() == false) { + store.dispatch(WalletAction.DisablePayId) + return@withContext + } if (payId == null) { - if (tapWorkarounds?.isPayIdCreationEnabled() == false) { - store.dispatch(WalletAction.DisablePayId) - } else { - store.dispatch(WalletAction.LoadPayId.NotCreated) - } + store.dispatch(WalletAction.LoadPayId.NotCreated) } else { store.dispatch(WalletAction.LoadPayId.Success(payId)) } diff --git a/app/src/main/java/com/tangem/tap/domain/TapWorkarounds.kt b/app/src/main/java/com/tangem/tap/domain/TapWorkarounds.kt index 1ed82ff653..b0bedc66be 100644 --- a/app/src/main/java/com/tangem/tap/domain/TapWorkarounds.kt +++ b/app/src/main/java/com/tangem/tap/domain/TapWorkarounds.kt @@ -8,7 +8,7 @@ class TapWorkarounds(val card: Card) { val isStart2Coin: Boolean = card.cardData?.issuerName?.toLowerCase(Locale.US) == START_2_COIN_ISSUER - fun isPayIdCreationEnabled(): Boolean { + fun isPayIdEnabled(): Boolean { if (isStart2Coin) return false return true } From 9acada0236df24e57338d3c467f4879e0ab1da2d Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 13 Nov 2020 17:51:22 +0300 Subject: [PATCH 22/24] Updated on 2026-08-14 --- app/src/main/java/com/tangem/tap/TapConfig.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/tangem/tap/TapConfig.kt b/app/src/main/java/com/tangem/tap/TapConfig.kt index 9470f2935d..db4767cd0e 100644 --- a/app/src/main/java/com/tangem/tap/TapConfig.kt +++ b/app/src/main/java/com/tangem/tap/TapConfig.kt @@ -2,7 +2,7 @@ package com.tangem.tap object TapConfig { const val usePayId: Boolean = true - const val useTopUp: Boolean = true + const val useTopUp: Boolean = false const val coinMarketCapKey = "f6622117-c043-47a0-8975-9d673ce484de" const val moonPayApiKey = "pk_test_kc90oYTANy7UQdBavDKGfL4K9l6VEPE" const val moonPayApiSecretKey = "sk_test_V8w4M19LbDjjYOt170s0tGuvXAgyEb1C" From 7cbafee4e526872fd2773eeeb706b42d4468fe06 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 13 Nov 2020 15:27:19 +0000 Subject: [PATCH 23/24] Updated on 2026-08-14 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index ae51a02977..5a53567667 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -70,7 +70,7 @@ dependencies { implementation 'com.google.android.material:material:1.2.1' coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.10' - implementation 'com.tangem:blockchain:1.106.0' + implementation 'com.tangem:blockchain:1.107.0' implementation 'com.tangem:core:1.80.0' implementation 'com.tangem:sdk:1.80.0' From 32f7881d8d915913b6189bad7958637a5b25065c Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 13 Nov 2020 15:37:58 +0000 Subject: [PATCH 24/24] Updated on 2026-08-14 --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 5a53567667..de5564ec62 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -70,7 +70,7 @@ dependencies { implementation 'com.google.android.material:material:1.2.1' coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.10' - implementation 'com.tangem:blockchain:1.107.0' + implementation 'com.tangem:blockchain:1.108.0' implementation 'com.tangem:core:1.80.0' implementation 'com.tangem:sdk:1.80.0'