fix(notes): debounce transcription longer, max 1 line title, add multiple lines in transcription
This commit is contained in:
@@ -35,6 +35,7 @@ struct FieldEditorView: View {
|
|||||||
@State private var viewAppeared = false
|
@State private var viewAppeared = false
|
||||||
@State private var showingTagPicker = false
|
@State private var showingTagPicker = false
|
||||||
@State private var newTagName = ""
|
@State private var newTagName = ""
|
||||||
|
@State private var recognitionWorkItem: DispatchWorkItem?
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
NavigationView {
|
NavigationView {
|
||||||
@@ -174,31 +175,31 @@ struct FieldEditorView: View {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private func recognizeHandwriting(_ drawing: PKDrawing) {
|
private func recognizeHandwriting(_ drawing: PKDrawing) {
|
||||||
print("=== recognizeHandwriting called ===")
|
|
||||||
print("Drawing bounds: \(drawing.bounds)")
|
|
||||||
print("Drawing is empty: \(drawing.bounds.isEmpty)")
|
|
||||||
|
|
||||||
guard !drawing.bounds.isEmpty else {
|
guard !drawing.bounds.isEmpty else {
|
||||||
print("Drawing bounds are empty, skipping recognition")
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
print("Starting recognition...")
|
// Cancel any pending recognition
|
||||||
isRecognizing = true
|
recognitionWorkItem?.cancel()
|
||||||
Task {
|
|
||||||
if let recognizedText = await HandwritingRecognizer.recognizeTextAsync(from: drawing) {
|
// Create new work item with debounce
|
||||||
print("Recognition successful: \(recognizedText)")
|
let workItem = DispatchWorkItem { [drawing] in
|
||||||
await MainActor.run {
|
Task { @MainActor in
|
||||||
|
isRecognizing = true
|
||||||
|
|
||||||
|
if let recognizedText = await HandwritingRecognizer.recognizeTextAsync(from: drawing) {
|
||||||
text = recognizedText
|
text = recognizedText
|
||||||
isRecognizing = false
|
isRecognizing = false
|
||||||
}
|
} else {
|
||||||
} else {
|
|
||||||
print("Recognition returned nil")
|
|
||||||
await MainActor.run {
|
|
||||||
isRecognizing = false
|
isRecognizing = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
recognitionWorkItem = workItem
|
||||||
|
|
||||||
|
// Execute after 3 seconds delay (same as NotesListView)
|
||||||
|
DispatchQueue.main.asyncAfter(deadline: .now() + 3.0, execute: workItem)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -87,7 +87,7 @@ class HandwritingRecognizer {
|
|||||||
|
|
||||||
print("Recognized strings: \(recognizedStrings)")
|
print("Recognized strings: \(recognizedStrings)")
|
||||||
|
|
||||||
let recognizedText = recognizedStrings.joined(separator: " ")
|
let recognizedText = recognizedStrings.joined(separator: "\n")
|
||||||
completion(recognizedText.isEmpty ? nil : recognizedText)
|
completion(recognizedText.isEmpty ? nil : recognizedText)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -159,7 +159,7 @@ struct NoteRowView: View {
|
|||||||
VStack(alignment: .leading, spacing: 4) {
|
VStack(alignment: .leading, spacing: 4) {
|
||||||
Text(note.title)
|
Text(note.title)
|
||||||
.font(.body)
|
.font(.body)
|
||||||
.lineLimit(2)
|
.lineLimit(1)
|
||||||
|
|
||||||
if note.timestamp != nil {
|
if note.timestamp != nil {
|
||||||
Text(timeAgo)
|
Text(timeAgo)
|
||||||
@@ -379,7 +379,7 @@ struct NoteEditorContentOnly: View {
|
|||||||
|
|
||||||
recognitionWorkItem = workItem
|
recognitionWorkItem = workItem
|
||||||
|
|
||||||
// Execute after 800ms delay (adjust as needed)
|
// Execute after 3 seconds delay
|
||||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.8, execute: workItem)
|
DispatchQueue.main.asyncAfter(deadline: .now() + 3.0, execute: workItem)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user