mirror of
https://github.com/gotson/komga.git
synced 2025-12-06 00:25:08 +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', () => {
|
||||
test('when getting app releases then values are correct', async () => {
|
||||
createMockColada(useAppReleases)
|
||||
const { latestRelease, isLatestVersion, refresh, actuatorRefresh } = useAppReleases()
|
||||
const { latestRelease, isLatestVersion, refresh } = useAppReleases()
|
||||
|
||||
await refresh()
|
||||
await actuatorRefresh()
|
||||
expect(latestRelease.value!.version).toBe('1.21.2')
|
||||
expect(isLatestVersion.value).toBe(true)
|
||||
})
|
||||
|
|
|
|||
|
|
@ -1,9 +1,15 @@
|
|||
import { defineQuery, useQuery } from '@pinia/colada'
|
||||
import { komgaClient } from '@/api/komga-client'
|
||||
import { useActuatorInfo } from '@/colada/actuator-info'
|
||||
import { combinePromises } from '@/colada/utils'
|
||||
|
||||
export const useAppReleases = defineQuery(() => {
|
||||
const { data, ...rest } = useQuery({
|
||||
const {
|
||||
data,
|
||||
refresh: refreshReleases,
|
||||
refetch: refetchReleases,
|
||||
...rest
|
||||
} = useQuery({
|
||||
key: () => ['app-releases'],
|
||||
query: () =>
|
||||
komgaClient
|
||||
|
|
@ -15,7 +21,11 @@ export const useAppReleases = defineQuery(() => {
|
|||
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 isLatestVersion = computed(() => {
|
||||
|
|
@ -26,10 +36,11 @@ export const useAppReleases = defineQuery(() => {
|
|||
|
||||
return {
|
||||
data,
|
||||
refresh,
|
||||
refetch,
|
||||
...rest,
|
||||
buildVersion,
|
||||
latestRelease,
|
||||
isLatestVersion,
|
||||
actuatorRefresh,
|
||||
}
|
||||
})
|
||||
|
|
|
|||
|
|
@ -1,9 +1,15 @@
|
|||
import { defineQuery, useQuery } from '@pinia/colada'
|
||||
import { komgaClient } from '@/api/komga-client'
|
||||
import { useClientSettingsUser } from '@/colada/client-settings'
|
||||
import { combinePromises } from '@/colada/utils'
|
||||
|
||||
export const useLibraries = defineQuery(() => {
|
||||
const { data, ...rest } = useQuery({
|
||||
const {
|
||||
data,
|
||||
refresh: refreshLibraries,
|
||||
refetch: refetchLibraries,
|
||||
...rest
|
||||
} = useQuery({
|
||||
key: () => ['libraries'],
|
||||
query: () =>
|
||||
komgaClient
|
||||
|
|
@ -15,7 +21,14 @@ export const useLibraries = defineQuery(() => {
|
|||
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(() =>
|
||||
data?.value?.sort(
|
||||
|
|
@ -36,6 +49,8 @@ export const useLibraries = defineQuery(() => {
|
|||
ordered,
|
||||
unpinned,
|
||||
pinned,
|
||||
refresh,
|
||||
refetch,
|
||||
...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