mirror of
https://github.com/gotson/komga.git
synced 2025-12-06 08:32:25 +01:00
colada thingies
This commit is contained in:
parent
65776273da
commit
b0d2427e13
4 changed files with 47 additions and 7 deletions
|
|
@ -13,10 +13,9 @@ enableAutoUnmount(afterEach)
|
||||||
describe('colada releases', () => {
|
describe('colada releases', () => {
|
||||||
test('when getting app releases then values are correct', async () => {
|
test('when getting app releases then values are correct', async () => {
|
||||||
createMockColada(useAppReleases)
|
createMockColada(useAppReleases)
|
||||||
const { latestRelease, isLatestVersion, refresh, actuatorRefresh } = useAppReleases()
|
const { latestRelease, isLatestVersion, refresh } = useAppReleases()
|
||||||
|
|
||||||
await refresh()
|
await refresh()
|
||||||
await actuatorRefresh()
|
|
||||||
expect(latestRelease.value!.version).toBe('1.21.2')
|
expect(latestRelease.value!.version).toBe('1.21.2')
|
||||||
expect(isLatestVersion.value).toBe(true)
|
expect(isLatestVersion.value).toBe(true)
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,15 @@
|
||||||
import { defineQuery, useQuery } from '@pinia/colada'
|
import { defineQuery, useQuery } from '@pinia/colada'
|
||||||
import { komgaClient } from '@/api/komga-client'
|
import { komgaClient } from '@/api/komga-client'
|
||||||
import { useActuatorInfo } from '@/colada/actuator-info'
|
import { useActuatorInfo } from '@/colada/actuator-info'
|
||||||
|
import { combinePromises } from '@/colada/utils'
|
||||||
|
|
||||||
export const useAppReleases = defineQuery(() => {
|
export const useAppReleases = defineQuery(() => {
|
||||||
const { data, ...rest } = useQuery({
|
const {
|
||||||
|
data,
|
||||||
|
refresh: refreshReleases,
|
||||||
|
refetch: refetchReleases,
|
||||||
|
...rest
|
||||||
|
} = useQuery({
|
||||||
key: () => ['app-releases'],
|
key: () => ['app-releases'],
|
||||||
query: () =>
|
query: () =>
|
||||||
komgaClient
|
komgaClient
|
||||||
|
|
@ -15,7 +21,11 @@ export const useAppReleases = defineQuery(() => {
|
||||||
gcTime: false,
|
gcTime: false,
|
||||||
})
|
})
|
||||||
|
|
||||||
const { buildVersion, refresh: actuatorRefresh } = useActuatorInfo()
|
const { buildVersion, refresh: refreshActuator, refetch: refetchActuator } = useActuatorInfo()
|
||||||
|
|
||||||
|
const refresh = combinePromises(refreshReleases, [refreshActuator])
|
||||||
|
const refetch = combinePromises(refetchReleases, [refetchActuator])
|
||||||
|
|
||||||
const latestRelease = computed(() => data.value?.find((x) => x.latest))
|
const latestRelease = computed(() => data.value?.find((x) => x.latest))
|
||||||
|
|
||||||
const isLatestVersion = computed(() => {
|
const isLatestVersion = computed(() => {
|
||||||
|
|
@ -26,10 +36,11 @@ export const useAppReleases = defineQuery(() => {
|
||||||
|
|
||||||
return {
|
return {
|
||||||
data,
|
data,
|
||||||
|
refresh,
|
||||||
|
refetch,
|
||||||
...rest,
|
...rest,
|
||||||
buildVersion,
|
buildVersion,
|
||||||
latestRelease,
|
latestRelease,
|
||||||
isLatestVersion,
|
isLatestVersion,
|
||||||
actuatorRefresh,
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,15 @@
|
||||||
import { defineQuery, useQuery } from '@pinia/colada'
|
import { defineQuery, useQuery } from '@pinia/colada'
|
||||||
import { komgaClient } from '@/api/komga-client'
|
import { komgaClient } from '@/api/komga-client'
|
||||||
import { useClientSettingsUser } from '@/colada/client-settings'
|
import { useClientSettingsUser } from '@/colada/client-settings'
|
||||||
|
import { combinePromises } from '@/colada/utils'
|
||||||
|
|
||||||
export const useLibraries = defineQuery(() => {
|
export const useLibraries = defineQuery(() => {
|
||||||
const { data, ...rest } = useQuery({
|
const {
|
||||||
|
data,
|
||||||
|
refresh: refreshLibraries,
|
||||||
|
refetch: refetchLibraries,
|
||||||
|
...rest
|
||||||
|
} = useQuery({
|
||||||
key: () => ['libraries'],
|
key: () => ['libraries'],
|
||||||
query: () =>
|
query: () =>
|
||||||
komgaClient
|
komgaClient
|
||||||
|
|
@ -15,7 +21,14 @@ export const useLibraries = defineQuery(() => {
|
||||||
gcTime: false,
|
gcTime: false,
|
||||||
})
|
})
|
||||||
|
|
||||||
const { userLibraries } = useClientSettingsUser()
|
const {
|
||||||
|
userLibraries,
|
||||||
|
refresh: refreshSettings,
|
||||||
|
refetch: refetchSettings,
|
||||||
|
} = useClientSettingsUser()
|
||||||
|
|
||||||
|
const refresh = combinePromises(refreshLibraries, [refreshSettings])
|
||||||
|
const refetch = combinePromises(refetchLibraries, [refetchSettings])
|
||||||
|
|
||||||
const ordered = computed(() =>
|
const ordered = computed(() =>
|
||||||
data?.value?.sort(
|
data?.value?.sort(
|
||||||
|
|
@ -36,6 +49,8 @@ export const useLibraries = defineQuery(() => {
|
||||||
ordered,
|
ordered,
|
||||||
unpinned,
|
unpinned,
|
||||||
pinned,
|
pinned,
|
||||||
|
refresh,
|
||||||
|
refetch,
|
||||||
...rest,
|
...rest,
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
||||||
15
next-ui/src/colada/utils.ts
Normal file
15
next-ui/src/colada/utils.ts
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
/**
|
||||||
|
* Convenience function to create a refresh/refetch function for queries
|
||||||
|
* that depend on other queries.
|
||||||
|
* @param main
|
||||||
|
* @param secondary
|
||||||
|
*/
|
||||||
|
export function combinePromises(
|
||||||
|
main: (throwOnError: boolean) => Promise<unknown>,
|
||||||
|
secondary: (() => Promise<unknown>)[],
|
||||||
|
): (throwOnError?: boolean) => Promise<unknown> {
|
||||||
|
return async function (throwOnError: boolean = false) {
|
||||||
|
await Promise.allSettled(secondary.map((it) => it()))
|
||||||
|
return main(throwOnError)
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue