Skip to content

Commit dc7dbb4

Browse files
committed
feat(logger): rework logger service & bump common utils
1 parent 11e0a71 commit dc7dbb4

38 files changed

+302
-266
lines changed

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
},
5353
"dependencies": {
5454
"@dvcol/base-http-client": "^1.10.0",
55-
"@dvcol/common-utils": "^1.4.0",
55+
"@dvcol/common-utils": "^1.7.0",
5656
"@dvcol/tmdb-http-client": "^1.2.3",
5757
"@dvcol/trakt-http-client": "^1.4.5",
5858
"@dvcol/tvdb-http-client": "^1.1.3",

pnpm-lock.yaml

+10-10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/components/common/navbar/NavbarSettingsDopdown.vue

+4-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import { chromeRuntimeId } from '@dvcol/web-extension-utils/chrome/runtime';
33
44
import { createTab } from '@dvcol/web-extension-utils/chrome/tabs';
5+
56
import { NAvatar, NDropdown, NEllipsis, NFlex, NIcon } from 'naive-ui';
67
78
import { computed, defineProps, h, ref } from 'vue';
@@ -20,10 +21,10 @@ import IconLightBulb from '~/components/icons/IconLightBulb.vue';
2021
import IconLogOut from '~/components/icons/IconLogOut.vue';
2122
2223
import { Route } from '~/models/router.model';
24+
import { Logger } from '~/services/logger.service';
2325
import { TraktService } from '~/services/trakt.service';
2426
import { ExternaLinks } from '~/settings/external.links';
2527
import { useExtensionSettingsStoreRefs } from '~/stores/settings/extension.store';
26-
import { logger } from '~/stores/settings/log.store';
2728
import { useLogout } from '~/stores/settings/use-logout';
2829
import { defaultUser, useUserSettingsStoreRefs } from '~/stores/settings/user.store';
2930
@@ -40,7 +41,7 @@ const username = computed(() => userSetting.value?.user?.username);
4041
4142
const fallback = ref<boolean>(!chromeRuntimeId);
4243
const onAvatarError = (event: Event) => {
43-
logger.error('Failed to fetch avatar', event);
44+
Logger.error('Failed to fetch avatar', event);
4445
fallback.value = true;
4546
};
4647
@@ -122,7 +123,7 @@ const onSelect: DropdownProps['onSelect'] = async (key: string, { label }) => {
122123
if (typeof label === 'string' && key.startsWith('user-')) {
123124
return loadUser(label);
124125
}
125-
logger.error('Unknown key:', key);
126+
Logger.error('Unknown key:', key);
126127
}
127128
};
128129
</script>

src/components/common/numbers/ProgressNumber.vue

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<script lang="ts" setup>
2+
import { wait } from '@dvcol/common-utils/common/promise';
23
import { NProgress, NSkeleton, NSpin } from 'naive-ui';
34
45
import {
@@ -15,7 +16,6 @@ import AnimatedNumber from './AnimatedNumber.vue';
1516
1617
import { Rating } from '~/models/rating.model';
1718
import { debounce } from '~/utils/debounce.utils';
18-
import { wait } from '~/utils/promise.utils';
1919
2020
const props = defineProps({
2121
from: {

src/components/views/login/LoginComponent.vue

+6-6
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@ import { useRoute, useRouter } from 'vue-router';
3131
import GridBackground from '~/components/common/background/GridBackground.vue';
3232
import IconClipboard from '~/components/icons/IconClipboard.vue';
3333
import LoginCard from '~/components/views/login/LoginCard.vue';
34+
import { Logger } from '~/services/logger.service';
3435
import { NotificationService } from '~/services/notification.service';
3536
import { TraktService } from '~/services/trakt.service';
3637
import { useAuthSettingsStoreRefs } from '~/stores/settings/auth.store';
3738
import { useLinksStore } from '~/stores/settings/links.store';
38-
import { logger } from '~/stores/settings/log.store';
3939
import { useI18n } from '~/utils/i18n.utils';
4040
4141
const i18n = useI18n('login');
@@ -70,7 +70,7 @@ const onSignIn = async () => {
7070
prompt: !useSession.value,
7171
});
7272
} catch (error) {
73-
logger.error('Error:', error);
73+
Logger.error('Error:', error);
7474
}
7575
};
7676
@@ -85,8 +85,8 @@ const getCodes = async () => {
8585
// eslint-disable-next-line @typescript-eslint/no-use-before-define -- recursive call
8686
await polling();
8787
} catch (error) {
88-
logger.error('Failed to login with Trakt.tv');
89-
logger.error(error);
88+
Logger.error('Failed to login with Trakt.tv');
89+
Logger.error(error);
9090
}
9191
};
9292
@@ -120,8 +120,8 @@ const polling = async () => {
120120
const traktAuth = await poll.value;
121121
await TraktService.device.login(traktAuth);
122122
} catch (error) {
123-
logger.error('Failed to login with Trakt.tv');
124-
logger.error(error);
123+
Logger.error('Failed to login with Trakt.tv');
124+
Logger.error(error);
125125
if (error instanceof TraktPollingExpiredError) await getCodes();
126126
}
127127
};

