Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f83cc118fe
|
||
|
|
19788a8a3c
|
||
|
|
e066dd0681
|
||
|
|
29b3c3c58b
|
No files matched your search
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "lncvrt-games-launcher",
|
"name": "lncvrt-games-launcher",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "1.6.2",
|
"version": "1.6.3",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "next dev",
|
"dev": "next dev",
|
||||||
@@ -30,17 +30,17 @@
|
|||||||
"react-dom": "19.2.4"
|
"react-dom": "19.2.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/eslintrc": "3.3.3",
|
"@eslint/eslintrc": "3.3.4",
|
||||||
"@tailwindcss/postcss": "4.1.18",
|
"@tailwindcss/postcss": "4.2.1",
|
||||||
"@tauri-apps/cli": "2.10.0",
|
"@tauri-apps/cli": "2.10.0",
|
||||||
"@types/crypto-js": "4.2.2",
|
"@types/crypto-js": "4.2.2",
|
||||||
"@types/node": "25.2.3",
|
"@types/node": "25.3.2",
|
||||||
"@types/react": "19.2.14",
|
"@types/react": "19.2.14",
|
||||||
"@types/react-dom": "19.2.3",
|
"@types/react-dom": "19.2.3",
|
||||||
"crypto-js": "4.2.0",
|
"crypto-js": "4.2.0",
|
||||||
"eslint": "9.39.2",
|
"eslint": "10.0.2",
|
||||||
"eslint-config-next": "16.1.6",
|
"eslint-config-next": "16.1.6",
|
||||||
"tailwindcss": "4.1.18",
|
"tailwindcss": "4.2.1",
|
||||||
"typescript": "5.9.3"
|
"typescript": "5.9.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "lncvrt-games-launcher"
|
name = "lncvrt-games-launcher"
|
||||||
version = "1.6.2"
|
version = "1.6.3"
|
||||||
authors = ["Lncvrt"]
|
authors = ["Lncvrt"]
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ tauri-plugin-notification = "2.3.3"
|
|||||||
sysinfo = "0.38.2"
|
sysinfo = "0.38.2"
|
||||||
sha2 = "0.10.9"
|
sha2 = "0.10.9"
|
||||||
tauri-plugin-clipboard-manager = "2.3.2"
|
tauri-plugin-clipboard-manager = "2.3.2"
|
||||||
tauri-plugin-prevent-default = "4.0.3"
|
tauri-plugin-prevent-default = "4.0.4"
|
||||||
|
|
||||||
[target.'cfg(target_os = "linux")'.dependencies]
|
[target.'cfg(target_os = "linux")'.dependencies]
|
||||||
shlex = "1.3.0"
|
shlex = "1.3.0"
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 75 KiB |
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 106 KiB After Width: | Height: | Size: 105 KiB |
|
Before Width: | Height: | Size: 3.8 KiB After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 8.0 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 93 KiB After Width: | Height: | Size: 92 KiB |
|
Before Width: | Height: | Size: 249 KiB After Width: | Height: | Size: 248 KiB |
@@ -139,6 +139,7 @@ async fn download(
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
let total_size = resp.content_length().unwrap_or(0);
|
let total_size = resp.content_length().unwrap_or(0);
|
||||||
|
let _ = app.emit("download-size", format!("{}:{}", &name, &total_size));
|
||||||
|
|
||||||
let mut downloaded: u64 = 0;
|
let mut downloaded: u64 = 0;
|
||||||
let mut stream = resp.bytes_stream();
|
let mut stream = resp.bytes_stream();
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://schema.tauri.app/config/2",
|
"$schema": "https://schema.tauri.app/config/2",
|
||||||
"productName": "Lncvrt Games Launcher",
|
"productName": "Lncvrt Games Launcher",
|
||||||
"version": "1.6.2",
|
"version": "1.6.3",
|
||||||
"identifier": "xyz.lncvrt.games-launcher",
|
"identifier": "xyz.lncvrt.games-launcher",
|
||||||
"build": {
|
"build": {
|
||||||
"beforeDevCommand": "next dev --webpack",
|
"beforeDevCommand": "next dev --webpack",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://schema.tauri.app/config/2",
|
"$schema": "https://schema.tauri.app/config/2",
|
||||||
"productName": "Lncvrt Games Launcher",
|
"productName": "Lncvrt Games Launcher",
|
||||||
"version": "1.6.2",
|
"version": "1.6.3",
|
||||||
"identifier": "xyz.lncvrt.games-launcher",
|
"identifier": "xyz.lncvrt.games-launcher",
|
||||||
"build": {
|
"build": {
|
||||||
"beforeDevCommand": "next dev --webpack",
|
"beforeDevCommand": "next dev --webpack",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://schema.tauri.app/config/2",
|
"$schema": "https://schema.tauri.app/config/2",
|
||||||
"productName": "Lncvrt Games Launcher",
|
"productName": "Lncvrt Games Launcher",
|
||||||
"version": "1.6.2",
|
"version": "1.6.3",
|
||||||
"identifier": "xyz.lncvrt.games-launcher",
|
"identifier": "xyz.lncvrt.games-launcher",
|
||||||
"build": {
|
"build": {
|
||||||
"beforeDevCommand": "next dev --webpack",
|
"beforeDevCommand": "next dev --webpack",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://schema.tauri.app/config/2",
|
"$schema": "https://schema.tauri.app/config/2",
|
||||||
"productName": "Lncvrt Games Launcher",
|
"productName": "Lncvrt Games Launcher",
|
||||||
"version": "1.6.2",
|
"version": "1.6.3",
|
||||||
"identifier": "xyz.lncvrt.games-launcher",
|
"identifier": "xyz.lncvrt.games-launcher",
|
||||||
"build": {
|
"build": {
|
||||||
"beforeDevCommand": "next dev --webpack",
|
"beforeDevCommand": "next dev --webpack",
|
||||||
|
|||||||
@@ -270,11 +270,10 @@ export default function BerryDashLeaderboards () {
|
|||||||
}&overlayB=${item.overlayColor[2]}`
|
}&overlayB=${item.overlayColor[2]}`
|
||||||
: `https://games.lncvrt.xyz/api/berrydash/icon-marketplace/icon?id=${item.customIcon}&raw=true`
|
: `https://games.lncvrt.xyz/api/berrydash/icon-marketplace/icon?id=${item.customIcon}&raw=true`
|
||||||
}
|
}
|
||||||
className='pointer-events-none'
|
|
||||||
width={48}
|
width={48}
|
||||||
height={48}
|
height={48}
|
||||||
alt=''
|
alt=''
|
||||||
unoptimized
|
className='pointer-events-none scale-x-[-1]'
|
||||||
/>
|
/>
|
||||||
<p>
|
<p>
|
||||||
{item.username} (#{index + 1})
|
{item.username} (#{index + 1})
|
||||||
|
|||||||
@@ -181,6 +181,21 @@ export default function RootLayout ({
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
let unlistenProgress: (() => void) | null = null
|
let unlistenProgress: (() => void) | null = null
|
||||||
|
|
||||||
|
listen<string>('download-size', event => {
|
||||||
|
const [displayName, sizeStr] = event.payload.split(':')
|
||||||
|
const size = Number(sizeStr)
|
||||||
|
setDownloadProgress(prev => {
|
||||||
|
const i = prev.findIndex(d => d.version === displayName)
|
||||||
|
if (i === -1) return prev
|
||||||
|
const copy = [...prev]
|
||||||
|
copy[i] = {
|
||||||
|
...copy[i],
|
||||||
|
size
|
||||||
|
}
|
||||||
|
return copy
|
||||||
|
})
|
||||||
|
}).then(f => (unlistenProgress = f))
|
||||||
|
|
||||||
listen<string>('download-progress', event => {
|
listen<string>('download-progress', event => {
|
||||||
const [displayName, progStr, totalSizeStr, speedStr, etaSecsStr] =
|
const [displayName, progStr, totalSizeStr, speedStr, etaSecsStr] =
|
||||||
event.payload.split(':')
|
event.payload.split(':')
|
||||||
@@ -285,7 +300,18 @@ export default function RootLayout ({
|
|||||||
|
|
||||||
const newDownloads = newVersions.map(
|
const newDownloads = newVersions.map(
|
||||||
version =>
|
version =>
|
||||||
new DownloadProgress(version, 0, 0, false, true, false, false, 0, 0)
|
new DownloadProgress(
|
||||||
|
version,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
false,
|
||||||
|
true,
|
||||||
|
false,
|
||||||
|
false,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
setDownloadProgress(prev => [...prev, ...newDownloads])
|
setDownloadProgress(prev => [...prev, ...newDownloads])
|
||||||
@@ -322,17 +348,33 @@ export default function RootLayout ({
|
|||||||
prev.map(d => (d.version === versionId ? { ...d, queued: false } : d))
|
prev.map(d => (d.version === versionId ? { ...d, queued: false } : d))
|
||||||
)
|
)
|
||||||
|
|
||||||
try {
|
const downloadInfoRequest = await axios.get(
|
||||||
await axios.get(
|
'https://games.lncvrt.xyz/api/launcher/download?gameId=' +
|
||||||
'https://games.lncvrt.xyz/api/launcher/download?id=' + info.id
|
info.id +
|
||||||
|
'&downloadId=' +
|
||||||
|
info.download
|
||||||
)
|
)
|
||||||
} catch {}
|
if (!downloadInfoRequest.data.success) {
|
||||||
|
setDownloadProgress(prev =>
|
||||||
|
prev.map(d =>
|
||||||
|
d.version === versionId
|
||||||
|
? { ...d, queued: false, failed: true, progress: 0 }
|
||||||
|
: d
|
||||||
|
)
|
||||||
|
)
|
||||||
|
if (normalConfig?.settings.allowNotifications)
|
||||||
|
await notifyUser(
|
||||||
|
'Download Failed',
|
||||||
|
`The download for version ${info.displayName} has failed.`
|
||||||
|
)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
const res = await invoke<string>('download', {
|
const res = await invoke<string>('download', {
|
||||||
url: info.downloadUrl,
|
url: downloadInfoRequest.data.data.url,
|
||||||
name: info.id,
|
name: info.id,
|
||||||
executable: info.executable,
|
executable: info.executable,
|
||||||
hash: info.sha512sum
|
hash: downloadInfoRequest.data.data.hash
|
||||||
})
|
})
|
||||||
|
|
||||||
if (res === '1') {
|
if (res === '1') {
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 88 KiB After Width: | Height: | Size: 1.2 MiB |
@@ -70,7 +70,7 @@ export default function DownloadsPopup () {
|
|||||||
maximumFractionDigits: 1
|
maximumFractionDigits: 1
|
||||||
})}{' '}
|
})}{' '}
|
||||||
of{' '}
|
of{' '}
|
||||||
{prettyBytes(getVersionInfo(v.version)?.size ?? 0, {
|
{prettyBytes(v.size, {
|
||||||
minimumFractionDigits: 1,
|
minimumFractionDigits: 1,
|
||||||
maximumFractionDigits: 1
|
maximumFractionDigits: 1
|
||||||
})}{' '}
|
})}{' '}
|
||||||
|
|||||||
@@ -107,21 +107,6 @@ export default function VersionVersionPopup () {
|
|||||||
: 'N/A'}
|
: 'N/A'}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div
|
|
||||||
className='entry-info-item btntheme2'
|
|
||||||
hidden={!viewingInfoFromDownloads}
|
|
||||||
>
|
|
||||||
<FontAwesomeIcon icon={faHardDrive} color='lightgray' />
|
|
||||||
<p>
|
|
||||||
Size when downloaded (zipped):{' '}
|
|
||||||
{versionInfo
|
|
||||||
? prettyBytes(versionInfo.size, {
|
|
||||||
minimumFractionDigits: 2,
|
|
||||||
maximumFractionDigits: 2
|
|
||||||
})
|
|
||||||
: 'Loading...'}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div
|
<div
|
||||||
className='entry-info-item btntheme2'
|
className='entry-info-item btntheme2'
|
||||||
onClick={async () => {
|
onClick={async () => {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ export class DownloadProgress {
|
|||||||
public hash_checking: boolean,
|
public hash_checking: boolean,
|
||||||
public finishing: boolean,
|
public finishing: boolean,
|
||||||
public speed: number,
|
public speed: number,
|
||||||
|
public size: number,
|
||||||
public etaSecs: number
|
public etaSecs: number
|
||||||
) {}
|
) {}
|
||||||
}
|
}
|
||||||
@@ -3,13 +3,11 @@ export interface GameVersion {
|
|||||||
displayName: string
|
displayName: string
|
||||||
releaseDate: number
|
releaseDate: number
|
||||||
game: number
|
game: number
|
||||||
downloadUrl: string
|
|
||||||
executable: string
|
|
||||||
sha512sum: string
|
|
||||||
size: number
|
|
||||||
place: number
|
place: number
|
||||||
changelog: string
|
changelog: string
|
||||||
wine: number | undefined
|
wine: number | undefined
|
||||||
category: number
|
category: number
|
||||||
lastRevision: number
|
lastRevision: number
|
||||||
|
download: number
|
||||||
|
executable: string
|
||||||
}
|
}
|
||||||