From ba74430d1092641afda7a2d4fbcb29c9c346186f Mon Sep 17 00:00:00 2001 From: Ilyas Hallak Date: Wed, 17 Sep 2025 13:36:36 +0200 Subject: [PATCH] feat: Improve label input functionality - Split label input on space to create multiple labels at once - Disable autocapitalization in tag search field - Prevent duplicate labels when adding multiple at once --- .../UI/BookmarkDetail/BookmarkLabelsViewModel.swift | 11 ++++++++--- readeck/UI/Components/TagManagementView.swift | 1 + 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/readeck/UI/BookmarkDetail/BookmarkLabelsViewModel.swift b/readeck/UI/BookmarkDetail/BookmarkLabelsViewModel.swift index fa13119..58a5533 100644 --- a/readeck/UI/BookmarkDetail/BookmarkLabelsViewModel.swift +++ b/readeck/UI/BookmarkDetail/BookmarkLabelsViewModel.swift @@ -73,10 +73,15 @@ class BookmarkLabelsViewModel { @MainActor func addLabel(to bookmarkId: String, label: String) async { - let trimmedLabel = label.trimmingCharacters(in: .whitespacesAndNewlines) - guard !trimmedLabel.isEmpty else { return } + let individualLabels = label + .components(separatedBy: " ") + .map { $0.trimmingCharacters(in: .whitespacesAndNewlines) } + .filter { !$0.isEmpty } + .filter { !currentLabels.contains($0) } - await addLabels(to: bookmarkId, labels: [trimmedLabel]) + guard !individualLabels.isEmpty else { return } + + await addLabels(to: bookmarkId, labels: individualLabels) newLabelText = "" searchText = "" } diff --git a/readeck/UI/Components/TagManagementView.swift b/readeck/UI/Components/TagManagementView.swift index 3d0568d..b6cb1e4 100644 --- a/readeck/UI/Components/TagManagementView.swift +++ b/readeck/UI/Components/TagManagementView.swift @@ -133,6 +133,7 @@ struct TagManagementView: View { .textFieldStyle(CustomTextFieldStyle()) .keyboardType(.default) .autocorrectionDisabled(true) + .autocapitalization(.none) .onSubmit { onAddCustomTag() }