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