@@ -6,6 +6,7 @@ import 'package:survey_flutter/model/api_token.dart';
66import 'package:survey_flutter/model/request/refresh_token_request.dart' ;
77import 'package:survey_flutter/storage/secure_storage.dart' ;
88import 'package:survey_flutter/storage/secure_storage_impl.dart' ;
9+ import 'package:survey_flutter/utils/serializer/api_token_serializer.dart' ;
910
1011final tokenDataSourceProvider = Provider <TokenDataSource >((ref) {
1112 return TokenDataSourceImpl (ref.watch (secureStorageProvider),
@@ -29,24 +30,29 @@ class TokenDataSourceImpl extends TokenDataSource {
2930
3031 @override
3132 Future <ApiToken > getToken ({bool forceRefresh = false }) async {
32- if (forceRefresh) {
33- final tokenResponse = await _authenticationApiService.refreshToken (
34- RefreshTokenRequest (
35- grantType: _grantType,
36- clientId: Env .clientId,
37- clientSecret: Env .clientSecret,
38- ),
39- );
40- final apiToken = tokenResponse.toApiToken ();
41- await _secureStorage.save (
42- value: apiToken,
43- key: SecureStorageKey .apiToken,
44- );
45- return apiToken;
33+ final currentToken = await _secureStorage.getValue (
34+ key: SecureStorageKey .apiToken,
35+ serializer: ApiTokenSerializer (),
36+ );
37+
38+ if (! forceRefresh) {
39+ return currentToken;
4640 }
4741
48- return await _secureStorage.getValue <ApiToken >(
49- key: SecureStorageKey .apiToken);
42+ final tokenResponse = await _authenticationApiService.refreshToken (
43+ RefreshTokenRequest (
44+ grantType: _grantType,
45+ refreshToken: currentToken.refreshToken,
46+ clientId: Env .clientId,
47+ clientSecret: Env .clientSecret,
48+ ),
49+ );
50+ final newToken = tokenResponse.toApiToken ();
51+ await _secureStorage.save (
52+ value: newToken,
53+ key: SecureStorageKey .apiToken,
54+ );
55+ return newToken;
5056 }
5157
5258 @override
0 commit comments