'use client' import type { FC } from 'react' import React from 'react' import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query' import { createApp, updateAppApiStatus, updateAppModelConfig, updateAppRateLimit, updateAppSiteAccessToken, updateAppSiteConfig, updateAppSiteStatus } from '../apps' import Loading from '@/app/components/base/loading' import { AppModeEnum } from '@/types/app' import { useAppDailyConversations, useAppDailyEndUsers, useAppDetail, useAppList, } from '../use-apps' const Service: FC = () => { const appId = '1' const queryClient = useQueryClient() const { data: appList, error: appListError, isLoading: isAppListLoading } = useAppList({ page: 1, limit: 30, name: '' }) const { data: firstApp, error: appDetailError, isLoading: isAppDetailLoading } = useAppDetail(appId) const { data: updateAppSiteStatusRes, error: err1, isLoading: isUpdatingSiteStatus } = useQuery({ queryKey: ['demo', 'updateAppSiteStatus', appId], queryFn: () => updateAppSiteStatus({ url: '/apps', body: { enable_site: false } }), }) const { data: updateAppApiStatusRes, error: err2, isLoading: isUpdatingApiStatus } = useQuery({ queryKey: ['demo', 'updateAppApiStatus', appId], queryFn: () => updateAppApiStatus({ url: '/apps', body: { enable_api: true } }), }) const { data: updateAppRateLimitRes, error: err3, isLoading: isUpdatingRateLimit } = useQuery({ queryKey: ['demo', 'updateAppRateLimit', appId], queryFn: () => updateAppRateLimit({ url: '/apps', body: { api_rpm: 10, api_rph: 20 } }), }) const { data: updateAppSiteCodeRes, error: err4, isLoading: isUpdatingSiteCode } = useQuery({ queryKey: ['demo', 'updateAppSiteAccessToken', appId], queryFn: () => updateAppSiteAccessToken({ url: '/apps' }), }) const { data: updateAppSiteConfigRes, error: err5, isLoading: isUpdatingSiteConfig } = useQuery({ queryKey: ['demo', 'updateAppSiteConfig', appId], queryFn: () => updateAppSiteConfig({ url: '/apps', body: { title: 'title test', author: 'author test' } }), }) const { data: getAppDailyConversationsRes, error: err6, isLoading: isConversationsLoading } = useAppDailyConversations(appId, { start: '1', end: '2' }) const { data: getAppDailyEndUsersRes, error: err7, isLoading: isEndUsersLoading } = useAppDailyEndUsers(appId, { start: '1', end: '2' }) const { data: updateAppModelConfigRes, error: err8, isLoading: isUpdatingModelConfig } = useQuery({ queryKey: ['demo', 'updateAppModelConfig', appId], queryFn: () => updateAppModelConfig({ url: '/apps', body: { model_id: 'gpt-100' } }), }) const { mutateAsync: mutateCreateApp } = useMutation({ mutationKey: ['demo', 'createApp'], mutationFn: () => createApp({ name: `new app${Math.round(Math.random() * 100)}`, mode: AppModeEnum.CHAT, }), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['apps', 'list'], }) }, }) const handleCreateApp = async () => { await mutateCreateApp() } if (appListError || appDetailError || err1 || err2 || err3 || err4 || err5 || err6 || err7 || err8) return
{JSON.stringify(appListError ?? appDetailError ?? err1 ?? err2 ?? err3 ?? err4 ?? err5 ?? err6 ?? err7 ?? err8)}
const isLoading = isAppListLoading || isAppDetailLoading || isUpdatingSiteStatus || isUpdatingApiStatus || isUpdatingRateLimit || isUpdatingSiteCode || isUpdatingSiteConfig || isConversationsLoading || isEndUsersLoading || isUpdatingModelConfig if (isLoading || !appList || !firstApp || !updateAppSiteStatusRes || !updateAppApiStatusRes || !updateAppRateLimitRes || !updateAppSiteCodeRes || !updateAppSiteConfigRes || !getAppDailyConversationsRes || !getAppDailyEndUsersRes || !updateAppModelConfigRes) return return (
1.App list
{appList.data.map(item => (
{item.id} {item.name}
))}
2.First app detail
{JSON.stringify(firstApp)}
4.updateAppSiteStatusRes
{JSON.stringify(updateAppSiteStatusRes)}
5.updateAppApiStatusRes
{JSON.stringify(updateAppApiStatusRes)}
6.updateAppRateLimitRes
{JSON.stringify(updateAppRateLimitRes)}
7.updateAppSiteCodeRes
{JSON.stringify(updateAppSiteCodeRes)}
8.updateAppSiteConfigRes
{JSON.stringify(updateAppSiteConfigRes)}
9.getAppDailyConversationsRes
{JSON.stringify(getAppDailyConversationsRes)}
10.getAppDailyEndUsersRes
{JSON.stringify(getAppDailyEndUsersRes)}
11.updateAppModelConfigRes
{JSON.stringify(updateAppModelConfigRes)}
) } export default React.memo(Service)