feat: improve Minecraft version handling
This commit is contained in:
@ -805,8 +805,11 @@ export function initMinecraftHandlers() {
|
||||
}
|
||||
});
|
||||
|
||||
// Добавьте в функцию initMinecraftHandlers новый обработчик
|
||||
ipcMain.handle('get-available-versions', async (event) => {
|
||||
// ПРОБЛЕМА: У вас два обработчика для одного и того же канала 'get-installed-versions'
|
||||
// РЕШЕНИЕ: Объединим логику в один обработчик, а из второго обработчика вызовем функцию getInstalledVersions
|
||||
|
||||
// Сначала создаем общую функцию для получения установленных версий
|
||||
function getInstalledVersions() {
|
||||
try {
|
||||
const appPath = path.dirname(app.getPath('exe'));
|
||||
const minecraftDir = path.join(appPath, '.minecraft');
|
||||
@ -846,9 +849,59 @@ export function initMinecraftHandlers() {
|
||||
}
|
||||
|
||||
return { success: true, versions };
|
||||
} catch (error) {
|
||||
console.error('Ошибка при получении установленных версий:', error);
|
||||
return { success: false, error: error.message, versions: [] };
|
||||
}
|
||||
}
|
||||
|
||||
// Регистрируем обработчик для get-installed-versions
|
||||
ipcMain.handle('get-installed-versions', async () => {
|
||||
return getInstalledVersions();
|
||||
});
|
||||
|
||||
// Обработчик get-available-versions использует функцию getInstalledVersions
|
||||
ipcMain.handle('get-available-versions', async (event, { gistUrl }) => {
|
||||
try {
|
||||
// Используем URL из параметров или значение по умолчанию
|
||||
const url =
|
||||
gistUrl ||
|
||||
'https://gist.githubusercontent.com/DIKER0K/06cd12fb3a4d08b1f0f8c763a7d05e06/raw/versions.json';
|
||||
|
||||
const response = await fetch(url);
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(
|
||||
`Failed to fetch versions from Gist: ${response.status} ${response.statusText}`,
|
||||
);
|
||||
}
|
||||
|
||||
const versions = await response.json();
|
||||
|
||||
// Получаем уже установленные версии
|
||||
const installedResult = getInstalledVersions();
|
||||
const installedVersions = installedResult.success
|
||||
? installedResult.versions
|
||||
: [];
|
||||
|
||||
// Добавляем флаг installed к каждой версии
|
||||
const versionsWithInstallStatus = versions.map((version: any) => {
|
||||
const isInstalled = installedVersions.some(
|
||||
(installed: any) => installed.id === version.id,
|
||||
);
|
||||
return {
|
||||
...version,
|
||||
installed: isInstalled,
|
||||
};
|
||||
});
|
||||
|
||||
return {
|
||||
success: true,
|
||||
versions: versionsWithInstallStatus,
|
||||
};
|
||||
} catch (error) {
|
||||
console.error('Ошибка при получении доступных версий:', error);
|
||||
return { success: false, error: error.message };
|
||||
return { success: false, error: error.message, versions: [] };
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user