Can update scanned expenses entries
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user