Fix login fail if secondary well-known is invalid

This commit is contained in:
Inex Code 2020-10-14 22:06:13 +03:00
parent 6d60189df1
commit c1791edd4d
1 changed files with 17 additions and 12 deletions

View File

@ -223,28 +223,33 @@ class Client extends MatrixApi {
final response = await http
.get('https://${MatrixIdOrDomain.domain}/.well-known/matrix/client');
var wellKnown = WellKnownInformations.fromJson(json.decode(response.body));
if (Uri.parse(wellKnown.mHomeserver.baseUrl).host != MatrixIdOrDomain.domain) {
final response = await http
.get('https://${Uri.parse(wellKnown.mHomeserver.baseUrl).host}/.well-known/matrix/client');
wellKnown = WellKnownInformations.fromJson(json.decode(response.body));
if (Uri.parse(wellKnown.mHomeserver.baseUrl).host !=
MatrixIdOrDomain.domain) {
final response = await http.get(
'https://${Uri.parse(wellKnown.mHomeserver.baseUrl).host}/.well-known/matrix/client');
if (response.statusCode == 200) {
wellKnown = WellKnownInformations.fromJson(json.decode(response.body));
}
}
return wellKnown;
}
Future<WellKnownInformations> getWellKnownInformationsByDomain(dynamic serverUrl) async {
Future<WellKnownInformations> getWellKnownInformationsByDomain(
dynamic serverUrl) async {
var homeserver = (serverUrl is Uri) ? serverUrl : Uri.parse(serverUrl);
final response = await http
.get('https://${homeserver.host}/.well-known/matrix/client');
final response =
await http.get('https://${homeserver.host}/.well-known/matrix/client');
var wellKnown = WellKnownInformations.fromJson(json.decode(response.body));
if (Uri.parse(wellKnown.mHomeserver.baseUrl).host != homeserver.host) {
final response = await http
.get('https://${Uri.parse(wellKnown.mHomeserver.baseUrl).host}/.well-known/matrix/client');
wellKnown = WellKnownInformations.fromJson(json.decode(response.body));
}
final response = await http.get(
'https://${Uri.parse(wellKnown.mHomeserver.baseUrl).host}/.well-known/matrix/client');
if (response.statusCode == 200) {
wellKnown = WellKnownInformations.fromJson(json.decode(response.body));
}
}
return wellKnown;
}
/// Checks the supported versions of the Matrix protocol and the supported
/// login types. Returns false if the server is not compatible with the
/// client.