mirror of
https://github.com/dream-pep/koring-launcher.git
synced 2026-09-12 05:45:18 +08:00
152 lines
6.1 KiB
JavaScript
152 lines
6.1 KiB
JavaScript
"use strict";
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.registerInstanceHandlers = registerInstanceHandlers;
|
|
const electron_1 = __importDefault(require("electron"));
|
|
const instance_1 = require("../core/instance");
|
|
const { ipcMain } = electron_1.default;
|
|
function registerInstanceHandlers(win) {
|
|
ipcMain.handle('instance:create', async (_event, payload) => {
|
|
try {
|
|
const data = await (0, instance_1.createInstance)(payload.name, payload.gamePath, payload.runtime, {
|
|
author: payload.author,
|
|
description: payload.description,
|
|
java: payload.java,
|
|
minMemory: payload.minMemory,
|
|
maxMemory: payload.maxMemory,
|
|
vmOptions: payload.vmOptions,
|
|
mcOptions: payload.mcOptions,
|
|
});
|
|
return { success: true, data, error: null };
|
|
}
|
|
catch (e) {
|
|
return { success: false, data: null, error: String(e) };
|
|
}
|
|
});
|
|
ipcMain.handle('instance:list', async (_event, payload) => {
|
|
try {
|
|
const data = await (0, instance_1.listInstances)(payload.gamePath);
|
|
return { success: true, data, error: null };
|
|
}
|
|
catch (e) {
|
|
return { success: false, data: null, error: String(e) };
|
|
}
|
|
});
|
|
ipcMain.handle('instance:info', async (_event, payload) => {
|
|
try {
|
|
const data = await (0, instance_1.getInstanceInfo)(payload.name, payload.gamePath);
|
|
return { success: true, data, error: null };
|
|
}
|
|
catch (e) {
|
|
return { success: false, data: null, error: String(e) };
|
|
}
|
|
});
|
|
ipcMain.handle('instance:delete', async (_event, payload) => {
|
|
try {
|
|
const data = await (0, instance_1.deleteInstance)(payload.name, payload.gamePath);
|
|
return { success: true, data, error: null };
|
|
}
|
|
catch (e) {
|
|
return { success: false, data: null, error: String(e) };
|
|
}
|
|
});
|
|
ipcMain.handle('instance:update', async (_event, payload) => {
|
|
try {
|
|
const data = await (0, instance_1.updateInstance)(payload.name, payload.gamePath, payload.patch);
|
|
return { success: true, data, error: null };
|
|
}
|
|
catch (e) {
|
|
return { success: false, data: null, error: String(e) };
|
|
}
|
|
});
|
|
ipcMain.handle('instance:install', async (_event, payload) => {
|
|
try {
|
|
const requestId = `install-${Date.now()}`;
|
|
(0, instance_1.installInstanceGame)(payload.name, payload.gamePath, {
|
|
onProgress: (progress) => {
|
|
win.mainWindow?.webContents.send('instance:progress', { requestId, ...progress });
|
|
},
|
|
}).then((data) => {
|
|
win.mainWindow?.webContents.send('instance:install-complete', { requestId, data });
|
|
}).catch((err) => {
|
|
win.mainWindow?.webContents.send('instance:install-error', { requestId, error: String(err) });
|
|
});
|
|
return { success: true, data: { requestId }, error: null };
|
|
}
|
|
catch (e) {
|
|
return { success: false, data: null, error: String(e) };
|
|
}
|
|
});
|
|
ipcMain.handle('instance:launch', async (_event, payload) => {
|
|
try {
|
|
const requestId = `launch-${Date.now()}`;
|
|
(0, instance_1.launchInstance)(payload.name, payload.gamePath, {
|
|
username: payload.username,
|
|
uuid: payload.uuid,
|
|
accessToken: payload.accessToken,
|
|
javaPath: payload.javaPath,
|
|
server: payload.server,
|
|
onEvent: (event) => {
|
|
win.mainWindow?.webContents.send('instance:launch-event', { requestId, ...event });
|
|
},
|
|
}).then((data) => {
|
|
win.mainWindow?.webContents.send('instance:launch-complete', { requestId, data });
|
|
}).catch((err) => {
|
|
win.mainWindow?.webContents.send('instance:launch-error', { requestId, error: String(err) });
|
|
});
|
|
return { success: true, data: { requestId }, error: null };
|
|
}
|
|
catch (e) {
|
|
return { success: false, data: null, error: String(e) };
|
|
}
|
|
});
|
|
ipcMain.handle('instance:diagnose', async (_event, payload) => {
|
|
try {
|
|
const data = await (0, instance_1.diagnoseInstance)(payload.name, payload.gamePath);
|
|
return { success: true, data, error: null };
|
|
}
|
|
catch (e) {
|
|
return { success: false, data: null, error: String(e) };
|
|
}
|
|
});
|
|
// Version list APIs
|
|
ipcMain.handle('instance:version-list', async (_event, payload) => {
|
|
try {
|
|
const data = await (0, instance_1.getMinecraftVersionList)(payload.type);
|
|
return { success: true, data, error: null };
|
|
}
|
|
catch (e) {
|
|
return { success: false, data: null, error: String(e) };
|
|
}
|
|
});
|
|
ipcMain.handle('instance:forge-version-list', async (_event, payload) => {
|
|
try {
|
|
const data = await (0, instance_1.getForgeVersionList)(payload.mcVersion);
|
|
return { success: true, data, error: null };
|
|
}
|
|
catch (e) {
|
|
return { success: false, data: null, error: String(e) };
|
|
}
|
|
});
|
|
ipcMain.handle('instance:fabric-version-list', async (_event, payload) => {
|
|
try {
|
|
const data = await (0, instance_1.getFabricVersionList)(payload.mcVersion);
|
|
return { success: true, data, error: null };
|
|
}
|
|
catch (e) {
|
|
return { success: false, data: null, error: String(e) };
|
|
}
|
|
});
|
|
ipcMain.handle('instance:quilt-version-list', async (_event, payload) => {
|
|
try {
|
|
const data = await (0, instance_1.getQuiltVersionList)(payload.mcVersion);
|
|
return { success: true, data, error: null };
|
|
}
|
|
catch (e) {
|
|
return { success: false, data: null, error: String(e) };
|
|
}
|
|
});
|
|
}
|