[feat] global watch dir and set better check logic

todo: first time check failed should let user manually click
This commit is contained in:
Purp1e
2025-03-21 02:42:49 +08:00
parent a9a48d2aba
commit c2c1a4c368
9 changed files with 99 additions and 60 deletions

View File

@@ -6,10 +6,10 @@ export default function Page() {
return (
<div className="flex flex-col items-start gap-3 pt-2 pb-1">
<p>Steam路径{steam.state.dir}</p>
<p>{steam.state.csDir}</p>
<p>Steam路径有效{steam.state.isDirValid ? "是" : "否"}</p>
<p>{steam.state.isCsDirValid ? "是" : "否"}</p>
<p>Steam路径{steam.state.steamDir}</p>
<p>{steam.state.cs2Dir}</p>
<p>Steam路径有效{steam.state.steamDirValid ? "是" : "否"}</p>
<p>{steam.state.cs2DirValid ? "是" : "否"}</p>
<p>Steam账号{steam.currentUser().accountName}</p>
</div>
)

View File

@@ -1,14 +1,27 @@
"use client"
import { steamStore } from "@/store/steam"
import { steamStore, useSteamStore } from "@/store/steam"
import { useEffect } from "react"
import "./globals.css"
import Providers from "./providers"
import { init } from "@/store"
import { useDebounce } from "@uidotdev/usehooks"
export default function RootLayout({ children }: { children: React.ReactNode }) {
useEffect(() => {
void init()
})
// 检测steam路径和游戏路径是否有效
const steam = useSteamStore()
const debounceSteamDir = useDebounce(steam.state.steamDir, 500)
const debounceCs2Dir = useDebounce(steam.state.cs2Dir, 500)
useEffect(() => {
steam.checkSteamDirValid()
}, [debounceSteamDir])
useEffect(() => {
steam.checkCs2DirValid()
}, [debounceCs2Dir])
return (
<html lang="en">
<body>

View File

@@ -4,13 +4,13 @@ import { useSteamStore } from "@/store/steam"
import { useEffect, useState } from "react"
export default function Page() {
const steam = useSteamStore()
const [steamDir, setSteamDir] = useState(steam.state.dir)
const [cs2Dir, setCs2Dir] = useState(steam.state.csDir)
const [steamDir, setSteamDir] = useState(steam.state.steamDir)
const [cs2Dir, setCs2Dir] = useState(steam.state.cs2Dir)
useEffect(() => {
setSteamDir(steam.state.dir)
setCs2Dir(steam.state.csDir)
}, [steam.state.dir, steam.state.csDir])
setSteamDir(steam.state.steamDir)
setCs2Dir(steam.state.cs2Dir)
}, [steam.state.steamDir, steam.state.cs2Dir])
return (
<div