Reaction and status improvements

This commit is contained in:
Ali
2022-08-23 02:58:31 +03:00
parent 5b12540c44
commit 5d969ed2af
55 changed files with 1475 additions and 748 deletions

View File

@@ -159,6 +159,24 @@ public final class ReactionsMessageAttribute: Equatable, MessageAttribute {
return self.recentPeers.map(\.peerId)
}
public var associatedMediaIds: [MediaId] {
var result: [MediaId] = []
for reaction in self.reactions {
switch reaction.value {
case .builtin:
break
case let .custom(fileId):
let mediaId = MediaId(namespace: Namespaces.Media.CloudFile, id: fileId)
if !result.contains(mediaId) {
result.append(mediaId)
}
}
}
return result
}
public init(canViewList: Bool, reactions: [MessageReaction], recentPeers: [RecentPeer]) {
self.canViewList = canViewList
self.reactions = reactions
@@ -241,6 +259,24 @@ public final class PendingReactionsMessageAttribute: MessageAttribute {
}
}
public var associatedMediaIds: [MediaId] {
var result: [MediaId] = []
for reaction in self.reactions {
switch reaction.value {
case .builtin:
break
case let .custom(fileId):
let mediaId = MediaId(namespace: Namespaces.Media.CloudFile, id: fileId)
if !result.contains(mediaId) {
result.append(mediaId)
}
}
}
return result
}
public init(accountPeerId: PeerId?, reactions: [PendingReaction], isLarge: Bool) {
self.accountPeerId = accountPeerId
self.reactions = reactions

View File

@@ -169,6 +169,8 @@ public final class TelegramChannel: Peer, Equatable {
return .title(title: self.title, addressName: self.username)
}
public var associatedMediaIds: [MediaId]? { return nil }
public let associatedPeerId: PeerId? = nil
public let notificationSettingsPeerId: PeerId? = nil

View File

@@ -92,6 +92,8 @@ public final class TelegramGroup: Peer, Equatable {
return .title(title: self.title, addressName: nil)
}
public var associatedMediaIds: [MediaId]? { return nil }
public let associatedPeerId: PeerId? = nil
public let notificationSettingsPeerId: PeerId? = nil

View File

@@ -14,6 +14,8 @@ public final class TelegramSecretChat: Peer, Equatable {
return .title(title: "", addressName: nil)
}
public var associatedMediaIds: [MediaId]? { return nil }
public let associatedPeerId: PeerId?
public let notificationSettingsPeerId: PeerId?

View File

@@ -104,6 +104,14 @@ public final class TelegramUser: Peer, Equatable {
return .personName(first: self.firstName ?? "", last: self.lastName ?? "", addressName: self.username, phoneNumber: self.phone)
}
public var associatedMediaIds: [MediaId]? {
if let emojiStatus = self.emojiStatus {
return [MediaId(namespace: Namespaces.Media.CloudFile, id: emojiStatus.fileId)]
} else {
return nil
}
}
public let associatedPeerId: PeerId? = nil
public let notificationSettingsPeerId: PeerId? = nil