mirror of
https://github.com/langgenius/dify.git
synced 2026-09-07 10:23:54 +08:00
50 lines
1.8 KiB
TypeScript
50 lines
1.8 KiB
TypeScript
'use client'
|
|
|
|
import { keepPreviousData, skipToken } from '@tanstack/react-query'
|
|
import { atom } from 'jotai'
|
|
import { atomWithQuery } from 'jotai-tanstack-query'
|
|
import { selectAtom } from 'jotai/utils'
|
|
import { consoleQuery } from '@/service/client'
|
|
import { deploymentRouteAppInstanceIdAtom } from '../../route-state'
|
|
|
|
export const RELEASE_HISTORY_PAGE_SIZE = 20
|
|
|
|
export const releaseHistoryCurrentPageAtom = atom(0)
|
|
|
|
export const releaseHistoryQueryAtom = atomWithQuery((get) => {
|
|
const appInstanceId = get(deploymentRouteAppInstanceIdAtom)
|
|
const currentPage = get(releaseHistoryCurrentPageAtom)
|
|
|
|
return consoleQuery.enterprise.releaseService.listReleaseSummaries.queryOptions({
|
|
input: appInstanceId
|
|
? {
|
|
params: { appInstanceId },
|
|
query: {
|
|
pageNumber: currentPage + 1,
|
|
resultsPerPage: RELEASE_HISTORY_PAGE_SIZE,
|
|
},
|
|
}
|
|
: skipToken,
|
|
enabled: Boolean(appInstanceId),
|
|
placeholderData: keepPreviousData,
|
|
})
|
|
})
|
|
|
|
export const releaseHistoryAtom = selectAtom(releaseHistoryQueryAtom, query => query.data)
|
|
export const releaseHistoryIsLoadingAtom = selectAtom(releaseHistoryQueryAtom, query => query.isLoading)
|
|
export const releaseHistoryIsErrorAtom = selectAtom(releaseHistoryQueryAtom, query => query.isError)
|
|
|
|
export const setReleaseHistoryCurrentPageAtom = atom(null, (_get, set, page: number) => {
|
|
set(releaseHistoryCurrentPageAtom, Math.max(page, 0))
|
|
})
|
|
|
|
export const adjustReleaseHistoryPageAfterDeleteAtom = atom(null, (get, set, remainingRowsOnPage: number) => {
|
|
const currentPage = get(releaseHistoryCurrentPageAtom)
|
|
if (remainingRowsOnPage === 1 && currentPage > 0)
|
|
set(releaseHistoryCurrentPageAtom, currentPage - 1)
|
|
})
|
|
|
|
export const releasesLocalAtoms = [
|
|
releaseHistoryCurrentPageAtom,
|
|
] as const
|