From 7fb63a6a715706473e2e3c3ab173afc77a139aee Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 29 Apr 2020 12:04:40 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../personalization/entities/CardConfig.kt | 1 + .../devkit/extensions/AndroidComponents.kt | 10 ++++ .../managers/PersonalizationItemsManager.kt | 25 ++++++++ .../personalize/ui/PersonalizationFragment.kt | 57 ++++++++++++++----- .../responses/ui/widget/ResponseWidget.kt | 10 +--- .../res/layout/fg_personalization_footer.xml | 46 +++++++++++++++ .../main/res/layout/view_simple_button.xml | 20 ------- 7 files changed, 128 insertions(+), 41 deletions(-) create mode 100644 tangem-devkit/src/main/res/layout/fg_personalization_footer.xml delete mode 100644 tangem-devkit/src/main/res/layout/view_simple_button.xml diff --git a/tangem-core/src/main/java/com/tangem/commands/personalization/entities/CardConfig.kt b/tangem-core/src/main/java/com/tangem/commands/personalization/entities/CardConfig.kt index 2cfd173be1..4417374a87 100644 --- a/tangem-core/src/main/java/com/tangem/commands/personalization/entities/CardConfig.kt +++ b/tangem-core/src/main/java/com/tangem/commands/personalization/entities/CardConfig.kt @@ -12,6 +12,7 @@ data class NdefRecord( URI, AAR, TEXT } + @delegate:Transient val valueInBytes: ByteArray by lazy { value.toByteArray() } } diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/extensions/AndroidComponents.kt b/tangem-devkit/src/main/java/com/tangem/devkit/extensions/AndroidComponents.kt index 032e162d53..c24ff4494c 100644 --- a/tangem-devkit/src/main/java/com/tangem/devkit/extensions/AndroidComponents.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/extensions/AndroidComponents.kt @@ -1,5 +1,8 @@ package com.tangem.devkit.extensions +import android.content.ClipData +import android.content.ClipboardManager +import android.content.Context import android.content.Intent import androidx.activity.ComponentActivity import androidx.fragment.app.Fragment @@ -7,6 +10,13 @@ import androidx.fragment.app.Fragment /** [REDACTED_AUTHOR] */ +fun Context.copyToClipboard(value: Any, label: String = "") { + val clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as? ClipboardManager ?: return + + val clip: ClipData = ClipData.newPlainText(label, value.toString()) + clipboard.setPrimaryClip(clip) +} + fun Fragment.shareText(text: String) { requireActivity().shareText(text) } diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/managers/PersonalizationItemsManager.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/managers/PersonalizationItemsManager.kt index a8125f2a51..8de004804e 100644 --- a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/managers/PersonalizationItemsManager.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/domain/paramsManager/managers/PersonalizationItemsManager.kt @@ -2,12 +2,16 @@ package com.tangem.devkit.ucase.domain.paramsManager.managers import androidx.lifecycle.Lifecycle import androidx.lifecycle.OnLifecycleEvent +import com.google.gson.Gson import com.tangem.TangemSdk 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.converter.PersonalizationJsonConverter import com.tangem.devkit.ucase.variants.personalize.dto.PersonalizationConfig +import com.tangem.devkit.ucase.variants.personalize.dto.PersonalizationJson +import ru.dev.gbixahue.eu4d.lib.android.global.log.Log /** [REDACTED_AUTHOR] @@ -27,6 +31,27 @@ class PersonalizationItemsManager( action.executeMainAction(this, getAttrsForAction(tangemSdk), callback) } + fun importJsonConfig(jsonString: String) { + if (jsonString.isEmpty()) return + + val jsonDto = try { + Gson().fromJson(jsonString, PersonalizationJson::class.java) + } catch (ex: Exception) { + Log.e(this, "Can't convert imported string to Json object. Error: $ex") + return + } + + val config = PersonalizationJsonConverter().aToB(jsonDto) + setItems(converter.convert(config)) + } + + fun exportJsonConfig(): String { + val config = converter.convert(itemList, PersonalizationConfig.default()) + val jsonDto = PersonalizationJsonConverter().bToA(config) + val jsonString = Gson().toJson(jsonDto) + return jsonString + } + @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) fun onDestroy() { val config = converter.convert(itemList, PersonalizationConfig.default()) diff --git a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/PersonalizationFragment.kt b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/PersonalizationFragment.kt index 9fbc9d8b01..45033f5484 100644 --- a/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/PersonalizationFragment.kt +++ b/tangem-devkit/src/main/java/com/tangem/devkit/ucase/variants/personalize/ui/PersonalizationFragment.kt @@ -24,6 +24,7 @@ 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.copyToClipboard import com.tangem.devkit.extensions.view.beginDelayedTransition import com.tangem.devkit.ucase.domain.paramsManager.ItemsManager import com.tangem.devkit.ucase.domain.paramsManager.PayloadKey @@ -38,6 +39,7 @@ import com.tangem.devkit.ucase.variants.personalize.ui.presets.PersonalizationPr 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.afterTextChanged 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 @@ -50,7 +52,12 @@ import ru.dev.gbixahue.eu4d.lib.android.global.threading.postWork */ class PersonalizationFragment : BaseCardActionFragment(), PersonalizationPresetView { - override val itemsManager: ItemsManager by lazy { PersonalizationItemsManager(PersonalizationConfigStore(requireContext())) } + private lateinit var personalizationItemsManager: PersonalizationItemsManager + + override val itemsManager: ItemsManager by lazy { + personalizationItemsManager = PersonalizationItemsManager(PersonalizationConfigStore(requireContext())) + personalizationItemsManager + } override fun getLayoutId(): Int = R.layout.fg_base_action_layout @@ -106,20 +113,44 @@ class PersonalizationFragment : BaseCardActionFragment(), PersonalizationPresetV override fun widgetsWasCreated() { super.widgetsWasCreated() - val btnContainer = contentContainer.inflate(R.layout.view_simple_button) - val btn = btnContainer.findViewById