Working auth and added shared notes

This commit is contained in:
Nathan Anderson
2023-07-27 01:40:26 -06:00
parent 18aad2b3d5
commit 83393807c7
68 changed files with 2138 additions and 661 deletions
@@ -2,10 +2,12 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:helpers/helpers/misc_build/build_media.dart';
import 'package:rluv/global/utils.dart';
import '../../../global/api.dart';
import '../../../global/store.dart';
import '../../../global/styles.dart';
import '../../../global/widgets/ui_button.dart';
import '../../../models/budget_category_model.dart';
import '../../../models/transaction_model.dart';
@@ -20,8 +22,7 @@ class AddTransactionDialog extends ConsumerStatefulWidget {
}
class _AddTransactionDialogState extends ConsumerState<AddTransactionDialog> {
bool loading = false;
bool complete = false;
late DateTime selectedDate;
late final TextEditingController amountController;
late final TextEditingController memoController;
@@ -38,11 +39,13 @@ class _AddTransactionDialogState extends ConsumerState<AddTransactionDialog> {
TextEditingController(text: widget.transaction!.amount.toString());
memoController = TextEditingController(text: widget.transaction!.memo);
transactionType = widget.transaction!.type;
selectedDate = widget.transaction!.date;
} else {
amountController = TextEditingController();
memoController = TextEditingController();
selectedDate = DateTime.now();
}
final categories = ref.read(Store().budgetCategoriesProvider);
final categories = ref.read(budgetCategoriesProvider);
if (categories.isNotEmpty) {
selectedBudgetCategory = categories.first;
}
@@ -51,21 +54,8 @@ class _AddTransactionDialogState extends ConsumerState<AddTransactionDialog> {
@override
Widget build(BuildContext context) {
if (complete) {
WidgetsBinding.instance.addPostFrameCallback((_) {
Navigator.pop(context);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(widget.transaction != null
? 'Transaction updated!'
: 'Transaction added!'),
),
);
});
return Container();
}
final List<BudgetCategory> budgetCategories =
ref.read(Store().budgetCategoriesProvider);
ref.read(budgetCategoriesProvider);
return SizedBox(
width: BuildMedia(context).width * Styles.dialogScreenWidthFactor,
child: budgetCategories.isEmpty
@@ -260,9 +250,20 @@ class _AddTransactionDialogState extends ConsumerState<AddTransactionDialog> {
onFieldSubmitted: (_) {},
),
),
ElevatedButton(
onPressed: loading ? null : () => submitTransaction(),
child: const Text('Add'),
UiButton(
showLoading: true,
text: 'ADD',
color: Styles.lavender,
onPressed: () => submitTransaction().then((_) {
Navigator.pop(context);
showSnack(
ref: ref,
text: widget.transaction != null
? 'Transaction updated!'
: 'Transaction added!',
type: SnackType.success,
);
}),
),
],
),
@@ -270,12 +271,9 @@ class _AddTransactionDialogState extends ConsumerState<AddTransactionDialog> {
}
Future submitTransaction() async {
setState(() {
loading = true;
});
Map<String, dynamic>? data;
if (widget.transaction != null) {
data = await Api().put(
data = await ref.read(apiProvider.notifier).put(
path: 'transactions',
data: Transaction.copyWith(widget.transaction!, {
'memo': memoController.text.isNotEmpty ? memoController.text : null,
@@ -285,7 +283,7 @@ class _AddTransactionDialogState extends ConsumerState<AddTransactionDialog> {
: selectedBudgetCategory.id,
}).toJson());
} else {
data = await Api().post(
data = await ref.read(apiProvider.notifier).post(
path: 'transactions',
data: Transaction(
amount: double.parse(amountController.text),
@@ -304,26 +302,17 @@ class _AddTransactionDialogState extends ConsumerState<AddTransactionDialog> {
final success = data != null ? data['success'] as bool : false;
if (success) {
if (widget.transaction != null) {
ref
.read(Store().dashboardProvider.notifier)
.update({'transactions': data});
ref.read(dashboardProvider.notifier).update({'transactions': data});
} else {
ref
.read(Store().dashboardProvider.notifier)
.add({'transactions': data});
ref.read(dashboardProvider.notifier).add({'transactions': data});
}
complete = true;
} else {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(widget.transaction != null
showSnack(
ref: ref,
text: widget.transaction != null
? 'Failed to edit transaction'
: 'Failed to add transaction'),
),
);
: 'Failed to add transaction',
type: SnackType.error);
}
setState(() {
loading = false;
});
}
}