feature/share-libs
rs 58 lines 1.65 KB
Raw
1 use super::constants::{API_HOST_PRODUCTION, CURRENT_API_HOST};
2 use crate::{
3 command::constants::API_HOST_DEVELOPMENT,
4 models::{
5 player::TauriResponse,
6 settings::{Environment, SetEnvironmentResponse},
7 },
8 };
9 use log::{debug, warn};
10
11 #[tauri::command]
12 pub fn set_environment(environment: Environment) -> SetEnvironmentResponse {
13 debug!("set_environment: {}", environment);
14 let api_host = match environment {
15 Environment::Development => &API_HOST_DEVELOPMENT,
16 Environment::Production => &API_HOST_PRODUCTION,
17 };
18 debug!("Will set API host to: {}", api_host);
19 unsafe {
20 let _ = CURRENT_API_HOST.take();
21 match CURRENT_API_HOST.set(api_host) {
22 Ok(_) => debug!("Did set CURRENT_API_HOST."),
23 Err(e) => warn!("Failed to set CURRENT_API_HOST: {:?}", e),
24 };
25 };
26
27 SetEnvironmentResponse {
28 status: TauriResponse::Success,
29 message: "CURRENT_API_HOST set done.".to_string(),
30 }
31 }
32
33 #[tauri::command]
34 pub fn get_environment() -> Option<Environment> {
35 let env = match api_host() {
36 API_HOST_DEVELOPMENT => Environment::Development,
37 API_HOST_PRODUCTION => Environment::Production,
38 _ => {
39 warn!("Unknown api host!!!");
40 return None;
41 }
42 };
43 debug!("Current environment: {}", env);
44 Some(env)
45 }
46
47 pub fn api_host() -> &'static str {
48 match unsafe { CURRENT_API_HOST.get() } {
49 Some(host) => {
50 debug!("CURRENT_API_HOST: {}", host);
51 host
52 }
53 None => {
54 warn!("API host not set. Defaulting to production.");
55 API_HOST_PRODUCTION
56 }
57 }
58 }