Skip to content

Commit

Permalink
Merge pull request #49 from pvdthings/refactor-borrowers-module
Browse files Browse the repository at this point in the history
Refactor borrowers module
  • Loading branch information
dillonfagan authored Aug 11, 2024
2 parents 2ed9745 + 103db64 commit e0e30b0
Show file tree
Hide file tree
Showing 30 changed files with 127 additions and 73 deletions.
2 changes: 1 addition & 1 deletion apps/librarian/lib/core/api/models/loan_details_model.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:librarian_app/modules/borrowers/models/borrower_model.dart';
import 'package:librarian_app/core/api/models/borrower_model.dart';

import 'thing_summary_model.dart';

Expand Down
2 changes: 1 addition & 1 deletion apps/librarian/lib/core/api/models/loan_model.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:librarian_app/modules/borrowers/models/borrower_model.dart';
import 'package:librarian_app/core/api/models/borrower_model.dart';
import 'package:librarian_app/core/api/models/thing_summary_model.dart';

class LoanModel {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import 'package:collection/collection.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:librarian_app/core/api/api.dart';
import 'package:librarian_app/modules/borrowers/models/payment_model.dart';
import 'package:librarian_app/core/api/models/payment_model.dart';

import '../models/borrower_model.dart';
import '../api/models/borrower_model.dart';

class BorrowersRepository extends Notifier<Future<List<BorrowerModel>>> {
@override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:librarian_app/modules/borrowers/providers/borrower_details_provider.dart';
import 'package:librarian_app/modules/borrowers/providers/borrowers_filter_provider.dart';
import 'package:librarian_app/modules/borrowers/providers/selected_borrower_provider.dart';
import 'package:librarian_app/modules/borrowers/widgets/borrower_details/borrower_details_pane.dart';
import 'package:librarian_app/modules/borrowers/details/borrower_details_pane.dart';
import 'package:librarian_app/widgets/fields/search_field.dart';
import 'package:librarian_app/widgets/panes/list_pane.dart';
import 'package:librarian_app/widgets/panes/pane_header.dart';

import '../borrowers_list/borrowers_list_view.dart';
import '../../modules/borrowers/list/borrowers_list_view.dart';

class BorrowersDesktopLayout extends ConsumerWidget {
const BorrowersDesktopLayout({super.key});
Expand Down
11 changes: 4 additions & 7 deletions apps/librarian/lib/dashboard/pages/dashboard_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ import 'package:librarian_app/dashboard/providers/create_loan_controller.dart';
import 'package:librarian_app/dashboard/providers/workspace.dart';
import 'package:librarian_app/modules/authentication/providers/auth_service_provider.dart';
import 'package:librarian_app/modules/authentication/providers/user_tray.dart';
import 'package:librarian_app/modules/borrowers/widgets/layouts/borrowers_desktop_layout.dart';
import 'package:librarian_app/modules/borrowers/widgets/borrowers_list/searchable_borrowers_list.dart';
import 'package:librarian_app/modules/borrowers/widgets/needs_attention_view.dart';
import 'package:librarian_app/modules/borrowers/details/needs_attention_page.dart';
import 'package:librarian_app/dashboard/layouts/borrowers_desktop_layout.dart';
import 'package:librarian_app/modules/borrowers/list/searchable_borrowers_list.dart';
import 'package:librarian_app/dashboard/providers/end_drawer_provider.dart';
import 'package:librarian_app/dashboard/widgets/create_menu_item.dart';
import 'package:librarian_app/dashboard/layouts/inventory_desktop_layout.dart';
Expand Down Expand Up @@ -78,10 +78,7 @@ class _DashboardPageState extends ConsumerState<DashboardPage> {
mobileLayout: SearchableBorrowersList(
onTapBorrower: (borrower) {
Navigator.push(context, MaterialPageRoute(builder: (_) {
return Scaffold(
appBar: AppBar(title: Text(borrower.name)),
body: NeedsAttentionView(borrower: borrower),
);
return NeedsAttentionPage(borrower: borrower);
}));
},
),
Expand Down
48 changes: 48 additions & 0 deletions apps/librarian/lib/modules/borrowers/details/borrower_details.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:librarian_app/modules/borrowers/details/contact_card.dart';
import 'package:librarian_app/modules/borrowers/providers/borrower_details_provider.dart';
import 'package:librarian_app/modules/borrowers/details/issues_card.dart';
import 'package:librarian_app/modules/borrowers/details/payments_card.dart';

class BorrowerDetails extends ConsumerWidget {
const BorrowerDetails({super.key});

@override
Widget build(BuildContext context, WidgetRef ref) {
final borrowerDetails = ref.watch(borrowerDetailsProvider);

return FutureBuilder(
future: borrowerDetails,
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const Center(child: CircularProgressIndicator());
}

if (snapshot.hasError) {
return Center(child: Text(snapshot.error.toString()));
}

final borrower = snapshot.data!;

return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
ContactCard(
name: borrower.name,
email: borrower.email,
phone: borrower.phone,
),
const SizedBox(height: 32),
IssuesCard(
borrowerId: borrower.id,
issues: borrower.issues,
),
const SizedBox(height: 32),
const PaymentsCard(),
],
);
},
);
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:librarian_app/modules/borrowers/providers/edited_borrower_details_providers.dart';
import 'package:librarian_app/modules/borrowers/widgets/borrower_details/borrower_details.dart';
import 'package:librarian_app/modules/borrowers/details/borrower_details.dart';
import 'package:librarian_app/widgets/dialogs/save_dialog.dart';
import 'package:librarian_app/widgets/panes/pane_header.dart';

import '../../models/borrower_model.dart';
import '../../../core/api/models/borrower_model.dart';

class BorrowerDetailsPane extends ConsumerWidget {
final Future<BorrowerModel?> borrowerFuture;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:librarian_app/modules/borrowers/providers/borrowers_repository_provider.dart';

import '../../models/issue_model.dart';
import '../dialogs/dues_dialog.dart';
import '../../../core/api/models/issue_model.dart';
import '../payments/dues_dialog.dart';

class BorrowerIssues extends ConsumerWidget {
final String borrowerId;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,36 +1,34 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:librarian_app/modules/borrowers/providers/borrower_details_provider.dart';
import 'package:librarian_app/modules/borrowers/providers/edited_borrower_details_providers.dart';
import 'package:librarian_app/modules/borrowers/widgets/borrower_details/issues_card.dart';
import 'package:librarian_app/modules/borrowers/widgets/borrower_details/payments_card.dart';
import 'package:librarian_app/widgets/details_card/card_header.dart';
import 'package:librarian_app/widgets/details_card/details_card.dart';

class BorrowerDetails extends ConsumerWidget {
const BorrowerDetails({super.key});
import '../providers/edited_borrower_details_providers.dart';

@override
Widget build(BuildContext context, WidgetRef ref) {
final borrowerDetails = ref.watch(borrowerDetailsProvider);

return FutureBuilder(
future: borrowerDetails,
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const Center(child: CircularProgressIndicator());
}

if (snapshot.hasError) {
return Center(child: Text(snapshot.error.toString()));
}
class ContactCard extends ConsumerWidget {
const ContactCard({
super.key,
required this.name,
this.email,
this.phone,
});

final borrower = snapshot.data!;
final String name;
final String? email;
final String? phone;

return Column(
crossAxisAlignment: CrossAxisAlignment.start,
@override
Widget build(BuildContext context, WidgetRef ref) {
return DetailsCard(
header: const CardHeader(title: 'Contact Details'),
showDivider: true,
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
children: [
TextField(
controller: TextEditingController(text: borrower.name),
controller: TextEditingController(text: name),
readOnly: true,
decoration: const InputDecoration(
icon: Icon(Icons.person_rounded),
Expand All @@ -42,7 +40,7 @@ class BorrowerDetails extends ConsumerWidget {
const SizedBox(height: 16),
TextField(
controller: TextEditingController(
text: ref.read(emailProvider) ?? borrower.email,
text: ref.read(emailProvider) ?? email,
),
decoration: const InputDecoration(
icon: Icon(Icons.email_rounded),
Expand All @@ -57,7 +55,7 @@ class BorrowerDetails extends ConsumerWidget {
const SizedBox(height: 16),
TextField(
controller: TextEditingController(
text: ref.read(phoneProvider) ?? borrower.phone,
text: ref.read(phoneProvider) ?? phone,
),
decoration: const InputDecoration(
icon: Icon(Icons.phone_rounded),
Expand All @@ -73,16 +71,9 @@ class BorrowerDetails extends ConsumerWidget {
ref.read(phoneProvider.notifier).state = value;
},
),
const SizedBox(height: 32),
IssuesCard(
borrowerId: borrower.id,
issues: borrower.issues,
),
const SizedBox(height: 32),
const PaymentsCard(),
],
);
},
),
),
);
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:librarian_app/modules/borrowers/models/issue_model.dart';
import 'package:librarian_app/modules/borrowers/widgets/borrower_details/borrower_issues.dart';
import 'package:librarian_app/core/api/models/issue_model.dart';
import 'package:librarian_app/modules/borrowers/details/borrower_issues.dart';
import 'package:librarian_app/widgets/details_card/card_header.dart';
import 'package:librarian_app/widgets/details_card/details_card.dart';

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import 'package:flutter/material.dart';
import 'package:librarian_app/core/api/models/borrower_model.dart';

import 'needs_attention_view.dart';

class NeedsAttentionPage extends StatelessWidget {
const NeedsAttentionPage({super.key, required this.borrower});

final BorrowerModel borrower;

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text(borrower.name)),
body: NeedsAttentionView(borrower: borrower),
);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:librarian_app/modules/borrowers/models/borrower_model.dart';
import 'package:librarian_app/core/api/models/borrower_model.dart';

class NeedsAttentionView extends StatelessWidget {
final BorrowerModel borrower;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:librarian_app/utils/media_query.dart';

import '../../models/borrower_model.dart';
import '../../../core/api/models/borrower_model.dart';

class BorrowersList extends StatefulWidget {
final List<BorrowerModel> borrowers;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import 'package:librarian_app/modules/borrowers/providers/borrowers_provider.dar
import 'package:librarian_app/modules/borrowers/providers/edited_borrower_details_providers.dart';
import 'package:librarian_app/modules/borrowers/providers/selected_borrower_provider.dart';

import '../../models/borrower_model.dart';
import '../../../core/api/models/borrower_model.dart';
import 'borrowers_list.dart';

class BorrowersListView extends ConsumerWidget {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:librarian_app/modules/borrowers/models/borrower_model.dart';
import 'package:librarian_app/core/api/models/borrower_model.dart';
import 'package:librarian_app/modules/borrowers/providers/borrowers_filter_provider.dart';
import 'package:librarian_app/modules/borrowers/widgets/borrowers_list/borrowers_list_view.dart';
import 'package:librarian_app/modules/borrowers/list/borrowers_list_view.dart';

import '../../../../widgets/fields/submit_text_field.dart';
import '../../../widgets/fields/submit_text_field.dart';

class SearchableBorrowersList extends ConsumerWidget {
final void Function(BorrowerModel borrower)? onTapBorrower;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:librarian_app/modules/borrowers/providers/borrowers_repository_provider.dart';
import 'package:librarian_app/modules/borrowers/providers/selected_borrower_provider.dart';

import '../models/borrower_model.dart';
import '../../../core/api/models/borrower_model.dart';

final borrowerDetailsProvider = Provider<Future<BorrowerModel?>>((ref) async {
ref.watch(borrowersRepositoryProvider);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:librarian_app/modules/borrowers/models/borrower_model.dart';
import 'package:librarian_app/core/api/models/borrower_model.dart';
import 'package:librarian_app/modules/borrowers/providers/borrowers_filter_provider.dart';
import 'package:librarian_app/modules/borrowers/providers/borrowers_repository_provider.dart';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:librarian_app/modules/borrowers/models/borrower_model.dart';
import 'package:librarian_app/modules/borrowers/data/borrowers_repository.dart';
import 'package:librarian_app/core/api/models/borrower_model.dart';
import 'package:librarian_app/core/data/borrowers_repository.dart';

final borrowersRepositoryProvider =
NotifierProvider<BorrowersRepository, Future<List<BorrowerModel>>>(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:flutter_riverpod/flutter_riverpod.dart';

import '../models/borrower_model.dart';
import '../../../core/api/models/borrower_model.dart';

final selectedBorrowerProvider = StateProvider<BorrowerModel?>((ref) => null);
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';

import '../models/borrower_model.dart';
import 'borrowers_list/borrowers_list.dart';
import '../../../core/api/models/borrower_model.dart';
import '../../borrowers/list/borrowers_list.dart';

class BorrowerSearchDelegate extends SearchDelegate<BorrowerModel?> {
BorrowerSearchDelegate(this.borrowers);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:librarian_app/modules/borrowers/models/borrower_model.dart';
import 'package:librarian_app/core/api/models/borrower_model.dart';
import 'package:librarian_app/widgets/detail.dart';
import 'package:librarian_app/core/api/models/thing_summary_model.dart';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:librarian_app/modules/borrowers/models/borrower_model.dart';
import 'package:librarian_app/core/api/models/borrower_model.dart';
import 'package:librarian_app/modules/borrowers/providers/borrowers_repository_provider.dart';
import 'package:librarian_app/modules/borrowers/widgets/borrower_details/borrower_issues.dart';
import 'package:librarian_app/modules/borrowers/widgets/borrower_search_delegate.dart';
import 'package:librarian_app/modules/borrowers/details/borrower_issues.dart';
import 'package:librarian_app/modules/loans/checkout/borrower_search_delegate.dart';
import 'package:librarian_app/modules/loans/details/loan_details_page.dart';
import 'package:librarian_app/modules/loans/providers/loans_controller_provider.dart';
import 'package:librarian_app/modules/loans/checkout/eye_protection_dialog.dart';
Expand Down
2 changes: 1 addition & 1 deletion apps/librarian/lib/modules/loans/details/loan_details.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:librarian_app/modules/borrowers/models/borrower_model.dart';
import 'package:librarian_app/core/api/models/borrower_model.dart';
import 'package:librarian_app/widgets/detail.dart';
import 'package:librarian_app/core/api/models/thing_summary_model.dart';
import 'package:librarian_app/utils/media_query.dart';
Expand Down
2 changes: 1 addition & 1 deletion apps/librarian/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
version: 1.0.0+12
version: 1.0.0+13

environment:
sdk: '>=3.0.0'
Expand Down

0 comments on commit e0e30b0

Please sign in to comment.