Merge pull request #1531 from fufesou/flutter_desktop_fix_peer_card

flutter_desktop: fix remove fav peer && remove unused code
This commit is contained in:
RustDesk 2022-09-15 13:33:37 +08:00 committed by GitHub
commit 741dc182ed
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 34 additions and 52 deletions

View File

@ -782,6 +782,7 @@ class _PeerTabbedPageState extends State<_PeerTabbedPage>
bind.mainDiscover(); bind.mainDiscover();
break; break;
case 3: case 3:
gFFI.abModel.updateAb();
break; break;
} }
} }

View File

@ -43,7 +43,7 @@ class _PeerWidgetState extends State<_PeerWidget> with WindowListener {
final _curPeers = <String>{}; final _curPeers = <String>{};
var _lastChangeTime = DateTime.now(); var _lastChangeTime = DateTime.now();
var _lastQueryPeers = <String>{}; var _lastQueryPeers = <String>{};
var _lastQueryTime = DateTime.now().subtract(Duration(hours: 1)); var _lastQueryTime = DateTime.now().subtract(const Duration(hours: 1));
var _queryCoun = 0; var _queryCoun = 0;
var _exit = false; var _exit = false;
@ -143,8 +143,8 @@ class _PeerWidgetState extends State<_PeerWidget> with WindowListener {
while (!_exit) { while (!_exit) {
final now = DateTime.now(); final now = DateTime.now();
if (!setEquals(_curPeers, _lastQueryPeers)) { if (!setEquals(_curPeers, _lastQueryPeers)) {
if (now.difference(_lastChangeTime) > Duration(seconds: 1)) { if (now.difference(_lastChangeTime) > const Duration(seconds: 1)) {
if (_curPeers.length > 0) { if (_curPeers.isNotEmpty) {
platformFFI.ffiBind platformFFI.ffiBind
.queryOnlines(ids: _curPeers.toList(growable: false)); .queryOnlines(ids: _curPeers.toList(growable: false));
_lastQueryPeers = {..._curPeers}; _lastQueryPeers = {..._curPeers};
@ -154,8 +154,8 @@ class _PeerWidgetState extends State<_PeerWidget> with WindowListener {
} }
} else { } else {
if (_queryCoun < _maxQueryCount) { if (_queryCoun < _maxQueryCount) {
if (now.difference(_lastQueryTime) > Duration(seconds: 20)) { if (now.difference(_lastQueryTime) > const Duration(seconds: 20)) {
if (_curPeers.length > 0) { if (_curPeers.isNotEmpty) {
platformFFI.ffiBind platformFFI.ffiBind
.queryOnlines(ids: _curPeers.toList(growable: false)); .queryOnlines(ids: _curPeers.toList(growable: false));
_lastQueryTime = DateTime.now(); _lastQueryTime = DateTime.now();
@ -164,7 +164,7 @@ class _PeerWidgetState extends State<_PeerWidget> with WindowListener {
} }
} }
} }
await Future.delayed(Duration(milliseconds: 300)); await Future.delayed(const Duration(milliseconds: 300));
} }
}(); }();
} }
@ -292,4 +292,11 @@ class AddressBookPeerWidget extends BasePeerWidget {
} }
return true; return true;
} }
@override
Widget build(BuildContext context) {
final widget = super.build(context);
gFFI.abModel.updateAb();
return widget;
}
} }

View File

@ -113,15 +113,16 @@ class _PeerCardState extends State<_PeerCard>
children: [ children: [
Row(children: [ Row(children: [
Padding( Padding(
padding: EdgeInsets.fromLTRB(0, 4, 4, 4), padding: const EdgeInsets.fromLTRB(0, 4, 4, 4),
child: CircleAvatar( child: CircleAvatar(
radius: 5, radius: 5,
backgroundColor: peer.online backgroundColor: peer.online
? Colors.green ? Colors.green
: Colors.yellow)), : Colors.yellow)),
Text( Text(
formatID('${peer.id}'), formatID(peer.id),
style: TextStyle(fontWeight: FontWeight.w400), style:
const TextStyle(fontWeight: FontWeight.w400),
), ),
]), ]),
Align( Align(
@ -136,7 +137,7 @@ class _PeerCardState extends State<_PeerCard>
: snapshot.data!; : snapshot.data!;
return Tooltip( return Tooltip(
message: name, message: name,
waitDuration: Duration(seconds: 1), waitDuration: const Duration(seconds: 1),
child: Text( child: Text(
name, name,
style: greyStyle, style: greyStyle,
@ -208,10 +209,11 @@ class _PeerCardState extends State<_PeerCard>
: widget.alias.value; : widget.alias.value;
return Tooltip( return Tooltip(
message: name, message: name,
waitDuration: Duration(seconds: 1), waitDuration:
const Duration(seconds: 1),
child: Text( child: Text(
name, name,
style: TextStyle( style: const TextStyle(
color: Colors.white70, color: Colors.white70,
fontSize: 12), fontSize: 12),
textAlign: TextAlign.center, textAlign: TextAlign.center,
@ -236,7 +238,7 @@ class _PeerCardState extends State<_PeerCard>
children: [ children: [
Row(children: [ Row(children: [
Padding( Padding(
padding: EdgeInsets.fromLTRB(0, 4, 8, 4), padding: const EdgeInsets.fromLTRB(0, 4, 8, 4),
child: CircleAvatar( child: CircleAvatar(
radius: 5, radius: 5,
backgroundColor: peer.online backgroundColor: peer.online
@ -501,7 +503,7 @@ abstract class BasePeerCard extends StatelessWidget {
final favs = (await bind.mainGetFav()).toList(); final favs = (await bind.mainGetFav()).toList();
if (!favs.contains(id)) { if (!favs.contains(id)) {
favs.add(id); favs.add(id);
bind.mainStoreFav(favs: favs); await bind.mainStoreFav(favs: favs);
} }
}(); }();
}, },
@ -510,7 +512,8 @@ abstract class BasePeerCard extends StatelessWidget {
} }
@protected @protected
MenuEntryBase<String> _rmFavAction(String id) { MenuEntryBase<String> _rmFavAction(
String id, Future<void> Function() reloadFunc) {
return MenuEntryButton<String>( return MenuEntryButton<String>(
childBuilder: (TextStyle? style) => Text( childBuilder: (TextStyle? style) => Text(
translate('Remove from Favorites'), translate('Remove from Favorites'),
@ -520,8 +523,9 @@ abstract class BasePeerCard extends StatelessWidget {
() async { () async {
final favs = (await bind.mainGetFav()).toList(); final favs = (await bind.mainGetFav()).toList();
if (favs.remove(id)) { if (favs.remove(id)) {
bind.mainStoreFav(favs: favs); await bind.mainStoreFav(favs: favs);
Get.forceAppUpdate(); // TODO use inner model / state await reloadFunc();
// Get.forceAppUpdate(); // TODO use inner model / state
} }
}(); }();
}, },
@ -646,7 +650,9 @@ class FavoritePeerCard extends BasePeerCard {
await bind.mainLoadFavPeers(); await bind.mainLoadFavPeers();
})); }));
menuItems.add(_unrememberPasswordAction(peer.id)); menuItems.add(_unrememberPasswordAction(peer.id));
menuItems.add(_rmFavAction(peer.id)); menuItems.add(_rmFavAction(peer.id, () async {
await bind.mainLoadFavPeers();
}));
return menuItems; return menuItems;
} }
} }
@ -817,8 +823,8 @@ class AddressBookPeerCard extends BasePeerCard {
color: rxTags.contains(tagName) ? Colors.blue : null, color: rxTags.contains(tagName) ? Colors.blue : null,
border: Border.all(color: MyTheme.darkGray), border: Border.all(color: MyTheme.darkGray),
borderRadius: BorderRadius.circular(10)), borderRadius: BorderRadius.circular(10)),
margin: EdgeInsets.symmetric(horizontal: 4.0, vertical: 8.0), margin: const EdgeInsets.symmetric(horizontal: 4.0, vertical: 8.0),
padding: EdgeInsets.symmetric(vertical: 2.0, horizontal: 8.0), padding: const EdgeInsets.symmetric(vertical: 2.0, horizontal: 8.0),
child: Text( child: Text(
tagName, tagName,
style: TextStyle( style: TextStyle(
@ -831,38 +837,6 @@ class AddressBookPeerCard extends BasePeerCard {
} }
} }
Future<PopupMenuItem<String>> _forceAlwaysRelayMenuItem(String id) async {
bool force_always_relay =
(await bind.mainGetPeerOption(id: id, key: 'force-always-relay'))
.isNotEmpty;
return PopupMenuItem<String>(
child: Row(
children: [
Offstage(
offstage: !force_always_relay,
child: Icon(Icons.check),
),
Text(translate('Always connect via relay')),
],
),
value: 'force-always-relay');
}
PopupMenuItem<String> _rdpMenuItem(String id) {
return PopupMenuItem<String>(
child: Row(
children: [
Text('RDP'),
SizedBox(width: 20),
IconButton(
icon: Icon(Icons.edit),
onPressed: () => _rdpDialog(id),
)
],
),
value: 'RDP');
}
void _rdpDialog(String id) async { void _rdpDialog(String id) async {
final portController = TextEditingController( final portController = TextEditingController(
text: await bind.mainGetPeerOption(id: id, key: 'rdp_port')); text: await bind.mainGetPeerOption(id: id, key: 'rdp_port'));