refactor(types): 统一类型导入导出管理
- 将类型定义从各个模块统一到 type 文件中进行管理 - 移除 auth-session 中不再使用的 AuthSessionInput 和 AuthUser 类型导入 - 移除 game store 中多余的类型导入如 BetSelection、StartAutoHostingInput 等 - 将 i18n 模块中的 AppLanguage 类型改为从 type 文件导入 - 移除 mobile-header 中未使用的 MessageBroadcast 组件导入 - 统一各组件中的类型引用路径,全部指向 type 文件 - 修复 withdraw 组件中 currencies 映射的类型注解问题 - 更新 modal-store 中移除未使用的 ModalKey 类型导入
This commit is contained in:
@@ -22,12 +22,8 @@ import {
|
|||||||
} from '@/features/game/shared'
|
} from '@/features/game/shared'
|
||||||
import { cn } from '@/lib/utils'
|
import { cn } from '@/lib/utils'
|
||||||
import { useAuthStore } from '@/store/auth'
|
import { useAuthStore } from '@/store/auth'
|
||||||
import {
|
import { useGameAutoHostingStore, useGameRoundStore } from '@/store/game'
|
||||||
type RewardAnimationType,
|
import type { BetSelection, RewardAnimationType } from '@/type'
|
||||||
useGameAutoHostingStore,
|
|
||||||
useGameRoundStore,
|
|
||||||
} from '@/store/game'
|
|
||||||
import type { BetSelection } from '@/type'
|
|
||||||
|
|
||||||
const REWARD_OVERLAY_FADE_OUT_MS = 300
|
const REWARD_OVERLAY_FADE_OUT_MS = 300
|
||||||
const REWARD_CHILDREN_FADE_IN_MS = 2_000
|
const REWARD_CHILDREN_FADE_IN_MS = 2_000
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
import { useMutation } from '@tanstack/react-query'
|
import { useMutation } from '@tanstack/react-query'
|
||||||
import { useRef } from 'react'
|
import { useRef } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import { createDeposit, type DepositTierItem } from '@/api'
|
import { createDeposit } from '@/api'
|
||||||
import { DataLoadingIndicator } from '@/components/ui/data-loading-indicator'
|
import { DataLoadingIndicator } from '@/components/ui/data-loading-indicator'
|
||||||
import { useDepositTierList } from '@/hooks/use-deposit-tier-list'
|
import { useDepositTierList } from '@/hooks/use-deposit-tier-list'
|
||||||
import { notify } from '@/lib/notify'
|
import { notify } from '@/lib/notify'
|
||||||
import { cn } from '@/lib/utils'
|
import { cn } from '@/lib/utils'
|
||||||
|
import type { DepositTierItem } from '@/type'
|
||||||
|
|
||||||
const PANEL_CLASS =
|
const PANEL_CLASS =
|
||||||
'rounded-md border border-[rgba(110,229,243,0.24)] bg-[linear-gradient(180deg,rgba(7,30,43,0.9),rgba(3,15,26,0.94))] shadow-[inset_0_0_calc(var(--design-unit)*14)_rgba(88,225,238,0.08),0_0_calc(var(--design-unit)*10)_rgba(32,163,186,0.12)]'
|
'rounded-md border border-[rgba(110,229,243,0.24)] bg-[linear-gradient(180deg,rgba(7,30,43,0.9),rgba(3,15,26,0.94))] shadow-[inset_0_0_calc(var(--design-unit)*14)_rgba(88,225,238,0.08),0_0_calc(var(--design-unit)*10)_rgba(32,163,186,0.12)]'
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import { useWithdrawSubmit } from '@/hooks/use-withdraw-submit'
|
|||||||
import { useWithdrawVm } from '@/hooks/use-withdraw-vm'
|
import { useWithdrawVm } from '@/hooks/use-withdraw-vm'
|
||||||
import { cn } from '@/lib/utils'
|
import { cn } from '@/lib/utils'
|
||||||
import { useModalStore } from '@/store'
|
import { useModalStore } from '@/store'
|
||||||
|
import type { FinanceCurrencyConfig } from '@/type'
|
||||||
|
|
||||||
const PANEL_CLASS =
|
const PANEL_CLASS =
|
||||||
'rounded-md border border-[rgba(110,229,243,0.24)] bg-[linear-gradient(180deg,rgba(7,30,43,0.9),rgba(3,15,26,0.94))] shadow-[inset_0_0_calc(var(--design-unit)*14)_rgba(88,225,238,0.08),0_0_calc(var(--design-unit)*10)_rgba(32,163,186,0.12)]'
|
'rounded-md border border-[rgba(110,229,243,0.24)] bg-[linear-gradient(180deg,rgba(7,30,43,0.9),rgba(3,15,26,0.94))] shadow-[inset_0_0_calc(var(--design-unit)*14)_rgba(88,225,238,0.08),0_0_calc(var(--design-unit)*10)_rgba(32,163,186,0.12)]'
|
||||||
@@ -428,7 +429,7 @@ function DesktopWithdraw() {
|
|||||||
/>
|
/>
|
||||||
</SelectTrigger>
|
</SelectTrigger>
|
||||||
<SelectContent>
|
<SelectContent>
|
||||||
{vm.config.currencies.map((option) => (
|
{vm.config.currencies.map((option: FinanceCurrencyConfig) => (
|
||||||
<SelectItem key={option.code} value={option.code}>
|
<SelectItem key={option.code} value={option.code}>
|
||||||
{option.label}
|
{option.label}
|
||||||
</SelectItem>
|
</SelectItem>
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import chatImage from '@/assets/system/chat.webp'
|
|||||||
import diamond from '@/assets/system/diamond.webp'
|
import diamond from '@/assets/system/diamond.webp'
|
||||||
import logo from '@/assets/system/logo.webp'
|
import logo from '@/assets/system/logo.webp'
|
||||||
import { SmartImage } from '@/components/smart-image.tsx'
|
import { SmartImage } from '@/components/smart-image.tsx'
|
||||||
import { MessageBroadcast } from '@/features/game/components/desktop/desktop-title.tsx'
|
|
||||||
import { useHeaderClockLabel, useHeaderVm } from '@/hooks/use-header-vm'
|
import { useHeaderClockLabel, useHeaderVm } from '@/hooks/use-header-vm'
|
||||||
import { useModalStore } from '@/store'
|
import { useModalStore } from '@/store'
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
import { useMutation } from '@tanstack/react-query'
|
import { useMutation } from '@tanstack/react-query'
|
||||||
import { useRef } from 'react'
|
import { useRef } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import { createDeposit, type DepositTierItem } from '@/api'
|
import { createDeposit } from '@/api'
|
||||||
import { DataLoadingIndicator } from '@/components/ui/data-loading-indicator'
|
import { DataLoadingIndicator } from '@/components/ui/data-loading-indicator'
|
||||||
import { useDepositTierList } from '@/hooks/use-deposit-tier-list'
|
import { useDepositTierList } from '@/hooks/use-deposit-tier-list'
|
||||||
import { notify } from '@/lib/notify'
|
import { notify } from '@/lib/notify'
|
||||||
import { cn } from '@/lib/utils'
|
import { cn } from '@/lib/utils'
|
||||||
|
import type { DepositTierItem } from '@/type'
|
||||||
|
|
||||||
const PANEL_CLASS =
|
const PANEL_CLASS =
|
||||||
'rounded-md border border-[rgba(110,229,243,0.24)] bg-[linear-gradient(180deg,rgba(7,30,43,0.9),rgba(3,15,26,0.94))] shadow-[inset_0_0_calc(var(--design-unit)*12)_rgba(88,225,238,0.08)]'
|
'rounded-md border border-[rgba(110,229,243,0.24)] bg-[linear-gradient(180deg,rgba(7,30,43,0.9),rgba(3,15,26,0.94))] shadow-[inset_0_0_calc(var(--design-unit)*12)_rgba(88,225,238,0.08)]'
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import { useWithdrawSubmit } from '@/hooks/use-withdraw-submit'
|
|||||||
import { useWithdrawVm } from '@/hooks/use-withdraw-vm'
|
import { useWithdrawVm } from '@/hooks/use-withdraw-vm'
|
||||||
import { cn } from '@/lib/utils'
|
import { cn } from '@/lib/utils'
|
||||||
import { useModalStore } from '@/store'
|
import { useModalStore } from '@/store'
|
||||||
|
import type { FinanceCurrencyConfig } from '@/type'
|
||||||
|
|
||||||
const PANEL_CLASS =
|
const PANEL_CLASS =
|
||||||
'rounded-md border border-[rgba(110,229,243,0.24)] bg-[linear-gradient(180deg,rgba(7,30,43,0.9),rgba(3,15,26,0.94))] shadow-[inset_0_0_calc(var(--design-unit)*10)_rgba(88,225,238,0.08)]'
|
'rounded-md border border-[rgba(110,229,243,0.24)] bg-[linear-gradient(180deg,rgba(7,30,43,0.9),rgba(3,15,26,0.94))] shadow-[inset_0_0_calc(var(--design-unit)*10)_rgba(88,225,238,0.08)]'
|
||||||
@@ -414,7 +415,7 @@ function MobileWithdraw() {
|
|||||||
/>
|
/>
|
||||||
</SelectTrigger>
|
</SelectTrigger>
|
||||||
<SelectContent>
|
<SelectContent>
|
||||||
{vm.config.currencies.map((option) => (
|
{vm.config.currencies.map((option: FinanceCurrencyConfig) => (
|
||||||
<SelectItem key={option.code} value={option.code}>
|
<SelectItem key={option.code} value={option.code}>
|
||||||
{option.label}
|
{option.label}
|
||||||
</SelectItem>
|
</SelectItem>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { type ModalKey, useModalStore } from '@/store'
|
import { useModalStore } from '@/store'
|
||||||
|
import type { ModalKey } from '@/type'
|
||||||
|
|
||||||
export function useAuth() {
|
export function useAuth() {
|
||||||
const setModalOpen = useModalStore((state) => state.setModalOpen)
|
const setModalOpen = useModalStore((state) => state.setModalOpen)
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ import { useForm } from 'react-hook-form'
|
|||||||
import { loginWithPassword } from '@/api'
|
import { loginWithPassword } from '@/api'
|
||||||
import i18n from '@/i18n'
|
import i18n from '@/i18n'
|
||||||
import { notify } from '@/lib/notify'
|
import { notify } from '@/lib/notify'
|
||||||
import { type LoginFormValues, loginFormSchema } from '@/schema/auth-schema'
|
import { loginFormSchema } from '@/schema/auth-schema'
|
||||||
import { useAuthStore } from '@/store/auth'
|
import { useAuthStore } from '@/store/auth'
|
||||||
import type { UseLoginFormOptions } from '@/type'
|
import type { LoginFormValues, UseLoginFormOptions } from '@/type'
|
||||||
import { toAuthSubmitErrorKey } from './auth-error-key'
|
import { toAuthSubmitErrorKey } from './auth-error-key'
|
||||||
import { createZodResolver } from './zod-form-resolver'
|
import { createZodResolver } from './zod-form-resolver'
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
import { useQuery } from '@tanstack/react-query'
|
import { useQuery } from '@tanstack/react-query'
|
||||||
import { useMemo } from 'react'
|
import { useMemo } from 'react'
|
||||||
|
|
||||||
import { type GamePeriodHistoryItemDto, getGamePeriodHistory } from '@/api'
|
import { getGamePeriodHistory } from '@/api'
|
||||||
import { FLOWER_IMAGE_BY_ID } from '@/features/game/shared'
|
import { FLOWER_IMAGE_BY_ID } from '@/features/game/shared'
|
||||||
import type { PeriodHistoryDisplayItem } from '@/type'
|
import type { GamePeriodHistoryItemDto, PeriodHistoryDisplayItem } from '@/type'
|
||||||
|
|
||||||
|
export type { PeriodHistoryDisplayItem } from '@/type'
|
||||||
|
|
||||||
export const DEFAULT_PERIOD_HISTORY_LIMIT = 36
|
export const DEFAULT_PERIOD_HISTORY_LIMIT = 36
|
||||||
|
|
||||||
|
|||||||
@@ -7,12 +7,9 @@ import {
|
|||||||
} from '@/constants'
|
} from '@/constants'
|
||||||
import i18n from '@/i18n'
|
import i18n from '@/i18n'
|
||||||
import { notify } from '@/lib/notify'
|
import { notify } from '@/lib/notify'
|
||||||
import {
|
import { registerFormSchema } from '@/schema/auth-schema'
|
||||||
type RegisterFormValues,
|
|
||||||
registerFormSchema,
|
|
||||||
} from '@/schema/auth-schema'
|
|
||||||
import { useAuthStore } from '@/store/auth'
|
import { useAuthStore } from '@/store/auth'
|
||||||
import type { UseRegisterFormOptions } from '@/type'
|
import type { RegisterFormValues, UseRegisterFormOptions } from '@/type'
|
||||||
import { toAuthSubmitErrorKey } from './auth-error-key'
|
import { toAuthSubmitErrorKey } from './auth-error-key'
|
||||||
import { createZodResolver } from './zod-form-resolver'
|
import { createZodResolver } from './zod-form-resolver'
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
import { useMutation } from '@tanstack/react-query'
|
import { useMutation } from '@tanstack/react-query'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
|
|
||||||
import { createWithdraw, type WithdrawCreateRequestDto } from '@/api'
|
import { createWithdraw } from '@/api'
|
||||||
import { notify } from '@/lib/notify'
|
import { notify } from '@/lib/notify'
|
||||||
|
import type { WithdrawCreateRequestDto } from '@/type'
|
||||||
|
|
||||||
export function useWithdrawSubmit() {
|
export function useWithdrawSubmit() {
|
||||||
const { i18n, t } = useTranslation()
|
const { i18n, t } = useTranslation()
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import { useCallback, useEffect, useMemo, useState } from 'react'
|
import { useCallback, useEffect, useMemo, useState } from 'react'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
import type { DepositWithdrawConfig } from '@/api'
|
|
||||||
import {
|
import {
|
||||||
DEFAULT_CURRENCY_CODE,
|
DEFAULT_CURRENCY_CODE,
|
||||||
DEFAULT_WITHDRAW_CONFIG,
|
DEFAULT_WITHDRAW_CONFIG,
|
||||||
@@ -10,6 +9,7 @@ import {
|
|||||||
} from '@/constants'
|
} from '@/constants'
|
||||||
import { useDepositWithdrawConfig } from '@/hooks/use-deposit-withdraw-config'
|
import { useDepositWithdrawConfig } from '@/hooks/use-deposit-withdraw-config'
|
||||||
import { useAuthStore } from '@/store'
|
import { useAuthStore } from '@/store'
|
||||||
|
import type { DepositWithdrawConfig } from '@/type'
|
||||||
|
|
||||||
function formatNumber(locale: string, value: number) {
|
function formatNumber(locale: string, value: number) {
|
||||||
return new Intl.NumberFormat(locale).format(value)
|
return new Intl.NumberFormat(locale).format(value)
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import idID from '@/locales/id-ID'
|
|||||||
import msMY from '@/locales/ms-MY'
|
import msMY from '@/locales/ms-MY'
|
||||||
import zhCN from '@/locales/zh-CN'
|
import zhCN from '@/locales/zh-CN'
|
||||||
import { getStoredAppLanguage, setStoredAppLanguage } from '@/store/auth'
|
import { getStoredAppLanguage, setStoredAppLanguage } from '@/store/auth'
|
||||||
|
import type { AppLanguage } from '@/type'
|
||||||
|
|
||||||
export type { AppLanguage } from '@/type'
|
export type { AppLanguage } from '@/type'
|
||||||
|
|
||||||
@@ -45,7 +46,7 @@ export function getLanguageFromPathname(pathname: string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void i18n.use(initReactI18next).init({
|
void i18n.use(initReactI18next).init({
|
||||||
lng: getInitialLanguage(),
|
lng: getInitialLanguage() ?? DEFAULT_APP_LANGUAGE,
|
||||||
fallbackLng: DEFAULT_APP_LANGUAGE,
|
fallbackLng: DEFAULT_APP_LANGUAGE,
|
||||||
debug: false,
|
debug: false,
|
||||||
interpolation: {
|
interpolation: {
|
||||||
|
|||||||
@@ -9,8 +9,6 @@ import { queryClient } from '@/lib/query/query-client'
|
|||||||
import { useAuthStore } from '@/store/auth'
|
import { useAuthStore } from '@/store/auth'
|
||||||
import { useModalStore } from '@/store/modal'
|
import { useModalStore } from '@/store/modal'
|
||||||
import type {
|
import type {
|
||||||
AuthSessionInput,
|
|
||||||
AuthUser,
|
|
||||||
ClearAuthenticatedSessionOptions,
|
ClearAuthenticatedSessionOptions,
|
||||||
CurrentUserInitializer,
|
CurrentUserInitializer,
|
||||||
RefreshSessionHandler,
|
RefreshSessionHandler,
|
||||||
|
|||||||
@@ -10,12 +10,12 @@ import { notify } from '@/lib/notify'
|
|||||||
import { useModalStore } from '@/store'
|
import { useModalStore } from '@/store'
|
||||||
import { useAuthStore } from '@/store/auth'
|
import { useAuthStore } from '@/store/auth'
|
||||||
import {
|
import {
|
||||||
type AutoHostingStopRules,
|
|
||||||
selectSelectionTotal,
|
selectSelectionTotal,
|
||||||
useGameAutoHostingStore,
|
useGameAutoHostingStore,
|
||||||
useGameRoundStore,
|
useGameRoundStore,
|
||||||
useGameSessionStore,
|
useGameSessionStore,
|
||||||
} from '@/store/game'
|
} from '@/store/game'
|
||||||
|
import type { AutoHostingStopRules } from '@/type'
|
||||||
|
|
||||||
function parseAmount(value: string) {
|
function parseAmount(value: string) {
|
||||||
const parsed = Number(value)
|
const parsed = Number(value)
|
||||||
|
|||||||
@@ -10,12 +10,12 @@ import { notify } from '@/lib/notify'
|
|||||||
import { useModalStore } from '@/store'
|
import { useModalStore } from '@/store'
|
||||||
import { useAuthStore } from '@/store/auth'
|
import { useAuthStore } from '@/store/auth'
|
||||||
import {
|
import {
|
||||||
type AutoHostingStopRules,
|
|
||||||
selectSelectionTotal,
|
selectSelectionTotal,
|
||||||
useGameAutoHostingStore,
|
useGameAutoHostingStore,
|
||||||
useGameRoundStore,
|
useGameRoundStore,
|
||||||
useGameSessionStore,
|
useGameSessionStore,
|
||||||
} from '@/store/game'
|
} from '@/store/game'
|
||||||
|
import type { AutoHostingStopRules } from '@/type'
|
||||||
|
|
||||||
function parseAmount(value: string) {
|
function parseAmount(value: string) {
|
||||||
const parsed = Number(value)
|
const parsed = Number(value)
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ import {
|
|||||||
PASSWORD_MAX_LENGTH,
|
PASSWORD_MAX_LENGTH,
|
||||||
PASSWORD_MIN_LENGTH,
|
PASSWORD_MIN_LENGTH,
|
||||||
} from '@/constants'
|
} from '@/constants'
|
||||||
import type { LoginFormValues, RegisterFormValues } from '@/type'
|
|
||||||
|
export type { LoginFormValues, RegisterFormValues } from '@/type'
|
||||||
|
|
||||||
const usernameSchema = z
|
const usernameSchema = z
|
||||||
.string()
|
.string()
|
||||||
|
|||||||
@@ -1,12 +1,7 @@
|
|||||||
import { create } from 'zustand'
|
import { create } from 'zustand'
|
||||||
|
|
||||||
import { AUTO_HOSTING_DEFAULT_SINGLE_WIN_THRESHOLD } from '@/constants'
|
import { AUTO_HOSTING_DEFAULT_SINGLE_WIN_THRESHOLD } from '@/constants'
|
||||||
import type {
|
import type { AutoHostingStopRules, GameAutoHostingStoreState } from '@/type'
|
||||||
AutoHostingStopRules,
|
|
||||||
BetSelection,
|
|
||||||
GameAutoHostingStoreState,
|
|
||||||
StartAutoHostingInput,
|
|
||||||
} from '@/type'
|
|
||||||
|
|
||||||
const DEFAULT_AUTO_HOSTING_RULES: AutoHostingStopRules = {
|
const DEFAULT_AUTO_HOSTING_RULES: AutoHostingStopRules = {
|
||||||
stopIfBalanceBelow: {
|
stopIfBalanceBelow: {
|
||||||
|
|||||||
@@ -13,13 +13,9 @@ import type {
|
|||||||
Chip,
|
Chip,
|
||||||
GameCell,
|
GameCell,
|
||||||
GameRoundSlice,
|
GameRoundSlice,
|
||||||
GameRoundStoreData,
|
|
||||||
GameRoundStoreState,
|
GameRoundStoreState,
|
||||||
HistoryEntry,
|
HistoryEntry,
|
||||||
RevealAnimationPhase,
|
|
||||||
RevealAnimationState,
|
RevealAnimationState,
|
||||||
RewardAnimationType,
|
|
||||||
RoundPhase,
|
|
||||||
RoundSnapshot,
|
RoundSnapshot,
|
||||||
TrendEntry,
|
TrendEntry,
|
||||||
} from '@/type'
|
} from '@/type'
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { create } from 'zustand'
|
import { create } from 'zustand'
|
||||||
import { INITIAL_MODAL_VISIBILITY, MODAL_KEYS } from '@/constants'
|
import { INITIAL_MODAL_VISIBILITY, MODAL_KEYS } from '@/constants'
|
||||||
import type { ModalKey, ModalStoreState } from '@/type'
|
import type { ModalStoreState } from '@/type'
|
||||||
|
|
||||||
export { MODAL_KEYS }
|
export { MODAL_KEYS }
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user