replace accessToken with matrix access token

pull/1384/head
ggurdin 1 year ago
parent 8adf15a1f4
commit b8bd90a44d
No known key found for this signature in database
GPG Key ID: A01CB41737CBB478

@ -91,7 +91,7 @@ class AlternativeTranslator {
final FullTextTranslationResponseModel results = final FullTextTranslationResponseModel results =
await FullTextTranslationRepo.translate( await FullTextTranslationRepo.translate(
accessToken: await choreographer.accessToken, accessToken: choreographer.accessToken,
request: FullTextTranslationRequestModel( request: FullTextTranslationRequestModel(
text: choreographer.itController.sourceText!, text: choreographer.itController.sourceText!,
tgtLang: choreographer.l2LangCode!, tgtLang: choreographer.l2LangCode!,
@ -117,7 +117,7 @@ class AlternativeTranslator {
} }
similarityResponse = await SimilarityRepo.get( similarityResponse = await SimilarityRepo.get(
accessToken: await choreographer.accessToken, accessToken: choreographer.accessToken,
request: SimilarityRequestModel( request: SimilarityRequestModel(
benchmark: results.bestTranslation, benchmark: results.bestTranslation,
toCompare: [userTranslation!], toCompare: [userTranslation!],

@ -402,7 +402,7 @@ class Choreographer {
PangeaTextController get textController => _textController; PangeaTextController get textController => _textController;
Future<String> get accessToken => pangeaController.userController.accessToken; String get accessToken => pangeaController.userController.accessToken;
clear() { clear() {
choreoMode = ChoreoMode.igc; choreoMode = ChoreoMode.igc;

@ -46,7 +46,7 @@ class IgcController {
); );
final IGCTextData igcTextDataResponse = await IgcRepo.getIGC( final IGCTextData igcTextDataResponse = await IgcRepo.getIGC(
await choreographer.accessToken, choreographer.accessToken,
igcRequest: reqBody, igcRequest: reqBody,
); );

@ -65,7 +65,7 @@ class SpanDataController {
response = _cache[cacheKey]!.data; response = _cache[cacheKey]!.data;
} else { } else {
response = SpanDataRepo.getSpanDetails( response = SpanDataRepo.getSpanDetails(
await choreographer.accessToken, choreographer.accessToken,
request: SpanDetailsRepoReqAndRes( request: SpanDetailsRepoReqAndRes(
userL1: choreographer.l1LangCode!, userL1: choreographer.l1LangCode!,
userL2: choreographer.l2LangCode!, userL2: choreographer.l2LangCode!,

@ -73,7 +73,7 @@ class ITFeedbackCardController extends State<ITFeedbackCard> {
isTranslating = true; isTranslating = true;
}); });
FullTextTranslationRepo.translate( FullTextTranslationRepo.translate(
accessToken: await controller.userController.accessToken, accessToken: controller.userController.accessToken,
request: FullTextTranslationRequestModel( request: FullTextTranslationRequestModel(
text: res!.text, text: res!.text,
tgtLang: controller.languageController.userL1?.langCode ?? tgtLang: controller.languageController.userL1?.langCode ??

@ -51,7 +51,7 @@ class ContextualDefinitionController {
try { try {
final ContextualDefinitionResponseModel res = final ContextualDefinitionResponseModel res =
await _ContextualDefinitionRepo.define( await _ContextualDefinitionRepo.define(
await _pangeaController.userController.accessToken, _pangeaController.userController.accessToken,
request, request,
); );
return res; return res;

@ -52,7 +52,7 @@ class ITFeedbackController {
) async { ) async {
try { try {
final ITFeedbackResponseModel res = await _ITFeedbackRepo.get( final ITFeedbackResponseModel res = await _ITFeedbackRepo.get(
await _pangeaController.userController.accessToken, _pangeaController.userController.accessToken,
request, request,
); );
return res; return res;

@ -145,7 +145,7 @@ class LanguageDetectionController {
return _cache[params]!.data; return _cache[params]!.data;
} else { } else {
final Future<LanguageDetectionResponse> response = _fetchResponse( final Future<LanguageDetectionResponse> response = _fetchResponse(
await _pangeaController.userController.accessToken, _pangeaController.userController.accessToken,
params, params,
); );
_cache[params] = _LanguageDetectionCacheItem(data: response); _cache[params] = _LanguageDetectionCacheItem(data: response);

@ -42,7 +42,7 @@ class MessageDataController extends BaseController {
Future<PangeaMessageTokens?> _getTokens( Future<PangeaMessageTokens?> _getTokens(
TokensRequestModel req, TokensRequestModel req,
) async { ) async {
final accessToken = await _pangeaController.userController.accessToken; final accessToken = _pangeaController.userController.accessToken;
final TokensResponseModel igcTextData = final TokensResponseModel igcTextData =
await TokensRepo.tokenize(accessToken, req); await TokensRepo.tokenize(accessToken, req);
@ -195,7 +195,7 @@ class MessageDataController extends BaseController {
try { try {
final FullTextTranslationResponseModel res = final FullTextTranslationResponseModel res =
await FullTextTranslationRepo.translate( await FullTextTranslationRepo.translate(
accessToken: await _pangeaController.userController.accessToken, accessToken: _pangeaController.userController.accessToken,
request: req, request: req,
); );

@ -53,7 +53,7 @@ class SpeechToTextController {
return _cache[cacheKey]!.data; return _cache[cacheKey]!.data;
} else { } else {
final Future<SpeechToTextModel> response = _fetchResponse( final Future<SpeechToTextModel> response = _fetchResponse(
accessToken: await _pangeaController.userController.accessToken, accessToken: _pangeaController.userController.accessToken,
requestModel: requestModel, requestModel: requestModel,
); );
_cache[cacheKey] = _SpeechToTextCacheItem(data: response); _cache[cacheKey] = _SpeechToTextCacheItem(data: response);

@ -100,7 +100,7 @@ class TextToSpeechController {
return _cache[params]!.data; return _cache[params]!.data;
} else { } else {
final Future<TextToSpeechResponse> response = _fetchResponse( final Future<TextToSpeechResponse> response = _fetchResponse(
await _pangeaController.userController.accessToken, _pangeaController.userController.accessToken,
params, params,
); );
_cache[params] = _TextToSpeechCacheItem(data: response); _cache[params] = _TextToSpeechCacheItem(data: response);

@ -9,7 +9,6 @@ import 'package:fluffychat/pangea/utils/error_handler.dart';
import 'package:jwt_decode/jwt_decode.dart'; import 'package:jwt_decode/jwt_decode.dart';
import 'package:matrix/matrix.dart' as matrix; import 'package:matrix/matrix.dart' as matrix;
import '../constants/local.key.dart';
import '../models/user_model.dart'; import '../models/user_model.dart';
import '../repo/user_repo.dart'; import '../repo/user_repo.dart';
@ -83,15 +82,6 @@ class UserController extends BaseController {
createdAt: DateTime.now(), createdAt: DateTime.now(),
); );
final newProfile = Profile(userSettings: userSettings); 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); 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. /// Returns a boolean value indicating whether a new JWT (JSON Web Token) is needed.
bool needNewJWT(String token) => Jwt.isExpired(token); bool needNewJWT(String token) => Jwt.isExpired(token);
/// Retrieves the access token for the user. Looks for it locally, /// Retrieves matrix access token.
/// and if it's not found or expired, fetches it from the server. String get accessToken {
Future<String> get accessToken async { final token = _pangeaController.matrixState.client.accessToken;
final localAccessToken = if (token == null) {
_pangeaController.pStoreService.read(PLocalKey.access); throw ("Trying to get accessToken with null token. User is not logged in.");
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;
} }
return token;
return localAccessToken;
} }
/// Returns the full name of the user. /// Returns the full name of the user.

@ -54,7 +54,7 @@ class WordController extends BaseController {
if (local != null) return local; if (local != null) return local;
final WordData remote = await WordRepo.getWordNetData( final WordData remote = await WordRepo.getWordNetData(
accessToken: await _pangeaController.userController.accessToken, accessToken: _pangeaController.userController.accessToken,
fullText: fullText, fullText: fullText,
word: word, word: word,
userL1: userL1, userL1: userL1,

@ -107,8 +107,7 @@ class FindPartnerController extends State<FindPartner> {
UserProfileSearchResponse response; UserProfileSearchResponse response;
try { try {
final String accessToken = final String accessToken = pangeaController.userController.accessToken;
await pangeaController.userController.accessToken;
response = await PUserRepo.searchUserProfiles( response = await PUserRepo.searchUserProfiles(
accessToken: accessToken, accessToken: accessToken,
targetLanguage: targetLanguageSearch.langCode, targetLanguage: targetLanguageSearch.langCode,

@ -2,7 +2,6 @@ import 'dart:convert';
import 'dart:developer'; import 'dart:developer';
import 'package:fluffychat/pangea/constants/model_keys.dart'; import 'package:fluffychat/pangea/constants/model_keys.dart';
import 'package:fluffychat/pangea/utils/error_handler.dart';
import 'package:http/http.dart'; import 'package:http/http.dart';
import '../models/user_model.dart'; import '../models/user_model.dart';
@ -11,33 +10,33 @@ import '../network/requests.dart';
import '../network/urls.dart'; import '../network/urls.dart';
class PUserRepo { class PUserRepo {
static Future<PangeaProfileResponse?> repoCreatePangeaUser({ // static Future<PangeaProfileResponse?> repoCreatePangeaUser({
required String userID, // required String userID,
required String dob, // required String dob,
required fullName, // required fullName,
required String matrixAccessToken, // required String matrixAccessToken,
}) async { // }) async {
try { // try {
final Requests req = Requests( // final Requests req = Requests(
baseUrl: PApiUrls.baseAPI, // baseUrl: PApiUrls.baseAPI,
matrixAccessToken: matrixAccessToken, // matrixAccessToken: matrixAccessToken,
); // );
final Map<String, dynamic> body = { // final Map<String, dynamic> body = {
ModelKey.userFullName: fullName, // ModelKey.userFullName: fullName,
ModelKey.userPangeaUserId: userID, // ModelKey.userPangeaUserId: userID,
ModelKey.userDateOfBirth: dob, // ModelKey.userDateOfBirth: dob,
}; // };
final resp = await req.post( // final resp = await req.post(
url: PApiUrls.createUser, // url: PApiUrls.createUser,
body: body, // body: body,
); // );
return PangeaProfileResponse.fromJson(jsonDecode(resp.body)); // return PangeaProfileResponse.fromJson(jsonDecode(resp.body));
} catch (err, s) { // } catch (err, s) {
ErrorHandler.logError(e: err, s: s); // ErrorHandler.logError(e: err, s: s);
return null; // return null;
} // }
} // }
static Future<PangeaProfileResponse?> fetchPangeaUserInfo({ static Future<PangeaProfileResponse?> fetchPangeaUserInfo({
required String userID, required String userID,

@ -59,7 +59,7 @@ class MessageTranslationCardState extends State<MessageTranslationCard> {
oldSelectedText = widget.selection.selectedText; oldSelectedText = widget.selection.selectedText;
final String accessToken = final String accessToken =
await MatrixState.pangeaController.userController.accessToken; MatrixState.pangeaController.userController.accessToken;
final resp = await FullTextTranslationRepo.translate( final resp = await FullTextTranslationRepo.translate(
accessToken: accessToken, accessToken: accessToken,

@ -312,7 +312,7 @@ class GenerateVocabButtonState extends State<GenerateVocabButton> {
Future<List<Lemma>> _getWords() async { Future<List<Lemma>> _getWords() async {
final ChatTopic topic = await TopicDataRepo.generate( final ChatTopic topic = await TopicDataRepo.generate(
await _pangeaController.userController.accessToken, _pangeaController.userController.accessToken,
request: TopicDataRequest( request: TopicDataRequest(
topicInfo: widget.topic, topicInfo: widget.topic,
numWords: 10, numWords: 10,
@ -514,7 +514,7 @@ class PromptsFieldState extends State<PromptsField> {
Future<List<DiscussionPrompt>> _getPrompts() async { Future<List<DiscussionPrompt>> _getPrompts() async {
final ChatTopic res = await TopicDataRepo.generate( final ChatTopic res = await TopicDataRepo.generate(
await _pangeaController.userController.accessToken, _pangeaController.userController.accessToken,
request: TopicDataRequest( request: TopicDataRequest(
topicInfo: widget.topic, topicInfo: widget.topic,
numPrompts: 10, numPrompts: 10,

Loading…
Cancel
Save