separate dev and production instances and add visual indicators of dev mode

This commit is contained in:
2024-12-27 08:17:49 -05:00
parent 07bf98e522
commit 9e9bc2b0ae
12 changed files with 104 additions and 73 deletions

View File

@ -7,27 +7,74 @@ use tauri::{
use tauri::menu::{
MenuBuilder,
MenuEvent,
MenuItem,
MenuItemBuilder,
PredefinedMenuItem,
};
use crate::app;
use crate::state::AppState;
pub struct MenuItems {
pub status: MenuItem<tauri::Wry>,
pub show_hide: MenuItem<tauri::Wry>,
}
impl MenuItems {
pub fn after_show(&self) -> tauri::Result<()> {
self.show_hide.set_text("Hide")
}
pub fn after_hide(&self) -> tauri::Result<()> {
self.show_hide.set_text("Show")
}
pub fn after_lock(&self) -> tauri::Result<()> {
if cfg!(debug_assertions) {
self.status.set_text("Creddy (dev): Locked")
}
else {
self.status.set_text("Creddy: Locked")
}
}
pub fn after_unlock(&self) -> tauri::Result<()> {
if cfg!(debug_assertions) {
self.status.set_text("Creddy (dev): Unlocked")
}
else {
self.status.set_text("Creddy: Unlocked")
}
}
}
pub fn setup(app: &App) -> tauri::Result<()> {
let status_text =
if cfg!(debug_assertions) {
"Creddy (dev): Locked"
}
else {
"Creddy: Locked"
};
let status = MenuItemBuilder::with_id("status", status_text)
.enabled(false)
.build(app)?;
let sep = PredefinedMenuItem::separator(app)?;
let show_hide = MenuItemBuilder::with_id("show_hide", "Show").build(app)?;
let exit = MenuItemBuilder::with_id("exit", "Exit").build(app)?;
let menu = MenuBuilder::new(app)
.items(&[&show_hide, &exit])
.build()?;
.items(&[&status, &sep, &show_hide, &exit]);
let tray = app.tray_by_id("main").unwrap();
tray.set_menu(Some(menu))?;
tray.set_menu(Some(menu.build()?))?;
tray.on_menu_event(handle_event);
// stash this so we can find it later to change the text
app.manage(show_hide);
// stash these so we can find them later to change the text
app.manage(MenuItems { status, show_hide });
Ok(())
}