diff --git a/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewMac.swift b/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewMac.swift index c7d456219..c8b29b011 100644 --- a/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewMac.swift +++ b/apple/OmnivoreKit/Sources/App/Views/Home/HomeFeedViewMac.swift @@ -68,7 +68,7 @@ import Views action: { addLinkPresented = true }, - label: { Label("Add Link", systemImage: "plus") } + label: { Label("Add link", systemImage: "plus") } ) } diff --git a/apple/OmnivoreKit/Sources/App/Views/Home/LibraryAddFeedView.swift b/apple/OmnivoreKit/Sources/App/Views/Home/LibraryAddFeedView.swift index bc8834f9d..2e3d9287e 100644 --- a/apple/OmnivoreKit/Sources/App/Views/Home/LibraryAddFeedView.swift +++ b/apple/OmnivoreKit/Sources/App/Views/Home/LibraryAddFeedView.swift @@ -25,9 +25,11 @@ struct LibraryAddFeedView: View { var body: some View { Group { #if os(iOS) - innerBody - .navigationTitle("Add Feed URL") - .navigationBarTitleDisplayMode(.inline) + Form { + innerBody + .navigationTitle("Add Feed URL") + .navigationBarTitleDisplayMode(.inline) + } #else innerBody #endif @@ -80,7 +82,7 @@ struct LibraryAddFeedView: View { } var innerBody: some View { - List { + Group { Section { TextField("Feed or site URL", text: $feedURL) #if os(iOS) diff --git a/apple/OmnivoreKit/Sources/App/Views/LibraryTabView.swift b/apple/OmnivoreKit/Sources/App/Views/LibraryTabView.swift index 3b63712c3..4baad2b2f 100644 --- a/apple/OmnivoreKit/Sources/App/Views/LibraryTabView.swift +++ b/apple/OmnivoreKit/Sources/App/Views/LibraryTabView.swift @@ -24,6 +24,8 @@ struct LibraryTabView: View { @State var showExpandedAudioPlayer = false + private let syncManager = LibrarySyncManager() + @MainActor public init() { UITabBar.appearance().isHidden = true @@ -53,7 +55,16 @@ struct LibraryTabView: View { ) ) - private let syncManager = LibrarySyncManager() + var currentViewModel: HomeFeedViewModel? { + switch selectedTab { + case "inbox": + return inboxViewModel + case "following": + return followingViewModel + default: + return nil + } + } var body: some View { VStack(spacing: 0) { @@ -91,7 +102,23 @@ struct LibraryTabView: View { .padding(0) } .fullScreenCover(isPresented: $showExpandedAudioPlayer) { - ExpandedAudioPlayer() + ExpandedAudioPlayer( + delete: { + showExpandedAudioPlayer = false + audioController.stop() + currentViewModel?.removeLibraryItem(dataService: dataService, objectID: $0) + }, + archive: { + showExpandedAudioPlayer = false + audioController.stop() + currentViewModel?.setLinkArchived(dataService: dataService, objectID: $0, archived: true) + }, + viewArticle: { itemID in + if let article = try? dataService.viewContext.existingObject(with: itemID) as? Models.LibraryItem { + currentViewModel?.pushFeedItem(item: article) + } + } + ) } .navigationBarHidden(true) .onReceive(NSNotification.performSyncPublisher) { _ in diff --git a/apple/OmnivoreKit/Sources/App/Views/WebReader/WebReaderContainer.swift b/apple/OmnivoreKit/Sources/App/Views/WebReader/WebReaderContainer.swift index ae752df32..fd490e810 100644 --- a/apple/OmnivoreKit/Sources/App/Views/WebReader/WebReaderContainer.swift +++ b/apple/OmnivoreKit/Sources/App/Views/WebReader/WebReaderContainer.swift @@ -453,7 +453,15 @@ struct WebReaderContainerView: View { .ignoresSafeArea(.all, edges: .bottom) } .fullScreenCover(isPresented: $showExpandedAudioPlayer) { - ExpandedAudioPlayer() + ExpandedAudioPlayer(delete: { _ in + showExpandedAudioPlayer = false + delete() + }, archive: { _ in + showExpandedAudioPlayer = false + archive() + }, viewArticle: { _ in + showExpandedAudioPlayer = false + }) } #endif .alert(errorAlertMessage ?? LocalText.readerError, isPresented: $showErrorAlertMessage) { diff --git a/apple/OmnivoreKit/Sources/Models/DataModels/FeedItem.swift b/apple/OmnivoreKit/Sources/Models/DataModels/FeedItem.swift index 874e75010..8c999c3da 100644 --- a/apple/OmnivoreKit/Sources/Models/DataModels/FeedItem.swift +++ b/apple/OmnivoreKit/Sources/Models/DataModels/FeedItem.swift @@ -32,7 +32,7 @@ public struct LinkedItemAudioProperties { public let itemID: String public let objectID: NSManagedObjectID public let title: String - public let isArchived: Bool + public var isArchived: Bool public let byline: String? public let imageURL: URL? public let language: String?