Skip to main content

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}