diff --git a/next-ui/src/colada/queries/actuator-info.ts b/next-ui/src/colada/queries/actuator-info.ts index b35e4e599..b7ec551b5 100644 --- a/next-ui/src/colada/queries/actuator-info.ts +++ b/next-ui/src/colada/queries/actuator-info.ts @@ -3,7 +3,7 @@ import {komgaClient} from '@/api/komga-client' import type {ActuatorInfo} from '@/types/Actuator' export const useActuatorInfo = defineQuery(() => { - return useQuery({ + const {data, ...rest} = useQuery({ key: () => ['actuator-info'], query: () => komgaClient.GET('/actuator/info') // unwrap the openapi-fetch structure on success @@ -12,4 +12,14 @@ export const useActuatorInfo = defineQuery(() => { staleTime: 60 * 60 * 1000, gcTime: false, }) + + const buildVersion = computed(() => data.value?.build?.version) + const commitId = computed(() => data.value?.git?.commit?.id) + + return { + data, + ...rest, + buildVersion, + commitId, + } }) diff --git a/next-ui/src/colada/queries/app-releases.ts b/next-ui/src/colada/queries/app-releases.ts index 7819a81a3..805e835fc 100644 --- a/next-ui/src/colada/queries/app-releases.ts +++ b/next-ui/src/colada/queries/app-releases.ts @@ -1,8 +1,9 @@ import {defineQuery, useQuery} from '@pinia/colada' import {komgaClient} from '@/api/komga-client' +import {useActuatorInfo} from '@/colada/queries/actuator-info.ts' export const useAppReleases = defineQuery(() => { - return useQuery({ + const {data, ...rest} = useQuery({ key: () => ['app-releases'], query: () => komgaClient.GET('/api/v1/releases') // unwrap the openapi-fetch structure on success @@ -11,4 +12,21 @@ export const useAppReleases = defineQuery(() => { staleTime: 60 * 60 * 1000, gcTime: false, }) + + const {buildVersion} = useActuatorInfo() + const latestRelease = computed(() => data.value?.find(x => x.latest)) + + const isLatestVersion = computed(() => { + if(buildVersion.value && latestRelease.value) + return buildVersion.value == latestRelease.value?.version + else return undefined + }) + + return { + data, + ...rest, + buildVersion, + latestRelease, + isLatestVersion, + } }) diff --git a/next-ui/src/colada/queries/current-user.ts b/next-ui/src/colada/queries/current-user.ts index 9d6dd1846..1a61b1b9a 100644 --- a/next-ui/src/colada/queries/current-user.ts +++ b/next-ui/src/colada/queries/current-user.ts @@ -1,8 +1,9 @@ import {defineQuery, useQuery} from '@pinia/colada' import {komgaClient} from '@/api/komga-client' +import {UserRoles} from '@/types/UserRoles.ts' export const useCurrentUser = defineQuery(() => { - return useQuery({ + const {data, ...rest} = useQuery({ key: () => ['current-user'], query: () => komgaClient.GET('/api/v2/users/me') // unwrap the openapi-fetch structure on success @@ -12,4 +13,14 @@ export const useCurrentUser = defineQuery(() => { gcTime: false, autoRefetch: true, }) + + const hasRole =(role: UserRoles) => data.value?.roles.includes(role) + const isAdmin = computed(() => hasRole(UserRoles.ADMIN)) + + return { + data, + ...rest, + hasRole, + isAdmin, + } }) diff --git a/next-ui/src/components/BuildCommit.vue b/next-ui/src/components/BuildCommit.vue index 36a017248..bb4e3c28d 100644 --- a/next-ui/src/components/BuildCommit.vue +++ b/next-ui/src/components/BuildCommit.vue @@ -1,15 +1,15 @@ diff --git a/next-ui/src/components/app/drawer/AppDrawerFooter.vue b/next-ui/src/components/app/drawer/AppDrawerFooter.vue index bc884c6f0..96cc8c63e 100644 --- a/next-ui/src/components/app/drawer/AppDrawerFooter.vue +++ b/next-ui/src/components/app/drawer/AppDrawerFooter.vue @@ -11,8 +11,7 @@ diff --git a/next-ui/src/components/app/drawer/AppDrawerMenu.vue b/next-ui/src/components/app/drawer/AppDrawerMenu.vue index 2aacfcedd..db4f5bf61 100644 --- a/next-ui/src/components/app/drawer/AppDrawerMenu.vue +++ b/next-ui/src/components/app/drawer/AppDrawerMenu.vue @@ -10,8 +10,7 @@ diff --git a/next-ui/src/composables/buid-version.ts b/next-ui/src/composables/buid-version.ts deleted file mode 100644 index 5f120d5a4..000000000 --- a/next-ui/src/composables/buid-version.ts +++ /dev/null @@ -1,9 +0,0 @@ - import {useActuatorInfo} from '@/colada/queries/actuator-info' - -export function useBuildVersion() { - const {data} = useActuatorInfo() - - const buildVersion = computed(() => data.value?.build?.version) - - return {buildVersion} -} diff --git a/next-ui/src/composables/current-user-role.ts b/next-ui/src/composables/current-user-role.ts deleted file mode 100644 index 2010d8b92..000000000 --- a/next-ui/src/composables/current-user-role.ts +++ /dev/null @@ -1,10 +0,0 @@ -import {useCurrentUser} from '@/colada/queries/current-user.ts' -import {UserRoles} from '@/types/UserRoles.ts' - -export function useCurrentUserRole(role: UserRoles) { - const {data} = useCurrentUser() - - const hasRole = computed(() => data.value?.roles.includes(role)) - - return {hasRole} -} diff --git a/next-ui/src/composables/latest-version.ts b/next-ui/src/composables/latest-version.ts deleted file mode 100644 index 1457d7376..000000000 --- a/next-ui/src/composables/latest-version.ts +++ /dev/null @@ -1,17 +0,0 @@ -import {useAppReleases} from '@/colada/queries/app-releases.ts' -import {useBuildVersion} from '@/composables/buid-version.ts' - -export function useLatestVersion() { - const {data } = useAppReleases() - - const {buildVersion} = useBuildVersion() - const latestRelease = computed(() => data.value?.find(x => x.latest)) - - const isLatestVersion = computed(() => { - if(buildVersion.value && latestRelease.value) - return buildVersion.value == latestRelease.value?.version - else return undefined - }) - - return {isLatestVersion, latestRelease} -} diff --git a/next-ui/src/pages/server/updates.vue b/next-ui/src/pages/server/updates.vue index 4de5b3636..d83986b0e 100644 --- a/next-ui/src/pages/server/updates.vue +++ b/next-ui/src/pages/server/updates.vue @@ -93,13 +93,8 @@