Models WIP: RantFeed
This commit is contained in:
parent
2a15f2ea73
commit
fc331b32c3
@ -12,7 +12,7 @@ public struct Comment: Identifiable, Hashable {
|
|||||||
public let voteState: VoteState
|
public let voteState: VoteState
|
||||||
|
|
||||||
/// The number of upvotes from other users.
|
/// The number of upvotes from other users.
|
||||||
public var score: Int
|
public let score: Int
|
||||||
|
|
||||||
/// The user who wrote this comment.
|
/// The user who wrote this comment.
|
||||||
public let author: User
|
public let author: User
|
||||||
@ -27,7 +27,7 @@ public struct Comment: Identifiable, Hashable {
|
|||||||
public let text: String
|
public let text: String
|
||||||
|
|
||||||
/// The URLs and user mentions inside of the text of this comment.
|
/// The URLs and user mentions inside of the text of this comment.
|
||||||
public var linksInText: [Link]
|
public let linksInText: [Link]
|
||||||
|
|
||||||
/// The optional image that the user has uploaded for this comment.
|
/// The optional image that the user has uploaded for this comment.
|
||||||
public let image: AttachedImage?
|
public let image: AttachedImage?
|
||||||
|
@ -23,13 +23,13 @@ public struct Rant: Identifiable, Hashable {
|
|||||||
public let isEdited: Bool
|
public let isEdited: Bool
|
||||||
|
|
||||||
/// True if this rant has been marked as a favorite by the logged in user.
|
/// True if this rant has been marked as a favorite by the logged in user.
|
||||||
public var isFavorite: Bool
|
public let isFavorite: Bool
|
||||||
|
|
||||||
/// The text contents of this rant.
|
/// The text contents of this rant.
|
||||||
public let text: String
|
public let text: String
|
||||||
|
|
||||||
/// The URLs and user mentions inside of the text of this rant.
|
/// The URLs and user mentions inside of the text of this rant.
|
||||||
public var linksInText: [Link]
|
public let linksInText: [Link]
|
||||||
|
|
||||||
/// The optional image that the user has uploaded for this rant.
|
/// The optional image that the user has uploaded for this rant.
|
||||||
public let image: AttachedImage?
|
public let image: AttachedImage?
|
||||||
|
@ -1,9 +1,6 @@
|
|||||||
/// Contains the list of rants for the logged in user and other random things.
|
/// Contains the list of rants for the logged in user and other random things.
|
||||||
public struct RantFeed: Hashable {
|
public struct RantFeed: Hashable {
|
||||||
public var rants: [Rant]
|
public let rants: [Rant]
|
||||||
|
|
||||||
/// The notification settings for the logged-in user.
|
|
||||||
//public let settings: Settings
|
|
||||||
|
|
||||||
public let sessionHash: String?
|
public let sessionHash: String?
|
||||||
|
|
||||||
@ -12,11 +9,19 @@ public struct RantFeed: Hashable {
|
|||||||
|
|
||||||
/// True if the logged in user is subscribed to devRant++.
|
/// True if the logged in user is subscribed to devRant++.
|
||||||
public let devRantSupporter: Bool
|
public let devRantSupporter: Bool
|
||||||
//public let isUserDPP: Int
|
|
||||||
|
|
||||||
public let numberOfUnreadNotifications: Int
|
public let numberOfUnreadNotifications: Int
|
||||||
|
|
||||||
public let news: News?
|
public let news: News?
|
||||||
|
|
||||||
|
public init(rants: [Rant], sessionHash: String?, weeklyRantWeek: Int?, devRantSupporter: Bool, numberOfUnreadNotifications: Int, news: RantFeed.News?) {
|
||||||
|
self.rants = rants
|
||||||
|
self.sessionHash = sessionHash
|
||||||
|
self.weeklyRantWeek = weeklyRantWeek
|
||||||
|
self.devRantSupporter = devRantSupporter
|
||||||
|
self.numberOfUnreadNotifications = numberOfUnreadNotifications
|
||||||
|
self.news = news
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public extension RantFeed {
|
public extension RantFeed {
|
||||||
@ -45,3 +50,29 @@ public extension RantFeed {
|
|||||||
case all
|
case all
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension RantFeed {
|
||||||
|
struct CodingData: Codable {
|
||||||
|
let rants: [Rant.CodingData]
|
||||||
|
//let settings //not sure what the purpose is. probably not needed.
|
||||||
|
let set: String?
|
||||||
|
let wrw: Int?
|
||||||
|
let dpp: Int
|
||||||
|
let num_notifs: Int?
|
||||||
|
//let unread //probably the same info as already provided by num_notifs, so not needed.
|
||||||
|
let news: News.CodingData?
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension RantFeed.CodingData {
|
||||||
|
var decoded: RantFeed {
|
||||||
|
.init(
|
||||||
|
rants: rants.map(\.decoded),
|
||||||
|
sessionHash: `set`,
|
||||||
|
weeklyRantWeek: wrw,
|
||||||
|
devRantSupporter: dpp != 0,
|
||||||
|
numberOfUnreadNotifications: num_notifs ?? 0,
|
||||||
|
news: news?.decoded
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user