serializable structured errors

This commit is contained in:
Joseph Montanaro
2022-12-29 16:40:48 -08:00
parent cb26201506
commit e0c4c849dc
4 changed files with 174 additions and 54 deletions

View File

@ -1,41 +1,42 @@
<script>
import { onMount, createEventDispatcher } from 'svelte';
import { invoke } from '@tauri-apps/api/tauri';
import { getRootCause } from '../lib/errors.js';
export let appState;
const dispatch = createEventDispatcher();
let error = null;
let errorMsg = null;
let AccessKeyId, SecretAccessKey, passphrase
async function save() {
console.log('Saving credentials.');
let credentials = {AccessKeyId, SecretAccessKey};
try {
console.log('Saving credentials.');
let credentials = {AccessKeyId, SecretAccessKey};
try {
await invoke('save_credentials', {credentials, passphrase});
if (appState.currentRequest) {
dispatch('navigate', {target: 'ShowApproved'})
}
else {
dispatch('navigate', {target: 'Home'})
}
await invoke('save_credentials', {credentials, passphrase});
if (appState.currentRequest) {
dispatch('navigate', {target: 'ShowApproved'})
}
catch (e) {
error = e;
window.error = e;
else {
dispatch('navigate', {target: 'Home'})
}
}
catch (e) {
console.log("Error saving credentials:", e);
window.error = e;
if (e.code === "GetSession") {
let root = getRootCause(e);
errorMsg = `Error response from AWS (${root.code}): ${root.msg}`;
}
else {
errorMsg = e.msg;
}
}
}
</script>
{#if error}
<div class="text-red-400">{error}</div>
{#if errorMsg}
<div class="text-red-400">{errorMsg}</div>
{/if}
<form action="#" on:submit|preventDefault="{save}">

View File

@ -1,13 +1,14 @@
<script>
import { invoke } from '@tauri-apps/api/tauri';
import { createEventDispatcher } from 'svelte';
import { getRootCause } from '../lib/errors.js';
import Button from '../ui/Button.svelte';
export let appState;
const dispatch = createEventDispatcher();
let error = null;
let errorMsg = null;
let passphrase = '';
async function unlock() {
console.log('invoking unlock command.')
@ -23,14 +24,20 @@
}
}
catch (e) {
error = e;
window.error = e;
if (e.code === 'GetSession') {
let root = getRootCause(e);
errorMsg = `Error response from AWS (${root.code}): ${root.msg}`;
}
else {
errorMsg = e.msg;
}
}
}
</script>
{#if error}
<div class="text-red-400">{error}</div>
{#if errorMsg}
<div class="text-red-400">{errorMsg}</div>
{/if}
<form action="#" on:submit|preventDefault="{unlock}">