Skip to content

Commit ce2e367

Browse files
committed
feat(notification): create notification service
1 parent 4174de1 commit ce2e367

10 files changed

+79
-17
lines changed

src/components/web/ContainerComponent.ce.vue src/components/container/ContainerComponent.ce.vue

+22-8
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,18 @@
11
<script setup lang="ts">
2-
import { darkTheme, lightTheme, NConfigProvider, NLoadingBarProvider } from 'naive-ui';
2+
import {
3+
darkTheme,
4+
lightTheme,
5+
NConfigProvider,
6+
NLoadingBarProvider,
7+
NMessageProvider,
8+
NNotificationProvider,
9+
} from 'naive-ui';
310
411
import { computed, ref } from 'vue';
512
6-
import LoadingBarProvider from '~/components/common/navbar/LoadingBarProvider.vue';
13+
import LoadingBarProvider from '~/components/container/LoadingBarProvider.vue';
14+
import MessageProvider from '~/components/container/MessageProvider.vue';
15+
import NotificationProvider from '~/components/container/NotificationProvider.vue';
716
import { watchPreferDark } from '~/utils';
817
import { lazyComponent } from '~/utils/lazy.utils';
918
@@ -18,17 +27,22 @@ const root = ref<HTMLElement>();
1827
<template>
1928
<div id="trakt-extension-root" ref="root">
2029
<NConfigProvider :theme="theme" abstract>
30+
<AppComponent />
31+
2132
<NLoadingBarProvider
2233
:to="root"
23-
:loading-bar-style="{
24-
loading: {
25-
'--n-color-loading': 'white',
26-
},
27-
}"
34+
:loading-bar-style="{ loading: { '--n-color-loading': 'white' } }"
2835
>
29-
<AppComponent />
3036
<LoadingBarProvider />
3137
</NLoadingBarProvider>
38+
39+
<NMessageProvider :to="root">
40+
<MessageProvider />
41+
</NMessageProvider>
42+
43+
<NNotificationProvider :to="root">
44+
<NotificationProvider />
45+
</NNotificationProvider>
3246
</NConfigProvider>
3347
</div>
3448
</template>

src/components/common/navbar/LoadingBarProvider.vue src/components/container/LoadingBarProvider.vue

+5-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ import { useLoadingBar } from 'naive-ui';
33
44
import { LoadingBarService } from '~/services/loading-bar.service';
55
6-
const loadingBar = useLoadingBar();
7-
8-
LoadingBarService.instance = loadingBar;
6+
LoadingBarService.instance = useLoadingBar();
97
</script>
8+
9+
<template>
10+
<div id="loading-bar-provider" hidden style="display: none" />
11+
</template>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<script setup lang="ts">
2+
import { useMessage } from 'naive-ui';
3+
4+
import { NotificationService } from '~/services/notification.service';
5+
6+
NotificationService.message = useMessage();
7+
</script>
8+
9+
<template>
10+
<div id="message-provider" hidden style="display: none" />
11+
</template>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<script setup lang="ts">
2+
import { useNotification } from 'naive-ui';
3+
4+
import { NotificationService } from '~/services/notification.service';
5+
6+
NotificationService.notification = useNotification();
7+
</script>
8+
9+
<template>
10+
<div id="notification-provider" hidden style="display: none" />
11+
</template>

src/services/loading-bar.service.ts

+15
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,19 @@ import type { useLoadingBar } from 'naive-ui';
22

33
export class LoadingBarService {
44
static instance: ReturnType<typeof useLoadingBar>;
5+
6+
static start() {
7+
if (!this.instance) console.warn('LoadingBarService instance is not initialized');
8+
this.instance.start();
9+
}
10+
11+
static finish() {
12+
if (!this.instance) console.warn('LoadingBarService instance is not initialized');
13+
this.instance.finish();
14+
}
15+
16+
static error() {
17+
if (!this.instance) console.warn('LoadingBarService instance is not initialized');
18+
this.instance.error();
19+
}
520
}

src/services/notification.service.ts

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import type { useMessage, useNotification } from 'naive-ui';
2+
3+
export class NotificationService {
4+
static notification: ReturnType<typeof useNotification>;
5+
static message: ReturnType<typeof useMessage>;
6+
}

src/services/trakt.service.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -103,12 +103,12 @@ export class TraktService {
103103
this.traktClient.onCall(async call => {
104104
console.info('TraktClient.onCall', call);
105105

106-
const timeout = setTimeout(() => LoadingBarService.instance?.start(), 500);
106+
const timeout = setTimeout(() => LoadingBarService.start(), 500);
107107
try {
108108
await call.query;
109-
LoadingBarService.instance?.finish();
109+
LoadingBarService.finish();
110110
} catch (error) {
111-
LoadingBarService.instance?.error();
111+
LoadingBarService.error();
112112
throw error;
113113
} finally {
114114
clearTimeout(timeout);

src/styles/z-index.scss

+4-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ $default: 0;
33
$in-front: 1;
44
$layer-1: 10;
55
$layer-2: 100;
6-
$layer-3: 1000;
7-
$layer-ui: 10000;
6+
$layer-3: 200;
7+
$layer-4: 300;
8+
$layer-5: 400;
9+
$layer-ui: 1000;
810
$layer-max: 2147483647

src/views/options/index.html

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
<style>
1515
body {
16+
overscroll-behavior: none;
1617
display: flex;
1718
margin: 0;
1819
color: rgb(235 235 235 / 64%);

src/web/define-component.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ export const defineComponent = async (options: DefineOption = {}, component: Web
1010
console.warn(`Custom element '${component}' is already defined.`);
1111
} else {
1212
const [{ createElementInstance }, { lazyComponent }] = await Promise.all([import('~/web/create-wc'), import('~/utils/lazy.utils')]);
13-
const ContainerComponent = lazyComponent(() => import('~/components/web/ContainerComponent.ce.vue'));
13+
const ContainerComponent = lazyComponent(() => import('~/components/container/ContainerComponent.ce.vue'));
1414
const TraktExtensionWc = createElementInstance(ContainerComponent, { name: component, ...options });
1515
customElements.define(component, TraktExtensionWc);
1616
}

0 commit comments

Comments
 (0)