Skip to content

Commit 4cbb423

Browse files
committed
#91 add notification on page component if a axios call faild
1 parent e7252e0 commit 4cbb423

File tree

10 files changed

+67
-65
lines changed

10 files changed

+67
-65
lines changed

src/lib/components/page/Page.svelte

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<script lang="ts">
22
import { onMount } from 'svelte';
33
4-
import type { linkType } from '$lib/models/Models';
5-
import { pageContentLayoutType } from '$lib/models/Enums';
4+
import type { errorType, linkType } from '$lib/models/Models';
5+
import { pageContentLayoutType, notificationType } from '$lib/models/Enums';
66
77
// ui components
88
import { AppShell, AppBar } from '@skeletonlabs/skeleton';
@@ -16,7 +16,8 @@
1616
//popup
1717
import { computePosition, autoUpdate, offset, shift, flip, arrow } from '@floating-ui/dom';
1818
import { storePopup } from '@skeletonlabs/skeleton';
19-
import { breadcrumbStore } from '$store/pageStores';
19+
import { breadcrumbStore,notificationStore } from '$store/pageStores';
20+
import { errorStore } from '$store/apiStores';
2021
2122
storePopup.set({ computePosition, autoUpdate, offset, shift, flip, arrow });
2223
@@ -38,6 +39,14 @@ import type { helpItemType, helpStoreType } from '$models/Models';
3839
export let contentLayoutType: pageContentLayoutType = pageContentLayoutType.center;
3940
export let fixLeft: boolean = true;
4041
42+
errorStore.subscribe((error:errorType) => {
43+
console.log("🚀 ~ errorStore.subscribe ~ value:", error.error)
44+
notificationStore.showNotification({
45+
notificationType: notificationType.error,
46+
message: error.error
47+
})
48+
})
49+
4150
onMount(async () => {
4251
console.log('page');
4352
breadcrumbStore.clean();

src/lib/models/Models.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,3 +221,19 @@ export class Receive {
221221
this.columns = [];
222222
}
223223
}
224+
225+
226+
export class errorType {
227+
statusText: string;
228+
status: number;
229+
error:string;
230+
stackTrace:string
231+
232+
constructor() {
233+
this.statusText = "";
234+
this.status = 0;
235+
this.error = "";
236+
this.stackTrace = "";
237+
}
238+
239+
};

src/lib/services/Api.ts

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Api.js
22
import axios from 'axios';
3-
import { host, username, password } from '../stores/apiStores';
3+
import { host, username, password, errorStore } from '../stores/apiStores';
4+
import type { errorType } from '$models/Models';
45

56
console.log('setup axios');
67

@@ -23,9 +24,24 @@ const apiRequest = (method, url, request) => {
2324
headers
2425
})
2526
.then((res) => {
27+
// console.log("res",res);
28+
2629
return Promise.resolve(res);
30+
2731
})
28-
.catch((err) => {
32+
.catch((er) => {
33+
//console.log("🚀 ~ apiRequest ~ err:", er)
34+
const err = er.response;
35+
36+
let error:errorType = {
37+
status: err.status,
38+
statusText: err.statusText,
39+
error: err.data.error,
40+
stackTrace: err.data.stackTrace,
41+
}
42+
43+
errorStore.set(error);
44+
2945
return Promise.reject(err);
3046
});
3147
};

src/lib/stores/apiStores.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import { writable } from 'svelte/store';
2+
import { errorType } from '$models/Models'
23

34
export let host = 'window.location.origin';
45
export let username = '';
@@ -8,6 +9,8 @@ const hostStore = writable(''); //writable(window.location.origin);
89
const usernameStore = writable('');
910
const passwordStore = writable('');
1011

12+
export const errorStore = writable(new errorType());
13+
1114
hostStore.subscribe((value) => {
1215
host = value;
1316
});

src/lib/stores/pageStores.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ function createBreadcrumbStore() {
117117
value = value === undefined ? new BreadcrumbModel() : value;
118118

119119
let v = value.items.find((i) => i.link === item.link);
120-
console.log(value.items, v);
120+
//console.log(value.items, v);
121121

122122
if (v) {
123123
const i = value.items.indexOf(v);

src/routes/+layout.js

Lines changed: 0 additions & 3 deletions
This file was deleted.

src/routes/components/core/+page.js renamed to src/routes/+layout.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
1+
export const prerender = true;
2+
export const ssr = false;
3+
export const trailingSlash = 'always';
4+
15
import { setApiConfig } from '$lib/stores/apiStores';
26

37
/** @type {import('./$types').PageLoad} */
4-
export function load() {
8+
export async function load({ fetch }) {
59
console.log('load and set apiconfig');
610

711
if (import.meta.env.DEV) {
812
console.log('dev');
913

10-
setApiConfig('https://dev.bexis2.uni-jena.de/', 'admin', '123456');
14+
setApiConfig('http://localhost:44345/', 'davidschoene', '123456');
15+
1116
} else if (import.meta.env.PROD) {
1217
console.log('PROD');
1318
setApiConfig('https://dev.bexis2.uni-jena.de/', 'admin', '123456');

src/routes/components/form/+page.js

Lines changed: 0 additions & 17 deletions
This file was deleted.

src/routes/components/page/+page.js

Lines changed: 0 additions & 17 deletions
This file was deleted.
Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
<script lang="ts">
22
import Page from '$lib/components/page/Page.svelte';
3-
import type { linkType } from '$lib/models/Models';
3+
import type { errorType, linkType } from '$lib/models/Models';
44
import { pageContentLayoutType } from '$lib/models/Enums';
55
66
import { helpStore } from '$store/pageStores';
7+
import { errorStore } from '$store/apiStores';
78
import type { helpItemType, helpStoreType } from '$models/Models';
8-
import TextInput from '$lib/components/form/TextInput.svelte';
9-
import ErrorMessage from '$lib/components/page/ErrorMessage.svelte';
109
1110
let links: linkType[] = [
1211
{
@@ -16,6 +15,9 @@
1615
];
1716
1817
import { HelpExampleData } from './data/help';
18+
import { onMount } from 'svelte';
19+
import { Api } from '$lib';
20+
1921
2022
let helpItems: helpItemType[] = HelpExampleData.helpItems;
2123
helpStore.setHelpItemList(helpItems);
@@ -32,6 +34,10 @@
3234
function updateTitle() {
3335
title += Date.now();
3436
}
37+
38+
onMount(async()=>{
39+
var res = await Api.get("test/errortest");
40+
})
3541
</script>
3642

3743
<Page
@@ -44,29 +50,13 @@
4450
<svelte:fragment slot="left">
4551
<button class="btn variant-filled-error" on:click={updateTitle}>change title </button>
4652
<div class="w-screen">
47-
<h2 class="h2">Content</h2>
48-
<TextInput id="name" label="name" help={true} />
49-
<p>Lorem ipsum dolor sit amet, con</p>
5053

51-
{#if e}
52-
<ErrorMessage error={e} />
53-
{/if}
5454
</div>
5555
</svelte:fragment>
5656
<div>
5757
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt
5858
ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo
5959
dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor
60-
sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor
61-
invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et
62-
justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem
63-
ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
64-
eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos
65-
et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus
66-
est Lorem ipsum dolor sit amet. Duis autem vel eum iriure dolor in hendrerit in vulputate velit
67-
esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et
68-
iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait
69-
nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh
70-
euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.
60+
sit amet.
7161
</div>
7262
</Page>

0 commit comments

Comments
 (0)