Updated on 2026-08-14

This commit is contained in:
Tangem 2020-05-14 16:00:55 +03:00
commit 6b018d8e94
5 changed files with 23 additions and 6 deletions

View file

@ -417,6 +417,7 @@ class VerifyCardFragment : BaseFragment(), NavigationResultListener, NfcAdapter.
requestPIN2Count = 0
val engine = CoinEngineFactory.create(ctx) ?: return
if (!engine.hasBalanceInfo()) {
Toast.makeText(context, R.string.general_error_cannot_erase_wallet_with_non_zero_balance, Toast.LENGTH_LONG).show()
return
}
if (engine.isBalanceNotZero) {

View file

@ -65,6 +65,16 @@ class PersonalizationJson {
val builder = GsonBuilder().setPrettyPrinting()
return builder.create()
}
fun clarifyJson(json: String): String {
val unsupportedQuotes = mutableListOf("", "", "«", "»")
var clearedJson = json
unsupportedQuotes.forEach {
if (clearedJson.contains(it)) clearedJson = clearedJson.replace(it, "\"")
}
// 160 is 00A0 symbol (No-Break Space)
return clearedJson.replace(160.toChar().toString(), "").trim()
}
}
}

View file

@ -148,7 +148,7 @@ class PersonalizationFragment : BaseCardActionFragment(), PersonalizationPresetV
val tvJsonImport = parent.findViewById<EditText>(R.id.et_json_import)
val btnImportJson = parent.findViewById<Button>(R.id.btn_import_json)
btnImportJson.setOnClickListener {
presetManager.importJsonConfig(tvJsonImport.text.toString().trim())
presetManager.importJsonConfig(tvJsonImport.text.toString())
}
}
@ -255,8 +255,7 @@ class PersonalizationFragment : BaseCardActionFragment(), PersonalizationPresetV
dlg.setButton(DialogInterface.BUTTON_POSITIVE, getString(R.string.btn_ok)) { dialog, which ->
val tvName = dlgController.view?.findViewById<EditText>(R.id.et_item) ?: return@setButton
val name = tvName.text.toString()
if (name.isEmpty()) showSnackbar(R.string.error_nothing_to_import)
else presetManager.importJsonConfig(name)
presetManager.importJsonConfig(name)
}
dlgController.onShowCallback = {
dlgController.view?.findViewById<TextView>(R.id.et_item)?.let {

View file

@ -7,6 +7,7 @@ import com.tangem.devkit.ucase.variants.personalize.converter.PersonalizationCon
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
class PersonalizationPresetManager(
private val itemsManager: ItemsManager,
@ -47,12 +48,17 @@ class PersonalizationPresetManager(
}
fun importJsonConfig(jsonString: String) {
if (jsonString.isEmpty()) return
if (jsonString.isEmpty()) {
view.showSnackbar(R.string.error_nothing_to_import)
return
}
val jsonDto = try {
PersonalizationJson.getJsonConverter().fromJson(jsonString, PersonalizationJson::class.java)
val preparedJson = PersonalizationJson.clarifyJson(jsonString)
PersonalizationJson.getJsonConverter().fromJson(preparedJson, PersonalizationJson::class.java)
} catch (ex: Exception) {
view.showSnackbar("Can't convert imported string to Json object. Error: $ex")
view.showSnackbar(R.string.error_cant_convert_json)
Log.e(this, ex)
return
}

View file

@ -10,6 +10,7 @@
<string name="hint_paste">Paste</string>
<string name="error_nothing_to_import">Nothing to import</string>
<string name="error_cant_convert_json">Can\'t convert imported string to Json object</string>
<string name="error_not_saved">Not saved</string>
<string name="personalize">Personalize</string>