web/flows: improve display of errors

Signed-off-by: Jens Langhammer <jens.langhammer@beryju.org>
This commit is contained in:
Jens Langhammer 2021-06-12 18:18:36 +02:00
parent 74e4e8f6aa
commit 00cbaaf672

View file

@ -107,8 +107,8 @@ export class FlowExecutor extends LitElement implements StageHost {
}).then((data) => { }).then((data) => {
this.challenge = data; this.challenge = data;
this.postUpdate(); this.postUpdate();
}).catch((e: Error) => { }).catch((e: Error | Response) => {
this.errorMessage(e.toString()); this.errorMessage(e);
}).finally(() => { }).finally(() => {
this.loading = false; this.loading = false;
}); });
@ -128,15 +128,21 @@ export class FlowExecutor extends LitElement implements StageHost {
this.setBackground(this.challenge.flowInfo.background); this.setBackground(this.challenge.flowInfo.background);
} }
this.postUpdate(); this.postUpdate();
}).catch((e: Error) => { }).catch((e: Error | Response) => {
// Catch JSON or Update errors // Catch JSON or Update errors
this.errorMessage(e.toString()); this.errorMessage(e);
}).finally(() => { }).finally(() => {
this.loading = false; this.loading = false;
}); });
} }
errorMessage(error: string): void { async errorMessage(error: Error | Response): Promise<void> {
let body = "";
if (error instanceof Error) {
body = error.message;
} else if (error instanceof Response) {
body = await error.text();
}
this.challenge = { this.challenge = {
type: ChallengeChoices.Shell, type: ChallengeChoices.Shell,
body: `<header class="pf-c-login__main-header"> body: `<header class="pf-c-login__main-header">
@ -146,7 +152,7 @@ export class FlowExecutor extends LitElement implements StageHost {
</header> </header>
<div class="pf-c-login__main-body"> <div class="pf-c-login__main-body">
<h3>${t`Something went wrong! Please try again later.`}</h3> <h3>${t`Something went wrong! Please try again later.`}</h3>
<pre class="ak-exception">${error}</pre> <pre class="ak-exception">${body}</pre>
</div> </div>
<footer class="pf-c-login__main-footer"> <footer class="pf-c-login__main-footer">
<ul class="pf-c-login__main-footer-links"> <ul class="pf-c-login__main-footer-links">