mirror of
https://github.com/shadowsocks/ShadowsocksX-NG.git
synced 2026-11-05 17:24:18 +00:00
fix(ng2): remove direct clipboard import shortcut
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import SwiftUI
|
||||
import UniformTypeIdentifiers
|
||||
|
||||
/// 「通过 URL 导入」表单(issue #32 添加入口之二):粘贴 ss:// 链接(每行一条),
|
||||
/// 与剪贴板入口共用工作流的批量落点;逐行结构化结果在呈现层格式化。
|
||||
/// 「通过 URL 导入」表单:输入或粘贴 ss:// 链接(每行一条)后由用户确认导入;
|
||||
/// 逐行结构化结果在呈现层格式化。
|
||||
struct ImportURLSheet: View {
|
||||
let workflow: CatalogWorkflow
|
||||
let errors: ErrorAlertPresenter
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user