优化事件处理

This commit is contained in:
xintaofei
2026-03-08 17:08:31 +08:00
parent 7a4cbcb73e
commit c1220e1a8f
12 changed files with 178 additions and 64 deletions

View File

@@ -35,6 +35,7 @@ import {
startFileTreeWatch,
stopFileTreeWatch,
} from "@/lib/tauri"
import { disposeTauriListener } from "@/lib/tauri-listener"
import { emitAttachFileToSession } from "@/lib/session-attachment-events"
import type {
FileTreeChangedEvent,
@@ -1961,9 +1962,7 @@ export function FileTreeTab() {
pendingTreeRefreshRef.current = false
pendingTreeRefreshNeedsStatusRef.current = false
pendingStatusRefreshRef.current = false
if (unlisten) {
unlisten()
}
disposeTauriListener(unlisten, "AuxPanelFileTree.fileTreeChanged")
void stopFileTreeWatch(rootPath)
}
}, [fetchTree, folder?.path, openFilePreview, t])

View File

@@ -46,6 +46,7 @@ import {
startFileTreeWatch,
stopFileTreeWatch,
} from "@/lib/tauri"
import { disposeTauriListener } from "@/lib/tauri-listener"
import type { FileTreeChangedEvent, GitStatusEntry } from "@/lib/types"
import {
AlertDialog,
@@ -630,9 +631,7 @@ export function GitChangesTab() {
clearTimeout(refreshTimerRef.current)
refreshTimerRef.current = null
}
if (unlisten) {
unlisten()
}
disposeTauriListener(unlisten, "AuxPanelGitChanges.fileTreeChanged")
void stopFileTreeWatch(rootPath)
}
}, [fetchChanges, folder?.path, isChangesTabActive])

View File

@@ -80,6 +80,7 @@ import {
openCommitWindow,
setFolderParentBranch,
} from "@/lib/tauri"
import { disposeTauriListener } from "@/lib/tauri-listener"
import type { GitBranchList } from "@/lib/types"
import { toast } from "sonner"
import { useFolderContext } from "@/contexts/folder-context"
@@ -161,7 +162,7 @@ export function BranchDropdown({
})
return () => {
if (unlisten) unlisten()
disposeTauriListener(unlisten, "BranchDropdown.gitCommitSucceeded")
}
}, [folder, onBranchChange, t])

View File

@@ -20,6 +20,7 @@ import {
terminalKill,
terminalList,
} from "@/lib/tauri"
import { disposeTauriListener } from "@/lib/tauri-listener"
import type { FolderCommand, TerminalEvent } from "@/lib/types"
import { CommandManageDialog } from "./command-manage-dialog"
@@ -66,7 +67,7 @@ export function CommandDropdown() {
const clearRunningByTerminalId = useCallback((terminalId: string) => {
const unlisten = exitUnlistenersRef.current.get(terminalId)
if (unlisten) {
unlisten()
disposeTauriListener(unlisten, "CommandDropdown.terminalExit")
exitUnlistenersRef.current.delete(terminalId)
}
@@ -85,7 +86,7 @@ export function CommandDropdown() {
const clearAllRunningStates = useCallback(() => {
for (const unlisten of exitUnlistenersRef.current.values()) {
unlisten()
disposeTauriListener(unlisten, "CommandDropdown.terminalExit")
}
exitUnlistenersRef.current.clear()
setRunningCommandTerminals({})

View File

@@ -4,6 +4,7 @@ import { useEffect, useState } from "react"
import { getCurrentWindow } from "@tauri-apps/api/window"
import { useTranslations } from "next-intl"
import { usePlatform } from "@/hooks/use-platform"
import { disposeTauriListener } from "@/lib/tauri-listener"
import { cn } from "@/lib/utils"
export function WindowControls() {
@@ -59,7 +60,7 @@ export function WindowControls() {
if (resizeFrame !== null) {
window.cancelAnimationFrame(resizeFrame)
}
unlistenResize?.()
disposeTauriListener(unlistenResize, "WindowControls.resize")
}
}, [isWindows])