mirror of
https://github.com/Drop-OSS/drop-app.git
synced 2026-01-30 19:15:17 +01:00
* chore: Major refactoring Still needs a massive go-over because there shouldn't be anything referencing tauri in any of the workspaces except the original one. Process manager has been refactored as an example Signed-off-by: quexeky <git@quexeky.dev> * fix: Remote tauri dependency from process Signed-off-by: quexeky <git@quexeky.dev> * refactor: Improvements to src-tauri Signed-off-by: quexeky <git@quexeky.dev> * refactor: Builds, but some logic still left to move back Signed-off-by: quexeky <git@quexeky.dev> * refactor: Finish refactor Signed-off-by: quexeky <git@quexeky.dev> * chore: Run cargo clippy && cargo fmt Signed-off-by: quexeky <git@quexeky.dev> * refactor: Move everything into src-tauri Signed-off-by: quexeky <git@quexeky.dev> --------- Signed-off-by: quexeky <git@quexeky.dev>
42 lines
1.1 KiB
Rust
42 lines
1.1 KiB
Rust
#![feature(nonpoison_mutex)]
|
|
#![feature(sync_nonpoison)]
|
|
|
|
use std::{
|
|
ops::Deref,
|
|
sync::{OnceLock, nonpoison::Mutex},
|
|
};
|
|
|
|
use tauri::AppHandle;
|
|
|
|
use crate::process_manager::ProcessManager;
|
|
|
|
pub static PROCESS_MANAGER: ProcessManagerWrapper = ProcessManagerWrapper::new();
|
|
|
|
pub mod error;
|
|
pub mod format;
|
|
pub mod process_handlers;
|
|
pub mod process_manager;
|
|
|
|
pub struct ProcessManagerWrapper(OnceLock<Mutex<ProcessManager<'static>>>);
|
|
impl ProcessManagerWrapper {
|
|
const fn new() -> Self {
|
|
ProcessManagerWrapper(OnceLock::new())
|
|
}
|
|
pub fn init(app_handle: AppHandle) {
|
|
PROCESS_MANAGER
|
|
.0
|
|
.set(Mutex::new(ProcessManager::new(app_handle)))
|
|
.unwrap_or_else(|_| panic!("Failed to initialise Process Manager")); // Using panic! here because we can't implement Debug
|
|
}
|
|
}
|
|
impl Deref for ProcessManagerWrapper {
|
|
type Target = Mutex<ProcessManager<'static>>;
|
|
|
|
fn deref(&self) -> &Self::Target {
|
|
match self.0.get() {
|
|
Some(process_manager) => process_manager,
|
|
None => unreachable!("Download manager should always be initialised"),
|
|
}
|
|
}
|
|
}
|