forked from Ivasoft/mattermost-mobile
iOS notifications badge and posts in channel/thread (#6885)
This commit is contained in:
@@ -35,14 +35,25 @@ extension Database {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public func getChannelMentions(_ db: Connection) -> Int {
|
public func getChannelMentions(_ db: Connection) -> Int {
|
||||||
let mentionsCol = Expression<Int?>("mentions_count")
|
let stmtString = """
|
||||||
let mentions = try? db.scalar(myChannelTable.select(mentionsCol.total))
|
SELECT SUM(my.mentions_count) \
|
||||||
|
FROM MyChannel my \
|
||||||
|
INNER JOIN Channel c ON c.id=my.id \
|
||||||
|
WHERE c.delete_at = 0
|
||||||
|
"""
|
||||||
|
let mentions = try? db.prepare(stmtString).scalar() as? Double
|
||||||
return Int(mentions ?? 0)
|
return Int(mentions ?? 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func getThreadMentions(_ db: Connection) -> Int {
|
public func getThreadMentions(_ db: Connection) -> Int {
|
||||||
let mentionsCol = Expression<Int?>("unread_mentions")
|
let stmtString = """
|
||||||
let mentions = try? db.scalar(threadTable.select(mentionsCol.total))
|
SELECT SUM(unread_mentions) \
|
||||||
|
FROM Thread t
|
||||||
|
INNER JOIN Post p ON t.id=p.id \
|
||||||
|
INNER JOIN Channel c ON p.channel_id=c.id
|
||||||
|
WHERE c.delete_at = 0
|
||||||
|
"""
|
||||||
|
let mentions = try? db.prepare(stmtString).scalar() as? Double
|
||||||
return Int(mentions ?? 0)
|
return Int(mentions ?? 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -181,8 +181,9 @@ extension Database {
|
|||||||
public func handlePostData(_ db: Connection, _ postData: PostData, _ channelId: String, _ usedSince: Bool = false, _ receivingThreads: Bool = false) throws {
|
public func handlePostData(_ db: Connection, _ postData: PostData, _ channelId: String, _ usedSince: Bool = false, _ receivingThreads: Bool = false) throws {
|
||||||
let sortedChainedPosts = chainAndSortPosts(postData)
|
let sortedChainedPosts = chainAndSortPosts(postData)
|
||||||
try insertOrUpdatePosts(db, sortedChainedPosts, channelId)
|
try insertOrUpdatePosts(db, sortedChainedPosts, channelId)
|
||||||
let earliest = sortedChainedPosts.first!.create_at
|
let sortedAndNotDeletedPosts = sortedChainedPosts.filter({$0.delete_at == 0})
|
||||||
let latest = sortedChainedPosts.last!.create_at
|
let earliest = sortedAndNotDeletedPosts.first!.create_at
|
||||||
|
let latest = sortedAndNotDeletedPosts.last!.create_at
|
||||||
if (!receivingThreads) {
|
if (!receivingThreads) {
|
||||||
try handlePostsInChannel(db, channelId, earliest, latest, usedSince)
|
try handlePostsInChannel(db, channelId, earliest, latest, usedSince)
|
||||||
|
|
||||||
@@ -564,7 +565,7 @@ extension Database {
|
|||||||
var postsInThread = [String: [Post]]()
|
var postsInThread = [String: [Post]]()
|
||||||
|
|
||||||
for post in posts {
|
for post in posts {
|
||||||
if !post.root_id.isEmpty {
|
if !post.root_id.isEmpty && post.delete_at == 0 {
|
||||||
var threadPosts = postsInThread[post.root_id] ?? [Post]()
|
var threadPosts = postsInThread[post.root_id] ?? [Post]()
|
||||||
threadPosts.append(post)
|
threadPosts.append(post)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user