Display accounts balances

This commit is contained in:
2025-04-21 12:31:00 +02:00
parent 6ee250d872
commit 1621fe41e2
5 changed files with 60 additions and 3 deletions

View File

@@ -1,10 +1,13 @@
import React from "react";
import { Account, AccountApi, AccountsList } from "../api/AccountApi";
import { AsyncWidget } from "../widgets/AsyncWidget";
import { useSnackbar } from "./context_providers/SnackbarProvider";
import { MovementApi } from "../api/MovementsApi";
interface AccountContext {
list: AccountsList;
reload: () => Promise<void>;
reloadBalances: () => Promise<void>;
get(id: number): Account | null;
}
@@ -13,6 +16,8 @@ const AccountContextK = React.createContext<AccountContext | null>(null);
export function AccountsListProvider(
p: React.PropsWithChildren
): React.ReactElement {
const snackbar = useSnackbar();
const [list, setList] = React.useState<AccountsList | null>(null);
const loadKey = React.useRef(1);
@@ -35,6 +40,16 @@ export function AccountsListProvider(
});
};
const reloadBalances = async () => {
try {
const balances = await MovementApi.GetAllBalances();
setList(list!.mapBalances(balances));
} catch (e) {
console.error("Failed to reload accounts balance!", e);
snackbar(`Failed to reload accounts balance! ${e}`);
}
};
return (
<AsyncWidget
ready={list !== null}
@@ -55,6 +70,7 @@ export function AccountsListProvider(
return list!.get(id);
},
reload: onReload,
reloadBalances,
}}
>
{p.children}