diff --git a/flutter/lib/common.dart b/flutter/lib/common.dart index 794815b86..eb21ac821 100644 --- a/flutter/lib/common.dart +++ b/flutter/lib/common.dart @@ -1352,7 +1352,7 @@ Future matchPeer(String searchText, Peer peer) async { peer.username.toLowerCase().contains(searchText)) { return true; } - final alias = await bind.mainGetPeerOption(id: peer.id, key: 'alias'); + final alias = peer.alias; if (alias.isEmpty) { return false; } diff --git a/flutter/lib/common/widgets/peer_card.dart b/flutter/lib/common/widgets/peer_card.dart index 27b485023..31116b0dd 100644 --- a/flutter/lib/common/widgets/peer_card.dart +++ b/flutter/lib/common/widgets/peer_card.dart @@ -659,6 +659,7 @@ abstract class BasePeerCard extends StatelessWidget { if (newName != oldName) { if (tab == PeerTabIndex.ab) { gFFI.abModel.changeAlias(id: id, alias: newName); + await bind.mainSetPeerAlias(id: id, alias: newName); gFFI.abModel.pushAb(); } else { await bind.mainSetPeerAlias(id: id, alias: newName); @@ -713,16 +714,8 @@ abstract class BasePeerCard extends StatelessWidget { case PeerTabIndex.ab: gFFI.abModel.deletePeer(id); final future = gFFI.abModel.pushAb(); - if (shouldSyncAb() && await bind.mainPeerExists(id: peer.id)) { - Future.delayed(Duration.zero, () async { - final succ = await future; - if (succ) { - await Future.delayed(Duration(seconds: 2)); // success msg - BotToast.showText( - contentColor: Colors.lightBlue, - text: translate('synced_peer_readded_tip')); - } - }); + if (await bind.mainPeerExists(id: peer.id)) { + gFFI.abModel.reSyncToast(future); } break; case PeerTabIndex.group: @@ -748,9 +741,15 @@ abstract class BasePeerCard extends StatelessWidget { translate('Unremember Password'), style: style, ), - proc: () { - bind.mainForgetPassword(id: id); - showToast(translate('Successful')); + proc: () async { + if (tab == PeerTabIndex.ab) { + gFFI.abModel.unrememberPassword(id); + await bind.mainForgetPassword(id: id); + gFFI.abModel.pushAb(); + } else { + bind.mainForgetPassword(id: id); + showToast(translate('Successful')); + } }, padding: menuPadding, dismissOnClicked: true, @@ -1046,7 +1045,7 @@ class AddressBookPeerCard extends BasePeerCard { } menuItems.add(MenuEntryDivider()); menuItems.add(_renameAction(peer.id)); - if (await bind.mainPeerHasPassword(id: peer.id)) { + if (peer.hash.isNotEmpty) { menuItems.add(_unrememberPasswordAction(peer.id)); } if (gFFI.abModel.tags.isNotEmpty) { diff --git a/flutter/lib/common/widgets/peer_tab_page.dart b/flutter/lib/common/widgets/peer_tab_page.dart index 047d95f11..1014c283c 100644 --- a/flutter/lib/common/widgets/peer_tab_page.dart +++ b/flutter/lib/common/widgets/peer_tab_page.dart @@ -345,16 +345,7 @@ class _PeerTabPageState extends State gFFI.abModel.deletePeers(peers.map((p) => p.id).toList()); final future = gFFI.abModel.pushAb(); if (hasSynced) { - Future.delayed(Duration.zero, () async { - final succ = await future; - if (succ) { - await Future.delayed( - Duration(seconds: 2)); // success msg - BotToast.showText( - contentColor: Colors.lightBlue, - text: translate('synced_peer_readded_tip')); - } - }); + gFFI.abModel.reSyncToast(future); } } break; diff --git a/flutter/lib/models/ab_model.dart b/flutter/lib/models/ab_model.dart index 001e16190..c36c14966 100644 --- a/flutter/lib/models/ab_model.dart +++ b/flutter/lib/models/ab_model.dart @@ -212,6 +212,14 @@ class AbModel { it.first.alias = alias; } + void unrememberPassword(String id) { + final it = peers.where((element) => element.id == id); + if (it.isEmpty) { + return; + } + it.first.hash = ''; + } + Future pushAb( {bool toastIfFail = true, bool toastIfSucc = true, @@ -508,4 +516,17 @@ class AbModel { throw err; } } + + reSyncToast(Future future) { + if (!shouldSyncAb()) return; + Future.delayed(Duration.zero, () async { + final succ = await future; + if (succ) { + await Future.delayed(Duration(seconds: 2)); // success msg + BotToast.showText( + contentColor: Colors.lightBlue, + text: translate('synced_peer_readded_tip')); + } + }); + } } diff --git a/flutter/lib/models/server_model.dart b/flutter/lib/models/server_model.dart index e48ceef42..8f56ffbe2 100644 --- a/flutter/lib/models/server_model.dart +++ b/flutter/lib/models/server_model.dart @@ -197,17 +197,18 @@ class ServerModel with ChangeNotifier { _approveMode = approveMode; update = true; } - final oldPwdText = _serverPasswd.text; - if (_serverPasswd.text != temporaryPassword && - temporaryPassword.isNotEmpty) { - _serverPasswd.text = temporaryPassword; - } var stopped = option2bool( "stop-service", await bind.mainGetOption(key: "stop-service")); + final oldPwdText = _serverPasswd.text; if (stopped || verificationMethod == kUsePermanentPassword || _approveMode == 'click') { _serverPasswd.text = '-'; + } else { + if (_serverPasswd.text != temporaryPassword && + temporaryPassword.isNotEmpty) { + _serverPasswd.text = temporaryPassword; + } } if (oldPwdText != _serverPasswd.text) { update = true;