forked from zelo72/mastodon-ios
chore: update toot relationship in CoreData
This commit is contained in:
parent
99f2e4a854
commit
9670ad2924
|
@ -161,6 +161,42 @@ public extension Toot {
|
|||
}
|
||||
}
|
||||
}
|
||||
func update(reblogged: Bool, mastodonUser: MastodonUser) {
|
||||
if reblogged {
|
||||
if !(self.rebloggedBy ?? Set()).contains(mastodonUser) {
|
||||
self.mutableSetValue(forKey: #keyPath(Toot.rebloggedBy)).addObjects(from: [mastodonUser])
|
||||
}
|
||||
} else {
|
||||
if (self.rebloggedBy ?? Set()).contains(mastodonUser) {
|
||||
self.mutableSetValue(forKey: #keyPath(Toot.rebloggedBy)).remove(mastodonUser)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func update(muted: Bool, mastodonUser: MastodonUser) {
|
||||
if muted {
|
||||
if !(self.mutedBy ?? Set()).contains(mastodonUser) {
|
||||
self.mutableSetValue(forKey: #keyPath(Toot.mutedBy)).addObjects(from: [mastodonUser])
|
||||
}
|
||||
} else {
|
||||
if (self.mutedBy ?? Set()).contains(mastodonUser) {
|
||||
self.mutableSetValue(forKey: #keyPath(Toot.mutedBy)).remove(mastodonUser)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func update(bookmarked: Bool, mastodonUser: MastodonUser) {
|
||||
if bookmarked {
|
||||
if !(self.bookmarkedBy ?? Set()).contains(mastodonUser) {
|
||||
self.mutableSetValue(forKey: #keyPath(Toot.bookmarkedBy)).addObjects(from: [mastodonUser])
|
||||
}
|
||||
} else {
|
||||
if (self.bookmarkedBy ?? Set()).contains(mastodonUser) {
|
||||
self.mutableSetValue(forKey: #keyPath(Toot.bookmarkedBy)).remove(mastodonUser)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func didUpdate(at networkDate: Date) {
|
||||
self.updatedAt = networkDate
|
||||
}
|
||||
|
|
|
@ -73,11 +73,11 @@ extension APIService.CoreData {
|
|||
mentions: metions,
|
||||
emojis: emojis,
|
||||
tags: tags,
|
||||
favouritedBy: (entity.favourited ?? false) ? mastodonUser : nil,
|
||||
rebloggedBy: (entity.reblogged ?? false) ? mastodonUser : nil,
|
||||
mutedBy: (entity.muted ?? false) ? mastodonUser : nil,
|
||||
bookmarkedBy: (entity.bookmarked ?? false) ? mastodonUser : nil,
|
||||
pinnedBy: (entity.pinned ?? false) ? mastodonUser : nil
|
||||
favouritedBy: (entity.favourited ?? false) ? requestMastodonUser : nil,
|
||||
rebloggedBy: (entity.reblogged ?? false) ? requestMastodonUser : nil,
|
||||
mutedBy: (entity.muted ?? false) ? requestMastodonUser : nil,
|
||||
bookmarkedBy: (entity.bookmarked ?? false) ? requestMastodonUser : nil,
|
||||
pinnedBy: (entity.pinned ?? false) ? requestMastodonUser : nil
|
||||
)
|
||||
return (toot, true, isMastodonUserCreated)
|
||||
}
|
||||
|
@ -99,6 +99,24 @@ extension APIService.CoreData {
|
|||
toot.update(reblogsCount:NSNumber(value: entity.reblogsCount))
|
||||
}
|
||||
|
||||
if let mastodonUser = requestMastodonUser {
|
||||
if let favourited = entity.favourited {
|
||||
toot.update(liked: favourited, mastodonUser: mastodonUser)
|
||||
}
|
||||
if let reblogged = entity.reblogged {
|
||||
toot.update(reblogged: reblogged, mastodonUser: mastodonUser)
|
||||
}
|
||||
if let muted = entity.muted {
|
||||
toot.update(muted: muted, mastodonUser: mastodonUser)
|
||||
}
|
||||
if let bookmarked = entity.bookmarked {
|
||||
toot.update(bookmarked: bookmarked, mastodonUser: mastodonUser)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// set updateAt
|
||||
toot.didUpdate(at: networkDate)
|
||||
|
||||
|
|
Loading…
Reference in New Issue