From 10bba23d61626919239534ab1620854d35518039 Mon Sep 17 00:00:00 2001 From: Hank Grabowski Date: Thu, 16 Nov 2023 23:04:00 -0500 Subject: [PATCH] Add timeouts to sign in steps so doesn't block indefinitely --- lib/models/auth/oauth_credentials.dart | 38 +++++++++++--------------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/lib/models/auth/oauth_credentials.dart b/lib/models/auth/oauth_credentials.dart index 5bdd8b4..12fc110 100644 --- a/lib/models/auth/oauth_credentials.dart +++ b/lib/models/auth/oauth_credentials.dart @@ -2,11 +2,11 @@ import 'dart:convert'; import 'dart:io'; import 'package:flutter_web_auth_2/flutter_web_auth_2.dart'; -import 'package:http/http.dart' as http; import 'package:logging/logging.dart'; import 'package:result_monad/result_monad.dart'; import 'package:uuid/uuid.dart'; +import '../../utils/network_utils.dart'; import '../exec_error.dart'; import 'credentials_intf.dart'; @@ -92,25 +92,22 @@ class OAuthCredentials implements ICredentials { return Result.ok(true); } final idEndpoint = Uri.parse('https://$serverName/api/v1/apps'); - final response = await http.post(idEndpoint, body: { + final response = await postUrl(idEndpoint, { 'client_name': 'Relatica', 'redirect_uris': redirectUrl, 'scopes': 'read write follow push', 'website': 'https://myportal.social', }); - if (response.statusCode != 200) { - _logger.severe('Error: ${response.statusCode}: ${response.body}'); - return buildErrorResult( - type: ErrorType.serverError, - message: 'Error: ${response.statusCode}: ${response.body}', - ); - } + response.match(onSuccess: (body) { + final json = jsonDecode(body); + clientId = json['client_id']; + clientSecret = json['client_secret']; + }, onError: (error) { + _logger.severe('Error logging in: $error'); + }); - final json = jsonDecode(response.body); - clientId = json['client_id']; - clientSecret = json['client_secret']; - return Result.ok(true); + return response.mapValue((_) => true); } FutureResult _login() async { @@ -146,15 +143,12 @@ class OAuthCredentials implements ICredentials { 'grant_type': 'authorization_code', 'code': code, }; - final response = await http.post(url2, body: body); - if (response.statusCode != 200) { - _logger.severe('Error: ${response.statusCode}: ${response.body}'); - return buildErrorResult( - type: ErrorType.serverError, - message: 'Error: ${response.statusCode}: ${response.body}', - ); - } - accessToken = jsonDecode(response.body)['access_token']; + final response = await postUrl(url2, body); + response.match(onSuccess: (body) { + accessToken = jsonDecode(body)['access_token']; + }, onError: (error) { + _logger.severe('Error doing OAUth processing: $error'); + }); } catch (e) { _logger.severe('Exception while Doing OAuth Process: $e'); return buildErrorResult(