From 03f064138516f9cdb01ec019e1affffb902100e4 Mon Sep 17 00:00:00 2001 From: Krille Fear Date: Tue, 16 Nov 2021 10:23:29 +0100 Subject: [PATCH] fix: Dont rerun server checks --- .../homeserver_picker/homeserver_picker.dart | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/lib/pages/homeserver_picker/homeserver_picker.dart b/lib/pages/homeserver_picker/homeserver_picker.dart index 00a23ab7e..c55161e5c 100644 --- a/lib/pages/homeserver_picker/homeserver_picker.dart +++ b/lib/pages/homeserver_picker/homeserver_picker.dart @@ -103,24 +103,28 @@ class HomeserverPickerController extends State { _intentDataStreamSubscription?.cancel(); } + String _lastCheckedHomeserver; + /// Starts an analysis of the given homeserver. It uses the current domain and /// makes sure that it is prefixed with https. Then it searches for the /// well-known information and forwards to the login page depending on the /// login type. Future checkHomeserverAction() async { _coolDown?.cancel(); - try { - if (domain.isEmpty) throw L10n.of(context).changeTheHomeserver; - var homeserver = domain; + if (_lastCheckedHomeserver == domain) return; + if (domain.isEmpty) throw L10n.of(context).changeTheHomeserver; + var homeserver = domain; - if (!homeserver.startsWith('https://')) { - homeserver = 'https://$homeserver'; - } + if (!homeserver.startsWith('https://')) { + homeserver = 'https://$homeserver'; + } - setState(() { - error = _rawLoginTypes = registrationSupported = null; - isLoading = true; - }); + setState(() { + error = _rawLoginTypes = registrationSupported = null; + isLoading = true; + }); + + try { final wellKnown = await Matrix.of(context).getLoginClient().checkHomeserver(homeserver); @@ -151,6 +155,7 @@ class HomeserverPickerController extends State { } catch (e) { setState(() => error = (e as Object).toLocalizedString(context)); } finally { + _lastCheckedHomeserver = domain; if (mounted) { setState(() => isLoading = false); }