diff --git a/CoreDataStack/CoreData.xcdatamodeld/CoreData.xcdatamodel/contents b/CoreDataStack/CoreData.xcdatamodeld/CoreData.xcdatamodel/contents
index 5bc61b648..14c7dc2ec 100644
--- a/CoreDataStack/CoreData.xcdatamodeld/CoreData.xcdatamodel/contents
+++ b/CoreDataStack/CoreData.xcdatamodeld/CoreData.xcdatamodel/contents
@@ -85,7 +85,7 @@
-
+
@@ -132,6 +132,7 @@
+
@@ -181,8 +182,10 @@
+
+
@@ -281,12 +284,12 @@
-
+
-
+
diff --git a/CoreDataStack/Entity/MastodonUser.swift b/CoreDataStack/Entity/MastodonUser.swift
index 6b27b4cd8..b7a101152 100644
--- a/CoreDataStack/Entity/MastodonUser.swift
+++ b/CoreDataStack/Entity/MastodonUser.swift
@@ -47,6 +47,7 @@ final public class MastodonUser: NSManagedObject {
// one-to-many relationship
@NSManaged public private(set) var statuses: Set?
+ @NSManaged public private(set) var notifications: Set?
// many-to-many relationship
@NSManaged public private(set) var favourite: Set?
diff --git a/CoreDataStack/Entity/SearchHistory.swift b/CoreDataStack/Entity/SearchHistory.swift
index da6d98bc2..37191bbe5 100644
--- a/CoreDataStack/Entity/SearchHistory.swift
+++ b/CoreDataStack/Entity/SearchHistory.swift
@@ -11,6 +11,8 @@ import CoreData
public final class SearchHistory: NSManagedObject {
public typealias ID = UUID
@NSManaged public private(set) var identifier: ID
+ @NSManaged public private(set) var domain: String
+ @NSManaged public private(set) var userID: MastodonUser.ID
@NSManaged public private(set) var createAt: Date
@NSManaged public private(set) var updatedAt: Date
@@ -37,9 +39,12 @@ extension SearchHistory {
@discardableResult
public static func insert(
into context: NSManagedObjectContext,
+ property: Property,
account: MastodonUser
) -> SearchHistory {
let searchHistory: SearchHistory = context.insertObject()
+ searchHistory.domain = property.domain
+ searchHistory.userID = property.userID
searchHistory.account = account
return searchHistory
}
@@ -47,9 +52,12 @@ extension SearchHistory {
@discardableResult
public static func insert(
into context: NSManagedObjectContext,
+ property: Property,
hashtag: Tag
) -> SearchHistory {
let searchHistory: SearchHistory = context.insertObject()
+ searchHistory.domain = property.domain
+ searchHistory.userID = property.userID
searchHistory.hashtag = hashtag
return searchHistory
}
@@ -57,20 +65,35 @@ extension SearchHistory {
@discardableResult
public static func insert(
into context: NSManagedObjectContext,
+ property: Property,
status: Status
) -> SearchHistory {
let searchHistory: SearchHistory = context.insertObject()
+ searchHistory.domain = property.domain
+ searchHistory.userID = property.userID
searchHistory.status = status
return searchHistory
}
}
-public extension SearchHistory {
- func update(updatedAt: Date) {
+extension SearchHistory {
+ public func update(updatedAt: Date) {
setValue(updatedAt, forKey: #keyPath(SearchHistory.updatedAt))
}
}
+extension SearchHistory {
+ public struct Property {
+ public let domain: String
+ public let userID: MastodonUser.ID
+
+ public init(domain: String, userID: MastodonUser.ID) {
+ self.domain = domain
+ self.userID = userID
+ }
+ }
+}
+
extension SearchHistory: Managed {
public static var defaultSortDescriptors: [NSSortDescriptor] {
return [NSSortDescriptor(keyPath: \SearchHistory.updatedAt, ascending: false)]
diff --git a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist
index 238c933d4..fd09596bc 100644
--- a/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/Mastodon.xcodeproj/xcuserdata/mainasuk.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -12,7 +12,7 @@
CoreDataStack.xcscheme_^#shared#^_
orderHint
- 21
+ 22
Mastodon - ASDK.xcscheme_^#shared#^_
@@ -37,12 +37,12 @@
NotificationService.xcscheme_^#shared#^_
orderHint
- 22
+ 23
ShareActionExtension.xcscheme_^#shared#^_
orderHint
- 23
+ 21
SuppressBuildableAutocreation
diff --git a/Mastodon/Scene/Search/SearchDetail/SearchHistory/SearchHistoryViewModel.swift b/Mastodon/Scene/Search/SearchDetail/SearchHistory/SearchHistoryViewModel.swift
index acfd995ff..d3d41e90a 100644
--- a/Mastodon/Scene/Search/SearchDetail/SearchHistory/SearchHistoryViewModel.swift
+++ b/Mastodon/Scene/Search/SearchDetail/SearchHistory/SearchHistoryViewModel.swift
@@ -81,6 +81,9 @@ extension SearchHistoryViewModel {
extension SearchHistoryViewModel {
func persistSearchHistory(for item: SearchHistoryItem) {
+ guard let box = context.authenticationService.activeMastodonAuthenticationBox.value else { return }
+ let property = SearchHistory.Property(domain: box.domain, userID: box.userID)
+
switch item {
case .account(let objectID):
let managedObjectContext = context.backgroundManagedObjectContext
@@ -89,7 +92,7 @@ extension SearchHistoryViewModel {
if let searchHistory = user.searchHistory {
searchHistory.update(updatedAt: Date())
} else {
- SearchHistory.insert(into: managedObjectContext, account: user)
+ SearchHistory.insert(into: managedObjectContext, property: property, account: user)
}
}
.sink { result in
@@ -104,7 +107,7 @@ extension SearchHistoryViewModel {
if let searchHistory = hashtag.searchHistory {
searchHistory.update(updatedAt: Date())
} else {
- SearchHistory.insert(into: managedObjectContext, hashtag: hashtag)
+ SearchHistory.insert(into: managedObjectContext, property: property, hashtag: hashtag)
}
}
.sink { result in
diff --git a/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel.swift b/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel.swift
index 0ace96226..181302a24 100644
--- a/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel.swift
+++ b/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewModel.swift
@@ -142,6 +142,7 @@ extension SearchResultViewModel {
extension SearchResultViewModel {
func persistSearchHistory(for item: SearchResultItem) {
guard let box = context.authenticationService.activeMastodonAuthenticationBox.value else { return }
+ let property = SearchHistory.Property(domain: box.domain, userID: box.userID)
let domain = box.domain
switch item {
@@ -160,7 +161,7 @@ extension SearchResultViewModel {
if let searchHistory = user.searchHistory {
searchHistory.update(updatedAt: Date())
} else {
- SearchHistory.insert(into: managedObjectContext, account: user)
+ SearchHistory.insert(into: managedObjectContext, property: property, account: user)
}
}
.sink { result in
@@ -178,7 +179,7 @@ extension SearchResultViewModel {
if let searchHistory = hashtag.searchHistory {
searchHistory.update(updatedAt: Date())
} else {
- SearchHistory.insert(into: managedObjectContext, hashtag: hashtag)
+ SearchHistory.insert(into: managedObjectContext, property: property, hashtag: hashtag)
}
}
.sink { result in