summaryrefslogtreecommitdiff
path: root/crates/vcs_actions/src
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2025-11-25 13:58:58 +0800
committer魏曹先生 <1992414357@qq.com>2025-11-25 13:58:58 +0800
commitf2ecc33f447ba0ccae261720019fa2820aa21875 (patch)
tree81885e09aeb07cffdc6cde9ed1742d04f45b4bd6 /crates/vcs_actions/src
parentb629bcb05b95c700b249d519529e9b6846106df4 (diff)
Add `hold_virtual_file_action` in user actions
Diffstat (limited to 'crates/vcs_actions/src')
-rw-r--r--crates/vcs_actions/src/actions/user_actions.rs36
1 files changed, 36 insertions, 0 deletions
diff --git a/crates/vcs_actions/src/actions/user_actions.rs b/crates/vcs_actions/src/actions/user_actions.rs
index e69de29..6ca1c24 100644
--- a/crates/vcs_actions/src/actions/user_actions.rs
+++ b/crates/vcs_actions/src/actions/user_actions.rs
@@ -0,0 +1,36 @@
+// Hold
+// Throw
+// Import
+// Export
+
+use std::path::PathBuf;
+
+use action_system::{action::ActionContext, macros::action_gen};
+use serde::{Deserialize, Serialize};
+use tcp_connection::error::TcpTargetError;
+
+use crate::actions::{auth_member, check_connection_instance};
+
+#[derive(Serialize, Deserialize)]
+pub enum HoldVirtualFileActionResult {
+ // Success
+ Success,
+
+ // Fail
+ AuthorizeFailed(String),
+}
+
+#[action_gen]
+pub async fn hold_virtual_file_action(
+ ctx: ActionContext,
+ relative_paths: Vec<PathBuf>,
+) -> Result<HoldVirtualFileActionResult, TcpTargetError> {
+ let instance = check_connection_instance(&ctx)?;
+
+ // Auth Member
+ if let Err(e) = auth_member(&ctx, instance).await {
+ return Ok(HoldVirtualFileActionResult::AuthorizeFailed(e.to_string()));
+ }
+
+ Ok(HoldVirtualFileActionResult::Success)
+}