From a3aa1915d47837bbc6a4e3cf2d82f3c52335acaf Mon Sep 17 00:00:00 2001 From: Lncvrt Date: Mon, 3 Nov 2025 11:20:07 -0700 Subject: [PATCH] 1.1.2 --- bun.lock | 8 +- package.json | 2 +- src-tauri/Cargo.toml | 3 +- src-tauri/src/lib.rs | 102 +++++++++--------- src-tauri/tauri.conf.json | 2 +- src-tauri/tauri.linux.conf.json | 2 +- src-tauri/tauri.macos.conf.json | 2 +- src-tauri/tauri.windows.conf.json | 2 +- src/app/game/page.tsx | 38 +------ src/app/layout.tsx | 168 ++++++++---------------------- src/app/settings/page.tsx | 36 ------- src/app/types/DownloadProgress.ts | 4 +- src/app/types/GameVersion.ts | 7 +- src/app/types/SettingsType.ts | 4 +- 14 files changed, 111 insertions(+), 269 deletions(-) diff --git a/bun.lock b/bun.lock index fdd4625..a3d6c92 100644 --- a/bun.lock +++ b/bun.lock @@ -71,9 +71,9 @@ "@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], - "@emnapi/core": ["@emnapi/core@1.6.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" } }, "sha512-zq/ay+9fNIJJtJiZxdTnXS20PllcYMX3OE23ESc4HK/bdYu3cOWYVhsOhVnXALfU/uqJIxn5NBPd9z4v+SfoSg=="], + "@emnapi/core": ["@emnapi/core@1.7.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" } }, "sha512-pJdKGq/1iquWYtv1RRSljZklxHCOCAJFJrImO5ZLKPJVJlVUcs8yFwNQlqS0Lo8xT1VAXXTCZocF9n26FWEKsw=="], - "@emnapi/runtime": ["@emnapi/runtime@1.6.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA=="], + "@emnapi/runtime": ["@emnapi/runtime@1.7.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-oAYoQnCYaQZKVS53Fq23ceWMRxq5EhQsE0x0RdQ55jT7wagMu5k+fS39v1fiSLrtrLQlXwVINenqhLMtTrV/1Q=="], "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], @@ -927,9 +927,9 @@ "@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], - "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.6.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" }, "bundled": true }, "sha512-zq/ay+9fNIJJtJiZxdTnXS20PllcYMX3OE23ESc4HK/bdYu3cOWYVhsOhVnXALfU/uqJIxn5NBPd9z4v+SfoSg=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.7.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.1.0", "tslib": "^2.4.0" }, "bundled": true }, "sha512-pJdKGq/1iquWYtv1RRSljZklxHCOCAJFJrImO5ZLKPJVJlVUcs8yFwNQlqS0Lo8xT1VAXXTCZocF9n26FWEKsw=="], - "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.6.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-obtUmAHTMjll499P+D9A3axeJFlhdjOWdKUNs/U6QIGT7V5RjcUW1xToAzjvmgTSQhDbYn/NwfTRoJcQ2rNBxA=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.7.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-oAYoQnCYaQZKVS53Fq23ceWMRxq5EhQsE0x0RdQ55jT7wagMu5k+fS39v1fiSLrtrLQlXwVINenqhLMtTrV/1Q=="], "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.1.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ=="], diff --git a/package.json b/package.json index 9e2a223..c848512 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "lncvrt-games-launcher", "private": true, - "version": "1.1.1", + "version": "1.1.2", "type": "module", "scripts": { "dev": "next dev", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index e2e4e1b..5b51959 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "lncvrt-games-launcher" -version = "1.1.1" +version = "1.1.2" authors = ["Lncvrt"] edition = "2024" @@ -27,6 +27,7 @@ libc = "0.2.177" tauri-plugin-dialog = "2.4.2" tauri-plugin-notification = "2.3.3" sysinfo = "0.37.2" +sha2 = "0.10.9" [target.'cfg(target_os = "linux")'.dependencies] shlex = "1.3.0" diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index e3776f4..b5f97ad 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -1,4 +1,5 @@ use futures_util::stream::StreamExt; +use sha2::{Digest, Sha512}; use std::{ fs::{File, create_dir_all}, io::{BufReader, copy}, @@ -62,7 +63,13 @@ async fn unzip_to_dir(zip_path: PathBuf, out_dir: PathBuf) -> String { #[allow(unused_variables)] #[tauri::command] -async fn download(app: AppHandle, url: String, name: String, executable: String) -> String { +async fn download( + app: AppHandle, + url: String, + name: String, + executable: String, + hash: String, +) -> String { let client = reqwest::Client::new(); let resp = match client.get(&url).send().await { Ok(r) => r, @@ -90,7 +97,9 @@ async fn download(app: AppHandle, url: String, name: String, executable: String) let _ = tokio::fs::remove_dir_all(&game_path.join(name.clone())).await; } let _ = tokio::fs::create_dir_all(&game_path.join(&name)).await; - let mut file = tokio::fs::File::create(download_part_path).await.unwrap(); + let mut file = tokio::fs::File::create(download_part_path.clone()) + .await + .unwrap(); while let Ok(Some(chunk_result)) = timeout(Duration::from_secs(5), stream.next()).await { let chunk = match chunk_result { @@ -120,12 +129,23 @@ async fn download(app: AppHandle, url: String, name: String, executable: String) return "-1".to_string(); } - tokio::fs::rename( - downloads_path.join(format!("{}.part", name)), - download_zip_path.clone(), - ) - .await - .unwrap(); + app.emit("download-hash-checking", format!("{}", &name)) + .unwrap(); + let mut hasher = Sha512::new(); + hasher.update(&tokio::fs::read(download_part_path.clone()).await.unwrap()); + let download_hash = format!("{:x}", hasher.finalize()); + if hash != download_hash { + tokio::fs::remove_file(download_part_path.clone()) + .await + .unwrap(); + return "-1".to_string(); + } + app.emit("download-finishing", format!("{}", &name)) + .unwrap(); + + tokio::fs::rename(download_part_path.clone(), download_zip_path.clone()) + .await + .unwrap(); let unzip_res = unzip_to_dir(download_zip_path.clone(), game_path.join(&name)).await; tokio::fs::remove_file(download_zip_path.clone()) .await @@ -167,7 +187,7 @@ async fn download(app: AppHandle, url: String, name: String, executable: String) #[allow(unused_variables)] #[tauri::command] -fn launch_game(app: AppHandle, name: String, executable: String, wine: bool, wine_command: String) { +fn launch_game(app: AppHandle, name: String, executable: String) { let game_folder = app .path() .app_local_data_dir() @@ -183,54 +203,26 @@ fn launch_game(app: AppHandle, name: String, executable: String, wine: bool, win .show(|_| {}); return; } - let result = if wine && platform() == "linux" { - #[cfg(target_os = "linux")] - { - let wine_cmd_to_use = - wine_command.replace("%path%", &format!("\"{}\"", game_path.to_string_lossy())); + if is_running_by_path(&game_path) { + app.dialog() + .message(format!("The version {} is already running.", name)) + .kind(MessageDialogKind::Error) + .title("Game already running") + .show(|_| {}); + return; + } - let parts = shlex::split(&wine_cmd_to_use).expect("failed to split command"); - let exe = &parts[0]; - let args = &parts[1..]; - - Command::new(exe) - .args(args) - .current_dir(&game_folder) - .spawn() - } - - #[cfg(not(target_os = "linux"))] - { - Err(std::io::Error::new(std::io::ErrorKind::Other, "not linux")) - } + if platform() == "macos" { + Command::new("open") + .arg(&game_path) + .current_dir(&game_folder) + .spawn() + .unwrap(); } else { - if is_running_by_path(&game_path) { - app.dialog() - .message(format!("The version {} is already running.", name)) - .kind(MessageDialogKind::Error) - .title("Game already running") - .show(|_| {}); - return; - } - if platform() == "macos" { - Command::new("open") - .arg(&game_path) - .current_dir(&game_folder) - .spawn() - } else { - Command::new(&game_path).current_dir(&game_folder).spawn() - } - }; - - match result { - Ok(_) => println!("Game launched successfully."), - Err(e) => { - app.dialog() - .message(format!("Failed to load game:\n{}\n\nTry reinstalling the game or make a support request in the Community link on the sidebar.", e)) - .kind(MessageDialogKind::Error) - .title("Failed to launch game") - .show(|_| {}); - } + Command::new(&game_path) + .current_dir(&game_folder) + .spawn() + .unwrap(); } } diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index f95c264..85ac37d 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "Lncvrt Games Launcher", - "version": "1.1.1", + "version": "1.1.2", "identifier": "xyz.lncvrt.games-launcher", "build": { "beforeDevCommand": "next dev", diff --git a/src-tauri/tauri.linux.conf.json b/src-tauri/tauri.linux.conf.json index f95c264..85ac37d 100644 --- a/src-tauri/tauri.linux.conf.json +++ b/src-tauri/tauri.linux.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "Lncvrt Games Launcher", - "version": "1.1.1", + "version": "1.1.2", "identifier": "xyz.lncvrt.games-launcher", "build": { "beforeDevCommand": "next dev", diff --git a/src-tauri/tauri.macos.conf.json b/src-tauri/tauri.macos.conf.json index d340eb1..38b8273 100644 --- a/src-tauri/tauri.macos.conf.json +++ b/src-tauri/tauri.macos.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "Lncvrt Games Launcher", - "version": "1.1.1", + "version": "1.1.2", "identifier": "xyz.lncvrt.games-launcher", "build": { "beforeDevCommand": "next dev", diff --git a/src-tauri/tauri.windows.conf.json b/src-tauri/tauri.windows.conf.json index 4af3cbe..d3ec79c 100644 --- a/src-tauri/tauri.windows.conf.json +++ b/src-tauri/tauri.windows.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "Lncvrt Games Launcher", - "version": "1.1.1", + "version": "1.1.2", "identifier": "xyz.lncvrt.games-launcher", "build": { "beforeDevCommand": "next dev", diff --git a/src/app/game/page.tsx b/src/app/game/page.tsx index 9316caa..c5a6cf7 100644 --- a/src/app/game/page.tsx +++ b/src/app/game/page.tsx @@ -1,11 +1,9 @@ 'use client' import { useEffect } from 'react' -import { platform } from '@tauri-apps/plugin-os' import '../Installs.css' import { format } from 'date-fns' import { invoke } from '@tauri-apps/api/core' -import { message } from '@tauri-apps/plugin-dialog' import { useGlobal } from '../GlobalProvider' import { useSearchParams } from 'next/navigation' @@ -100,43 +98,9 @@ export default function Installs () { onClick={async () => { const verInfo = getVersionInfo(entry) if (verInfo == undefined) return - let plat = platform() - let willUseWine = false - let cfg = null - while (normalConfig != null) { - cfg = normalConfig - break - } - if (plat === 'macos' || plat === 'linux') { - if ( - !verInfo.platforms.includes(plat) && - verInfo.platforms.includes('windows') - ) { - if ( - cfg != null && - !cfg.settings.useWineOnUnixWhenNeeded - ) { - await message( - 'Wine support is disabled in settings and this version requires wine', - { - title: 'Wine is needed to load this version', - kind: 'error' - } - ) - return - } - plat = 'windows' - willUseWine = true - } - } invoke('launch_game', { name: verInfo.id, - executable: - verInfo.executables[ - verInfo.platforms.indexOf(plat) - ], - wine: willUseWine, - wineCommand: cfg?.settings.wineOnUnixCommand + executable: verInfo.executable }) }} > diff --git a/src/app/layout.tsx b/src/app/layout.tsx index d9303ac..001158a 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -4,7 +4,6 @@ import { useCallback, useEffect, useState } from 'react' import Sidebar from './componets/Sidebar' import './Globals.css' import { DownloadProgress } from './types/DownloadProgress' -import { arch, platform } from '@tauri-apps/plugin-os' import { invoke } from '@tauri-apps/api/core' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import { @@ -40,6 +39,7 @@ import { GameVersion } from './types/GameVersion' import { Game } from './types/Game' import { listen } from '@tauri-apps/api/event' import { usePathname } from 'next/navigation' +import { arch, platform } from '@tauri-apps/plugin-os' const roboto = Roboto({ subsets: ['latin'] @@ -114,6 +114,28 @@ export default function RootLayout ({ }) }).then(f => (unlistenProgress = f)) + listen('download-hash-checking', event => { + const versionName = event.payload + setDownloadProgress(prev => { + const i = prev.findIndex(d => d.version === versionName) + if (i === -1) return prev + const copy = [...prev] + copy[i] = { ...copy[i], hash_checking: true } + return copy + }) + }).then(f => (unlistenProgress = f)) + + listen('download-finishing', event => { + const versionName = event.payload + setDownloadProgress(prev => { + const i = prev.findIndex(d => d.version === versionName) + if (i === -1) return prev + const copy = [...prev] + copy[i] = { ...copy[i], hash_checking: false, finishing: true } + return copy + }) + }).then(f => (unlistenProgress = f)) + listen('version-uninstalled', event => { const versionName = event.payload setDownloadedVersionsConfig(prev => { @@ -162,7 +184,7 @@ export default function RootLayout ({ setLoadingText('Downloading version list...') try { const res = await axios.get( - 'https://games.lncvrt.xyz/api/launcher/versions' + `http://localhost:3342/launcher/versions?platform=${platform()}&arch=${arch()}` ) setServerVersionList(res.data) } catch { @@ -193,92 +215,18 @@ export default function RootLayout ({ function getSpecialVersionsList (game?: number): GameVersion[] { if (!normalConfig || !serverVersionList) return [] - const useWine = normalConfig.settings.useWineOnUnixWhenNeeded - const p = platform() - const a = arch() - return serverVersionList.versions .filter(v => !downloadedVersionsConfig?.list.includes(v.id)) .filter(v => { if (game && v.game != game) return false - if (p === 'macos' || p === 'linux') { - if (useWine) { - return ( - v.platforms.includes('windows-x86') || - v.platforms.includes('windows-x64') || - v.platforms.includes(p) - ) - } - return v.platforms.includes(p) - } - - if (p === 'windows') { - if (a === 'x86_64') - return ( - v.platforms.includes('windows-x86') || - v.platforms.includes('windows-x64') - ) - if (a === 'aarch64') return v.platforms.includes('windows-arm64') - } - - return false + return true }) .sort((a, b) => { if (b.game !== a.game) return a.game - b.game - return b.place - a.place + return 0 }) } - function getDownloadLink (version: GameVersion): string | undefined { - const p = platform() - const a = arch() - - const findUrl = (plat: string) => { - const i = version.platforms.indexOf(plat) - return i >= 0 ? version.downloadUrls[i] : undefined - } - - if (p === 'windows') { - if (a === 'x86_64') - return findUrl('windows-x64') || findUrl('windows-x86') - if (a === 'aarch64') return findUrl('windows-arm64') - } - - if (p === 'macos' || p === 'linux') { - if (normalConfig?.settings.useWineOnUnixWhenNeeded) { - return findUrl('windows-x86') || findUrl('windows-x64') || findUrl(p) - } - return findUrl(p) - } - - return undefined - } - - function getExecutableName (version: GameVersion): string | undefined { - const p = platform() - const a = arch() - - const findUrl = (plat: string) => { - const i = version.platforms.indexOf(plat) - return i >= 0 ? version.executables[i] : undefined - } - - if (p === 'windows') { - if (a === 'x86_64') - return findUrl('windows-x64') || findUrl('windows-x86') - if (a === 'aarch64') return findUrl('windows-arm64') - } - - if (p === 'macos' || p === 'linux') { - if (normalConfig?.settings.useWineOnUnixWhenNeeded) { - return findUrl('windows-x86') || findUrl('windows-x64') || findUrl(p) - } - return findUrl(p) - } - - return undefined - } - function getVersionInfo (id: string | undefined): GameVersion | undefined { if (!id) return undefined return serverVersionList?.versions.find(v => v.id === id) @@ -310,7 +258,7 @@ export default function RootLayout ({ setSelectedVersionList([]) const newDownloads = list.map( - version => new DownloadProgress(version, 0, false, true) + version => new DownloadProgress(version, 0, false, true, false, false) ) setDownloadProgress(newDownloads) @@ -330,29 +278,16 @@ export default function RootLayout ({ ) return } - const downloadLink = getDownloadLink(info) - if (!downloadLink) { - setDownloadProgress(prev => - prev.filter(d => d.version !== download.version) - ) - return - } - const executableName = getExecutableName(info) - if (!executableName) { - setDownloadProgress(prev => - prev.filter(d => d.version !== download.version) - ) - return - } setDownloadProgress(prev => prev.map(d => d.version === download.version ? { ...d, queued: false } : d ) ) const res = await invoke('download', { - url: downloadLink, + url: info.downloadUrl, name: info.id, - executable: executableName + executable: info.executable, + hash: info.sha512sum }) if (res == '1') { setDownloadProgress(prev => @@ -394,38 +329,13 @@ export default function RootLayout ({ } | null { if (!downloadedVersionsConfig || !serverVersionList) return null - const p = platform() - const a = arch() - const installed = downloadedVersionsConfig.list.filter( v => getVersionGame(getVersionInfo(v)?.game)?.id === gameId ).length - const total = serverVersionList.versions - .filter(v => { - if (p === 'macos' || p === 'linux') { - if (normalConfig?.settings.useWineOnUnixWhenNeeded) { - return ( - v.platforms.includes('windows-x86') || - v.platforms.includes('windows-x64') || - v.platforms.includes(p) - ) - } - return v.platforms.includes(p) - } - - if (p === 'windows') { - if (a === 'x86_64') - return ( - v.platforms.includes('windows-x86') || - v.platforms.includes('windows-x64') - ) - if (a === 'aarch64') return v.platforms.includes('windows-arm64') - } - - return false - }) - .filter(v => getVersionGame(v?.game)?.id === gameId).length + const total = serverVersionList.versions.filter( + v => getVersionGame(v?.game)?.id === gameId + ).length return { installed, total } } @@ -690,6 +600,18 @@ export default function RootLayout ({ Queued… + ) : v.queued ? ( + + Queued… + + ) : v.hash_checking ? ( + + Checking hash... + + ) : v.finishing ? ( + + Finishing... + ) : ( Downloading: {v.progress}% done diff --git a/src/app/settings/page.tsx b/src/app/settings/page.tsx index 4099b8c..8bdbd7e 100644 --- a/src/app/settings/page.tsx +++ b/src/app/settings/page.tsx @@ -3,25 +3,18 @@ import { useEffect, useState } from 'react' import { Setting } from '../componets/Setting' import { writeNormalConfig } from '../util/BazookaManager' -import { platform } from '@tauri-apps/plugin-os' import { useGlobal } from '../GlobalProvider' export default function Settings () { const [allowNotifications, setAllowNotifications] = useState(false) const [alwaysShowGamesInSidebar, setAlwaysShowGamesInSidebar] = useState(false) - const [useWineOnUnixWhenNeeded, setUseWineOnUnixWhenNeeded] = useState(false) - const [wineOnUnixCommand, setWineOnUnixCommand] = useState('wine %path%') const [loaded, setLoaded] = useState(false) const { normalConfig, setNormalConfig } = useGlobal() useEffect(() => { ;(async () => { while (normalConfig != null) { - setUseWineOnUnixWhenNeeded( - normalConfig.settings.useWineOnUnixWhenNeeded - ) - setWineOnUnixCommand(normalConfig.settings.wineOnUnixCommand) setAllowNotifications(normalConfig.settings.allowNotifications) setAlwaysShowGamesInSidebar( normalConfig.settings.alwaysShowGamesInSidebar @@ -73,35 +66,6 @@ export default function Settings () { } }} /> - { - while (normalConfig != null) { - setUseWineOnUnixWhenNeeded(!useWineOnUnixWhenNeeded) - normalConfig.settings.useWineOnUnixWhenNeeded = - !useWineOnUnixWhenNeeded - await writeNormalConfig(normalConfig) - break - } - }} - className={platform() == 'linux' ? '' : 'hidden'} - /> - { - while (normalConfig != null) { - setWineOnUnixCommand(e.target.value) - normalConfig.settings.wineOnUnixCommand = e.target.value - await writeNormalConfig(normalConfig) - break - } - }} - className={`input-field ${ - platform() == 'linux' && useWineOnUnixWhenNeeded ? '' : 'hidden' - }`} - > )} diff --git a/src/app/types/DownloadProgress.ts b/src/app/types/DownloadProgress.ts index cea648b..98644cd 100644 --- a/src/app/types/DownloadProgress.ts +++ b/src/app/types/DownloadProgress.ts @@ -3,6 +3,8 @@ export class DownloadProgress { public version: string, public progress: number, public failed: boolean, - public queued: boolean + public queued: boolean, + public hash_checking: boolean, + public finishing: boolean ) { } } diff --git a/src/app/types/GameVersion.ts b/src/app/types/GameVersion.ts index 7efe69b..f9967ce 100644 --- a/src/app/types/GameVersion.ts +++ b/src/app/types/GameVersion.ts @@ -2,9 +2,8 @@ export interface GameVersion { id: string versionName: string releaseDate: number - downloadUrls: string[] - platforms: string[] - executables: string[] game: number - place: number + downloadUrl: string + executable: string + sha512sum: string } diff --git a/src/app/types/SettingsType.ts b/src/app/types/SettingsType.ts index aac8b48..9f3998d 100644 --- a/src/app/types/SettingsType.ts +++ b/src/app/types/SettingsType.ts @@ -1,8 +1,6 @@ export class SettingsType { constructor( public allowNotifications: boolean = true, - public alwaysShowGamesInSidebar: boolean = true, - public useWineOnUnixWhenNeeded: boolean = false, - public wineOnUnixCommand: string = 'wine %path%' + public alwaysShowGamesInSidebar: boolean = true ) { } }