Skip to content
Snippets Groups Projects
Commit 65d66118 authored by vjrj's avatar vjrj
Browse files

More work with multicards

parent 35188b84
No related branches found
No related tags found
No related merge requests found
......@@ -223,5 +223,6 @@
"qr_scanner_flash_on": "FLASH ON",
"qr_scanner_flash_off": "FLASH OFF",
"qr_scanner_title": "Scan QR Code",
"display_amounts_du": "Display amounts in DU"
"display_amounts_du": "Display amounts in DU",
"wallet_already_imported": "Wallet already imported"
}
......@@ -226,5 +226,6 @@
"qr_scanner_flash_on": "FLASH ON",
"qr_scanner_flash_off": "FLASH OFF",
"qr_scanner_title": "Escanea un QR Code",
"display_amounts_du": "Mostrar importes en DU"
"display_amounts_du": "Mostrar importes en DU",
"wallet_already_imported": "Monedero ya importado"
}
......@@ -8,16 +8,18 @@ part 'cesium_card.g.dart';
@JsonSerializable()
@CopyWith()
class CesiumCard implements IsJsonSerializable<CesiumCard> {
CesiumCard(
{required this.seed,
required this.pubKey,
required this.name,
required this.theme});
class CesiumCard
implements IsJsonSerializable<CesiumCard> {
CesiumCard({required this.seed,
required this.pubKey,
required this.name,
required this.theme});
factory CesiumCard.fromJson(Map<String, dynamic> json) =>
_$CesiumCardFromJson(json);
static const String unknown = 'unknown';
final String pubKey;
final String seed;
final CreditCardTheme theme;
......
......@@ -155,4 +155,13 @@ class SharedPreferencesHelper {
cesiumCards[0] = defCesiumCard;
saveCesiumCards();
}
bool has(String wallet) {
for (final CesiumCard card in cesiumCards) {
if (card.pubKey == wallet) {
return true;
}
}
return false;
}
}
......@@ -6,8 +6,11 @@ import 'package:share_plus/share_plus.dart';
import '../../data/models/app_cubit.dart';
import '../../data/models/app_state.dart';
import '../../data/models/cesium_card.dart';
import '../../data/models/credit_card_themes.dart';
import '../../data/models/theme_cubit.dart';
import '../../g1/currency.dart';
import '../../g1/g1_helper.dart';
import '../../shared_prefs.dart';
import '../tutorial.dart';
import '../tutorial_keys.dart';
......@@ -253,11 +256,25 @@ class _FifthScreenState extends State<FifthScreen> {
} else {
// if (method == 'clipboard') {
return ImportClipboardDialog(onImport: (String wallet) {
showDialog(
context: context,
builder: (BuildContext context) {
return ImportDialog(wallet: wallet);
});
if (validateKey(wallet)) {
// It's a pubkey, let's think is a cesium wallet
if (!SharedPreferencesHelper().has(wallet)) {
SharedPreferencesHelper().addCesiumCard(CesiumCard(
name: '',
theme: CreditCardThemes.theme2,
pubKey: extractPublicKey(wallet),
seed: CesiumCard.unknown));
} else {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(tr('wallet_already_imported'))));
}
} else {
showDialog(
context: context,
builder: (BuildContext context) {
return ImportDialog(wallet: wallet);
});
}
});
}
},
......
......@@ -34,7 +34,7 @@ class _ImportClipboardDialogState extends State<ImportClipboardDialog> {
Text(tr('import_wallet_from_clipboard_desc')),
TextField(
controller: _textController,
maxLines: 5,
maxLines: 3,
decoration: InputDecoration(hintText: tr('paste_here')),
),
const SizedBox(height: 10),
......
......@@ -19,13 +19,13 @@ class _CardStackState extends State<CardStack> {
alignment: Alignment.center,
children: <Widget>[
...List<Widget>.generate(
1,
SharedPreferencesHelper().cesiumCards.length,
(int index) => Positioned(
top: 50.0 * index,
child: SizedBox(
height: 200,
child: CreditCardMini(
pubKey: SharedPreferencesHelper().getPubKey())),
card: SharedPreferencesHelper().cards[index])),
),
),
Positioned(
......
import 'package:flutter/material.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import '../../../shared_prefs.dart';
import '../../../data/models/cesium_card.dart';
import '../../../data/models/credit_card_themes.dart';
import '../../ui_helpers.dart';
import 'card_name_editable.dart';
import 'card_text_style.dart';
class CreditCardMini extends StatelessWidget {
const CreditCardMini({super.key, required this.pubKey});
const CreditCardMini({super.key, required this.card});
final String pubKey;
final CesiumCard card;
@override
Widget build(BuildContext context) {
......@@ -39,8 +39,10 @@ class CreditCardMini extends StatelessWidget {
begin: Alignment.bottomLeft,
end: Alignment.topRight,
colors: <Color>[
Color(int.parse("${dotenv.env['CARD_COLOR_LEFT']}")),
Color(int.parse("${dotenv.env['CARD_COLOR_RIGHT']}")),
CreditCardThemes.theme3.primaryColor,
CreditCardThemes.theme3.secondaryColor,
// card.theme.primaryColor,
// card.theme.secondaryColor,
],
),
),
......@@ -58,18 +60,18 @@ class CreditCardMini extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
// mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Padding(
padding: EdgeInsets.symmetric(
horizontal: cardInternalElPadding,
vertical: cardInternalElPadding),
child: Row(children: <Widget>[
Expanded(
child: CardNameText(
currentText:
SharedPreferencesHelper().getName(),
onTap: () {},
)),
])),
if (card.name.isNotEmpty)
Padding(
padding: EdgeInsets.symmetric(
horizontal: cardInternalElPadding,
vertical: cardInternalElPadding),
child: Row(children: <Widget>[
Expanded(
child: CardNameText(
currentText: card.name,
onTap: () {},
)),
])),
Padding(
padding: EdgeInsets.symmetric(
horizontal: cardInternalElPadding,
......@@ -78,11 +80,11 @@ class CreditCardMini extends StatelessWidget {
GestureDetector(
onTap: () => showQrDialog(
context: context,
publicKey: pubKey),
publicKey: card.pubKey),
child: FittedBox(
fit: BoxFit.scaleDown,
child: Text(
'${pubKey.substring(0, 4)} ${pubKey.substring(4, 8)}',
'${card.pubKey.substring(0, 4)} ${card.pubKey.substring(4, 8)}',
style: cardTextStyle(context,
fontSize: 16),
))),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment