Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lib/amap/providers/user_amount_provider.dart
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ final userAmountProvider =
amapUserRepository: amapUserRepository,
);
tokenExpireWrapperAuth(ref, () async {
final userId = ref.watch(idProvider);
final userId = ref.watch(userIdProvider);
userId.whenData(
(value) async => await userCashNotifier.loadCashByUser(value),
);
Expand Down
2 changes: 1 addition & 1 deletion lib/amap/providers/user_order_list_provider.dart
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ final userOrderListProvider =
orderListRepository: orderListRepository,
);
tokenExpireWrapperAuth(ref, () async {
final userId = ref.watch(idProvider);
final userId = ref.watch(userIdProvider);
userId.whenData(
(value) async => await userOrderListNotifier.loadOrderList(value),
);
Expand Down
67 changes: 67 additions & 0 deletions lib/auth/class/auth_request.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
enum AuthGrantType { authorizationCode, refreshToken }

class AuthRequest {
late final String token;
late final String clientId;
late final String redirectUri;
late final String codeVerifier;
late final AuthGrantType grantType;

AuthRequest({
required this.token,
required this.clientId,
required this.redirectUri,
required this.codeVerifier,
required this.grantType,
});

Map<String, dynamic> toJson() {
final data = <String, dynamic>{};
data['client_id'] = clientId;
switch (grantType) {
case AuthGrantType.authorizationCode:
data['code_verifier'] = codeVerifier;
data['redirect_uri'] = redirectUri;
data['code'] = token;
data['grant_type'] = 'authorization_code';
break;
case AuthGrantType.refreshToken:
data['refresh_token'] = token;

data['grant_type'] = 'refresh_token';
break;
}
return data;
}

AuthRequest copyWith({
String? token,
String? clientId,
String? redirectUri,
String? codeVerifier,
AuthGrantType? grantType,
}) {
return AuthRequest(
token: token ?? this.token,
clientId: clientId ?? this.clientId,
redirectUri: redirectUri ?? this.redirectUri,
codeVerifier: codeVerifier ?? this.codeVerifier,
grantType: grantType ?? this.grantType,
);
}

static AuthRequest empty() {
return AuthRequest(
token: '',
clientId: '',
redirectUri: '',
codeVerifier: '',
grantType: AuthGrantType.authorizationCode,
);
}

@override
String toString() {
return 'AuthRequest(token: $token, clientId: $clientId, redirectUri: $redirectUri, codeVerifier: $codeVerifier, grantType: $grantType)';
}
}
56 changes: 56 additions & 0 deletions lib/auth/class/auth_token.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import 'package:flutter_appauth/flutter_appauth.dart';

/// A type-safe class to hold authentication tokens, preferable to a raw Map.
class AuthToken {
late final String accessToken;
late final String refreshToken;

AuthToken({required this.accessToken, required this.refreshToken});

AuthToken.fromJson(Map<String, dynamic> json) {
accessToken = json['access_token'] as String;
refreshToken = json['refresh_token'] as String;
}

AuthToken.fromTokenResponse(TokenResponse response) {
accessToken = response.accessToken ?? '';
refreshToken = response.refreshToken ?? '';
}

Map<String, dynamic> toJson() {
final data = <String, dynamic>{};
data['access_token'] = accessToken;
data['refresh_token'] = refreshToken;
return data;
}

static AuthToken empty() {
return AuthToken(accessToken: '', refreshToken: '');
}

AuthToken copyWith({String? accessToken, String? refreshToken}) {
return AuthToken(
accessToken: accessToken ?? this.accessToken,
refreshToken: refreshToken ?? this.refreshToken,
);
}

@override
String toString() {
return 'AuthToken(accessToken: $accessToken, refreshToken: $refreshToken)';
}

@override
bool operator ==(Object other) {
if (identical(this, other)) return true;
if (other.runtimeType != runtimeType) return false;
final AuthToken otherToken = other as AuthToken;
return accessToken == otherToken.accessToken &&
refreshToken == otherToken.refreshToken;
}

@override
int get hashCode {
return accessToken.hashCode ^ refreshToken.hashCode;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,9 @@ class IsConnectedProvider extends StateNotifier<bool> {
}
}

final isConnectedProvider = StateNotifierProvider<IsConnectedProvider, bool>((
ref,
) {
final notifier = IsConnectedProvider();
notifier.isInternet();
return notifier;
});
final connectionStatusProvider =
StateNotifierProvider<IsConnectedProvider, bool>((ref) {
final notifier = IsConnectedProvider();
notifier.isInternet();
return notifier;
});
Loading