Commit 34821612 authored by Ilham Maulana's avatar Ilham Maulana 💻

feat: init loading state

parent 26b9540e
...@@ -20,6 +20,7 @@ class AuthProvider with ChangeNotifier { ...@@ -20,6 +20,7 @@ class AuthProvider with ChangeNotifier {
bool filterByOverdued = false; bool filterByOverdued = false;
int? userIdResetPw; int? userIdResetPw;
bool isLoading = false;
bool resetPasswordTokenSended = false; bool resetPasswordTokenSended = false;
bool resetPasswordSucced = false; bool resetPasswordSucced = false;
...@@ -35,23 +36,8 @@ class AuthProvider with ChangeNotifier { ...@@ -35,23 +36,8 @@ class AuthProvider with ChangeNotifier {
return await storage.read(key: 'access_token'); return await storage.read(key: 'access_token');
} }
Future<void> validateToken() async {
String? token = await getAccessToken();
bool isValid = token != null;
if (!isValid) {
isAuthenticated = false;
}
isAuthenticated = true;
}
Future<void> signIn(String username, String password) async { Future<void> signIn(String username, String password) async {
final token = await getAccessToken(); isLoading = true;
if (token != null) {
validateToken();
}
try { try {
final response = await http.post( final response = await http.post(
Uri.parse('$baseUrl/auth/login'), Uri.parse('$baseUrl/auth/login'),
...@@ -61,8 +47,10 @@ class AuthProvider with ChangeNotifier { ...@@ -61,8 +47,10 @@ class AuthProvider with ChangeNotifier {
if (response.statusCode == 200) { if (response.statusCode == 200) {
final data = jsonDecode(response.body); final data = jsonDecode(response.body);
await storeAccessToken(Token.fromJson(data)!.key); String token = Token.fromJson(data)!.key;
await storeAccessToken(token);
isAuthenticated = true;
invalidUsernameOrPassword = false; invalidUsernameOrPassword = false;
debugPrint("Login successful $token"); debugPrint("Login successful $token");
} else if (response.statusCode == 401) { } else if (response.statusCode == 401) {
...@@ -74,6 +62,7 @@ class AuthProvider with ChangeNotifier { ...@@ -74,6 +62,7 @@ class AuthProvider with ChangeNotifier {
debugPrint("Login failed $code"); debugPrint("Login failed $code");
} }
isLoading = false;
notifyListeners(); notifyListeners();
} catch (error) { } catch (error) {
debugPrint("Login failed $error"); debugPrint("Login failed $error");
...@@ -81,6 +70,7 @@ class AuthProvider with ChangeNotifier { ...@@ -81,6 +70,7 @@ class AuthProvider with ChangeNotifier {
} }
Future<void> signOut() async { Future<void> signOut() async {
isLoading = true;
final token = await getAccessToken(); final token = await getAccessToken();
try { try {
...@@ -100,6 +90,7 @@ class AuthProvider with ChangeNotifier { ...@@ -100,6 +90,7 @@ class AuthProvider with ChangeNotifier {
debugPrint("Logout failed: ${response.statusCode} ${response.body}"); debugPrint("Logout failed: ${response.statusCode} ${response.body}");
} }
isLoading = false;
notifyListeners(); notifyListeners();
} catch (error) { } catch (error) {
debugPrint("Logout failed $error"); debugPrint("Logout failed $error");
...@@ -107,6 +98,8 @@ class AuthProvider with ChangeNotifier { ...@@ -107,6 +98,8 @@ class AuthProvider with ChangeNotifier {
} }
Future<void> signUp(String username, String email, String password) async { Future<void> signUp(String username, String email, String password) async {
isLoading = true;
try { try {
final body = { final body = {
"username": username, "username": username,
...@@ -121,19 +114,17 @@ class AuthProvider with ChangeNotifier { ...@@ -121,19 +114,17 @@ class AuthProvider with ChangeNotifier {
if (response.statusCode == 200) { if (response.statusCode == 200) {
final data = jsonDecode(response.body); final data = jsonDecode(response.body);
storeAccessToken(Token.fromJson(data)!.key); String token = Token.fromJson(data)!.key;
storeAccessToken(token);
isAuthenticated = true;
final token = await getAccessToken(); debugPrint("Signup successful $token");
if (token != null) {
validateToken();
}
debugPrint(response.body);
} else { } else {
debugPrint( debugPrint(
"Error: sign up failed, ${response.statusCode}: ${response.body}"); "Error: sign up failed, ${response.statusCode}: ${response.body}");
} }
isLoading = false;
notifyListeners(); notifyListeners();
} catch (error) { } catch (error) {
debugPrint("Error: sign up failed, $error"); debugPrint("Error: sign up failed, $error");
...@@ -141,6 +132,7 @@ class AuthProvider with ChangeNotifier { ...@@ -141,6 +132,7 @@ class AuthProvider with ChangeNotifier {
} }
Future<void> getUserDetail() async { Future<void> getUserDetail() async {
isLoading = true;
final token = await getAccessToken(); final token = await getAccessToken();
if (token != null) { if (token != null) {
...@@ -160,6 +152,7 @@ class AuthProvider with ChangeNotifier { ...@@ -160,6 +152,7 @@ class AuthProvider with ChangeNotifier {
debugPrint('Error fetching user details: ${response.statusCode}'); debugPrint('Error fetching user details: ${response.statusCode}');
} }
isLoading = true;
notifyListeners(); notifyListeners();
} catch (error) { } catch (error) {
debugPrint('Error user details: $error'); debugPrint('Error user details: $error');
...@@ -175,6 +168,7 @@ class AuthProvider with ChangeNotifier { ...@@ -175,6 +168,7 @@ class AuthProvider with ChangeNotifier {
String? lastName, String? lastName,
bool isStaff, bool isStaff,
) async { ) async {
isLoading = true;
final token = await getAccessToken(); final token = await getAccessToken();
if (token != null) { if (token != null) {
...@@ -202,6 +196,7 @@ class AuthProvider with ChangeNotifier { ...@@ -202,6 +196,7 @@ class AuthProvider with ChangeNotifier {
'Error update user details: ${response.statusCode}, ${response.body}'); 'Error update user details: ${response.statusCode}, ${response.body}');
} }
isLoading = false;
notifyListeners(); notifyListeners();
} catch (error) { } catch (error) {
debugPrint("Error update user details: $error"); debugPrint("Error update user details: $error");
...@@ -210,6 +205,8 @@ class AuthProvider with ChangeNotifier { ...@@ -210,6 +205,8 @@ class AuthProvider with ChangeNotifier {
} }
Future<void> resetPassword(String email) async { Future<void> resetPassword(String email) async {
isLoading = true;
try { try {
final response = await http.post( final response = await http.post(
Uri.parse('$baseUrl/reset-password/request-token'), Uri.parse('$baseUrl/reset-password/request-token'),
...@@ -226,6 +223,7 @@ class AuthProvider with ChangeNotifier { ...@@ -226,6 +223,7 @@ class AuthProvider with ChangeNotifier {
'Error reset user password: ${response.statusCode}, ${response.body}'); 'Error reset user password: ${response.statusCode}, ${response.body}');
} }
isLoading = false;
notifyListeners(); notifyListeners();
} catch (error) { } catch (error) {
debugPrint("Error reset user password: $error"); debugPrint("Error reset user password: $error");
...@@ -234,6 +232,7 @@ class AuthProvider with ChangeNotifier { ...@@ -234,6 +232,7 @@ class AuthProvider with ChangeNotifier {
Future<void> confirmResetPassword( Future<void> confirmResetPassword(
int pin, String password1, String password2) async { int pin, String password1, String password2) async {
isLoading = true;
final body = jsonEncode({ final body = jsonEncode({
"pin": pin, "pin": pin,
"password1": password1, "password1": password1,
...@@ -254,6 +253,7 @@ class AuthProvider with ChangeNotifier { ...@@ -254,6 +253,7 @@ class AuthProvider with ChangeNotifier {
'Error confirm reset user password: ${response.statusCode}, ${response.body}'); 'Error confirm reset user password: ${response.statusCode}, ${response.body}');
} }
isLoading = false;
notifyListeners(); notifyListeners();
} catch (error) { } catch (error) {
debugPrint("Error confirm reset user password: $error"); debugPrint("Error confirm reset user password: $error");
...@@ -261,6 +261,7 @@ class AuthProvider with ChangeNotifier { ...@@ -261,6 +261,7 @@ class AuthProvider with ChangeNotifier {
} }
Future<void> getMemberLoan() async { Future<void> getMemberLoan() async {
isLoading = true;
final token = await getAccessToken(); final token = await getAccessToken();
String url = '$baseUrl/members/${user?.accountId}/loans/'; String url = '$baseUrl/members/${user?.accountId}/loans/';
...@@ -289,6 +290,7 @@ class AuthProvider with ChangeNotifier { ...@@ -289,6 +290,7 @@ class AuthProvider with ChangeNotifier {
"Failed to get member loan. ${response.statusCode}: ${response.body}"); "Failed to get member loan. ${response.statusCode}: ${response.body}");
} }
isLoading = false;
notifyListeners(); notifyListeners();
} catch (error) { } catch (error) {
debugPrint("Failed to get member loan. $error"); debugPrint("Failed to get member loan. $error");
...@@ -296,16 +298,21 @@ class AuthProvider with ChangeNotifier { ...@@ -296,16 +298,21 @@ class AuthProvider with ChangeNotifier {
} }
void setFilterUpcoming() { void setFilterUpcoming() {
isLoading = true;
filterByUpcoming = !filterByUpcoming; filterByUpcoming = !filterByUpcoming;
isLoading = false;
notifyListeners(); notifyListeners();
} }
void setFilterOverdued() { void setFilterOverdued() {
isLoading = true;
filterByOverdued = !filterByOverdued; filterByOverdued = !filterByOverdued;
notifyListeners(); notifyListeners();
isLoading = false;
} }
Future<void> createMemberLoan(int memberId, int bookId, int loanDay) async { Future<void> createMemberLoan(int memberId, int bookId, int loanDay) async {
isLoading = true;
final token = await getAccessToken(); final token = await getAccessToken();
final now = DateTime.now(); final now = DateTime.now();
...@@ -335,6 +342,7 @@ class AuthProvider with ChangeNotifier { ...@@ -335,6 +342,7 @@ class AuthProvider with ChangeNotifier {
"Failed to create member loan. ${response.statusCode}: ${response.body}"); "Failed to create member loan. ${response.statusCode}: ${response.body}");
} }
isLoading = false;
notifyListeners(); notifyListeners();
} catch (error) { } catch (error) {
debugPrint("Failed to create member loan. $error"); debugPrint("Failed to create member loan. $error");
...@@ -343,6 +351,7 @@ class AuthProvider with ChangeNotifier { ...@@ -343,6 +351,7 @@ class AuthProvider with ChangeNotifier {
// for admin or librarian // for admin or librarian
Future<void> getLoans(String? type) async { Future<void> getLoans(String? type) async {
isLoading = true;
final token = await storage.read(key: 'access_token'); final token = await storage.read(key: 'access_token');
String url = baseUrl; String url = baseUrl;
if (type == "upcoming") { if (type == "upcoming") {
...@@ -377,6 +386,7 @@ class AuthProvider with ChangeNotifier { ...@@ -377,6 +386,7 @@ class AuthProvider with ChangeNotifier {
debugPrint("Error: Fetch upcoming loans failed, $code"); debugPrint("Error: Fetch upcoming loans failed, $code");
} }
isLoading = false;
notifyListeners(); notifyListeners();
} catch (error) { } catch (error) {
debugPrint("Error: Fetch upcoming loans failed, $error"); debugPrint("Error: Fetch upcoming loans failed, $error");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment