spotube/lib/provider/Auth.dart
Kingkor Roy Tirtho 6f6c00d76d anonymous (guest) login support added
build pipeline update to support anon login
not logged in guards added
2022-03-19 14:34:39 +06:00

65 lines
1.8 KiB
Dart

import 'package:flutter/cupertino.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
class Auth with ChangeNotifier {
String? _clientId;
String? _clientSecret;
String? _accessToken;
String? _refreshToken;
DateTime? _expiration;
bool _isLoggedIn = false;
String? get clientId => _clientId;
String? get clientSecret => _clientSecret;
String? get accessToken => _accessToken;
String? get refreshToken => _refreshToken;
DateTime? get expiration => _expiration;
bool get isLoggedIn => _isLoggedIn;
bool get isAnonymous =>
!_isLoggedIn && _clientId == null && _clientSecret == null;
void setAuthState({
bool? isLoggedIn,
bool safe = true,
String? clientId,
String? clientSecret,
String? refreshToken,
String? accessToken,
DateTime? expiration,
}) {
if (safe) {
if (clientId != null) _clientId = clientId;
if (clientSecret != null) _clientSecret = clientSecret;
if (isLoggedIn != null) _isLoggedIn = isLoggedIn;
if (refreshToken != null) _refreshToken = refreshToken;
if (accessToken != null) _accessToken = accessToken;
if (expiration != null) _expiration = expiration;
} else {
_clientId = clientId;
_clientSecret = clientSecret;
_accessToken = accessToken;
_refreshToken = refreshToken;
_expiration = expiration;
}
notifyListeners();
}
logout() {
_clientId = null;
_clientSecret = null;
_accessToken = null;
_refreshToken = null;
_expiration = null;
_isLoggedIn = false;
notifyListeners();
}
@override
String toString() {
return "Auth(clientId: $clientId, clientSecret: $clientSecret, accessToken: $accessToken, refreshToken: $refreshToken, expiration: $expiration, isLoggedIn: $isLoggedIn)";
}
}
var authProvider = ChangeNotifierProvider<Auth>((ref) => Auth());