Can update scanned expenses entries

This commit is contained in:
2025-07-15 20:00:55 +02:00
parent cecb7a0cd1
commit 2568ea14b4
7 changed files with 172 additions and 15 deletions

View File

@@ -16,21 +16,27 @@ class ExpenseEditor extends HookConsumerWidget {
final Uint8List file;
final Future<void> Function(BaseExpenseInfo) onFinished;
final Function()? onRescan;
final Function()? onDelete;
final BaseExpenseInfo? initialData;
const ExpenseEditor({
super.key,
required this.file,
required this.onFinished,
required this.onRescan,
this.onRescan,
this.onDelete,
this.initialData,
});
@override
Widget build(BuildContext context, WidgetRef ref) {
final serverConfig = ref.watch(prefsProvider).requireValue.serverConfig()!;
final labelController = useTextEditingController();
final costController = useTextEditingController();
final timeController = useState(DateTime.now());
final labelController = useTextEditingController(text: initialData?.label);
final costController = useTextEditingController(
text: initialData?.cost.toString(),
);
final timeController = useState(initialData?.time ?? DateTime.now());
final (:pending, :snapshot, :hasError) = useAsyncTask();
@@ -72,15 +78,33 @@ class ExpenseEditor extends HookConsumerWidget {
}
}
// Delete expense
handleDelete() async {
if (await confirm(
context,
content: Text("Do you really want to delete this expense?"),
) &&
onDelete != null) {
onDelete!();
}
}
return Scaffold(
appBar: AppBar(
title: Text("Expense info"),
actions: [
// Rescan expense
IconButton(
onPressed: onRescan == null ? null : handleRescan,
icon: Icon(Icons.restart_alt),
),
onRescan == null
? Container()
: IconButton(
onPressed: handleRescan,
icon: Icon(Icons.restart_alt),
),
// Delete expense
onDelete == null
? Container()
: IconButton(onPressed: handleDelete, icon: Icon(Icons.delete)),
// Submit
snapshot.connectionState == ConnectionState.waiting