From 57c481ccfdf1ef913c16577c29f29cb4f9f24f19 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Mon, 30 Oct 2023 19:16:47 +0800 Subject: [PATCH] Add editinfo to share extension --- .../Share/Views/AddNoteSheet.swift | 2 +- .../Share/Views/EditInfoSheet.swift | 50 +++++++++++++++++++ .../Share/Views/ShareExtensionView.swift | 4 +- .../Views/LinkedItemMetadataEditView.swift | 6 +-- .../ShareExtensionViewController.swift | 8 +++ 5 files changed, 65 insertions(+), 5 deletions(-) create mode 100644 apple/OmnivoreKit/Sources/App/AppExtensions/Share/Views/EditInfoSheet.swift diff --git a/apple/OmnivoreKit/Sources/App/AppExtensions/Share/Views/AddNoteSheet.swift b/apple/OmnivoreKit/Sources/App/AppExtensions/Share/Views/AddNoteSheet.swift index 6a613d386..335f53cc2 100644 --- a/apple/OmnivoreKit/Sources/App/AppExtensions/Share/Views/AddNoteSheet.swift +++ b/apple/OmnivoreKit/Sources/App/AppExtensions/Share/Views/AddNoteSheet.swift @@ -48,7 +48,7 @@ public struct AddNoteSheet: View { .task { self.focusedField = .noteEditor } - .background(Color.extensionPanelBackground) + .background(Color.extensionBackground) .navigationTitle("Add Note") .navigationBarTitleDisplayMode(.inline) .navigationBarItems(leading: Button(action: { diff --git a/apple/OmnivoreKit/Sources/App/AppExtensions/Share/Views/EditInfoSheet.swift b/apple/OmnivoreKit/Sources/App/AppExtensions/Share/Views/EditInfoSheet.swift new file mode 100644 index 000000000..45dea726b --- /dev/null +++ b/apple/OmnivoreKit/Sources/App/AppExtensions/Share/Views/EditInfoSheet.swift @@ -0,0 +1,50 @@ +// +// EditInfoSheet.swift +// +// +// Created by Jackson Harper on 10/30/23. +// + +import Models +import Services +import SwiftUI +import Utils +import Views + +public struct EditInfoSheet: View { + @Environment(\.dismiss) private var dismiss + + @StateObject var viewModel: ShareExtensionViewModel + let highlightId = UUID().uuidString.lowercased() + let shortId = NanoID.generate(alphabet: NanoID.Alphabet.urlSafe.rawValue, size: 8) + + enum FocusField: Hashable { + case noteEditor + } + + @FocusState private var focusedField: FocusField? + + public init(viewModel: ShareExtensionViewModel) { + _viewModel = StateObject(wrappedValue: viewModel) + UITextView.appearance().textContainerInset = UIEdgeInsets(top: 8, left: 4, bottom: 10, right: 4) + } + +// func saveInfo() { +// if let linkedItem = viewModel.linkedItem { +// _ = viewModel.services.dataService.updateLinkedItemTitleAndDescription(itemID: linkedItem.unwrappedID, title: title, description: description, author: author) +// } else { +// // Maybe we shouldn't even allow this UI without linkeditem existing +// } +// } + + public var body: some View { + if let item = viewModel.linkedItem { + LinkedItemMetadataEditView(item: item) { title, _ in + viewModel.title = title + } + .environmentObject(viewModel.services.dataService) + } else { + ProgressView() + } + } +} diff --git a/apple/OmnivoreKit/Sources/App/AppExtensions/Share/Views/ShareExtensionView.swift b/apple/OmnivoreKit/Sources/App/AppExtensions/Share/Views/ShareExtensionView.swift index 715db6ea5..8954e26b1 100644 --- a/apple/OmnivoreKit/Sources/App/AppExtensions/Share/Views/ShareExtensionView.swift +++ b/apple/OmnivoreKit/Sources/App/AppExtensions/Share/Views/ShareExtensionView.swift @@ -159,7 +159,9 @@ public struct ShareExtensionView: View { var moreMenuButton: some View { Menu { - Button(action: {}, label: { + Button(action: { + NotificationCenter.default.post(name: Notification.Name("ShowEditInfoSheet"), object: nil) + }, label: { Label( "Edit Info", systemImage: "info.circle" diff --git a/apple/OmnivoreKit/Sources/App/Views/LinkedItemMetadataEditView.swift b/apple/OmnivoreKit/Sources/App/Views/LinkedItemMetadataEditView.swift index d7f81aef7..6258fee2f 100644 --- a/apple/OmnivoreKit/Sources/App/Views/LinkedItemMetadataEditView.swift +++ b/apple/OmnivoreKit/Sources/App/Views/LinkedItemMetadataEditView.swift @@ -95,13 +95,13 @@ struct LinkedItemMetadataEditView: View { var iOSBody: some View { NavigationView { editForm - .navigationTitle("Edit Title and Description") + .navigationTitle("Edit Info") .navigationBarTitleDisplayMode(.inline) .toolbar { ToolbarItem(placement: .barLeading) { Button( action: { presentationMode.wrappedValue.dismiss() }, - label: { Text(LocalText.cancelGeneric).foregroundColor(.appGrayTextContrast) } + label: { Text(LocalText.cancelGeneric) } ) } ToolbarItem(placement: .barTrailing) { @@ -113,7 +113,7 @@ struct LinkedItemMetadataEditView: View { } presentationMode.wrappedValue.dismiss() }, - label: { Text(LocalText.genericSave).foregroundColor(.appGrayTextContrast) } + label: { Text(LocalText.genericSave).bold() } ) } } diff --git a/apple/Sources/ShareExtension/ShareExtensionViewController.swift b/apple/Sources/ShareExtension/ShareExtensionViewController.swift index f72d5798f..73c8f6242 100644 --- a/apple/Sources/ShareExtension/ShareExtensionViewController.swift +++ b/apple/Sources/ShareExtension/ShareExtensionViewController.swift @@ -32,6 +32,14 @@ import Views self.openSheet(AnyView(EditLabelsSheet(viewModel: self.viewModel, labelsViewModel: self.labelsViewModel))) } + NotificationCenter.default.addObserver( + forName: Notification.Name("ShowEditInfoSheet"), + object: nil, + queue: OperationQueue.main + ) { _ in + self.openSheet(AnyView(EditInfoSheet(viewModel: self.viewModel))) + } + embed( childViewController: UIViewController.makeShareExtensionController( viewModel: viewModel,