fix(ng2): remove direct clipboard import shortcut

This commit is contained in:
Qiu Yuzhou
2026-09-28 10:54:34 +08:00
parent 67ced2674a
commit 92040baef0
3 changed files with 4 additions and 27 deletions
@@ -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
+2 -2
View File
@@ -1,8 +1,8 @@
import SwiftUI
import UniformTypeIdentifiers
/// 「通过 URL 导入」表单(issue #32 添加入口之二):粘贴 ss:// 链接(每行一条),
/// 与剪贴板入口共用工作流的批量落点;逐行结构化结果在呈现层格式化。
/// 「通过 URL 导入」表单:输入或粘贴 ss:// 链接(每行一条)后由用户确认导入;
/// 逐行结构化结果在呈现层格式化。
struct ImportURLSheet: View {
let workflow: CatalogWorkflow
let errors: ErrorAlertPresenter
+1 -24
View File
@@ -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() {