mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-12-23 22:55:00 +00:00
Wallpaper improvements
This commit is contained in:
@@ -123,7 +123,7 @@ public enum SetChatWallpaperError {
|
||||
case flood
|
||||
}
|
||||
|
||||
func _internal_setChatWallpaper(postbox: Postbox, network: Network, stateManager: AccountStateManager, peerId: PeerId, wallpaper: TelegramWallpaper?, applyUpdates: Bool = true) -> Signal<Api.Updates, SetChatWallpaperError> {
|
||||
func _internal_setChatWallpaper(postbox: Postbox, network: Network, stateManager: AccountStateManager, peerId: PeerId, wallpaper: TelegramWallpaper?, forBoth: Bool, applyUpdates: Bool = true) -> Signal<Api.Updates, SetChatWallpaperError> {
|
||||
return postbox.loadedPeerWithId(peerId)
|
||||
|> castError(SetChatWallpaperError.self)
|
||||
|> mapToSignal { peer in
|
||||
@@ -148,6 +148,9 @@ func _internal_setChatWallpaper(postbox: Postbox, network: Network, stateManager
|
||||
inputWallpaper = inputWallpaperAndInputSettings.0
|
||||
inputSettings = inputWallpaperAndInputSettings.1
|
||||
}
|
||||
if forBoth {
|
||||
flags |= 1 << 3
|
||||
}
|
||||
return network.request(Api.functions.messages.setChatWallPaper(flags: flags, peer: inputPeer, wallpaper: inputWallpaper, settings: inputSettings, id: nil), automaticFloodWait: false)
|
||||
|> mapError { error -> SetChatWallpaperError in
|
||||
if error.errorDescription.hasPrefix("FLOOD_WAIT") {
|
||||
@@ -168,14 +171,37 @@ func _internal_setChatWallpaper(postbox: Postbox, network: Network, stateManager
|
||||
}
|
||||
}
|
||||
|
||||
public enum SetExistingChatWallpaperError {
|
||||
public enum RevertChatWallpaperError {
|
||||
case generic
|
||||
}
|
||||
|
||||
func _internal_revertChatWallpaper(account: Account, peerId: EnginePeer.Id) -> Signal<Void, RevertChatWallpaperError> {
|
||||
return account.postbox.loadedPeerWithId(peerId)
|
||||
|> castError(RevertChatWallpaperError.self)
|
||||
|> mapToSignal { peer in
|
||||
guard let inputPeer = apiInputPeer(peer) else {
|
||||
return .fail(.generic)
|
||||
}
|
||||
let flags: Int32 = 1 << 4
|
||||
return account.network.request(Api.functions.messages.setChatWallPaper(flags: flags, peer: inputPeer, wallpaper: nil, settings: nil, id: nil), automaticFloodWait: false)
|
||||
|> `catch` { _ -> Signal<Api.Updates, RevertChatWallpaperError> in
|
||||
return .fail(.generic)
|
||||
}
|
||||
|> mapToSignal { updates -> Signal<Void, RevertChatWallpaperError> in
|
||||
account.stateManager.addUpdates(updates)
|
||||
return .complete()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public enum SetExistingChatWallpaperError {
|
||||
case generic
|
||||
}
|
||||
|
||||
func _internal_setExistingChatWallpaper(account: Account, messageId: MessageId, settings: WallpaperSettings?) -> Signal<Void, SetExistingChatWallpaperError> {
|
||||
return account.postbox.transaction { transaction -> Peer? in
|
||||
if let peer = transaction.getPeer(messageId.peerId), let message = transaction.getMessage(messageId) {
|
||||
if let action = message.media.first(where: { $0 is TelegramMediaAction }) as? TelegramMediaAction, case let .setChatWallpaper(wallpaper) = action.action {
|
||||
if let action = message.media.first(where: { $0 is TelegramMediaAction }) as? TelegramMediaAction, case let .setChatWallpaper(wallpaper, _) = action.action {
|
||||
var wallpaper = wallpaper
|
||||
if let settings = settings {
|
||||
wallpaper = wallpaper.withUpdatedSettings(settings)
|
||||
|
||||
Reference in New Issue
Block a user