1- import type { NavigateFn } from "@tanstack/react-router " ;
2- import { useState } from "react " ;
1+ import { api , type WorkshopProject } from "@/lib/tauri " ;
2+ import { useWorkshopDialogsStore } from "@/stores " ;
33
4- import { api , type PackResult , type WorkshopProject } from "@/lib/tauri " ;
4+ import { useTestProjects } from "./useTestProject " ;
55
6- import { useDeleteProject } from "./useDeleteProject" ;
7- import { usePackProject } from "./usePackProject" ;
8- import { useValidateProject } from "./useValidateProject" ;
6+ export function useProjectActions ( project : WorkshopProject | undefined ) {
7+ const testProjects = useTestProjects ( ) ;
8+ const openPackDialog = useWorkshopDialogsStore ( ( s ) => s . openPackDialog ) ;
9+ const openDeleteDialog = useWorkshopDialogsStore ( ( s ) => s . openDeleteDialog ) ;
910
10- export function useProjectActions ( project : WorkshopProject | undefined , navigate : NavigateFn ) {
11- const [ packDialogOpen , setPackDialogOpen ] = useState ( false ) ;
12- const [ deleteDialogOpen , setDeleteDialogOpen ] = useState ( false ) ;
13- const [ packResult , setPackResult ] = useState < PackResult | null > ( null ) ;
14-
15- const deleteProject = useDeleteProject ( ) ;
16- const packProject = usePackProject ( ) ;
17- const { data : validation , isLoading : validationLoading } = useValidateProject (
18- project ?. path ?? "" ,
19- packDialogOpen ,
20- ) ;
21-
22- function handlePack ( format : "modpkg" | "fantome" ) {
11+ function handleTestProject ( ) {
2312 if ( ! project ) return ;
24- packProject . mutate (
25- { projectPath : project . path , format } ,
26- {
27- onSuccess : setPackResult ,
28- onError : ( err ) => console . error ( "Failed to pack project:" , err . message ) ,
29- } ,
13+ testProjects . mutate (
14+ { projects : [ { path : project . path , displayName : project . displayName } ] } ,
15+ { onError : ( err ) => console . error ( "Failed to test project:" , err . message ) } ,
3016 ) ;
3117 }
3218
3319 function handleOpenPackDialog ( ) {
34- setPackResult ( null ) ;
35- setPackDialogOpen ( true ) ;
36- }
37-
38- function handleClosePackDialog ( ) {
39- setPackDialogOpen ( false ) ;
40- setPackResult ( null ) ;
41- }
42-
43- function handleDeleteProject ( ) {
4420 if ( ! project ) return ;
45- deleteProject . mutate ( project . path , {
46- onSuccess : ( ) => {
47- navigate ( { to : "/workshop" } ) ;
48- } ,
49- onError : ( err ) => console . error ( "Failed to delete project:" , err . message ) ,
50- } ) ;
51- }
52-
53- function openDeleteDialog ( ) {
54- setDeleteDialogOpen ( true ) ;
21+ openPackDialog ( project ) ;
5522 }
5623
57- function closeDeleteDialog ( ) {
58- setDeleteDialogOpen ( false ) ;
24+ function handleOpenDeleteDialog ( ) {
25+ if ( ! project ) return ;
26+ openDeleteDialog ( project ) ;
5927 }
6028
6129 async function handleOpenLocation ( ) {
@@ -68,19 +36,10 @@ export function useProjectActions(project: WorkshopProject | undefined, navigate
6836 }
6937
7038 return {
71- packDialogOpen,
72- packResult,
73- deleteDialogOpen,
74- validation : validation ?? null ,
75- validationLoading,
76- isPacking : packProject . isPending ,
77- isDeleting : deleteProject . isPending ,
78- handlePack,
39+ isTesting : testProjects . isPending ,
40+ handleTestProject,
7941 handleOpenPackDialog,
80- handleClosePackDialog,
81- handleDeleteProject,
42+ handleOpenDeleteDialog,
8243 handleOpenLocation,
83- openDeleteDialog,
84- closeDeleteDialog,
8544 } ;
8645}
0 commit comments