Skip to content

Commit 806cf98

Browse files
committed
refactor: unify type definitions
1 parent 665857c commit 806cf98

File tree

10 files changed

+83
-26
lines changed

10 files changed

+83
-26
lines changed

src-tauri/src/overlay/mod.rs

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,23 @@ use camino::Utf8PathBuf;
88
use std::path::PathBuf;
99
use tauri::Emitter;
1010

11+
#[derive(Clone, serde::Serialize, ts_rs::TS)]
12+
#[ts(export)]
13+
#[serde(rename_all = "camelCase")]
14+
pub enum OverlayStage {
15+
Indexing,
16+
Collecting,
17+
Patching,
18+
Strings,
19+
Complete,
20+
}
21+
1122
/// Progress event emitted during overlay building.
1223
#[derive(Clone, serde::Serialize, ts_rs::TS)]
1324
#[ts(export)]
1425
#[serde(rename_all = "camelCase")]
1526
pub struct OverlayProgress {
16-
pub stage: String,
27+
pub stage: OverlayStage,
1728
pub current_file: Option<String>,
1829
pub current: u32,
1930
pub total: u32,
@@ -72,17 +83,17 @@ pub fn ensure_overlay(library: &ModLibrary, settings: &Settings) -> AppResult<Pa
7283
.with_progress(move |progress| {
7384
// Convert ltk_overlay progress to our format
7485
let stage = match progress.stage {
75-
ltk_overlay::OverlayStage::Indexing => "indexing",
76-
ltk_overlay::OverlayStage::CollectingOverrides => "collecting",
77-
ltk_overlay::OverlayStage::PatchingWad => "patching",
78-
ltk_overlay::OverlayStage::ApplyingStringOverrides => "strings",
79-
ltk_overlay::OverlayStage::Complete => "complete",
86+
ltk_overlay::OverlayStage::Indexing => OverlayStage::Indexing,
87+
ltk_overlay::OverlayStage::CollectingOverrides => OverlayStage::Collecting,
88+
ltk_overlay::OverlayStage::PatchingWad => OverlayStage::Patching,
89+
ltk_overlay::OverlayStage::ApplyingStringOverrides => OverlayStage::Strings,
90+
ltk_overlay::OverlayStage::Complete => OverlayStage::Complete,
8091
};
8192

8293
let _ = app_handle_clone.emit(
8394
"overlay-progress",
8495
OverlayProgress {
85-
stage: stage.to_string(),
96+
stage,
8697
current_file: progress.current_file,
8798
current: progress.current,
8899
total: progress.total,

src-tauri/src/workshop/mod.rs

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -113,12 +113,22 @@ pub struct ImportFantomeArgs {
113113
pub display_name: String,
114114
}
115115

116+
#[derive(Debug, Clone, Serialize, TS)]
117+
#[ts(export)]
118+
#[serde(rename_all = "camelCase")]
119+
pub enum FantomeImportStage {
120+
Extracting,
121+
Finalizing,
122+
Complete,
123+
Error,
124+
}
125+
116126
/// Progress event emitted during fantome import.
117127
#[derive(Debug, Clone, Serialize, TS)]
118128
#[ts(export)]
119129
#[serde(rename_all = "camelCase")]
120130
pub struct FantomeImportProgress {
121-
pub stage: String,
131+
pub stage: FantomeImportStage,
122132
pub current_wad: Option<String>,
123133
pub current: u32,
124134
pub total: u32,
@@ -134,12 +144,22 @@ pub struct ImportGitRepoArgs {
134144
pub branch: Option<String>,
135145
}
136146

147+
#[derive(Debug, Clone, Serialize, TS)]
148+
#[ts(export)]
149+
#[serde(rename_all = "camelCase")]
150+
pub enum GitImportStage {
151+
Downloading,
152+
Extracting,
153+
Complete,
154+
Error,
155+
}
156+
137157
/// Progress event emitted during git repo import.
138158
#[derive(Debug, Clone, Serialize, TS)]
139159
#[ts(export)]
140160
#[serde(rename_all = "camelCase")]
141161
pub struct GitImportProgress {
142-
pub stage: String,
162+
pub stage: GitImportStage,
143163
pub message: Option<String>,
144164
}
145165

src-tauri/src/workshop/projects.rs

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
use super::{
22
find_config_file, is_valid_project_name, load_mod_project, load_workshop_project,
3-
CreateProjectArgs, FantomeImportProgress, FantomePeekResult, GitImportProgress,
4-
ImportFantomeArgs, ImportGitRepoArgs, SaveProjectConfigArgs, Workshop, WorkshopProject,
3+
CreateProjectArgs, FantomeImportProgress, FantomeImportStage, FantomePeekResult,
4+
GitImportProgress, GitImportStage, ImportFantomeArgs, ImportGitRepoArgs, SaveProjectConfigArgs,
5+
Workshop, WorkshopProject,
56
};
67
use crate::error::{AppError, AppResult};
78
use crate::state::Settings;
@@ -274,11 +275,21 @@ impl Workshop {
274275
fs::create_dir_all(&base_dir)?;
275276

276277
for (idx, wad_name) in wad_names.iter().enumerate() {
277-
self.emit_fantome_progress("extracting", Some(wad_name), idx as u32, total_wads);
278+
self.emit_fantome_progress(
279+
FantomeImportStage::Extracting,
280+
Some(wad_name),
281+
idx as u32,
282+
total_wads,
283+
);
278284
extract_fantome_wad(&mut archive, wad_name, &base_dir)?;
279285
}
280286

281-
self.emit_fantome_progress("finalizing", None, total_wads, total_wads);
287+
self.emit_fantome_progress(
288+
FantomeImportStage::Finalizing,
289+
None,
290+
total_wads,
291+
total_wads,
292+
);
282293

283294
let readme_path = project_dir.join("README.md");
284295
extract_fantome_file(&mut archive, "meta/readme.md", &readme_path);
@@ -336,13 +347,13 @@ impl Workshop {
336347
let config_path = project_dir.join("mod.config.json");
337348
fs::write(&config_path, serde_json::to_string_pretty(&mod_project)?)?;
338349

339-
self.emit_fantome_progress("complete", None, total_wads, total_wads);
350+
self.emit_fantome_progress(FantomeImportStage::Complete, None, total_wads, total_wads);
340351

341352
load_workshop_project(&project_dir)
342353
})();
343354

344355
if result.is_err() {
345-
self.emit_fantome_progress("error", None, 0, total_wads);
356+
self.emit_fantome_progress(FantomeImportStage::Error, None, 0, total_wads);
346357
let _ = fs::remove_dir_all(&project_dir);
347358
}
348359

@@ -351,15 +362,15 @@ impl Workshop {
351362

352363
fn emit_fantome_progress(
353364
&self,
354-
stage: &str,
365+
stage: FantomeImportStage,
355366
current_wad: Option<&str>,
356367
current: u32,
357368
total: u32,
358369
) {
359370
let _ = self.app_handle.emit(
360371
"fantome-import-progress",
361372
FantomeImportProgress {
362-
stage: stage.to_string(),
373+
stage,
363374
current_wad: current_wad.map(String::from),
364375
current,
365376
total,
@@ -480,7 +491,7 @@ impl Workshop {
480491
owner, repo, branch
481492
);
482493

483-
self.emit_git_progress("downloading", None);
494+
self.emit_git_progress(GitImportStage::Downloading, None);
484495

485496
let response = reqwest::blocking::get(&tarball_url)
486497
.map_err(|e| AppError::Other(format!("Failed to download repository: {}", e)))?;
@@ -496,7 +507,7 @@ impl Workshop {
496507
.bytes()
497508
.map_err(|e| AppError::Other(format!("Failed to read response: {}", e)))?;
498509

499-
self.emit_git_progress("extracting", None);
510+
self.emit_git_progress(GitImportStage::Extracting, None);
500511

501512
let temp_dir = workshop_path.join(format!(".git-import-{}", uuid::Uuid::new_v4()));
502513
fs::create_dir_all(&temp_dir)?;
@@ -543,12 +554,12 @@ impl Workshop {
543554

544555
fs::rename(&extracted_dir, &project_dir)?;
545556

546-
self.emit_git_progress("complete", None);
557+
self.emit_git_progress(GitImportStage::Complete, None);
547558
load_workshop_project(&project_dir)
548559
})();
549560

550561
if result.is_err() {
551-
self.emit_git_progress("error", None);
562+
self.emit_git_progress(GitImportStage::Error, None);
552563
}
553564

554565
if temp_dir.exists() {
@@ -557,11 +568,11 @@ impl Workshop {
557568
result
558569
}
559570

560-
fn emit_git_progress(&self, stage: &str, message: Option<&str>) {
571+
fn emit_git_progress(&self, stage: GitImportStage, message: Option<&str>) {
561572
let _ = self.app_handle.emit(
562573
"git-import-progress",
563574
GitImportProgress {
564-
stage: stage.to_string(),
575+
stage,
565576
message: message.map(String::from),
566577
},
567578
);

src/lib/bindings/FantomeImportProgress.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
2+
import type { FantomeImportStage } from "./FantomeImportStage";
23

34
/**
45
* Progress event emitted during fantome import.
56
*/
67
export type FantomeImportProgress = {
7-
stage: string;
8+
stage: FantomeImportStage;
89
currentWad: string | null;
910
current: number;
1011
total: number;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
2+
3+
export type FantomeImportStage = "extracting" | "finalizing" | "complete" | "error";
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
2+
import type { GitImportStage } from "./GitImportStage";
23

34
/**
45
* Progress event emitted during git repo import.
56
*/
6-
export type GitImportProgress = { stage: string; message: string | null };
7+
export type GitImportProgress = { stage: GitImportStage; message: string | null };

src/lib/bindings/GitImportStage.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
2+
3+
export type GitImportStage = "downloading" | "extracting" | "complete" | "error";

src/lib/bindings/OverlayProgress.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
2+
import type { OverlayStage } from "./OverlayStage";
23

34
/**
45
* Progress event emitted during overlay building.
56
*/
67
export type OverlayProgress = {
7-
stage: string;
8+
stage: OverlayStage;
89
currentFile: string | null;
910
current: number;
1011
total: number;

src/lib/bindings/OverlayStage.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
// This file was generated by [ts-rs](https://github.com/Aleph-Alpha/ts-rs). Do not edit this file manually.
2+
3+
export type OverlayStage = "indexing" | "collecting" | "patching" | "strings" | "complete";

src/lib/bindings/index.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@ export type { CreateProjectArgs } from "./CreateProjectArgs";
77
export type { CslolModInfo } from "./CslolModInfo";
88
export type { ErrorCode } from "./ErrorCode";
99
export type { FantomeImportProgress } from "./FantomeImportProgress";
10+
export type { FantomeImportStage } from "./FantomeImportStage";
1011
export type { FantomePeekResult } from "./FantomePeekResult";
1112
export type { GitImportProgress } from "./GitImportProgress";
13+
export type { GitImportStage } from "./GitImportStage";
1214
export type { ImportFantomeArgs } from "./ImportFantomeArgs";
1315
export type { ImportGitRepoArgs } from "./ImportGitRepoArgs";
1416
export type { InstalledMod } from "./InstalledMod";
@@ -19,6 +21,7 @@ export type { MigrationProgress } from "./MigrationProgress";
1921
export type { ModLayer } from "./ModLayer";
2022
export type { ModpkgInfo } from "./ModpkgInfo";
2123
export type { OverlayProgress } from "./OverlayProgress";
24+
export type { OverlayStage } from "./OverlayStage";
2225
export type { PackFormat } from "./PackFormat";
2326
export type { PackProjectArgs } from "./PackProjectArgs";
2427
export type { PackResult } from "./PackResult";

0 commit comments

Comments
 (0)