mirror of
https://github.com/yuzu-emu/liftinstall.git
synced 2025-01-03 19:05:38 +00:00
fix(tasks): fix shortcut manipulation logic
This commit is contained in:
parent
42e092f54d
commit
89be1c0d84
|
@ -190,7 +190,9 @@ pub fn handle(service: &WebService, _req: Request) -> InternalFuture {
|
||||||
let req = serde_json::from_slice::<AuthRequest>(&body);
|
let req = serde_json::from_slice::<AuthRequest>(&body);
|
||||||
if req.is_err() {
|
if req.is_err() {
|
||||||
warn!("Failed to parse auth request from the frontend");
|
warn!("Failed to parse auth request from the frontend");
|
||||||
return default_future(Response::new().with_status(hyper::StatusCode::BadRequest));
|
return default_future(
|
||||||
|
Response::new().with_status(hyper::StatusCode::BadRequest),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
let req = req.unwrap();
|
let req = req.unwrap();
|
||||||
|
|
||||||
|
|
|
@ -52,6 +52,19 @@ pub fn handle(service: &WebService, req: Request) -> Future {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !install_desktop_shortcut {
|
||||||
|
let framework_ref = framework
|
||||||
|
.read()
|
||||||
|
.log_expect("InstallerFramework has been dirtied");
|
||||||
|
install_desktop_shortcut = framework_ref.preexisting_install
|
||||||
|
&& framework_ref
|
||||||
|
.database
|
||||||
|
.packages
|
||||||
|
.first()
|
||||||
|
.and_then(|x| Some(x.shortcuts.len() > 1))
|
||||||
|
.unwrap_or(false);
|
||||||
|
}
|
||||||
|
|
||||||
// The frontend always provides this
|
// The frontend always provides this
|
||||||
let path =
|
let path =
|
||||||
path.log_expect("No path specified by frontend when one should have already existed");
|
path.log_expect("No path specified by frontend when one should have already existed");
|
||||||
|
|
|
@ -36,6 +36,7 @@ use crate::logging::LoggingErrors;
|
||||||
|
|
||||||
use dirs::home_dir;
|
use dirs::home_dir;
|
||||||
|
|
||||||
|
use std::collections::HashSet;
|
||||||
use std::fs::remove_file;
|
use std::fs::remove_file;
|
||||||
|
|
||||||
use crate::http;
|
use crate::http;
|
||||||
|
@ -117,7 +118,7 @@ pub struct LocalInstallation {
|
||||||
/// Relative paths to generated files
|
/// Relative paths to generated files
|
||||||
pub files: Vec<String>,
|
pub files: Vec<String>,
|
||||||
/// Absolute paths to generated shortcut files
|
/// Absolute paths to generated shortcut files
|
||||||
pub shortcuts: Vec<String>,
|
pub shortcuts: HashSet<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! declare_messenger_callback {
|
macro_rules! declare_messenger_callback {
|
||||||
|
|
|
@ -11,6 +11,7 @@ use crate::config::PackageDescription;
|
||||||
|
|
||||||
use crate::logging::LoggingErrors;
|
use crate::logging::LoggingErrors;
|
||||||
|
|
||||||
|
#[cfg(windows)]
|
||||||
use crate::native::create_desktop_shortcut;
|
use crate::native::create_desktop_shortcut;
|
||||||
|
|
||||||
pub struct InstallDesktopShortcutTask {
|
pub struct InstallDesktopShortcutTask {
|
||||||
|
@ -84,6 +85,7 @@ impl Task for InstallDesktopShortcutTask {
|
||||||
.to_str()
|
.to_str()
|
||||||
.log_expect("Unable to build shortcut metadata (exe)");
|
.log_expect("Unable to build shortcut metadata (exe)");
|
||||||
|
|
||||||
|
#[cfg(windows)]
|
||||||
installed_files.push(create_desktop_shortcut(
|
installed_files.push(create_desktop_shortcut(
|
||||||
&shortcut.name,
|
&shortcut.name,
|
||||||
&shortcut.description,
|
&shortcut.description,
|
||||||
|
@ -99,7 +101,7 @@ impl Task for InstallDesktopShortcutTask {
|
||||||
let packages = &mut context.database.packages;
|
let packages = &mut context.database.packages;
|
||||||
for pack in packages {
|
for pack in packages {
|
||||||
if pack.name == self.name {
|
if pack.name == self.name {
|
||||||
pack.shortcuts.append(&mut installed_files);
|
pack.shortcuts.extend(installed_files.clone());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@ use crate::logging::LoggingErrors;
|
||||||
use crate::archives;
|
use crate::archives;
|
||||||
|
|
||||||
use crate::tasks::install_desktop_shortcut::InstallDesktopShortcutTask;
|
use crate::tasks::install_desktop_shortcut::InstallDesktopShortcutTask;
|
||||||
|
use std::collections::HashSet;
|
||||||
use std::fs::OpenOptions;
|
use std::fs::OpenOptions;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
|
||||||
|
@ -172,7 +173,7 @@ impl Task for InstallPackageTask {
|
||||||
context.database.packages.push(LocalInstallation {
|
context.database.packages.push(LocalInstallation {
|
||||||
name: package.name,
|
name: package.name,
|
||||||
version,
|
version,
|
||||||
shortcuts: Vec::new(),
|
shortcuts: HashSet::new(),
|
||||||
files: installed_files,
|
files: installed_files,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -91,7 +91,7 @@ impl Task for InstallShortcutsTask {
|
||||||
let packages = &mut context.database.packages;
|
let packages = &mut context.database.packages;
|
||||||
for pack in packages {
|
for pack in packages {
|
||||||
if pack.name == self.name {
|
if pack.name == self.name {
|
||||||
pack.shortcuts.append(&mut installed_files);
|
pack.shortcuts.extend(installed_files.clone());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue