| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 | 
							- import {
 
-   useCallback,
 
-   useEffect,
 
-   useRef,
 
-   useState,
 
- } from 'react'
 
- import { TaskStatus } from '@/app/components/plugins/types'
 
- import type { PluginStatus } from '@/app/components/plugins/types'
 
- import {
 
-   useMutationClearAllTaskPlugin,
 
-   useMutationClearTaskPlugin,
 
-   usePluginTaskList,
 
- } from '@/service/use-plugins'
 
- export const usePluginTaskStatus = () => {
 
-   const {
 
-     pluginTasks,
 
-     handleRefetch,
 
-   } = usePluginTaskList()
 
-   const { mutateAsync } = useMutationClearTaskPlugin()
 
-   const { mutateAsync: mutateAsyncClearAll } = useMutationClearAllTaskPlugin()
 
-   const allPlugins = pluginTasks.map(task => task.plugins.map((plugin) => {
 
-     return {
 
-       ...plugin,
 
-       taskId: task.id,
 
-     }
 
-   })).flat()
 
-   const errorPlugins: PluginStatus[] = []
 
-   const successPlugins: PluginStatus[] = []
 
-   const runningPlugins: PluginStatus[] = []
 
-   allPlugins.forEach((plugin) => {
 
-     if (plugin.status === TaskStatus.running)
 
-       runningPlugins.push(plugin)
 
-     if (plugin.status === TaskStatus.failed)
 
-       errorPlugins.push(plugin)
 
-     if (plugin.status === TaskStatus.success)
 
-       successPlugins.push(plugin)
 
-   })
 
-   const handleClearErrorPlugin = useCallback(async (taskId: string, pluginId: string) => {
 
-     await mutateAsync({
 
-       taskId,
 
-       pluginId,
 
-     })
 
-     handleRefetch()
 
-   }, [mutateAsync, handleRefetch])
 
-   const handleClearAllErrorPlugin = useCallback(async () => {
 
-     await mutateAsyncClearAll()
 
-     handleRefetch()
 
-   }, [mutateAsyncClearAll, handleRefetch])
 
-   const totalPluginsLength = allPlugins.length
 
-   const runningPluginsLength = runningPlugins.length
 
-   const errorPluginsLength = errorPlugins.length
 
-   const successPluginsLength = successPlugins.length
 
-   const isInstalling = runningPluginsLength > 0 && errorPluginsLength === 0 && successPluginsLength === 0
 
-   const isInstallingWithSuccess = runningPluginsLength > 0 && successPluginsLength > 0 && errorPluginsLength === 0
 
-   const isInstallingWithError = runningPluginsLength > 0 && errorPluginsLength > 0
 
-   const isSuccess = successPluginsLength === totalPluginsLength && totalPluginsLength > 0
 
-   const isFailed = runningPluginsLength === 0 && (errorPluginsLength + successPluginsLength) === totalPluginsLength && totalPluginsLength > 0 && errorPluginsLength > 0
 
-   const [opacity, setOpacity] = useState(1)
 
-   const timerRef = useRef<NodeJS.Timeout | null>(null)
 
-   useEffect(() => {
 
-     if (isSuccess) {
 
-       if (timerRef.current) {
 
-         clearTimeout(timerRef.current)
 
-         timerRef.current = null
 
-       }
 
-       if (opacity > 0) {
 
-         timerRef.current = setTimeout(() => {
 
-           setOpacity(v => v - 0.1)
 
-         }, 200)
 
-       }
 
-     }
 
-     if (!isSuccess)
 
-       setOpacity(1)
 
-   }, [isSuccess, opacity])
 
-   return {
 
-     errorPlugins,
 
-     successPlugins,
 
-     runningPlugins,
 
-     runningPluginsLength,
 
-     errorPluginsLength,
 
-     successPluginsLength,
 
-     totalPluginsLength,
 
-     isInstalling,
 
-     isInstallingWithSuccess,
 
-     isInstallingWithError,
 
-     isSuccess,
 
-     isFailed,
 
-     handleClearErrorPlugin,
 
-     handleClearAllErrorPlugin,
 
-     opacity,
 
-   }
 
- }
 
 
  |