diff --git a/next-ui/eslint.config.js b/next-ui/eslint.config.js
index 038a47bd..53168fb2 100644
--- a/next-ui/eslint.config.js
+++ b/next-ui/eslint.config.js
@@ -5,9 +5,9 @@
*/
import pluginVue from 'eslint-plugin-vue'
-import vueTsEslintConfig from '@vue/eslint-config-typescript'
+import {defineConfigWithVueTs, vueTsConfigs} from '@vue/eslint-config-typescript'
-export default [
+export default defineConfigWithVueTs(
{
name: 'app/files-to-lint',
files: ['**/*.{ts,mts,tsx,vue}'],
@@ -15,11 +15,11 @@ export default [
{
name: 'app/files-to-ignore',
- ignores: ['**/dist/**', '**/dist-ssr/**', '**/coverage/**'],
+ ignores: ['**/dist/**', '**/dist-ssr/**', '**/coverage/**', 'openapi-generator.mts'],
},
...pluginVue.configs['flat/recommended'],
- ...vueTsEslintConfig(),
+ vueTsConfigs.recommendedTypeChecked,
{
rules: {
@@ -33,4 +33,4 @@ export default [
'vue/multi-word-component-names': 'off',
}
}
-]
+)
diff --git a/next-ui/src/api/komga-client.ts b/next-ui/src/api/komga-client.ts
index 908e65b1..1e9711b7 100644
--- a/next-ui/src/api/komga-client.ts
+++ b/next-ui/src/api/komga-client.ts
@@ -4,7 +4,7 @@ import type {paths} from '@/generated/openapi/komga'
// Middleware that throws on error, so it works with Pinia Colada
const coladaMiddleware: Middleware = {
- async onResponse({response}: {response: Response}) {
+ onResponse({response}: {response: Response}) {
if (!response.ok)
throw new Error(`${response.url}: ${response.status} ${response.statusText}`)
// return response untouched
diff --git a/next-ui/src/colada/mutations/logout.ts b/next-ui/src/colada/mutations/logout.ts
index 87918a9f..c58cc8ff 100644
--- a/next-ui/src/colada/mutations/logout.ts
+++ b/next-ui/src/colada/mutations/logout.ts
@@ -7,7 +7,7 @@ export const useLogout = defineMutation(() => {
mutation: () =>
komgaClient.POST('/api/logout'),
onSuccess: () => {
- queryCache.invalidateQueries({key: ['current-user']})
+ void queryCache.invalidateQueries({key: ['current-user']})
},
onError: (error) => {
console.log('logout error', error)
diff --git a/next-ui/src/colada/mutations/mark-announcements-read.ts b/next-ui/src/colada/mutations/mark-announcements-read.ts
index c6de7fb7..08e610fc 100644
--- a/next-ui/src/colada/mutations/mark-announcements-read.ts
+++ b/next-ui/src/colada/mutations/mark-announcements-read.ts
@@ -7,7 +7,7 @@ export const useMarkAnnouncementsRead = defineMutation(() => {
mutation: (announcementIds: string[]) =>
komgaClient.PUT('/api/v1/announcements', {body: announcementIds}),
onSuccess: () => {
- queryCache.invalidateQueries({key: ['announcements']})
+ void queryCache.invalidateQueries({key: ['announcements']})
},
onError: (error) => {
console.log('announcements mark read error', error)
diff --git a/next-ui/src/colada/mutations/update-user.ts b/next-ui/src/colada/mutations/update-user.ts
index d448d03c..bf3d6c31 100644
--- a/next-ui/src/colada/mutations/update-user.ts
+++ b/next-ui/src/colada/mutations/update-user.ts
@@ -11,7 +11,7 @@ export const useUpdateUser = defineMutation(() => {
body: user,
}),
onSuccess: () => {
- queryCache.invalidateQueries({key: ['users']})
+ void queryCache.invalidateQueries({key: ['users']})
},
onError: (error) => {
console.log('update user error', error)
diff --git a/next-ui/src/components/HelloWorld.vue b/next-ui/src/components/HelloWorld.vue
index e44c01ab..888bc2c3 100644
--- a/next-ui/src/components/HelloWorld.vue
+++ b/next-ui/src/components/HelloWorld.vue
@@ -10,16 +10,6 @@
src="@/assets/logo.svg"
/>
-
-
- Welcome "{{ currentUser?.email }}"
-
-
-
- Logout
-
-
-
@@ -172,17 +162,6 @@
diff --git a/next-ui/src/components/dialogs/DialogConfirmEdit.vue b/next-ui/src/components/dialogs/DialogConfirmEdit.vue
index e3308f55..2de6f985 100644
--- a/next-ui/src/components/dialogs/DialogConfirmEdit.vue
+++ b/next-ui/src/components/dialogs/DialogConfirmEdit.vue
@@ -15,13 +15,15 @@
:subtitle="subtitle"
>
-
+
+
+
@@ -31,7 +33,7 @@
@click="close()"
/>
@@ -46,7 +48,9 @@
const showDialog = defineModel('dialog', {required: false})
const record = defineModel('record', {required: true})
-interface Props {
+const formValid = ref(false)
+
+export interface Props {
title?: string,
subtitle?: string,
maxWidth?: string | number,
diff --git a/next-ui/src/components/forms/user/FormUserChangePassword.vue b/next-ui/src/components/forms/user/FormUserChangePassword.vue
index a7f524f3..ca407e59 100644
--- a/next-ui/src/components/forms/user/FormUserChangePassword.vue
+++ b/next-ui/src/components/forms/user/FormUserChangePassword.vue
@@ -1,5 +1,5 @@
-
+
@@ -7,4 +7,11 @@
import type {components} from '@/generated/openapi/komga'
const user = defineModel({required: true})
+
+const rules = [
+ value => {
+ if (value) return true
+ return 'You must enter a first name.'
+ },
+]
diff --git a/next-ui/src/generated/openapi/komga.d.ts b/next-ui/src/generated/openapi/komga.d.ts
index fdbab266..c5d5c248 100644
--- a/next-ui/src/generated/openapi/komga.d.ts
+++ b/next-ui/src/generated/openapi/komga.d.ts
@@ -2719,7 +2719,7 @@ export interface components {
};
Author: components["schemas"]["Series"] & {
author: components["schemas"]["Is"] | components["schemas"]["IsNot"];
- } & components["schemas"]["Book"];
+ } ;
AuthorDto: {
name: string;
role: string;
@@ -2895,7 +2895,7 @@ export interface components {
};
Deleted: components["schemas"]["Series"] & {
deleted: components["schemas"]["IsFalse"] | components["schemas"]["IsTrue"];
- } & components["schemas"]["Book"];
+ } ;
DirectoryListingDto: {
directories: components["schemas"]["PathDto"][];
files: components["schemas"]["PathDto"][];
@@ -3131,7 +3131,7 @@ export interface components {
};
LibraryId: components["schemas"]["Series"] & {
libraryId: components["schemas"]["Is"] | components["schemas"]["IsNot"];
- } & components["schemas"]["Book"];
+ } ;
/** @description Fields to update. You can omit fields you don't want to update. */
LibraryUpdateDto: {
analyzeDimensions?: boolean;
@@ -3219,7 +3219,7 @@ export interface components {
};
OneShot: components["schemas"]["Series"] & {
oneShot: components["schemas"]["IsFalse"] | components["schemas"]["IsTrue"];
- } & components["schemas"]["Book"];
+ } ;
PageAuthenticationActivityDto: {
content?: components["schemas"]["AuthenticationActivityDto"][];
empty?: boolean;
@@ -3580,10 +3580,10 @@ export interface components {
};
ReadStatus: components["schemas"]["Series"] & {
readStatus: components["schemas"]["Is"] | components["schemas"]["IsNot"];
- } & components["schemas"]["Book"];
+ } ;
ReleaseDate: components["schemas"]["Series"] & {
releaseDate: components["schemas"]["After"] | components["schemas"]["Before"] | components["schemas"]["IsInTheLast"] | components["schemas"]["IsNotInTheLast"] | components["schemas"]["IsNotNull"] | components["schemas"]["IsNull"];
- } & components["schemas"]["Book"];
+ } ;
ReleaseDto: {
description: string;
latest: boolean;
@@ -3802,7 +3802,7 @@ export interface components {
};
Tag: components["schemas"]["Series"] & {
tag: components["schemas"]["Is"] | components["schemas"]["IsNot"] | components["schemas"]["IsNotNullT"] | components["schemas"]["IsNullT"];
- } & components["schemas"]["Book"];
+ } ;
Text: {
after?: string;
before?: string;
@@ -3862,7 +3862,7 @@ export interface components {
};
Title: components["schemas"]["Series"] & {
title: components["schemas"]["BeginsWith"] | components["schemas"]["Contains"] | components["schemas"]["DoesNotBeginWith"] | components["schemas"]["DoesNotContain"] | components["schemas"]["DoesNotEndWith"] | components["schemas"]["EndsWith"] | components["schemas"]["Is"] | components["schemas"]["IsNot"];
- } & components["schemas"]["Book"];
+ } ;
TitleSort: components["schemas"]["Series"] & {
titleSort: components["schemas"]["BeginsWith"] | components["schemas"]["Contains"] | components["schemas"]["DoesNotBeginWith"] | components["schemas"]["DoesNotContain"] | components["schemas"]["DoesNotEndWith"] | components["schemas"]["EndsWith"] | components["schemas"]["Is"] | components["schemas"]["IsNot"];
};
diff --git a/next-ui/src/router/index.ts b/next-ui/src/router/index.ts
index 7aeadc16..6080cd5b 100644
--- a/next-ui/src/router/index.ts
+++ b/next-ui/src/router/index.ts
@@ -29,7 +29,7 @@ router.onError((err, to) => {
}
})
-router.isReady().then(() => {
+void router.isReady().then(() => {
localStorage.removeItem('vuetify:dynamic-reload')
})