[WIP] Colored profiles

This commit is contained in:
Isaac
2023-11-22 01:05:47 +04:00
parent 2d01508e55
commit 66b3d8b874
69 changed files with 1626 additions and 529 deletions

View File

@@ -35,8 +35,8 @@ public extension TelegramEngine {
return _internal_updateAbout(account: self.account, about: about)
}
public func updateNameColorAndEmoji(nameColor: PeerNameColor, backgroundEmojiId: Int64?) -> Signal<Void, UpdateNameColorAndEmojiError> {
return _internal_updateNameColorAndEmoji(account: self.account, nameColor: nameColor, backgroundEmojiId: backgroundEmojiId)
public func updateNameColorAndEmoji(nameColor: PeerNameColor, backgroundEmojiId: Int64?, profileColor: PeerNameColor?, profileBackgroundEmojiId: Int64?) -> Signal<Void, UpdateNameColorAndEmojiError> {
return _internal_updateNameColorAndEmoji(account: self.account, nameColor: nameColor, backgroundEmojiId: backgroundEmojiId, profileColor: profileColor, profileBackgroundEmojiId: profileBackgroundEmojiId)
}
public func unregisterNotificationToken(token: Data, type: NotificationTokenType, otherAccountUserIds: [PeerId.Id]) -> Signal<Never, NoError> {

View File

@@ -51,13 +51,13 @@ public enum UpdateNameColorAndEmojiError {
case generic
}
func _internal_updateNameColorAndEmoji(account: Account, nameColor: PeerNameColor, backgroundEmojiId: Int64?) -> Signal<Void, UpdateNameColorAndEmojiError> {
func _internal_updateNameColorAndEmoji(account: Account, nameColor: PeerNameColor, backgroundEmojiId: Int64?, profileColor: PeerNameColor?, profileBackgroundEmojiId: Int64?) -> Signal<Void, UpdateNameColorAndEmojiError> {
let flags: Int32 = (1 << 0)
return account.postbox.transaction { transaction -> Signal<Peer, NoError> in
guard let peer = transaction.getPeer(account.peerId) as? TelegramUser else {
return .complete()
}
updatePeersCustom(transaction: transaction, peers: [peer.withUpdatedNameColor(nameColor).withUpdatedBackgroundEmojiId(backgroundEmojiId)], update: { _, updated in
updatePeersCustom(transaction: transaction, peers: [peer.withUpdatedNameColor(nameColor).withUpdatedBackgroundEmojiId(backgroundEmojiId).withUpdatedProfileColor(profileColor).withUpdatedProfileBackgroundEmojiId(profileBackgroundEmojiId)], update: { _, updated in
return updated
})
return .single(peer)

View File

@@ -313,7 +313,9 @@ private class AdMessagesHistoryContextImpl {
usernames: [],
storiesHidden: nil,
nameColor: invite.nameColor,
backgroundEmojiId: nil
backgroundEmojiId: nil,
profileColor: nil,
profileBackgroundEmojiId: nil
)
case let .webPage(webPage):
author = TelegramChannel(
@@ -334,7 +336,9 @@ private class AdMessagesHistoryContextImpl {
usernames: [],
storiesHidden: nil,
nameColor: .blue,
backgroundEmojiId: nil
backgroundEmojiId: nil,
profileColor: nil,
profileBackgroundEmojiId: nil
)
}

View File

@@ -510,9 +510,17 @@ public extension EnginePeer {
return self._asPeer().nameColor
}
var profileColor: PeerNameColor? {
return self._asPeer().profileColor
}
var backgroundEmojiId: Int64? {
return self._asPeer().backgroundEmojiId
}
var profileBackgroundEmojiId: Int64? {
return self._asPeer().profileBackgroundEmojiId
}
}
public extension EnginePeer {

View File

@@ -715,8 +715,8 @@ public extension TelegramEngine {
return _internal_updateBotAbout(account: self.account, peerId: peerId, about: about)
}
public func updatePeerNameColorAndEmoji(peerId: EnginePeer.Id, nameColor: PeerNameColor, backgroundEmojiId: Int64?) -> Signal<Void, UpdatePeerNameColorAndEmojiError> {
return _internal_updatePeerNameColorAndEmoji(account: self.account, peerId: peerId, nameColor: nameColor, backgroundEmojiId: backgroundEmojiId)
public func updatePeerNameColorAndEmoji(peerId: EnginePeer.Id, nameColor: PeerNameColor, backgroundEmojiId: Int64?, profileColor: PeerNameColor?, profileBackgroundEmojiId: Int64?) -> Signal<Void, UpdatePeerNameColorAndEmojiError> {
return _internal_updatePeerNameColorAndEmoji(account: self.account, peerId: peerId, nameColor: nameColor, backgroundEmojiId: backgroundEmojiId, profileColor: profileColor, profileBackgroundEmojiId: profileBackgroundEmojiId)
}
public func getChatListPeers(filterPredicate: ChatListFilterPredicate) -> Signal<[EnginePeer], NoError> {

View File

@@ -94,7 +94,7 @@ public enum UpdatePeerNameColorAndEmojiError {
case channelBoostRequired
}
func _internal_updatePeerNameColorAndEmoji(account: Account, peerId: EnginePeer.Id, nameColor: PeerNameColor, backgroundEmojiId: Int64?) -> Signal<Void, UpdatePeerNameColorAndEmojiError> {
func _internal_updatePeerNameColorAndEmoji(account: Account, peerId: EnginePeer.Id, nameColor: PeerNameColor, backgroundEmojiId: Int64?, profileColor: PeerNameColor?, profileBackgroundEmojiId: Int64?) -> Signal<Void, UpdatePeerNameColorAndEmojiError> {
return account.postbox.transaction { transaction -> Signal<Void, UpdatePeerNameColorAndEmojiError> in
if let peer = transaction.getPeer(peerId) {
if let peer = peer as? TelegramChannel, let inputChannel = apiInputChannel(peer) {