From b8bd90a44da8870dd5c8a240715a469826cbb73e Mon Sep 17 00:00:00 2001 From: ggurdin Date: Wed, 7 Aug 2024 12:48:28 -0400 Subject: [PATCH] replace accessToken with matrix access token --- .../controllers/alternative_translator.dart | 4 +- .../controllers/choreographer.dart | 2 +- .../controllers/igc_controller.dart | 2 +- .../controllers/span_data_controller.dart | 2 +- .../widgets/it_feedback_card.dart | 2 +- .../contextual_definition_controller.dart | 2 +- .../controllers/it_feedback_controller.dart | 2 +- .../language_detection_controller.dart | 2 +- .../controllers/message_data_controller.dart | 4 +- .../speech_to_text_controller.dart | 2 +- .../text_to_speech_controller.dart | 2 +- lib/pangea/controllers/user_controller.dart | 50 +++-------------- .../controllers/word_net_controller.dart | 2 +- .../pages/find_partner/find_partner.dart | 3 +- lib/pangea/repo/user_repo.dart | 53 +++++++++---------- .../chat/message_translation_card.dart | 2 +- lib/pangea/widgets/new_group/vocab_list.dart | 4 +- 17 files changed, 50 insertions(+), 90 deletions(-) diff --git a/lib/pangea/choreographer/controllers/alternative_translator.dart b/lib/pangea/choreographer/controllers/alternative_translator.dart index 5771d7f90..7ac564087 100644 --- a/lib/pangea/choreographer/controllers/alternative_translator.dart +++ b/lib/pangea/choreographer/controllers/alternative_translator.dart @@ -91,7 +91,7 @@ class AlternativeTranslator { final FullTextTranslationResponseModel results = await FullTextTranslationRepo.translate( - accessToken: await choreographer.accessToken, + accessToken: choreographer.accessToken, request: FullTextTranslationRequestModel( text: choreographer.itController.sourceText!, tgtLang: choreographer.l2LangCode!, @@ -117,7 +117,7 @@ class AlternativeTranslator { } similarityResponse = await SimilarityRepo.get( - accessToken: await choreographer.accessToken, + accessToken: choreographer.accessToken, request: SimilarityRequestModel( benchmark: results.bestTranslation, toCompare: [userTranslation!], diff --git a/lib/pangea/choreographer/controllers/choreographer.dart b/lib/pangea/choreographer/controllers/choreographer.dart index c3cd0ab09..1a11de0e3 100644 --- a/lib/pangea/choreographer/controllers/choreographer.dart +++ b/lib/pangea/choreographer/controllers/choreographer.dart @@ -402,7 +402,7 @@ class Choreographer { PangeaTextController get textController => _textController; - Future get accessToken => pangeaController.userController.accessToken; + String get accessToken => pangeaController.userController.accessToken; clear() { choreoMode = ChoreoMode.igc; diff --git a/lib/pangea/choreographer/controllers/igc_controller.dart b/lib/pangea/choreographer/controllers/igc_controller.dart index 6295efa16..ab0e48669 100644 --- a/lib/pangea/choreographer/controllers/igc_controller.dart +++ b/lib/pangea/choreographer/controllers/igc_controller.dart @@ -46,7 +46,7 @@ class IgcController { ); final IGCTextData igcTextDataResponse = await IgcRepo.getIGC( - await choreographer.accessToken, + choreographer.accessToken, igcRequest: reqBody, ); diff --git a/lib/pangea/choreographer/controllers/span_data_controller.dart b/lib/pangea/choreographer/controllers/span_data_controller.dart index 5f83f1a53..24470454c 100644 --- a/lib/pangea/choreographer/controllers/span_data_controller.dart +++ b/lib/pangea/choreographer/controllers/span_data_controller.dart @@ -65,7 +65,7 @@ class SpanDataController { response = _cache[cacheKey]!.data; } else { response = SpanDataRepo.getSpanDetails( - await choreographer.accessToken, + choreographer.accessToken, request: SpanDetailsRepoReqAndRes( userL1: choreographer.l1LangCode!, userL2: choreographer.l2LangCode!, diff --git a/lib/pangea/choreographer/widgets/it_feedback_card.dart b/lib/pangea/choreographer/widgets/it_feedback_card.dart index 9cada0548..f959715ce 100644 --- a/lib/pangea/choreographer/widgets/it_feedback_card.dart +++ b/lib/pangea/choreographer/widgets/it_feedback_card.dart @@ -73,7 +73,7 @@ class ITFeedbackCardController extends State { isTranslating = true; }); FullTextTranslationRepo.translate( - accessToken: await controller.userController.accessToken, + accessToken: controller.userController.accessToken, request: FullTextTranslationRequestModel( text: res!.text, tgtLang: controller.languageController.userL1?.langCode ?? diff --git a/lib/pangea/controllers/contextual_definition_controller.dart b/lib/pangea/controllers/contextual_definition_controller.dart index d423c9b38..cfe13ebf0 100644 --- a/lib/pangea/controllers/contextual_definition_controller.dart +++ b/lib/pangea/controllers/contextual_definition_controller.dart @@ -51,7 +51,7 @@ class ContextualDefinitionController { try { final ContextualDefinitionResponseModel res = await _ContextualDefinitionRepo.define( - await _pangeaController.userController.accessToken, + _pangeaController.userController.accessToken, request, ); return res; diff --git a/lib/pangea/controllers/it_feedback_controller.dart b/lib/pangea/controllers/it_feedback_controller.dart index ffef9123f..7a989bda6 100644 --- a/lib/pangea/controllers/it_feedback_controller.dart +++ b/lib/pangea/controllers/it_feedback_controller.dart @@ -52,7 +52,7 @@ class ITFeedbackController { ) async { try { final ITFeedbackResponseModel res = await _ITFeedbackRepo.get( - await _pangeaController.userController.accessToken, + _pangeaController.userController.accessToken, request, ); return res; diff --git a/lib/pangea/controllers/language_detection_controller.dart b/lib/pangea/controllers/language_detection_controller.dart index a3e07b0a3..bcc9b4140 100644 --- a/lib/pangea/controllers/language_detection_controller.dart +++ b/lib/pangea/controllers/language_detection_controller.dart @@ -145,7 +145,7 @@ class LanguageDetectionController { return _cache[params]!.data; } else { final Future response = _fetchResponse( - await _pangeaController.userController.accessToken, + _pangeaController.userController.accessToken, params, ); _cache[params] = _LanguageDetectionCacheItem(data: response); diff --git a/lib/pangea/controllers/message_data_controller.dart b/lib/pangea/controllers/message_data_controller.dart index 7b3a3e6d2..9903eada0 100644 --- a/lib/pangea/controllers/message_data_controller.dart +++ b/lib/pangea/controllers/message_data_controller.dart @@ -42,7 +42,7 @@ class MessageDataController extends BaseController { Future _getTokens( TokensRequestModel req, ) async { - final accessToken = await _pangeaController.userController.accessToken; + final accessToken = _pangeaController.userController.accessToken; final TokensResponseModel igcTextData = await TokensRepo.tokenize(accessToken, req); @@ -195,7 +195,7 @@ class MessageDataController extends BaseController { try { final FullTextTranslationResponseModel res = await FullTextTranslationRepo.translate( - accessToken: await _pangeaController.userController.accessToken, + accessToken: _pangeaController.userController.accessToken, request: req, ); diff --git a/lib/pangea/controllers/speech_to_text_controller.dart b/lib/pangea/controllers/speech_to_text_controller.dart index 67462bcef..4e32d6f9e 100644 --- a/lib/pangea/controllers/speech_to_text_controller.dart +++ b/lib/pangea/controllers/speech_to_text_controller.dart @@ -53,7 +53,7 @@ class SpeechToTextController { return _cache[cacheKey]!.data; } else { final Future response = _fetchResponse( - accessToken: await _pangeaController.userController.accessToken, + accessToken: _pangeaController.userController.accessToken, requestModel: requestModel, ); _cache[cacheKey] = _SpeechToTextCacheItem(data: response); diff --git a/lib/pangea/controllers/text_to_speech_controller.dart b/lib/pangea/controllers/text_to_speech_controller.dart index b34092618..069722590 100644 --- a/lib/pangea/controllers/text_to_speech_controller.dart +++ b/lib/pangea/controllers/text_to_speech_controller.dart @@ -100,7 +100,7 @@ class TextToSpeechController { return _cache[params]!.data; } else { final Future response = _fetchResponse( - await _pangeaController.userController.accessToken, + _pangeaController.userController.accessToken, params, ); _cache[params] = _TextToSpeechCacheItem(data: response); diff --git a/lib/pangea/controllers/user_controller.dart b/lib/pangea/controllers/user_controller.dart index bf8ce3c11..035b122e4 100644 --- a/lib/pangea/controllers/user_controller.dart +++ b/lib/pangea/controllers/user_controller.dart @@ -9,7 +9,6 @@ import 'package:fluffychat/pangea/utils/error_handler.dart'; import 'package:jwt_decode/jwt_decode.dart'; import 'package:matrix/matrix.dart' as matrix; -import '../constants/local.key.dart'; import '../models/user_model.dart'; import '../repo/user_repo.dart'; @@ -83,15 +82,6 @@ class UserController extends BaseController { createdAt: DateTime.now(), ); final newProfile = Profile(userSettings: userSettings); - - // we don't use the pangea profile anymore, but we still need - // it to get access token for the choreographer, so create one - await PUserRepo.repoCreatePangeaUser( - userID: userId!, - dob: dob.toIso8601String(), - fullName: fullname!, - matrixAccessToken: _matrixAccessToken!, - ); await newProfile.saveProfileData(waitForDataInSync: true); } @@ -157,41 +147,13 @@ class UserController extends BaseController { /// Returns a boolean value indicating whether a new JWT (JSON Web Token) is needed. bool needNewJWT(String token) => Jwt.isExpired(token); - /// Retrieves the access token for the user. Looks for it locally, - /// and if it's not found or expired, fetches it from the server. - Future get accessToken async { - final localAccessToken = - _pangeaController.pStoreService.read(PLocalKey.access); - - if (localAccessToken == null || needNewJWT(localAccessToken)) { - PangeaProfileResponse? userModel = await PUserRepo.fetchPangeaUserInfo( - userID: userId!, - matrixAccessToken: _matrixAccessToken!, - ); - // Oops, some accounts were made without creating pangea profiles, so they - // don't have access to an access token yet. In that case, create a pangea profile. - if (userModel?.access == null) { - final dob = profile.userSettings.dateOfBirth; - if (dob != null) { - userModel = await PUserRepo.repoCreatePangeaUser( - userID: userId!, - dob: dob.toIso8601String(), - fullName: fullname!, - matrixAccessToken: _matrixAccessToken!, - ); - if (userModel?.access == null) { - throw ("Trying to get accessToken with null userModel"); - } - } - } - _pangeaController.pStoreService.save( - PLocalKey.access, - userModel!.access, - ); - return userModel.access; + /// Retrieves matrix access token. + String get accessToken { + final token = _pangeaController.matrixState.client.accessToken; + if (token == null) { + throw ("Trying to get accessToken with null token. User is not logged in."); } - - return localAccessToken; + return token; } /// Returns the full name of the user. diff --git a/lib/pangea/controllers/word_net_controller.dart b/lib/pangea/controllers/word_net_controller.dart index b7a8d287e..81affd726 100644 --- a/lib/pangea/controllers/word_net_controller.dart +++ b/lib/pangea/controllers/word_net_controller.dart @@ -54,7 +54,7 @@ class WordController extends BaseController { if (local != null) return local; final WordData remote = await WordRepo.getWordNetData( - accessToken: await _pangeaController.userController.accessToken, + accessToken: _pangeaController.userController.accessToken, fullText: fullText, word: word, userL1: userL1, diff --git a/lib/pangea/pages/find_partner/find_partner.dart b/lib/pangea/pages/find_partner/find_partner.dart index a953c7f19..0e50beab6 100644 --- a/lib/pangea/pages/find_partner/find_partner.dart +++ b/lib/pangea/pages/find_partner/find_partner.dart @@ -107,8 +107,7 @@ class FindPartnerController extends State { UserProfileSearchResponse response; try { - final String accessToken = - await pangeaController.userController.accessToken; + final String accessToken = pangeaController.userController.accessToken; response = await PUserRepo.searchUserProfiles( accessToken: accessToken, targetLanguage: targetLanguageSearch.langCode, diff --git a/lib/pangea/repo/user_repo.dart b/lib/pangea/repo/user_repo.dart index 244e21c54..7f3efc48f 100644 --- a/lib/pangea/repo/user_repo.dart +++ b/lib/pangea/repo/user_repo.dart @@ -2,7 +2,6 @@ import 'dart:convert'; import 'dart:developer'; import 'package:fluffychat/pangea/constants/model_keys.dart'; -import 'package:fluffychat/pangea/utils/error_handler.dart'; import 'package:http/http.dart'; import '../models/user_model.dart'; @@ -11,33 +10,33 @@ import '../network/requests.dart'; import '../network/urls.dart'; class PUserRepo { - static Future repoCreatePangeaUser({ - required String userID, - required String dob, - required fullName, - required String matrixAccessToken, - }) async { - try { - final Requests req = Requests( - baseUrl: PApiUrls.baseAPI, - matrixAccessToken: matrixAccessToken, - ); + // static Future repoCreatePangeaUser({ + // required String userID, + // required String dob, + // required fullName, + // required String matrixAccessToken, + // }) async { + // try { + // final Requests req = Requests( + // baseUrl: PApiUrls.baseAPI, + // matrixAccessToken: matrixAccessToken, + // ); - final Map body = { - ModelKey.userFullName: fullName, - ModelKey.userPangeaUserId: userID, - ModelKey.userDateOfBirth: dob, - }; - final resp = await req.post( - url: PApiUrls.createUser, - body: body, - ); - return PangeaProfileResponse.fromJson(jsonDecode(resp.body)); - } catch (err, s) { - ErrorHandler.logError(e: err, s: s); - return null; - } - } + // final Map body = { + // ModelKey.userFullName: fullName, + // ModelKey.userPangeaUserId: userID, + // ModelKey.userDateOfBirth: dob, + // }; + // final resp = await req.post( + // url: PApiUrls.createUser, + // body: body, + // ); + // return PangeaProfileResponse.fromJson(jsonDecode(resp.body)); + // } catch (err, s) { + // ErrorHandler.logError(e: err, s: s); + // return null; + // } + // } static Future fetchPangeaUserInfo({ required String userID, diff --git a/lib/pangea/widgets/chat/message_translation_card.dart b/lib/pangea/widgets/chat/message_translation_card.dart index 68d3a6e95..10e75a47a 100644 --- a/lib/pangea/widgets/chat/message_translation_card.dart +++ b/lib/pangea/widgets/chat/message_translation_card.dart @@ -59,7 +59,7 @@ class MessageTranslationCardState extends State { oldSelectedText = widget.selection.selectedText; final String accessToken = - await MatrixState.pangeaController.userController.accessToken; + MatrixState.pangeaController.userController.accessToken; final resp = await FullTextTranslationRepo.translate( accessToken: accessToken, diff --git a/lib/pangea/widgets/new_group/vocab_list.dart b/lib/pangea/widgets/new_group/vocab_list.dart index 67089145e..ac0d157a7 100644 --- a/lib/pangea/widgets/new_group/vocab_list.dart +++ b/lib/pangea/widgets/new_group/vocab_list.dart @@ -312,7 +312,7 @@ class GenerateVocabButtonState extends State { Future> _getWords() async { final ChatTopic topic = await TopicDataRepo.generate( - await _pangeaController.userController.accessToken, + _pangeaController.userController.accessToken, request: TopicDataRequest( topicInfo: widget.topic, numWords: 10, @@ -514,7 +514,7 @@ class PromptsFieldState extends State { Future> _getPrompts() async { final ChatTopic res = await TopicDataRepo.generate( - await _pangeaController.userController.accessToken, + _pangeaController.userController.accessToken, request: TopicDataRequest( topicInfo: widget.topic, numPrompts: 10,