replace accessToken with matrix access token
This commit is contained in:
parent
8adf15a1f4
commit
b8bd90a44d
17 changed files with 50 additions and 90 deletions
|
|
@ -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!],
|
||||
|
|
|
|||
|
|
@ -402,7 +402,7 @@ class Choreographer {
|
|||
|
||||
PangeaTextController get textController => _textController;
|
||||
|
||||
Future<String> get accessToken => pangeaController.userController.accessToken;
|
||||
String get accessToken => pangeaController.userController.accessToken;
|
||||
|
||||
clear() {
|
||||
choreoMode = ChoreoMode.igc;
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ class IgcController {
|
|||
);
|
||||
|
||||
final IGCTextData igcTextDataResponse = await IgcRepo.getIGC(
|
||||
await choreographer.accessToken,
|
||||
choreographer.accessToken,
|
||||
igcRequest: reqBody,
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -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!,
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ class ITFeedbackCardController extends State<ITFeedbackCard> {
|
|||
isTranslating = true;
|
||||
});
|
||||
FullTextTranslationRepo.translate(
|
||||
accessToken: await controller.userController.accessToken,
|
||||
accessToken: controller.userController.accessToken,
|
||||
request: FullTextTranslationRequestModel(
|
||||
text: res!.text,
|
||||
tgtLang: controller.languageController.userL1?.langCode ??
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ class ContextualDefinitionController {
|
|||
try {
|
||||
final ContextualDefinitionResponseModel res =
|
||||
await _ContextualDefinitionRepo.define(
|
||||
await _pangeaController.userController.accessToken,
|
||||
_pangeaController.userController.accessToken,
|
||||
request,
|
||||
);
|
||||
return res;
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ class ITFeedbackController {
|
|||
) async {
|
||||
try {
|
||||
final ITFeedbackResponseModel res = await _ITFeedbackRepo.get(
|
||||
await _pangeaController.userController.accessToken,
|
||||
_pangeaController.userController.accessToken,
|
||||
request,
|
||||
);
|
||||
return res;
|
||||
|
|
|
|||
|
|
@ -145,7 +145,7 @@ class LanguageDetectionController {
|
|||
return _cache[params]!.data;
|
||||
} else {
|
||||
final Future<LanguageDetectionResponse> response = _fetchResponse(
|
||||
await _pangeaController.userController.accessToken,
|
||||
_pangeaController.userController.accessToken,
|
||||
params,
|
||||
);
|
||||
_cache[params] = _LanguageDetectionCacheItem(data: response);
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ class MessageDataController extends BaseController {
|
|||
Future<PangeaMessageTokens?> _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,
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ class SpeechToTextController {
|
|||
return _cache[cacheKey]!.data;
|
||||
} else {
|
||||
final Future<SpeechToTextModel> response = _fetchResponse(
|
||||
accessToken: await _pangeaController.userController.accessToken,
|
||||
accessToken: _pangeaController.userController.accessToken,
|
||||
requestModel: requestModel,
|
||||
);
|
||||
_cache[cacheKey] = _SpeechToTextCacheItem(data: response);
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ class TextToSpeechController {
|
|||
return _cache[params]!.data;
|
||||
} else {
|
||||
final Future<TextToSpeechResponse> response = _fetchResponse(
|
||||
await _pangeaController.userController.accessToken,
|
||||
_pangeaController.userController.accessToken,
|
||||
params,
|
||||
);
|
||||
_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: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<String> 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.
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -107,8 +107,7 @@ class FindPartnerController extends State<FindPartner> {
|
|||
|
||||
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,
|
||||
|
|
|
|||
|
|
@ -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<PangeaProfileResponse?> 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<PangeaProfileResponse?> 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<String, dynamic> 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<String, dynamic> 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<PangeaProfileResponse?> fetchPangeaUserInfo({
|
||||
required String userID,
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ class MessageTranslationCardState extends State<MessageTranslationCard> {
|
|||
|
||||
oldSelectedText = widget.selection.selectedText;
|
||||
final String accessToken =
|
||||
await MatrixState.pangeaController.userController.accessToken;
|
||||
MatrixState.pangeaController.userController.accessToken;
|
||||
|
||||
final resp = await FullTextTranslationRepo.translate(
|
||||
accessToken: accessToken,
|
||||
|
|
|
|||
|
|
@ -312,7 +312,7 @@ class GenerateVocabButtonState extends State<GenerateVocabButton> {
|
|||
|
||||
Future<List<Lemma>> _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<PromptsField> {
|
|||
|
||||
Future<List<DiscussionPrompt>> _getPrompts() async {
|
||||
final ChatTopic res = await TopicDataRepo.generate(
|
||||
await _pangeaController.userController.accessToken,
|
||||
_pangeaController.userController.accessToken,
|
||||
request: TopicDataRequest(
|
||||
topicInfo: widget.topic,
|
||||
numPrompts: 10,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue