Skip to content

Commit

Permalink
Merge branch 'develop' into share-extension
Browse files Browse the repository at this point in the history
  • Loading branch information
bassrock committed May 4, 2023
2 parents c90bbac + 9d0e037 commit cad861b
Show file tree
Hide file tree
Showing 10 changed files with 63 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,14 @@ struct PocketItem {
item.remoteItemParts
}

var url: URL? {
var bestURL: URL? {
item.bestURL
}

var savedItemURL: URL? {
item.savedItemURL
}

var cursor: String? {
item.cursor
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,7 @@ class PocketItemViewModel: ObservableObject {
}

private func _share() {
if let url = item.url {
if let url = item.savedItemURL {
tracker.track(event: Events.Search.shareItem(itemUrl: url, positionInList: index, scope: scope))
} else {
Log.capture(message: "Selected search item without an associated url, not logging analytics for shareItem")
Expand Down Expand Up @@ -149,7 +149,7 @@ class PocketItemViewModel: ObservableObject {
/// Fetch a SavedItem or create one in order to use actions related to source
private func fetchSavedItem() -> SavedItem? {
guard
let url = item.url,
let url = item.savedItemURL,
let savedItem = source.fetchOrCreateSavedItem(
with: url,
and: item.remoteItemParts
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ protocol ItemsListItem {
var host: String? { get }
var tagNames: [String]? { get }
var remoteItemParts: SavedItemParts? { get }
var savedItemURL: URL? { get }
var cursor: String? { get }
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,10 @@ extension SavedItem: ItemsListItem {
var cursor: String? {
item?.savedItem?.cursor
}

var savedItemURL: URL? {
url
}
}

extension DomainMetadata: ItemsListItemDomainMetadata {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ struct ListItem: View {
ActionButton(viewModel.favoriteAction(), selected: viewModel.isFavorite)
ActionButton(viewModel.shareAction())
.sheet(isPresented: $viewModel.presentShareSheet) {
ShareSheetView(activity: PocketItemActivity.fromSaves(url: viewModel.item.url))
ShareSheetView(activity: PocketItemActivity.fromSaves(url: viewModel.item.bestURL))
.presentationDetents([.medium])
}
// Instead of using existing code of overflow, we created a new SwiftUI view
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,10 @@ extension SearchSavedItem: ItemsListItem {
var tagNames: [String]? {
remoteItem.tags?.compactMap { $0.name }.sorted()
}

var savedItemURL: URL? {
URL(string: remoteItem.url)
}
}

extension SavedItemParts.Item.AsItem.DomainMetadata: ItemsListItemDomainMetadata { }
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ struct ResultsView: View {
if triggerNextPage {
viewModel.loadMoreSearchResults(with: item, at: index)
}
viewModel.trackViewResults(url: item.url, index: index)
viewModel.trackViewResults(url: item.savedItemURL, index: index)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -411,7 +411,7 @@ extension SearchViewModel: SearchResultActionDelegate {

func select(_ searchItem: PocketItem, index: Int) {
guard
let url = searchItem.url,
let url = searchItem.savedItemURL,
let savedItem = source.fetchOrCreateSavedItem(
with: url,
and: searchItem.remoteItemParts
Expand Down Expand Up @@ -501,7 +501,7 @@ extension SearchViewModel: SearchResultActionDelegate {

func fetchSavedItem(_ searchItem: PocketItem) -> SavedItem? {
guard
let url = searchItem.url,
let url = searchItem.savedItemURL,
let savedItem = source.fetchOrCreateSavedItem(
with: url,
and: searchItem.remoteItemParts
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import XCTest
import Analytics
import SharedPocketKit
import PocketGraph

@testable import PocketKit
@testable import Sync
Expand Down Expand Up @@ -192,4 +193,41 @@ class PocketItemViewModelTests: XCTestCase {

wait(for: [expectDelete, expectFetchSavedItemCall], timeout: 10)
}

func test_fetchSavedItem_withURLandRemoteParts_shouldMatch() {
let item = space.buildSavedItem()
let searchItem = setupSearchItem()

let expectFetchSavedItemCall = expectation(description: "expect source.fetchOrCreateSavedItem(_:)")

source.stubFetchSavedItem { _ in
defer { expectFetchSavedItemCall.fulfill() }
return item
}

let pocketItem = PocketItem(item: searchItem)
let viewModel = subject(item: pocketItem)

viewModel.trackOverflowMenu()

wait(for: [expectFetchSavedItemCall], timeout: 10)

XCTAssertEqual(viewModel.item.remoteItemParts?.url, pocketItem.savedItemURL?.absoluteString)
}

private func setupSearchItem() -> SearchSavedItem {
let itemParts = SavedItemParts(
url: "http://example.com/item-1",
remoteID: "saved-item-1",
isArchived: false,
isFavorite: false,
_createdAt: 1,
item: SavedItemParts.Item.AsItem(
remoteID: "item-1",
givenUrl: "http://localhost:8080/hello",
title: "Item 1"
).asRootEntityType
)
return SearchSavedItem(remoteItem: itemParts)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ struct MockItemsListItem: ItemsListItem {
let host: String?
let tagNames: [String]?
let cursor: String?
let savedItemURL: URL?

static func build(
id: String? = nil,
Expand All @@ -54,7 +55,8 @@ struct MockItemsListItem: ItemsListItem {
isPending: Bool = false,
host: String? = nil,
tagNames: [String]? = nil,
cursor: String? = nil
cursor: String? = nil,
savedItemURL: URL? = nil
) -> MockItemsListItem {
MockItemsListItem(
id: id,
Expand All @@ -69,7 +71,8 @@ struct MockItemsListItem: ItemsListItem {
isPending: isPending,
host: host,
tagNames: tagNames,
cursor: cursor
cursor: cursor,
savedItemURL: savedItemURL
)
}
}
Expand Down

0 comments on commit cad861b

Please sign in to comment.