Skip to main content

Mountain/IPC/WindServiceHandlers/UI/
ThemesSet.rs

1#![allow(unused_variables)]
2
3//! Wire method: `themes:set`.
4
5use 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}