aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/ui/src/lib/modLoaderApi.ts
blob: 75f404af179bb33de3c2fd2712e2d6f08fa8875a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
/**
 * Mod Loader API service for Fabric and Forge integration.
 * This module provides functions to interact with the Tauri backend
 * for mod loader version management.
 */

import { invoke } from "@tauri-apps/api/core";
import type {
  FabricGameVersion,
  FabricLoaderVersion,
  FabricLoaderEntry,
  InstalledFabricVersion,
  ForgeVersion,
  InstalledForgeVersion,
} from "../types";

// ==================== Fabric API ====================

/**
 * Get all Minecraft versions supported by Fabric.
 */
export async function getFabricGameVersions(): Promise<FabricGameVersion[]> {
  return invoke<FabricGameVersion[]>("get_fabric_game_versions");
}

/**
 * Get all available Fabric loader versions.
 */
export async function getFabricLoaderVersions(): Promise<FabricLoaderVersion[]> {
  return invoke<FabricLoaderVersion[]>("get_fabric_loader_versions");
}

/**
 * Get Fabric loaders available for a specific Minecraft version.
 */
export async function getFabricLoadersForVersion(
  gameVersion: string,
): Promise<FabricLoaderEntry[]> {
  return invoke<FabricLoaderEntry[]>("get_fabric_loaders_for_version", {
    gameVersion,
  });
}

/**
 * Install Fabric loader for a specific Minecraft version.
 */
export async function installFabric(
  gameVersion: string,
  loaderVersion: string,
): Promise<InstalledFabricVersion> {
  return invoke<InstalledFabricVersion>("install_fabric", {
    gameVersion,
    loaderVersion,
  });
}

/**
 * List all installed Fabric versions.
 */
export async function listInstalledFabricVersions(): Promise<string[]> {
  return invoke<string[]>("list_installed_fabric_versions");
}

/**
 * Check if Fabric is installed for a specific version combination.
 */
export async function isFabricInstalled(
  gameVersion: string,
  loaderVersion: string,
): Promise<boolean> {
  return invoke<boolean>("is_fabric_installed", {
    gameVersion,
    loaderVersion,
  });
}

// ==================== Forge API ====================

/**
 * Get all Minecraft versions supported by Forge.
 */
export async function getForgeGameVersions(): Promise<string[]> {
  return invoke<string[]>("get_forge_game_versions");
}

/**
 * Get Forge versions available for a specific Minecraft version.
 */
export async function getForgeVersionsForGame(gameVersion: string): Promise<ForgeVersion[]> {
  return invoke<ForgeVersion[]>("get_forge_versions_for_game", {
    gameVersion,
  });
}

/**
 * Install Forge for a specific Minecraft version.
 */
export async function installForge(
  gameVersion: string,
  forgeVersion: string,
): Promise<InstalledForgeVersion> {
  return invoke<InstalledForgeVersion>("install_forge", {
    gameVersion,
    forgeVersion,
  });
}