ReadKeep/readeck/UI/AddBookmark/AddBookmarkViewModel.swift
Ilyas Hallak 387a026e7d Translate UI and error messages from German to English
- BookmarkDetail: All user-facing texts and error messages in BookmarkDetailView, BookmarkDetailViewModel, BookmarkLabelsView, and BookmarkLabelsViewModel translated to English.
- Bookmarks: All UI strings, swipe actions, and error messages in BookmarkCardView, BookmarksView, BookmarksViewModel, and related enums translated to English.
- Labels: All UI and error messages in LabelsView and LabelsViewModel translated to English.
- Menu: All sidebar/tab names, navigation titles, and queue texts in BookmarkState, PhoneTabView, PlayerQueueResumeButton, SidebarTab updated to English.
- Settings: All section headers, toggle labels, button texts, and error/success messages in FontSettingsView, FontSettingsViewModel, SettingsContainerView, SettingsGeneralView, SettingsGeneralViewModel, SettingsServerView, SettingsServerViewModel translated to English.
- SpeechPlayer: All player UI texts, progress, and queue messages in SpeechPlayerView translated to English.

This commit unifies the app language to English for all user-facing areas.
2025-07-18 14:57:45 +02:00

88 lines
2.5 KiB
Swift

import Foundation
import UIKit
@Observable
class AddBookmarkViewModel {
private let createBookmarkUseCase = DefaultUseCaseFactory.shared.makeCreateBookmarkUseCase()
var url: String = ""
var title: String = ""
var labelsText: String = ""
var isLoading: Bool = false
var errorMessage: String?
var showErrorAlert: Bool = false
var hasCreated: Bool = false
var clipboardURL: String?
var isValid: Bool {
!url.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty &&
URL(string: url.trimmingCharacters(in: .whitespacesAndNewlines)) != nil
}
var parsedLabels: [String] {
labelsText
.components(separatedBy: ",")
.map { $0.trimmingCharacters(in: .whitespacesAndNewlines) }
.filter { !$0.isEmpty }
}
@MainActor
func createBookmark() async {
guard isValid else { return }
isLoading = true
errorMessage = nil
hasCreated = false
do {
let cleanURL = url.trimmingCharacters(in: .whitespacesAndNewlines)
let cleanTitle = title.trimmingCharacters(in: .whitespacesAndNewlines)
let labels = parsedLabels
let request = CreateBookmarkRequest(
url: cleanURL,
title: cleanTitle.isEmpty ? nil : cleanTitle,
labels: labels.isEmpty ? nil : labels
)
let message = try await createBookmarkUseCase.execute(createRequest: request)
// Optional: Show the server message
print("Server response: \(message)")
clearForm()
hasCreated = true
} catch let error as CreateBookmarkError {
errorMessage = error.localizedDescription
showErrorAlert = true
} catch {
errorMessage = "Error creating bookmark"
showErrorAlert = true
}
isLoading = false
}
func checkClipboard() {
guard let clipboardString = UIPasteboard.general.string,
URL(string: clipboardString) != nil else {
clipboardURL = nil
return
}
clipboardURL = clipboardString
}
func pasteFromClipboard() {
guard let clipboardURL = clipboardURL else { return }
url = clipboardURL
}
func clearForm() {
url = ""
title = ""
labelsText = ""
}
}