MCPcopy Create free account
hub / github.com/NVIDIA/OpenShell / spawn_set_sandbox_setting

Function spawn_set_sandbox_setting

crates/openshell-tui/src/lib.rs:2137–2203  ·  view source on GitHub ↗
(app: &App, tx: mpsc::UnboundedSender<Event>)

Source from the content-addressed store, hash-verified

2135}
2136
2137fn spawn_set_sandbox_setting(app: &App, tx: mpsc::UnboundedSender<Event>) {
2138 let Some(ref edit) = app.sandbox_setting_edit else {
2139 return;
2140 };
2141 let Some(entry) = app.sandbox_settings.get(edit.index) else {
2142 return;
2143 };
2144 let Some(sandbox_name) = app.selected_sandbox_name() else {
2145 return;
2146 };
2147
2148 let name = sandbox_name.to_string();
2149 let key = entry.key.clone();
2150 let raw = edit.input.trim().to_string();
2151 let kind = entry.kind;
2152 let mut client = app.client.clone();
2153
2154 tokio::spawn(async move {
2155 use openshell_core::proto::{SettingValue, UpdateConfigRequest, setting_value};
2156
2157 let value = match kind {
2158 openshell_core::settings::SettingValueKind::Bool => {
2159 if let Some(v) = openshell_core::settings::parse_bool_like(&raw) {
2160 setting_value::Value::BoolValue(v)
2161 } else {
2162 let _ = tx.send(Event::SandboxSettingSetResult(Err(format!(
2163 "invalid bool value: {raw}"
2164 ))));
2165 return;
2166 }
2167 }
2168 openshell_core::settings::SettingValueKind::Int => {
2169 if let Ok(v) = raw.parse::<i64>() {
2170 setting_value::Value::IntValue(v)
2171 } else {
2172 let _ = tx.send(Event::SandboxSettingSetResult(Err(format!(
2173 "invalid int value: {raw}"
2174 ))));
2175 return;
2176 }
2177 }
2178 openshell_core::settings::SettingValueKind::String => {
2179 setting_value::Value::StringValue(raw)
2180 }
2181 };
2182
2183 let req = UpdateConfigRequest {
2184 name,
2185 policy: None,
2186 setting_key: key,
2187 setting_value: Some(SettingValue { value: Some(value) }),
2188 delete_setting: false,
2189 global: false,
2190 merge_operations: vec![],
2191 expected_resource_version: 0,
2192 };
2193
2194 let result = tokio::time::timeout(Duration::from_secs(5), client.update_config(req)).await;

Callers 1

runFunction · 0.85

Calls 6

parse_bool_likeFunction · 0.85
selected_sandbox_nameMethod · 0.80
messageMethod · 0.80
spawnFunction · 0.50
getMethod · 0.45
update_configMethod · 0.45

Tested by

no test coverage detected