From 2eaf1594495f981d6328b92d18d9059255e928cf Mon Sep 17 00:00:00 2001 From: Sun Date: Wed, 6 Oct 2021 15:05:11 +0800 Subject: [PATCH] update gid and addr print & show --- lib/account.dart | 22 --------------- lib/apps/assistant/message.dart | 11 ++++---- lib/apps/chat/add.dart | 47 ++++++++++++++----------------- lib/apps/chat/detail.dart | 4 +-- lib/apps/device/models.dart | 4 --- lib/apps/device/page.dart | 15 ++++------ lib/apps/domain/page.dart | 6 ++-- lib/apps/group_chat/add.dart | 49 ++++++++++++++------------------- lib/apps/group_chat/detail.dart | 13 +++++---- lib/global.dart | 9 ------ lib/pages/account_restore.dart | 14 +++++----- lib/pages/home.dart | 2 +- lib/pages/setting/network.dart | 4 +-- lib/pages/setting/profile.dart | 12 ++++---- lib/provider.dart | 4 +-- lib/security.dart | 3 +- lib/utils/better_print.dart | 42 ++++++++++++++++++++-------- lib/widgets/chat_message.dart | 7 ++--- lib/widgets/user_info.dart | 14 ++++++---- 19 files changed, 125 insertions(+), 157 deletions(-) diff --git a/lib/account.dart b/lib/account.dart index 7076ae5..a2f77e8 100644 --- a/lib/account.dart +++ b/lib/account.dart @@ -22,8 +22,6 @@ class Account { this.hasNew = false; } - String get id => 'EH' + this.gid.toUpperCase(); - String encodeAvatar() { if (this.avatar != null && this.avatar!.length > 1) { return base64.encode(this.avatar!); @@ -40,26 +38,6 @@ class Account { } } - String printShortId() { - final id = this.id; - final len = id.length; - if (len > 4) { - return id.substring(0, 4) + "..." + id.substring(len - 4, len); - } else { - return id; - } - } - - String printId() { - final id = this.id; - final len = id.length; - if (len > 8) { - return id.substring(0, 8) + "..." + id.substring(len - 8, len); - } else { - return id; - } - } - Avatar showAvatar({double width = 45.0, bool online = false, bool needOnline = true}) { return Avatar( width: width, diff --git a/lib/apps/assistant/message.dart b/lib/apps/assistant/message.dart index fe2d943..c66abbd 100644 --- a/lib/apps/assistant/message.dart +++ b/lib/apps/assistant/message.dart @@ -200,9 +200,8 @@ class AssistantMessage extends StatelessWidget { const SizedBox(height: 10.0), const Divider(height: 1.0, color: Color(0x40ADB0BB)), const SizedBox(height: 10.0), - _infoListTooltip(Icons.person, color.primary, gid), - _infoListTooltip( - Icons.location_on, color.primary, "0x" + infos[2]), + _infoListTooltip(Icons.person, color.primary, gidText(gid), gidPrint(gid)), + _infoListTooltip(Icons.location_on, color.primary, addrText(infos[2]), addrPrint(infos[2])), Container( width: 300.0, padding: const EdgeInsets.symmetric(vertical: 10.0), @@ -250,7 +249,7 @@ class AssistantMessage extends StatelessWidget { style: TextStyle( color: color.onPrimary, fontSize: 16.0)), SizedBox(height: 5.0), - Text(betterPrint(gid), + Text(gidPrint(gid), style: TextStyle(color: Colors.grey, fontSize: 12.0)), ])), ]), @@ -262,7 +261,7 @@ class AssistantMessage extends StatelessWidget { ]))); } - Widget _infoListTooltip(icon, color, text) { + Widget _infoListTooltip(icon, color, text, short) { return Container( width: 300.0, padding: const EdgeInsets.symmetric(vertical: 10.0), @@ -273,7 +272,7 @@ class AssistantMessage extends StatelessWidget { Expanded( child: Tooltip( message: text, - child: Text(betterPrint(text)), + child: Text(short), ) ) ] diff --git a/lib/apps/chat/add.dart b/lib/apps/chat/add.dart index 7c10e2e..9f398f5 100644 --- a/lib/apps/chat/add.dart +++ b/lib/apps/chat/add.dart @@ -46,10 +46,13 @@ class _ChatAddPageState extends State { setState(() { this._showHome = false; final avatar = Avatar(name: params[2], width: 100.0, colorSurface: false); + String id = gidParse(params[0].trim()); + String addr = addrParse(params[1]); + this._coreScreen = _InfoScreen( callback: this._sendCallback, - id: params[0], - addr: params[1], + id: id, + addr: addr, name: params[2], bio: '', avatar: avatar, @@ -86,7 +89,7 @@ class _ChatAddPageState extends State { return Column( children: [ ListTile( - contentPadding: EdgeInsets.symmetric(horizontal: 20.0, vertical: 4.0), + contentPadding: EdgeInsets.symmetric(horizontal: 10.0, vertical: 4.0), leading: Icon(Icons.create, color: color.primary), title: Text(lang.input), trailing: Icon(Icons.keyboard_arrow_right, size: 30.0), @@ -96,7 +99,7 @@ class _ChatAddPageState extends State { }), ), ListTile( - contentPadding: EdgeInsets.symmetric(horizontal: 20.0, vertical: 4.0), + contentPadding: EdgeInsets.symmetric(horizontal: 10.0, vertical: 4.0), leading: Icon(Icons.search, color: color.primary), title: Text(lang.domainSearch), trailing: Icon(Icons.keyboard_arrow_right, size: 30.0), @@ -106,7 +109,7 @@ class _ChatAddPageState extends State { }), ), ListTile( - contentPadding: EdgeInsets.symmetric(horizontal: 20.0, vertical: 4.0), + contentPadding: EdgeInsets.symmetric(horizontal: 10.0, vertical: 4.0), leading: Icon(Icons.camera_alt, color: color.primary), title: Text(lang.scanQr), trailing: Icon(Icons.keyboard_arrow_right, size: 30.0), @@ -116,7 +119,7 @@ class _ChatAddPageState extends State { ) ), ListTile( - contentPadding: EdgeInsets.symmetric(horizontal: 20.0, vertical: 4.0), + contentPadding: EdgeInsets.symmetric(horizontal: 10.0, vertical: 4.0), leading: Icon(Icons.image, color: color.primary), title: Text(lang.scanImage + " (${lang.wip})"), trailing: Icon(Icons.keyboard_arrow_right, size: 30.0), @@ -189,7 +192,7 @@ class _ChatAddPageState extends State { Icons.info, lang.info, UserInfo(app: 'add-friend', - id: account.id, name: account.name, addr: Global.addr) + id: account.gid, name: account.name, addr: Global.addr) ), child: Padding( padding: const EdgeInsets.only(right: 10.0), @@ -402,22 +405,14 @@ class _InputScreenState extends State<_InputScreen> { FocusNode remarkFocus = FocusNode(); send() { - var id = userIdEditingController.text; - if (id == '') { + final id = gidParse(userIdEditingController.text.trim()); + final addr = addrParse(addrEditingController.text.trim()); + if (id == '' || addr == '') { return; } - if (id.substring(0, 2) == 'EH') { - id = id.substring(2); - } - - var addr = addrEditingController.text; - if (addr.substring(0, 2) == '0x') { - //substring(2); if has 0x, need remove - addr = addr.substring(2); - } - var name = nameEditingController.text; - var remark = remarkEditingController.text; + final name = nameEditingController.text.trim(); + final remark = remarkEditingController.text.trim(); context.read().requestCreate(Request(id, addr, name, remark)); setState(() { @@ -506,7 +501,7 @@ class _InfoScreen extends StatelessWidget { title: Text(gidPrint(this.id), style: TextStyle(fontSize: 16.0)), trailing: TextButton( child: Icon(Icons.copy, size: 20.0), - onPressed: () => Clipboard.setData(ClipboardData(text: this.id)), + onPressed: () => Clipboard.setData(ClipboardData(text: gidText(this.id))), ) ), ListTile( @@ -515,7 +510,7 @@ class _InfoScreen extends StatelessWidget { title: Text(addrPrint(this.addr), style: TextStyle(fontSize: 16.0)), trailing: TextButton( child: Icon(Icons.copy, size: 20.0), - onPressed: () => Clipboard.setData(ClipboardData(text: this.addr)), + onPressed: () => Clipboard.setData(ClipboardData(text: addrText(this.addr))), ) ), ListTile( @@ -558,7 +553,7 @@ class _RequestItem extends StatelessWidget { ); } - Widget _infoListTooltip(icon, color, text) { + Widget _infoListTooltip(icon, color, text, short) { return Container( width: 300.0, padding: const EdgeInsets.symmetric(vertical: 10.0), @@ -569,7 +564,7 @@ class _RequestItem extends StatelessWidget { Expanded( child: Tooltip( message: text, - child: Text(betterPrint(text)), + child: Text(short), ) ) ] @@ -587,8 +582,8 @@ class _RequestItem extends StatelessWidget { const SizedBox(height: 10.0), const Divider(height: 1.0, color: Color(0x40ADB0BB)), const SizedBox(height: 10.0), - _infoListTooltip(Icons.person, color.primary, 'EH' + request.gid.toUpperCase()), - _infoListTooltip(Icons.location_on, color.primary, "0x" + request.addr), + _infoListTooltip(Icons.person, color.primary, gidText(request.gid), gidPrint(request.gid)), + _infoListTooltip(Icons.location_on, color.primary, addrText(request.addr), addrPrint(request.addr)), _infoList(Icons.turned_in, color.primary, request.remark), _infoList(Icons.access_time_rounded, color.primary, request.time.toString()), const SizedBox(height: 10.0), diff --git a/lib/apps/chat/detail.dart b/lib/apps/chat/detail.dart index 093b0db..8dfed6b 100644 --- a/lib/apps/chat/detail.dart +++ b/lib/apps/chat/detail.dart @@ -247,9 +247,9 @@ class _ChatDetailState extends State { lang.friendInfo, UserInfo( app: 'add-friend', - id: 'EH' + friend.gid.toUpperCase(), + id: friend.gid, name: friend.name, - addr: '0x' + friend.addr, + addr: friend.addr, title: lang.qrFriend, remark: friend.remark, ), diff --git a/lib/apps/device/models.dart b/lib/apps/device/models.dart index 9a68da2..93694c2 100644 --- a/lib/apps/device/models.dart +++ b/lib/apps/device/models.dart @@ -15,10 +15,6 @@ class Device { this.addr = params[3], this.lastTime = RelativeTime.fromInt(params[4]), this.online = params[5] == "1"; - - String printAddr() { - return '0x' + this.addr.substring(0, 6) + "..." + this.addr.substring(64 - 8, 64); - } } class DeviceStatus { diff --git a/lib/apps/device/page.dart b/lib/apps/device/page.dart index f6ce808..f3cc3f0 100644 --- a/lib/apps/device/page.dart +++ b/lib/apps/device/page.dart @@ -5,6 +5,7 @@ import 'package:percent_indicator/percent_indicator.dart'; import 'package:qr_flutter/qr_flutter.dart'; import 'package:esse/utils/adaptive.dart'; +import 'package:esse/utils/better_print.dart'; import 'package:esse/l10n/localizations.dart'; import 'package:esse/widgets/shadow_dialog.dart'; import 'package:esse/widgets/input_text.dart'; @@ -35,11 +36,7 @@ class _DevicesPageState extends State { const SizedBox(height: 32.0), ButtonText( action: () { - var addr = this._addrController.text; - if (addr.substring(0, 2) == '0x') { - //substring(2); if has 0x, need remove - addr = addr.substring(2); - } + final addr = addrParse(this._addrController.text.trim()); if (addr.length > 0) { Provider.of(context, listen: false).connect(addr); Navigator.pop(context); @@ -55,7 +52,7 @@ class _DevicesPageState extends State { final res = await httpPost(Global.httpRpc, 'account-mnemonic', [lock]); if (res.isOk) { final words = res.params[0]; - final info = json.encode({'app': 'distribute', 'params': [name, id, addr, words]}); + final info = json.encode({'app': 'distribute', 'params': [name, gidText(id), addrText(addr), words]}); showShadowDialog(context, Icons.qr_code_rounded, lang.deviceQrcode, Column( children: [ @@ -112,7 +109,7 @@ class _DevicesPageState extends State { } Widget deviceWidget(ColorScheme color, Device device, bool isDesktop, double widgetWidth, lang) { - final bool isLocal = '0x' + device.addr == Global.addr; + final bool isLocal = device.addr == Global.addr; final String name = isLocal ? (device.name + " (${lang.deviceLocal})") : device.name; return Container( @@ -131,7 +128,7 @@ class _DevicesPageState extends State { title: Text(name), subtitle: Container( padding: const EdgeInsets.only(top: 8.0), - child: Text(device.printAddr()) + child: Text(addrPrint(device.addr)) ), ), Row( @@ -226,7 +223,7 @@ class _DevicesPageState extends State { Navigator.of(context).pop(); _showQrCode( account.name, - account.id, + account.gid, Global.addr, account.lock, color, diff --git a/lib/apps/domain/page.dart b/lib/apps/domain/page.dart index 9b2ba4b..502381b 100644 --- a/lib/apps/domain/page.dart +++ b/lib/apps/domain/page.dart @@ -372,9 +372,9 @@ class _AddProviderScreenState extends State<_AddProviderScreen> { ButtonText( enable: !this._waiting, action: () { - String addr = _addrController.text.trim(); - if (addr.substring(0, 2) == '0x') { - addr = addr.substring(2); + final addr = addrParse(_addrController.text.trim()); + if (addr.length < 2) { + return; } rpc.send('domain-provider-add', [addr]); setState(() { diff --git a/lib/apps/group_chat/add.dart b/lib/apps/group_chat/add.dart index 25ddc02..4a83f85 100644 --- a/lib/apps/group_chat/add.dart +++ b/lib/apps/group_chat/add.dart @@ -100,11 +100,10 @@ class _GroupAddPageState extends State { } _checkGroupAddr() { - String addr = _createAddrController.text; - if (addr.substring(0, 2) == '0x') { - addr = addr.substring(2); + final addr = addrParse(_createAddrController.text.trim()); + if (addr.length > 0) { + context.read().check(addr); } - context.read().check(addr); } _scanCallback(bool isOk, String app, List params) { @@ -112,29 +111,20 @@ class _GroupAddPageState extends State { print(app); print(params); if (isOk && app == 'add-group' && params.length == 3) { - this._joinIdController.text = params[0]; - this._joinAddrController.text = params[1]; + this._joinIdController.text = gidText(params[0]); + this._joinAddrController.text = addrText(params[1]); this._joinNameController.text = params[2]; setState(() {}); } } _join() { - var id = _joinIdController.text; - if (id == '') { + final id = gidParse(_joinIdController.text.trim(), 'EG'); + if (id.length < 2) { return; } - - if (id.substring(0, 2) == 'EG') { - id = id.substring(2); - } - - var addr = _joinAddrController.text; - // if has 0x, need remove - if (addr.substring(0, 2) == '0x') { - addr = addr.substring(2); - } - var name = _joinNameController.text; + final addr = addrParse(_joinAddrController.text.trim()); + final name = _joinNameController.text.trim(); context.read().join(GroupType.Open, id, addr, name, ""); setState(() { _joinIdController.text = ''; @@ -144,10 +134,9 @@ class _GroupAddPageState extends State { } _create() { - var addr = _createAddrController.text.trim(); - // if has 0x, need remove - if (addr.length > 2 && addr.substring(0, 2) == '0x') { - addr = addr.substring(2); + final addr = addrParse(_createAddrController.text.trim()); + if (_groupLocation == 0 && addr.length < 2) { + return; } final name = _createNameController.text.trim(); final bio = _createBioController.text.trim(); @@ -165,8 +154,8 @@ class _GroupAddPageState extends State { super.initState(); _addrChecked = false; - _joinIdController.text = widget.id; - _joinAddrController.text = widget.addr; + _joinIdController.text = gidText(widget.id, 'EG'); + _joinAddrController.text = addrText(widget.addr); _joinNameController.text = widget.name; _joinIdFocus.addListener(() { @@ -563,7 +552,7 @@ class _RequestItem extends StatelessWidget { ); } - Widget _infoListTooltip(icon, color, text) { + Widget _infoListTooltip(icon, color, text, short) { return Container( width: 300.0, padding: const EdgeInsets.symmetric(vertical: 10.0), @@ -574,7 +563,7 @@ class _RequestItem extends StatelessWidget { Expanded( child: Tooltip( message: text, - child: Text(betterPrint(text)), + child: Text(short), ) ) ] @@ -593,8 +582,10 @@ class _RequestItem extends StatelessWidget { const Divider(height: 1.0, color: Color(0x40ADB0BB)), const SizedBox(height: 10.0), _infoListTooltip(Icons.person, color.primary, - (request.isMe ? 'EG' : 'EH') + request.gid.toUpperCase()), - _infoListTooltip(Icons.location_on, color.primary, "0x" + request.addr), + request.isMe ? gidText(request.gid, 'EG') : gidText(request.gid), + request.isMe ? gidPrint(request.gid, 'EG') : gidPrint(request.gid), + ), + _infoListTooltip(Icons.location_on, color.primary, addrText(request.addr), addrPrint(request.addr)), _infoList(Icons.turned_in, color.primary, request.remark), _infoList(Icons.access_time_rounded, color.primary, request.time.toString()), const SizedBox(height: 10.0), diff --git a/lib/apps/group_chat/detail.dart b/lib/apps/group_chat/detail.dart index b7e3ec6..46d0bda 100644 --- a/lib/apps/group_chat/detail.dart +++ b/lib/apps/group_chat/detail.dart @@ -262,11 +262,12 @@ class _GroupChatDetailState extends State { showShadowDialog(context, Icons.info, lang.groupChat, UserInfo( app: 'add-group', - id: 'EG' + this.group!.gid.toUpperCase(), + id: this.group!.gid, name: this.group!.name, - addr: '0x' + this.group!.addr, + addr: this.group!.addr, title: this.group!.type.lang(lang), bio: this.group!.bio, + pre: 'EG', ), 0.0, ); @@ -696,7 +697,7 @@ class MemberDetail extends StatefulWidget { } class _MemberDetailState extends State { - Widget _infoListTooltip(icon, color, text) { + Widget _infoListTooltip(icon, color, text, short) { return Container( width: 300.0, padding: const EdgeInsets.symmetric(vertical: 10.0), @@ -707,7 +708,7 @@ class _MemberDetailState extends State { Expanded( child: Tooltip( message: text, - child: Text(betterPrint(text)), + child: Text(short), ) ) ] @@ -730,8 +731,8 @@ class _MemberDetailState extends State { const SizedBox(height: 10.0), const Divider(height: 1.0, color: Color(0x40ADB0BB)), const SizedBox(height: 10.0), - _infoListTooltip(Icons.person, color.primary, widget.member.mid), - _infoListTooltip(Icons.location_on, color.primary, widget.member.addr), + _infoListTooltip(Icons.person, color.primary, gidText(widget.member.mid), gidPrint(widget.member.mid)), + _infoListTooltip(Icons.location_on, color.primary, addrText(widget.member.addr), addrPrint(widget.member.addr)), if (widget.isGroupOwner) Container( padding: const EdgeInsets.only(top: 20.0, bottom: 10.0), diff --git a/lib/global.dart b/lib/global.dart index 877cad5..50908d1 100644 --- a/lib/global.dart +++ b/lib/global.dart @@ -34,13 +34,4 @@ class Global { static changeHttp(String newHttp) { Global.httpRpc = newHttp; } - - static printAddr() { - final len = Global.addr.length; - if (len > 8) { - return Global.addr.substring(0, 8) + '...' + Global.addr.substring(len - 6, len); - } else { - return Global.addr; - } - } } diff --git a/lib/pages/account_restore.dart b/lib/pages/account_restore.dart index 5aad393..484e9d2 100644 --- a/lib/pages/account_restore.dart +++ b/lib/pages/account_restore.dart @@ -4,6 +4,7 @@ import 'package:provider/provider.dart'; import 'package:esse/l10n/localizations.dart'; import 'package:esse/utils/device_info.dart'; +import 'package:esse/utils/better_print.dart'; import 'package:esse/widgets/button_text.dart'; import 'package:esse/widgets/shadow_dialog.dart'; import 'package:esse/widgets/show_pin.dart'; @@ -294,8 +295,8 @@ class _AccountRestorePageState extends State { Navigator.of(context).pop(); if (app == 'distribute' && params.length == 4) { final name = params[0]; - //final id = params[1]; - final addr = params[2]; + //final id = gidParse(params[1]); + final addr = addrParse(params[2]); final mnemonicWords = params[3]; setState(() { this._addrOnline = true; @@ -304,7 +305,7 @@ class _AccountRestorePageState extends State { this._wordChecked = false; this._statusChecked = true; this._name = name; - this._addrController.text = addr; + this._addrController.text = addrText(addr); this._mnemoicWords = mnemonicWords.split(" "); }); } @@ -356,10 +357,9 @@ class _AccountRestorePageState extends State { if (this._name == '') { this._name = defaultName; } - var addr = this._addrController.text; - if (addr.length > 2 && addr.substring(0, 2) == '0x') { - //substring(2); if has 0x, need remove - addr = addr.substring(2); + final addr = addrParse(this._addrController.text.trim()); + if (addr.length < 2) { + return; } final info = await deviceInfo(); diff --git a/lib/pages/home.dart b/lib/pages/home.dart index 384b975..aef418c 100644 --- a/lib/pages/home.dart +++ b/lib/pages/home.dart @@ -179,7 +179,7 @@ class _HomeListState extends State { lang.info, UserInfo( app: 'add-friend', - id: provider.activedAccount.id, + id: provider.id, name: provider.activedAccount.name, addr: Global.addr)); } diff --git a/lib/pages/setting/network.dart b/lib/pages/setting/network.dart index 408db26..c660074 100644 --- a/lib/pages/setting/network.dart +++ b/lib/pages/setting/network.dart @@ -157,7 +157,7 @@ class _NetworkDetailState extends State { size: 18.0, color: color.primary), SizedBox(width: 15.0), - Text(betterPrint(item[0]), + Text(addrPrint(item[0]), style: TextStyle(fontSize: 14.0)) ])); }), @@ -177,7 +177,7 @@ class _NetworkDetailState extends State { Icon(Icons.cloud_done_outlined, size: 18.0, color: color.primary), SizedBox(width: 15.0), - Text(betterPrint(item), + Text(addrPrint(item), style: TextStyle(fontSize: 14.0)), ])); }), diff --git a/lib/pages/setting/profile.dart b/lib/pages/setting/profile.dart index e8b2ee6..b3cce87 100644 --- a/lib/pages/setting/profile.dart +++ b/lib/pages/setting/profile.dart @@ -23,7 +23,7 @@ class _ProfileDetailState extends State { bool _mnemoicShow = false; List _mnemoicWords = []; - Widget _infoListTooltip(icon, color, text) { + Widget _infoListTooltip(icon, color, text, short) { return SizedBox( width: 300.0, height: 40.0, @@ -33,7 +33,7 @@ class _ProfileDetailState extends State { Expanded( child: Tooltip( message: text, - child: Text(betterPrint(text)), + child: Text(short), )) ]), ); @@ -157,8 +157,8 @@ class _ProfileDetailState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.max, children: [ - _infoListTooltip(Icons.person, color.primary, account.id), - _infoListTooltip(Icons.location_on, color.primary, Global.addr), + _infoListTooltip(Icons.person, color.primary, gidText(account.gid), gidPrint(account.gid)), + _infoListTooltip(Icons.location_on, color.primary, addrText(Global.addr), addrPrint(Global.addr)), SizedBox( width: 300.0, height: 40.0, @@ -168,7 +168,7 @@ class _ProfileDetailState extends State { const SizedBox(width: 20.0), TextButton( onPressed: () => _pinCheck(account.lock, - () => _changePin(context, account.id, account.lock, lang.setPin), + () => _changePin(context, account.gid, account.lock, lang.setPin), lang.verifyPin, ), child: Text(lang.change + ' PIN'), @@ -192,7 +192,7 @@ class _ProfileDetailState extends State { ) : TextButton( onPressed: () => _pinCheck(account.lock, - () => _showMnemonic(account.id, account.lock), lang.verifyPin), + () => _showMnemonic(account.gid, account.lock), lang.verifyPin), child: Text(lang.show + ' ' + lang.mnemonic), ), ]), diff --git a/lib/provider.dart b/lib/provider.dart index f2925e9..5ad6e86 100644 --- a/lib/provider.dart +++ b/lib/provider.dart @@ -19,7 +19,7 @@ class AccountProvider extends ChangeNotifier { Account get activedAccount => this.accounts[activedAccountId]!; /// current user's did. - String get id => this.activedAccount.id; + String get id => this.activedAccount.gid; bool systemAppFriendAddNew = false; @@ -239,7 +239,7 @@ class AccountProvider extends ChangeNotifier { // -- callback when receive rpc info. -- // _systemInfo(List params) { - Global.addr = '0x' + params[0]; + Global.addr = params[0]; } _accountLogin(List _params) { diff --git a/lib/security.dart b/lib/security.dart index 4702066..7ad4c6a 100644 --- a/lib/security.dart +++ b/lib/security.dart @@ -9,6 +9,7 @@ import 'package:esse/widgets/show_pin.dart'; import 'package:esse/pages/account_generate.dart'; import 'package:esse/pages/account_restore.dart'; import 'package:esse/utils/logined_cache.dart'; +import 'package:esse/utils/better_print.dart'; import 'package:esse/account.dart'; import 'package:esse/global.dart'; import 'package:esse/rpc.dart'; @@ -268,7 +269,7 @@ class _SecurityPageState extends State { style: TextStyle(fontSize: 16) ), ), - Text(" (${account.printShortId()})", style: TextStyle(fontSize: 16)), + Text(" (${gidPrint(account.gid)})", style: TextStyle(fontSize: 16)), ] ), ); diff --git a/lib/utils/better_print.dart b/lib/utils/better_print.dart index 642aa86..2789472 100644 --- a/lib/utils/better_print.dart +++ b/lib/utils/better_print.dart @@ -1,16 +1,11 @@ -String betterPrint(String? info) { - if (info == null) { +String gidText(String? gid, [String pre='EH']) { + if (gid == null) { return ''; } - final len = info.length; - if (len > 8) { - return info.substring(0, 8) + '...' + info.substring(len - 6, len); - } else { - return info; - } + return pre + gid.toUpperCase(); } -String gidPrint(String? gid) { +String gidPrint(String? gid, [String pre='EH']) { if (gid == null) { return ''; } @@ -18,12 +13,27 @@ String gidPrint(String? gid) { final info = gid.toUpperCase(); final len = info.length; if (len > 8) { - return 'EH' + info.substring(0, 6) + '...' + info.substring(len - 4, len); + return pre + info.substring(0, 4) + '...' + info.substring(len - 4, len); } else { return info; } } +String gidParse(String gid, [String pre='EH']) { + if (gid.length > 2 && gid.substring(0, 2) == pre) { + return gid.substring(2); + } else { + return gid; + } +} + +String addrText(String? addr) { + if (addr == null) { + return ''; + } + return '0x' + addr.toLowerCase(); +} + String addrPrint(String? addr) { if (addr == null) { return ''; @@ -31,9 +41,17 @@ String addrPrint(String? addr) { final info = addr.toLowerCase(); final len = info.length; - if (len > 8) { - return '0x' + info.substring(0, 8) + '...' + info.substring(len - 6, len); + if (len > 12) { + return '0x' + info.substring(0, 6) + '...' + info.substring(len - 6, len); } else { return info; } } + +String addrParse(String addr) { + if (addr.length > 2 && addr.substring(0, 2) == '0x') { + return addr.substring(2); + } else { + return addr; + } +} diff --git a/lib/widgets/chat_message.dart b/lib/widgets/chat_message.dart index 6f9dd34..fe7bb29 100644 --- a/lib/widgets/chat_message.dart +++ b/lib/widgets/chat_message.dart @@ -43,7 +43,7 @@ class ChatMessage extends StatelessWidget { child: Column(children: [ Text(name, maxLines: 1, overflow: TextOverflow.ellipsis, style: TextStyle(color: color.onPrimary, fontSize: 16.0)), const SizedBox(height: 4.0), - Text(betterPrint(gid), style: TextStyle(color: Colors.grey, fontSize: 12.0)), + Text(gidPrint(gid), style: TextStyle(color: Colors.grey, fontSize: 12.0)), ]))]), const SizedBox(height: 5.0), const Divider(height: 1.0, color: Color(0x40ADB0BB)), @@ -216,14 +216,13 @@ class ChatMessage extends StatelessWidget { // contact [name, gid, addr, avatar] final infos = message.showContact(); if (infos[1].length > 0) { - final gid = 'EH' + infos[1].toUpperCase(); return GestureDetector( onTap: () => showShadowDialog( context, Icons.person_rounded, lang.contactCard, UserInfo( - showQr: false, id: gid, addr: '0x' + infos[2], name: infos[0], + showQr: false, id: infos[1], addr: infos[2], name: infos[0], remark: lang.fromContactCard(name), avatar: Avatar(width: 100.0, name: infos[0], avatarPath: infos[3]), callback: () { @@ -236,7 +235,7 @@ class ChatMessage extends StatelessWidget { ), child: _showContactCard( Avatar(width: 40.0, name: infos[0], avatarPath: infos[3]), - gid, infos[0], lang.contactCard, color + infos[1], infos[0], lang.contactCard, color ) ); } else { diff --git a/lib/widgets/user_info.dart b/lib/widgets/user_info.dart index 1159620..8f91aec 100644 --- a/lib/widgets/user_info.dart +++ b/lib/widgets/user_info.dart @@ -19,6 +19,7 @@ class UserInfo extends StatefulWidget { final bool showQr; final Widget? avatar; Map? qrInfo; + final String pre; UserInfo({Key? key, required this.id, @@ -30,12 +31,13 @@ class UserInfo extends StatefulWidget { this.callback, this.avatar, this.title, - this.showQr = true + this.showQr = true, + this.pre = 'EH', }) : super(key: key) { if (this.showQr) { this.qrInfo = { "app": this.app, - "params": [this.id, this.addr, this.name], + "params": [gidText(this.id, this.pre), addrText(this.addr), this.name], }; } } @@ -112,7 +114,7 @@ class _UserInfoState extends State { const SizedBox(height: 20), InkWell( onTap: () { - Clipboard.setData(ClipboardData(text: widget.id)); + Clipboard.setData(ClipboardData(text: gidText(widget.id))); setState(() { idCopy = true; addrCopy = false; @@ -124,7 +126,7 @@ class _UserInfoState extends State { children: [ Icon(Icons.person, size: 20.0, color: color.primary), Spacer(), - Text(betterPrint(widget.id), style: TextStyle(fontSize: 14, color: idColor)), + Text(gidPrint(widget.id, widget.pre), style: TextStyle(fontSize: 14, color: idColor)), Spacer(), Icon(idCopy ? Icons.file_copy : Icons.copy, size: 20.0, color: color.primary), ] @@ -134,7 +136,7 @@ class _UserInfoState extends State { const SizedBox(height: 16), InkWell( onTap: () { - Clipboard.setData(ClipboardData(text: widget.addr)); + Clipboard.setData(ClipboardData(text: addrText(widget.addr))); setState(() { idCopy = false; addrCopy = true; @@ -146,7 +148,7 @@ class _UserInfoState extends State { children: [ Icon(Icons.location_on, size: 20.0, color: color.primary), Spacer(), - Text(betterPrint(widget.addr), style: TextStyle(fontSize: 14, color: addrColor)), + Text(addrPrint(widget.addr), style: TextStyle(fontSize: 14, color: addrColor)), Spacer(), Icon(addrCopy ? Icons.file_copy : Icons.copy, size: 20.0, color: color.primary), ]