mirror of
https://github.com/gotson/komga.git
synced 2025-12-15 21:12:27 +01:00
refactor colada composables
This commit is contained in:
parent
c9c1ddaab7
commit
cc94c0c5b1
11 changed files with 53 additions and 61 deletions
|
|
@ -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,
|
||||
}
|
||||
})
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
}
|
||||
})
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
}
|
||||
})
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
<template>
|
||||
<template v-if="commit">
|
||||
<template v-if="commitId">
|
||||
<v-btn
|
||||
prepend-icon="mdi-source-commit"
|
||||
variant="text"
|
||||
color="grey"
|
||||
size="small"
|
||||
class="text-caption"
|
||||
:href="'https://github.com/gotson/komga/commits/' + commit"
|
||||
:href="'https://github.com/gotson/komga/commits/' + commitId"
|
||||
target="_blank"
|
||||
>
|
||||
{{ commit }}
|
||||
{{ commitId }}
|
||||
</v-btn>
|
||||
</template>
|
||||
</template>
|
||||
|
|
@ -17,7 +17,5 @@
|
|||
<script setup lang="ts">
|
||||
import {useActuatorInfo} from '@/colada/queries/actuator-info'
|
||||
|
||||
const {data} = useActuatorInfo()
|
||||
|
||||
const commit = computed(() => data.value?.git?.commit?.id)
|
||||
const {commitId} = useActuatorInfo()
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -20,9 +20,7 @@
|
|||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import {useBuildVersion} from '@/composables/buid-version.ts'
|
||||
import {useLatestVersion} from '@/composables/latest-version.ts'
|
||||
import {useAppReleases} from '@/colada/queries/app-releases.ts'
|
||||
|
||||
const {buildVersion} = useBuildVersion()
|
||||
const {isLatestVersion} = useLatestVersion()
|
||||
const {buildVersion, isLatestVersion} = useAppReleases()
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -11,8 +11,7 @@
|
|||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import {useCurrentUserRole} from '@/composables/current-user-role.ts'
|
||||
import {UserRoles} from '@/types/UserRoles.ts'
|
||||
import {useCurrentUser} from '@/colada/queries/current-user.ts'
|
||||
|
||||
const {hasRole: isAdmin} = useCurrentUserRole(UserRoles.ADMIN)
|
||||
const {isAdmin} = useCurrentUser()
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -10,8 +10,7 @@
|
|||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import {useCurrentUserRole} from '@/composables/current-user-role.ts'
|
||||
import {UserRoles} from '@/types/UserRoles.ts'
|
||||
import {useCurrentUser} from '@/colada/queries/current-user.ts'
|
||||
|
||||
const {hasRole: isAdmin} = useCurrentUserRole(UserRoles.ADMIN)
|
||||
const {isAdmin} = useCurrentUser()
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
}
|
||||
|
|
@ -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}
|
||||
}
|
||||
|
|
@ -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}
|
||||
}
|
||||
|
|
@ -93,13 +93,8 @@
|
|||
<script lang="ts" setup>
|
||||
import {useAppReleases} from '@/colada/queries/app-releases.ts'
|
||||
import {marked} from 'marked'
|
||||
import {useBuildVersion} from '@/composables/buid-version.ts'
|
||||
import {useLatestVersion} from '@/composables/latest-version.ts'
|
||||
|
||||
const {data, error} = useAppReleases()
|
||||
|
||||
const {buildVersion: currentVersion} = useBuildVersion()
|
||||
const {isLatestVersion, latestRelease: latest} = useLatestVersion()
|
||||
const {data, error, buildVersion: currentVersion, isLatestVersion, latestRelease: latest} = useAppReleases()
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
|
|
|
|||
Loading…
Reference in a new issue