refactor: use type-only imports for better code organization

This commit is contained in:
icarus 2025-10-13 23:47:23 +08:00
parent cd2609068c
commit ca96b6fa7b
18 changed files with 29 additions and 26 deletions

View File

@ -1,4 +1,4 @@
import { SystemProviderId, Video } from '@renderer/types'
import type { SystemProviderId, Video } from '@renderer/types'
// Hard-encoded for now. We may implement a function to filter video generation model from provider.models.
export const videoModelsMap = {

View File

@ -1,4 +1,4 @@
import OpenAI from '@cherrystudio/openai'
import type OpenAI from '@cherrystudio/openai'
import { useCallback } from 'react'
import { useProviderVideos } from './useProviderVideos'

View File

@ -1,5 +1,6 @@
import { retrieveVideo } from '@renderer/services/ApiService'
import useSWR, { SWRConfiguration, useSWRConfig } from 'swr'
import type { SWRConfiguration } from 'swr'
import useSWR, { useSWRConfig } from 'swr'
import { useProvider } from '../useProvider'
import { useVideo } from './useVideo'

View File

@ -3,7 +3,7 @@ import { retrieveVideo } from '@renderer/services/ApiService'
import { getProviderById } from '@renderer/services/ProviderService'
import { useAppDispatch, useAppSelector } from '@renderer/store'
import { addVideoAction, setVideoAction, setVideosAction, updateVideoAction } from '@renderer/store/video'
import { Video } from '@renderer/types/video'
import type { Video } from '@renderer/types/video'
import { getErrorMessage } from '@renderer/utils'
import { useCallback, useEffect, useRef } from 'react'
import { useTranslation } from 'react-i18next'

View File

@ -2,7 +2,7 @@ import { loggerService } from '@logger'
import { retrieveVideoContent } from '@renderer/services/ApiService'
import ImageStorage from '@renderer/services/ImageStorage'
import { getProviderById } from '@renderer/services/ProviderService'
import { Video } from '@renderer/types'
import type { Video } from '@renderer/types'
import { useCallback } from 'react'
const logger = loggerService.withContext('useRetrieveThumbnail')

View File

@ -1,4 +1,4 @@
import { Video } from '@renderer/types'
import type { Video } from '@renderer/types'
import { PlusIcon } from 'lucide-react'
import { VideoListItem } from './VideoListItem'

View File

@ -1,6 +1,6 @@
import { cn, Progress, Spinner } from '@heroui/react'
import { DeleteIcon } from '@renderer/components/Icons'
import { Video } from '@renderer/types/video'
import type { Video } from '@renderer/types/video'
import { ContextMenu, ContextMenuContent, ContextMenuItem, ContextMenuTrigger } from '@renderer/ui/context-menu'
import { CheckCircleIcon, CircleXIcon, ClockIcon, DownloadIcon, ImageDownIcon } from 'lucide-react'
import { useTranslation } from 'react-i18next'

View File

@ -8,11 +8,11 @@ import { useProviderVideos } from '@renderer/hooks/video/useProviderVideos'
import { useVideoThumbnail } from '@renderer/hooks/video/useVideoThumbnail'
import { deleteVideo } from '@renderer/services/ApiService'
import { SystemProviderIds } from '@renderer/types'
import { CreateVideoParams } from '@renderer/types/video'
import type { CreateVideoParams } from '@renderer/types/video'
import { getErrorMessage } from '@renderer/utils'
import { deepUpdate } from '@renderer/utils/deepUpdate'
import { isVideoModel } from '@renderer/utils/model/video'
import { DeepPartial } from 'ai'
import type { DeepPartial } from 'ai'
import { useCallback, useMemo, useState } from 'react'
import { useTranslation } from 'react-i18next'

View File

@ -5,11 +5,12 @@ import { useAddOpenAIVideo } from '@renderer/hooks/video/useAddOpenAIVideo'
import { useProviderVideos } from '@renderer/hooks/video/useProviderVideos'
import { createVideo, retrieveVideoContent } from '@renderer/services/ApiService'
import FileManager from '@renderer/services/FileManager'
import { FileTypes, Provider, VideoFileMetadata } from '@renderer/types'
import { CreateVideoParams, Video } from '@renderer/types/video'
import type { Provider, VideoFileMetadata } from '@renderer/types'
import { FileTypes } from '@renderer/types'
import type { CreateVideoParams, Video } from '@renderer/types/video'
import { getErrorMessage } from '@renderer/utils'
import { MB } from '@shared/config/constant'
import { DeepPartial } from 'ai'
import type { DeepPartial } from 'ai'
import dayjs from 'dayjs'
import { isEmpty } from 'lodash'
import { ArrowUp, CircleXIcon, ImageIcon } from 'lucide-react'

View File

@ -12,7 +12,7 @@ import {
} from '@heroui/react'
import { usePending } from '@renderer/hooks/usePending'
import FileManager from '@renderer/services/FileManager'
import { Video, VideoDownloaded, VideoFailed } from '@renderer/types/video'
import type { Video, VideoDownloaded, VideoFailed } from '@renderer/types/video'
import dayjs from 'dayjs'
import { CheckCircleIcon, CircleXIcon, Clock9Icon } from 'lucide-react'
import { useEffect, useMemo, useRef, useState } from 'react'

View File

@ -1,6 +1,6 @@
import { Select, SelectItem } from '@heroui/react'
import { videoModelsMap } from '@renderer/config/models/video'
import { Model } from '@renderer/types'
import type { Model } from '@renderer/types'
import { useTranslation } from 'react-i18next'
import { SettingItem } from './shared'

View File

@ -1,7 +1,7 @@
import { VideoSeconds, VideoSize } from '@cherrystudio/openai/resources'
import type { VideoSeconds, VideoSize } from '@cherrystudio/openai/resources'
import { Select, SelectItem } from '@heroui/react'
import { OpenAICreateVideoParams } from '@renderer/types/video'
import { DeepPartial } from 'ai'
import type { OpenAICreateVideoParams } from '@renderer/types/video'
import type { DeepPartial } from 'ai'
import { useCallback } from 'react'
import { useTranslation } from 'react-i18next'

View File

@ -1,9 +1,9 @@
import { Select, SelectItem } from '@heroui/react'
import { ProviderAvatar } from '@renderer/components/ProviderAvatar'
import { useProviders } from '@renderer/hooks/useProvider'
import { Provider, SystemProviderId } from '@renderer/types'
import type { Provider, SystemProviderId } from '@renderer/types'
import { getFancyProviderName } from '@renderer/utils'
import { Dispatch, SetStateAction } from 'react'
import type { Dispatch, SetStateAction } from 'react'
import { useTranslation } from 'react-i18next'
import { SettingItem } from './shared'

View File

@ -1,5 +1,5 @@
import { Divider } from '@heroui/react'
import { PropsWithChildren } from 'react'
import type { PropsWithChildren } from 'react'
export const SettingsGroup = ({ children }: PropsWithChildren) => {
return <div className="mb-4 flex flex-col rounded-2xl border border-foreground-200 p-3">{children}</div>

View File

@ -1,6 +1,7 @@
import { loggerService } from '@logger'
import { createSlice, PayloadAction } from '@reduxjs/toolkit'
import { Video } from '@renderer/types/video'
import type { PayloadAction } from '@reduxjs/toolkit'
import { createSlice } from '@reduxjs/toolkit'
import type { Video } from '@renderer/types/video'
const logger = loggerService.withContext('Store:video')

View File

@ -1,6 +1,6 @@
import OpenAI from '@cherrystudio/openai'
import type OpenAI from '@cherrystudio/openai'
import { Provider } from './provider'
import type { Provider } from './provider'
// Only OpenAI (Responses) is supported for now.
export type VideoEndpointType = 'openai'

View File

@ -1,4 +1,4 @@
import { DeepPartial } from 'ai'
import type { DeepPartial } from 'ai'
import { cloneDeep } from 'lodash'
/**

View File

@ -1,4 +1,4 @@
import { VideoModel } from '@cherrystudio/openai/resources'
import type { VideoModel } from '@cherrystudio/openai/resources'
import { videoModelsMap } from '@renderer/config/models/video'
// Only for openai, use hard-encoded values