Display accounts balances
This commit is contained in:
@@ -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}
|
||||
|
Reference in New Issue
Block a user