feat: DOBRADO_LOJA env injetado no build — builds separadas Uniao/Alianca/Ambos
- app.rs: LOJA_FIXA via option_env!(DOBRADO_LOJA), get_loja_fixa command - app.rs: set_loja bloqueado se build fixa - index.html: DOMContentLoaded detecta loja fixa e esconde seletor - 3 executáveis: fc-uniao.exe / fc-alianca.exe / fc-ambos.exe
This commit is contained in:
@@ -111,6 +111,7 @@ fn main() {
|
||||
plugins::printer::ativar_modo_teste_impressao,
|
||||
// App
|
||||
plugins::app::get_loja,
|
||||
plugins::app::get_loja_fixa,
|
||||
plugins::app::set_loja,
|
||||
plugins::app::get_config,
|
||||
plugins::app::set_config,
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
//! Plugin de configuração da aplicação (loja, preferências)
|
||||
//! Persistido em config.json ao lado do banco SQLite.
|
||||
//!
|
||||
//! LOJA_FIXA: definido em tempo de build via env DOBRADO_LOJA (Uniao | Alianca).
|
||||
//! Quando definido, a loja é travada e o seletor do formulário fica desabilitado.
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::fs;
|
||||
@@ -7,6 +10,9 @@ use std::path::PathBuf;
|
||||
use std::sync::Mutex;
|
||||
use tauri::State;
|
||||
|
||||
/// Indica se a loja foi fixada em tempo de build.
|
||||
pub const LOJA_FIXA: Option<&'static str> = option_env!("DOBRADO_LOJA");
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||
pub struct AppConfig {
|
||||
pub loja: String,
|
||||
@@ -15,17 +21,28 @@ pub struct AppConfig {
|
||||
pub turno_default: String,
|
||||
pub sync_automatico: bool,
|
||||
pub auto_open_printer: bool,
|
||||
/// Verdadeiro quando a build tem loja fixa (não permite trocar no formulário)
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
pub loja_fixa: Option<bool>,
|
||||
}
|
||||
|
||||
impl AppConfig {
|
||||
/// Loja padrão: o env DOBRADO_LOJA se existir, senão "Uniao"
|
||||
pub fn default_loja() -> String {
|
||||
LOJA_FIXA.unwrap_or("Uniao").to_string()
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for AppConfig {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
loja: "Uniao".to_string(),
|
||||
loja: Self::default_loja(),
|
||||
pdv_nome: "PDV-01".to_string(),
|
||||
operador_default: String::new(),
|
||||
turno_default: String::new(),
|
||||
sync_automatico: true,
|
||||
auto_open_printer: false,
|
||||
loja_fixa: LOJA_FIXA.map(|_| true),
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -65,8 +82,17 @@ pub fn get_loja(state: State<'_, AppState>) -> String {
|
||||
state.config.lock().unwrap().loja.clone()
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub fn get_loja_fixa() -> Option<String> {
|
||||
LOJA_FIXA.map(|s| s.to_string())
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub fn set_loja(state: State<'_, AppState>, loja: String) -> Result<(), String> {
|
||||
// Se loja_fixa está ativa, não permite alterar
|
||||
if LOJA_FIXA.is_some() {
|
||||
return Err("Loja fixa em tempo de build — não é possível trocar.".to_string());
|
||||
}
|
||||
state.config.lock().unwrap().loja = loja;
|
||||
state.save()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user