mirror of
https://github.com/Drop-OSS/drop-app.git
synced 2025-11-14 00:31:33 +10:00
@ -1,7 +1,6 @@
|
||||
use std::{
|
||||
env,
|
||||
sync::Mutex,
|
||||
time::{SystemTime, UNIX_EPOCH},
|
||||
};
|
||||
|
||||
use chrono::Utc;
|
||||
|
||||
@ -1,9 +1,7 @@
|
||||
use std::sync::Mutex;
|
||||
|
||||
use log::info;
|
||||
use tauri::AppHandle;
|
||||
|
||||
use crate::AppState;
|
||||
|
||||
#[tauri::command]
|
||||
pub fn quit(app: tauri::AppHandle) {
|
||||
|
||||
@ -4,12 +4,8 @@ use crate::downloads::manifest::{DropDownloadContext, DropManifest};
|
||||
use crate::downloads::progress_object::ProgressHandle;
|
||||
use crate::remote::RemoteAccessError;
|
||||
use crate::DB;
|
||||
use core::time;
|
||||
use log::{debug, error, info};
|
||||
use rayon::ThreadPoolBuilder;
|
||||
use serde::ser::{Error, SerializeMap};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::borrow::BorrowMut;
|
||||
use std::collections::VecDeque;
|
||||
use std::fmt::{Display, Formatter};
|
||||
use std::fs::{create_dir_all, File};
|
||||
|
||||
@ -6,14 +6,11 @@ use crate::DB;
|
||||
use log::warn;
|
||||
use md5::{Context, Digest};
|
||||
use reqwest::blocking::Response;
|
||||
use tauri::utils::acl::Permission;
|
||||
|
||||
use std::fs::{set_permissions, Permissions};
|
||||
use std::io::Read;
|
||||
#[cfg(unix)]
|
||||
use std::os::unix::fs::PermissionsExt;
|
||||
use std::thread::sleep;
|
||||
use std::time::Duration;
|
||||
use std::{
|
||||
fs::{File, OpenOptions},
|
||||
io::{self, BufWriter, Seek, SeekFrom, Write},
|
||||
|
||||
@ -2,7 +2,6 @@ use std::{
|
||||
any::Any,
|
||||
collections::VecDeque,
|
||||
fmt::Debug,
|
||||
io,
|
||||
sync::{
|
||||
mpsc::{SendError, Sender},
|
||||
Arc, Mutex, MutexGuard,
|
||||
|
||||
@ -8,17 +8,16 @@ use std::{
|
||||
thread::{spawn, JoinHandle},
|
||||
};
|
||||
|
||||
use http::version;
|
||||
use log::{error, info};
|
||||
use tauri::{AppHandle, Emitter};
|
||||
|
||||
use crate::{
|
||||
db::{Database, GameStatus, GameTransientStatus},
|
||||
library::{
|
||||
on_game_complete, push_game_update, GameUpdateEvent, QueueUpdateEvent,
|
||||
on_game_complete, push_game_update, QueueUpdateEvent,
|
||||
QueueUpdateEventQueueData, StatsUpdateEvent,
|
||||
},
|
||||
state::{GameStatusManager, GameStatusWithTransient},
|
||||
state::GameStatusManager,
|
||||
DB,
|
||||
};
|
||||
|
||||
@ -113,7 +112,7 @@ impl DownloadManagerBuilder {
|
||||
DownloadManager::new(terminator, queue, active_progress, command_sender)
|
||||
}
|
||||
|
||||
fn set_game_status<F: FnOnce(&mut RwLockWriteGuard<'_, Database>, &String) -> ()>(
|
||||
fn set_game_status<F: FnOnce(&mut RwLockWriteGuard<'_, Database>, &String)>(
|
||||
&self,
|
||||
id: String,
|
||||
setter: F,
|
||||
|
||||
@ -1,12 +1,11 @@
|
||||
use std::{
|
||||
default,
|
||||
fs::File,
|
||||
io::{Read, Write},
|
||||
path::{Path, PathBuf},
|
||||
path::PathBuf,
|
||||
sync::Mutex,
|
||||
};
|
||||
|
||||
use log::{error, info};
|
||||
use log::error;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use serde_binary::binary_stream::Endian;
|
||||
|
||||
@ -44,15 +43,15 @@ impl StoredManifest {
|
||||
}
|
||||
};
|
||||
|
||||
let manifest = match serde_binary::from_vec::<StoredManifest>(s, Endian::Little) {
|
||||
|
||||
|
||||
match serde_binary::from_vec::<StoredManifest>(s, Endian::Little) {
|
||||
Ok(manifest) => manifest,
|
||||
Err(e) => {
|
||||
error!("{}", e);
|
||||
StoredManifest::new(game_id, game_version, base_path)
|
||||
}
|
||||
};
|
||||
|
||||
return manifest;
|
||||
}
|
||||
}
|
||||
pub fn write(&self) {
|
||||
let manifest_raw = match serde_binary::to_vec(&self, Endian::Little) {
|
||||
|
||||
@ -28,7 +28,6 @@ use library::{
|
||||
use log::{debug, info, warn, LevelFilter};
|
||||
use log4rs::append::console::ConsoleAppender;
|
||||
use log4rs::append::file::FileAppender;
|
||||
use log4rs::append::rolling_file::RollingFileAppender;
|
||||
use log4rs::config::{Appender, Root};
|
||||
use log4rs::encode::pattern::PatternEncoder;
|
||||
use log4rs::Config;
|
||||
@ -43,7 +42,7 @@ use std::{
|
||||
collections::HashMap,
|
||||
sync::{LazyLock, Mutex},
|
||||
};
|
||||
use tauri::menu::{Menu, MenuItem, MenuItemBuilder, PredefinedMenuItem};
|
||||
use tauri::menu::{Menu, MenuItem, PredefinedMenuItem};
|
||||
use tauri::tray::TrayIconBuilder;
|
||||
use tauri::{AppHandle, Manager, RunEvent, WindowEvent};
|
||||
use tauri_plugin_deep_link::DeepLinkExt;
|
||||
@ -205,7 +204,7 @@ pub fn run() {
|
||||
}));
|
||||
}
|
||||
|
||||
let mut app = builder
|
||||
let app = builder
|
||||
.plugin(tauri_plugin_deep_link::init())
|
||||
.invoke_handler(tauri::generate_handler![
|
||||
// Core utils
|
||||
@ -346,22 +345,16 @@ pub fn run() {
|
||||
|
||||
responder.respond(resp);
|
||||
})
|
||||
.on_window_event(|window, event| match event {
|
||||
WindowEvent::CloseRequested { api, .. } => {
|
||||
.on_window_event(|window, event| if let WindowEvent::CloseRequested { api, .. } = event {
|
||||
window.hide().unwrap();
|
||||
api.prevent_close();
|
||||
}
|
||||
_ => (),
|
||||
})
|
||||
.build(tauri::generate_context!())
|
||||
.expect("error while running tauri application");
|
||||
|
||||
app.run(|app_handle, event| match event {
|
||||
RunEvent::ExitRequested { code, api, .. } => {
|
||||
app.run(|app_handle, event| if let RunEvent::ExitRequested { code, api, .. } = event {
|
||||
if code.is_none() {
|
||||
api.prevent_exit();
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
});
|
||||
}
|
||||
|
||||
@ -7,7 +7,7 @@ use urlencoding::encode;
|
||||
|
||||
use crate::db::DatabaseImpls;
|
||||
use crate::db::GameVersion;
|
||||
use crate::db::{GameStatus, GameTransientStatus};
|
||||
use crate::db::GameStatus;
|
||||
use crate::downloads::download_manager::{DownloadManagerStatus, GameDownloadStatus};
|
||||
use crate::process::process_manager::Platform;
|
||||
use crate::remote::RemoteAccessError;
|
||||
|
||||
@ -3,19 +3,17 @@ use std::{
|
||||
fs::{File, OpenOptions},
|
||||
path::{Path, PathBuf},
|
||||
process::{Child, Command, ExitStatus},
|
||||
sync::{Arc, LazyLock, Mutex},
|
||||
sync::{Arc, Mutex},
|
||||
thread::spawn,
|
||||
};
|
||||
|
||||
use http::version;
|
||||
use log::{info, warn};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use tauri::{AppHandle, Emitter, Manager};
|
||||
use tauri::{AppHandle, Manager};
|
||||
|
||||
use crate::{
|
||||
db::{GameStatus, GameTransientStatus, DATA_ROOT_DIR},
|
||||
library::push_game_update,
|
||||
process::process_manager,
|
||||
state::GameStatusManager,
|
||||
AppState, DB,
|
||||
};
|
||||
@ -70,7 +68,7 @@ impl ProcessManager<'_> {
|
||||
let absolute_exe = install_dir.join(root);
|
||||
|
||||
let args = command_components[1..]
|
||||
.into_iter()
|
||||
.iter()
|
||||
.map(|v| v.to_string())
|
||||
.collect();
|
||||
(absolute_exe, args)
|
||||
@ -91,12 +89,11 @@ impl ProcessManager<'_> {
|
||||
|
||||
let current_state = db_handle.games.statuses.get(&game_id).cloned();
|
||||
if let Some(saved_state) = current_state {
|
||||
match saved_state {
|
||||
GameStatus::SetupRequired {
|
||||
if let GameStatus::SetupRequired {
|
||||
version_name,
|
||||
install_dir,
|
||||
} => {
|
||||
if let Some(exit_code) = result.ok() {
|
||||
} = saved_state {
|
||||
if let Ok(exit_code) = result {
|
||||
if exit_code.success() {
|
||||
db_handle.games.statuses.insert(
|
||||
game_id.clone(),
|
||||
@ -108,8 +105,6 @@ impl ProcessManager<'_> {
|
||||
}
|
||||
}
|
||||
}
|
||||
_ => (),
|
||||
}
|
||||
}
|
||||
drop(db_handle);
|
||||
|
||||
@ -188,7 +183,7 @@ impl ProcessManager<'_> {
|
||||
);
|
||||
|
||||
let current_time = chrono::offset::Local::now();
|
||||
let mut log_file = OpenOptions::new()
|
||||
let log_file = OpenOptions::new()
|
||||
.write(true)
|
||||
.truncate(true)
|
||||
.read(true)
|
||||
@ -199,7 +194,7 @@ impl ProcessManager<'_> {
|
||||
)
|
||||
.map_err(|v| v.to_string())?;
|
||||
|
||||
let mut error_file = OpenOptions::new()
|
||||
let error_file = OpenOptions::new()
|
||||
.write(true)
|
||||
.truncate(true)
|
||||
.read(true)
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
use std::collections::HashMap;
|
||||
|
||||
use crate::{
|
||||
db::{GameStatus, GameTransientStatus},
|
||||
@ -23,6 +22,6 @@ impl GameStatusManager {
|
||||
return (offline_state, None);
|
||||
}
|
||||
|
||||
return (None, None);
|
||||
(None, None)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user