From 9daf982e41ef787cefa7de0cc177ff950d2d5c31 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 21 Apr 2020 08:36:10 +0300 Subject: [PATCH 1/8] Updated on 2026-08-14 --- .../src/main/java/com/tangem/CardSession.kt | 2 +- .../src/main/java/com/tangem/TangemSdk.kt | 29 +- .../.circleci/config.yml | 23 + tangem-sdk-android-config/README.md | 426 +++++++++++++----- .../tangem_sdk_new/extensions/TangemSdk.kt | 49 +- 5 files changed, 392 insertions(+), 137 deletions(-) create mode 100755 tangem-sdk-android-config/.circleci/config.yml diff --git a/tangem-core/src/main/java/com/tangem/CardSession.kt b/tangem-core/src/main/java/com/tangem/CardSession.kt index 450c056997..c82023bcfa 100644 --- a/tangem-core/src/main/java/com/tangem/CardSession.kt +++ b/tangem-core/src/main/java/com/tangem/CardSession.kt @@ -20,7 +20,7 @@ interface CardSessionRunnable { /** * The starting point for custom business logic. - * Implement this interface and use [TangemSdk.startSession] to run. + * Implement this interface and use [TangemSdk.startSessionWithRunnable] to run. * @param session run commands in this [CardSession]. * @param callback trigger the callback to complete the task. */ diff --git a/tangem-core/src/main/java/com/tangem/TangemSdk.kt b/tangem-core/src/main/java/com/tangem/TangemSdk.kt index 145efc088e..ef29487aae 100644 --- a/tangem-core/src/main/java/com/tangem/TangemSdk.kt +++ b/tangem-core/src/main/java/com/tangem/TangemSdk.kt @@ -49,7 +49,7 @@ class TangemSdk( * in the form of [Card] if the task was performed successfully or [SessionError] in case of an error. */ fun scanCard(initialMessage: Message? = null, callback: (result: CompletionResult) -> Unit) { - startSession(ScanTask(), null, initialMessage, callback) + startSessionWithRunnable(ScanTask(), null, initialMessage, callback) } /** @@ -72,7 +72,7 @@ class TangemSdk( */ fun sign(hashes: Array, cardId: String, initialMessage: Message? = null, callback: (result: CompletionResult) -> Unit) { - startSession(SignCommand(hashes), cardId, initialMessage, callback) + startSessionWithRunnable(SignCommand(hashes), cardId, initialMessage, callback) } /** @@ -90,7 +90,7 @@ class TangemSdk( */ fun readIssuerData(cardId: String, initialMessage: Message? = null, callback: (result: CompletionResult) -> Unit) { - startSession(ReadIssuerDataCommand(config.issuerPublicKey), cardId, initialMessage, callback) + startSessionWithRunnable(ReadIssuerDataCommand(config.issuerPublicKey), cardId, initialMessage, callback) } /** @@ -109,7 +109,7 @@ class TangemSdk( */ fun readIssuerExtraData(cardId: String, callback: (result: CompletionResult) -> Unit) { - startSession(ReadIssuerExtraDataCommand(config.issuerPublicKey), cardId, null, callback) + startSessionWithRunnable(ReadIssuerExtraDataCommand(config.issuerPublicKey), cardId, null, callback) } /** @@ -140,7 +140,7 @@ class TangemSdk( issuerDataCounter, config.issuerPublicKey ) - startSession(command, cardId, initialMessage, callback) + startSessionWithRunnable(command, cardId, initialMessage, callback) } /** @@ -179,7 +179,7 @@ class TangemSdk( issuerDataCounter, config.issuerPublicKey ) - startSession(command, cardId, initialMessage, callback) + startSessionWithRunnable(command, cardId, initialMessage, callback) } /** @@ -206,7 +206,7 @@ class TangemSdk( callback: (result: CompletionResult) -> Unit ) { val command = WriteUserDataCommand(userData, userProtectedData, userCounter, userProtectedCounter) - startSession(command, cardId, initialMessage, callback) + startSessionWithRunnable(command, cardId, initialMessage, callback) } /** @@ -228,7 +228,7 @@ class TangemSdk( */ fun readUserData(cardId: String, initialMessage: Message? = null, callback: (result: CompletionResult) -> Unit) { - startSession(ReadUserDataCommand(), cardId, initialMessage, callback) + startSessionWithRunnable(ReadUserDataCommand(), cardId, initialMessage, callback) } /** @@ -250,7 +250,7 @@ class TangemSdk( */ fun createWallet(cardId: String, initialMessage: Message? = null, callback: (result: CompletionResult) -> Unit) { - startSession(CreateWalletTask(), cardId, initialMessage, callback) + startSessionWithRunnable(CreateWalletTask(), cardId, initialMessage, callback) } /** @@ -269,7 +269,7 @@ class TangemSdk( */ fun purgeWallet(cardId: String, initialMessage: Message? = null, callback: (result: CompletionResult) -> Unit) { - startSession(PurgeWalletCommand(), cardId, initialMessage, callback) + startSessionWithRunnable(PurgeWalletCommand(), cardId, initialMessage, callback) } /** @@ -287,7 +287,7 @@ class TangemSdk( * */ fun depersonalize(cardId: String, initialMessage: Message? = null, callback: (result: CompletionResult) -> Unit) { - startSession(DepersonalizeCommand(), cardId, initialMessage, callback) + startSessionWithRunnable(DepersonalizeCommand(), cardId, initialMessage, callback) } /** @@ -313,7 +313,7 @@ class TangemSdk( initialMessage: Message? = null, callback: (result: CompletionResult) -> Unit) { val command = PersonalizeCommand(config, issuer, manufacturer, acquirer) - startSession(command, null, initialMessage, callback) + startSessionWithRunnable(command, null, initialMessage, callback) } /** @@ -330,7 +330,7 @@ class TangemSdk( * If null, default message will be used. * @callback: Standard [TangemSdk] callback. */ - fun startSession( + fun startSessionWithRunnable( runnable: CardSessionRunnable, cardId: String? = null, initialMessage: Message? = null, callback: (result: CompletionResult) -> Unit) { val cardSession = CardSession(buildEnvironment(), reader, viewDelegate, cardId, initialMessage) @@ -349,8 +349,7 @@ class TangemSdk( * @callback: At first, you should check that the [SessionError] is not null, * then you can use the [CardSession] to interact with a card. */ - fun startSession( - cardId: String? = null, initialMessage: Message? = null, + fun startSession(cardId: String? = null, initialMessage: Message? = null, callback: (session: CardSession, error: SessionError?) -> Unit) { val cardSession = CardSession(buildEnvironment(), reader, viewDelegate, cardId, initialMessage) Thread().run { cardSession.start(callback) } diff --git a/tangem-sdk-android-config/.circleci/config.yml b/tangem-sdk-android-config/.circleci/config.yml new file mode 100755 index 0000000000..a4cf65b34c --- /dev/null +++ b/tangem-sdk-android-config/.circleci/config.yml @@ -0,0 +1,23 @@ +version: 2.1 + +orbs: + android: circleci/android@0.2.0 + +jobs: + build: + executor: android/android + environment: + JVM_OPTS: -Xmx2048m + GRADLE_OPTS: -Xmx1536m -XX:+HeapDumpOnOutOfMemoryError -Dorg.gradle.caching=true -Dorg.gradle.configureondemand=true -Dkotlin.compiler.execution.strategy=in-process -Dkotlin.incremental=false + steps: + - checkout + - run: + name: Build + command: ./gradlew build + - run: + name: Run Tests + command: ./gradlew test + - store_test_results: # for display in Test Summary: https://circleci.com/docs/2.0/collect-test-data/ + path: tangem-core/build/test-results/ + + diff --git a/tangem-sdk-android-config/README.md b/tangem-sdk-android-config/README.md index 5447c511bb..62a3856024 100644 --- a/tangem-sdk-android-config/README.md +++ b/tangem-sdk-android-config/README.md @@ -1,5 +1,6 @@ -![Release](https://jitpack.io/v/Tangem/tangem-sdk-android.svg) +[![Release](https://jitpack.io/v/Tangem/tangem-sdk-android.svg)](https://jitpack.io/#tangem/tangem-sdk-android) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) +[![CircleCI](https://circleci.com/gh/Tangem/tangem-sdk-android.svg?style=shield)](https://circleci.com/gh/Tangem/tangem-sdk-android) # Welcome to Tangem The Tangem card is a self-custodial hardware wallet for blockchain assets. The main functions of Tangem cards are to securely create and store a private key from a blockchain wallet and sign blockchain transactions. The Tangem card does not allow users to import/export, backup/restore private keys, thereby guaranteeing that the wallet is unique and unclonable. @@ -12,10 +13,19 @@ The Tangem card is a self-custodial hardware wallet for blockchain assets. The m - [Card interaction](#card-interaction) - [Scan card](#scan-card) - [Sign](#sign) + - [Read Issuer Data](#read-issuer-data) + - [Read Issuer Extra Data](#read-issuer-extra-data) + - [Write Issuer Data](#write-issuer-data) + - [Write Issuer Extra Data](#write-issuer-extra-data) + - [Write User Data](#write-user-data) + - [Read User Data](#read-user-data) + - [Create Wallet](#create-wallet) + - [Purge Wallet](#purge-wallet) + - [Depersonalize](#depersonalize) + - [Personalize](#personalize) - [Customization](#customization) - [UI](#ui) - - [Tasks](#tasks) - - [Localization](#localization) + - [Custom Tasks](#custom-tasks) ## Getting Started @@ -41,8 +51,8 @@ And add Tangem library to the dependencies (in an app or module build.gradle fil ```gradle dependencies { - implementation "com.github.tangem.tangem-sdk-android:tangem-core:$latestVersionOfCore" - implementation "com.github.tangem.tangem-sdk-android:tangem-sdk:$latestVersionOfSdk" + implementation "com.github.tangem.tangem-sdk-android:tangem-core:$latestVersion" + implementation "com.github.tangem.tangem-sdk-android:tangem-sdk:$latestVersion" } ``` Tangem Core is a JVM library (without Android dependencies) that provides core functionality of interacting with Tangem cards. @@ -75,155 +85,351 @@ Tangem Sdk is an Android library that implements NFC interaction between Android Tangem SDK is a self-sufficient solution that implements a card abstraction model, methods of interaction with the card and interactions with the user via UI. ### Initialization -To get started, you need to create an instance of the `CardManager` class. It provides the simple way of interacting with the card. -Our default implementation of `CardManager` requires `NfcReader` and `DefaultCardManagerDelegate`. +To get started, you need to create an instance of the `TangemSdk` class. It provides the simple way of interacting with the card. +Our default implementation of `TangemSdk` comes with `NfcReader` and `DefaultSessionViewDelegate` and can be initialized with a static method +TangemSdk.init(activity: Activity). ```kotlin -private val nfcManager = NfcManager() -private val cardManagerDelegate: DefaultCardManagerDelegate = DefaultCardManagerDelegate(nfcManager.reader) -private val cardManager = CardManager(nfcManager.reader, cardManagerDelegate) +val tangemSdk: TangemSdk = TangemSdk.init(activity) ``` -NfcManager requires a reference to activity in order to use Android API for interacting with NFC. DefaultCardManagerDelegate requires a reference to activity in order to render views. +TangemSdk requires a reference to activity in order to use Android API for interacting with NFC. DefaultSessionViewDelegate requires a reference to activity in order to render views. -```kotlin -nfcManager.setCurrentActivity(this) -cardManagerDelegate.activity = this -``` +Default implementation of `TangemSdk` allows you to start using SDK in your application without any additional setup. -```kotlin -lifecycle.addObserver(NfcLifecycleObserver(nfcManager)) -``` +You can also provide your implementations of `CardReader` and `SessionViewDelegate`. +You can read more about this in [Customization](#customization). -Default implementation of `NfcManager`, `CardReader` and `CardManagerDelegate` allows you to start using CardManager in your application without any additional setup. +### Card interaction -You can also provide your implementations of `CardReader` and `CardManagerDelegate`. -You can read more about this in [Customization](#сustomization). - -### Tasks +Tangem SDK provides a number of commands and tasks that can be run from a `TangemSdk` class. #### Scan card -To start using any card, you first need to read it using the `scanCard()` method. This method launches an NFC session, and once it’s connected with the card, it obtains the card data. Optionally, if the card contains a wallet (private and public key pair), it proves that the wallet owns a private key that corresponds to a public one. +To start using any card, you first need to read it using the `scanCard()` method. This method launches an NFC session, and once it’s connected with the card, it obtains the card data. If the card contains a wallet (private and public key pair), it proves that the wallet owns a private key that corresponds to a public one. Example: ```kotlin -cardManager.scanCard { taskEvent -> - when (taskEvent) { - is TaskEvent.Event -> { - when (taskEvent.data) { - is ScanEvent.OnReadEvent -> { - // Handle returned card data - cardId = (taskEvent.data as ScanEvent.OnReadEvent).card.cardId - // Switch to UI thread to show results in UI - runOnUiThread {} - } - is ScanEvent.OnVerifyEvent -> { - //Handle card verification - val isGenuine = (taskEvent.data as ScanEvent.OnVerifyEvent).isGenuine + tangemSdk.scanCard { result -> + when (result) { + is CompletionResult.Success -> { + // Handle returned card data + val card = result.data + cardId = card.cardId + // Switch to UI thread to show results in UI + runOnUiThread { + tv_card_cid?.text = cardId + } + } + is CompletionResult.Failure -> { + if (result.error is SessionError.UserCancelledError) { + // Handle case when user cancelled manually + } + // Handle other errors + } } } - } - is TaskEvent.Completion -> { - if (taskEvent.error != null) { - if (taskEvent.error is TaskError.UserCancelledError) { - // Handle case when user cancelled manually - } - // Handle other errors - } - // Handle completion - } - } -} - ``` Communication with the card is an asynchronous operation. In order to get a result for the method, you need to subscribe to the task callback. In order to render the callback results on UI, you need to switch to the main thread. -Every task can invoke callback several times with different events: +Every `CardSessionRunnable` (`Command` or custom tasks) can invoke callback once with either success or error: -`Completion(val error: TaskError? = null)` – this event is triggered only once when task is completely finished. It means that it's the final callback. If error is not nil, then something went wrong during the operation. +`CompletionResult` – this is the sealed class for the results of `CardSessionRunnable`. -`Event(val data: T)` – this event is triggered when one of operations inside the task is completed. - -**Possible events of the Scan card task:** - -`OnReadEvent(val result: Card)` – this event is triggered after the card has been successfully read. In addition, the obtained card object is contained inside the enum. At this stage, the authenticity of the card is ***NOT*** verified. - -`OnVerifyEvent(val isGenuine: Boolean)` – this event is triggered when the card’s authenticity has been verified. If the card is authentic, isGenuine will be set to true, otherwise, it will be set to false. +`Success(val data: T)` is triggered after successful operation and contains a `CommandResponse`. +`Failure(val error: SessionError)` is triggered on error. #### Sign This method allows you to sign one or multiple hashes. Simultaneous signing of array of hashes in a single SIGN command is required to support Bitcoin-type multi-input blockchains (UTXO). The SIGN command will return a corresponding array of signatures. ```kotlin -cardManager.sign( - hashes = arrayOf(hash1, hash2), - cardId = card.cardId) { taskEvent -> - when (taskEvent) { - is TaskEvent.Event -> { - // Handle sign response data - val signResponse = taskEvent.data - } - is TaskEvent.Completion -> { - if (taskEvent.error != null) { - if (taskEvent.error is TaskError.UserCancelledError) { - // Handle case when user cancelled manually + tangemSdk.sign( + hashes = arrayOf(hash1, hash2), + cardId) { result -> + when (result) { + is CompletionResult.Failure -> { + if (result.error is SessionError.UserCancelledError) { + // Handle case when user cancelled manually + } + // Handle other errors + } + is CompletionResult.Success -> { + val signResponse = result.data } - // Handle other errors } - // Handle completion } - } -} ``` +#### Read Issuer Data +An example of usage (description is available at documentation for `TangemSdk.readIssuerData` method and corresponding command class): + +```kotlin + tangemSdk.readIssuerData(cardId) { result -> + when (result) { + is CompletionResult.Failure -> { + if (result.error is SessionError.UserCancelledError) { + // Handle case when user cancelled manually + } + // Handle other errors + } + is CompletionResult.Success -> { + val issuerData = result.data.issuerData + val issuerDataSignature = result.data.issuerDataSignature + } + } + } +``` + +#### Read Issuer Extra Data +An example of usage (description is available at documentation for `TangemSdk.readIssuerExtraData` method and corresponding command class): + +```kotlin + tangemSdk.readIssuerExtraData(cardId) { result -> + when (result) { + is CompletionResult.Failure -> { + if (result.error is SessionError.UserCancelledError) { + // Handle case when user cancelled manually + } + // Handle other errors + } + is CompletionResult.Success -> { + val issuerData = result.data.issuerData + val issuerDataSignature = result.data.issuerDataSignature + } + } + } +``` + +#### Write Issuer Data +An example of usage (description is available at documentation for `TangemSdk.writeIssuerData` method and corresponding command class): + +```kotlin + tangemSdk.writeIssuerData(cardId, issuerData, issuerDataSignature, issuerDataCounter) { result -> + when (result) { + is CompletionResult.Failure -> { + if (result.error is SessionError.UserCancelledError) { + // Handle case when user cancelled manually + } + // Handle other errors + } + is CompletionResult.Success -> { + val writeIssuerDataResult = result.data + } + } + } +``` + +#### Write Issuer Extra Data +An example of usage (description is available at documentation for `TangemSdk.writeIssuerExtraData` method and corresponding command class): + +```kotlin + tangemSdk.writeIssuerExtraData(cardId, + issuerData, startingSignature, finalizingSignature, issuerDataCounter + ) { result -> + when (result) { + is CompletionResult.Failure -> { + if (result.error is SessionError.UserCancelledError) { + // Handle case when user cancelled manually + } + // Handle other errors + } + is CompletionResult.Success -> runOnUiThread { + val writeIssuerDataResult = result.data + } + } + } +``` + +#### Write User Data +An example of usage (description is available at documentation for `TangemSdk.writeUserData` method and corresponding command class): + +```kotlin + tangemSdk.writeUserData( + cardId, userData, userProtectedData, userCounter, userProtectedCounter + ) { result -> + when (result) { + is CompletionResult.Failure -> { + if (result.error is SessionError.UserCancelledError) { + // Handle case when user cancelled manually + } + // Handle other errors + } + is CompletionResult.Success -> runOnUiThread { + val writeUserDataResult = result.data + } + } + } +``` + +#### Read User Data +An example of usage (description is available at documentation for `TangemSdk.readUserData` method and corresponding command class): + +```kotlin + tangemSdk.readUserData(cardId) { result -> + when (result) { + is CompletionResult.Failure -> { + if (result.error is SessionError.UserCancelledError) { + // Handle case when user cancelled manually + } + // Handle other errors + } + is CompletionResult.Success -> runOnUiThread { + val readUserDataResult = result.data + } + } + } +``` + +#### Create Wallet +An example of usage (description is available at documentation for `TangemSdk.createWallet` method and corresponding command class): + +```kotlin + tangemSdk.createWallet(cardId) { result -> + when (result) { + is CompletionResult.Failure -> { + if (result.error is SessionError.UserCancelledError) { + // Handle case when user cancelled manually + } + // Handle other errors + } + is CompletionResult.Success -> runOnUiThread { + val createWalletResult = result.data + } + } + } +``` + +#### Purge Wallet +An example of usage (description is available at documentation for `TangemSdk.purgeWallet` method and corresponding command class): + +```kotlin + tangemSdk.purgeWallet(cardId) { result -> + when (result) { + is CompletionResult.Failure -> { + if (result.error is SessionError.UserCancelledError) { + // Handle case when user cancelled manually + } + // Handle other errors + } + is CompletionResult.Success -> runOnUiThread { + val purgeWalletResult = result.data + } + } + } +``` + +#### Depersonalize +An example of usage (description is available at documentation for `TangemSdk.depersonalize` method and corresponding command class): + +```kotlin + tangemSdk.depersonalize(cardId) { result -> + when (result) { + is CompletionResult.Failure -> { + if (result.error is SessionError.UserCancelledError) { + // Handle case when user cancelled manually + } + // Handle other errors + } + is CompletionResult.Success -> runOnUiThread { + val depersonalizeResult = result.data + } + } + } +``` + +#### Personalize +An example of usage (description is available at documentation for `TangemSdk.personalize` method and corresponding command class): + +```kotlin + tangemSdk.personalize(config, issuer, manufacturer, acquirer) { result -> + when (result) { + is CompletionResult.Failure -> { + if (result.error is SessionError.UserCancelledError) { + // Handle case when user cancelled manually + } + // Handle other errors + } + is CompletionResult.Success -> runOnUiThread { + val card = result.data + } + } + } +``` + + ## Customization ### UI -If the interaction with user is required, the SDK performs the entire cycle of this interaction. In order to change the appearance or behavior of the user UI, you can provide you own implementation of the `CardManagerDelegate` inteface. After this, initialize the `CardManager` class with your delegate class. +If the interaction with user is required, the SDK performs the entire cycle of this interaction. In order to change the appearance or behavior of the user UI, you can provide you own implementation of the `SessionViewDelegate` inteface. After this, initialize the `TangemSdk` class with your delegate class. ```kolin -val myCardManagerDelegate = MyCardManagerDelegate() -val cardManager = CardManager(cardManagerDelegate = myCardManagerDelegate) +val tangemSdk = TangemSdk.customInit(this, viewDelegate = MySessionViewDelegate()) ``` -> If you pass null instead of `cardManagerDelegate`, the SDK won’t be able to process errors that require user intervention and return them to `.failure(let error)`. +### Custom Tasks +`TangemSdk` specific methods run particular commands and tasks. If you want to trigger card commands in a different order, or implement additional + business logic, you have several options. + +One option is to start a session, get an instance of `CardSession`, and use it to perform commands. +To do this, you need to call `tangemSdk.startSession()` method and get a `CardSession` instance in a callback. -### Tasks -`CardManager` only covers general tasks. If you want to trigger card commands in a certain order, you need to create your own task. - -To do this, you need to create a subclass of the `Task` class, and override the `onRun(..)` method. - -Then call the `runTask(..)` method of the `CardManager` class with you task. +> For example, if you want to read the card and immediately sign a transaction with it, you can achieve it this way. ```kotlin -val task = YourTask() -cardManager.runTask(task) { taskEvent -> - // Handle your events -} -``` -> For example, you want to read the card and immediately sign a transaction on it. In such a case, you need to inherit from the `Task` class and override the `onRun(..)` method, in which you implement the required behavior. - -It’s possible to run just one command without the need to create a separate task by using the `runCommand(..)` method. -> For example, if you need to read the card details, but don’t need to check the authenticity. -```kotlin -// Create command -val readCommand = ReadCardCommand() -// Run command with the callback -cardManager.runCommand(readCommand) { taskEvent -> - when (taskEvent) { - is TaskEvent.Event -> { - // Handle returned card data - val card: Card = taskEvent.data - } - is TaskEvent.Completion -> { - if (taskEvent.error != null) { - if (taskEvent.error is TaskError.UserCancelledError) { - // Handle case when user cancelled manually + tangemSdk.startSession { session, error -> + if (error == null) { + session.startWithRunnable( + SignCommand(createSampleHashes())) {result -> + when (result) { + is CompletionResult.Failure -> { + if (result.error is SessionError.UserCancelledError) { + // Handle case when user cancelled manually + } + // Handle other errors + } + is CompletionResult.Success -> { + val signResponse = result.data + } + } + } + } + } +``` + +Another option is to put all logic in a in `CardSessionRunnable` class and launch it using `tangemSdk.startSessionWithRunnable()` method. +In Tangem SDK we use this approach for our `ScanTask`. + +> For example, you want to read the card and immediately sign a transaction with it. With subclassing `CardSessionRunnable` you can achieve it this way. + +```kotlin +class OneTapSignTask(private val hashesToSign: Array) : CardSessionRunnable { + + override fun run(session: CardSession, callback: (result: CompletionResult) -> Unit) { + + val card = session.environment.card + + if (card == null) { + callback(CompletionResult.Failure(SessionError.MissingPreflightRead())) + + } else if (card.cardData?.productMask?.contains(Product.Tag) != false) { + callback(CompletionResult.Success(card)) + + } else if (card.status != CardStatus.Loaded) { + callback(CompletionResult.Success(card)) + + } else if (card.curve == null || card.walletPublicKey == null) { + callback(CompletionResult.Failure(SessionError.CardError())) + + } else { + val signCommand = SignCommand(hashesToSign) + + signCommand.run(session) { result -> + when (result) { + is CompletionResult.Success -> callback(CompletionResult.Success(result.data)) + is CompletionResult.Failure -> callback(CompletionResult.Failure(result.error)) } - // Handle other errors } - // Handle completion } } } diff --git a/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/extensions/TangemSdk.kt b/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/extensions/TangemSdk.kt index f69b7c96cf..050f81c61c 100644 --- a/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/extensions/TangemSdk.kt +++ b/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/extensions/TangemSdk.kt @@ -1,21 +1,48 @@ package com.tangem.tangem_sdk_new.extensions import androidx.fragment.app.FragmentActivity +import com.tangem.CardReader +import com.tangem.Config +import com.tangem.SessionViewDelegate import com.tangem.TangemSdk import com.tangem.tangem_sdk_new.DefaultSessionViewDelegate import com.tangem.tangem_sdk_new.NfcLifecycleObserver import com.tangem.tangem_sdk_new.TerminalKeysStorage import com.tangem.tangem_sdk_new.nfc.NfcManager -fun TangemSdk.Companion.init(activity: FragmentActivity): TangemSdk { - val nfcManager = NfcManager().apply { - this.setCurrentActivity(activity) - activity.lifecycle.addObserver(NfcLifecycleObserver(this)) - } - val viewDelegate = DefaultSessionViewDelegate(nfcManager.reader).apply { - this.activity = activity - } - return TangemSdk(nfcManager.reader, viewDelegate).apply { - this.setTerminalKeysService(TerminalKeysStorage(activity.application)) - } +fun TangemSdk.Companion.init(activity: FragmentActivity, config: Config = Config()): TangemSdk { + val nfcManager = TangemSdk.initNfcManager(activity) + + val viewDelegate = DefaultSessionViewDelegate(nfcManager.reader) + viewDelegate.activity = activity + + val tangemSdk = TangemSdk(nfcManager.reader, viewDelegate, config) + tangemSdk.setTerminalKeysService(TerminalKeysStorage(activity.application)) + + return tangemSdk +} + +fun TangemSdk.Companion.customInit( + activity: FragmentActivity, + viewDelegate: SessionViewDelegate? = null, cardReader: CardReader? = null, + config: Config = Config() +): TangemSdk { + val nfcManager = TangemSdk.initNfcManager(activity) + + val tangemSdk = TangemSdk( + cardReader ?: nfcManager.reader, + viewDelegate ?: DefaultSessionViewDelegate(nfcManager.reader) + .apply { this.activity = activity }, + config + ) + tangemSdk.setTerminalKeysService(TerminalKeysStorage(activity.application)) + + return tangemSdk +} + +fun TangemSdk.Companion.initNfcManager(activity: FragmentActivity): NfcManager { + val nfcManager = NfcManager() + nfcManager.setCurrentActivity(activity) + activity.lifecycle.addObserver(NfcLifecycleObserver(nfcManager)) + return nfcManager } \ No newline at end of file From b8b58b553fa9b4a3b3d60608f9f13a1069ef7022 Mon Sep 17 00:00:00 2001 From: Tangem Date: Tue, 21 Apr 2020 13:13:21 +0300 Subject: [PATCH 2/8] Updated on 2026-08-14 --- tangem-sdk-android-config/README.md | 72 ++++++++++--------- .../tangem_sdk_new/extensions/TangemSdk.kt | 5 +- 2 files changed, 42 insertions(+), 35 deletions(-) diff --git a/tangem-sdk-android-config/README.md b/tangem-sdk-android-config/README.md index 62a3856024..734e4835a1 100644 --- a/tangem-sdk-android-config/README.md +++ b/tangem-sdk-android-config/README.md @@ -13,18 +13,23 @@ The Tangem card is a self-custodial hardware wallet for blockchain assets. The m - [Card interaction](#card-interaction) - [Scan card](#scan-card) - [Sign](#sign) - - [Read Issuer Data](#read-issuer-data) - - [Read Issuer Extra Data](#read-issuer-extra-data) - - [Write Issuer Data](#write-issuer-data) - - [Write Issuer Extra Data](#write-issuer-extra-data) - - [Write User Data](#write-user-data) - - [Read User Data](#read-user-data) - - [Create Wallet](#create-wallet) - - [Purge Wallet](#purge-wallet) - - [Depersonalize](#depersonalize) - - [Personalize](#personalize) + - [Issuer Data](#issuer-data) + - [Read Issuer Data](#read-issuer-data) + - [Read Issuer Extra Data](#read-issuer-extra-data) + - [Write Issuer Data](#write-issuer-data) + - [Write Issuer Extra Data](#write-issuer-extra-data) + - [User Data](#user-data) + - [Write User Data](#write-user-data) + - [Read User Data](#read-user-data) + - [Wallet](#wallet) + - [Create Wallet](#create-wallet) + - [Purge Wallet](#purge-wallet) + - [Personalization](#personalization) + - [Depersonalize](#depersonalize) + - [Personalize](#personalize) - [Customization](#customization) - [UI](#ui) + - [Reader](#reader) - [Custom Tasks](#custom-tasks) @@ -86,20 +91,16 @@ Tangem SDK is a self-sufficient solution that implements a card abstraction mode ### Initialization To get started, you need to create an instance of the `TangemSdk` class. It provides the simple way of interacting with the card. -Our default implementation of `TangemSdk` comes with `NfcReader` and `DefaultSessionViewDelegate` and can be initialized with a static method -TangemSdk.init(activity: Activity). +Our default implementation of `TangemSdk` can be initialized with a static method TangemSdk.init(activity: Activity). ```kotlin val tangemSdk: TangemSdk = TangemSdk.init(activity) ``` -TangemSdk requires a reference to activity in order to use Android API for interacting with NFC. DefaultSessionViewDelegate requires a reference to activity in order to render views. - +TangemSdk requires a reference to activity in order to use Android API for interacting with NFC and to render views. Default implementation of `TangemSdk` allows you to start using SDK in your application without any additional setup. - -You can also provide your implementations of `CardReader` and `SessionViewDelegate`. -You can read more about this in [Customization](#customization). +(You can read about additional options in [Customization](#customization)). ### Card interaction @@ -162,7 +163,9 @@ This method allows you to sign one or multiple hashes. Simultaneous signing of a } ``` -#### Read Issuer Data +#### Issuer Data + +##### Read Issuer Data An example of usage (description is available at documentation for `TangemSdk.readIssuerData` method and corresponding command class): ```kotlin @@ -182,7 +185,7 @@ An example of usage (description is available at documentation for `TangemSdk.re } ``` -#### Read Issuer Extra Data +##### Read Issuer Extra Data An example of usage (description is available at documentation for `TangemSdk.readIssuerExtraData` method and corresponding command class): ```kotlin @@ -202,7 +205,7 @@ An example of usage (description is available at documentation for `TangemSdk.re } ``` -#### Write Issuer Data +##### Write Issuer Data An example of usage (description is available at documentation for `TangemSdk.writeIssuerData` method and corresponding command class): ```kotlin @@ -221,7 +224,7 @@ An example of usage (description is available at documentation for `TangemSdk.wr } ``` -#### Write Issuer Extra Data +##### Write Issuer Extra Data An example of usage (description is available at documentation for `TangemSdk.writeIssuerExtraData` method and corresponding command class): ```kotlin @@ -241,8 +244,8 @@ An example of usage (description is available at documentation for `TangemSdk.wr } } ``` - -#### Write User Data +#### User Data +##### Write User Data An example of usage (description is available at documentation for `TangemSdk.writeUserData` method and corresponding command class): ```kotlin @@ -263,7 +266,7 @@ An example of usage (description is available at documentation for `TangemSdk.wr } ``` -#### Read User Data +##### Read User Data An example of usage (description is available at documentation for `TangemSdk.readUserData` method and corresponding command class): ```kotlin @@ -281,8 +284,8 @@ An example of usage (description is available at documentation for `TangemSdk.re } } ``` - -#### Create Wallet +#### Wallet +##### Create Wallet An example of usage (description is available at documentation for `TangemSdk.createWallet` method and corresponding command class): ```kotlin @@ -301,7 +304,7 @@ An example of usage (description is available at documentation for `TangemSdk.cr } ``` -#### Purge Wallet +##### Purge Wallet An example of usage (description is available at documentation for `TangemSdk.purgeWallet` method and corresponding command class): ```kotlin @@ -320,7 +323,8 @@ An example of usage (description is available at documentation for `TangemSdk.pu } ``` -#### Depersonalize +#### Personalization +##### Depersonalize An example of usage (description is available at documentation for `TangemSdk.depersonalize` method and corresponding command class): ```kotlin @@ -339,7 +343,7 @@ An example of usage (description is available at documentation for `TangemSdk.de } ``` -#### Personalize +##### Personalize An example of usage (description is available at documentation for `TangemSdk.personalize` method and corresponding command class): ```kotlin @@ -361,12 +365,16 @@ An example of usage (description is available at documentation for `TangemSdk.pe ## Customization ### UI -If the interaction with user is required, the SDK performs the entire cycle of this interaction. In order to change the appearance or behavior of the user UI, you can provide you own implementation of the `SessionViewDelegate` inteface. After this, initialize the `TangemSdk` class with your delegate class. +If the interaction with user is required, the SDK performs the entire cycle of this interaction. In order to change the appearance or behavior of the user UI, you can provide you own implementation of the `SessionViewDelegate` interface. After this, initialize the `TangemSdk` class with your delegate class. ```kolin -val tangemSdk = TangemSdk.customInit(this, viewDelegate = MySessionViewDelegate()) +val tangemSdk = TangemSdk.customInit(this, MySessionViewDelegate()) ``` +### Reader + +TangemSdk uses Android NFC capabilities to communicate with TangemCards. If there is a need to use other means of communication or other platforms, it is possible to implement this functionality by implementing `CardReader` interface and using it instead of the default `NfcReader`. + ### Custom Tasks `TangemSdk` specific methods run particular commands and tasks. If you want to trigger card commands in a different order, or implement additional business logic, you have several options. @@ -400,7 +408,7 @@ To do this, you need to call `tangemSdk.startSession()` method and get a `CardSe Another option is to put all logic in a in `CardSessionRunnable` class and launch it using `tangemSdk.startSessionWithRunnable()` method. In Tangem SDK we use this approach for our `ScanTask`. -> For example, you want to read the card and immediately sign a transaction with it. With subclassing `CardSessionRunnable` you can achieve it this way. +> For example, if you want to read the card and immediately sign a transaction with it, with subclassing `CardSessionRunnable` you can achieve it this way. ```kotlin class OneTapSignTask(private val hashesToSign: Array) : CardSessionRunnable { diff --git a/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/extensions/TangemSdk.kt b/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/extensions/TangemSdk.kt index 050f81c61c..e9a6ab555c 100644 --- a/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/extensions/TangemSdk.kt +++ b/tangem-sdk/src/main/java/com/tangem/tangem_sdk_new/extensions/TangemSdk.kt @@ -1,7 +1,6 @@ package com.tangem.tangem_sdk_new.extensions import androidx.fragment.app.FragmentActivity -import com.tangem.CardReader import com.tangem.Config import com.tangem.SessionViewDelegate import com.tangem.TangemSdk @@ -24,13 +23,13 @@ fun TangemSdk.Companion.init(activity: FragmentActivity, config: Config = Config fun TangemSdk.Companion.customInit( activity: FragmentActivity, - viewDelegate: SessionViewDelegate? = null, cardReader: CardReader? = null, + viewDelegate: SessionViewDelegate? = null, config: Config = Config() ): TangemSdk { val nfcManager = TangemSdk.initNfcManager(activity) val tangemSdk = TangemSdk( - cardReader ?: nfcManager.reader, + nfcManager.reader, viewDelegate ?: DefaultSessionViewDelegate(nfcManager.reader) .apply { this.activity = activity }, config From 11aa8ac293727a18f65988b3d42bf0b50ed37b5f Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 22 Apr 2020 10:08:09 +0000 Subject: [PATCH 3/8] Updated on 2026-08-14 --- tangem-sdk-android-config/README.md | 104 +++++++++++++--------------- 1 file changed, 48 insertions(+), 56 deletions(-) diff --git a/tangem-sdk-android-config/README.md b/tangem-sdk-android-config/README.md index 734e4835a1..5acf8ff48f 100644 --- a/tangem-sdk-android-config/README.md +++ b/tangem-sdk-android-config/README.md @@ -13,6 +13,9 @@ The Tangem card is a self-custodial hardware wallet for blockchain assets. The m - [Card interaction](#card-interaction) - [Scan card](#scan-card) - [Sign](#sign) + - [Wallet](#wallet) + - [Create Wallet](#create-wallet) + - [Purge Wallet](#purge-wallet) - [Issuer Data](#issuer-data) - [Read Issuer Data](#read-issuer-data) - [Read Issuer Extra Data](#read-issuer-extra-data) @@ -21,9 +24,6 @@ The Tangem card is a self-custodial hardware wallet for blockchain assets. The m - [User Data](#user-data) - [Write User Data](#write-user-data) - [Read User Data](#read-user-data) - - [Wallet](#wallet) - - [Create Wallet](#create-wallet) - - [Purge Wallet](#purge-wallet) - [Personalization](#personalization) - [Depersonalize](#depersonalize) - [Personalize](#personalize) @@ -40,9 +40,9 @@ Android with minimal SDK version of 21 and a device with NFC support ### Installation -1) Add Tangem library to the project: +1. Add Tangem library to the project: -Add to a project build.gradle file: +Add to a project `build.gradle` file: ```gradle allprojects { @@ -52,7 +52,7 @@ allprojects { } ``` -And add Tangem library to the dependencies (in an app or module build.gradle file): +And add Tangem library to the dependencies (in an app or module `build.gradle` file): ```gradle dependencies { @@ -60,10 +60,10 @@ dependencies { implementation "com.github.tangem.tangem-sdk-android:tangem-sdk:$latestVersion" } ``` -Tangem Core is a JVM library (without Android dependencies) that provides core functionality of interacting with Tangem cards. -Tangem Sdk is an Android library that implements NFC interaction between Android devices and Tangem cards and graphical interface for this interaction. +`tangem-core` is a JVM library (without Android dependencies) that provides core functionality of interacting with Tangem cards. +`tangem-sdk` is an Android library that implements NFC interaction between Android devices and Tangem cards and graphical interface for this interaction. -2) Add res file ‘tech_filter’ with the following: +2. Save the file (you can name it anything you wish) with the following tech-list filters in the `/res/xml` ```xml @@ -75,24 +75,21 @@ Tangem Sdk is an Android library that implements NFC interaction between Android ``` -3) Add to Manifest: +3. Add to `AndroidManifest.xml`: ```xml - + + android:name=“android.nfc.action.TECH_DISCOVERED” + android:resource=“@xml/tech_filter” /> ``` ## Usage - Tangem SDK is a self-sufficient solution that implements a card abstraction model, methods of interaction with the card and interactions with the user via UI. ### Initialization To get started, you need to create an instance of the `TangemSdk` class. It provides the simple way of interacting with the card. -Our default implementation of `TangemSdk` can be initialized with a static method TangemSdk.init(activity: Activity). - ```kotlin val tangemSdk: TangemSdk = TangemSdk.init(activity) @@ -103,39 +100,34 @@ Default implementation of `TangemSdk` allows you to start using SDK in your appl (You can read about additional options in [Customization](#customization)). ### Card interaction - -Tangem SDK provides a number of commands and tasks that can be run from a `TangemSdk` class. - #### Scan card -To start using any card, you first need to read it using the `scanCard()` method. This method launches an NFC session, and once it’s connected with the card, it obtains the card data. If the card contains a wallet (private and public key pair), it proves that the wallet owns a private key that corresponds to a public one. +To obtain data from the card use `scanCard()` method. This method launches an NFC session, and once it’s connected with the card, it obtains the card data. If the card contains a wallet (private and public key pair), it proves that the wallet owns a private key that corresponds to a public one. Example: - ```kotlin - tangemSdk.scanCard { result -> - when (result) { - is CompletionResult.Success -> { - // Handle returned card data - val card = result.data - cardId = card.cardId - // Switch to UI thread to show results in UI - runOnUiThread { - tv_card_cid?.text = cardId - } - } - is CompletionResult.Failure -> { - if (result.error is SessionError.UserCancelledError) { - // Handle case when user cancelled manually - } - // Handle other errors - } - } +tangemSdk.scanCard { result -> + when (result) { + is CompletionResult.Success -> { + // Handle returned card data + val card = result.data + cardId = card.cardId + // Switch to UI thread to show results in UI + runOnUiThread { + tv_card_cid?.text = cardId } + } + is CompletionResult.Failure -> { + if (result.error is SessionError.UserCancelledError) { + // Handle case when user cancelled manually + } + // Handle other errors + } + } +} + ``` -Communication with the card is an asynchronous operation. In order to get a result for the method, you need to subscribe to the task callback. In order to render the callback results on UI, you need to switch to the main thread. - -Every `CardSessionRunnable` (`Command` or custom tasks) can invoke callback once with either success or error: +Communication with the card is an asynchronous operation. In order to get a result for the method, you need to implement the callback function. In order to render the callback results on UI, you need to switch to the main thread. `CompletionResult` – this is the sealed class for the results of `CardSessionRunnable`. @@ -146,21 +138,21 @@ Every `CardSessionRunnable` (`Command` or custom tasks) can invoke callback once This method allows you to sign one or multiple hashes. Simultaneous signing of array of hashes in a single SIGN command is required to support Bitcoin-type multi-input blockchains (UTXO). The SIGN command will return a corresponding array of signatures. ```kotlin - tangemSdk.sign( - hashes = arrayOf(hash1, hash2), - cardId) { result -> - when (result) { - is CompletionResult.Failure -> { - if (result.error is SessionError.UserCancelledError) { - // Handle case when user cancelled manually - } - // Handle other errors - } - is CompletionResult.Success -> { - val signResponse = result.data - } - } +tangemSdk.sign( + hashes = arrayOf(hash1, hash2), + cardId) { result -> + when (result) { + is CompletionResult.Failure -> { + if (result.error is SessionError.UserCancelledError) { + // Handle case when user cancelled manually + } + // Handle other errors } + is CompletionResult.Success -> { + val signResponse = result.data + } + } +} ``` #### Issuer Data From 0131e08b689d201ede287db0c0ceba55d3891b5b Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 23 Apr 2020 13:20:46 +0300 Subject: [PATCH 4/8] Updated on 2026-08-14 --- settings.gradle | 2 +- .../_arch/widget/ItemWidgetBuilder.kt | 12 -- .../_arch/widget/impl/StubWidget.kt | 15 -- .../tangem/tangemtest/ucase/variants/Ids.kt | 11 -- .../ui/DepersonalizeActionFragment.kt | 13 -- .../ucase/variants/responses/item/TextItem.kt | 12 -- .../ui/widget/ResponseItemBuilder.kt | 23 --- .../variants/sign/ui/SignActionFragment.kt | 13 -- .../res/drawable/ic_launcher_background.xml | 170 ------------------ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 - .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 - .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 2963 -> 0 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 4905 -> 0 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 2060 -> 0 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 2783 -> 0 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 4490 -> 0 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 6895 -> 0 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 6387 -> 0 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 10413 -> 0 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 9128 -> 0 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 15132 -> 0 bytes {tangem-demo => tangem-devkit}/.gitignore | 0 {tangem-demo => tangem-devkit}/build.gradle | 2 +- .../proguard-rules.pro | 0 .../src/main/AndroidManifest.xml | 8 +- .../src/main/ic_launcher-playstore.png | Bin 0 -> 14393 bytes .../java/com/tangem/devkit}/AppTangemDemo.kt | 8 +- .../com/tangem/devkit}/Old_MainActivity.kt | 2 +- .../tangem/devkit}/TestUserDataActivity.kt | 2 +- .../tangem/devkit}/_arch/SingleLiveEvent.kt | 2 +- .../devkit}/_arch/structure/HelpAbstracts.kt | 2 +- .../com/tangem/devkit}/_arch/structure/Ids.kt | 2 +- .../tangem/devkit}/_arch/structure/Logger.kt | 2 +- .../_arch/structure/abstraction/Extension.kt | 4 +- .../_arch/structure/abstraction/Item.kt | 4 +- .../_arch/structure/abstraction/ItemGroup.kt | 6 +- .../structure/abstraction/ItemViewModel.kt | 8 +- .../structure/abstraction/ModelConverter.kt | 2 +- .../_arch/structure/abstraction/Plugin.kt | 2 +- .../devkit}/_arch/structure/impl/Items.kt | 6 +- .../devkit/_arch/widget/ItemWidgetBuilder.kt | 12 ++ .../devkit}/_arch/widget/WidgetBuilder.kt | 14 +- .../_arch/widget/abstraction/ViewWidget.kt | 12 +- .../_arch/widget/impl/LinearGroupWidget.kt | 8 +- .../devkit/_arch/widget/impl/StubWidget.kt | 15 ++ .../com/tangem/devkit}/_main/MainActivity.kt | 4 +- .../com/tangem/devkit}/_main/MainViewModel.kt | 2 +- .../_main/entryPoint/ActionListFragment.kt | 16 +- .../devkit}/_main/entryPoint/RvActions.kt | 10 +- .../tangem/devkit}/commons/Abstractions.kt | 2 +- .../devkit}/commons/DialogController.kt | 2 +- .../tangem/devkit}/commons/GlobalFunctions.kt | 2 +- .../java/com/tangem/devkit}/commons/Logger.kt | 2 +- .../devkit}/commons/view/MultiActionView.kt | 8 +- .../devkit}/extensions/AndroidComponents.kt | 2 +- .../tangem/devkit}/extensions/CardConfig.kt | 2 +- .../com/tangem/devkit}/extensions/List.kt | 2 +- .../devkit}/extensions/view/Transitions.kt | 2 +- .../com/tangem/devkit}/ucase/NavigationOp.kt | 4 +- .../devkit}/ucase/domain/actions/Action.kt | 16 +- .../domain/actions/DepersonalizeAction.kt | 12 +- .../ucase/domain/actions/PersonalizeAction.kt | 30 ++-- .../ucase/domain/actions/ScanAction.kt | 8 +- .../ucase/domain/actions/SignAction.kt | 12 +- .../domain/paramsManager/ItemsManager.kt | 12 +- .../managers/BaseItemsManager.kt | 24 +-- .../managers/PersonalizationItemsManager.kt | 12 +- .../paramsManager/managers/SimpleManagers.kt | 14 +- .../afterAction/AfterActionModifiers.kt | 6 +- .../triggers/afterAction/AfterScanModifier.kt | 16 +- .../ParamChangeConsequence.kt | 14 +- .../domain/responses/ResponseJsonConverter.kt | 4 +- .../com/tangem/devkit}/ucase/resources/Ids.kt | 4 +- .../ucase/resources/MainResourceHolder.kt | 20 +-- .../devkit}/ucase/resources/ResourseTypes.kt | 2 +- .../resources/initializers/ActionResources.kt | 12 +- .../initializers/PersonalizationResources.kt | 12 +- .../initializers/ResponseResources.kt | 16 +- .../resources/initializers/TlvResources.kt | 10 +- .../com/tangem/devkit}/ucase/tunnel/Errors.kt | 4 +- .../tangem/devkit}/ucase/tunnel/ViewScreen.kt | 4 +- .../devkit}/ucase/ui/ActionViewModel.kt | 22 +-- .../ucase/ui/BaseCardActionFragment.kt | 18 +- .../tangem/devkit}/ucase/ui/BaseFragment.kt | 6 +- .../ucase/ui/widgets/ParameterWidget.kt | 18 +- .../com/tangem/devkit/ucase/variants/Ids.kt | 11 ++ .../ui/DepersonalizeActionFragment.kt | 13 ++ .../devkit}/ucase/variants/personalize/Ids.kt | 4 +- .../personalize/PersonalizationConfigStore.kt | 10 +- .../personalize/converter/DefaultValues.kt | 10 +- .../personalize/converter/ItemTypes.kt | 6 +- .../PersonalizationConfigConverter.kt | 14 +- .../PersonalizationConfigToCardConfig.kt | 4 +- .../dto/DefaultPersonalizationParams.kt | 4 +- .../variants/personalize/dto/Manufacturer.kt | 2 +- .../personalize/dto/PersonalizationConfig.kt | 2 +- .../personalize/ui/PersonalizationFragment.kt | 48 ++--- .../presets/PersonalizationPresetManager.kt | 12 +- .../ui/presets/PersonalizationPresetView.kt | 6 +- .../personalize/ui/presets/PresetRv.kt | 7 +- .../personalize/ui/widgets/BaseAppWidget.kt | 14 +- .../ui/widgets/DescriptionWidget.kt | 10 +- .../personalize/ui/widgets/EditTextWidget.kt | 6 +- .../personalize/ui/widgets/NumberWidget.kt | 8 +- .../ui/widgets/PersonalizationItemBuilder.kt | 10 +- .../personalize/ui/widgets/SpinnerWidget.kt | 10 +- .../personalize/ui/widgets/SwitchWidget.kt | 6 +- .../ui/widgets/TextHeaderWidget.kt | 6 +- .../devkit}/ucase/variants/responses/Ids.kt | 4 +- .../variants/responses/ResponseViewModel.kt | 12 +- .../converter/BaseResponseConverter.kt | 10 +- .../responses/converter/CardConverter.kt | 22 +-- .../responses/converter/ConvertersStore.kt | 2 +- .../responses/converter/SimpleConverters.kt | 10 +- .../ucase/variants/responses/item/TextItem.kt | 12 ++ .../variants/responses/ui/ResponseFragment.kt | 18 +- .../responses/ui/widget/CheckBoxWidget.kt | 6 +- .../ui/widget/ResponseItemBuilder.kt | 23 +++ .../responses/ui/widget/ResponseTextWidget.kt | 8 +- .../responses/ui/widget/ResponseWidget.kt | 8 +- .../variants/scan/ui/ScanActionFragment.kt | 12 +- .../variants/sign/ui/SignActionFragment.kt | 13 ++ .../src/main/res/anim/fade_in.xml | 0 .../src/main/res/anim/fade_out.xml | 0 .../src/main/res/anim/slide_in_left.xml | 0 .../src/main/res/anim/slide_in_right.xml | 0 .../src/main/res/anim/slide_out_left.xml | 0 .../src/main/res/anim/slide_out_right.xml | 0 .../res/color/menu_switch_color_thumb.xml | 0 .../res/color/menu_switch_color_track.xml | 0 .../res/color/mtrl_fab_bg_color_selector.xml | 0 .../mtrl_fab_icon_text_color_selector.xml | 0 .../drawable-v24/ic_launcher_foreground.xml | 0 .../res/drawable/ic_launcher_background.xml | 74 ++++++++ .../main/res/drawable/ic_share_white_18dp.xml | 0 .../src/main/res/layout/a_main.xml | 0 .../res/layout/activity_test_user_data.xml | 0 .../dlg_personalization_preset_load.xml | 0 .../dlg_personalization_preset_save.xml | 0 .../main/res/layout/fg_base_action_layout.xml | 0 .../src/main/res/layout/fg_card_response.xml | 0 .../src/main/res/layout/fg_entry_point.xml | 0 .../src/main/res/layout/m_divider_h.xml | 0 .../src/main/res/layout/m_divider_v.xml | 0 .../src/main/res/layout/menu_item_switch.xml | 0 .../src/main/res/layout/old_activity_main.xml | 0 .../main/res/layout/v_content_container.xml | 0 .../main/res/layout/v_item_list_container.xml | 0 .../src/main/res/layout/vh_actions.xml | 0 .../layout/vh_personalization_preset_name.xml | 0 .../main/res/layout/vh_sp_dropdown_item.xml | 0 .../src/main/res/layout/vh_sp_item.xml | 0 .../main/res/layout/view_simple_button.xml | 0 .../res/layout/w_action_response_json.xml | 0 .../main/res/layout/w_card_incoming_param.xml | 0 .../src/main/res/layout/w_empty.xml | 0 .../main/res/layout/w_field_description.xml | 0 .../layout/w_personalize_item_edit_text.xml | 0 .../res/layout/w_personalize_item_header.xml | 0 .../res/layout/w_personalize_item_number.xml | 0 .../res/layout/w_personalize_item_spinner.xml | 0 .../res/layout/w_personalize_item_switch.xml | 0 .../layout/w_personalize_widgets_together.xml | 0 .../main/res/layout/w_personilize_block.xml | 0 .../src/main/res/layout/w_response_item.xml | 0 .../res/layout/w_response_item_checkbox.xml | 0 .../res/layout/w_response_item_header.xml | 0 .../src/main/res/menu/menu_activity_main.xml | 0 .../main/res/menu/menu_fg_peronalization.xml | 0 .../src/main/res/menu/menu_fg_response.xml | 0 .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 1425 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 0 -> 1728 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 3249 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 988 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 0 -> 1101 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 2059 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 1953 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 0 -> 2465 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 4553 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 3061 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 0 -> 4276 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 7425 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 4348 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 0 -> 6231 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 10769 bytes .../src/main/res/navigation/navigation.xml | 28 +-- .../src/main/res/values/colors.xml | 0 .../src/main/res/values/dimens.xml | 0 .../main/res/values/dimens_item_widget.xml | 0 .../res/values/ic_launcher_background.xml | 4 + .../src/main/res/values/strings.xml | 2 +- .../src/main/res/values/strings_action.xml | 0 .../res/values/strings_personalization.xml | 0 .../src/main/res/values/strings_response.xml | 0 .../src/main/res/values/strings_scan.xml | 0 .../src/main/res/values/strings_tlv.xml | 0 .../src/main/res/values/styles.xml | 0 .../src/main/res/values/theme_debug.xml | 0 .../src/main/res/xml/nfc_tech_filter.xml | 0 201 files changed, 600 insertions(+), 693 deletions(-) delete mode 100644 tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/ItemWidgetBuilder.kt delete mode 100644 tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/impl/StubWidget.kt delete mode 100644 tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/Ids.kt delete mode 100644 tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/depersonalize/ui/DepersonalizeActionFragment.kt delete mode 100644 tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/item/TextItem.kt delete mode 100644 tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/ResponseItemBuilder.kt delete mode 100644 tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/sign/ui/SignActionFragment.kt delete mode 100644 tangem-demo/src/main/res/drawable/ic_launcher_background.xml delete mode 100644 tangem-demo/src/main/res/mipmap-anydpi-v26/ic_launcher.xml delete mode 100644 tangem-demo/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml delete mode 100644 tangem-demo/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 tangem-demo/src/main/res/mipmap-hdpi/ic_launcher_round.png delete mode 100644 tangem-demo/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 tangem-demo/src/main/res/mipmap-mdpi/ic_launcher_round.png delete mode 100644 tangem-demo/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 tangem-demo/src/main/res/mipmap-xhdpi/ic_launcher_round.png delete mode 100644 tangem-demo/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 tangem-demo/src/main/res/mipmap-xxhdpi/ic_launcher_round.png delete mode 100644 tangem-demo/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 tangem-demo/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png rename {tangem-demo => tangem-devkit}/.gitignore (100%) rename {tangem-demo => tangem-devkit}/build.gradle (97%) rename {tangem-demo => tangem-devkit}/proguard-rules.pro (100%) rename {tangem-demo => tangem-devkit}/src/main/AndroidManifest.xml (91%) create mode 100644 tangem-devkit/src/main/ic_launcher-playstore.png rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/AppTangemDemo.kt (79%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/Old_MainActivity.kt (99%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/TestUserDataActivity.kt (99%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/_arch/SingleLiveEvent.kt (96%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/_arch/structure/HelpAbstracts.kt (86%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/_arch/structure/Ids.kt (82%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/_arch/structure/Logger.kt (94%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/_arch/structure/abstraction/Extension.kt (81%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/_arch/structure/abstraction/Item.kt (87%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/_arch/structure/abstraction/ItemGroup.kt (89%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/_arch/structure/abstraction/ItemViewModel.kt (93%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/_arch/structure/abstraction/ModelConverter.kt (86%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/_arch/structure/abstraction/Plugin.kt (75%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/_arch/structure/impl/Items.kt (89%) create mode 100644 tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/ItemWidgetBuilder.kt rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/_arch/widget/WidgetBuilder.kt (65%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/_arch/widget/abstraction/ViewWidget.kt (87%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/_arch/widget/impl/LinearGroupWidget.kt (53%) create mode 100644 tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/impl/StubWidget.kt rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/_main/MainActivity.kt (97%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/_main/MainViewModel.kt (95%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/_main/entryPoint/ActionListFragment.kt (84%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/_main/entryPoint/RvActions.kt (89%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/commons/Abstractions.kt (87%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/commons/DialogController.kt (98%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/commons/GlobalFunctions.kt (83%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/commons/Logger.kt (77%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/commons/view/MultiActionView.kt (90%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/extensions/AndroidComponents.kt (92%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/extensions/CardConfig.kt (99%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/extensions/List.kt (90%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/extensions/view/Transitions.kt (87%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/NavigationOp.kt (85%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/domain/actions/Action.kt (72%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/domain/actions/DepersonalizeAction.kt (67%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/domain/actions/PersonalizeAction.kt (66%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/domain/actions/ScanAction.kt (50%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/domain/actions/SignAction.kt (71%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/domain/paramsManager/ItemsManager.kt (73%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/domain/paramsManager/managers/BaseItemsManager.kt (72%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/domain/paramsManager/managers/PersonalizationItemsManager.kt (64%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/domain/paramsManager/managers/SimpleManagers.kt (53%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/domain/paramsManager/triggers/afterAction/AfterActionModifiers.kt (66%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/domain/paramsManager/triggers/afterAction/AfterScanModifier.kt (72%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/domain/paramsManager/triggers/changeConsequence/ParamChangeConsequence.kt (78%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/domain/responses/ResponseJsonConverter.kt (97%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/resources/Ids.kt (75%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/resources/MainResourceHolder.kt (68%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/resources/ResourseTypes.kt (85%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/resources/initializers/ActionResources.kt (88%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/resources/initializers/PersonalizationResources.kt (97%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/resources/initializers/ResponseResources.kt (92%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/resources/initializers/TlvResources.kt (61%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/tunnel/Errors.kt (65%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/tunnel/ViewScreen.kt (81%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/ui/ActionViewModel.kt (89%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/ui/BaseCardActionFragment.kt (92%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/ui/BaseFragment.kt (88%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/ui/widgets/ParameterWidget.kt (89%) create mode 100644 tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/Ids.kt create mode 100644 tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/depersonalize/ui/DepersonalizeActionFragment.kt rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/personalize/Ids.kt (94%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/personalize/PersonalizationConfigStore.kt (85%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/personalize/converter/DefaultValues.kt (95%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/personalize/converter/ItemTypes.kt (96%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/personalize/converter/PersonalizationConfigConverter.kt (96%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/personalize/converter/PersonalizationConfigToCardConfig.kt (97%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/personalize/dto/DefaultPersonalizationParams.kt (89%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/personalize/dto/Manufacturer.kt (98%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/personalize/dto/PersonalizationConfig.kt (98%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/personalize/ui/PersonalizationFragment.kt (82%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/personalize/ui/presets/PersonalizationPresetManager.kt (75%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/personalize/ui/presets/PersonalizationPresetView.kt (55%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/personalize/ui/presets/PresetRv.kt (89%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/personalize/ui/widgets/BaseAppWidget.kt (62%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/personalize/ui/widgets/DescriptionWidget.kt (78%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/personalize/ui/widgets/EditTextWidget.kt (90%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/personalize/ui/widgets/NumberWidget.kt (89%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/personalize/ui/widgets/PersonalizationItemBuilder.kt (63%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/personalize/ui/widgets/SpinnerWidget.kt (91%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/personalize/ui/widgets/SwitchWidget.kt (86%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/personalize/ui/widgets/TextHeaderWidget.kt (70%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/responses/Ids.kt (89%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/responses/ResponseViewModel.kt (80%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/responses/converter/BaseResponseConverter.kt (68%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/responses/converter/CardConverter.kt (86%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/responses/converter/ConvertersStore.kt (90%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/responses/converter/SimpleConverters.kt (74%) create mode 100644 tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/item/TextItem.kt rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/responses/ui/ResponseFragment.kt (81%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/responses/ui/widget/CheckBoxWidget.kt (81%) create mode 100644 tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/widget/ResponseItemBuilder.kt rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/responses/ui/widget/ResponseTextWidget.kt (80%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/responses/ui/widget/ResponseWidget.kt (80%) rename {tangem-demo/src/main/java/com/tangem/tangemtest => tangem-devkit/src/main/java/com/tangem/devkit}/ucase/variants/scan/ui/ScanActionFragment.kt (81%) create mode 100644 tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/sign/ui/SignActionFragment.kt rename {tangem-demo => tangem-devkit}/src/main/res/anim/fade_in.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/anim/fade_out.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/anim/slide_in_left.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/anim/slide_in_right.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/anim/slide_out_left.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/anim/slide_out_right.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/color/menu_switch_color_thumb.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/color/menu_switch_color_track.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/color/mtrl_fab_bg_color_selector.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/color/mtrl_fab_icon_text_color_selector.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/drawable-v24/ic_launcher_foreground.xml (100%) create mode 100644 tangem-devkit/src/main/res/drawable/ic_launcher_background.xml rename {tangem-demo => tangem-devkit}/src/main/res/drawable/ic_share_white_18dp.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/a_main.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/activity_test_user_data.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/dlg_personalization_preset_load.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/dlg_personalization_preset_save.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/fg_base_action_layout.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/fg_card_response.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/fg_entry_point.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/m_divider_h.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/m_divider_v.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/menu_item_switch.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/old_activity_main.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/v_content_container.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/v_item_list_container.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/vh_actions.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/vh_personalization_preset_name.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/vh_sp_dropdown_item.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/vh_sp_item.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/view_simple_button.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/w_action_response_json.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/w_card_incoming_param.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/w_empty.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/w_field_description.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/w_personalize_item_edit_text.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/w_personalize_item_header.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/w_personalize_item_number.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/w_personalize_item_spinner.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/w_personalize_item_switch.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/w_personalize_widgets_together.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/w_personilize_block.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/w_response_item.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/w_response_item_checkbox.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/layout/w_response_item_header.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/menu/menu_activity_main.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/menu/menu_fg_peronalization.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/menu/menu_fg_response.xml (100%) create mode 100644 tangem-devkit/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 tangem-devkit/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 tangem-devkit/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 tangem-devkit/src/main/res/mipmap-hdpi/ic_launcher_foreground.png create mode 100644 tangem-devkit/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 tangem-devkit/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 tangem-devkit/src/main/res/mipmap-mdpi/ic_launcher_foreground.png create mode 100644 tangem-devkit/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 tangem-devkit/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 tangem-devkit/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png create mode 100644 tangem-devkit/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 tangem-devkit/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 tangem-devkit/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png create mode 100644 tangem-devkit/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 tangem-devkit/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 tangem-devkit/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png create mode 100644 tangem-devkit/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png rename {tangem-demo => tangem-devkit}/src/main/res/navigation/navigation.xml (80%) rename {tangem-demo => tangem-devkit}/src/main/res/values/colors.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/values/dimens.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/values/dimens_item_widget.xml (100%) create mode 100644 tangem-devkit/src/main/res/values/ic_launcher_background.xml rename {tangem-demo => tangem-devkit}/src/main/res/values/strings.xml (96%) rename {tangem-demo => tangem-devkit}/src/main/res/values/strings_action.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/values/strings_personalization.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/values/strings_response.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/values/strings_scan.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/values/strings_tlv.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/values/styles.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/values/theme_debug.xml (100%) rename {tangem-demo => tangem-devkit}/src/main/res/xml/nfc_tech_filter.xml (100%) diff --git a/settings.gradle b/settings.gradle index db8941d8f2..9a87107347 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -include ':app', ':tangem-sdk-old', ':server-android', ':tangem-card-old', ':tangem-core', ':tangem-sdk', ':tangem-demo', ':blockchain', ':blockchain-demo' \ No newline at end of file +include ':app', ':tangem-sdk-old', ':server-android', ':tangem-card-old', ':tangem-core', ':tangem-sdk', ':tangem-devkit', ':blockchain', ':blockchain-demo' \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/ItemWidgetBuilder.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/ItemWidgetBuilder.kt deleted file mode 100644 index 2ed1e1ab8f..0000000000 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/ItemWidgetBuilder.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.tangem.tangemtest._arch.widget - -import android.view.ViewGroup -import com.tangem.tangemtest._arch.structure.abstraction.BaseItem -import com.tangem.tangemtest._arch.widget.abstraction.ViewWidget - -/** -[REDACTED_AUTHOR] - */ -interface ItemWidgetBuilder { - fun build(item: BaseItem, parent: ViewGroup): ViewWidget? -} \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/impl/StubWidget.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/impl/StubWidget.kt deleted file mode 100644 index 1b832e362a..0000000000 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/impl/StubWidget.kt +++ /dev/null @@ -1,15 +0,0 @@ -package com.tangem.tangemtest._arch.widget.impl - -import android.view.ViewGroup -import com.tangem.tangemtest.R -import com.tangem.tangemtest._arch.structure.Id -import com.tangem.tangemtest._arch.structure.abstraction.BaseItem -import com.tangem.tangemtest._arch.structure.abstraction.BaseItemViewModel -import com.tangem.tangemtest._arch.widget.abstraction.BaseViewWidget - -/** -[REDACTED_AUTHOR] - */ -class StubWidget(id: Id, parent: ViewGroup) : BaseViewWidget(parent, BaseItem(id, BaseItemViewModel())) { - override fun getLayoutId(): Int = R.layout.w_empty -} \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/Ids.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/Ids.kt deleted file mode 100644 index 13f4ddcf27..0000000000 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/Ids.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.tangem.tangemtest.ucase.variants - -import com.tangem.tangemtest._arch.structure.Id - -/** -[REDACTED_AUTHOR] - */ -enum class TlvId : Id { - CardId, - TransactionOutHash, -} \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/depersonalize/ui/DepersonalizeActionFragment.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/depersonalize/ui/DepersonalizeActionFragment.kt deleted file mode 100644 index 107ab9b3b3..0000000000 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/depersonalize/ui/DepersonalizeActionFragment.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.tangem.tangemtest.ucase.variants.depersonalize.ui - -import com.tangem.tangemtest.ucase.domain.paramsManager.ItemsManager -import com.tangem.tangemtest.ucase.domain.paramsManager.managers.DepersonalizeItemsManager -import com.tangem.tangemtest.ucase.ui.BaseCardActionFragment - -/** -[REDACTED_AUTHOR] - */ -class DepersonalizeActionFragment : BaseCardActionFragment() { - - override val itemsManager: ItemsManager by lazy { DepersonalizeItemsManager() } -} \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/item/TextItem.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/item/TextItem.kt deleted file mode 100644 index 452b1e47bc..0000000000 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/item/TextItem.kt +++ /dev/null @@ -1,12 +0,0 @@ -package com.tangem.tangemtest.ucase.variants.responses.item - -import com.tangem.tangemtest._arch.structure.Id -import com.tangem.tangemtest._arch.structure.abstraction.BaseItemViewModel -import com.tangem.tangemtest._arch.structure.abstraction.ItemViewModel -import com.tangem.tangemtest._arch.structure.abstraction.ViewState -import com.tangem.tangemtest._arch.structure.impl.TypedItem - -open class TextHeaderItem(id: Id, viewModel: ItemViewModel) : TypedItem(id, viewModel) { - constructor(id: Id, value: String? = null, viewState: ViewState = ViewState()) - : this(id, BaseItemViewModel(value, viewState)) -} \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/ResponseItemBuilder.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/ResponseItemBuilder.kt deleted file mode 100644 index ec39879032..0000000000 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/ResponseItemBuilder.kt +++ /dev/null @@ -1,23 +0,0 @@ -package com.tangem.tangemtest.ucase.variants.responses.ui.widget - -import android.view.ViewGroup -import com.tangem.tangemtest._arch.structure.abstraction.BaseItem -import com.tangem.tangemtest._arch.structure.impl.BoolItem -import com.tangem.tangemtest._arch.structure.impl.TextItem -import com.tangem.tangemtest._arch.widget.ItemWidgetBuilder -import com.tangem.tangemtest._arch.widget.abstraction.ViewWidget -import com.tangem.tangemtest.ucase.variants.responses.item.TextHeaderItem - -/** -[REDACTED_AUTHOR] - */ -class ResponseItemBuilder : ItemWidgetBuilder { - override fun build(item: BaseItem, parent: ViewGroup): ViewWidget? { - return when (item) { - is TextHeaderItem -> ResponseHeaderWidget(parent, item) - is TextItem -> ResponseTextWidget(parent, item) - is BoolItem -> CheckBoxWidget(parent, item) - else -> null - } - } -} \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/sign/ui/SignActionFragment.kt b/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/sign/ui/SignActionFragment.kt deleted file mode 100644 index 4453eec6e1..0000000000 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/sign/ui/SignActionFragment.kt +++ /dev/null @@ -1,13 +0,0 @@ -package com.tangem.tangemtest.ucase.variants.sign.ui - -import com.tangem.tangemtest.ucase.domain.paramsManager.ItemsManager -import com.tangem.tangemtest.ucase.domain.paramsManager.managers.SignItemsManager -import com.tangem.tangemtest.ucase.ui.BaseCardActionFragment - -/** -[REDACTED_AUTHOR] - */ -class SignActionFragment : BaseCardActionFragment() { - - override val itemsManager: ItemsManager by lazy { SignItemsManager() } -} \ No newline at end of file diff --git a/tangem-demo/src/main/res/drawable/ic_launcher_background.xml b/tangem-demo/src/main/res/drawable/ic_launcher_background.xml deleted file mode 100644 index 0d025f9bf6..0000000000 --- a/tangem-demo/src/main/res/drawable/ic_launcher_background.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tangem-demo/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/tangem-demo/src/main/res/mipmap-anydpi-v26/ic_launcher.xml deleted file mode 100644 index eca70cfe52..0000000000 --- a/tangem-demo/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/tangem-demo/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/tangem-demo/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml deleted file mode 100644 index eca70cfe52..0000000000 --- a/tangem-demo/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/tangem-demo/src/main/res/mipmap-hdpi/ic_launcher.png b/tangem-demo/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index 898f3ed59ac9f3248734a00e5902736c9367d455..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2963 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 JPDHLkV1g@XpTGbB diff --git a/tangem-demo/src/main/res/mipmap-hdpi/ic_launcher_round.png b/tangem-demo/src/main/res/mipmap-hdpi/ic_launcher_round.png deleted file mode 100644 index dffca3601eba7bf5f409bdd520820e2eb5122c75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4905 zcmV+^6V~jBP)sCJ+Khgs=qzz9*aFfTF@MBLc!81jy1$_D*`qMnYCeSOOSS zh~l6kD7e75FgOnvP=_arGNJ+k0uBt2?%a3It*Y+o?&`L?*#fV=?@xECZq+^KuXD~l z_tdQ>JOSF%q}x5h@>Id>gloHZ!fr_@%N)Qad* zI}<}@Poh`#X29>b50CkB%{yWf?z(t0rQf48W{j1a($$IrZ9{N{@#9Wqx}%DM^fL-m z`X#_s9{BwX>^};}KMtudHpmMyRCq34!+|XCtnqeli6}6}7JiE;H+GAtDViHuQ~X9` zP0^{y>Ov~ufreT-w7!yx_c;QOV>|0UxJK{lqSx`7cx`b!OLV*;Ez4q9Y_XdB$PKk4 z+Aq(kmz%WbOV3IpYsa0#_Vd?)>*2Lc zn) zvVw}USbx|rlL2LMl<$^rb@TnK-;J83fd3GKh6#=C5WlXv83lKz{0$(8x1g-%;q}$b z1=&8M<_eQZO4eJk#nshu9TsZZ11Z~hVkpt8oA4831ZP3Fj3C~EG*%gSnciYD-cpkI zj{J=o1Bg-kJrjfz${Js8D?vh>vJwR{=4)c@ZtTqt#tHRR<9b9ew~kVG6oc8(lNE=Pu>)F6HIf=`kIH3oJBkSO2;+SnG--LDU5kx zC0($63w`LN)znoR#GhW@M5n&8!EGBnj_usF!G5qm>{qhQ`sdB#K+CoQF7f-se z?#7!W#vF7jw48A-)Ulxz@0b)?7iKWQI+fE6Ud#Le4H#? z*wIeM>mtaY-X;WO^yfR4Adp*W)N+A4Yv~TqOy)a5g8AjAEfJ4acRWELKhbNNKrc!( z&!ze1YQkhsw=A3()t7B^pu2=1)CJq>k}s1bv-{fV>=i+J^=8Lh=Pn_L(@77X+QqLi zSM!u0YfVL$I)-o^+D$g^8iKevTQlfM$k z8A}@MLX0cd>SIdp0%mtcJaTy&g94$WW9QB?a!}a+T)Rd$eDM!(fgHCnNCsx!svv{S z@9-MjC~sfoKOK+dN>{)_sV(mjhof{qxwvX-7Df1DQTI(g)o z>s6XRhgIhE&g6I!q!Sxz>EW}#SnudH5WeBSekYPp`9~Vp)1-G^r@B46=-SWs(Z;X8 z02evPKG%G)Nf*Dpl|HNSeWdw0`U#|(mpohWGktDRF;Bo`A2K9T}=|{(p(X*E>(aYDag2maC6ay^+ zk7K(%-yfyPJKv6-`qy{#2oNV$%o|*T^A7!TivIn?ahqEKj{ka& z1#*R?@}3aHxtTmO=~U-w(|Xu(B2EmI8B50EvnOk9*GGbcJZK_}E{D#X@`(&j@%hg` zvgc+#V--FuV!3MbUy#-AgE($~;1gULUsw`94gkTgN-nwH+_TiyxD=9t>#{5GHSR=+VC|3HUj>p$m zF=5TOh#WCVpZxG0Mfs)VLU~bclwVS}a)Tud>)$I3M@i?-ZEb;CNQ$OT?W!i>WPgI2K-%bDAV3iV{YFpxIA_D~#F;z7mA_2ToA0 zz;J#$$gz?H{f~tykIYwsN^&ofDHEcc3HtMs_ksmo_H~%=S!trXzdzzq@XJ@P(yd>A zNh?17fF3z>nk9kWDu3|gPt>$~7yTPdOfi9U)o%B9hiOkpO1&hgnGv)+?=lcH(3zlF z)1$73Anp4*+{T@4Fog)rOQR%n2^~~bNRNp!ZBKCK-@noL+ER9Y8^~8Se*UT3c%b7TLtsqf14?X2rJH|pTWGz8-n&h;14Ov z#z`fWWiO*ed){^1em`8ly%A*0PxH#fdX?ndqyYz250dgaflgvo+ zJV{-K7`Kl9diHm3hJcly zengd6QU#LyA&GQLke(wb%#d-6v?HDD3F1f!>{yWg5#|xN?9J0WD7v z;l~T-X%q||!6msgyeyyoVe>kdc~D4&(TwHYfu@{&z(qUzHQHR6u}wE)#*5x&(o-7O zw@7jXJiKu=?N?bq2i6qRnT;Fhz}ixmnKagt?l)w-)BzP^3@k~*Wp97@gTqNpbZPR zy$S@S*a*rO5riY0Ud8DORwP?Adna(v!QOi8<4{14v_(t!#gLwrT(JX4+=L_$A%|pc zXmt?{(xut$cSLlVo(30Y+4jMCjtGY2uwS_m`dG?inGHD{f(#luthNkXB!$a+a>Yn- zK~O4(yi`tCXd{2}Q7v*n=1Z+W<4npgXvmO$@_f~4uO9n2kmNBzD-1S*B*<|l$eA1@ z#7YnNRI?n@&u)dVc}PLoFRSt;=(FF*KZU}pY9KTJIT}LH;AkK9+f+gq?~2G z5#)j#B*jLMG&xp+>KqBOk%JavBS>X$J^3kS)@II(S5WsDjsv%=Is#fvo%C=}VJ79C zu4XlR`eZez2+jdtZkwl~W8jW?O+mCNa{m8IZH0?IgmNQbXlLF4NHs~k~IN5KqX9?a!NuC1W) zYsz_4m;p2B(rNZ|bq7KTK$6gs(A^{fuF@Y|C$u<+ zeYYY3Gn!;AyU4%y;QbOj@OvR}OAX~1e60jYkYi7fGch)Tw9J(lK@#LJf(#;pbZHir zB&II7NTQ;~GF=lByQEr3##lyCO%LAbWBIf<~=H3(^R#^&aTfo7d6DH>o+Z>qt5T4kD_BN0|i~wM{;) zQDk{ivKxY=^BgNdF34d7nZyJ+lfx0Dp`+JSH331CES`Ogv=4}5y2Zs^=PLgRUr*8)xq~v8}M$U zLOie%h{Y~;4ui@DJqJtzG0(xF97ij3CmS@3983s@mls%CJveFs=+cwd>4yDCfvm&e z!5#1cb>BZeo;3I6^_Foju7YH-rfKy08n55>!E;8!9e--mI{HXM9UTG5-bio}4&^qi zE~isoTuo;*ZeZWBo`Vxk8!8zvL!O6k1VIoUEds_IbStzRBxm^3Gm}w=_OY=YZzMUw zCMRKGc;U#1X^+ec$Xs%Pdmk&k3F4CX?~8#O4uI@BY`Kmq!J0Uv+5@a9tSpblLOV))hr-m%u%E*xX4>hBnb`e#B{kyo18?4;4dFUw7M^53Rybu z824~aV-c4}JY7hR>xV*sAg3fy6mLS7LnaNbD2_RfLpjc^aO!{=GM5BGo|C6yB@D9o z>0^ok{idSKZKI>_xtZixNop4pgLk193Gf?Ao}Iaq1y@!>f+5tPYW8ZSJw77VrMS#< zkU%RzE|Nf;cya`#HnR*FQxeQ`<~;c>Y2!DH$r^KWEyp=Wij2g!i9-MbcG4!}i^_bU5@kB8)I8_7rlg4C4#@0J#r1#qtCFoLQJrO9E% zt`s&x4TB&q*Dj{y&(q&hhKJ${y!SHMP)2fle^N(DLRef11H>ps$3G)mFl*0{%0f#} zK?dh~_$b?`;>l7qyL_2N&lj^qc}_^Fh@jk*X2^mq@ZAj7%2fh^%)qQAA zZ3@z-Q#;=6kf<1C_wHkrQ^se@o}KxQJaxedR`bDn4a5ufwojD_f5pWfSc3vWaa8IF z!+Z?HAa-6lxNq{aCuDPGysez_-`RL=-eMvHI(P2D`bHVO)$w1e0^WP&R`mBpOFQKR>_w07I2s zIwmM1dOoD+-D@HOzvDhQc0abkw){E0*){N5cul3$g6n-PcZs4>q4bV;KlnN~%kbn}!V8maBKN?~PDN77Zj6xT>KxccMrJYVYoo)adu8>W% zmv*U9KCo@D{=sCEstjFGl{%?R9Bd_S;`C@G{FNG~X;+5Z0h*dJ1r|5g4wB8=?S#Zy zt3sAsXM@aL)nWAyCYz08&uXYp$}38nkeVvA0^C`|ts22ve2Y2>mf~J~_Til&y|FUz z%#l)O^+i>bDr7NsoiC}@GN^5^{=sAkPSF?VF#7ysBZm@DnF?;le_~|Un-B}Itc2u|IlX``0V1M3jKlcCTY73+_+5_^1 zO|_7<%PEyPhbqxCEnFv#uom}FdO$lY%`OKi#h<5Co8ZPBFZA{I!|wAx!c?aisEfxs z?T$*AUTc9D8_Hpt%L37MoudCVml+QIa-Q{X>F$I{4t=051yd2KXJy7g2ho;dPy9%m z&|3%hK)bgG?)N=_y3^l5BAU(HpEX16sc+%jjdr-wd5e*w`^js6LDPj(u<}q7%axih zoQB@MKIp*y%l0*noe!-3>L8Nvz`X|#;P=}%;m-Yg;Pd%Hg6jXkc0~S4=WWP7_Qlvb zG1>9)E0=~O9SWcSdXd@th$;|?3QV+Z@1bR;tdb%M2ko%(GTA+u#e@F7$5Mb+;mB`4 z!xVgv{Jp95%Y!hpT7-)jrQ~&IJFY@h`L?H{0L^~?0CJaZ z{tZjr)sT1m=#VQw^-Fg;S$l@ofMbuY0uykS+-JWJI=h~`ci}FY$50ATJ+%wA zO77DqVS>075^y6_kJfo$5r(}BH#(lkaYNw(n&Hbh&XQd-lYhgIk-UdHhZ4HzOR6cX9O(7$kLq}D}u9EB; z-dhHFDZZ<8Lc2GP(}(AKLrJ-Oau&a1s?6Nk^&FO z6KSRZhEqx_SQs6S0+Eca!Fb^G1gONmI zC+HbyhfVOuc?OI&h7uoNn}=`c_>iW5NO1q-GUX8K1^!Zxzl z4XfveR)GIBSo>}=cI+IH9~|U>#(X~teA-&84{aZTo0BMk;yjBqEL^gX=_9kDnP=}a z`+sm4^17nldnZj&U`51GznG$gf}Fz|OlbvM2~cNtN6bbO;LjW>4doDpXIHr_#-WEK zTp3oTSyarnG|L?64R(Lh#u7IM@+CF;0?j-dAKR%u-gp$bMThf`Y=V%QniZFqb4;b% z+^sU^c~$y+58W}2ds$fqbXadxS)oD}YcBF8+Kmro`dqK7bh9_jZo>N(2|7ZqH?6u% zs@LZQps|*E)s_+u&N{X0R(-hsYauy#KI0bVpUP;&tcc8vw<4D;UKP1mLj0?AU!cHb ztdAKWi}A~qZL?OzGg+1b@q^keUNsrViJ`HuE@E!RO5*b9*&nDxR@U?Q6pMIaj1kMY qJl2nQa+aK&iDQb84*TpHAJ>1BQ$$nT?9A!_0000+Hy9+Dw zQlg?UKB$_cZ8RBMYcyI%jkQf{#wz1Xr!PxQ>w~B~cKP~!=iIw{_rdOp7tZhwZ1+g(AXy-HL10DFmbXNx@L~ z3H0wQYEpsnp{iIyzhEeKgc((i$;}oAoqHl}Yb`&gx~}ISy|wl# zwdwQ;nvEgzkAnwYj%g}=Nide26RJwsNTUEE)Q2P-5}7cQ3Z84R%7rdvN4sQKhOlPcRnSrOp+WGP}nNJgfkDx!pMkypKGe90p51ezT#4MxAxQ zN3CC+fuRy0nP8u@+)%h}@FHZ>vWFTTCD?*bPf|6Oz4#LAYDsH*sO<_ z+8Vve2|wE19JrkK!TNc*tzkb>2=OxIfDS8-yiLEA$m0k(kQf0ZJlj+Q&+pg*@-o6x zTdEi#&vL>m?`;jX+>v0bbWnM`S<~tiA>-z6^m&Xo6y=iH&}dMDp40vqOvn?CbR0P3 z0YX_`z8klIalWefMaf}lN@-MvK>)C@OTMQsvEFV1j6zbmglN3)tDNw{&IYft@#yp|U;GYg&z^)Rt7d@u#0Bpe zimnOEmq&Tef~aWH7SjqERa#-iBMX%jZKUfNcy71bp|`IOKD_d0nA~D<-XkQV*jewl zx|K$GjP@M*^t)>e04FWS7-Uwy|!6q{ICob5gfvYaErq&g;Btk^VqnotOu zSN-|V;a*P<^rDbv9KD!YExR|ex)jop)as*$VeKa$K-3I_~rZ#$8n0D;V;;rwan!I2{& zEnl34toAlI^wpPe zlye)Ao4ycY%W~JdLaI0e(MHvF%G1SkH=uyAXf{=!ABS!n#lZ@o8CZ4XFmw8#1n{&R zVs(YP+3GCIkwRjs%TCiYQa(?iP=b^m$jib}=-N*{ggXx&44S-zukU>W+LOO#ZOZ!~ zOnukpUM6x&FsRNVXIChVTfbhB(rD_SHz|4}839cXjAmbiVtspfigR#uEFjIMj@si>Ore+Oei$<1cCarcfF2@0*j682U1A9rp; zlE=d6(}XYz#@Cd03QHCwxdi0=G&$N_{=Yy1XfbK~!v(L-Fa7gxu<_$VaOSVq1CpmY z8$Ujb&-~r%UfZSfpfHyQ7GTlb5>~#R>JqSaSxPVhD7~ea?b-3_j}BnQxCvh0zmvuF zfymQ6C7Oj$o(rpg(e8EsF8b6fI~#$e4S@tKotNPf@Ro97lv&dmNB}MOzKDHx{Td^7 z^e>kK&H&X>w(nxk__|+v<^;uhpfq|w0oCgN2n*&Uy98ur#zdLa9sUH2!{g=78$;%} z1L1P#zaX{-%}ARM>G(3`OF*1abzPV`HC~?1g-^B_&(OXN<=~`T0!1J)ouwb`hnx4h z9=m{>-*my^gYQ9FLp5Z*znzJYxJcY)*bL{8bEG_x3mc;?*yV2q=Kg#a+Xvy`pEue zJ2#<55|A&7Ku(lOR2IUxb#E82l~|riL@t>>J=|1!XP{(Gfq7D*RSSuh3Wmux1H9O5 zbzVzIvg#nSb+dS_bpfB9xub!%!Jvc0T8>$5O?a$?#5xXzQ6&nfaS6~B@Yl=oyt`5J zUi|^Lo>^h?bXpN!k$b{#I*o}Gg+L0KqjiNap+>{bdB$Wh1B{gdNt&z zkU*wl;*p0Tp96`fH`Pew34JvBLf)EFl)AaU3W$CXzIJ5}*_hmnyplOlgkJ%5dN1-^ zfYFOQ7f|g*o(nK@@|F3Nh4!=hOBWWfJjm^}QhYrdl{|g|c5+Shdb>Od$s<#GvjwI% znqg*ZJ*3tdIBXmlNOJbhCP>{}#ZfQ82y=FCgS0Is7aB~A{A+vOWk<4kG8-CsBA>N) z2Ro)Vo9)zRim|LCBI$`F-!JxDQG~E+nVNaMkGbGoHB3M|cbfqm?Jyjr6ln%D z61dqAY5B-YX2WN|HS&_#uo&dO1ZLdVcx6-*l>@yGiUd^twKIQ z1myy3dN1;B0z4enBibGcLp_=&v^1A84wc`CetouQG9=$!N7f##SDg2(;-$ z`!;UT3E!5cpgGLm)#4Fpf{Qj}^JF&E4%N%lmmNV4&oVB`hy6ytSLkp=a!l^3{cMD2 zTZ1ifMFW4}K)*?$c>mDR24g)rEZIEGUiM-d`ALieTX6^VNp)73C?Y9z`9d?=c(?d1 zs~_K-`cOc>&%IHK9z-;#Xp`TMv(d*wB}E%mPIu_y`4;N)(a6iqDI;Sfv%{G`Tq?Y? z`XY5qua{3ZRrAk6vM-O$&0Shch^Vh+#oUI{16*NgkrFgmFX!!x!YeN2Yr^QVW|_o)XG(ZcBN)a|R?) zB#;P8w$4loZCthCwyD)Kv~>DA|AHfFa+EnB3aXYkonv5irz&0+e_1c`|f ziIC%^3DMCrgrvlo!j#n640IkHIfLEfbrQs9Mtu8!_VBgvQKZl*M~Z$T%?|zlVT_2; lV%Z2*hu);6rydA(}wUDXPCF_W1vnaRBK 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 diff --git a/tangem-demo/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/tangem-demo/src/main/res/mipmap-xhdpi/ic_launcher_round.png deleted file mode 100644 index 14ed0af35023e4f1901cf03487b6c524257b8483..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6895 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 diff --git a/tangem-demo/src/main/res/mipmap-xxhdpi/ic_launcher.png b/tangem-demo/src/main/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index b0907cac3bfd8fbfdc46e1108247f0a1055387ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6387 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 diff --git a/tangem-demo/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/tangem-demo/src/main/res/mipmap-xxhdpi/ic_launcher_round.png deleted file mode 100644 index d8ae03154975f397f8ed1b84f2d4bf9783ecfa26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10413 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 XdJ+W}DiIkV00000NkvXXu0mjfKBlg6 diff --git a/tangem-demo/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/tangem-demo/src/main/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index 2c18de9e66108411737e910f5c1972476f03ddbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9128 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 I20H400LcNok^lez diff --git a/tangem-demo/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/tangem-demo/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png deleted file mode 100644 index beed3cdd2c32af5114a7dc70b9ef5b698eb8797e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15132 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 diff --git a/tangem-demo/.gitignore b/tangem-devkit/.gitignore similarity index 100% rename from tangem-demo/.gitignore rename to tangem-devkit/.gitignore diff --git a/tangem-demo/build.gradle b/tangem-devkit/build.gradle similarity index 97% rename from tangem-demo/build.gradle rename to tangem-devkit/build.gradle index fd56546bed..e692140432 100644 --- a/tangem-demo/build.gradle +++ b/tangem-devkit/build.gradle @@ -6,7 +6,7 @@ android { buildToolsVersion "29.0.3" defaultConfig { - applicationId "com.tangem.tangemtest" + applicationId "com.tangem.devkit" minSdkVersion 21 targetSdkVersion 29 versionCode 1 diff --git a/tangem-demo/proguard-rules.pro b/tangem-devkit/proguard-rules.pro similarity index 100% rename from tangem-demo/proguard-rules.pro rename to tangem-devkit/proguard-rules.pro diff --git a/tangem-demo/src/main/AndroidManifest.xml b/tangem-devkit/src/main/AndroidManifest.xml similarity index 91% rename from tangem-demo/src/main/AndroidManifest.xml rename to tangem-devkit/src/main/AndroidManifest.xml index cf184dcfe2..e0749468f0 100644 --- a/tangem-demo/src/main/AndroidManifest.xml +++ b/tangem-devkit/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + package="com.tangem.devkit"> - + @@ -48,7 +48,7 @@ android:resource="@xml/nfc_tech_filter" /> - + diff --git a/tangem-devkit/src/main/ic_launcher-playstore.png b/tangem-devkit/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..6e5af9f8f6193aa9ddfbfa06c4a00ab3c06f605e GIT binary patch literal 14393 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 IOE(_>4+!d&v;Y7A literal 0 HcmV?d00001 diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/AppTangemDemo.kt b/tangem-devkit/src/main/java/com/tangem/devkit/AppTangemDemo.kt similarity index 79% rename from tangem-demo/src/main/java/com/tangem/tangemtest/AppTangemDemo.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/AppTangemDemo.kt index ab604ee506..60ee3d4564 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/AppTangemDemo.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/AppTangemDemo.kt @@ -1,11 +1,11 @@ -package com.tangem.tangemtest +package com.tangem.devkit import android.app.Application import android.content.Context import android.content.SharedPreferences -import com.tangem.tangemtest._arch.structure.ILog -import com.tangem.tangemtest._arch.structure.ItemLogger -import com.tangem.tangemtest.commons.TangemLogger +import com.tangem.devkit._arch.structure.ILog +import com.tangem.devkit._arch.structure.ItemLogger +import com.tangem.devkit.commons.TangemLogger import ru.dev.gbixahue.eu4d.lib.android.global.log.Log /** diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/Old_MainActivity.kt b/tangem-devkit/src/main/java/com/tangem/devkit/Old_MainActivity.kt similarity index 99% rename from tangem-demo/src/main/java/com/tangem/tangemtest/Old_MainActivity.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/Old_MainActivity.kt index 40998ca19b..ffccc70603 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/Old_MainActivity.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/Old_MainActivity.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest +package com.tangem.devkit import android.content.Intent import android.os.Bundle diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/TestUserDataActivity.kt b/tangem-devkit/src/main/java/com/tangem/devkit/TestUserDataActivity.kt similarity index 99% rename from tangem-demo/src/main/java/com/tangem/tangemtest/TestUserDataActivity.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/TestUserDataActivity.kt index 7f3ba0639d..c6124d542f 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/TestUserDataActivity.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/TestUserDataActivity.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest +package com.tangem.devkit import android.os.Bundle import android.view.View diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/SingleLiveEvent.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/SingleLiveEvent.kt similarity index 96% rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/SingleLiveEvent.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/SingleLiveEvent.kt index 943023a1c1..1e6ed8667e 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/SingleLiveEvent.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/SingleLiveEvent.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest._arch +package com.tangem.devkit._arch import android.util.Log import androidx.annotation.MainThread diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/HelpAbstracts.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/HelpAbstracts.kt similarity index 86% rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/HelpAbstracts.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/HelpAbstracts.kt index 309309c947..018e074061 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/HelpAbstracts.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/HelpAbstracts.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest._arch.structure +package com.tangem.devkit._arch.structure /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/Ids.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/Ids.kt similarity index 82% rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/Ids.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/Ids.kt index 5e517808f2..e3fcb31dbf 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/Ids.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/Ids.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest._arch.structure +package com.tangem.devkit._arch.structure /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/Logger.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/Logger.kt similarity index 94% rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/Logger.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/Logger.kt index e71fc33cb6..5ba36bbbaa 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/Logger.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/Logger.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest._arch.structure +package com.tangem.devkit._arch.structure import ru.dev.gbixahue.eu4d.lib.android.global.log.Logger import ru.dev.gbixahue.eu4d.lib.android.global.log.TagLogger diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/Extension.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/Extension.kt similarity index 81% rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/Extension.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/Extension.kt index 2aa3fb6af5..41a4aab5ae 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/Extension.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/Extension.kt @@ -1,6 +1,6 @@ -package com.tangem.tangemtest._arch.structure.abstraction +package com.tangem.devkit._arch.structure.abstraction -import com.tangem.tangemtest._arch.structure.Id +import com.tangem.devkit._arch.structure.Id /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/Item.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/Item.kt similarity index 87% rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/Item.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/Item.kt index 7800192199..d1fae9c535 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/Item.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/Item.kt @@ -1,6 +1,6 @@ -package com.tangem.tangemtest._arch.structure.abstraction +package com.tangem.devkit._arch.structure.abstraction -import com.tangem.tangemtest._arch.structure.Id +import com.tangem.devkit._arch.structure.Id /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/ItemGroup.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/ItemGroup.kt similarity index 89% rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/ItemGroup.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/ItemGroup.kt index 20a8def0e6..1d38ba6f6d 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/ItemGroup.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/ItemGroup.kt @@ -1,7 +1,7 @@ -package com.tangem.tangemtest._arch.structure.abstraction +package com.tangem.devkit._arch.structure.abstraction -import com.tangem.tangemtest._arch.structure.ILog -import com.tangem.tangemtest._arch.structure.Id +import com.tangem.devkit._arch.structure.ILog +import com.tangem.devkit._arch.structure.Id /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/ItemViewModel.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/ItemViewModel.kt similarity index 93% rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/ItemViewModel.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/ItemViewModel.kt index fc106588e6..eead6c8e3d 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/ItemViewModel.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/ItemViewModel.kt @@ -1,8 +1,8 @@ -package com.tangem.tangemtest._arch.structure.abstraction +package com.tangem.devkit._arch.structure.abstraction -import com.tangem.tangemtest._arch.structure.ILog -import com.tangem.tangemtest._arch.structure.Payload -import com.tangem.tangemtest._arch.structure.PayloadHolder +import com.tangem.devkit._arch.structure.ILog +import com.tangem.devkit._arch.structure.Payload +import com.tangem.devkit._arch.structure.PayloadHolder /** diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/ModelConverter.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/ModelConverter.kt similarity index 86% rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/ModelConverter.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/ModelConverter.kt index 09823a8495..d6b1cdb38c 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/ModelConverter.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/ModelConverter.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest._arch.structure.abstraction +package com.tangem.devkit._arch.structure.abstraction import ru.dev.gbixahue.eu4d.lib.kotlin.common.Converter diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/Plugin.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/Plugin.kt similarity index 75% rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/Plugin.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/Plugin.kt index 71bdc779c7..aaa6254d7c 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/abstraction/Plugin.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/abstraction/Plugin.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest._arch.structure.abstraction +package com.tangem.devkit._arch.structure.abstraction /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/impl/Items.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/impl/Items.kt similarity index 89% rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/impl/Items.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/impl/Items.kt index d4e4dde775..80145d31e4 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/structure/impl/Items.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/structure/impl/Items.kt @@ -1,7 +1,7 @@ -package com.tangem.tangemtest._arch.structure.impl +package com.tangem.devkit._arch.structure.impl -import com.tangem.tangemtest._arch.structure.Id -import com.tangem.tangemtest._arch.structure.abstraction.* +import com.tangem.devkit._arch.structure.Id +import com.tangem.devkit._arch.structure.abstraction.* /** [REDACTED_AUTHOR] diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/ItemWidgetBuilder.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/ItemWidgetBuilder.kt new file mode 100644 index 0000000000..4659c0ac49 --- /dev/null +++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/ItemWidgetBuilder.kt @@ -0,0 +1,12 @@ +package com.tangem.devkit._arch.widget + +import android.view.ViewGroup +import com.tangem.devkit._arch.structure.abstraction.BaseItem +import com.tangem.devkit._arch.widget.abstraction.ViewWidget + +/** +[REDACTED_AUTHOR] + */ +interface ItemWidgetBuilder { + fun build(item: BaseItem, parent: ViewGroup): ViewWidget? +} \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/WidgetBuilder.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/WidgetBuilder.kt similarity index 65% rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/WidgetBuilder.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/WidgetBuilder.kt index 3d9a3493a5..cb39aa9072 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/WidgetBuilder.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/WidgetBuilder.kt @@ -1,12 +1,12 @@ -package com.tangem.tangemtest._arch.widget +package com.tangem.devkit._arch.widget import android.view.ViewGroup -import com.tangem.tangemtest._arch.structure.abstraction.BaseItem -import com.tangem.tangemtest._arch.structure.abstraction.Item -import com.tangem.tangemtest._arch.structure.abstraction.ItemGroup -import com.tangem.tangemtest._arch.widget.abstraction.ViewWidget -import com.tangem.tangemtest._arch.widget.impl.LinearGroupWidget -import com.tangem.tangemtest._arch.widget.impl.StubWidget +import com.tangem.devkit._arch.structure.abstraction.BaseItem +import com.tangem.devkit._arch.structure.abstraction.Item +import com.tangem.devkit._arch.structure.abstraction.ItemGroup +import com.tangem.devkit._arch.widget.abstraction.ViewWidget +import com.tangem.devkit._arch.widget.impl.LinearGroupWidget +import com.tangem.devkit._arch.widget.impl.StubWidget /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/abstraction/ViewWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/abstraction/ViewWidget.kt similarity index 87% rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/abstraction/ViewWidget.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/abstraction/ViewWidget.kt index 9b6c5f9d2c..752d178400 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/abstraction/ViewWidget.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/abstraction/ViewWidget.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest._arch.widget.abstraction +package com.tangem.devkit._arch.widget.abstraction import android.graphics.drawable.ColorDrawable import android.graphics.drawable.Drawable @@ -6,11 +6,11 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.annotation.ColorRes -import com.tangem.tangemtest.R -import com.tangem.tangemtest._arch.structure.StringId -import com.tangem.tangemtest._arch.structure.StringResId -import com.tangem.tangemtest._arch.structure.abstraction.Item -import com.tangem.tangemtest._arch.structure.abstraction.ViewState +import com.tangem.devkit.R +import com.tangem.devkit._arch.structure.StringId +import com.tangem.devkit._arch.structure.StringResId +import com.tangem.devkit._arch.structure.abstraction.Item +import com.tangem.devkit._arch.structure.abstraction.ViewState import ru.dev.gbixahue.eu4d.lib.android._android.views.colorFrom import ru.dev.gbixahue.eu4d.lib.kotlin.common.LayoutHolder diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/impl/LinearGroupWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/impl/LinearGroupWidget.kt similarity index 53% rename from tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/impl/LinearGroupWidget.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/impl/LinearGroupWidget.kt index 97c8d36a35..54948387de 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/_arch/widget/impl/LinearGroupWidget.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/impl/LinearGroupWidget.kt @@ -1,9 +1,9 @@ -package com.tangem.tangemtest._arch.widget.impl +package com.tangem.devkit._arch.widget.impl import android.view.ViewGroup -import com.tangem.tangemtest.R -import com.tangem.tangemtest._arch.structure.abstraction.ItemGroup -import com.tangem.tangemtest._arch.widget.abstraction.BaseViewWidget +import com.tangem.devkit.R +import com.tangem.devkit._arch.structure.abstraction.ItemGroup +import com.tangem.devkit._arch.widget.abstraction.BaseViewWidget /** [REDACTED_AUTHOR] diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/impl/StubWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/impl/StubWidget.kt new file mode 100644 index 0000000000..0edc41b3be --- /dev/null +++ b/tangem-devkit/src/main/java/com/tangem/devkit/_arch/widget/impl/StubWidget.kt @@ -0,0 +1,15 @@ +package com.tangem.devkit._arch.widget.impl + +import android.view.ViewGroup +import com.tangem.devkit.R +import com.tangem.devkit._arch.structure.Id +import com.tangem.devkit._arch.structure.abstraction.BaseItem +import com.tangem.devkit._arch.structure.abstraction.BaseItemViewModel +import com.tangem.devkit._arch.widget.abstraction.BaseViewWidget + +/** +[REDACTED_AUTHOR] + */ +class StubWidget(id: Id, parent: ViewGroup) : BaseViewWidget(parent, BaseItem(id, BaseItemViewModel())) { + override fun getLayoutId(): Int = R.layout.w_empty +} \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_main/MainActivity.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_main/MainActivity.kt similarity index 97% rename from tangem-demo/src/main/java/com/tangem/tangemtest/_main/MainActivity.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/_main/MainActivity.kt index c47ac39601..dbfd82105f 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/_main/MainActivity.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/_main/MainActivity.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest._main +package com.tangem.devkit._main import android.content.res.Resources import android.os.Bundle @@ -12,7 +12,7 @@ import androidx.navigation.fragment.NavHostFragment import androidx.navigation.ui.AppBarConfiguration import androidx.navigation.ui.navigateUp import androidx.navigation.ui.setupWithNavController -import com.tangem.tangemtest.R +import com.tangem.devkit.R import ru.dev.gbixahue.eu4d.lib.android.global.log.Log /** diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_main/MainViewModel.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_main/MainViewModel.kt similarity index 95% rename from tangem-demo/src/main/java/com/tangem/tangemtest/_main/MainViewModel.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/_main/MainViewModel.kt index 3900d86530..6766c6d77f 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/_main/MainViewModel.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/_main/MainViewModel.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest._main +package com.tangem.devkit._main import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_main/entryPoint/ActionListFragment.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_main/entryPoint/ActionListFragment.kt similarity index 84% rename from tangem-demo/src/main/java/com/tangem/tangemtest/_main/entryPoint/ActionListFragment.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/_main/entryPoint/ActionListFragment.kt index 4e10211223..78af64f574 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/_main/entryPoint/ActionListFragment.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/_main/entryPoint/ActionListFragment.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest._main.entryPoint +package com.tangem.devkit._main.entryPoint import android.os.Bundle import android.view.View @@ -7,13 +7,13 @@ import androidx.lifecycle.Observer import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView -import com.tangem.tangemtest.R -import com.tangem.tangemtest._main.MainViewModel -import com.tangem.tangemtest.extensions.view.beginDelayedTransition -import com.tangem.tangemtest.ucase.getDefaultNavigationOptions -import com.tangem.tangemtest.ucase.resources.ActionType -import com.tangem.tangemtest.ucase.resources.MainResourceHolder -import com.tangem.tangemtest.ucase.ui.BaseFragment +import com.tangem.devkit.R +import com.tangem.devkit._main.MainViewModel +import com.tangem.devkit.extensions.view.beginDelayedTransition +import com.tangem.devkit.ucase.getDefaultNavigationOptions +import com.tangem.devkit.ucase.resources.ActionType +import com.tangem.devkit.ucase.resources.MainResourceHolder +import com.tangem.devkit.ucase.ui.BaseFragment import kotlinx.android.synthetic.main.fg_entry_point.* /** diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/_main/entryPoint/RvActions.kt b/tangem-devkit/src/main/java/com/tangem/devkit/_main/entryPoint/RvActions.kt similarity index 89% rename from tangem-demo/src/main/java/com/tangem/tangemtest/_main/entryPoint/RvActions.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/_main/entryPoint/RvActions.kt index 5433027e92..01162d2eee 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/_main/entryPoint/RvActions.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/_main/entryPoint/RvActions.kt @@ -1,14 +1,14 @@ -package com.tangem.tangemtest._main.entryPoint +package com.tangem.devkit._main.entryPoint import android.view.View import android.view.ViewGroup import android.widget.TextView import androidx.annotation.StringRes import androidx.recyclerview.widget.RecyclerView -import com.tangem.tangemtest.R -import com.tangem.tangemtest.ucase.resources.ActionRes -import com.tangem.tangemtest.ucase.resources.ActionType -import com.tangem.tangemtest.ucase.resources.MainResourceHolder +import com.tangem.devkit.R +import com.tangem.devkit.ucase.resources.ActionRes +import com.tangem.devkit.ucase.resources.ActionType +import com.tangem.devkit.ucase.resources.MainResourceHolder import ru.dev.gbixahue.eu4d.lib.android._android.views.inflate import ru.dev.gbixahue.eu4d.lib.android._android.views.recycler_view.RvBaseAdapter import ru.dev.gbixahue.eu4d.lib.android._android.views.recycler_view.RvBaseVH diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/commons/Abstractions.kt b/tangem-devkit/src/main/java/com/tangem/devkit/commons/Abstractions.kt similarity index 87% rename from tangem-demo/src/main/java/com/tangem/tangemtest/commons/Abstractions.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/commons/Abstractions.kt index 6c3b1abc26..3a1776e7c6 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/commons/Abstractions.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/commons/Abstractions.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest.commons +package com.tangem.devkit.commons /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/commons/DialogController.kt b/tangem-devkit/src/main/java/com/tangem/devkit/commons/DialogController.kt similarity index 98% rename from tangem-demo/src/main/java/com/tangem/tangemtest/commons/DialogController.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/commons/DialogController.kt index de7db7ae3e..5d4c924409 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/commons/DialogController.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/commons/DialogController.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest.commons +package com.tangem.devkit.commons import android.app.Activity import android.app.Dialog diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/commons/GlobalFunctions.kt b/tangem-devkit/src/main/java/com/tangem/devkit/commons/GlobalFunctions.kt similarity index 83% rename from tangem-demo/src/main/java/com/tangem/tangemtest/commons/GlobalFunctions.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/commons/GlobalFunctions.kt index 59ae0da2b9..0f80ba2e83 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/commons/GlobalFunctions.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/commons/GlobalFunctions.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest.commons +package com.tangem.devkit.commons /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/commons/Logger.kt b/tangem-devkit/src/main/java/com/tangem/devkit/commons/Logger.kt similarity index 77% rename from tangem-demo/src/main/java/com/tangem/tangemtest/commons/Logger.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/commons/Logger.kt index 795c23c726..94e709455a 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/commons/Logger.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/commons/Logger.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest.commons +package com.tangem.devkit.commons import ru.dev.gbixahue.eu4d.lib.android.global.log.TagLogger diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/commons/view/MultiActionView.kt b/tangem-devkit/src/main/java/com/tangem/devkit/commons/view/MultiActionView.kt similarity index 90% rename from tangem-demo/src/main/java/com/tangem/tangemtest/commons/view/MultiActionView.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/commons/view/MultiActionView.kt index ce21b9fae6..4e134e0336 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/commons/view/MultiActionView.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/commons/view/MultiActionView.kt @@ -1,10 +1,10 @@ -package com.tangem.tangemtest.commons.view +package com.tangem.devkit.commons.view import android.widget.TextView import androidx.annotation.StringRes -import com.tangem.tangemtest._arch.structure.Id -import com.tangem.tangemtest._arch.structure.StringId -import com.tangem.tangemtest._arch.structure.abstraction.SafeValueChanged +import com.tangem.devkit._arch.structure.Id +import com.tangem.devkit._arch.structure.StringId +import com.tangem.devkit._arch.structure.abstraction.SafeValueChanged import ru.dev.gbixahue.eu4d.lib.android.global.log.Log import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/extensions/AndroidComponents.kt b/tangem-devkit/src/main/java/com/tangem/devkit/extensions/AndroidComponents.kt similarity index 92% rename from tangem-demo/src/main/java/com/tangem/tangemtest/extensions/AndroidComponents.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/extensions/AndroidComponents.kt index 3a9205574c..032e162d53 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/extensions/AndroidComponents.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/extensions/AndroidComponents.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest.extensions +package com.tangem.devkit.extensions import android.content.Intent import androidx.activity.ComponentActivity diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/extensions/CardConfig.kt b/tangem-devkit/src/main/java/com/tangem/devkit/extensions/CardConfig.kt similarity index 99% rename from tangem-demo/src/main/java/com/tangem/tangemtest/extensions/CardConfig.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/extensions/CardConfig.kt index ab8c84334b..fb3fefaeed 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/extensions/CardConfig.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/extensions/CardConfig.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest.extensions +package com.tangem.devkit.extensions import android.app.Application import android.content.Context diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/extensions/List.kt b/tangem-devkit/src/main/java/com/tangem/devkit/extensions/List.kt similarity index 90% rename from tangem-demo/src/main/java/com/tangem/tangemtest/extensions/List.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/extensions/List.kt index d637d6f89a..f40be815b4 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/extensions/List.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/extensions/List.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest.extensions +package com.tangem.devkit.extensions /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/extensions/view/Transitions.kt b/tangem-devkit/src/main/java/com/tangem/devkit/extensions/view/Transitions.kt similarity index 87% rename from tangem-demo/src/main/java/com/tangem/tangemtest/extensions/view/Transitions.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/extensions/view/Transitions.kt index d58f12aa97..1a6762eca0 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/extensions/view/Transitions.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/extensions/view/Transitions.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest.extensions.view +package com.tangem.devkit.extensions.view import android.view.ViewGroup import androidx.transition.AutoTransition diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/NavigationOp.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/NavigationOp.kt similarity index 85% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/NavigationOp.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/NavigationOp.kt index fa588f2b68..c006bf6aa4 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/NavigationOp.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/NavigationOp.kt @@ -1,8 +1,8 @@ -package com.tangem.tangemtest.ucase +package com.tangem.devkit.ucase import androidx.navigation.NavOptions import androidx.navigation.navOptions -import com.tangem.tangemtest.R +import com.tangem.devkit.R /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/Action.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/Action.kt similarity index 72% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/Action.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/Action.kt index e8358b8071..f0c92ad43e 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/Action.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/Action.kt @@ -1,14 +1,14 @@ -package com.tangem.tangemtest.ucase.domain.actions +package com.tangem.devkit.ucase.domain.actions import com.tangem.TangemSdk import com.tangem.common.CompletionResult -import com.tangem.tangemtest._arch.structure.Id -import com.tangem.tangemtest._arch.structure.Payload -import com.tangem.tangemtest._arch.structure.PayloadHolder -import com.tangem.tangemtest._arch.structure.abstraction.Item -import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback -import com.tangem.tangemtest.ucase.domain.paramsManager.triggers.afterAction.AfterActionModification -import com.tangem.tangemtest.ucase.domain.paramsManager.triggers.changeConsequence.ItemsChangeConsequence +import com.tangem.devkit._arch.structure.Id +import com.tangem.devkit._arch.structure.Payload +import com.tangem.devkit._arch.structure.PayloadHolder +import com.tangem.devkit._arch.structure.abstraction.Item +import com.tangem.devkit.ucase.domain.paramsManager.ActionCallback +import com.tangem.devkit.ucase.domain.paramsManager.triggers.afterAction.AfterActionModification +import com.tangem.devkit.ucase.domain.paramsManager.triggers.changeConsequence.ItemsChangeConsequence /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/DepersonalizeAction.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/DepersonalizeAction.kt similarity index 67% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/DepersonalizeAction.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/DepersonalizeAction.kt index 5dd9d80fc1..d938eb85ad 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/DepersonalizeAction.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/DepersonalizeAction.kt @@ -1,10 +1,10 @@ -package com.tangem.tangemtest.ucase.domain.actions +package com.tangem.devkit.ucase.domain.actions -import com.tangem.tangemtest._arch.structure.Id -import com.tangem.tangemtest._arch.structure.PayloadHolder -import com.tangem.tangemtest._arch.structure.abstraction.findItem -import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback -import com.tangem.tangemtest.ucase.variants.TlvId +import com.tangem.devkit._arch.structure.Id +import com.tangem.devkit._arch.structure.PayloadHolder +import com.tangem.devkit._arch.structure.abstraction.findItem +import com.tangem.devkit.ucase.domain.paramsManager.ActionCallback +import com.tangem.devkit.ucase.variants.TlvId /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/PersonalizeAction.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/PersonalizeAction.kt similarity index 66% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/PersonalizeAction.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/PersonalizeAction.kt index 457b4baac3..b289159d6c 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/PersonalizeAction.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/PersonalizeAction.kt @@ -1,19 +1,19 @@ -package com.tangem.tangemtest.ucase.domain.actions +package com.tangem.devkit.ucase.domain.actions -import com.tangem.tangemtest._arch.structure.PayloadHolder -import com.tangem.tangemtest._arch.structure.abstraction.Item -import com.tangem.tangemtest._arch.structure.abstraction.findItem -import com.tangem.tangemtest._arch.structure.impl.EditTextItem -import com.tangem.tangemtest._arch.structure.impl.NumberItem -import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback -import com.tangem.tangemtest.ucase.domain.paramsManager.PayloadKey -import com.tangem.tangemtest.ucase.tunnel.ActionView -import com.tangem.tangemtest.ucase.tunnel.ItemError -import com.tangem.tangemtest.ucase.variants.personalize.CardNumber -import com.tangem.tangemtest.ucase.variants.personalize.converter.PersonalizationConfigConverter -import com.tangem.tangemtest.ucase.variants.personalize.converter.PersonalizationConfigToCardConfig -import com.tangem.tangemtest.ucase.variants.personalize.dto.DefaultPersonalizationParams -import com.tangem.tangemtest.ucase.variants.personalize.dto.PersonalizationConfig +import com.tangem.devkit._arch.structure.PayloadHolder +import com.tangem.devkit._arch.structure.abstraction.Item +import com.tangem.devkit._arch.structure.abstraction.findItem +import com.tangem.devkit._arch.structure.impl.EditTextItem +import com.tangem.devkit._arch.structure.impl.NumberItem +import com.tangem.devkit.ucase.domain.paramsManager.ActionCallback +import com.tangem.devkit.ucase.domain.paramsManager.PayloadKey +import com.tangem.devkit.ucase.tunnel.ActionView +import com.tangem.devkit.ucase.tunnel.ItemError +import com.tangem.devkit.ucase.variants.personalize.CardNumber +import com.tangem.devkit.ucase.variants.personalize.converter.PersonalizationConfigConverter +import com.tangem.devkit.ucase.variants.personalize.converter.PersonalizationConfigToCardConfig +import com.tangem.devkit.ucase.variants.personalize.dto.DefaultPersonalizationParams +import com.tangem.devkit.ucase.variants.personalize.dto.PersonalizationConfig import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf /** diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/ScanAction.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/ScanAction.kt similarity index 50% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/ScanAction.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/ScanAction.kt index 213fea8b63..5e4e42aa08 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/ScanAction.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/ScanAction.kt @@ -1,8 +1,8 @@ -package com.tangem.tangemtest.ucase.domain.actions +package com.tangem.devkit.ucase.domain.actions -import com.tangem.tangemtest._arch.structure.PayloadHolder -import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback -import com.tangem.tangemtest.ucase.domain.paramsManager.triggers.afterAction.AfterScanModifier +import com.tangem.devkit._arch.structure.PayloadHolder +import com.tangem.devkit.ucase.domain.paramsManager.ActionCallback +import com.tangem.devkit.ucase.domain.paramsManager.triggers.afterAction.AfterScanModifier /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/SignAction.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/SignAction.kt similarity index 71% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/SignAction.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/SignAction.kt index f44f36d1ee..a1cf64ae35 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/actions/SignAction.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/actions/SignAction.kt @@ -1,10 +1,10 @@ -package com.tangem.tangemtest.ucase.domain.actions +package com.tangem.devkit.ucase.domain.actions -import com.tangem.tangemtest._arch.structure.Id -import com.tangem.tangemtest._arch.structure.PayloadHolder -import com.tangem.tangemtest._arch.structure.abstraction.findItem -import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback -import com.tangem.tangemtest.ucase.variants.TlvId +import com.tangem.devkit._arch.structure.Id +import com.tangem.devkit._arch.structure.PayloadHolder +import com.tangem.devkit._arch.structure.abstraction.findItem +import com.tangem.devkit.ucase.domain.paramsManager.ActionCallback +import com.tangem.devkit.ucase.variants.TlvId import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf /** diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/ItemsManager.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/ItemsManager.kt similarity index 73% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/ItemsManager.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/ItemsManager.kt index 20d2ed3eb8..35022b0af4 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/ItemsManager.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/ItemsManager.kt @@ -1,12 +1,12 @@ -package com.tangem.tangemtest.ucase.domain.paramsManager +package com.tangem.devkit.ucase.domain.paramsManager import com.tangem.TangemSdk import com.tangem.common.CompletionResult -import com.tangem.tangemtest._arch.structure.Id -import com.tangem.tangemtest._arch.structure.Payload -import com.tangem.tangemtest._arch.structure.PayloadHolder -import com.tangem.tangemtest._arch.structure.abstraction.Item -import com.tangem.tangemtest.ucase.domain.paramsManager.triggers.changeConsequence.ItemsChangeConsequence +import com.tangem.devkit._arch.structure.Id +import com.tangem.devkit._arch.structure.Payload +import com.tangem.devkit._arch.structure.PayloadHolder +import com.tangem.devkit._arch.structure.abstraction.Item +import com.tangem.devkit.ucase.domain.paramsManager.triggers.changeConsequence.ItemsChangeConsequence typealias ActionResponse = CompletionResult<*> typealias AffectedList = List diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/BaseItemsManager.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/managers/BaseItemsManager.kt similarity index 72% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/BaseItemsManager.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/managers/BaseItemsManager.kt index a3308d623d..7fcba9d02c 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/BaseItemsManager.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/managers/BaseItemsManager.kt @@ -1,18 +1,18 @@ -package com.tangem.tangemtest.ucase.domain.paramsManager.managers +package com.tangem.devkit.ucase.domain.paramsManager.managers import androidx.lifecycle.LifecycleObserver import com.tangem.TangemSdk -import com.tangem.tangemtest._arch.structure.Id -import com.tangem.tangemtest._arch.structure.Payload -import com.tangem.tangemtest._arch.structure.abstraction.Item -import com.tangem.tangemtest._arch.structure.abstraction.findItem -import com.tangem.tangemtest._arch.structure.abstraction.iterate -import com.tangem.tangemtest.ucase.domain.actions.Action -import com.tangem.tangemtest.ucase.domain.actions.AttrForAction -import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback -import com.tangem.tangemtest.ucase.domain.paramsManager.AffectedItemsCallback -import com.tangem.tangemtest.ucase.domain.paramsManager.ItemsManager -import com.tangem.tangemtest.ucase.domain.paramsManager.triggers.changeConsequence.ItemsChangeConsequence +import com.tangem.devkit._arch.structure.Id +import com.tangem.devkit._arch.structure.Payload +import com.tangem.devkit._arch.structure.abstraction.Item +import com.tangem.devkit._arch.structure.abstraction.findItem +import com.tangem.devkit._arch.structure.abstraction.iterate +import com.tangem.devkit.ucase.domain.actions.Action +import com.tangem.devkit.ucase.domain.actions.AttrForAction +import com.tangem.devkit.ucase.domain.paramsManager.ActionCallback +import com.tangem.devkit.ucase.domain.paramsManager.AffectedItemsCallback +import com.tangem.devkit.ucase.domain.paramsManager.ItemsManager +import com.tangem.devkit.ucase.domain.paramsManager.triggers.changeConsequence.ItemsChangeConsequence import ru.dev.gbixahue.eu4d.lib.android.global.log.Log /** diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/PersonalizationItemsManager.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/managers/PersonalizationItemsManager.kt similarity index 64% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/PersonalizationItemsManager.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/managers/PersonalizationItemsManager.kt index 4a9c0b0572..a8125f2a51 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/PersonalizationItemsManager.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/managers/PersonalizationItemsManager.kt @@ -1,13 +1,13 @@ -package com.tangem.tangemtest.ucase.domain.paramsManager.managers +package com.tangem.devkit.ucase.domain.paramsManager.managers import androidx.lifecycle.Lifecycle import androidx.lifecycle.OnLifecycleEvent import com.tangem.TangemSdk -import com.tangem.tangemtest.commons.Store -import com.tangem.tangemtest.ucase.domain.actions.PersonalizeAction -import com.tangem.tangemtest.ucase.domain.paramsManager.ActionCallback -import com.tangem.tangemtest.ucase.variants.personalize.converter.PersonalizationConfigConverter -import com.tangem.tangemtest.ucase.variants.personalize.dto.PersonalizationConfig +import com.tangem.devkit.commons.Store +import com.tangem.devkit.ucase.domain.actions.PersonalizeAction +import com.tangem.devkit.ucase.domain.paramsManager.ActionCallback +import com.tangem.devkit.ucase.variants.personalize.converter.PersonalizationConfigConverter +import com.tangem.devkit.ucase.variants.personalize.dto.PersonalizationConfig /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/SimpleManagers.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/managers/SimpleManagers.kt similarity index 53% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/SimpleManagers.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/managers/SimpleManagers.kt index c892b6761b..97e1a9f2db 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/managers/SimpleManagers.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/managers/SimpleManagers.kt @@ -1,11 +1,11 @@ -package com.tangem.tangemtest.ucase.domain.paramsManager.managers +package com.tangem.devkit.ucase.domain.paramsManager.managers -import com.tangem.tangemtest._arch.structure.impl.EditTextItem -import com.tangem.tangemtest.ucase.domain.actions.DepersonalizeAction -import com.tangem.tangemtest.ucase.domain.actions.ScanAction -import com.tangem.tangemtest.ucase.domain.actions.SignAction -import com.tangem.tangemtest.ucase.domain.paramsManager.triggers.changeConsequence.SignScanConsequence -import com.tangem.tangemtest.ucase.variants.TlvId +import com.tangem.devkit._arch.structure.impl.EditTextItem +import com.tangem.devkit.ucase.domain.actions.DepersonalizeAction +import com.tangem.devkit.ucase.domain.actions.ScanAction +import com.tangem.devkit.ucase.domain.actions.SignAction +import com.tangem.devkit.ucase.domain.paramsManager.triggers.changeConsequence.SignScanConsequence +import com.tangem.devkit.ucase.variants.TlvId /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/triggers/afterAction/AfterActionModifiers.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/triggers/afterAction/AfterActionModifiers.kt similarity index 66% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/triggers/afterAction/AfterActionModifiers.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/triggers/afterAction/AfterActionModifiers.kt index 48ab757ff0..74940b79d1 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/triggers/afterAction/AfterActionModifiers.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/triggers/afterAction/AfterActionModifiers.kt @@ -1,8 +1,8 @@ -package com.tangem.tangemtest.ucase.domain.paramsManager.triggers.afterAction +package com.tangem.devkit.ucase.domain.paramsManager.triggers.afterAction import com.tangem.common.CompletionResult -import com.tangem.tangemtest._arch.structure.PayloadHolder -import com.tangem.tangemtest._arch.structure.abstraction.Item +import com.tangem.devkit._arch.structure.PayloadHolder +import com.tangem.devkit._arch.structure.abstraction.Item /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/triggers/afterAction/AfterScanModifier.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/triggers/afterAction/AfterScanModifier.kt similarity index 72% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/triggers/afterAction/AfterScanModifier.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/triggers/afterAction/AfterScanModifier.kt index f63694fcc7..219f6a72c9 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/triggers/afterAction/AfterScanModifier.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/triggers/afterAction/AfterScanModifier.kt @@ -1,15 +1,15 @@ -package com.tangem.tangemtest.ucase.domain.paramsManager.triggers.afterAction +package com.tangem.devkit.ucase.domain.paramsManager.triggers.afterAction import com.tangem.commands.Card import com.tangem.commands.CardStatus import com.tangem.common.CompletionResult -import com.tangem.tangemtest._arch.structure.PayloadHolder -import com.tangem.tangemtest._arch.structure.abstraction.Item -import com.tangem.tangemtest._arch.structure.abstraction.findItem -import com.tangem.tangemtest.ucase.domain.paramsManager.PayloadKey -import com.tangem.tangemtest.ucase.tunnel.ActionView -import com.tangem.tangemtest.ucase.tunnel.CardError -import com.tangem.tangemtest.ucase.variants.TlvId +import com.tangem.devkit._arch.structure.PayloadHolder +import com.tangem.devkit._arch.structure.abstraction.Item +import com.tangem.devkit._arch.structure.abstraction.findItem +import com.tangem.devkit.ucase.domain.paramsManager.PayloadKey +import com.tangem.devkit.ucase.tunnel.ActionView +import com.tangem.devkit.ucase.tunnel.CardError +import com.tangem.devkit.ucase.variants.TlvId import ru.dev.gbixahue.eu4d.lib.android.global.threading.postUI diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/triggers/changeConsequence/ParamChangeConsequence.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/triggers/changeConsequence/ParamChangeConsequence.kt similarity index 78% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/triggers/changeConsequence/ParamChangeConsequence.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/triggers/changeConsequence/ParamChangeConsequence.kt index bb771e86f6..5a455a3989 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/paramsManager/triggers/changeConsequence/ParamChangeConsequence.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/triggers/changeConsequence/ParamChangeConsequence.kt @@ -1,16 +1,16 @@ -package com.tangem.tangemtest.ucase.domain.paramsManager.triggers.changeConsequence +package com.tangem.devkit.ucase.domain.paramsManager.triggers.changeConsequence import com.tangem.commands.Card import com.tangem.commands.EllipticCurve import com.tangem.common.extensions.calculateSha256 import com.tangem.common.extensions.calculateSha512 import com.tangem.common.extensions.toHexString -import com.tangem.tangemtest._arch.structure.PayloadHolder -import com.tangem.tangemtest._arch.structure.abstraction.Item -import com.tangem.tangemtest._arch.structure.abstraction.findItem -import com.tangem.tangemtest.ucase.domain.paramsManager.PayloadKey -import com.tangem.tangemtest.ucase.tunnel.ActionView -import com.tangem.tangemtest.ucase.variants.TlvId +import com.tangem.devkit._arch.structure.PayloadHolder +import com.tangem.devkit._arch.structure.abstraction.Item +import com.tangem.devkit._arch.structure.abstraction.findItem +import com.tangem.devkit.ucase.domain.paramsManager.PayloadKey +import com.tangem.devkit.ucase.tunnel.ActionView +import com.tangem.devkit.ucase.variants.TlvId import ru.dev.gbixahue.eu4d.lib.android.global.threading.postUI /** diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/responses/ResponseJsonConverter.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/responses/ResponseJsonConverter.kt similarity index 97% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/responses/ResponseJsonConverter.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/responses/ResponseJsonConverter.kt index 5533c3682d..06ca8702e5 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/domain/responses/ResponseJsonConverter.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/responses/ResponseJsonConverter.kt @@ -1,9 +1,9 @@ -package com.tangem.tangemtest.ucase.domain.responses +package com.tangem.devkit.ucase.domain.responses import com.google.gson.* import com.tangem.commands.* import com.tangem.common.extensions.toHexString -import com.tangem.tangemtest.extensions.print +import com.tangem.devkit.extensions.print import java.lang.reflect.Type import java.text.DateFormat import java.util.* diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/Ids.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/Ids.kt similarity index 75% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/Ids.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/Ids.kt index e686f0f8c3..1daedb6326 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/Ids.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/Ids.kt @@ -1,6 +1,6 @@ -package com.tangem.tangemtest.ucase.resources +package com.tangem.devkit.ucase.resources -import com.tangem.tangemtest._arch.structure.Id +import com.tangem.devkit._arch.structure.Id /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/MainResourceHolder.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/MainResourceHolder.kt similarity index 68% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/MainResourceHolder.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/MainResourceHolder.kt index 86c7454365..e62d993f69 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/MainResourceHolder.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/MainResourceHolder.kt @@ -1,14 +1,14 @@ -package com.tangem.tangemtest.ucase.resources +package com.tangem.devkit.ucase.resources -import com.tangem.tangemtest.AppTangemDemo -import com.tangem.tangemtest.R -import com.tangem.tangemtest._arch.structure.Id -import com.tangem.tangemtest._arch.structure.StringId -import com.tangem.tangemtest._arch.structure.StringResId -import com.tangem.tangemtest.ucase.resources.initializers.ActionResources -import com.tangem.tangemtest.ucase.resources.initializers.PersonalizationResources -import com.tangem.tangemtest.ucase.resources.initializers.ResponseResources -import com.tangem.tangemtest.ucase.resources.initializers.TlvResources +import com.tangem.devkit.AppTangemDemo +import com.tangem.devkit.R +import com.tangem.devkit._arch.structure.Id +import com.tangem.devkit._arch.structure.StringId +import com.tangem.devkit._arch.structure.StringResId +import com.tangem.devkit.ucase.resources.initializers.ActionResources +import com.tangem.devkit.ucase.resources.initializers.PersonalizationResources +import com.tangem.devkit.ucase.resources.initializers.ResponseResources +import com.tangem.devkit.ucase.resources.initializers.TlvResources import ru.dev.gbixahue.eu4d.lib.kotlin.common.BaseTypedHolder /** diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/ResourseTypes.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/ResourseTypes.kt similarity index 85% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/ResourseTypes.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/ResourseTypes.kt index 72fad2464a..8ba64f087d 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/ResourseTypes.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/ResourseTypes.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest.ucase.resources +package com.tangem.devkit.ucase.resources /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/ActionResources.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/initializers/ActionResources.kt similarity index 88% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/ActionResources.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/initializers/ActionResources.kt index 053710adf7..2d7adcea1c 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/ActionResources.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/initializers/ActionResources.kt @@ -1,10 +1,10 @@ -package com.tangem.tangemtest.ucase.resources.initializers +package com.tangem.devkit.ucase.resources.initializers -import com.tangem.tangemtest.R -import com.tangem.tangemtest._arch.structure.Id -import com.tangem.tangemtest.ucase.resources.ActionRes -import com.tangem.tangemtest.ucase.resources.ActionType -import com.tangem.tangemtest.ucase.resources.ResourceHolder +import com.tangem.devkit.R +import com.tangem.devkit._arch.structure.Id +import com.tangem.devkit.ucase.resources.ActionRes +import com.tangem.devkit.ucase.resources.ActionType +import com.tangem.devkit.ucase.resources.ResourceHolder /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/PersonalizationResources.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/initializers/PersonalizationResources.kt similarity index 97% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/PersonalizationResources.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/initializers/PersonalizationResources.kt index a45bc55ed4..f92eee7e95 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/PersonalizationResources.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/initializers/PersonalizationResources.kt @@ -1,10 +1,10 @@ -package com.tangem.tangemtest.ucase.resources.initializers +package com.tangem.devkit.ucase.resources.initializers -import com.tangem.tangemtest.R -import com.tangem.tangemtest._arch.structure.Id -import com.tangem.tangemtest.ucase.resources.ResourceHolder -import com.tangem.tangemtest.ucase.resources.Resources -import com.tangem.tangemtest.ucase.variants.personalize.* +import com.tangem.devkit.R +import com.tangem.devkit._arch.structure.Id +import com.tangem.devkit.ucase.resources.ResourceHolder +import com.tangem.devkit.ucase.resources.Resources +import com.tangem.devkit.ucase.variants.personalize.* import ru.dev.gbixahue.eu4d.lib.kotlin.common.TypedHolder /** diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/ResponseResources.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/initializers/ResponseResources.kt similarity index 92% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/ResponseResources.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/initializers/ResponseResources.kt index a199a04a26..37a044c9fa 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/ResponseResources.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/initializers/ResponseResources.kt @@ -1,12 +1,12 @@ -package com.tangem.tangemtest.ucase.resources.initializers +package com.tangem.devkit.ucase.resources.initializers -import com.tangem.tangemtest.R -import com.tangem.tangemtest.ucase.resources.MainResourceHolder -import com.tangem.tangemtest.ucase.resources.Resources -import com.tangem.tangemtest.ucase.variants.responses.CardDataId -import com.tangem.tangemtest.ucase.variants.responses.CardId -import com.tangem.tangemtest.ucase.variants.responses.DepersonalizeId -import com.tangem.tangemtest.ucase.variants.responses.SignId +import com.tangem.devkit.R +import com.tangem.devkit.ucase.resources.MainResourceHolder +import com.tangem.devkit.ucase.resources.Resources +import com.tangem.devkit.ucase.variants.responses.CardDataId +import com.tangem.devkit.ucase.variants.responses.CardId +import com.tangem.devkit.ucase.variants.responses.DepersonalizeId +import com.tangem.devkit.ucase.variants.responses.SignId /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/TlvResources.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/initializers/TlvResources.kt similarity index 61% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/TlvResources.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/initializers/TlvResources.kt index 4de4ab008f..a1b64dd45d 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/resources/initializers/TlvResources.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/resources/initializers/TlvResources.kt @@ -1,9 +1,9 @@ -package com.tangem.tangemtest.ucase.resources.initializers +package com.tangem.devkit.ucase.resources.initializers -import com.tangem.tangemtest.R -import com.tangem.tangemtest.ucase.resources.MainResourceHolder -import com.tangem.tangemtest.ucase.resources.Resources -import com.tangem.tangemtest.ucase.variants.TlvId +import com.tangem.devkit.R +import com.tangem.devkit.ucase.resources.MainResourceHolder +import com.tangem.devkit.ucase.resources.Resources +import com.tangem.devkit.ucase.variants.TlvId /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/tunnel/Errors.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/tunnel/Errors.kt similarity index 65% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/tunnel/Errors.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/tunnel/Errors.kt index 8ae2a5370a..72cbde4699 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/tunnel/Errors.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/tunnel/Errors.kt @@ -1,6 +1,6 @@ -package com.tangem.tangemtest.ucase.tunnel +package com.tangem.devkit.ucase.tunnel -import com.tangem.tangemtest._arch.structure.Id +import com.tangem.devkit._arch.structure.Id /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/tunnel/ViewScreen.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/tunnel/ViewScreen.kt similarity index 81% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/tunnel/ViewScreen.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/tunnel/ViewScreen.kt index 53ab0b4883..64aa754c6b 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/tunnel/ViewScreen.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/tunnel/ViewScreen.kt @@ -1,7 +1,7 @@ -package com.tangem.tangemtest.ucase.tunnel +package com.tangem.devkit.ucase.tunnel import com.google.android.material.snackbar.Snackbar -import com.tangem.tangemtest._arch.structure.Id +import com.tangem.devkit._arch.structure.Id interface SnackbarHolder { fun showSnackbar(message: String, length: Int = Snackbar.LENGTH_SHORT) diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/ActionViewModel.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/ActionViewModel.kt similarity index 89% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/ActionViewModel.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/ActionViewModel.kt index 80e1840a9d..7774441903 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/ActionViewModel.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/ActionViewModel.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest.ucase.ui +package com.tangem.devkit.ucase.ui import android.view.View import androidx.annotation.UiThread @@ -9,16 +9,16 @@ import com.tangem.TangemSdk import com.tangem.commands.Card import com.tangem.commands.CommandResponse import com.tangem.common.CompletionResult -import com.tangem.tangemtest._arch.SingleLiveEvent -import com.tangem.tangemtest._arch.structure.Id -import com.tangem.tangemtest._arch.structure.Payload -import com.tangem.tangemtest._arch.structure.abstraction.Item -import com.tangem.tangemtest._arch.structure.abstraction.iterate -import com.tangem.tangemtest.ucase.domain.paramsManager.ItemsManager -import com.tangem.tangemtest.ucase.domain.responses.ResponseJsonConverter -import com.tangem.tangemtest.ucase.resources.ActionType -import com.tangem.tangemtest.ucase.tunnel.ViewScreen -import com.tangem.tangemtest.ucase.variants.personalize.converter.ItemTypes +import com.tangem.devkit._arch.SingleLiveEvent +import com.tangem.devkit._arch.structure.Id +import com.tangem.devkit._arch.structure.Payload +import com.tangem.devkit._arch.structure.abstraction.Item +import com.tangem.devkit._arch.structure.abstraction.iterate +import com.tangem.devkit.ucase.domain.paramsManager.ItemsManager +import com.tangem.devkit.ucase.domain.responses.ResponseJsonConverter +import com.tangem.devkit.ucase.resources.ActionType +import com.tangem.devkit.ucase.tunnel.ViewScreen +import com.tangem.devkit.ucase.variants.personalize.converter.ItemTypes import ru.dev.gbixahue.eu4d.lib.android.global.log.Log /** diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/BaseCardActionFragment.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/BaseCardActionFragment.kt similarity index 92% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/BaseCardActionFragment.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/BaseCardActionFragment.kt index 32c0746431..97bb78f808 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/BaseCardActionFragment.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/BaseCardActionFragment.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest.ucase.ui +package com.tangem.devkit.ucase.ui import android.os.Bundle import android.view.LayoutInflater @@ -13,15 +13,15 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton import com.tangem.TangemSdk import com.tangem.commands.Card import com.tangem.commands.CommandResponse +import com.tangem.devkit.R +import com.tangem.devkit._arch.structure.Id +import com.tangem.devkit._main.MainViewModel +import com.tangem.devkit.ucase.domain.paramsManager.ItemsManager +import com.tangem.devkit.ucase.domain.paramsManager.PayloadKey +import com.tangem.devkit.ucase.tunnel.ActionView +import com.tangem.devkit.ucase.tunnel.CardError +import com.tangem.devkit.ucase.ui.widgets.ParameterWidget import com.tangem.tangem_sdk_new.extensions.init -import com.tangem.tangemtest.R -import com.tangem.tangemtest._arch.structure.Id -import com.tangem.tangemtest._main.MainViewModel -import com.tangem.tangemtest.ucase.domain.paramsManager.ItemsManager -import com.tangem.tangemtest.ucase.domain.paramsManager.PayloadKey -import com.tangem.tangemtest.ucase.tunnel.ActionView -import com.tangem.tangemtest.ucase.tunnel.CardError -import com.tangem.tangemtest.ucase.ui.widgets.ParameterWidget import ru.dev.gbixahue.eu4d.lib.android._android.views.enable import ru.dev.gbixahue.eu4d.lib.android.global.log.Log diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/BaseFragment.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/BaseFragment.kt similarity index 88% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/BaseFragment.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/BaseFragment.kt index 29dfeec6be..e3b6f16cad 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/BaseFragment.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/BaseFragment.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest.ucase.ui +package com.tangem.devkit.ucase.ui import android.os.Bundle import android.view.LayoutInflater @@ -8,8 +8,8 @@ import androidx.fragment.app.Fragment import androidx.navigation.NavOptions import androidx.navigation.fragment.NavHostFragment.findNavController import com.google.android.material.snackbar.Snackbar -import com.tangem.tangemtest.ucase.getDefaultNavigationOptions -import com.tangem.tangemtest.ucase.tunnel.SnackbarHolder +import com.tangem.devkit.ucase.getDefaultNavigationOptions +import com.tangem.devkit.ucase.tunnel.SnackbarHolder import ru.dev.gbixahue.eu4d.lib.kotlin.common.LayoutHolder /** diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/widgets/ParameterWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/widgets/ParameterWidget.kt similarity index 89% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/widgets/ParameterWidget.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/widgets/ParameterWidget.kt index ab01e1a692..1187a6d9db 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/ui/widgets/ParameterWidget.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/widgets/ParameterWidget.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest.ucase.ui.widgets +package com.tangem.devkit.ucase.ui.widgets import android.text.Editable import android.text.TextWatcher @@ -8,14 +8,14 @@ import android.widget.Button import android.widget.TextView import com.google.android.material.textfield.TextInputEditText import com.google.android.material.textfield.TextInputLayout -import com.tangem.tangemtest.R -import com.tangem.tangemtest._arch.structure.Id -import com.tangem.tangemtest._arch.structure.abstraction.Item -import com.tangem.tangemtest._arch.structure.impl.EditTextItem -import com.tangem.tangemtest.extensions.view.beginDelayedTransition -import com.tangem.tangemtest.ucase.resources.ActionType -import com.tangem.tangemtest.ucase.resources.MainResourceHolder -import com.tangem.tangemtest.ucase.resources.Resources +import com.tangem.devkit.R +import com.tangem.devkit._arch.structure.Id +import com.tangem.devkit._arch.structure.abstraction.Item +import com.tangem.devkit._arch.structure.impl.EditTextItem +import com.tangem.devkit.extensions.view.beginDelayedTransition +import com.tangem.devkit.ucase.resources.ActionType +import com.tangem.devkit.ucase.resources.MainResourceHolder +import com.tangem.devkit.ucase.resources.Resources import ru.dev.gbixahue.eu4d.lib.android.global.log.Log import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/Ids.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/Ids.kt new file mode 100644 index 0000000000..e372276e8a --- /dev/null +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/Ids.kt @@ -0,0 +1,11 @@ +package com.tangem.devkit.ucase.variants + +import com.tangem.devkit._arch.structure.Id + +/** +[REDACTED_AUTHOR] + */ +enum class TlvId : Id { + CardId, + TransactionOutHash, +} \ No newline at end of file diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/depersonalize/ui/DepersonalizeActionFragment.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/depersonalize/ui/DepersonalizeActionFragment.kt new file mode 100644 index 0000000000..802ba1e807 --- /dev/null +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/depersonalize/ui/DepersonalizeActionFragment.kt @@ -0,0 +1,13 @@ +package com.tangem.devkit.ucase.variants.depersonalize.ui + +import com.tangem.devkit.ucase.domain.paramsManager.ItemsManager +import com.tangem.devkit.ucase.domain.paramsManager.managers.DepersonalizeItemsManager +import com.tangem.devkit.ucase.ui.BaseCardActionFragment + +/** +[REDACTED_AUTHOR] + */ +class DepersonalizeActionFragment : BaseCardActionFragment() { + + override val itemsManager: ItemsManager by lazy { DepersonalizeItemsManager() } +} \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/Ids.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/Ids.kt similarity index 94% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/Ids.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/Ids.kt index 6305b68975..2e10c89ab8 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/Ids.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/Ids.kt @@ -1,6 +1,6 @@ -package com.tangem.tangemtest.ucase.variants.personalize +package com.tangem.devkit.ucase.variants.personalize -import com.tangem.tangemtest._arch.structure.Id +import com.tangem.devkit._arch.structure.Id /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/PersonalizationConfigStore.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/PersonalizationConfigStore.kt similarity index 85% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/PersonalizationConfigStore.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/PersonalizationConfigStore.kt index 9c774a8071..a0c9435a4f 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/PersonalizationConfigStore.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/PersonalizationConfigStore.kt @@ -1,13 +1,13 @@ -package com.tangem.tangemtest.ucase.variants.personalize +package com.tangem.devkit.ucase.variants.personalize import android.content.Context import android.content.SharedPreferences import androidx.core.content.edit import com.google.gson.Gson -import com.tangem.tangemtest.AppTangemDemo -import com.tangem.tangemtest.commons.KeyedStore -import com.tangem.tangemtest.commons.Store -import com.tangem.tangemtest.ucase.variants.personalize.dto.PersonalizationConfig +import com.tangem.devkit.AppTangemDemo +import com.tangem.devkit.commons.KeyedStore +import com.tangem.devkit.commons.Store +import com.tangem.devkit.ucase.variants.personalize.dto.PersonalizationConfig class PersonalizationConfigStore(context: Context) : Store, KeyedStore { diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/DefaultValues.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/DefaultValues.kt similarity index 95% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/DefaultValues.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/DefaultValues.kt index 2f406d98c3..bb3edb89e9 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/DefaultValues.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/DefaultValues.kt @@ -1,10 +1,10 @@ -package com.tangem.tangemtest.ucase.variants.personalize.converter +package com.tangem.devkit.ucase.variants.personalize.converter import com.tangem.commands.EllipticCurve -import com.tangem.tangemtest._arch.structure.Id -import com.tangem.tangemtest._arch.structure.abstraction.KeyValue -import com.tangem.tangemtest.ucase.variants.personalize.* -import com.tangem.tangemtest.ucase.variants.personalize.dto.PersonalizationConfig +import com.tangem.devkit._arch.structure.Id +import com.tangem.devkit._arch.structure.abstraction.KeyValue +import com.tangem.devkit.ucase.variants.personalize.* +import com.tangem.devkit.ucase.variants.personalize.dto.PersonalizationConfig import ru.dev.gbixahue.eu4d.lib.kotlin.common.BaseTypedHolder /** diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/ItemTypes.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/ItemTypes.kt similarity index 96% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/ItemTypes.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/ItemTypes.kt index b1013de610..209036fc03 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/ItemTypes.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/ItemTypes.kt @@ -1,7 +1,7 @@ -package com.tangem.tangemtest.ucase.variants.personalize.converter +package com.tangem.devkit.ucase.variants.personalize.converter -import com.tangem.tangemtest._arch.structure.Id -import com.tangem.tangemtest.ucase.variants.personalize.* +import com.tangem.devkit._arch.structure.Id +import com.tangem.devkit.ucase.variants.personalize.* class ItemTypes { diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/PersonalizationConfigConverter.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/PersonalizationConfigConverter.kt similarity index 96% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/PersonalizationConfigConverter.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/PersonalizationConfigConverter.kt index 3d7fb1e3d1..c2c6810da3 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/PersonalizationConfigConverter.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/PersonalizationConfigConverter.kt @@ -1,11 +1,11 @@ -package com.tangem.tangemtest.ucase.variants.personalize.converter +package com.tangem.devkit.ucase.variants.personalize.converter -import com.tangem.tangemtest._arch.structure.Additional -import com.tangem.tangemtest._arch.structure.Id -import com.tangem.tangemtest._arch.structure.abstraction.* -import com.tangem.tangemtest._arch.structure.impl.* -import com.tangem.tangemtest.ucase.variants.personalize.* -import com.tangem.tangemtest.ucase.variants.personalize.dto.PersonalizationConfig +import com.tangem.devkit._arch.structure.Additional +import com.tangem.devkit._arch.structure.Id +import com.tangem.devkit._arch.structure.abstraction.* +import com.tangem.devkit._arch.structure.impl.* +import com.tangem.devkit.ucase.variants.personalize.* +import com.tangem.devkit.ucase.variants.personalize.dto.PersonalizationConfig import ru.dev.gbixahue.eu4d.lib.android.global.log.Log /** diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/PersonalizationConfigToCardConfig.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/PersonalizationConfigToCardConfig.kt similarity index 97% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/PersonalizationConfigToCardConfig.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/PersonalizationConfigToCardConfig.kt index a1c710527b..e71acdacd5 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/converter/PersonalizationConfigToCardConfig.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/converter/PersonalizationConfigToCardConfig.kt @@ -1,9 +1,9 @@ -package com.tangem.tangemtest.ucase.variants.personalize.converter +package com.tangem.devkit.ucase.variants.personalize.converter import com.tangem.commands.* import com.tangem.commands.personalization.entities.CardConfig import com.tangem.commands.personalization.entities.NdefRecord -import com.tangem.tangemtest.ucase.variants.personalize.dto.PersonalizationConfig +import com.tangem.devkit.ucase.variants.personalize.dto.PersonalizationConfig import ru.dev.gbixahue.eu4d.lib.kotlin.common.Converter import java.util.* diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/DefaultPersonalizationParams.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/dto/DefaultPersonalizationParams.kt similarity index 89% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/DefaultPersonalizationParams.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/dto/DefaultPersonalizationParams.kt index ace112c0af..afa1d5f114 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/DefaultPersonalizationParams.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/dto/DefaultPersonalizationParams.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest.ucase.variants.personalize.dto +package com.tangem.devkit.ucase.variants.personalize.dto import com.tangem.KeyPair import com.tangem.commands.personalization.entities.Acquirer @@ -41,7 +41,7 @@ interface DefaultPersonalizationParams { } fun manufacturer(): Manufacturer { - val keys = Manufacturer(com.tangem.tangemtest.ucase.variants.personalize.dto.Manufacturer.Mode.Developer) + val keys = Manufacturer(com.tangem.devkit.ucase.variants.personalize.dto.Manufacturer.Mode.Developer) return Manufacturer( name = "Tangem", keyPair = KeyPair(keys.publicKey, keys.privateKey) diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/Manufacturer.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/dto/Manufacturer.kt similarity index 98% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/Manufacturer.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/dto/Manufacturer.kt index 8a366eeb26..eccc075888 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/Manufacturer.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/dto/Manufacturer.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest.ucase.variants.personalize.dto +package com.tangem.devkit.ucase.variants.personalize.dto class Manufacturer(private val mode: Mode) { diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/PersonalizationConfig.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/dto/PersonalizationConfig.kt similarity index 98% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/PersonalizationConfig.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/dto/PersonalizationConfig.kt index ebb7daea63..836eac58bb 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/dto/PersonalizationConfig.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/dto/PersonalizationConfig.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest.ucase.variants.personalize.dto +package com.tangem.devkit.ucase.variants.personalize.dto import com.tangem.commands.EllipticCurve diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/PersonalizationFragment.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/PersonalizationFragment.kt similarity index 82% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/PersonalizationFragment.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/PersonalizationFragment.kt index cab78e4834..9fbc9d8b01 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/PersonalizationFragment.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/PersonalizationFragment.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest.ucase.variants.personalize.ui +package com.tangem.devkit.ucase.variants.personalize.ui import android.content.DialogInterface import android.os.Bundle @@ -15,29 +15,29 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.transition.Fade import com.tangem.commands.Card -import com.tangem.tangemtest.R -import com.tangem.tangemtest._arch.structure.Id -import com.tangem.tangemtest._arch.structure.StringId -import com.tangem.tangemtest._arch.structure.abstraction.Item -import com.tangem.tangemtest._arch.structure.abstraction.SafeValueChanged -import com.tangem.tangemtest._arch.widget.WidgetBuilder -import com.tangem.tangemtest.commons.DialogController -import com.tangem.tangemtest.commons.view.MultiActionView -import com.tangem.tangemtest.commons.view.ViewAction -import com.tangem.tangemtest.extensions.view.beginDelayedTransition -import com.tangem.tangemtest.ucase.domain.paramsManager.ItemsManager -import com.tangem.tangemtest.ucase.domain.paramsManager.PayloadKey -import com.tangem.tangemtest.ucase.domain.paramsManager.managers.PersonalizationItemsManager -import com.tangem.tangemtest.ucase.resources.ActionType -import com.tangem.tangemtest.ucase.tunnel.ActionView -import com.tangem.tangemtest.ucase.tunnel.ItemError -import com.tangem.tangemtest.ucase.ui.BaseCardActionFragment -import com.tangem.tangemtest.ucase.variants.personalize.PersonalizationConfigStore -import com.tangem.tangemtest.ucase.variants.personalize.ui.presets.PersonalizationPresetManager -import com.tangem.tangemtest.ucase.variants.personalize.ui.presets.PersonalizationPresetView -import com.tangem.tangemtest.ucase.variants.personalize.ui.presets.RvPresetNamesAdapter -import com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.PersonalizationItemBuilder -import com.tangem.tangemtest.ucase.variants.responses.ui.ResponseFragment +import com.tangem.devkit.R +import com.tangem.devkit._arch.structure.Id +import com.tangem.devkit._arch.structure.StringId +import com.tangem.devkit._arch.structure.abstraction.Item +import com.tangem.devkit._arch.structure.abstraction.SafeValueChanged +import com.tangem.devkit._arch.widget.WidgetBuilder +import com.tangem.devkit.commons.DialogController +import com.tangem.devkit.commons.view.MultiActionView +import com.tangem.devkit.commons.view.ViewAction +import com.tangem.devkit.extensions.view.beginDelayedTransition +import com.tangem.devkit.ucase.domain.paramsManager.ItemsManager +import com.tangem.devkit.ucase.domain.paramsManager.PayloadKey +import com.tangem.devkit.ucase.domain.paramsManager.managers.PersonalizationItemsManager +import com.tangem.devkit.ucase.resources.ActionType +import com.tangem.devkit.ucase.tunnel.ActionView +import com.tangem.devkit.ucase.tunnel.ItemError +import com.tangem.devkit.ucase.ui.BaseCardActionFragment +import com.tangem.devkit.ucase.variants.personalize.PersonalizationConfigStore +import com.tangem.devkit.ucase.variants.personalize.ui.presets.PersonalizationPresetManager +import com.tangem.devkit.ucase.variants.personalize.ui.presets.PersonalizationPresetView +import com.tangem.devkit.ucase.variants.personalize.ui.presets.RvPresetNamesAdapter +import com.tangem.devkit.ucase.variants.personalize.ui.widgets.PersonalizationItemBuilder +import com.tangem.devkit.ucase.variants.responses.ui.ResponseFragment import ru.dev.gbixahue.eu4d.lib.android._android.views.inflate import ru.dev.gbixahue.eu4d.lib.android.global.log.Log import ru.dev.gbixahue.eu4d.lib.android.global.threading.post diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/presets/PersonalizationPresetManager.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/presets/PersonalizationPresetManager.kt similarity index 75% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/presets/PersonalizationPresetManager.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/presets/PersonalizationPresetManager.kt index ff63bca036..c1fd8e43a6 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/presets/PersonalizationPresetManager.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/presets/PersonalizationPresetManager.kt @@ -1,10 +1,10 @@ -package com.tangem.tangemtest.ucase.variants.personalize.ui.presets +package com.tangem.devkit.ucase.variants.personalize.ui.presets -import com.tangem.tangemtest.R -import com.tangem.tangemtest.ucase.domain.paramsManager.ItemsManager -import com.tangem.tangemtest.ucase.variants.personalize.PersonalizationConfigStore -import com.tangem.tangemtest.ucase.variants.personalize.converter.PersonalizationConfigConverter -import com.tangem.tangemtest.ucase.variants.personalize.dto.PersonalizationConfig +import com.tangem.devkit.R +import com.tangem.devkit.ucase.domain.paramsManager.ItemsManager +import com.tangem.devkit.ucase.variants.personalize.PersonalizationConfigStore +import com.tangem.devkit.ucase.variants.personalize.converter.PersonalizationConfigConverter +import com.tangem.devkit.ucase.variants.personalize.dto.PersonalizationConfig class PersonalizationPresetManager( private val itemsManager: ItemsManager, diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/presets/PersonalizationPresetView.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/presets/PersonalizationPresetView.kt similarity index 55% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/presets/PersonalizationPresetView.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/presets/PersonalizationPresetView.kt index d4988973dc..be3fb55716 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/presets/PersonalizationPresetView.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/presets/PersonalizationPresetView.kt @@ -1,7 +1,7 @@ -package com.tangem.tangemtest.ucase.variants.personalize.ui.presets +package com.tangem.devkit.ucase.variants.personalize.ui.presets -import com.tangem.tangemtest._arch.structure.abstraction.SafeValueChanged -import com.tangem.tangemtest.ucase.tunnel.SnackbarHolder +import com.tangem.devkit._arch.structure.abstraction.SafeValueChanged +import com.tangem.devkit.ucase.tunnel.SnackbarHolder interface PersonalizationPresetView : SnackbarHolder { fun showSavePresetDialog(onOk: SafeValueChanged) diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/presets/PresetRv.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/presets/PresetRv.kt similarity index 89% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/presets/PresetRv.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/presets/PresetRv.kt index ff00dcf179..b32f84a29b 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/presets/PresetRv.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/presets/PresetRv.kt @@ -1,11 +1,10 @@ -package com.tangem.tangemtest.ucase.variants.personalize.ui.presets +package com.tangem.devkit.ucase.variants.personalize.ui.presets import android.view.View import android.view.ViewGroup -import android.widget.Button import android.widget.TextView -import com.tangem.tangemtest.R -import com.tangem.tangemtest._arch.structure.abstraction.SafeValueChanged +import com.tangem.devkit.R +import com.tangem.devkit._arch.structure.abstraction.SafeValueChanged import ru.dev.gbixahue.eu4d.lib.android._android.views.inflate import ru.dev.gbixahue.eu4d.lib.android._android.views.recycler_view.RvBaseAdapter import ru.dev.gbixahue.eu4d.lib.android._android.views.recycler_view.RvVH diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/BaseAppWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/BaseAppWidget.kt similarity index 62% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/BaseAppWidget.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/BaseAppWidget.kt index 5900b5da37..8b79b64bc9 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/BaseAppWidget.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/BaseAppWidget.kt @@ -1,12 +1,12 @@ -package com.tangem.tangemtest.ucase.variants.personalize.ui.widgets +package com.tangem.devkit.ucase.variants.personalize.ui.widgets import android.view.ViewGroup -import com.tangem.tangemtest._arch.structure.StringId -import com.tangem.tangemtest._arch.structure.abstraction.Item -import com.tangem.tangemtest._arch.widget.abstraction.BaseViewWidget -import com.tangem.tangemtest._arch.widget.abstraction.ViewWidget -import com.tangem.tangemtest.ucase.resources.MainResourceHolder -import com.tangem.tangemtest.ucase.resources.Resources +import com.tangem.devkit._arch.structure.StringId +import com.tangem.devkit._arch.structure.abstraction.Item +import com.tangem.devkit._arch.widget.abstraction.BaseViewWidget +import com.tangem.devkit._arch.widget.abstraction.ViewWidget +import com.tangem.devkit.ucase.resources.MainResourceHolder +import com.tangem.devkit.ucase.resources.Resources import ru.dev.gbixahue.eu4d.lib.android._android.views.stringFrom /** diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/DescriptionWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/DescriptionWidget.kt similarity index 78% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/DescriptionWidget.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/DescriptionWidget.kt index a8fe8af66c..4867a63afe 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/DescriptionWidget.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/DescriptionWidget.kt @@ -1,11 +1,11 @@ -package com.tangem.tangemtest.ucase.variants.personalize.ui.widgets +package com.tangem.devkit.ucase.variants.personalize.ui.widgets import android.view.ViewGroup import android.widget.TextView -import com.tangem.tangemtest.R -import com.tangem.tangemtest._arch.structure.abstraction.Item -import com.tangem.tangemtest._arch.structure.abstraction.ViewState -import com.tangem.tangemtest.extensions.view.beginDelayedTransition +import com.tangem.devkit.R +import com.tangem.devkit._arch.structure.abstraction.Item +import com.tangem.devkit._arch.structure.abstraction.ViewState +import com.tangem.devkit.extensions.view.beginDelayedTransition /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/EditTextWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/EditTextWidget.kt similarity index 90% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/EditTextWidget.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/EditTextWidget.kt index df0951947d..2fce4d4f11 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/EditTextWidget.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/EditTextWidget.kt @@ -1,12 +1,12 @@ -package com.tangem.tangemtest.ucase.variants.personalize.ui.widgets +package com.tangem.devkit.ucase.variants.personalize.ui.widgets import android.text.Editable import android.text.TextWatcher import android.view.ViewGroup import com.google.android.material.textfield.TextInputEditText import com.google.android.material.textfield.TextInputLayout -import com.tangem.tangemtest.R -import com.tangem.tangemtest._arch.structure.impl.EditTextItem +import com.tangem.devkit.R +import com.tangem.devkit._arch.structure.impl.EditTextItem import ru.dev.gbixahue.eu4d.lib.android._android.views.moveCursorToEnd import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/NumberWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/NumberWidget.kt similarity index 89% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/NumberWidget.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/NumberWidget.kt index 61cab1f430..2fef1e296f 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/NumberWidget.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/NumberWidget.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest.ucase.variants.personalize.ui.widgets +package com.tangem.devkit.ucase.variants.personalize.ui.widgets import android.text.Editable import android.text.InputFilter @@ -6,9 +6,9 @@ import android.text.TextWatcher import android.view.ViewGroup import com.google.android.material.textfield.TextInputEditText import com.google.android.material.textfield.TextInputLayout -import com.tangem.tangemtest.R -import com.tangem.tangemtest._arch.structure.impl.NumberItem -import com.tangem.tangemtest.ucase.variants.personalize.CardNumber +import com.tangem.devkit.R +import com.tangem.devkit._arch.structure.impl.NumberItem +import com.tangem.devkit.ucase.variants.personalize.CardNumber import ru.dev.gbixahue.eu4d.lib.android._android.views.addInputFilter import ru.dev.gbixahue.eu4d.lib.android._android.views.moveCursorToEnd import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/PersonalizationItemBuilder.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/PersonalizationItemBuilder.kt similarity index 63% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/PersonalizationItemBuilder.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/PersonalizationItemBuilder.kt index f18839f056..09c134bc2d 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/PersonalizationItemBuilder.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/PersonalizationItemBuilder.kt @@ -1,10 +1,10 @@ -package com.tangem.tangemtest.ucase.variants.personalize.ui.widgets +package com.tangem.devkit.ucase.variants.personalize.ui.widgets import android.view.ViewGroup -import com.tangem.tangemtest._arch.structure.abstraction.BaseItem -import com.tangem.tangemtest._arch.structure.impl.* -import com.tangem.tangemtest._arch.widget.ItemWidgetBuilder -import com.tangem.tangemtest._arch.widget.abstraction.ViewWidget +import com.tangem.devkit._arch.structure.abstraction.BaseItem +import com.tangem.devkit._arch.structure.impl.* +import com.tangem.devkit._arch.widget.ItemWidgetBuilder +import com.tangem.devkit._arch.widget.abstraction.ViewWidget /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/SpinnerWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/SpinnerWidget.kt similarity index 91% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/SpinnerWidget.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/SpinnerWidget.kt index c1c9a5a3f8..e42afb0571 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/SpinnerWidget.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/SpinnerWidget.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest.ucase.variants.personalize.ui.widgets +package com.tangem.devkit.ucase.variants.personalize.ui.widgets import android.view.View import android.view.ViewGroup @@ -6,10 +6,10 @@ import android.widget.AdapterView import android.widget.BaseAdapter import android.widget.Spinner import android.widget.TextView -import com.tangem.tangemtest.R -import com.tangem.tangemtest._arch.structure.abstraction.KeyValue -import com.tangem.tangemtest._arch.structure.abstraction.ListViewModel -import com.tangem.tangemtest._arch.structure.impl.SpinnerItem +import com.tangem.devkit.R +import com.tangem.devkit._arch.structure.abstraction.KeyValue +import com.tangem.devkit._arch.structure.abstraction.ListViewModel +import com.tangem.devkit._arch.structure.impl.SpinnerItem import ru.dev.gbixahue.eu4d.lib.android._android.views.inflate import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/SwitchWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/SwitchWidget.kt similarity index 86% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/SwitchWidget.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/SwitchWidget.kt index ffa0b6879b..0b9c534056 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/SwitchWidget.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/SwitchWidget.kt @@ -1,10 +1,10 @@ -package com.tangem.tangemtest.ucase.variants.personalize.ui.widgets +package com.tangem.devkit.ucase.variants.personalize.ui.widgets import android.view.ViewGroup import android.widget.CompoundButton import androidx.appcompat.widget.SwitchCompat -import com.tangem.tangemtest.R -import com.tangem.tangemtest._arch.structure.impl.BoolItem +import com.tangem.devkit.R +import com.tangem.devkit._arch.structure.impl.BoolItem /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/TextHeaderWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/TextHeaderWidget.kt similarity index 70% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/TextHeaderWidget.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/TextHeaderWidget.kt index ab52a1981b..0892061a0a 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/personalize/ui/widgets/TextHeaderWidget.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/widgets/TextHeaderWidget.kt @@ -1,9 +1,9 @@ -package com.tangem.tangemtest.ucase.variants.personalize.ui.widgets +package com.tangem.devkit.ucase.variants.personalize.ui.widgets import android.view.ViewGroup import android.widget.TextView -import com.tangem.tangemtest.R -import com.tangem.tangemtest._arch.structure.impl.TextItem +import com.tangem.devkit.R +import com.tangem.devkit._arch.structure.impl.TextItem /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/Ids.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/Ids.kt similarity index 89% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/Ids.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/Ids.kt index 2e84215136..8e00cef963 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/Ids.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/Ids.kt @@ -1,6 +1,6 @@ -package com.tangem.tangemtest.ucase.variants.responses +package com.tangem.devkit.ucase.variants.responses -import com.tangem.tangemtest._arch.structure.Id +import com.tangem.devkit._arch.structure.Id /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ResponseViewModel.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ResponseViewModel.kt similarity index 80% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ResponseViewModel.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ResponseViewModel.kt index 488b8f014b..0da3fbceb4 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ResponseViewModel.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ResponseViewModel.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest.ucase.variants.responses +package com.tangem.devkit.ucase.variants.responses import android.view.View import androidx.lifecycle.ViewModel @@ -6,11 +6,11 @@ import com.tangem.commands.Card import com.tangem.commands.CommandResponse import com.tangem.commands.SignResponse import com.tangem.commands.personalization.DepersonalizeResponse -import com.tangem.tangemtest.R -import com.tangem.tangemtest._arch.structure.abstraction.Item -import com.tangem.tangemtest._arch.structure.abstraction.ModelToItems -import com.tangem.tangemtest._arch.structure.abstraction.iterate -import com.tangem.tangemtest.ucase.variants.responses.converter.ConvertersStore +import com.tangem.devkit.R +import com.tangem.devkit._arch.structure.abstraction.Item +import com.tangem.devkit._arch.structure.abstraction.ModelToItems +import com.tangem.devkit._arch.structure.abstraction.iterate +import com.tangem.devkit.ucase.variants.responses.converter.ConvertersStore import ru.dev.gbixahue.eu4d.lib.android.global.log.Log /** diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/BaseResponseConverter.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/converter/BaseResponseConverter.kt similarity index 68% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/BaseResponseConverter.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/converter/BaseResponseConverter.kt index b685392de9..c1eded3858 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/BaseResponseConverter.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/converter/BaseResponseConverter.kt @@ -1,9 +1,9 @@ -package com.tangem.tangemtest.ucase.variants.responses.converter +package com.tangem.devkit.ucase.variants.responses.converter -import com.tangem.tangemtest._arch.structure.Id -import com.tangem.tangemtest._arch.structure.abstraction.* -import com.tangem.tangemtest.ucase.domain.responses.ResponseFieldConverter -import com.tangem.tangemtest.ucase.variants.responses.item.TextHeaderItem +import com.tangem.devkit._arch.structure.Id +import com.tangem.devkit._arch.structure.abstraction.* +import com.tangem.devkit.ucase.domain.responses.ResponseFieldConverter +import com.tangem.devkit.ucase.variants.responses.item.TextHeaderItem import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf /** diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/CardConverter.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/converter/CardConverter.kt similarity index 86% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/CardConverter.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/converter/CardConverter.kt index 6b3ad13430..44e2a5d571 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/CardConverter.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/converter/CardConverter.kt @@ -1,16 +1,16 @@ -package com.tangem.tangemtest.ucase.variants.responses.converter +package com.tangem.devkit.ucase.variants.responses.converter import com.tangem.commands.* -import com.tangem.tangemtest.R -import com.tangem.tangemtest._arch.structure.StringId -import com.tangem.tangemtest._arch.structure.abstraction.Item -import com.tangem.tangemtest._arch.structure.abstraction.ItemGroup -import com.tangem.tangemtest._arch.structure.abstraction.iterate -import com.tangem.tangemtest._arch.structure.impl.BoolItem -import com.tangem.tangemtest._arch.structure.impl.TextItem -import com.tangem.tangemtest.ucase.variants.responses.CardDataId -import com.tangem.tangemtest.ucase.variants.responses.CardId -import com.tangem.tangemtest.ucase.variants.responses.item.TextHeaderItem +import com.tangem.devkit.R +import com.tangem.devkit._arch.structure.StringId +import com.tangem.devkit._arch.structure.abstraction.Item +import com.tangem.devkit._arch.structure.abstraction.ItemGroup +import com.tangem.devkit._arch.structure.abstraction.iterate +import com.tangem.devkit._arch.structure.impl.BoolItem +import com.tangem.devkit._arch.structure.impl.TextItem +import com.tangem.devkit.ucase.variants.responses.CardDataId +import com.tangem.devkit.ucase.variants.responses.CardId +import com.tangem.devkit.ucase.variants.responses.item.TextHeaderItem /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/ConvertersStore.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/converter/ConvertersStore.kt similarity index 90% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/ConvertersStore.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/converter/ConvertersStore.kt index 067d47027c..85b9f38442 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/ConvertersStore.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/converter/ConvertersStore.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest.ucase.variants.responses.converter +package com.tangem.devkit.ucase.variants.responses.converter import com.tangem.commands.Card import com.tangem.commands.SignResponse diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/SimpleConverters.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/converter/SimpleConverters.kt similarity index 74% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/SimpleConverters.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/converter/SimpleConverters.kt index 64b8edbec5..980c10f01d 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/converter/SimpleConverters.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/converter/SimpleConverters.kt @@ -1,11 +1,11 @@ -package com.tangem.tangemtest.ucase.variants.responses.converter +package com.tangem.devkit.ucase.variants.responses.converter import com.tangem.commands.SignResponse import com.tangem.commands.personalization.DepersonalizeResponse -import com.tangem.tangemtest._arch.structure.abstraction.Item -import com.tangem.tangemtest._arch.structure.impl.TextItem -import com.tangem.tangemtest.ucase.variants.responses.DepersonalizeId -import com.tangem.tangemtest.ucase.variants.responses.SignId +import com.tangem.devkit._arch.structure.abstraction.Item +import com.tangem.devkit._arch.structure.impl.TextItem +import com.tangem.devkit.ucase.variants.responses.DepersonalizeId +import com.tangem.devkit.ucase.variants.responses.SignId import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf /** diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/item/TextItem.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/item/TextItem.kt new file mode 100644 index 0000000000..bb677f0dec --- /dev/null +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/item/TextItem.kt @@ -0,0 +1,12 @@ +package com.tangem.devkit.ucase.variants.responses.item + +import com.tangem.devkit._arch.structure.Id +import com.tangem.devkit._arch.structure.abstraction.BaseItemViewModel +import com.tangem.devkit._arch.structure.abstraction.ItemViewModel +import com.tangem.devkit._arch.structure.abstraction.ViewState +import com.tangem.devkit._arch.structure.impl.TypedItem + +open class TextHeaderItem(id: Id, viewModel: ItemViewModel) : TypedItem(id, viewModel) { + constructor(id: Id, value: String? = null, viewState: ViewState = ViewState()) + : this(id, BaseItemViewModel(value, viewState)) +} \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/ResponseFragment.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/ResponseFragment.kt similarity index 81% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/ResponseFragment.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/ResponseFragment.kt index 07676a18f2..0dcb15e807 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/ResponseFragment.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/ResponseFragment.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest.ucase.variants.responses.ui +package com.tangem.devkit.ucase.variants.responses.ui import android.os.Bundle import android.view.* @@ -8,14 +8,14 @@ import androidx.core.os.bundleOf import androidx.fragment.app.activityViewModels import androidx.fragment.app.viewModels import androidx.lifecycle.Observer -import com.tangem.tangemtest.R -import com.tangem.tangemtest._arch.widget.WidgetBuilder -import com.tangem.tangemtest._main.MainViewModel -import com.tangem.tangemtest.extensions.shareText -import com.tangem.tangemtest.ucase.domain.responses.ResponseJsonConverter -import com.tangem.tangemtest.ucase.ui.BaseFragment -import com.tangem.tangemtest.ucase.variants.responses.ResponseViewModel -import com.tangem.tangemtest.ucase.variants.responses.ui.widget.ResponseItemBuilder +import com.tangem.devkit.R +import com.tangem.devkit._arch.widget.WidgetBuilder +import com.tangem.devkit._main.MainViewModel +import com.tangem.devkit.extensions.shareText +import com.tangem.devkit.ucase.domain.responses.ResponseJsonConverter +import com.tangem.devkit.ucase.ui.BaseFragment +import com.tangem.devkit.ucase.variants.responses.ResponseViewModel +import com.tangem.devkit.ucase.variants.responses.ui.widget.ResponseItemBuilder /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/CheckBoxWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/widget/CheckBoxWidget.kt similarity index 81% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/CheckBoxWidget.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/widget/CheckBoxWidget.kt index 65dd1a5831..bafc6e7500 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/CheckBoxWidget.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/widget/CheckBoxWidget.kt @@ -1,9 +1,9 @@ -package com.tangem.tangemtest.ucase.variants.responses.ui.widget +package com.tangem.devkit.ucase.variants.responses.ui.widget import android.view.ViewGroup import com.google.android.material.checkbox.MaterialCheckBox -import com.tangem.tangemtest.R -import com.tangem.tangemtest._arch.structure.impl.BoolItem +import com.tangem.devkit.R +import com.tangem.devkit._arch.structure.impl.BoolItem import ru.dev.gbixahue.eu4d.lib.android._android.views.colorFrom /** diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/widget/ResponseItemBuilder.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/widget/ResponseItemBuilder.kt new file mode 100644 index 0000000000..172cca0c83 --- /dev/null +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/widget/ResponseItemBuilder.kt @@ -0,0 +1,23 @@ +package com.tangem.devkit.ucase.variants.responses.ui.widget + +import android.view.ViewGroup +import com.tangem.devkit._arch.structure.abstraction.BaseItem +import com.tangem.devkit._arch.structure.impl.BoolItem +import com.tangem.devkit._arch.structure.impl.TextItem +import com.tangem.devkit._arch.widget.ItemWidgetBuilder +import com.tangem.devkit._arch.widget.abstraction.ViewWidget +import com.tangem.devkit.ucase.variants.responses.item.TextHeaderItem + +/** +[REDACTED_AUTHOR] + */ +class ResponseItemBuilder : ItemWidgetBuilder { + override fun build(item: BaseItem, parent: ViewGroup): ViewWidget? { + return when (item) { + is TextHeaderItem -> ResponseHeaderWidget(parent, item) + is TextItem -> ResponseTextWidget(parent, item) + is BoolItem -> CheckBoxWidget(parent, item) + else -> null + } + } +} \ No newline at end of file diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/ResponseTextWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/widget/ResponseTextWidget.kt similarity index 80% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/ResponseTextWidget.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/widget/ResponseTextWidget.kt index a221c03124..8ef678b37c 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/ResponseTextWidget.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/widget/ResponseTextWidget.kt @@ -1,10 +1,10 @@ -package com.tangem.tangemtest.ucase.variants.responses.ui.widget +package com.tangem.devkit.ucase.variants.responses.ui.widget import android.view.ViewGroup import android.widget.TextView -import com.tangem.tangemtest.R -import com.tangem.tangemtest._arch.structure.impl.TextItem -import com.tangem.tangemtest.ucase.variants.responses.item.TextHeaderItem +import com.tangem.devkit.R +import com.tangem.devkit._arch.structure.impl.TextItem +import com.tangem.devkit.ucase.variants.responses.item.TextHeaderItem /** [REDACTED_AUTHOR] diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/ResponseWidget.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/widget/ResponseWidget.kt similarity index 80% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/ResponseWidget.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/widget/ResponseWidget.kt index f6554124cf..9931b63df4 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/responses/ui/widget/ResponseWidget.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/responses/ui/widget/ResponseWidget.kt @@ -1,12 +1,12 @@ -package com.tangem.tangemtest.ucase.variants.responses.ui.widget +package com.tangem.devkit.ucase.variants.responses.ui.widget import android.content.ClipData import android.content.ClipboardManager import android.content.Context import android.view.ViewGroup -import com.tangem.tangemtest.R -import com.tangem.tangemtest._arch.structure.abstraction.Item -import com.tangem.tangemtest.ucase.variants.personalize.ui.widgets.DescriptionWidget +import com.tangem.devkit.R +import com.tangem.devkit._arch.structure.abstraction.Item +import com.tangem.devkit.ucase.variants.personalize.ui.widgets.DescriptionWidget import ru.dev.gbixahue.eu4d.lib.android._android.views.stringFrom import ru.dev.gbixahue.eu4d.lib.android._android.views.toast import ru.dev.gbixahue.eu4d.lib.kotlin.stringOf diff --git a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/scan/ui/ScanActionFragment.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/scan/ui/ScanActionFragment.kt similarity index 81% rename from tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/scan/ui/ScanActionFragment.kt rename to tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/scan/ui/ScanActionFragment.kt index a125e30adf..f5dc1bcf94 100644 --- a/tangem-demo/src/main/java/com/tangem/tangemtest/ucase/variants/scan/ui/ScanActionFragment.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/scan/ui/ScanActionFragment.kt @@ -1,4 +1,4 @@ -package com.tangem.tangemtest.ucase.variants.scan.ui +package com.tangem.devkit.ucase.variants.scan.ui import android.os.Bundle import android.util.TypedValue @@ -7,11 +7,11 @@ import android.view.View import android.widget.FrameLayout import android.widget.TextView import com.tangem.commands.Card -import com.tangem.tangemtest.R -import com.tangem.tangemtest.ucase.domain.paramsManager.ItemsManager -import com.tangem.tangemtest.ucase.domain.paramsManager.managers.ScanItemsManager -import com.tangem.tangemtest.ucase.ui.BaseCardActionFragment -import com.tangem.tangemtest.ucase.variants.responses.ui.ResponseFragment +import com.tangem.devkit.R +import com.tangem.devkit.ucase.domain.paramsManager.ItemsManager +import com.tangem.devkit.ucase.domain.paramsManager.managers.ScanItemsManager +import com.tangem.devkit.ucase.ui.BaseCardActionFragment +import com.tangem.devkit.ucase.variants.responses.ui.ResponseFragment import ru.dev.gbixahue.eu4d.lib.android._android.views.dpToPx /** diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/sign/ui/SignActionFragment.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/sign/ui/SignActionFragment.kt new file mode 100644 index 0000000000..760d09e39d --- /dev/null +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/sign/ui/SignActionFragment.kt @@ -0,0 +1,13 @@ +package com.tangem.devkit.ucase.variants.sign.ui + +import com.tangem.devkit.ucase.domain.paramsManager.ItemsManager +import com.tangem.devkit.ucase.domain.paramsManager.managers.SignItemsManager +import com.tangem.devkit.ucase.ui.BaseCardActionFragment + +/** +[REDACTED_AUTHOR] + */ +class SignActionFragment : BaseCardActionFragment() { + + override val itemsManager: ItemsManager by lazy { SignItemsManager() } +} \ No newline at end of file diff --git a/tangem-demo/src/main/res/anim/fade_in.xml b/tangem-devkit/src/main/res/anim/fade_in.xml similarity index 100% rename from tangem-demo/src/main/res/anim/fade_in.xml rename to tangem-devkit/src/main/res/anim/fade_in.xml diff --git a/tangem-demo/src/main/res/anim/fade_out.xml b/tangem-devkit/src/main/res/anim/fade_out.xml similarity index 100% rename from tangem-demo/src/main/res/anim/fade_out.xml rename to tangem-devkit/src/main/res/anim/fade_out.xml diff --git a/tangem-demo/src/main/res/anim/slide_in_left.xml b/tangem-devkit/src/main/res/anim/slide_in_left.xml similarity index 100% rename from tangem-demo/src/main/res/anim/slide_in_left.xml rename to tangem-devkit/src/main/res/anim/slide_in_left.xml diff --git a/tangem-demo/src/main/res/anim/slide_in_right.xml b/tangem-devkit/src/main/res/anim/slide_in_right.xml similarity index 100% rename from tangem-demo/src/main/res/anim/slide_in_right.xml rename to tangem-devkit/src/main/res/anim/slide_in_right.xml diff --git a/tangem-demo/src/main/res/anim/slide_out_left.xml b/tangem-devkit/src/main/res/anim/slide_out_left.xml similarity index 100% rename from tangem-demo/src/main/res/anim/slide_out_left.xml rename to tangem-devkit/src/main/res/anim/slide_out_left.xml diff --git a/tangem-demo/src/main/res/anim/slide_out_right.xml b/tangem-devkit/src/main/res/anim/slide_out_right.xml similarity index 100% rename from tangem-demo/src/main/res/anim/slide_out_right.xml rename to tangem-devkit/src/main/res/anim/slide_out_right.xml diff --git a/tangem-demo/src/main/res/color/menu_switch_color_thumb.xml b/tangem-devkit/src/main/res/color/menu_switch_color_thumb.xml similarity index 100% rename from tangem-demo/src/main/res/color/menu_switch_color_thumb.xml rename to tangem-devkit/src/main/res/color/menu_switch_color_thumb.xml diff --git a/tangem-demo/src/main/res/color/menu_switch_color_track.xml b/tangem-devkit/src/main/res/color/menu_switch_color_track.xml similarity index 100% rename from tangem-demo/src/main/res/color/menu_switch_color_track.xml rename to tangem-devkit/src/main/res/color/menu_switch_color_track.xml diff --git a/tangem-demo/src/main/res/color/mtrl_fab_bg_color_selector.xml b/tangem-devkit/src/main/res/color/mtrl_fab_bg_color_selector.xml similarity index 100% rename from tangem-demo/src/main/res/color/mtrl_fab_bg_color_selector.xml rename to tangem-devkit/src/main/res/color/mtrl_fab_bg_color_selector.xml diff --git a/tangem-demo/src/main/res/color/mtrl_fab_icon_text_color_selector.xml b/tangem-devkit/src/main/res/color/mtrl_fab_icon_text_color_selector.xml similarity index 100% rename from tangem-demo/src/main/res/color/mtrl_fab_icon_text_color_selector.xml rename to tangem-devkit/src/main/res/color/mtrl_fab_icon_text_color_selector.xml diff --git a/tangem-demo/src/main/res/drawable-v24/ic_launcher_foreground.xml b/tangem-devkit/src/main/res/drawable-v24/ic_launcher_foreground.xml similarity index 100% rename from tangem-demo/src/main/res/drawable-v24/ic_launcher_foreground.xml rename to tangem-devkit/src/main/res/drawable-v24/ic_launcher_foreground.xml diff --git a/tangem-devkit/src/main/res/drawable/ic_launcher_background.xml b/tangem-devkit/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000000..ca3826a46c --- /dev/null +++ b/tangem-devkit/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tangem-demo/src/main/res/drawable/ic_share_white_18dp.xml b/tangem-devkit/src/main/res/drawable/ic_share_white_18dp.xml similarity index 100% rename from tangem-demo/src/main/res/drawable/ic_share_white_18dp.xml rename to tangem-devkit/src/main/res/drawable/ic_share_white_18dp.xml diff --git a/tangem-demo/src/main/res/layout/a_main.xml b/tangem-devkit/src/main/res/layout/a_main.xml similarity index 100% rename from tangem-demo/src/main/res/layout/a_main.xml rename to tangem-devkit/src/main/res/layout/a_main.xml diff --git a/tangem-demo/src/main/res/layout/activity_test_user_data.xml b/tangem-devkit/src/main/res/layout/activity_test_user_data.xml similarity index 100% rename from tangem-demo/src/main/res/layout/activity_test_user_data.xml rename to tangem-devkit/src/main/res/layout/activity_test_user_data.xml diff --git a/tangem-demo/src/main/res/layout/dlg_personalization_preset_load.xml b/tangem-devkit/src/main/res/layout/dlg_personalization_preset_load.xml similarity index 100% rename from tangem-demo/src/main/res/layout/dlg_personalization_preset_load.xml rename to tangem-devkit/src/main/res/layout/dlg_personalization_preset_load.xml diff --git a/tangem-demo/src/main/res/layout/dlg_personalization_preset_save.xml b/tangem-devkit/src/main/res/layout/dlg_personalization_preset_save.xml similarity index 100% rename from tangem-demo/src/main/res/layout/dlg_personalization_preset_save.xml rename to tangem-devkit/src/main/res/layout/dlg_personalization_preset_save.xml diff --git a/tangem-demo/src/main/res/layout/fg_base_action_layout.xml b/tangem-devkit/src/main/res/layout/fg_base_action_layout.xml similarity index 100% rename from tangem-demo/src/main/res/layout/fg_base_action_layout.xml rename to tangem-devkit/src/main/res/layout/fg_base_action_layout.xml diff --git a/tangem-demo/src/main/res/layout/fg_card_response.xml b/tangem-devkit/src/main/res/layout/fg_card_response.xml similarity index 100% rename from tangem-demo/src/main/res/layout/fg_card_response.xml rename to tangem-devkit/src/main/res/layout/fg_card_response.xml diff --git a/tangem-demo/src/main/res/layout/fg_entry_point.xml b/tangem-devkit/src/main/res/layout/fg_entry_point.xml similarity index 100% rename from tangem-demo/src/main/res/layout/fg_entry_point.xml rename to tangem-devkit/src/main/res/layout/fg_entry_point.xml diff --git a/tangem-demo/src/main/res/layout/m_divider_h.xml b/tangem-devkit/src/main/res/layout/m_divider_h.xml similarity index 100% rename from tangem-demo/src/main/res/layout/m_divider_h.xml rename to tangem-devkit/src/main/res/layout/m_divider_h.xml diff --git a/tangem-demo/src/main/res/layout/m_divider_v.xml b/tangem-devkit/src/main/res/layout/m_divider_v.xml similarity index 100% rename from tangem-demo/src/main/res/layout/m_divider_v.xml rename to tangem-devkit/src/main/res/layout/m_divider_v.xml diff --git a/tangem-demo/src/main/res/layout/menu_item_switch.xml b/tangem-devkit/src/main/res/layout/menu_item_switch.xml similarity index 100% rename from tangem-demo/src/main/res/layout/menu_item_switch.xml rename to tangem-devkit/src/main/res/layout/menu_item_switch.xml diff --git a/tangem-demo/src/main/res/layout/old_activity_main.xml b/tangem-devkit/src/main/res/layout/old_activity_main.xml similarity index 100% rename from tangem-demo/src/main/res/layout/old_activity_main.xml rename to tangem-devkit/src/main/res/layout/old_activity_main.xml diff --git a/tangem-demo/src/main/res/layout/v_content_container.xml b/tangem-devkit/src/main/res/layout/v_content_container.xml similarity index 100% rename from tangem-demo/src/main/res/layout/v_content_container.xml rename to tangem-devkit/src/main/res/layout/v_content_container.xml diff --git a/tangem-demo/src/main/res/layout/v_item_list_container.xml b/tangem-devkit/src/main/res/layout/v_item_list_container.xml similarity index 100% rename from tangem-demo/src/main/res/layout/v_item_list_container.xml rename to tangem-devkit/src/main/res/layout/v_item_list_container.xml diff --git a/tangem-demo/src/main/res/layout/vh_actions.xml b/tangem-devkit/src/main/res/layout/vh_actions.xml similarity index 100% rename from tangem-demo/src/main/res/layout/vh_actions.xml rename to tangem-devkit/src/main/res/layout/vh_actions.xml diff --git a/tangem-demo/src/main/res/layout/vh_personalization_preset_name.xml b/tangem-devkit/src/main/res/layout/vh_personalization_preset_name.xml similarity index 100% rename from tangem-demo/src/main/res/layout/vh_personalization_preset_name.xml rename to tangem-devkit/src/main/res/layout/vh_personalization_preset_name.xml diff --git a/tangem-demo/src/main/res/layout/vh_sp_dropdown_item.xml b/tangem-devkit/src/main/res/layout/vh_sp_dropdown_item.xml similarity index 100% rename from tangem-demo/src/main/res/layout/vh_sp_dropdown_item.xml rename to tangem-devkit/src/main/res/layout/vh_sp_dropdown_item.xml diff --git a/tangem-demo/src/main/res/layout/vh_sp_item.xml b/tangem-devkit/src/main/res/layout/vh_sp_item.xml similarity index 100% rename from tangem-demo/src/main/res/layout/vh_sp_item.xml rename to tangem-devkit/src/main/res/layout/vh_sp_item.xml diff --git a/tangem-demo/src/main/res/layout/view_simple_button.xml b/tangem-devkit/src/main/res/layout/view_simple_button.xml similarity index 100% rename from tangem-demo/src/main/res/layout/view_simple_button.xml rename to tangem-devkit/src/main/res/layout/view_simple_button.xml diff --git a/tangem-demo/src/main/res/layout/w_action_response_json.xml b/tangem-devkit/src/main/res/layout/w_action_response_json.xml similarity index 100% rename from tangem-demo/src/main/res/layout/w_action_response_json.xml rename to tangem-devkit/src/main/res/layout/w_action_response_json.xml diff --git a/tangem-demo/src/main/res/layout/w_card_incoming_param.xml b/tangem-devkit/src/main/res/layout/w_card_incoming_param.xml similarity index 100% rename from tangem-demo/src/main/res/layout/w_card_incoming_param.xml rename to tangem-devkit/src/main/res/layout/w_card_incoming_param.xml diff --git a/tangem-demo/src/main/res/layout/w_empty.xml b/tangem-devkit/src/main/res/layout/w_empty.xml similarity index 100% rename from tangem-demo/src/main/res/layout/w_empty.xml rename to tangem-devkit/src/main/res/layout/w_empty.xml diff --git a/tangem-demo/src/main/res/layout/w_field_description.xml b/tangem-devkit/src/main/res/layout/w_field_description.xml similarity index 100% rename from tangem-demo/src/main/res/layout/w_field_description.xml rename to tangem-devkit/src/main/res/layout/w_field_description.xml diff --git a/tangem-demo/src/main/res/layout/w_personalize_item_edit_text.xml b/tangem-devkit/src/main/res/layout/w_personalize_item_edit_text.xml similarity index 100% rename from tangem-demo/src/main/res/layout/w_personalize_item_edit_text.xml rename to tangem-devkit/src/main/res/layout/w_personalize_item_edit_text.xml diff --git a/tangem-demo/src/main/res/layout/w_personalize_item_header.xml b/tangem-devkit/src/main/res/layout/w_personalize_item_header.xml similarity index 100% rename from tangem-demo/src/main/res/layout/w_personalize_item_header.xml rename to tangem-devkit/src/main/res/layout/w_personalize_item_header.xml diff --git a/tangem-demo/src/main/res/layout/w_personalize_item_number.xml b/tangem-devkit/src/main/res/layout/w_personalize_item_number.xml similarity index 100% rename from tangem-demo/src/main/res/layout/w_personalize_item_number.xml rename to tangem-devkit/src/main/res/layout/w_personalize_item_number.xml diff --git a/tangem-demo/src/main/res/layout/w_personalize_item_spinner.xml b/tangem-devkit/src/main/res/layout/w_personalize_item_spinner.xml similarity index 100% rename from tangem-demo/src/main/res/layout/w_personalize_item_spinner.xml rename to tangem-devkit/src/main/res/layout/w_personalize_item_spinner.xml diff --git a/tangem-demo/src/main/res/layout/w_personalize_item_switch.xml b/tangem-devkit/src/main/res/layout/w_personalize_item_switch.xml similarity index 100% rename from tangem-demo/src/main/res/layout/w_personalize_item_switch.xml rename to tangem-devkit/src/main/res/layout/w_personalize_item_switch.xml diff --git a/tangem-demo/src/main/res/layout/w_personalize_widgets_together.xml b/tangem-devkit/src/main/res/layout/w_personalize_widgets_together.xml similarity index 100% rename from tangem-demo/src/main/res/layout/w_personalize_widgets_together.xml rename to tangem-devkit/src/main/res/layout/w_personalize_widgets_together.xml diff --git a/tangem-demo/src/main/res/layout/w_personilize_block.xml b/tangem-devkit/src/main/res/layout/w_personilize_block.xml similarity index 100% rename from tangem-demo/src/main/res/layout/w_personilize_block.xml rename to tangem-devkit/src/main/res/layout/w_personilize_block.xml diff --git a/tangem-demo/src/main/res/layout/w_response_item.xml b/tangem-devkit/src/main/res/layout/w_response_item.xml similarity index 100% rename from tangem-demo/src/main/res/layout/w_response_item.xml rename to tangem-devkit/src/main/res/layout/w_response_item.xml diff --git a/tangem-demo/src/main/res/layout/w_response_item_checkbox.xml b/tangem-devkit/src/main/res/layout/w_response_item_checkbox.xml similarity index 100% rename from tangem-demo/src/main/res/layout/w_response_item_checkbox.xml rename to tangem-devkit/src/main/res/layout/w_response_item_checkbox.xml diff --git a/tangem-demo/src/main/res/layout/w_response_item_header.xml b/tangem-devkit/src/main/res/layout/w_response_item_header.xml similarity index 100% rename from tangem-demo/src/main/res/layout/w_response_item_header.xml rename to tangem-devkit/src/main/res/layout/w_response_item_header.xml diff --git a/tangem-demo/src/main/res/menu/menu_activity_main.xml b/tangem-devkit/src/main/res/menu/menu_activity_main.xml similarity index 100% rename from tangem-demo/src/main/res/menu/menu_activity_main.xml rename to tangem-devkit/src/main/res/menu/menu_activity_main.xml diff --git a/tangem-demo/src/main/res/menu/menu_fg_peronalization.xml b/tangem-devkit/src/main/res/menu/menu_fg_peronalization.xml similarity index 100% rename from tangem-demo/src/main/res/menu/menu_fg_peronalization.xml rename to tangem-devkit/src/main/res/menu/menu_fg_peronalization.xml diff --git a/tangem-demo/src/main/res/menu/menu_fg_response.xml b/tangem-devkit/src/main/res/menu/menu_fg_response.xml similarity index 100% rename from tangem-demo/src/main/res/menu/menu_fg_response.xml rename to tangem-devkit/src/main/res/menu/menu_fg_response.xml diff --git a/tangem-devkit/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/tangem-devkit/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000000..036d09bc5f --- /dev/null +++ b/tangem-devkit/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/tangem-devkit/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/tangem-devkit/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000000..036d09bc5f --- /dev/null +++ b/tangem-devkit/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/tangem-devkit/src/main/res/mipmap-hdpi/ic_launcher.png b/tangem-devkit/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..ab0b9f8707741d422fb41b3212b71d6fd5fd27de GIT binary patch literal 1425 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 literal 0 HcmV?d00001 diff --git a/tangem-devkit/src/main/res/mipmap-hdpi/ic_launcher_round.png b/tangem-devkit/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..334c1411a6aea8869cfca41dcc6ea1d2db86f5af GIT binary patch literal 3249 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 literal 0 HcmV?d00001 diff --git a/tangem-devkit/src/main/res/mipmap-mdpi/ic_launcher.png b/tangem-devkit/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..9e66da64b2c3b5e7e0dd9e71027d5c907af39d18 GIT binary patch literal 988 zcmV<210(#2P)st9KD>wg{*ti~utoL6`QAM+lWdGq~VX6F58CLlmc zB2EBgq(IJ+oyGWNCK0{J)B8DCkgh{WcS(0RiM1W#&6`j2lwT*Q_xARTZnt}br#v3i z%+rYw`#-u|t|qDoswf)SY_=A%cIjAv{lT)ewRMvKOso>+cFNt9bCIWQJA0Yr%RDkN za_gYi!vKLSpP!!(bvm7!9soD*H_tqH0Bk)yJ@SKIy#kDmj)oC{Rg3^#U0sUP0*LY- zXlrYGbglpv%LWz~7qPJ5pVroX^8tAK{v+g(kMYn?B|J-FZCx+`HTd$?YdnZh_^ohx zB%BWC#R9k_013eVL7Ybbp=7{cMeqVxS^0^%xgX~uw~NCxT31(xva&KXHa22)brt31 z<-&baQxoW`iRI;GQ2c`a{(iKyw9uTt0JU0;p`jskc6JKoi;9X+Sy{>FJCK~5jPdbt z6c!c=#!^#L(ca#U!NEZ^H#Z9^C@26u6H28L+1c6X?d=7{G$<)4!SL`f;^X5nJ3Gq< zASES*g}H+H($Z2SCMKe|xELCZ1_pxxDwPUZSy?cdOb81LLu_m;CMPGM)9FxAQ30dT zC_r-yCDPK;P+eV(^z?M}_4Ns6*nMkjE4H_{k&}}n7`0lh$j!}#R;xu`UY^i>s;a86 zzP^r(j0}DN)6>%!7#P6P(h_!db}%+JCfu`}o+0#kX3}oA3*Cg}Q&UsW>-EAvw7a{D znVA`W02-|hb)UbW{(#v1_px!We(c=FS z`vQ;IL>WcFH~h1hH-?r`~EYis8ojsCxzyR<}%5bNe{M@L7bF96}tpu4;Kw!`7D zuu5V%;2>{oRkuNl|NG1%t+@kz9Wh;_mDE>)VD-R2c%}WeJu5j4c?&wt8JR3DE>1y< zZ=Km}wr*~2{vmoB%P&&C3Spv;x_F5fQQGDIhdeq9t=aAklO|7Qh1q+lkx;SoiY*2C&HlNzdk@eIiNRvy6 zD=Bel>kL`J8WA(CbFc4Ps^9Te&@N6lo)r1H_JeW%|2gqH@6RbdUt1t=1GE?wH2iRO zXf|k34)6=A1isi@mG=HQF`-jr-4eo+P$N_2Dg)Uv;1Lfx%*C=ul47jhxI6igY0?t zer8|ih7Il8l74FPE!uIUaf8Q?8oQl)_H<3&@gzoRdicAU8(LdgSFT@w{o;)q8qCbh zMMXu6ilwEc)6RAD_3>HS*j#xZ9v*(yYVqR5mo8sk{Cm}%XU~@XtE;b%my(i7$;t8Q z>+dhk%g*+;vbNs8>h85`Z5uqkeE;qp6*bGm)YLOJc5X^)YUkOs$*Wgu&zw7VYD){t z%603mS&F`W`}WcI->T~B?z3jkF70(tP`G*XX4JET2OHlRo13eYJN~e-C{h9UU#0<{FWfw(MtRZtmGT584dYU;iDtf7&#$lc!H# zp6+}lBk1jw4wDvNUtiD6%#}CZmRZ``UajRx%nFeX2@CV8th5Y%R4-aqTdV8o>1kwP zk--(L?3Y_3die0+U3X8N>N@xK-Md$rCieF6r;S@uQ&L`BKYG-4v)Q3{4mXY-ZB8gF+dsc;Lsu79;qJR>634wypFVB1UQDd5zy5jE~L)}$Z@0~f*6Z!tl8=vjKpuRXiKQC{| z?%mN<)zx1;{u+J%>2tcpPQ^ij{oME92n7L=_=+VzbX&5--^TjZb#Lu;h+w(5@2_{A zUSR}Rw1tiQv_-4_KRT*?_q^BJpyR=Q|Bn4K+wOY4eZ{{c`FiHl!}mS^ik{k$5+83NTz^=jR^QiG zd)ZjHo+I(tl@)mcTZJy>1*|UJ|8!%u{hSTInP3?V$sW|~$iN^_{f{x_;PRGFwt`L| NIZszVmvv4FO#nz<^sfK_ literal 0 HcmV?d00001 diff --git a/tangem-devkit/src/main/res/mipmap-mdpi/ic_launcher_round.png b/tangem-devkit/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..5d2270c85da8d75570811c869d82ee631c4bdc85 GIT binary patch literal 2059 zcmV+m2=w=fP)+PaV~rvk_4Sty|> z$Baf}vB6-dL($-UD+%4xck~;z;caKVbs}VXvsn&7P*+eoQ2;^87T)Iy=|GuiX$(gK zS4jTN?|()RwPv7=dcEEtN2skCp<2=@tqE=og`>ca5$?Z5(B%Sf0;DtaUocD=)EA%2 zX$(taI|BR;1g;kb*V_TwqHtXX?pk!eW5guHj;Qd6H0ylUjE(|t=7Kuuxv#J9nB64A zXn@MHIC#l_`v=rJSYBJhAX%fgxAzo6Pz;NNxOh<6Q35Y2B`GdeLCmgL_$@ldL9z={ z{`uE@eX#L5J3CVZ5(+s4T=>jymuB94k%s*e0W-Y39V%Yl-+*4HA3y@fH|TUaXl-r% zRm5g9&ZGbNNegy>+w?!f*6?i(Cop^NJka&&%ojJ2AXm~qd-m*mt9e57dt_ZMELd(BxB#u7wCG9_BmA6zvtKL3W_Sk(Ff25w zXodUv`T3IuSwUjd)zuXu%s#v;1bBio;97u3j~;CrUy8OrxXIhK+N;mQby ziZWscMj@TGY|SufG@1foEhtP0LaWuz#73P`2(v~2!y3GJp@GK6MnKZg)z!_ONwnHV zG<7@0Z_K7TXl`zXj*d>&hh~tT>9^+Q7HDZ{G4<1Ev^Hxe#7ccTOG`_=P039POXy#l zxck^F6CxraASfsZRhW(xppb{rdF~85s#_X=#v}n#$a5C+$ z$&w{-`SN9Q16aO%In>nDKt@IegocJfQ&W?iqK`5()YsQ%P<9r}3q^N#cgb)F+_-TA zU8f5cEm{Q0$;sg7=Lb11fD#3 z!mLBqkXf}dYz++!Wr+E8C@m@~a(ngaRh?V{t5&UIp!e+A!)EW~$&<_#&YnFBIXO8% z=|3SM0X#fB7+BN~8#Zi!%*;#(2nYbRT5UH0a&ugJ4^jVQ6M@^eZ-0h~;)PrSG|Tbv z@o?b40eJlQG2Fd-7vkdLVDH|&uz&x4wpj1oy9b939b)YtJb1u>l4Zzc$i>pr)7iqN zzT|qtA<*95uEG9OO#~_`DyHMCwa6tvGu(%wGZX1MYdJ(`p`Xr1KXU>&5v@2OUM2!K zBQu9XAY8c}tH-Yg$!wIweaS=iqcYrQfuF^`bLaV5O=RW-(30LJ0=c=lUt&Dh$Rc1P z6DK6?8?tXvaWTyEU0_!x771X;*B(50aJq>=Oiaw=moHz+TEzNyfB=T!han*$9%4N= z4i{AE`#^v`F?y9F<_TgU=Yp{{{e2)n<74E?M9i)XJ1->^ckbL#O7*w3a>9uOsFE;J z?S-YwPM(QhmlDU1ANR#v&~B@ka~1)beJbYA)jN`slD^{!*hMU--7sqw+A61=NPuCg zt*uod){h2k1*CO=b;>pZXw8kBL4Y=7h|!4U4qUi!f!xPsz_wD_o-JIs@C!82{gG@b z-w*+|rNrn{=i}ou)#ApUGx`84$K90H*-qMyP5m1nAkO}ugwf*pkif|E`Sa%$_8zM^ zntc)H3tTKqUa zKR=#gE}75#P}kbgqP+yDpc4u3uxZ4N7MwqSK8Y~dJX(}O6Yh7(M4w*2em#q7d%Omm zOcxdwvqRa)ol%1%=Th#F1k~zk_&sK~#ePSQrkGBtId}t2AjbM^!a|s2zqR4(flM{+ z=FOXzxFwiL&E3gdWYqLl`$=v?W8(fg4>5d2Scdd_8!tG^RPsa25k35P#^@*_0&u3Qsi~7>ojX`6*k-s7E7)&np ziMzYIZ(3T~?y9OPRbyjg8_l4!G3VA9a7ix-sSRaSbd@$N;Z>xAbdgS3ao!Qu;Dd}u znSwHV-MV!@VmbZ?7K7R72IW+<;I^*;6HpTg-9LT$v<}^`oZ3)Z>Vti~xQ_9pGcGR9 zDgT)uGLtwET6l9jJv|rr`}_Y87#J8pLih9?{l?o&;eA}+`ky^4S%e~mTCE<-*NJ2u p`v1d+Tqg4GT)BU{QXfb7`Ts3@Qh%HAtYrWI002ovPDHLkV1oF7(H8&! literal 0 HcmV?d00001 diff --git a/tangem-devkit/src/main/res/mipmap-xhdpi/ic_launcher.png b/tangem-devkit/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..e141514ce0900247eefc44a82cf73cbd47043392 GIT binary patch literal 1953 zcmZvddpr~R8^^z!%N8*i(Jc2-ZYB5IG3Bz&YMsa>GoyZlWhpU3mbsMNB1~f^KSe5; z>fnT|QtDJfDUvm{QJIcgKN}9mdHr6$KhEp*`@CMy^Sqvap68$E^M20l-{+^Mf>Hqh zsNr$m2i7a~?|>_>=TDpzX8>SF@!np6jQ7(uu|%yH-QM4PRI~05-wu1@VC;7+mez;~ zEXuNe^6!U)771Kp!I53yaIR^%6Jj?|Fj;EpJ2f1r$Z`%fOVaO+@ivM!Duh8chLn^a zJ~Jlyy4+baaldlO6C#U4LwA5bypBNcXAmvE$2WDzWB8kKvIBL3KwyJ%j~j2BbB;f|ifr)(5Q_)S3q%k;vnV-^Yyc;A}(isZ*y^LnOy=x`|~Y zcK!?X&CSgjy+vDXCiMFnf5h9Pv~S4hM&~ZPSd9R_Xw1^`GK^H?s=afPVko7J4i4VV z#poJ=3J7E2%fQjl&`=Ggxf1ADT3SMEU`c?ova&D1-`{i3A6Ec1b9F_Ih3>Qjb$&%? zIl9XPD6&8Z2C#)xk6pTACDHHYp5x0`w1!b_FD(|rqjuTblP|yk?O4kAIz@C7v%QSCr*^o z*J$DG`p;(_Y##3-7cWQsIWhV&(6i#1GBzk^^R=P4TiMx)!)PT1GqM^05+KCeH89$}s*FSR4+%I=(+50+F1Ytg&em1dqp? z8F5NWHIJV>$ar`^t1zn3RBl}N)WsB2&wAW8$)wT2_NsP@pwFb z%q#r>^$`eme%3?XKwn>HpHWRCWM+C&QZ@_>40N6vH5-`rLuDc^6#{*8Dhl`$-nXhD|rMbcQDSuGpf10gWvDWvoIy&6w1IDbqT*uj2 zz4FRR7@N&bAFcB%o}=`C`0zrl`Q}aWln7>iRgL_;;u=#9O_29r%; zR}aiCA`E^K1L^d%k%!0D{QP|4z2s@sM;)~uTj8^3=SWwgY9`8NWHM**#Kc^x(xT5( zMFFw4wsyq|E}5Eo9%j*}5c2lTn!LhN8v6=2uv-9)p>(?z_yP`{H3Vfw585tSq z!2SC*4Dxrv{^MHh$M3vzr)-Z)x{SX9L{)Gew~p`g)ABgp%C1swe(*yygCT1~kUqK2 zBjTKYKEE8LZy!<3u{BR9?#j7UP-pphV)6RfGIL8&7{#7XN z^E=ILmTMV(!B4x)K*5Z}s=KI9W}ByGU3O>b)^ea2@1_R5+0N*%))&Vg=el)`UmYU7%N_i+)^y#}I7IIRb5sbrD! z#I0@eX|;1A)ZoBG@?>Al$C)RN6;ze^l5x`cRJ%f<=p}0%jpbjeL^Xw4fcz%zN5h!a z%&H}^r}SHk9lz)HW+tn+WjCpx+uGX7yLN3`H7k66ZmybU3Lllp80p3(yPTYy&iu&M z@9aW02CV2gOGQm>O-)T*ZYkf1-p!75p)_AOg40sJ5!`$_&pJ3KFVAo2?b{&R!OXGl z%*^(NhM0obz>weZD;xuN#$}%!eLRn_ttixzHnRt6AU6AIhq)kzMnps?nNgQ;wfnRA zk@%WRm+pCBFc`0*hll+T9G!^E=3fd$1JLbZ-MS24@y!E`!hh99HD_>Es-Q<~76dR4 zFM7YpgBz8aIBj!D+eLz8)H3KMgD#(wP=rFEii=9|RuAlse&hqaFm5WG7`3C|WYMn5 j^&iuzOY-`!W}|yNn=G?o?rx|=ur9pMKJQz*sabyk+W&X9 literal 0 HcmV?d00001 diff --git a/tangem-devkit/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/tangem-devkit/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..8ae5df33196d29811ad0ca587455120bd96e3cc3 GIT binary patch literal 2465 zcmb7G2~d+s7EXu)3WzQvhY;8;6_h(FAh#|WL@oh^ELSoz3J4ehIYS_5jVR$z5RKfP z$bb;eppXzoLx$prCP;z^2tg1Mh(HcP2<)%U?9SFy?e0`{zkc=J>w4W^b-(Z3IOXN4 zwsqH55D28^cH)>XuyVdkWko>V_^a7G2(%@_?by-N$?xVzV{*O|L8-A727f_HZxSMM z6sHy{&*Wu^E04Qh=~h0AM6?*8qIkMyXC8D{X{}y+3NySg7yw5`69Mlv3Y)9UWxR5-@vwZCFmZvfpZsfv;}x_~ zn2;8*XqdVpXAB&4Nji?Z0OB*smcfwd zPi<%WkRWXoPOY~(g{lZP4ZSK-P~lemD(M1VX_7DYjTrK@in% z;;T#NYlOnDCcp_G0&Hnv`UbvM>I;t>oS4()26k5s45Z+|tx1^1&fxTO;%eWR7x+m{JRaEWNlBsgltoR=)E(!OQmJ?MX2x7zsK&`>3#SHcLM> zB6UM9X&PbJ3p&nHTB6w7sBhoB3v?J7toCEI#*8#ZmX(#!(!8DJm**B1ys`|^S1O0> zyIa_yD%z-ih^B7DFatK-cdrn<58|IOegM_bMOQ2tmvrl*O-Dnw4idF83WA9;@F$Y}`GewYj%7O^a*GjH;50FZM&@ z`(QMol74a}=aURlVxM#|ur>N0FLz{J_c65@ziH%EN`Q8YloDn0B(2_#MV40BRt;9d0 zj}^W-3(0Y5C@(JuQ|l1 zRvKb53(VX3jm*UrZa&*I3P_?eNDw^0n;Tock}o+j9VPEs+Yywz_}HJf7(MbVv9@}p zN`P-B4mX8s=}!20I~K)sTy?}J%SCLqsmV4NJx9l{^#0nqOwjakbNAZoSZ;T&TBgVV zENYQB1V9BQExKNHHPTnv& zPwFSY!l-gyCKP~@#)w@ht{71Ac(@Jm*muA9Fl;Pkri{r(Nwrpsa#usKqPLTli_<0O zfpmttx}bAo-BH0_H0Z|)LX(ROJqV}bIc-sFbLyd099c4kp>-QzeiBe*7k@FbU9Irc zvrmk+Mwc3P&bN*!*G0;)_mE!1S@ndD6H!xnTD~(l}P~7$YE)F2B0>a@B>l9uPCdy`QCT972cR zJxMdbH8Gsp35iQRM&Wn8K4v|^MZQAf2?FS(ao+u4y!P(8bEftldNvn>V=I!?Yv1gb zIELU?CbA69XVpoC$q>6cY6P)8k)x~&#*^JU46`+q-S3)1Ed>m4BJUaLPC5U&d&3gl z4mhm4K!aqZaK}4i>XvJEpgcz7FuR zYnZtQvZKJg(>CQ<# zXgqy2qt{$kWs3tpfmj-YG*DkEo|x;F*XFT5l+Aztyk<7cbv&+jjD5ksfj{V~NBto|*J4Jwd*B$^?L!ScybQQ(FnUdt-B}fC z;INhR+J-qH|HNNWo}1Xz8p)a-WFBzBl){`!LU(UQByw1?PK%7gRf9S*_LPmuoH3OO6#QwtH@v#l-0wJ0XoE*x8o;2B>x$!hJlx zF^z_=CJAg6REd8Jc;?Rnz9eh2)*4LS%1y#@C7!xa=t1Tkv!En{f^9A#AtBXa?}QaY z?K(UP# zs+|Z%Q`3)96VcUjc)vxz_QRM_SNLhY6VyYK4-|gw9RP^GG!YtKF8n`~!av=#xD|*8 bGr*OF!IgJ@xakbEULd#QUdQVGj=J(s3M!f0 literal 0 HcmV?d00001 diff --git a/tangem-devkit/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/tangem-devkit/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..a7d5201273bca0157ed375fc0127b59e32762c7f GIT binary patch literal 4553 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 literal 0 HcmV?d00001 diff --git a/tangem-devkit/src/main/res/mipmap-xxhdpi/ic_launcher.png b/tangem-devkit/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..645b3d79dc0df0b5cc9ecb5e2f03f63235964c8a GIT binary patch literal 3061 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 a4nG4po6IrKea52z`Z9rA8rEF96Z3CR2Z7B1 literal 0 HcmV?d00001 diff --git a/tangem-devkit/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/tangem-devkit/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..03e74f693a9dd3ebd352965b5c1570a50c9ddb3f GIT binary patch literal 4276 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 XMY9jbym~+uDrIBoaH8-y{O7*|H}2%C literal 0 HcmV?d00001 diff --git a/tangem-devkit/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/tangem-devkit/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..b9b1c8f1a666e0fa14c7ee1abd059e1c5a3529a0 GIT binary patch literal 10769 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 @@ -61,79 +61,79 @@ diff --git a/tangem-demo/src/main/res/values/colors.xml b/tangem-devkit/src/main/res/values/colors.xml similarity index 100% rename from tangem-demo/src/main/res/values/colors.xml rename to tangem-devkit/src/main/res/values/colors.xml diff --git a/tangem-demo/src/main/res/values/dimens.xml b/tangem-devkit/src/main/res/values/dimens.xml similarity index 100% rename from tangem-demo/src/main/res/values/dimens.xml rename to tangem-devkit/src/main/res/values/dimens.xml diff --git a/tangem-demo/src/main/res/values/dimens_item_widget.xml b/tangem-devkit/src/main/res/values/dimens_item_widget.xml similarity index 100% rename from tangem-demo/src/main/res/values/dimens_item_widget.xml rename to tangem-devkit/src/main/res/values/dimens_item_widget.xml diff --git a/tangem-devkit/src/main/res/values/ic_launcher_background.xml b/tangem-devkit/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 0000000000..c5d5899fdf --- /dev/null +++ b/tangem-devkit/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #FFFFFF + \ No newline at end of file diff --git a/tangem-demo/src/main/res/values/strings.xml b/tangem-devkit/src/main/res/values/strings.xml similarity index 96% rename from tangem-demo/src/main/res/values/strings.xml rename to tangem-devkit/src/main/res/values/strings.xml index 38c96cca46..07540ce2b6 100644 --- a/tangem-demo/src/main/res/values/strings.xml +++ b/tangem-devkit/src/main/res/values/strings.xml @@ -1,5 +1,5 @@ - Tangem Development Kit + Tangem DevKit Description diff --git a/tangem-demo/src/main/res/values/strings_action.xml b/tangem-devkit/src/main/res/values/strings_action.xml similarity index 100% rename from tangem-demo/src/main/res/values/strings_action.xml rename to tangem-devkit/src/main/res/values/strings_action.xml diff --git a/tangem-demo/src/main/res/values/strings_personalization.xml b/tangem-devkit/src/main/res/values/strings_personalization.xml similarity index 100% rename from tangem-demo/src/main/res/values/strings_personalization.xml rename to tangem-devkit/src/main/res/values/strings_personalization.xml diff --git a/tangem-demo/src/main/res/values/strings_response.xml b/tangem-devkit/src/main/res/values/strings_response.xml similarity index 100% rename from tangem-demo/src/main/res/values/strings_response.xml rename to tangem-devkit/src/main/res/values/strings_response.xml diff --git a/tangem-demo/src/main/res/values/strings_scan.xml b/tangem-devkit/src/main/res/values/strings_scan.xml similarity index 100% rename from tangem-demo/src/main/res/values/strings_scan.xml rename to tangem-devkit/src/main/res/values/strings_scan.xml diff --git a/tangem-demo/src/main/res/values/strings_tlv.xml b/tangem-devkit/src/main/res/values/strings_tlv.xml similarity index 100% rename from tangem-demo/src/main/res/values/strings_tlv.xml rename to tangem-devkit/src/main/res/values/strings_tlv.xml diff --git a/tangem-demo/src/main/res/values/styles.xml b/tangem-devkit/src/main/res/values/styles.xml similarity index 100% rename from tangem-demo/src/main/res/values/styles.xml rename to tangem-devkit/src/main/res/values/styles.xml diff --git a/tangem-demo/src/main/res/values/theme_debug.xml b/tangem-devkit/src/main/res/values/theme_debug.xml similarity index 100% rename from tangem-demo/src/main/res/values/theme_debug.xml rename to tangem-devkit/src/main/res/values/theme_debug.xml diff --git a/tangem-demo/src/main/res/xml/nfc_tech_filter.xml b/tangem-devkit/src/main/res/xml/nfc_tech_filter.xml similarity index 100% rename from tangem-demo/src/main/res/xml/nfc_tech_filter.xml rename to tangem-devkit/src/main/res/xml/nfc_tech_filter.xml From 19e6c34aa787702122098456239c453489f089f6 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 23 Apr 2020 14:28:54 +0300 Subject: [PATCH 5/8] Updated on 2026-08-14 --- .../src/main/java/com/tangem/CardSession.kt | 6 +++++ .../src/main/java/com/tangem/Config.kt | 14 +++++++++--- .../java/com/tangem/SessionEnvironment.kt | 5 ++++- .../src/main/java/com/tangem/SessionError.kt | 7 ++++++ .../src/main/java/com/tangem/TangemSdk.kt | 3 ++- .../java/com/tangem/common/extensions/Card.kt | 22 +++++++++++++++++++ .../tangem/devkit/ucase/ui/ActionViewModel.kt | 3 +++ 7 files changed, 55 insertions(+), 5 deletions(-) create mode 100644 tangem-core/src/main/java/com/tangem/common/extensions/Card.kt diff --git a/tangem-core/src/main/java/com/tangem/CardSession.kt b/tangem-core/src/main/java/com/tangem/CardSession.kt index 450c056997..03b8330350 100644 --- a/tangem-core/src/main/java/com/tangem/CardSession.kt +++ b/tangem-core/src/main/java/com/tangem/CardSession.kt @@ -8,6 +8,7 @@ import com.tangem.common.CompletionResult import com.tangem.common.apdu.CommandApdu import com.tangem.common.apdu.ResponseApdu import com.tangem.common.extensions.calculateSha256 +import com.tangem.common.extensions.getType import com.tangem.crypto.EncryptionHelper import com.tangem.crypto.FastEncryptionHelper import com.tangem.crypto.StrongEncryptionHelper @@ -136,6 +137,11 @@ class CardSession( callback(CompletionResult.Failure(SessionError.WrongCard())) return@run } + if (!environment.allowedCards.contains(result.data.getType())) { + stopWithError(SessionError.WrongCardType()) + callback(CompletionResult.Failure(SessionError.WrongCardType())) + return@run + } environment.card = result.data cardId = receivedCardId callback(CompletionResult.Success(result.data)) diff --git a/tangem-core/src/main/java/com/tangem/Config.kt b/tangem-core/src/main/java/com/tangem/Config.kt index d99c57fcf9..ac6301c808 100644 --- a/tangem-core/src/main/java/com/tangem/Config.kt +++ b/tangem-core/src/main/java/com/tangem/Config.kt @@ -1,5 +1,8 @@ package com.tangem +import com.tangem.common.extensions.CardType +import java.util.* + class Config( /** * Enables or disables Linked Terminal feature. @@ -18,16 +21,21 @@ class Config( the correctness of Terminal_Transaction_Signature using previously stored Terminal_PublicKey and, if correct, will skip security delay for the current SIGN operation. */ - val linkedTerminal: Boolean = true, + var linkedTerminal: Boolean = true, /** * If not null, it will be used to validate Issuer data and issuer extra data. * If null, issuerPublicKey from current card will be used. */ - val issuerPublicKey: ByteArray? = null, + var issuerPublicKey: ByteArray? = null, /** * Level of encryption used in communication with a Tangem Card. */ - val encryptionMode: EncryptionMode = EncryptionMode.NONE + var encryptionMode: EncryptionMode = EncryptionMode.NONE, + + /** + * Type of cards that are allowed to be interacted with in TangemSdk. + */ + var allowedCards: EnumSet = EnumSet.allOf(CardType::class.java) ) \ No newline at end of file diff --git a/tangem-core/src/main/java/com/tangem/SessionEnvironment.kt b/tangem-core/src/main/java/com/tangem/SessionEnvironment.kt index 0dabbc74d6..d1a052b155 100644 --- a/tangem-core/src/main/java/com/tangem/SessionEnvironment.kt +++ b/tangem-core/src/main/java/com/tangem/SessionEnvironment.kt @@ -2,8 +2,10 @@ package com.tangem import com.tangem.commands.Card import com.tangem.commands.EllipticCurve +import com.tangem.common.extensions.CardType import com.tangem.common.extensions.calculateSha256 import com.tangem.crypto.CryptoUtils.generatePublicKey +import java.util.* /** @@ -20,7 +22,8 @@ data class SessionEnvironment( val terminalKeys: KeyPair? = null, var encryptionMode: EncryptionMode = EncryptionMode.NONE, var encryptionKey: ByteArray? = null, - val cvc: ByteArray? = null + val cvc: ByteArray? = null, + var allowedCards: EnumSet ) { fun setPin1(pin1: String) { diff --git a/tangem-core/src/main/java/com/tangem/SessionError.kt b/tangem-core/src/main/java/com/tangem/SessionError.kt index 07209b6a3f..b5f702ceb2 100644 --- a/tangem-core/src/main/java/com/tangem/SessionError.kt +++ b/tangem-core/src/main/java/com/tangem/SessionError.kt @@ -106,6 +106,13 @@ sealed class SessionError(val code: Int) : Exception() { */ class HashSizeMustBeEqual : SessionError(3005) + + /** + * This error is returned when a user scans a card of a [com.tangem.common.extensions.CardType] + * that is not specified in [Config.allowedCards]. + */ + class WrongCardType : SessionError(3006) + /** * This error is returned when [com.tangem.TangemSdk] was called with a new [Task], * while a previous [Task] is still in progress. diff --git a/tangem-core/src/main/java/com/tangem/TangemSdk.kt b/tangem-core/src/main/java/com/tangem/TangemSdk.kt index 145efc088e..27d1d79fc4 100644 --- a/tangem-core/src/main/java/com/tangem/TangemSdk.kt +++ b/tangem-core/src/main/java/com/tangem/TangemSdk.kt @@ -367,7 +367,8 @@ class TangemSdk( private fun buildEnvironment(): SessionEnvironment { val terminalKeys = if (config.linkedTerminal) terminalKeysService?.getKeys() else null return SessionEnvironment( - terminalKeys = terminalKeys + terminalKeys = terminalKeys, + allowedCards = config.allowedCards ) } diff --git a/tangem-core/src/main/java/com/tangem/common/extensions/Card.kt b/tangem-core/src/main/java/com/tangem/common/extensions/Card.kt new file mode 100644 index 0000000000..97243f3655 --- /dev/null +++ b/tangem-core/src/main/java/com/tangem/common/extensions/Card.kt @@ -0,0 +1,22 @@ +package com.tangem.common.extensions + +import com.tangem.commands.Card + +fun Card.getType(): CardType { + val firmware = this.firmwareVersion ?: return CardType.Unknown + return when { + firmware.endsWith("d SDK") -> { + CardType.Sdk + } + firmware.endsWith("r") -> { + CardType.Release + } + else -> { + CardType.Unknown + } + } +} + +enum class CardType { + Sdk, Release, Unknown +} \ No newline at end of file diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/ActionViewModel.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/ActionViewModel.kt index 7774441903..fdd0f1ea2f 100644 --- a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/ActionViewModel.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/ActionViewModel.kt @@ -9,6 +9,7 @@ import com.tangem.TangemSdk import com.tangem.commands.Card import com.tangem.commands.CommandResponse import com.tangem.common.CompletionResult +import com.tangem.common.extensions.CardType import com.tangem.devkit._arch.SingleLiveEvent import com.tangem.devkit._arch.structure.Id import com.tangem.devkit._arch.structure.Payload @@ -20,6 +21,7 @@ import com.tangem.devkit.ucase.resources.ActionType import com.tangem.devkit.ucase.tunnel.ViewScreen import com.tangem.devkit.ucase.variants.personalize.converter.ItemTypes import ru.dev.gbixahue.eu4d.lib.android.global.log.Log +import java.util.* /** [REDACTED_AUTHOR] @@ -43,6 +45,7 @@ class ActionViewModel(private val itemsManager: ItemsManager) : ViewModel(), Lif fun setCardManager(tangemSdk: TangemSdk) { this.tangemSdk = tangemSdk + this.tangemSdk.config.allowedCards = EnumSet.of(CardType.Sdk) } @Deprecated("Events must be send directly from the Widget") From 6fa128da8f950fe551ac94e5cdc22c370f87a088 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 23 Apr 2020 14:36:17 +0300 Subject: [PATCH 6/8] Updated on 2026-08-14 --- app/src/main/res/values/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ce8a2776e1..3081823d17 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -53,7 +53,7 @@ This card has enforced security delay Please hold the card firmly\n until the operation is completed… You may be required to repeat this operation a few times depending on the NFC performance of your smartphone.\n This is made for safety of your funds. - This is a genuine Tangem card. Please follow instructions written on the card to install the official app. + Uh oh!\nYour Tangem card was made to work with a different application. Please see the name and instructions on your card, and install the correct app. Manage user PIN1… From 3f83609c2cfbd2d7d58fefdf28905e271d4c52b9 Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 23 Apr 2020 15:05:02 +0300 Subject: [PATCH 7/8] Updated on 2026-08-14 --- tangem-core/src/main/java/com/tangem/CardFilter.kt | 14 ++++++++++++++ .../src/main/java/com/tangem/CardSession.kt | 3 ++- tangem-core/src/main/java/com/tangem/Config.kt | 7 ++----- .../src/main/java/com/tangem/SessionEnvironment.kt | 4 +--- tangem-core/src/main/java/com/tangem/TangemSdk.kt | 2 +- .../com/tangem/devkit/ucase/ui/ActionViewModel.kt | 2 +- 6 files changed, 21 insertions(+), 11 deletions(-) create mode 100644 tangem-core/src/main/java/com/tangem/CardFilter.kt diff --git a/tangem-core/src/main/java/com/tangem/CardFilter.kt b/tangem-core/src/main/java/com/tangem/CardFilter.kt new file mode 100644 index 0000000000..d1275d1d1d --- /dev/null +++ b/tangem-core/src/main/java/com/tangem/CardFilter.kt @@ -0,0 +1,14 @@ +package com.tangem + +import com.tangem.common.extensions.CardType +import java.util.* + +/** + * Filter that can be used to limit cards that can be interacted with in TangemSdk. + * + * @property allowedCardTypes Type of cards that are allowed to be interacted with in TangemSdk. + */ +data class CardFilter( + + var allowedCardTypes: EnumSet = EnumSet.allOf(CardType::class.java) +) \ No newline at end of file diff --git a/tangem-core/src/main/java/com/tangem/CardSession.kt b/tangem-core/src/main/java/com/tangem/CardSession.kt index 03b8330350..f37fa310af 100644 --- a/tangem-core/src/main/java/com/tangem/CardSession.kt +++ b/tangem-core/src/main/java/com/tangem/CardSession.kt @@ -137,7 +137,8 @@ class CardSession( callback(CompletionResult.Failure(SessionError.WrongCard())) return@run } - if (!environment.allowedCards.contains(result.data.getType())) { + val allowedCardTypes = environment.cardFilter.allowedCardTypes + if (!allowedCardTypes.contains(result.data.getType())) { stopWithError(SessionError.WrongCardType()) callback(CompletionResult.Failure(SessionError.WrongCardType())) return@run diff --git a/tangem-core/src/main/java/com/tangem/Config.kt b/tangem-core/src/main/java/com/tangem/Config.kt index ac6301c808..20c5c849bd 100644 --- a/tangem-core/src/main/java/com/tangem/Config.kt +++ b/tangem-core/src/main/java/com/tangem/Config.kt @@ -1,8 +1,5 @@ package com.tangem -import com.tangem.common.extensions.CardType -import java.util.* - class Config( /** * Enables or disables Linked Terminal feature. @@ -35,7 +32,7 @@ class Config( var encryptionMode: EncryptionMode = EncryptionMode.NONE, /** - * Type of cards that are allowed to be interacted with in TangemSdk. + * Filter that can be used to limit cards that can be interacted with in TangemSdk. */ - var allowedCards: EnumSet = EnumSet.allOf(CardType::class.java) + val cardFilter: CardFilter = CardFilter() ) \ No newline at end of file diff --git a/tangem-core/src/main/java/com/tangem/SessionEnvironment.kt b/tangem-core/src/main/java/com/tangem/SessionEnvironment.kt index d1a052b155..6400e98e39 100644 --- a/tangem-core/src/main/java/com/tangem/SessionEnvironment.kt +++ b/tangem-core/src/main/java/com/tangem/SessionEnvironment.kt @@ -2,10 +2,8 @@ package com.tangem import com.tangem.commands.Card import com.tangem.commands.EllipticCurve -import com.tangem.common.extensions.CardType import com.tangem.common.extensions.calculateSha256 import com.tangem.crypto.CryptoUtils.generatePublicKey -import java.util.* /** @@ -23,7 +21,7 @@ data class SessionEnvironment( var encryptionMode: EncryptionMode = EncryptionMode.NONE, var encryptionKey: ByteArray? = null, val cvc: ByteArray? = null, - var allowedCards: EnumSet + var cardFilter: CardFilter ) { fun setPin1(pin1: String) { diff --git a/tangem-core/src/main/java/com/tangem/TangemSdk.kt b/tangem-core/src/main/java/com/tangem/TangemSdk.kt index 27d1d79fc4..c00126d09f 100644 --- a/tangem-core/src/main/java/com/tangem/TangemSdk.kt +++ b/tangem-core/src/main/java/com/tangem/TangemSdk.kt @@ -368,7 +368,7 @@ class TangemSdk( val terminalKeys = if (config.linkedTerminal) terminalKeysService?.getKeys() else null return SessionEnvironment( terminalKeys = terminalKeys, - allowedCards = config.allowedCards + cardFilter = config.cardFilter ) } diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/ActionViewModel.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/ActionViewModel.kt index fdd0f1ea2f..3c04d86d59 100644 --- a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/ActionViewModel.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/ui/ActionViewModel.kt @@ -45,7 +45,7 @@ class ActionViewModel(private val itemsManager: ItemsManager) : ViewModel(), Lif fun setCardManager(tangemSdk: TangemSdk) { this.tangemSdk = tangemSdk - this.tangemSdk.config.allowedCards = EnumSet.of(CardType.Sdk) + this.tangemSdk.config.cardFilter.allowedCardTypes = EnumSet.of(CardType.Sdk) } @Deprecated("Events must be send directly from the Widget") From fcac61eb69ef9b95e3f023908ab1d19f07a067bd Mon Sep 17 00:00:00 2001 From: Tangem Date: Thu, 23 Apr 2020 18:39:29 +0300 Subject: [PATCH 8/8] Updated on 2026-08-14 --- .../paramsManager/managers/SimpleManagers.kt | 5 +-- .../ParamChangeConsequence.kt | 34 +++++-------------- 2 files changed, 11 insertions(+), 28 deletions(-) diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/managers/SimpleManagers.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/managers/SimpleManagers.kt index 97e1a9f2db..a2a7ab9e8b 100644 --- a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/managers/SimpleManagers.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/managers/SimpleManagers.kt @@ -4,7 +4,7 @@ import com.tangem.devkit._arch.structure.impl.EditTextItem import com.tangem.devkit.ucase.domain.actions.DepersonalizeAction import com.tangem.devkit.ucase.domain.actions.ScanAction import com.tangem.devkit.ucase.domain.actions.SignAction -import com.tangem.devkit.ucase.domain.paramsManager.triggers.changeConsequence.SignScanConsequence +import com.tangem.devkit.ucase.domain.paramsManager.triggers.changeConsequence.CardIdConsequence import com.tangem.devkit.ucase.variants.TlvId /** @@ -15,6 +15,7 @@ class ScanItemsManager : BaseItemsManager(ScanAction()) class DepersonalizeItemsManager : BaseItemsManager(DepersonalizeAction()) { init { + setItemChangeConsequences(CardIdConsequence()) setItems(listOf(EditTextItem(TlvId.CardId, null))) } } @@ -22,7 +23,7 @@ class DepersonalizeItemsManager : BaseItemsManager(DepersonalizeAction()) { class SignItemsManager : BaseItemsManager(SignAction()) { init { - setItemChangeConsequences(SignScanConsequence()) + setItemChangeConsequences(CardIdConsequence()) setItems(listOf( EditTextItem(TlvId.CardId, null), EditTextItem(TlvId.TransactionOutHash, "Data used for hashing") diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/triggers/changeConsequence/ParamChangeConsequence.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/triggers/changeConsequence/ParamChangeConsequence.kt index 5a455a3989..6da18ea8b7 100644 --- a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/triggers/changeConsequence/ParamChangeConsequence.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/triggers/changeConsequence/ParamChangeConsequence.kt @@ -1,13 +1,7 @@ package com.tangem.devkit.ucase.domain.paramsManager.triggers.changeConsequence -import com.tangem.commands.Card -import com.tangem.commands.EllipticCurve -import com.tangem.common.extensions.calculateSha256 -import com.tangem.common.extensions.calculateSha512 -import com.tangem.common.extensions.toHexString import com.tangem.devkit._arch.structure.PayloadHolder import com.tangem.devkit._arch.structure.abstraction.Item -import com.tangem.devkit._arch.structure.abstraction.findItem import com.tangem.devkit.ucase.domain.paramsManager.PayloadKey import com.tangem.devkit.ucase.tunnel.ActionView import com.tangem.devkit.ucase.variants.TlvId @@ -20,29 +14,17 @@ import ru.dev.gbixahue.eu4d.lib.android.global.threading.postUI * of the incoming parameter */ interface ItemsChangeConsequence { - fun affectChanges(payload: PayloadHolder, changedItem: Item, itemList: List): List? + fun affectChanges(payload: PayloadHolder, changedItem: Item, itemList: List): List } -class SignScanConsequence : ItemsChangeConsequence { +class CardIdConsequence : ItemsChangeConsequence { - override fun affectChanges(payload: PayloadHolder, changedItem: Item, itemList: List): List? { - if (changedItem.id != TlvId.CardId) return null + override fun affectChanges(payload: PayloadHolder, changedItem: Item, itemList: List): List { + val affectedList = mutableListOf() + if (changedItem.id != TlvId.CardId) return affectedList - val hashItem = itemList.findItem(TlvId.TransactionOutHash) ?: return null - val affectedItems = mutableListOf(hashItem) - val card = payload.remove(PayloadKey.card) as Card? - if (card == null) { - hashItem.restoreDefaultData() - postUI { (payload.get(PayloadKey.actionView) as? ActionView)?.enableActionFab(false) } - } else { - val dataForHashing = hashItem.getData() as? String ?: "Any data mother...s" - val hashedData = when (card.curve) { - EllipticCurve.Secp256k1 -> dataForHashing.calculateSha256() - EllipticCurve.Ed25519 -> dataForHashing.calculateSha512() - else -> return null - } - hashItem.setData(hashedData.toHexString()) - } - return affectedItems.toList() + val cidDataIsNull = changedItem.getData() == null + postUI { (payload.get(PayloadKey.actionView) as? ActionView)?.enableActionFab(!cidDataIsNull) } + return affectedList } } \ No newline at end of file