diff options
Diffstat (limited to 'packages')
-rw-r--r-- | packages/demobank-ui/src/pages/home/index.tsx | 94 |
1 files changed, 52 insertions, 42 deletions
diff --git a/packages/demobank-ui/src/pages/home/index.tsx b/packages/demobank-ui/src/pages/home/index.tsx index 63e09d64d..8f522c07c 100644 --- a/packages/demobank-ui/src/pages/home/index.tsx +++ b/packages/demobank-ui/src/pages/home/index.tsx @@ -91,8 +91,6 @@ const CurrencyContext = createContext<any>(null); type PageContextType = [PageStateType, StateUpdater<PageStateType>]; const PageContextDefault: PageContextType = [ { - hasError: false, - hasInfo: false, isLoggedIn: false, isRawPayto: false, showPublicHistories: false, @@ -161,8 +159,6 @@ interface PageStateType { isLoggedIn: boolean; isRawPayto: boolean; showPublicHistories: boolean; - hasError: boolean; - hasInfo: boolean; withdrawalInProgress: boolean; error?: { description?: string; @@ -480,8 +476,6 @@ function usePageState( isLoggedIn: false, isRawPayto: false, showPublicHistories: false, - hasError: false, - hasInfo: false, withdrawalInProgress: false, }, ): [PageStateType, StateUpdater<PageStateType>] { @@ -504,9 +498,7 @@ function usePageState( return retSetter((current: any) => { const cleanedCurrent: PageStateType = { ...current, - hasInfo: false, info: undefined, - hasError: false, errors: undefined, timestamp: new Date().getTime(), }; @@ -545,7 +537,7 @@ async function abortWithdrawalCall( console.log("No credentials found."); pageStateSetter((prevState) => ({ ...prevState, - hasError: true, + error: { title: `No credentials found.`, }, @@ -556,7 +548,7 @@ async function abortWithdrawalCall( console.log("No withdrawal ID found."); pageStateSetter((prevState) => ({ ...prevState, - hasError: true, + error: { title: `No withdrawal ID found.`, }, @@ -588,7 +580,7 @@ async function abortWithdrawalCall( console.log("Could not abort the withdrawal", error); pageStateSetter((prevState) => ({ ...prevState, - hasError: true, + error: { title: `Could not abort the withdrawal.`, description: (error as any).error.description, @@ -605,7 +597,7 @@ async function abortWithdrawalCall( ); pageStateSetter((prevState) => ({ ...prevState, - hasError: true, + error: { title: `Withdrawal abortion failed.`, description: response.error.description, @@ -619,6 +611,7 @@ async function abortWithdrawalCall( const { ...rest } = prevState; return { ...rest, + info: "Withdrawal aborted!", }; }); @@ -643,7 +636,7 @@ async function confirmWithdrawalCall( console.log("No credentials found."); pageStateSetter((prevState) => ({ ...prevState, - hasError: true, + error: { title: "No credentials found.", }, @@ -654,7 +647,7 @@ async function confirmWithdrawalCall( console.log("No withdrawal ID found."); pageStateSetter((prevState) => ({ ...prevState, - hasError: true, + error: { title: "No withdrawal ID found.", }, @@ -689,7 +682,7 @@ async function confirmWithdrawalCall( console.log("Could not POST withdrawal confirmation to the bank", error); pageStateSetter((prevState) => ({ ...prevState, - hasError: true, + error: { title: `Could not confirm the withdrawal`, description: (error as any).error.description, @@ -707,7 +700,7 @@ async function confirmWithdrawalCall( ); pageStateSetter((prevState) => ({ ...prevState, - hasError: true, + error: { title: `Withdrawal confirmation gave response error`, debug: JSON.stringify(response), @@ -720,6 +713,7 @@ async function confirmWithdrawalCall( const { talerWithdrawUri, ...rest } = prevState; return { ...rest, + info: "Withdrawal confirmed!", }; }); @@ -752,7 +746,7 @@ async function createTransactionCall( console.log("Could not POST transaction request to the bank", error); pageStateSetter((prevState) => ({ ...prevState, - hasError: true, + error: { title: `Could not create the wire transfer`, description: (error as any).error.description, @@ -769,7 +763,7 @@ async function createTransactionCall( ); pageStateSetter((prevState) => ({ ...prevState, - hasError: true, + error: { title: `Transfer creation gave response error`, description: response.error.description, @@ -782,7 +776,7 @@ async function createTransactionCall( console.log("Wire transfer created!"); pageStateSetter((prevState) => ({ ...prevState, - hasInfo: true, + info: "Wire transfer created!", })); @@ -809,7 +803,7 @@ async function createWithdrawalCall( console.log("Page has a problem: no credentials found in the state."); pageStateSetter((prevState) => ({ ...prevState, - hasError: true, + error: { title: "No credentials given.", }, @@ -836,7 +830,7 @@ async function createWithdrawalCall( console.log("Could not POST withdrawal request to the bank", error); pageStateSetter((prevState) => ({ ...prevState, - hasError: true, + error: { title: `Could not create withdrawal operation`, description: (error as any).error.description, @@ -852,7 +846,7 @@ async function createWithdrawalCall( ); pageStateSetter((prevState) => ({ ...prevState, - hasError: true, + error: { title: `Withdrawal creation gave response error`, description: response.error.description, @@ -942,7 +936,7 @@ async function registrationCall( ); pageStateSetter((prevState) => ({ ...prevState, - hasError: true, + error: { title: `Registration failed, please report`, debug: JSON.stringify(error), @@ -955,7 +949,7 @@ async function registrationCall( if (res.status === 409) { pageStateSetter((prevState) => ({ ...prevState, - hasError: true, + error: { title: `That username is already taken`, debug: JSON.stringify(response), @@ -964,7 +958,7 @@ async function registrationCall( } else { pageStateSetter((prevState) => ({ ...prevState, - hasError: true, + error: { title: `New registration gave response error`, debug: JSON.stringify(response), @@ -994,7 +988,7 @@ async function registrationCall( function ErrorBanner(Props: any): VNode | null { const [pageState, pageStateSetter] = Props.pageState; // const i18n = useTranslator(); - if (!pageState.hasError) return null; + if (!pageState.error) return null; const rval = ( <div class="informational informational-fail" style={{ marginTop: 8 }}> @@ -1017,16 +1011,32 @@ function ErrorBanner(Props: any): VNode | null { </div> ); delete pageState.error; - pageState.hasError = false; return rval; } function StatusBanner(Props: any): VNode | null { const [pageState, pageStateSetter] = Props.pageState; - const i18n = useTranslator(); - if (!pageState.hasInfo) return null; + if (!pageState.info) return null; - const rval = <p class="informational informational-ok">{pageState.info}</p>; + const rval = ( + <div class="informational informational-ok" style={{ marginTop: 8 }}> + <div style={{ display: "flex", justifyContent: "space-between" }}> + <p> + <b>{pageState.info}</b> + </p> + <div> + <input + type="button" + class="pure-button" + value="Clear" + onClick={async () => { + pageStateSetter((prev: any) => ({ ...prev, info: undefined })); + }} + /> + </div> + </div> + </div> + ); return rval; } @@ -1046,8 +1056,8 @@ function BankFrame(Props: any): VNode { ...rest, isLoggedIn: false, withdrawalInProgress: false, - hasInfo: false, - hasError: false, + error: undefined, + info: undefined, isRawPayto: false, }; }); @@ -1297,7 +1307,7 @@ function PaytoWireTransfer(Props: any): VNode { console.log("Not all the fields were given."); pageStateSetter((prevState: PageStateType) => ({ ...prevState, - hasError: true, + error: { title: i18n`Field(s) missing.`, }, @@ -1502,7 +1512,7 @@ function TalerWithdrawalConfirmationQuestion(Props: any): VNode { } pageStateSetter((prevState: PageStateType) => ({ ...prevState, - hasError: true, + error: { title: i18n`Answer is wrong.`, }, @@ -1617,7 +1627,7 @@ function TalerWithdrawalQRCode(Props: any): VNode { ); pageStateSetter((prevState: PageStateType) => ({ ...prevState, - hasError: true, + error: { title: i18n`withdrawal (${withdrawalId}) was never (correctly) created at the bank...`, }, @@ -1645,7 +1655,7 @@ function TalerWithdrawalQRCode(Props: any): VNode { return { ...rest, withdrawalInProgress: false, - hasError: true, + error: { title: i18n`This withdrawal was aborted!`, }, @@ -2193,7 +2203,7 @@ function Account(Props: any): VNode { case 404: { setPageState((prevState: PageStateType) => ({ ...prevState, - hasError: true, + isLoggedIn: false, error: { title: i18n`Username or account label '${accountLabel}' not found. Won't login.`, @@ -2220,7 +2230,7 @@ function Account(Props: any): VNode { case HttpStatusCode.Forbidden: { setPageState((prevState: PageStateType) => ({ ...prevState, - hasError: true, + isLoggedIn: false, error: { title: i18n`Wrong credentials given.`, @@ -2231,7 +2241,7 @@ function Account(Props: any): VNode { default: { setPageState((prevState: PageStateType) => ({ ...prevState, - hasError: true, + isLoggedIn: false, error: { title: i18n`Account information could not be retrieved.`, @@ -2378,7 +2388,7 @@ function PublicHistories(Props: any): VNode { console.log("public accounts: 404", error); Props.pageStateSetter((prevState: PageStateType) => ({ ...prevState, - hasError: true, + showPublicHistories: false, error: { title: i18n`List of public accounts was not found.`, @@ -2390,7 +2400,7 @@ function PublicHistories(Props: any): VNode { console.log("public accounts: non-404 error", error); Props.pageStateSetter((prevState: PageStateType) => ({ ...prevState, - hasError: true, + showPublicHistories: false, error: { title: i18n`List of public accounts could not be retrieved.`, @@ -2530,7 +2540,7 @@ function AccountPage(): VNode { if (typeof backendState === "undefined") { pageStateSetter((prevState) => ({ ...prevState, - hasError: true, + isLoggedIn: false, error: { title: i18n`Page has a problem: logged in but backend state is lost.`, |