-
-
Notifications
You must be signed in to change notification settings - Fork 480
[FIX] Issues with Epic Login and refresh Library #1073
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 5 commits
ec09ef9
505ce2a
135dee2
f4d2d3a
3fcbba8
b1e2582
4041872
74d79cb
c2da0d5
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -11,25 +11,61 @@ import { | |
import { env } from 'process' | ||
import { app } from 'electron' | ||
import { existsSync } from 'graceful-fs' | ||
import os from 'os' | ||
|
||
const configStore = new Store({ | ||
cwd: 'store' | ||
}) | ||
|
||
// based on https://github.com/jy95/escape-path-with-spaces/blob/master/index.js | ||
// unfortunatelly this cant go into utils since it needs to be loaded on app start | ||
function fixPathWithSpaces(path: string) { | ||
// to detect on with os user had used path.resolve(...) | ||
const is_posix_os = !isWindows | ||
const version = os.release() | ||
|
||
// For some windows version (Windows 10 v1803), it is not useful to escape spaces in path | ||
// https://docs.microsoft.com/en-us/windows/release-information/ | ||
const windows_version_regex = /(\d+\.\d+)\.(\d+)/ | ||
const should_not_escape = (major_release = '', os_build = '') => | ||
/1\d+\.\d+/.test(major_release) && Number(os_build) >= 17134.1184 | ||
|
||
if (is_posix_os) { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This should be higher up, so the regex isn't applied when it's not used anyway |
||
return path.replace(/(\s+)/g, '\\$1') | ||
} | ||
|
||
// for windows, it depend of the build | ||
const fixedPath = should_not_escape( | ||
...windows_version_regex.exec(version).splice(1) | ||
) | ||
? // on major version, no need to escape anymore | ||
// https://support.microsoft.com/en-us/help/4467268/url-encoded-unc-paths-not-url-decoded-in-windows-10-version-1803-later | ||
path | ||
: // on older version, replace space with symbol %20 | ||
path.replace(/(\s+)/g, '%20') | ||
return fixedPath | ||
} | ||
|
||
function getLegendaryBin() { | ||
const settings = configStore.get('settings') as { altLeg: string } | ||
const bin = | ||
settings?.altLeg || | ||
`"${fixAsarPath( | ||
`${fixAsarPath( | ||
join( | ||
__dirname, | ||
'bin', | ||
process.platform, | ||
isWindows ? 'legendary.exe' : 'legendary' | ||
) | ||
)}"` | ||
)}` | ||
|
||
// dont fix windows issues | ||
if (bin.includes(' ')) { | ||
return `"${bin}"` | ||
CommandMC marked this conversation as resolved.
Show resolved
Hide resolved
|
||
} | ||
|
||
logInfo(`Location: ${bin}`, LogPrefix.Legendary) | ||
return bin | ||
return fixPathWithSpaces(bin) | ||
} | ||
|
||
function getGOGdlBin() { | ||
|
@@ -43,8 +79,13 @@ function getGOGdlBin() { | |
isWindows ? 'gogdl.exe' : 'gogdl' | ||
) | ||
) | ||
|
||
// dont fix windows issues | ||
if (bin.includes(' ')) { | ||
return `"${bin}"` | ||
flavioislima marked this conversation as resolved.
Show resolved
Hide resolved
|
||
} | ||
logInfo(`Location: ${bin}`, LogPrefix.Gog) | ||
return bin | ||
return fixPathWithSpaces(bin) | ||
} | ||
|
||
const isMac = platform() === 'darwin' | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -145,10 +145,14 @@ async function launch( | |
) { | ||
let command = '' | ||
if (runner == 'legendary') { | ||
command = `${legendaryBin} launch ${appName} ${exe} ${runOffline} ${ | ||
const legendaryPath = dirname(legendaryBin).replaceAll('"', '') | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Shouldn't this be defined once in |
||
logInfo(['Launch Command:', command], LogPrefix.Legendary) | ||
process.chdir(legendaryPath) | ||
command = `${ | ||
isWindows ? './legendary.exe' : './legendary' | ||
} launch ${appName} ${exe} ${runOffline} ${ | ||
launchArguments ?? '' | ||
} ${launcherArgs}` | ||
logInfo(['Launch Command:', command], LogPrefix.Legendary) | ||
} else if (runner == 'gog') { | ||
// MangoHud,Gamemode, nvidia prime, audio fix can be used in Linux native titles | ||
if (isLinux) { | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This feels kinda unnecessary, why not just do
if (!isWindows)
below?