Commit 6ab0290f authored by Ilham Maulana's avatar Ilham Maulana 💻

fix: navigation and handle new loans endpoint

parent 7c5cd9f1
......@@ -3,6 +3,8 @@ import 'package:flutter/gestures.dart';
import 'package:go_router/go_router.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:library_app/src/screens/profile_edit_screen.dart';
import 'package:library_app/src/widgets/profile.dart';
import 'package:provider/provider.dart';
import 'package:library_app/src/providers/auth_provider.dart';
import 'package:library_app/src/providers/navigations_provider.dart';
......@@ -54,7 +56,11 @@ class _LibraryApp extends State<LibraryApp> {
GoRoute(
path: "/change-password",
builder: (context, state) => const ChangePasswordScreen(),
)
),
GoRoute(
path: "/profile-edit",
builder: (context, state) => const ProfileEditScreen(),
),
],
);
......
......@@ -17,16 +17,4 @@ class Loan {
this.remainingDays,
this.isOverdue,
);
factory Loan.fromJson(Map<String, dynamic> data) {
final book = Book.fromJson(data["book_detail"]);
return Loan(
book,
null,
data["loan_date"],
data["due_date"],
data["remaining_loan_time"],
data["is_overdue"],
);
}
}
......@@ -459,13 +459,13 @@ class AuthProvider with ChangeNotifier {
// for admin or librarian
Future<void> getLoans(String? type) async {
final token = await storage.read(key: 'access_token');
String url = baseUrl;
String url = "$baseUrl/book-loans";
if (type == "upcoming") {
url += "/upcoming-loans/";
url += '?near_outstanding=True';
} else if (type == "overdue") {
url += "/overdued-loans/";
url += '?overdue=True';
} else {
url += "/book-loans/";
null;
}
if (token != null) {
......@@ -482,11 +482,11 @@ class AuthProvider with ChangeNotifier {
if (response.statusCode == 200) {
final data = jsonDecode(response.body);
if (type == "upcoming") {
nearOutstandingLoans = data["results"];
nearOutstandingLoans = data;
} else if (type == "overdue") {
overduedLoans = data["results"];
overduedLoans = data;
} else {
loans = data["results"];
loans = data;
}
} else {
final code = response.statusCode;
......
......@@ -99,7 +99,7 @@ class ChangePasswordScreen extends StatelessWidget {
return FormScreen(
title: title,
backRoute: "/",
backRoute: "/profile-edit",
body: const ChangePasswordForm(),
);
}
......
......@@ -18,7 +18,7 @@ class ProfileEditScreen extends StatelessWidget {
appBar: AppBar(
title: Text(title),
leading: BackButton(
onPressed: () => context.pop(),
onPressed: () => context.push("/"),
),
),
body: Consumer<AuthProvider>(
......
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:go_router/go_router.dart';
import 'package:library_app/src/providers/auth_provider.dart';
import 'package:library_app/src/widgets/loading.dart';
import 'package:provider/provider.dart';
......@@ -139,8 +138,6 @@ class _ChangePasswordForm extends State<ChangePasswordForm> {
const SizedBox(
height: 20.0,
),
Column(
children: [
SizedBox(
width: double.infinity,
child: FilledButton(
......@@ -158,15 +155,6 @@ class _ChangePasswordForm extends State<ChangePasswordForm> {
: const Text("Submit"),
),
),
SizedBox(
width: double.infinity,
child: TextButton(
child: const Text("Cancel"),
onPressed: () => context.pop("/"),
),
),
],
),
],
),
),
......
......@@ -45,17 +45,8 @@ class _AdminLoanList extends State<AdminLoanList> {
if (getLoans != null) {
var loans = getLoans.map(
(loan) {
var book = Book.fromJson(loan["book_detail"]);
var memberData = loan["member_detail"];
var userData = memberData["user"];
var user = User(
userData["id"],
userData["username"],
userData["email"],
userData["first_name"],
userData["last_name"],
userData["is_staff"],
);
var book = Book.fromJson(loan["book"]);
var user = User.fromJson(loan["user"]);
return Loan(
book,
......
import 'package:flutter/material.dart';
import 'package:library_app/src/providers/auth_provider.dart';
import 'package:provider/provider.dart';
import 'package:go_router/go_router.dart';
import 'package:library_app/src/screens/profile_edit_screen.dart';
import 'package:library_app/src/providers/auth_provider.dart';
import 'package:library_app/src/widgets/navigations.dart';
import 'package:provider/provider.dart';
class Profile extends StatefulWidget {
const Profile({super.key});
......@@ -81,11 +81,7 @@ class _Profile extends State<Profile> {
FilledButton(
child: const Text("Edit Profile"),
onPressed: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => const ProfileEditScreen(),
),
);
context.go("/profile-edit");
},
),
const SizedBox(
......
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