From 8127ce18a3b7f42e666a2a3079f9d89974768518 Mon Sep 17 00:00:00 2001 From: Sahil Yeole Date: Sun, 15 Oct 2023 04:53:57 +0530 Subject: [PATCH] optimise autocomplete Signed-off-by: Sahil Yeole --- .../lib/desktop/pages/connection_page.dart | 95 ++++++++++--------- 1 file changed, 49 insertions(+), 46 deletions(-) diff --git a/flutter/lib/desktop/pages/connection_page.dart b/flutter/lib/desktop/pages/connection_page.dart index db233fdbb..8ca3c549a 100644 --- a/flutter/lib/desktop/pages/connection_page.dart +++ b/flutter/lib/desktop/pages/connection_page.dart @@ -152,9 +152,57 @@ class _ConnectionPageState extends State connect(context, id, isFileTransfer: isFileTransfer); } + void getAllPeers(){ + peers.clear(); + Map recentPeers = jsonDecode(bind.mainLoadRecentPeersSync()); + Map favPeers = jsonDecode(bind.mainLoadFavPeersSync()); + Map lanPeers = jsonDecode(bind.mainLoadLanPeersSync()); + Map abPeers = jsonDecode(bind.mainLoadAbSync()); + Map groupPeers = jsonDecode(bind.mainLoadGroupSync()); + + Map combinedPeers = {}; + + void mergePeers(Map peers) { + if (peers.containsKey("peers")) { + dynamic peerData = peers["peers"]; + + if (peerData is String) { + try { + peerData = jsonDecode(peerData); + } catch (e) { + print("Error decoding peers: $e"); + return; + } + } + + if (peerData is List) { + for (var peer in peerData) { + if (peer is Map && peer.containsKey("id")) { + String id = peer["id"]; + if (id != null && !combinedPeers.containsKey(id)) { + combinedPeers[id] = peer; + } + } + } + } + } + } + + mergePeers(recentPeers); + mergePeers(favPeers); + mergePeers(lanPeers); + mergePeers(abPeers); + mergePeers(groupPeers); + + for (var peer in combinedPeers.values) { + peers.add(Peer.fromJson(peer)); + } + } + /// UI for the remote ID TextField. - /// Search for a peer and connect to it if the id exists. + /// Search for a peer. Widget _buildRemoteIDTextField(BuildContext context) { + getAllPeers(); var w = Container( width: 320 + 20 * 2, padding: const EdgeInsets.fromLTRB(20, 24, 20, 22), @@ -188,51 +236,6 @@ class _ConnectionPageState extends State return const Iterable.empty(); } else { - peers.clear(); - Map recentPeers = jsonDecode(bind.mainLoadRecentPeersSync()); - Map favPeers = jsonDecode(bind.mainLoadFavPeersSync()); - Map lanPeers = jsonDecode(bind.mainLoadLanPeersSync()); - Map abPeers = jsonDecode(bind.mainLoadAbSync()); - Map groupPeers = jsonDecode(bind.mainLoadGroupSync()); - - Map combinedPeers = {}; - - void mergePeers(Map peers) { - if (peers.containsKey("peers")) { - dynamic peerData = peers["peers"]; - - if (peerData is String) { - try { - peerData = jsonDecode(peerData); - } catch (e) { - print("Error decoding peers: $e"); - return; - } - } - - if (peerData is List) { - for (var peer in peerData) { - if (peer is Map && peer.containsKey("id")) { - String id = peer["id"]; - if (id != null && !combinedPeers.containsKey(id)) { - combinedPeers[id] = peer; - } - } - } - } - } - } - - mergePeers(recentPeers); - mergePeers(favPeers); - mergePeers(lanPeers); - mergePeers(abPeers); - mergePeers(groupPeers); - - for (var peer in combinedPeers.values) { - peers.add(Peer.fromJson(peer)); - } - if (textEditingValue.text.contains(" ")) { textEditingValue = TextEditingValue( text: textEditingValue.text.replaceAll(" ", ""),