src/components/views/panel/PanelScore.vue

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import ProgressNumber from '~/components/common/numbers/ProgressNumber.vue';
88
99
import TextField from '~/components/common/typography/TextField.vue';
1010
import { RatingLabel } from '~/models/rating.model';
11-
import { logger } from '~/stores/settings/log.store';
11+
import { Logger } from '~/services/logger.service';
1212
import { useI18n } from '~/utils/i18n.utils';
1313
1414
const props = defineProps({
@@ -47,7 +47,7 @@ const _scoreLabel = computed(() => {
4747
try {
4848
return RatingLabel[score.value];
4949
} catch (e) {
50-
logger.error('RatingLabel', e);
50+
Logger.error('RatingLabel', e);
5151
return 'not_rated';
5252
}
5353
});

src/components/views/settings/SettingsAccount.vue

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ import TextField from '~/components/common/typography/TextField.vue';
1010
import IconAccount from '~/components/icons/IconAccount.vue';
1111
1212
import IconLogOut from '~/components/icons/IconLogOut.vue';
13+
import { Logger } from '~/services/logger.service';
1314
import { ResolveExternalLinks } from '~/settings/external.links';
1415
import { useLinksStore } from '~/stores/settings/links.store';
15-
import { logger } from '~/stores/settings/log.store';
1616
import { useLogout } from '~/stores/settings/use-logout';
1717
import { useUserSettingsStoreRefs } from '~/stores/settings/user.store';
1818
@@ -48,7 +48,7 @@ const joinDate = computed(() => {
4848
});
4949
5050
const onAvatarError = (event: Event) => {
51-
logger.error('Failed to fetch avatar', event);
51+
Logger.error('Failed to fetch avatar', event);
5252
fallback.value = true;
5353
};
5454

src/components/views/settings/SettingsCache.vue

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ import { reactive, ref } from 'vue';
77
import IconRestore from '~/components/icons/IconRestore.vue';
88
import SettingsFormItem from '~/components/views/settings/SettingsFormItem.vue';
99
10+
import { Logger } from '~/services/logger.service';
1011
import { NotificationService } from '~/services/notification.service';
1112
import { TraktService } from '~/services/trakt.service';
1213
import { useImageStore } from '~/stores/data/image.store';
1314
import { useExtensionSettingsStoreRefs } from '~/stores/settings/extension.store';
14-
import { logger } from '~/stores/settings/log.store';
1515
import { useI18n } from '~/utils/i18n.utils';
1616
1717
const i18n = useI18n('settings', 'cache');
@@ -32,7 +32,7 @@ const onClick = async (fn: () => unknown, index: number) => {
3232
await fn();
3333
NotificationService.message.success(i18n('evict_success'));
3434
} catch (error) {
35-
logger.error('Failed to evict cache.', error);
35+
Logger.error('Failed to evict cache.', error);
3636
NotificationService.error(i18n('evict_failure'), error);
3737
} finally {
3838
loading[index] = false;

src/components/views/settings/SettingsExport.vue

+2-2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import IconDownload from '~/components/icons/IconDownload.vue';
1313
import IconLoadingDots from '~/components/icons/IconLoadingDots.vue';
1414
import SettingsFormItem from '~/components/views/settings/SettingsFormItem.vue';
1515
16+
import { Logger } from '~/services/logger.service';
1617
import { NotificationService } from '~/services/notification.service';
1718
import { TraktService } from '~/services/trakt.service';
1819
import {
@@ -22,7 +23,6 @@ import {
2223
type ListTypes,
2324
useListsStoreRefs,
2425
} from '~/stores/data/list.store';
25-
import { logger } from '~/stores/settings/log.store';
2626
import { useUserSettingsStoreRefs } from '~/stores/settings/user.store';
2727
import { useI18n } from '~/utils/i18n.utils';
2828
@@ -63,7 +63,7 @@ const getOnClick = (scope: ExportScope, index: number) => async () => {
6363
}
6464
}
6565
} catch (error) {
66-
logger.error(`Failed to export '${scope.name}'.`, error);
66+
Logger.error(`Failed to export '${scope.name}'.`, error);
6767
NotificationService.error(`${scope.name} ${i18n('export_failure')}`, error);
6868
} finally {
6969
cancelled[index] = false;

src/components/views/settings/SettingsLogs.vue

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
<script lang="ts" setup>
2+
import { LogLevel } from '@dvcol/common-utils/common/logger';
23
import { NSelect } from 'naive-ui';
34
45
import { ref } from 'vue';
56
67
import SettingsFormItem from '~/components/views/settings/SettingsFormItem.vue';
7-
import { LogLevel, useLogStoreRefs } from '~/stores/settings/log.store';
8+
import { useLogStoreRefs } from '~/stores/settings/log.store';
89
import { useI18n } from '~/utils/i18n.utils';
910
1011
const i18n = useI18n('settings', 'logs');

src/router/create-router.ts

+3-4
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@ import { createRouter as createVueRouter, createWebHashHistory, type LocationQue
44
import { isLoginAuthResponseSuccess } from '~/models/login/login-auth-response';
55
import { Route } from '~/models/router.model';
66
import { routes } from '~/router/routes';
7+
import { Logger } from '~/services/logger.service';
78
import { TraktService } from '~/services/trakt.service';
89
import { useAppStateStoreRefs } from '~/stores/app-state.store';
910
import { useRouterStore, useRouterStoreRefs } from '~/stores/router.store';
10-
1111
import { useAuthSettingsStoreRefs } from '~/stores/settings/auth.store';
1212
import { useExtensionSettingsStore, useExtensionSettingsStoreRefs } from '~/stores/settings/extension.store';
13-
import { logger } from '~/stores/settings/log.store';
1413

1514
export type RouterOptions = { baseName?: string; baseUrl?: string };
1615
export const createRouter = ({ baseName = '', baseUrl = import.meta.env.BASE_URL }: RouterOptions) => {
@@ -62,8 +61,8 @@ export const createRouter = ({ baseName = '', baseUrl = import.meta.env.BASE_URL
6261
try {
6362
await TraktService.login(query.code);
6463
} catch (error) {
65-
logger.error('Failed to login with Trakt.tv');
66-
logger.error(error);
64+
Logger.error('Failed to login with Trakt.tv');
65+
Logger.error(error);
6766
}
6867
}
6968

src/services/loading-bar.service.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { ref } from 'vue';
22

33
import type { useLoadingBar } from 'naive-ui';
44

5-
import { logger } from '~/stores/settings/log.store';
5+
import { Logger } from '~/services/logger.service';
66

77
export class LoadingBarService {
88
private static instance: ReturnType<typeof useLoadingBar>;
@@ -17,21 +17,21 @@ export class LoadingBarService {
1717
}
1818

1919
static start() {
20-
if (!this.instance?.start) logger.warn('LoadingBarService instance is not initialized');
20+
if (!this.instance?.start) Logger.warn('LoadingBarService instance is not initialized');
2121
this.instance.start();
2222
this.loading.value = true;
2323
}
2424

2525
static finish() {
2626
if (!this.isLoading) return;
27-
if (!this.instance?.finish) logger.warn('LoadingBarService instance is not initialized');
27+
if (!this.instance?.finish) Logger.warn('LoadingBarService instance is not initialized');
2828
this.instance.finish();
2929
this.loading.value = false;
3030
}
3131

3232
static error() {
3333
if (!this.isLoading) return;
34-
if (!this.instance?.error) logger.warn('LoadingBarService instance is not initialized');
34+
if (!this.instance?.error) Logger.warn('LoadingBarService instance is not initialized');
3535
this.instance.error();
3636
this.loading.value = false;
3737
}

src/services/logger.service.ts

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { ProxyLogger } from '@dvcol/common-utils/common/logger';
2+
3+
import { useLogStore } from '~/stores/settings/log.store';
4+
5+
export class Logger {
6+
static logger = new ProxyLogger({
7+
logLevel: () => useLogStore().logLevel,
8+
});
9+
10+
static colorize = ProxyLogger.colorize;
11+
12+
static get timestamp() {
13+
return ProxyLogger.timestamp();
14+
}
15+
16+
static get debug() {
17+
return this.logger.debug;
18+
}
19+
20+
static get info() {
21+
return this.logger.info;
22+
}
23+
24+
static get warn() {
25+
return this.logger.warn;
26+
}
27+
28+
static get error() {
29+
return this.logger.error;
30+
}
31+
}

0 commit comments

Comments
 (0)