Mountain/IPC/WindServiceHandlers/UI/WorkspacesRemoveFolder.rs
1#![allow(unused_variables)]
2
3//! Wire method: `workspaces:removeFolder`.
4
5use std::sync::Arc;
6
7use serde_json::Value;
8
9use crate::{
10 ApplicationState::State::WorkspaceState::WorkspaceDelta::UpdateWorkspaceFoldersAndNotify,
11 RunTime::ApplicationRunTime::ApplicationRunTime,
12};
13
14pub async fn Fn(RunTime:Arc<ApplicationRunTime>, Arguments:Vec<Value>) -> Result<Value, String> {
15 let UriStr = Arguments
16 .first()
17 .and_then(|V| V.as_str())
18 .ok_or("workspaces:removeFolder requires uri as first argument".to_string())?
19 .to_string();
20
21 let Workspace = &RunTime.Environment.ApplicationState.Workspace;
22
23 let mut Folders = Workspace.GetWorkspaceFolders();
24
25 Folders.retain(|F| F.URI.to_string() != UriStr);
26
27 for (I, F) in Folders.iter_mut().enumerate() {
28 F.Index = I;
29 }
30
31 UpdateWorkspaceFoldersAndNotify(Workspace, Folders);
32
33 Ok(Value::Null)
34}