Mountain/IPC/WindServiceHandlers/UI/
ThemesSet.rs1#![allow(unused_variables)]
2
3use std::sync::Arc;
6
7use serde_json::{Value, json};
8
9use crate::RunTime::ApplicationRunTime::ApplicationRunTime;
10
11pub async fn Fn(RunTime:Arc<ApplicationRunTime>, Arguments:Vec<Value>) -> Result<Value, String> {
12 use CommonLibrary::{
13 Configuration::{
14 ConfigurationProvider::ConfigurationProvider,
15 DTO::{ConfigurationOverridesDTO::ConfigurationOverridesDTO, ConfigurationTarget::ConfigurationTarget},
16 },
17 IPC::SkyEvent::SkyEvent,
18 };
19 use tauri::Emitter;
20
21 let ThemeId = Arguments
22 .first()
23 .and_then(|V| V.as_str())
24 .ok_or("themes:set requires themeId as first argument".to_string())?
25 .to_string();
26
27 RunTime
28 .Environment
29 .UpdateConfigurationValue(
30 "workbench.colorTheme".to_string(),
31 json!(ThemeId),
32 ConfigurationTarget::User,
33 ConfigurationOverridesDTO::default(),
34 None,
35 )
36 .await
37 .map_err(|Error| format!("themes:set failed: {}", Error))?;
38
39 let _ = RunTime
40 .Environment
41 .ApplicationHandle
42 .emit(SkyEvent::ThemeChange.AsStr(), json!({ "themeId": ThemeId }));
43
44 Ok(Value::Null)
45}