From 92040baef02d70d268845bf0e106effb7340c2c8 Mon Sep 17 00:00:00 2001 From: Qiu Yuzhou Date: Mon, 28 Sep 2026 10:54:34 +0800 Subject: [PATCH] fix(ng2): remove direct clipboard import shortcut --- .../App/CatalogWorkflow/CatalogWorkflow.swift | 2 +- ShadowsocksX-NG2/App/ImportSheets.swift | 4 +-- ShadowsocksX-NG2/App/WorkspaceView.swift | 25 +------------------ 3 files changed, 4 insertions(+), 27 deletions(-) diff --git a/ShadowsocksX-NG2/App/CatalogWorkflow/CatalogWorkflow.swift b/ShadowsocksX-NG2/App/CatalogWorkflow/CatalogWorkflow.swift index baa15add..53bed0d7 100644 --- a/ShadowsocksX-NG2/App/CatalogWorkflow/CatalogWorkflow.swift +++ b/ShadowsocksX-NG2/App/CatalogWorkflow/CatalogWorkflow.swift @@ -130,7 +130,7 @@ final class CatalogWorkflow: ObservableObject { // MARK: - 手动服务器/分组命令 - /// ss:// 批量导入(剪贴板、导入 URL、二维码识别三入口的共同落点,story 20/21)。 + /// ss:// 批量导入(URL 表单和二维码识别入口的共同落点,story 20/21)。 /// 逐行解码,可解析行全部添加(每次新建身份,不按内容去重);每条失败行以 /// 行号 + 类型化原因点名,已成功记录不被局部失败回滚。 func createServers(fromURIs text: String, into parent: NodeID?) async throws diff --git a/ShadowsocksX-NG2/App/ImportSheets.swift b/ShadowsocksX-NG2/App/ImportSheets.swift index cedf550c..6f93e893 100644 --- a/ShadowsocksX-NG2/App/ImportSheets.swift +++ b/ShadowsocksX-NG2/App/ImportSheets.swift @@ -1,8 +1,8 @@ import SwiftUI import UniformTypeIdentifiers -/// 「通过 URL 导入」表单(issue #32 添加入口之二):粘贴 ss:// 链接(每行一条), -/// 与剪贴板入口共用工作流的批量落点;逐行结构化结果在呈现层格式化。 +/// 「通过 URL 导入」表单:输入或粘贴 ss:// 链接(每行一条)后由用户确认导入; +/// 逐行结构化结果在呈现层格式化。 struct ImportURLSheet: View { let workflow: CatalogWorkflow let errors: ErrorAlertPresenter diff --git a/ShadowsocksX-NG2/App/WorkspaceView.swift b/ShadowsocksX-NG2/App/WorkspaceView.swift index e28ced9f..49526992 100644 --- a/ShadowsocksX-NG2/App/WorkspaceView.swift +++ b/ShadowsocksX-NG2/App/WorkspaceView.swift @@ -196,13 +196,12 @@ extension ServersView { } } - // MARK: - 工具栏(添加三入口 + 新建分组) + // MARK: - 工具栏(添加与新建分组) @ToolbarContentBuilder private var toolbarContent: some ToolbarContent { ToolbarItem(placement: .primaryAction) { Menu { - Button("从剪贴板导入 ss://") { importFromClipboard() } Button("通过 URL 导入…") { showImportURLSheet = true } Button("从二维码图片导入…") { showQRImportSheet = true } if workflow.legacyImportState.snapshotFound { @@ -224,28 +223,6 @@ extension ServersView { } } - /// 剪贴板入口:整段剪贴板文本按行解析导入当前落点。 - private func importFromClipboard() { - let text = clipboard.read() ?? "" - performImport(text) - } - - private func performImport(_ text: String) { - Task { - do { - let parent = workflow.importTargetParent(for: selection) - let outcome = try await workflow.createServers(fromURIs: text, into: parent) - if outcome.addedCount == 0 && outcome.failures.isEmpty { - errors.present(text: "剪贴板没有可导入的文本") - } else if let message = ImportOutcomePresentation.failureMessage(outcome) { - errors.present(text: message) - } - } catch { - errors.present(error) - } - } - } - // MARK: - 告警动作 private func commitRename() {