MCPcopy Create free account
hub / github.com/esengine/esengine / useProjectActions

Function useProjectActions

packages/editor-app/src/hooks/useProjectActions.ts:31–314  ·  view source on GitHub ↗
({
    pluginLoader,
    pluginManagerRef,
    projectServiceRef,
    showToast,
}: UseProjectActionsParams)

Source from the content-addressed store, hash-verified

29}
30
31export function useProjectActions({
32 pluginLoader,
33 pluginManagerRef,
34 projectServiceRef,
35 showToast,
36}: UseProjectActionsParams) {
37 const { t } = useLocale();
38
39 const {
40 setProjectLoaded,
41 setCurrentProjectPath,
42 setAvailableScenes,
43 setIsLoading,
44 setStatus,
45 setShowProjectWizard,
46 } = useEditorStore();
47
48 const { setErrorDialog, setConfirmDialog } = useDialogStore();
49
50 /**
51 * @zh 打开最近项目
52 * @en Open recent project
53 */
54 const handleOpenRecentProject = useCallback(async (projectPath: string) => {
55 try {
56 setIsLoading(true, t('loading.step1'));
57
58 const projectService = Core.services.resolve(ProjectService);
59 if (!projectService) {
60 console.error('Required services not available');
61 setIsLoading(false);
62 return;
63 }
64
65 projectServiceRef.current = projectService;
66 await projectService.openProject(projectPath);
67
68 await TauriAPI.setProjectBasePath(projectPath);
69
70 try {
71 await TauriAPI.updateProjectTsconfig(projectPath);
72 } catch (e) {
73 console.warn('[useProjectActions] Failed to update project tsconfig:', e);
74 }
75
76 const settings = SettingsService.getInstance();
77 settings.addRecentProject(projectPath);
78
79 setCurrentProjectPath(projectPath);
80
81 try {
82 const sceneFiles = await TauriAPI.scanDirectory(`${projectPath}/scenes`, '*.ecs');
83 const sceneNames = sceneFiles.map(f => `scenes/${f.split(/[\\/]/).pop()}`);
84 setAvailableScenes(sceneNames);
85 } catch (e) {
86 console.warn('[useProjectActions] Failed to scan scenes:', e);
87 }
88

Callers

nothing calls this directly

Calls 15

useLocaleFunction · 0.90
handleOpenRecentProjectFunction · 0.85
setProjectBasePathMethod · 0.80
updateProjectTsconfigMethod · 0.80
addRecentProjectMethod · 0.80
scanDirectoryMethod · 0.80
popMethod · 0.80
waitForInitializationMethod · 0.80
getPluginSettingsMethod · 0.80
getUIDesignResolutionMethod · 0.80
newSceneMethod · 0.80

Tested by

no test coverage detected