This commit is contained in:
Peter 2019-10-07 17:03:41 +04:00
parent fe5ccfac26
commit 5fed1fbeb1
257 changed files with 9346 additions and 4276 deletions

1
BUCK
View File

@ -43,6 +43,7 @@ resource_dependencies = [
"//submodules/LegacyComponents:LegacyComponentsResources", "//submodules/LegacyComponents:LegacyComponentsResources",
"//submodules/TelegramUI:TelegramUIAssets", "//submodules/TelegramUI:TelegramUIAssets",
"//submodules/TelegramUI:TelegramUIResources", "//submodules/TelegramUI:TelegramUIResources",
"//submodules/WalletUI:WalletUIResources",
"//:AppResources", "//:AppResources",
"//:AppStringResources", "//:AppStringResources",
"//:InfoPlistStringResources", "//:InfoPlistStringResources",

View File

@ -4756,23 +4756,23 @@ Any member of this group will be able to see messages in the channel.";
"ChatSearch.ResultsTooltip" = "Tap to view as a list."; "ChatSearch.ResultsTooltip" = "Tap to view as a list.";
"Updated.JustNow" = "just now"; "Wallet.Updated.JustNow" = "just now";
"Updated.MinutesAgo_0" = "%@ minutes ago"; //three to ten "Wallet.Updated.MinutesAgo_0" = "%@ minutes ago"; //three to ten
"Updated.MinutesAgo_1" = "1 minute ago"; //one "Wallet.Updated.MinutesAgo_1" = "1 minute ago"; //one
"Updated.MinutesAgo_2" = "2 minutes ago"; //two "Wallet.Updated.MinutesAgo_2" = "2 minutes ago"; //two
"Updated.MinutesAgo_3_10" = "%@ minutes ago"; //three to ten "Wallet.Updated.MinutesAgo_3_10" = "%@ minutes ago"; //three to ten
"Updated.MinutesAgo_many" = "%@ minutes ago"; // more than ten "Wallet.Updated.MinutesAgo_many" = "%@ minutes ago"; // more than ten
"Updated.MinutesAgo_any" = "%@ minutes ago"; // more than ten "Wallet.Updated.MinutesAgo_any" = "%@ minutes ago"; // more than ten
"Updated.HoursAgo_0" = "%@ hours ago"; "Wallet.Updated.HoursAgo_0" = "%@ hours ago";
"Updated.HoursAgo_1" = "1 hour ago"; "Wallet.Updated.HoursAgo_1" = "1 hour ago";
"Updated.HoursAgo_2" = "2 hours ago"; "Wallet.Updated.HoursAgo_2" = "2 hours ago";
"Updated.HoursAgo_3_10" = "%@ hours ago"; "Wallet.Updated.HoursAgo_3_10" = "%@ hours ago";
"Updated.HoursAgo_any" = "%@ hours ago"; "Wallet.Updated.HoursAgo_any" = "%@ hours ago";
"Updated.HoursAgo_many" = "%@ hours ago"; "Wallet.Updated.HoursAgo_many" = "%@ hours ago";
"Updated.HoursAgo_0" = "%@ hours ago"; "Wallet.Updated.HoursAgo_0" = "%@ hours ago";
"Updated.YesterdayAt" = "yesterday at %@"; "Wallet.Updated.YesterdayAt" = "yesterday at %@";
"Updated.AtDate" = "%@"; "Wallet.Updated.AtDate" = "%@";
"Updated.TodayAt" = "today at %@"; "Wallet.Updated.TodayAt" = "today at %@";
"Wallet.Info.WalletCreated" = "Wallet Created"; "Wallet.Info.WalletCreated" = "Wallet Created";
"Wallet.Info.Address" = "Your wallet address"; "Wallet.Info.Address" = "Your wallet address";
@ -4906,3 +4906,60 @@ Any member of this group will be able to see messages in the channel.";
"Conversation.WalletRequiredSetup" = "Set Up"; "Conversation.WalletRequiredSetup" = "Set Up";
"Wallet.CreateInvoice.Title" = "Create Invoice"; "Wallet.CreateInvoice.Title" = "Create Invoice";
"Wallet.Navigation.Close" = "Close";
"Wallet.Navigation.Back" = "Back";
"Wallet.Navigation.Done" = "Done";
"Wallet.Navigation.Cancel" = "Cancel";
"Wallet.Alert.OK" = "OK";
"Wallet.Alert.Cancel" = "Cancel";
"Wallet.Month.GenJanuary" = "January";
"Wallet.Month.GenFebruary" = "February";
"Wallet.Month.GenMarch" = "March";
"Wallet.Month.GenApril" = "April";
"Wallet.Month.GenMay" = "May";
"Wallet.Month.GenJune" = "June";
"Wallet.Month.GenJuly" = "July";
"Wallet.Month.GenAugust" = "August";
"Wallet.Month.GenSeptember" = "September";
"Wallet.Month.GenOctober" = "October";
"Wallet.Month.GenNovember" = "November";
"Wallet.Month.GenDecember" = "December";
"Wallet.Month.ShortJanuary" = "Jan";
"Wallet.Month.ShortFebruary" = "Feb";
"Wallet.Month.ShortMarch" = "Mar";
"Wallet.Month.ShortApril" = "Apr";
"Wallet.Month.ShortMay" = "May";
"Wallet.Month.ShortJune" = "Jun";
"Wallet.Month.ShortJuly" = "Jul";
"Wallet.Month.ShortAugust" = "Aug";
"Wallet.Month.ShortSeptember" = "Sep";
"Wallet.Month.ShortOctober" = "Oct";
"Wallet.Month.ShortNovember" = "Nov";
"Wallet.Month.ShortDecember" = "Dec";
"Wallet.Weekday.Today" = "Today";
"Wallet.Weekday.Yesterday" = "Yesterday";
"Wallet.Info.TransactionDateHeader" = "%1$@ %2$@";
"Wallet.Info.TransactionDateHeaderYear" = "%1$@ %2$@, %3$@";
"Wallet.UnknownError" = "An error occurred. Please try again later.";
"Wallet.ContextMenuCopy" = "Copy";
"Wallet.Time.PreciseDate_m1" = "Jan %1$@, %2$@ at %3$@";
"Wallet.Time.PreciseDate_m2" = "Feb %1$@, %2$@ at %3$@";
"Wallet.Time.PreciseDate_m3" = "Mar %1$@, %2$@ at %3$@";
"Wallet.Time.PreciseDate_m4" = "Apr %1$@, %2$@ at %3$@";
"Wallet.Time.PreciseDate_m5" = "May %1$@, %2$@ at %3$@";
"Wallet.Time.PreciseDate_m6" = "Jun %1$@, %2$@ at %3$@";
"Wallet.Time.PreciseDate_m7" = "Jul %1$@, %2$@ at %3$@";
"Wallet.Time.PreciseDate_m8" = "Aug %1$@, %2$@ at %3$@";
"Wallet.Time.PreciseDate_m9" = "Sep %1$@, %2$@ at %3$@";
"Wallet.Time.PreciseDate_m10" = "Oct %1$@, %2$@ at %3$@";
"Wallet.Time.PreciseDate_m11" = "Nov %1$@, %2$@ at %3$@";
"Wallet.Time.PreciseDate_m12" = "Dec %1$@, %2$@ at %3$@";
"Wallet.VoiceOver.Editing.ClearText" = "Clear text";

View File

@ -7,7 +7,6 @@ static_library(
]), ]),
deps = [ deps = [
"//submodules/Display:Display#shared", "//submodules/Display:Display#shared",
"//submodules/AccountContext:AccountContext",
], ],
frameworks = [ frameworks = [
"$SDKROOT/System/Library/Frameworks/Foundation.framework", "$SDKROOT/System/Library/Frameworks/Foundation.framework",

View File

@ -1,14 +1,22 @@
import Foundation import Foundation
import UIKit import UIKit
import Display import Display
import AccountContext import SwiftSignalKit
public func textAlertController(context: AccountContext, title: String?, text: String, actions: [TextAlertAction], actionLayout: TextAlertContentActionLayout = .horizontal, allowInputInset: Bool = true) -> AlertController { public final class AlertControllerContext {
let presentationData = context.sharedContext.currentPresentationData.with { $0 } public let theme: AlertControllerTheme
public let themeSignal: Signal<AlertControllerTheme, NoError>
let controller = standardTextAlertController(theme: AlertControllerTheme(presentationTheme: presentationData.theme), title: title, text: text, actions: actions, actionLayout: actionLayout, allowInputInset: allowInputInset) public init(theme: AlertControllerTheme, themeSignal: Signal<AlertControllerTheme, NoError>) {
let presentationDataDisposable = context.sharedContext.presentationData.start(next: { [weak controller] presentationData in self.theme = theme
controller?.theme = AlertControllerTheme(presentationTheme: presentationData.theme) self.themeSignal = themeSignal
}
}
public func textAlertController(alertContext: AlertControllerContext, title: String?, text: String, actions: [TextAlertAction], actionLayout: TextAlertContentActionLayout = .horizontal, allowInputInset: Bool = true) -> AlertController {
let controller = standardTextAlertController(theme: alertContext.theme, title: title, text: text, actions: actions, actionLayout: actionLayout, allowInputInset: allowInputInset)
let presentationDataDisposable = alertContext.themeSignal.start(next: { [weak controller] theme in
controller?.theme = theme
}) })
controller.dismissed = { controller.dismissed = {
presentationDataDisposable.dispose() presentationDataDisposable.dispose()
@ -17,9 +25,8 @@ public func textAlertController(context: AccountContext, title: String?, text: S
return controller return controller
} }
public func richTextAlertController(context: AccountContext, title: NSAttributedString?, text: NSAttributedString, actions: [TextAlertAction], actionLayout: TextAlertContentActionLayout = .horizontal, allowInputInset: Bool = true, dismissAutomatically: Bool = true) -> AlertController { public func richTextAlertController(alertContext: AlertControllerContext, title: NSAttributedString?, text: NSAttributedString, actions: [TextAlertAction], actionLayout: TextAlertContentActionLayout = .horizontal, allowInputInset: Bool = true, dismissAutomatically: Bool = true) -> AlertController {
let presentationData = context.sharedContext.currentPresentationData.with { $0 } let theme = alertContext.theme
let theme = AlertControllerTheme(presentationTheme: presentationData.theme)
var dismissImpl: (() -> Void)? var dismissImpl: (() -> Void)?
let controller = AlertController(theme: theme, contentNode: TextAlertContentNode(theme: theme, title: title, text: text, actions: actions.map { action in let controller = AlertController(theme: theme, contentNode: TextAlertContentNode(theme: theme, title: title, text: text, actions: actions.map { action in
@ -34,8 +41,8 @@ public func richTextAlertController(context: AccountContext, title: NSAttributed
controller?.dismissAnimated() controller?.dismissAnimated()
} }
let presentationDataDisposable = context.sharedContext.presentationData.start(next: { [weak controller] presentationData in let presentationDataDisposable = alertContext.themeSignal.start(next: { [weak controller] theme in
controller?.theme = AlertControllerTheme(presentationTheme: presentationData.theme) controller?.theme = theme
}) })
controller.dismissed = { controller.dismissed = {
presentationDataDisposable.dispose() presentationDataDisposable.dispose()

View File

@ -302,13 +302,12 @@ public struct AnimatedStickerStatus: Equatable {
} }
public enum AnimatedStickerNodeResource { public enum AnimatedStickerNodeResource {
case resource(MediaResource) case resource(Account, MediaResource)
case localFile(String) case localFile(String)
} }
public final class AnimatedStickerNode: ASDisplayNode { public final class AnimatedStickerNode: ASDisplayNode {
private let queue: Queue private let queue: Queue
private var account: Account?
private var fileReference: FileMediaReference? private var fileReference: FileMediaReference?
private let disposable = MetaDisposable() private let disposable = MetaDisposable()
private let fetchDisposable = MetaDisposable() private let fetchDisposable = MetaDisposable()
@ -386,7 +385,7 @@ public final class AnimatedStickerNode: ASDisplayNode {
self.addSubnode(self.renderer!) self.addSubnode(self.renderer!)
} }
public func setup(account: Account, resource: AnimatedStickerNodeResource, fitzModifier: EmojiFitzModifier? = nil, width: Int, height: Int, playbackMode: AnimatedStickerPlaybackMode = .loop, mode: AnimatedStickerMode) { public func setup(resource: AnimatedStickerNodeResource, fitzModifier: EmojiFitzModifier? = nil, width: Int, height: Int, playbackMode: AnimatedStickerPlaybackMode = .loop, mode: AnimatedStickerMode) {
if width < 2 || height < 2 { if width < 2 || height < 2 {
return return
} }
@ -407,7 +406,7 @@ public final class AnimatedStickerNode: ASDisplayNode {
} }
} }
switch resource { switch resource {
case let .resource(resource): case let .resource(account, resource):
self.disposable.set((account.postbox.mediaBox.resourceData(resource) self.disposable.set((account.postbox.mediaBox.resourceData(resource)
|> deliverOnMainQueue).start(next: { data in |> deliverOnMainQueue).start(next: { data in
f(data) f(data)
@ -417,7 +416,7 @@ public final class AnimatedStickerNode: ASDisplayNode {
} }
case .cached: case .cached:
switch resource { switch resource {
case let .resource(resource): case let .resource(account, resource):
self.disposable.set((chatMessageAnimationData(postbox: account.postbox, resource: resource, fitzModifier: fitzModifier, width: width, height: height, synchronousLoad: false) self.disposable.set((chatMessageAnimationData(postbox: account.postbox, resource: resource, fitzModifier: fitzModifier, width: width, height: height, synchronousLoad: false)
|> deliverOnMainQueue).start(next: { [weak self] data in |> deliverOnMainQueue).start(next: { [weak self] data in
if let strongSelf = self, data.complete { if let strongSelf = self, data.complete {

View File

@ -19,6 +19,7 @@ static_library(
"//submodules/Stripe:Stripe", "//submodules/Stripe:Stripe",
"//submodules/CountrySelectionUI:CountrySelectionUI", "//submodules/CountrySelectionUI:CountrySelectionUI",
"//submodules/AppBundle:AppBundle", "//submodules/AppBundle:AppBundle",
"//submodules/PresentationDataUtils:PresentationDataUtils",
], ],
frameworks = [ frameworks = [
"$SDKROOT/System/Library/Frameworks/Foundation.framework", "$SDKROOT/System/Library/Frameworks/Foundation.framework",

View File

@ -8,8 +8,10 @@ import SwiftSignalKit
import PassKit import PassKit
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import AccountContext import AccountContext
import AlertUI import AlertUI
import PresentationDataUtils
import TelegramNotices import TelegramNotices
import TelegramStringFormatting import TelegramStringFormatting
import PasswordSetupUI import PasswordSetupUI

View File

@ -6,6 +6,7 @@ import SwiftSignalKit
import TelegramCore import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import PhotoResources import PhotoResources
class BotCheckoutHeaderItem: ListViewItem, ItemListItem { class BotCheckoutHeaderItem: ListViewItem, ItemListItem {

View File

@ -8,6 +8,7 @@ import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import AccountContext import AccountContext
import AlertUI import AlertUI
import PresentationDataUtils
import CountrySelectionUI import CountrySelectionUI
private final class BotCheckoutInfoAddressItems { private final class BotCheckoutInfoAddressItems {

View File

@ -5,6 +5,7 @@ import AsyncDisplayKit
import SwiftSignalKit import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
class BotCheckoutPriceItem: ListViewItem, ItemListItem { class BotCheckoutPriceItem: ListViewItem, ItemListItem {
let theme: PresentationTheme let theme: PresentationTheme

View File

@ -7,6 +7,7 @@ import TelegramCore
import SwiftSignalKit import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import AccountContext import AccountContext
import TelegramStringFormatting import TelegramStringFormatting

View File

@ -18,6 +18,7 @@ static_library(
"//submodules/AvatarNode:AvatarNode", "//submodules/AvatarNode:AvatarNode",
"//submodules/TelegramStringFormatting:TelegramStringFormatting", "//submodules/TelegramStringFormatting:TelegramStringFormatting",
"//submodules/AlertUI:AlertUI", "//submodules/AlertUI:AlertUI",
"//submodules/PresentationDataUtils:PresentationDataUtils",
"//submodules/TelegramNotices:TelegramNotices", "//submodules/TelegramNotices:TelegramNotices",
"//submodules/MergeLists:MergeLists", "//submodules/MergeLists:MergeLists",
], ],

View File

@ -7,6 +7,7 @@ import SwiftSignalKit
import TelegramCore import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import AvatarNode import AvatarNode
import TelegramStringFormatting import TelegramStringFormatting

View File

@ -7,8 +7,10 @@ import TelegramCore
import SwiftSignalKit import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import AccountContext import AccountContext
import AlertUI import AlertUI
import PresentationDataUtils
import AppBundle import AppBundle
public enum CallListControllerMode { public enum CallListControllerMode {

View File

@ -8,6 +8,7 @@ import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import TelegramUIPreferences import TelegramUIPreferences
import ItemListUI import ItemListUI
import PresentationDataUtils
import AccountContext import AccountContext
import TelegramNotices import TelegramNotices

View File

@ -17,6 +17,7 @@ static_library(
"//submodules/TelegramBaseController:TelegramBaseController", "//submodules/TelegramBaseController:TelegramBaseController",
"//submodules/OverlayStatusController:OverlayStatusController", "//submodules/OverlayStatusController:OverlayStatusController",
"//submodules/AlertUI:AlertUI", "//submodules/AlertUI:AlertUI",
"//submodules/PresentationDataUtils:PresentationDataUtils",
"//submodules/UndoUI:UndoUI", "//submodules/UndoUI:UndoUI",
"//submodules/TelegramNotices:TelegramNotices", "//submodules/TelegramNotices:TelegramNotices",
"//submodules/SearchUI:SearchUI", "//submodules/SearchUI:SearchUI",

View File

@ -9,6 +9,7 @@ import Display
import TelegramUIPreferences import TelegramUIPreferences
import OverlayStatusController import OverlayStatusController
import AlertUI import AlertUI
import PresentationDataUtils
func archiveContextMenuItems(context: AccountContext, groupId: PeerGroupId, chatListController: ChatListControllerImpl?) -> Signal<[ContextMenuItem], NoError> { func archiveContextMenuItems(context: AccountContext, groupId: PeerGroupId, chatListController: ChatListControllerImpl?) -> Signal<[ContextMenuItem], NoError> {
let strings = context.sharedContext.currentPresentationData.with({ $0 }).strings let strings = context.sharedContext.currentPresentationData.with({ $0 }).strings
@ -179,7 +180,7 @@ func chatContextMenuItems(context: AccountContext, peerId: PeerId, source: ChatC
var cancelImpl: (() -> Void)? var cancelImpl: (() -> Void)?
let progressSignal = Signal<Never, NoError> { subscriber in let progressSignal = Signal<Never, NoError> { subscriber in
let presentationData = context.sharedContext.currentPresentationData.with { $0 } let presentationData = context.sharedContext.currentPresentationData.with { $0 }
let controller = OverlayStatusController(theme: presentationData.theme, strings: presentationData.strings, type: .loading(cancelled: { let controller = OverlayStatusController(theme: presentationData.theme, type: .loading(cancelled: {
cancelImpl?() cancelImpl?()
})) }))
chatListController?.present(controller, in: .window(.root)) chatListController?.present(controller, in: .window(.root))

View File

@ -10,6 +10,7 @@ import TelegramBaseController
import OverlayStatusController import OverlayStatusController
import AccountContext import AccountContext
import AlertUI import AlertUI
import PresentationDataUtils
import UndoUI import UndoUI
import TelegramNotices import TelegramNotices
import SearchUI import SearchUI
@ -873,7 +874,7 @@ public class ChatListControllerImpl: TelegramBaseController, ChatListController,
if let controller = controller as? UndoOverlayController { if let controller = controller as? UndoOverlayController {
switch controller.content { switch controller.content {
case let .archivedChat(archivedChat): case let .archivedChat(archivedChat):
if peerIds.contains(archivedChat.peerId) { if peerIds.contains(PeerId(archivedChat.peerId)) {
controller.dismiss() controller.dismiss()
} }
default: default:
@ -1210,7 +1211,7 @@ public class ChatListControllerImpl: TelegramBaseController, ChatListController,
let context = strongSelf.context let context = strongSelf.context
let presentationData = strongSelf.presentationData let presentationData = strongSelf.presentationData
let progressSignal = Signal<Never, NoError> { subscriber in let progressSignal = Signal<Never, NoError> { subscriber in
let controller = OverlayStatusController(theme: presentationData.theme, strings: presentationData.strings, type: .loading(cancelled: nil)) let controller = OverlayStatusController(theme: presentationData.theme, type: .loading(cancelled: nil))
self?.present(controller, in: .window(.root)) self?.present(controller, in: .window(.root))
return ActionDisposable { [weak controller] in return ActionDisposable { [weak controller] in
Queue.mainQueue().async() { Queue.mainQueue().async() {
@ -1302,7 +1303,7 @@ public class ChatListControllerImpl: TelegramBaseController, ChatListController,
}) })
if value { if value {
strongSelf.present(UndoOverlayController(context: strongSelf.context, content: .hidArchive(title: strongSelf.presentationData.strings.ChatList_UndoArchiveHiddenTitle, text: strongSelf.presentationData.strings.ChatList_UndoArchiveHiddenText, undo: false), elevatedLayout: false, animateInAsReplacement: true, action: { [weak self] shouldCommit in strongSelf.present(UndoOverlayController(presentationData: strongSelf.context.sharedContext.currentPresentationData.with { $0 }, content: .hidArchive(title: strongSelf.presentationData.strings.ChatList_UndoArchiveHiddenTitle, text: strongSelf.presentationData.strings.ChatList_UndoArchiveHiddenText, undo: false), elevatedLayout: false, animateInAsReplacement: true, action: { [weak self] shouldCommit in
guard let strongSelf = self else { guard let strongSelf = self else {
return return
} }
@ -1320,7 +1321,7 @@ public class ChatListControllerImpl: TelegramBaseController, ChatListController,
} }
}), in: .current) }), in: .current)
} else { } else {
strongSelf.present(UndoOverlayController(context: strongSelf.context, content: .revealedArchive(title: strongSelf.presentationData.strings.ChatList_UndoArchiveRevealedTitle, text: strongSelf.presentationData.strings.ChatList_UndoArchiveRevealedText, undo: false), elevatedLayout: false, animateInAsReplacement: true, action: { _ in strongSelf.present(UndoOverlayController(presentationData: strongSelf.context.sharedContext.currentPresentationData.with { $0 }, content: .revealedArchive(title: strongSelf.presentationData.strings.ChatList_UndoArchiveRevealedTitle, text: strongSelf.presentationData.strings.ChatList_UndoArchiveRevealedText, undo: false), elevatedLayout: false, animateInAsReplacement: true, action: { _ in
}), in: .current) }), in: .current)
} }
}) })
@ -1414,7 +1415,7 @@ public class ChatListControllerImpl: TelegramBaseController, ChatListController,
return true return true
}) })
strongSelf.present(UndoOverlayController(context: strongSelf.context, content: .removedChat(text: strongSelf.presentationData.strings.Undo_ChatCleared), elevatedLayout: false, animateInAsReplacement: true, action: { shouldCommit in strongSelf.present(UndoOverlayController(presentationData: strongSelf.context.sharedContext.currentPresentationData.with { $0 }, content: .removedChat(text: strongSelf.presentationData.strings.Undo_ChatCleared), elevatedLayout: false, animateInAsReplacement: true, action: { shouldCommit in
guard let strongSelf = self else { guard let strongSelf = self else {
return return
} }
@ -1617,7 +1618,8 @@ public class ChatListControllerImpl: TelegramBaseController, ChatListController,
title = "" title = ""
undo = true undo = true
} }
strongSelf.present(UndoOverlayController(context: strongSelf.context, content: .archivedChat(peerId: peerIds[0], title: title, text: text, undo: undo), elevatedLayout: false, animateInAsReplacement: true, action: action), in: .current) let controller = UndoOverlayController(presentationData: strongSelf.context.sharedContext.currentPresentationData.with { $0 }, content: .archivedChat(peerId: peerIds[0].toInt64(), title: title, text: text, undo: undo), elevatedLayout: false, animateInAsReplacement: true, action: action)
strongSelf.present(controller, in: .current)
strongSelf.chatListDisplayNode.playArchiveAnimation() strongSelf.chatListDisplayNode.playArchiveAnimation()
}) })
@ -1680,7 +1682,7 @@ public class ChatListControllerImpl: TelegramBaseController, ChatListController,
return true return true
}) })
self.present(UndoOverlayController(context: self.context, content: .removedChat(text: statusText), elevatedLayout: false, animateInAsReplacement: true, action: { [weak self] shouldCommit in self.present(UndoOverlayController(presentationData: self.context.sharedContext.currentPresentationData.with { $0 }, content: .removedChat(text: statusText), elevatedLayout: false, animateInAsReplacement: true, action: { [weak self] shouldCommit in
guard let strongSelf = self else { guard let strongSelf = self else {
return return
} }

View File

@ -7,6 +7,7 @@ import SwiftSignalKit
import TelegramCore import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import AvatarNode import AvatarNode
import TelegramStringFormatting import TelegramStringFormatting
import AccountContext import AccountContext

View File

@ -14,6 +14,7 @@ static_library(
"//submodules/ItemListUI:ItemListUI", "//submodules/ItemListUI:ItemListUI",
"//submodules/AccountContext:AccountContext", "//submodules/AccountContext:AccountContext",
"//submodules/AlertUI:AlertUI", "//submodules/AlertUI:AlertUI",
"//submodules/PresentationDataUtils:PresentationDataUtils",
], ],
frameworks = [ frameworks = [
"$SDKROOT/System/Library/Frameworks/Foundation.framework", "$SDKROOT/System/Library/Frameworks/Foundation.framework",

View File

@ -6,8 +6,10 @@ import Postbox
import TelegramCore import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import AccountContext import AccountContext
import AlertUI import AlertUI
import PresentationDataUtils
private let maxTextLength = 255 private let maxTextLength = 255
private let maxOptionLength = 100 private let maxOptionLength = 100

View File

@ -5,6 +5,7 @@ import AsyncDisplayKit
import SwiftSignalKit import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
class CreatePollOptionActionItem: ListViewItem, ItemListItem { class CreatePollOptionActionItem: ListViewItem, ItemListItem {
let theme: PresentationTheme let theme: PresentationTheme

View File

@ -5,6 +5,7 @@ import AsyncDisplayKit
import SwiftSignalKit import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
struct CreatePollOptionItemEditing { struct CreatePollOptionItemEditing {
let editable: Bool let editable: Bool

View File

@ -23,6 +23,7 @@ static_library(
"//submodules/TelegramPermissionsUI:TelegramPermissionsUI", "//submodules/TelegramPermissionsUI:TelegramPermissionsUI",
"//submodules/TelegramNotices:TelegramNotices", "//submodules/TelegramNotices:TelegramNotices",
"//submodules/AlertUI:AlertUI", "//submodules/AlertUI:AlertUI",
"//submodules/PresentationDataUtils:PresentationDataUtils",
"//submodules/ShareController:ShareController", "//submodules/ShareController:ShareController",
"//submodules/AppBundle:AppBundle", "//submodules/AppBundle:AppBundle",
"//submodules/OverlayStatusController:OverlayStatusController", "//submodules/OverlayStatusController:OverlayStatusController",

View File

@ -7,6 +7,7 @@ import Postbox
import TelegramCore import TelegramCore
import Display import Display
import AlertUI import AlertUI
import PresentationDataUtils
import OverlayStatusController import OverlayStatusController
func contactContextMenuItems(context: AccountContext, peerId: PeerId, contactsController: ContactsController?) -> Signal<[ContextMenuItem], NoError> { func contactContextMenuItems(context: AccountContext, peerId: PeerId, contactsController: ContactsController?) -> Signal<[ContextMenuItem], NoError> {
@ -62,7 +63,7 @@ func contactContextMenuItems(context: AccountContext, peerId: PeerId, contactsCo
var cancelImpl: (() -> Void)? var cancelImpl: (() -> Void)?
let progressSignal = Signal<Never, NoError> { subscriber in let progressSignal = Signal<Never, NoError> { subscriber in
let presentationData = context.sharedContext.currentPresentationData.with { $0 } let presentationData = context.sharedContext.currentPresentationData.with { $0 }
let controller = OverlayStatusController(theme: presentationData.theme, strings: presentationData.strings, type: .loading(cancelled: { let controller = OverlayStatusController(theme: presentationData.theme, type: .loading(cancelled: {
cancelImpl?() cancelImpl?()
})) }))
contactsController?.present(controller, in: .window(.root)) contactsController?.present(controller, in: .window(.root))

View File

@ -5,6 +5,7 @@ import AsyncDisplayKit
import SwiftSignalKit import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import ContactsPeerItem import ContactsPeerItem
import AccountContext import AccountContext

View File

@ -10,6 +10,7 @@ import TelegramUIPreferences
import DeviceAccess import DeviceAccess
import MergeLists import MergeLists
import ItemListUI import ItemListUI
import PresentationDataUtils
import MediaResources import MediaResources
import AccountContext import AccountContext
import TelegramPermissions import TelegramPermissions

View File

@ -10,6 +10,7 @@ import TelegramUIPreferences
import DeviceAccess import DeviceAccess
import AccountContext import AccountContext
import AlertUI import AlertUI
import PresentationDataUtils
import TelegramPermissions import TelegramPermissions
import TelegramNotices import TelegramNotices
import ContactsPeerItem import ContactsPeerItem

View File

@ -10,6 +10,7 @@ import TelegramPresentationData
import AccountContext import AccountContext
import ShareController import ShareController
import AlertUI import AlertUI
import PresentationDataUtils
import SearchUI import SearchUI
public class InviteContactsController: ViewController, MFMessageComposeViewControllerDelegate, UINavigationControllerDelegate { public class InviteContactsController: ViewController, MFMessageComposeViewControllerDelegate, UINavigationControllerDelegate {

View File

@ -8,6 +8,7 @@ import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import TelegramUIPreferences import TelegramUIPreferences
import ItemListUI import ItemListUI
import PresentationDataUtils
import CheckNode import CheckNode
import AvatarNode import AvatarNode
import TelegramStringFormatting import TelegramStringFormatting

View File

@ -5,6 +5,7 @@ import AsyncDisplayKit
import SwiftSignalKit import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import AccountContext import AccountContext
import TextFormat import TextFormat
import AppBundle import AppBundle

View File

@ -7,6 +7,7 @@ import TelegramCore
import SwiftSignalKit import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import ActivityIndicator import ActivityIndicator
import AvatarNode import AvatarNode
import TelegramStringFormatting import TelegramStringFormatting

View File

@ -5,6 +5,7 @@ import AsyncDisplayKit
import SwiftSignalKit import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
public enum ItemListPeerActionItemHeight { public enum ItemListPeerActionItemHeight {
case generic case generic

View File

@ -8,6 +8,7 @@ import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import TelegramUIPreferences import TelegramUIPreferences
import ItemListUI import ItemListUI
import PresentationDataUtils
import AvatarNode import AvatarNode
import TelegramStringFormatting import TelegramStringFormatting
import PeerPresenceStatusManager import PeerPresenceStatusManager

View File

@ -7,6 +7,7 @@ import Postbox
import TelegramCore import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import StickerResources import StickerResources
import AnimationUI import AnimationUI
@ -599,7 +600,7 @@ class ItemListStickerPackItemNode: ItemListRevealOptionsItemNode {
animationNode = AnimatedStickerNode() animationNode = AnimatedStickerNode()
strongSelf.animationNode = animationNode strongSelf.animationNode = animationNode
strongSelf.addSubnode(animationNode) strongSelf.addSubnode(animationNode)
animationNode.setup(account: item.account, resource: .resource(resource), width: 80, height: 80, mode: .cached) animationNode.setup(resource: .resource(item.account, resource), width: 80, height: 80, mode: .cached)
} }
animationNode.visibility = strongSelf.visibility != .none && item.playAnimatedStickers animationNode.visibility = strongSelf.visibility != .none && item.playAnimatedStickers
animationNode.isHidden = !item.playAnimatedStickers animationNode.isHidden = !item.playAnimatedStickers

View File

@ -9,7 +9,6 @@ static_library(
"//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit#shared", "//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit#shared",
"//submodules/AsyncDisplayKit:AsyncDisplayKit#shared", "//submodules/AsyncDisplayKit:AsyncDisplayKit#shared",
"//submodules/Display:Display#shared", "//submodules/Display:Display#shared",
"//submodules/AccountContext:AccountContext",
"//submodules/TelegramPresentationData:TelegramPresentationData", "//submodules/TelegramPresentationData:TelegramPresentationData",
"//submodules/MergeLists:MergeLists", "//submodules/MergeLists:MergeLists",
"//submodules/TextFormat:TextFormat", "//submodules/TextFormat:TextFormat",

View File

@ -2,9 +2,7 @@ import Foundation
import UIKit import UIKit
import Display import Display
import SwiftSignalKit import SwiftSignalKit
import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import AccountContext
import ProgressNavigationButtonNode import ProgressNavigationButtonNode
public enum ItemListNavigationButtonStyle { public enum ItemListNavigationButtonStyle {
@ -217,15 +215,6 @@ open class ItemListController: ViewController, KeyShortcutResponder, Presentable
public var willDisappear: ((Bool) -> Void)? public var willDisappear: ((Bool) -> Void)?
public var didDisappear: ((Bool) -> Void)? public var didDisappear: ((Bool) -> Void)?
convenience public init<ItemGenerationArguments>(context: AccountContext, state: Signal<(ItemListControllerState, (ItemListNodeState, ItemGenerationArguments)), NoError>, tabBarItem: Signal<ItemListControllerTabBarItem, NoError>? = nil) {
self.init(sharedContext: context.sharedContext, state: state, tabBarItem: tabBarItem)
}
convenience public init<ItemGenerationArguments>(sharedContext: SharedAccountContext, state: Signal<(ItemListControllerState, (ItemListNodeState, ItemGenerationArguments)), NoError>, tabBarItem: Signal<ItemListControllerTabBarItem, NoError>? = nil) {
let presentationData = sharedContext.currentPresentationData.with { $0 }
self.init(theme: presentationData.theme, strings: presentationData.strings, updatedPresentationData: sharedContext.presentationData |> map { ($0.theme, $0.strings) }, state: state, tabBarItem: tabBarItem)
}
public init<ItemGenerationArguments>(theme: PresentationTheme, strings: PresentationStrings, updatedPresentationData: Signal<(theme: PresentationTheme, strings: PresentationStrings), NoError>, state: Signal<(ItemListControllerState, (ItemListNodeState, ItemGenerationArguments)), NoError>, tabBarItem: Signal<ItemListControllerTabBarItem, NoError>?) { public init<ItemGenerationArguments>(theme: PresentationTheme, strings: PresentationStrings, updatedPresentationData: Signal<(theme: PresentationTheme, strings: PresentationStrings), NoError>, state: Signal<(ItemListControllerState, (ItemListNodeState, ItemGenerationArguments)), NoError>, tabBarItem: Signal<ItemListControllerTabBarItem, NoError>?) {
self.state = state self.state = state
|> map { controllerState, nodeStateAndArgument -> (ItemListControllerState, (ItemListNodeState, Any)) in |> map { controllerState, nodeStateAndArgument -> (ItemListControllerState, (ItemListNodeState, Any)) in

View File

@ -14,6 +14,7 @@ static_library(
"//submodules/TelegramPresentationData:TelegramPresentationData", "//submodules/TelegramPresentationData:TelegramPresentationData",
"//submodules/AccountContext:AccountContext", "//submodules/AccountContext:AccountContext",
"//submodules/AlertUI:AlertUI", "//submodules/AlertUI:AlertUI",
"//submodules/PresentationDataUtils:PresentationDataUtils",
"//submodules/ShareController:ShareController", "//submodules/ShareController:ShareController",
"//submodules/SelectablePeerNode:SelectablePeerNode", "//submodules/SelectablePeerNode:SelectablePeerNode",
], ],

View File

@ -8,6 +8,7 @@ import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import AccountContext import AccountContext
import AlertUI import AlertUI
import PresentationDataUtils
public final class JoinLinkPreviewController: ViewController { public final class JoinLinkPreviewController: ViewController {
private var controllerNode: JoinLinkPreviewControllerNode { private var controllerNode: JoinLinkPreviewControllerNode {

View File

@ -16,6 +16,7 @@ static_library(
"//submodules/TextFormat:TextFormat", "//submodules/TextFormat:TextFormat",
"//submodules/ShareController:ShareController", "//submodules/ShareController:ShareController",
"//submodules/AlertUI:AlertUI", "//submodules/AlertUI:AlertUI",
"//submodules/PresentationDataUtils:PresentationDataUtils",
], ],
frameworks = [ frameworks = [
"$SDKROOT/System/Library/Frameworks/Foundation.framework", "$SDKROOT/System/Library/Frameworks/Foundation.framework",

View File

@ -8,6 +8,7 @@ import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import AccountContext import AccountContext
import AlertUI import AlertUI
import PresentationDataUtils
public final class LanguageLinkPreviewController: ViewController { public final class LanguageLinkPreviewController: ViewController {
private var controllerNode: LanguageLinkPreviewControllerNode { private var controllerNode: LanguageLinkPreviewControllerNode {

View File

@ -144,7 +144,7 @@ static void MTNetworkAvailabilityContextRelease(const void *info)
((flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) != 0)); ((flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) != 0));
BOOL canConnectWithoutUserInteraction = (canConnectionAutomatically && BOOL canConnectWithoutUserInteraction = (canConnectionAutomatically &&
(flags & kSCNetworkReachabilityFlagsInterventionRequired) == 0); (flags & kSCNetworkReachabilityFlagsInterventionRequired) == 0);
BOOL isNetworkReachable = (isReachable && (!needsConnection || canConnectWithoutUserInteraction)); BOOL isNetworkReachable = isReachable;
bool isWWAN = false; bool isWWAN = false;
#if TARGET_OS_IPHONE #if TARGET_OS_IPHONE

View File

@ -7,6 +7,7 @@ import TelegramCore
import AVFoundation import AVFoundation
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import AccountContext import AccountContext
import TelegramStringFormatting import TelegramStringFormatting
import AppBundle import AppBundle

View File

@ -8,7 +8,6 @@ static_library(
deps = [ deps = [
"//submodules/Display:Display#shared", "//submodules/Display:Display#shared",
"//submodules/LegacyComponents:LegacyComponents", "//submodules/LegacyComponents:LegacyComponents",
"//submodules/TelegramPresentationData:TelegramPresentationData",
], ],
frameworks = [ frameworks = [
"$SDKROOT/System/Library/Frameworks/Foundation.framework", "$SDKROOT/System/Library/Frameworks/Foundation.framework",

View File

@ -1,7 +1,6 @@
import Foundation import Foundation
import UIKit import UIKit
import Display import Display
import TelegramPresentationData
import LegacyComponents import LegacyComponents
public enum OverlayStatusControllerType { public enum OverlayStatusControllerType {
@ -80,26 +79,26 @@ private final class OverlayStatusControllerNode: ViewControllerTracingNode {
private let dismissed: () -> Void private let dismissed: () -> Void
private let contentController: OverlayStatusContentController private let contentController: OverlayStatusContentController
init(theme: PresentationTheme, strings: PresentationStrings, type: OverlayStatusControllerType, dismissed: @escaping () -> Void) { init(style: OverlayStatusControllerStyle, type: OverlayStatusControllerType, dismissed: @escaping () -> Void) {
self.dismissed = dismissed self.dismissed = dismissed
var isUserInteractionEnabled = true var isUserInteractionEnabled = true
switch type { switch type {
case let .loading(cancelled): case let .loading(cancelled):
let controller = TGProgressWindowController(light: theme.actionSheet.backgroundType == .light)! let controller = TGProgressWindowController(light: style == .light)!
controller.cancelled = { controller.cancelled = {
cancelled?() cancelled?()
} }
self.contentController = .loading(controller) self.contentController = .loading(controller)
case .success: case .success:
self.contentController = .progress(TGProgressWindowController(light: theme.actionSheet.backgroundType == .light)) self.contentController = .progress(TGProgressWindowController(light: style == .light))
case let .shieldSuccess(text, increasedDelay): case let .shieldSuccess(text, increasedDelay):
self.contentController = .shieldSuccess(TGProxyWindowController(light: theme.actionSheet.backgroundType == .light, text: text, shield: true, star: false), increasedDelay) self.contentController = .shieldSuccess(TGProxyWindowController(light: style == .light, text: text, shield: true, star: false), increasedDelay)
case let .genericSuccess(text, increasedDelay): case let .genericSuccess(text, increasedDelay):
let controller = TGProxyWindowController(light: theme.actionSheet.backgroundType == .light, text: text, shield: false, star: false)! let controller = TGProxyWindowController(light: style == .light, text: text, shield: false, star: false)!
self.contentController = .genericSuccess(controller, increasedDelay) self.contentController = .genericSuccess(controller, increasedDelay)
isUserInteractionEnabled = false isUserInteractionEnabled = false
case let .starSuccess(text): case let .starSuccess(text):
self.contentController = .genericSuccess(TGProxyWindowController(light: theme.actionSheet.backgroundType == .light, text: text, shield: false, star: true), false) self.contentController = .genericSuccess(TGProxyWindowController(light: style == .light, text: text, shield: false, star: true), false)
} }
super.init() super.init()
@ -129,9 +128,13 @@ private final class OverlayStatusControllerNode: ViewControllerTracingNode {
} }
} }
public enum OverlayStatusControllerStyle {
case light
case dark
}
public final class OverlayStatusController: ViewController, StandalonePresentableController { public final class OverlayStatusController: ViewController, StandalonePresentableController {
private let theme: PresentationTheme private let style: OverlayStatusControllerStyle
private let strings: PresentationStrings
private let type: OverlayStatusControllerType private let type: OverlayStatusControllerType
private var animatedDidAppear = false private var animatedDidAppear = false
@ -140,9 +143,8 @@ public final class OverlayStatusController: ViewController, StandalonePresentabl
return self.displayNode as! OverlayStatusControllerNode return self.displayNode as! OverlayStatusControllerNode
} }
public init(theme: PresentationTheme, strings: PresentationStrings, type: OverlayStatusControllerType) { public init(style: OverlayStatusControllerStyle, type: OverlayStatusControllerType) {
self.theme = theme self.style = style
self.strings = strings
self.type = type self.type = type
super.init(navigationBarPresentationData: nil) super.init(navigationBarPresentationData: nil)
@ -155,7 +157,7 @@ public final class OverlayStatusController: ViewController, StandalonePresentabl
} }
override public func loadDisplayNode() { override public func loadDisplayNode() {
self.displayNode = OverlayStatusControllerNode(theme: self.theme, strings: self.strings, type: self.type, dismissed: { [weak self] in self.displayNode = OverlayStatusControllerNode(style: self.style, type: self.type, dismissed: { [weak self] in
self?.presentingViewController?.dismiss(animated: false, completion: nil) self?.presentingViewController?.dismiss(animated: false, completion: nil)
}) })

View File

@ -22,6 +22,7 @@ static_library(
"//submodules/DateSelectionUI:DateSelectionUI", "//submodules/DateSelectionUI:DateSelectionUI",
"//submodules/PasswordSetupUI:PasswordSetupUI", "//submodules/PasswordSetupUI:PasswordSetupUI",
"//submodules/AppBundle:AppBundle", "//submodules/AppBundle:AppBundle",
"//submodules/PresentationDataUtils:PresentationDataUtils",
], ],
frameworks = [ frameworks = [
"$SDKROOT/System/Library/Frameworks/Foundation.framework", "$SDKROOT/System/Library/Frameworks/Foundation.framework",

View File

@ -4,6 +4,7 @@ import AsyncDisplayKit
import Display import Display
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
class FormEditableBlockItemNode<Item: FormControllerItem>: ASDisplayNode, FormControllerItemNode, FormBlockItemNodeProto, UIGestureRecognizerDelegate { class FormEditableBlockItemNode<Item: FormControllerItem>: ASDisplayNode, FormControllerItemNode, FormBlockItemNodeProto, UIGestureRecognizerDelegate {
private let topSeparatorInset: FormBlockItemInset private let topSeparatorInset: FormBlockItemInset

View File

@ -9,6 +9,7 @@ import OverlayStatusController
import AccountContext import AccountContext
import LegacyUI import LegacyUI
import ImageCompression import ImageCompression
import PresentationDataUtils
enum SecureIdAttachmentMenuType { enum SecureIdAttachmentMenuType {
case generic case generic
@ -64,7 +65,7 @@ func presentLegacySecureIdAttachmentMenu(context: AccountContext, present: @esca
return return
} }
uploadStarted = true uploadStarted = true
let statusController = OverlayStatusController(theme: presentationData.theme, strings: presentationData.strings, type: .loading(cancelled: nil)) let statusController = OverlayStatusController(theme: presentationData.theme, type: .loading(cancelled: nil))
let statusDisposable = (Signal<Never, NoError> { subscriber in let statusDisposable = (Signal<Never, NoError> { subscriber in
present(statusController) present(statusController)
return ActionDisposable { return ActionDisposable {

View File

@ -10,6 +10,7 @@ import TextFormat
import ProgressNavigationButtonNode import ProgressNavigationButtonNode
import AccountContext import AccountContext
import AlertUI import AlertUI
import PresentationDataUtils
import PasswordSetupUI import PasswordSetupUI
public enum SecureIdRequestResult: String { public enum SecureIdRequestResult: String {

View File

@ -9,6 +9,7 @@ import TelegramPresentationData
import ProgressNavigationButtonNode import ProgressNavigationButtonNode
import AccountContext import AccountContext
import AlertUI import AlertUI
import PresentationDataUtils
enum SecureIdDocumentFormScrollToSubject { enum SecureIdDocumentFormScrollToSubject {
case selfie case selfie

View File

@ -9,6 +9,7 @@ import CoreTelephony
import TelegramPresentationData import TelegramPresentationData
import AccountContext import AccountContext
import AlertUI import AlertUI
import PresentationDataUtils
import CountrySelectionUI import CountrySelectionUI
private func cleanPhoneNumber(_ text: String?) -> String { private func cleanPhoneNumber(_ text: String?) -> String {

View File

@ -5,6 +5,7 @@ import Display
import TelegramCore import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import TelegramStringFormatting import TelegramStringFormatting
import RadialStatusNode import RadialStatusNode
import PhotoResources import PhotoResources

View File

@ -16,6 +16,7 @@ static_library(
"//submodules/ProgressNavigationButtonNode:ProgressNavigationButtonNode", "//submodules/ProgressNavigationButtonNode:ProgressNavigationButtonNode",
"//submodules/ActivityIndicator:ActivityIndicator", "//submodules/ActivityIndicator:ActivityIndicator",
"//submodules/AlertUI:AlertUI", "//submodules/AlertUI:AlertUI",
"//submodules/PresentationDataUtils:PresentationDataUtils",
"//submodules/ItemListUI:ItemListUI", "//submodules/ItemListUI:ItemListUI",
], ],
frameworks = [ frameworks = [

View File

@ -6,8 +6,10 @@ import Postbox
import TelegramCore import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import AccountContext import AccountContext
import AlertUI import AlertUI
import PresentationDataUtils
private final class ResetPasswordControllerArguments { private final class ResetPasswordControllerArguments {
let updateCodeText: (String) -> Void let updateCodeText: (String) -> Void

View File

@ -9,6 +9,7 @@ import TelegramPresentationData
import ActivityIndicator import ActivityIndicator
import AccountContext import AccountContext
import AlertUI import AlertUI
import PresentationDataUtils
public enum SetupTwoStepVerificationInitialState { public enum SetupTwoStepVerificationInitialState {
case automatic case automatic

View File

@ -15,6 +15,7 @@ static_library(
"//submodules/AccountContext:AccountContext", "//submodules/AccountContext:AccountContext",
"//submodules/ItemListUI:ItemListUI", "//submodules/ItemListUI:ItemListUI",
"//submodules/AlertUI:AlertUI", "//submodules/AlertUI:AlertUI",
"//submodules/PresentationDataUtils:PresentationDataUtils",
"//submodules/ItemListAvatarAndNameInfoItem:ItemListAvatarAndNameInfoItem", "//submodules/ItemListAvatarAndNameInfoItem:ItemListAvatarAndNameInfoItem",
"//submodules/UndoUI:UndoUI", "//submodules/UndoUI:UndoUI",
"//submodules/TelegramUIPreferences:TelegramUIPreferences", "//submodules/TelegramUIPreferences:TelegramUIPreferences",

View File

@ -6,8 +6,10 @@ import Postbox
import TelegramCore import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import AccountContext import AccountContext
import AlertUI import AlertUI
import PresentationDataUtils
import ItemListAvatarAndNameInfoItem import ItemListAvatarAndNameInfoItem
import Emoji import Emoji

View File

@ -7,9 +7,11 @@ import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import TelegramUIPreferences import TelegramUIPreferences
import ItemListUI import ItemListUI
import PresentationDataUtils
import AccountContext import AccountContext
import TemporaryCachedPeerDataManager import TemporaryCachedPeerDataManager
import AlertUI import AlertUI
import PresentationDataUtils
import UndoUI import UndoUI
import ItemListPeerItem import ItemListPeerItem
import ItemListPeerActionItem import ItemListPeerActionItem
@ -525,7 +527,7 @@ public func channelAdminsController(context: AccountContext, peerId: PeerId, loa
guard let peer = peer, let user = user else { guard let peer = peer, let user = user else {
return return
} }
presentControllerImpl?(UndoOverlayController(context: context, content: .succeed(text: presentationData.strings.Channel_OwnershipTransfer_TransferCompleted(user.displayTitle, peer.displayTitle).0), elevatedLayout: false, action: { _ in }), nil) presentControllerImpl?(UndoOverlayController(presentationData: context.sharedContext.currentPresentationData.with { $0 }, content: .succeed(text: presentationData.strings.Channel_OwnershipTransfer_TransferCompleted(user.displayTitle, peer.displayTitle).0), elevatedLayout: false, action: { _ in }), nil)
}) })
} }

View File

@ -6,10 +6,12 @@ import Postbox
import TelegramCore import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import TelegramStringFormatting import TelegramStringFormatting
import OverlayStatusController import OverlayStatusController
import AccountContext import AccountContext
import AlertUI import AlertUI
import PresentationDataUtils
import ItemListAvatarAndNameInfoItem import ItemListAvatarAndNameInfoItem
private final class ChannelBannedMemberControllerArguments { private final class ChannelBannedMemberControllerArguments {
@ -673,7 +675,7 @@ public func channelBannedMemberController(context: AccountContext, peerId: PeerI
}, completed: { }, completed: {
if previousRights == nil { if previousRights == nil {
let presentationData = context.sharedContext.currentPresentationData.with { $0 } let presentationData = context.sharedContext.currentPresentationData.with { $0 }
presentControllerImpl?(OverlayStatusController(theme: presentationData.theme, strings: presentationData.strings, type: .genericSuccess(presentationData.strings.GroupPermission_AddSuccess, false)), nil) presentControllerImpl?(OverlayStatusController(theme: presentationData.theme, type: .genericSuccess(presentationData.strings.GroupPermission_AddSuccess, false)), nil)
} }
updated(cleanResolvedRights.flags.isEmpty ? nil : cleanResolvedRights) updated(cleanResolvedRights.flags.isEmpty ? nil : cleanResolvedRights)
dismissImpl?() dismissImpl?()

View File

@ -7,9 +7,11 @@ import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import TelegramUIPreferences import TelegramUIPreferences
import ItemListUI import ItemListUI
import PresentationDataUtils
import OverlayStatusController import OverlayStatusController
import AccountContext import AccountContext
import AlertUI import AlertUI
import PresentationDataUtils
import ItemListPeerItem import ItemListPeerItem
private final class ChannelBlacklistControllerArguments { private final class ChannelBlacklistControllerArguments {
@ -317,7 +319,7 @@ public func channelBlacklistController(context: AccountContext, peerId: PeerId)
} }
let presentationData = context.sharedContext.currentPresentationData.with { $0 } let presentationData = context.sharedContext.currentPresentationData.with { $0 }
let progress = OverlayStatusController(theme: presentationData.theme, strings: presentationData.strings, type: .loading(cancelled: nil)) let progress = OverlayStatusController(theme: presentationData.theme, type: .loading(cancelled: nil))
presentControllerImpl?(progress, nil) presentControllerImpl?(progress, nil)
removePeerDisposable.set((context.peerChannelMemberCategoriesContextsManager.updateMemberBannedRights(account: context.account, peerId: peerId, memberId: peer.id, bannedRights: TelegramChatBannedRights(flags: [.banReadMessages], untilDate: Int32.max)) removePeerDisposable.set((context.peerChannelMemberCategoriesContextsManager.updateMemberBannedRights(account: context.account, peerId: peerId, memberId: peer.id, bannedRights: TelegramChatBannedRights(flags: [.banReadMessages], untilDate: Int32.max))
|> deliverOnMainQueue).start(error: { [weak progress] _ in |> deliverOnMainQueue).start(error: { [weak progress] _ in

View File

@ -7,9 +7,11 @@ import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import TelegramUIPreferences import TelegramUIPreferences
import ItemListUI import ItemListUI
import PresentationDataUtils
import OverlayStatusController import OverlayStatusController
import AccountContext import AccountContext
import AlertUI import AlertUI
import PresentationDataUtils
import ItemListPeerItem import ItemListPeerItem
import ItemListPeerActionItem import ItemListPeerActionItem
@ -247,7 +249,7 @@ public func channelDiscussionGroupSetupController(context: AccountContext, peerI
var cancelImpl: (() -> Void)? var cancelImpl: (() -> Void)?
let progressSignal = Signal<Never, NoError> { subscriber in let progressSignal = Signal<Never, NoError> { subscriber in
let presentationData = context.sharedContext.currentPresentationData.with { $0 } let presentationData = context.sharedContext.currentPresentationData.with { $0 }
let controller = OverlayStatusController(theme: presentationData.theme, strings: presentationData.strings, type: .loading(cancelled: { let controller = OverlayStatusController(theme: presentationData.theme, type: .loading(cancelled: {
cancelImpl?() cancelImpl?()
})) }))
presentControllerImpl?(controller, nil) presentControllerImpl?(controller, nil)
@ -279,7 +281,7 @@ public func channelDiscussionGroupSetupController(context: AccountContext, peerI
}, completed: { }, completed: {
dismiss() dismiss()
/*let presentationData = context.sharedContext.currentPresentationData.with { $0 } /*let presentationData = context.sharedContext.currentPresentationData.with { $0 }
let controller = OverlayStatusController(theme: presentationData.theme, strings: presentationData.strings, type: .success) let controller = OverlayStatusController(theme: presentationData.theme, type: .success)
presentControllerImpl?(controller, nil)*/ presentControllerImpl?(controller, nil)*/
})) }))
})) }))
@ -347,7 +349,7 @@ public func channelDiscussionGroupSetupController(context: AccountContext, peerI
var cancelImpl: (() -> Void)? var cancelImpl: (() -> Void)?
let progressSignal = Signal<Never, NoError> { subscriber in let progressSignal = Signal<Never, NoError> { subscriber in
let presentationData = context.sharedContext.currentPresentationData.with { $0 } let presentationData = context.sharedContext.currentPresentationData.with { $0 }
let controller = OverlayStatusController(theme: presentationData.theme, strings: presentationData.strings, type: .loading(cancelled: { let controller = OverlayStatusController(theme: presentationData.theme, type: .loading(cancelled: {
cancelImpl?() cancelImpl?()
})) }))
presentControllerImpl?(controller, nil) presentControllerImpl?(controller, nil)
@ -402,7 +404,7 @@ public func channelDiscussionGroupSetupController(context: AccountContext, peerI
var cancelImpl: (() -> Void)? var cancelImpl: (() -> Void)?
let progressSignal = Signal<Never, NoError> { subscriber in let progressSignal = Signal<Never, NoError> { subscriber in
let presentationData = context.sharedContext.currentPresentationData.with { $0 } let presentationData = context.sharedContext.currentPresentationData.with { $0 }
let controller = OverlayStatusController(theme: presentationData.theme, strings: presentationData.strings, type: .loading(cancelled: { let controller = OverlayStatusController(theme: presentationData.theme, type: .loading(cancelled: {
cancelImpl?() cancelImpl?()
})) }))
presentControllerImpl?(controller, nil) presentControllerImpl?(controller, nil)
@ -482,7 +484,7 @@ public func channelDiscussionGroupSetupController(context: AccountContext, peerI
var cancelImpl: (() -> Void)? var cancelImpl: (() -> Void)?
let progressSignal = Signal<Never, NoError> { subscriber in let progressSignal = Signal<Never, NoError> { subscriber in
let presentationData = context.sharedContext.currentPresentationData.with { $0 } let presentationData = context.sharedContext.currentPresentationData.with { $0 }
let controller = OverlayStatusController(theme: presentationData.theme, strings: presentationData.strings, type: .loading(cancelled: { let controller = OverlayStatusController(theme: presentationData.theme, type: .loading(cancelled: {
cancelImpl?() cancelImpl?()
})) }))
presentControllerImpl?(controller, nil) presentControllerImpl?(controller, nil)
@ -513,7 +515,7 @@ public func channelDiscussionGroupSetupController(context: AccountContext, peerI
}, completed: { }, completed: {
if case .group = peer.info { if case .group = peer.info {
let presentationData = context.sharedContext.currentPresentationData.with { $0 } let presentationData = context.sharedContext.currentPresentationData.with { $0 }
let controller = OverlayStatusController(theme: presentationData.theme, strings: presentationData.strings, type: .success) let controller = OverlayStatusController(theme: presentationData.theme, type: .success)
presentControllerImpl?(controller, nil) presentControllerImpl?(controller, nil)
dismissImpl?() dismissImpl?()

View File

@ -5,6 +5,7 @@ import AsyncDisplayKit
import SwiftSignalKit import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import TextFormat import TextFormat
import AppBundle import AppBundle

View File

@ -7,6 +7,7 @@ import TelegramCore
import SwiftSignalKit import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import AccountContext import AccountContext
import SearchBarNode import SearchBarNode

View File

@ -8,12 +8,14 @@ import TelegramCore
import LegacyComponents import LegacyComponents
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import AccountContext import AccountContext
import TextFormat import TextFormat
import OverlayStatusController import OverlayStatusController
import TelegramStringFormatting import TelegramStringFormatting
import ShareController import ShareController
import AlertUI import AlertUI
import PresentationDataUtils
import GalleryUI import GalleryUI
import LegacyUI import LegacyUI
import ItemListAvatarAndNameInfoItem import ItemListAvatarAndNameInfoItem
@ -849,7 +851,7 @@ public func channelInfoController(context: AccountContext, peerId: PeerId) -> Vi
var cancelImpl: (() -> Void)? var cancelImpl: (() -> Void)?
let progressSignal = Signal<Never, NoError> { subscriber in let progressSignal = Signal<Never, NoError> { subscriber in
let presentationData = context.sharedContext.currentPresentationData.with { $0 } let presentationData = context.sharedContext.currentPresentationData.with { $0 }
let controller = OverlayStatusController(theme: presentationData.theme, strings: presentationData.strings, type: .loading(cancelled: { let controller = OverlayStatusController(theme: presentationData.theme, type: .loading(cancelled: {
cancelImpl?() cancelImpl?()
})) }))
presentControllerImpl?(controller, nil) presentControllerImpl?(controller, nil)

View File

@ -7,8 +7,10 @@ import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import TelegramUIPreferences import TelegramUIPreferences
import ItemListUI import ItemListUI
import PresentationDataUtils
import AccountContext import AccountContext
import AlertUI import AlertUI
import PresentationDataUtils
import ItemListPeerItem import ItemListPeerItem
private final class ChannelMembersControllerArguments { private final class ChannelMembersControllerArguments {

View File

@ -10,6 +10,7 @@ import ActivityIndicator
import TextFormat import TextFormat
import AccountContext import AccountContext
import AlertUI import AlertUI
import PresentationDataUtils
import PasswordSetupUI import PasswordSetupUI
private final class ChannelOwnershipTransferPasswordFieldNode: ASDisplayNode, UITextFieldDelegate { private final class ChannelOwnershipTransferPasswordFieldNode: ASDisplayNode, UITextFieldDelegate {

View File

@ -7,10 +7,12 @@ import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import TelegramUIPreferences import TelegramUIPreferences
import ItemListUI import ItemListUI
import PresentationDataUtils
import OverlayStatusController import OverlayStatusController
import AccountContext import AccountContext
import TemporaryCachedPeerDataManager import TemporaryCachedPeerDataManager
import AlertUI import AlertUI
import PresentationDataUtils
import ItemListPeerItem import ItemListPeerItem
import TelegramPermissionsUI import TelegramPermissionsUI
import ItemListPeerActionItem import ItemListPeerActionItem
@ -701,7 +703,7 @@ public func channelPermissionsController(context: AccountContext, peerId origina
} }
let presentationData = context.sharedContext.currentPresentationData.with { $0 } let presentationData = context.sharedContext.currentPresentationData.with { $0 }
let progress = OverlayStatusController(theme: presentationData.theme, strings: presentationData.strings, type: .loading(cancelled: nil)) let progress = OverlayStatusController(theme: presentationData.theme, type: .loading(cancelled: nil))
presentControllerImpl?(progress, nil) presentControllerImpl?(progress, nil)
let signal = convertGroupToSupergroup(account: context.account, peerId: view.peerId) let signal = convertGroupToSupergroup(account: context.account, peerId: view.peerId)

View File

@ -7,10 +7,12 @@ import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import TelegramUIPreferences import TelegramUIPreferences
import ItemListUI import ItemListUI
import PresentationDataUtils
import OverlayStatusController import OverlayStatusController
import AccountContext import AccountContext
import ShareController import ShareController
import AlertUI import AlertUI
import PresentationDataUtils
import TelegramNotices import TelegramNotices
import ItemListPeerItem import ItemListPeerItem
@ -914,7 +916,7 @@ public func channelVisibilityController(context: AccountContext, peerId: PeerId,
if let link = link { if let link = link {
UIPasteboard.general.string = link UIPasteboard.general.string = link
let presentationData = context.sharedContext.currentPresentationData.with { $0 } let presentationData = context.sharedContext.currentPresentationData.with { $0 }
presentControllerImpl?(OverlayStatusController(theme: presentationData.theme, strings: presentationData.strings, type: .genericSuccess(presentationData.strings.Username_LinkCopied, false)), nil) presentControllerImpl?(OverlayStatusController(theme: presentationData.theme, type: .genericSuccess(presentationData.strings.Username_LinkCopied, false)), nil)
} }
}) })
}, revokePrivateLink: { }, revokePrivateLink: {

View File

@ -8,6 +8,7 @@ import TelegramUIPreferences
import TelegramPresentationData import TelegramPresentationData
import LegacyComponents import LegacyComponents
import ItemListUI import ItemListUI
import PresentationDataUtils
class ChatSlowmodeItem: ListViewItem, ItemListItem { class ChatSlowmodeItem: ListViewItem, ItemListItem {
let theme: PresentationTheme let theme: PresentationTheme

View File

@ -6,8 +6,10 @@ import Postbox
import TelegramCore import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import AccountContext import AccountContext
import AlertUI import AlertUI
import PresentationDataUtils
private final class ConvertToSupergroupArguments { private final class ConvertToSupergroupArguments {
let convert: () -> Void let convert: () -> Void

View File

@ -7,9 +7,11 @@ import TelegramCore
import MessageUI import MessageUI
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import TelegramStringFormatting import TelegramStringFormatting
import AccountContext import AccountContext
import AlertUI import AlertUI
import PresentationDataUtils
import PhotoResources import PhotoResources
import MediaResources import MediaResources
import ItemListAvatarAndNameInfoItem import ItemListAvatarAndNameInfoItem

View File

@ -10,12 +10,14 @@ import TelegramPresentationData
import SafariServices import SafariServices
import TelegramUIPreferences import TelegramUIPreferences
import ItemListUI import ItemListUI
import PresentationDataUtils
import TextFormat import TextFormat
import AccountContext import AccountContext
import TelegramStringFormatting import TelegramStringFormatting
import TemporaryCachedPeerDataManager import TemporaryCachedPeerDataManager
import ShareController import ShareController
import AlertUI import AlertUI
import PresentationDataUtils
import MediaResources import MediaResources
import PhotoResources import PhotoResources
import GalleryUI import GalleryUI

View File

@ -6,6 +6,7 @@ import Postbox
import TelegramCore import TelegramCore
import SwiftSignalKit import SwiftSignalKit
import ItemListUI import ItemListUI
import PresentationDataUtils
import AccountContext import AccountContext
final class ChannelMembersSearchItem: ItemListControllerSearch { final class ChannelMembersSearchItem: ItemListControllerSearch {

View File

@ -6,6 +6,7 @@ import Postbox
import TelegramCore import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import SearchBarNode import SearchBarNode
private let searchBarFont = Font.regular(17.0) private let searchBarFont = Font.regular(17.0)

View File

@ -6,6 +6,7 @@ import Postbox
import TelegramCore import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import AccountContext import AccountContext
private final class GroupPreHistorySetupArguments { private final class GroupPreHistorySetupArguments {

View File

@ -7,6 +7,7 @@ import Postbox
import TelegramCore import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import ActivityIndicator import ActivityIndicator
import StickerResources import StickerResources
import AppBundle import AppBundle

View File

@ -7,6 +7,7 @@ import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import TelegramUIPreferences import TelegramUIPreferences
import ItemListUI import ItemListUI
import PresentationDataUtils
import AccountContext import AccountContext
import StickerPackPreviewUI import StickerPackPreviewUI
import ItemListStickerPackItem import ItemListStickerPackItem

View File

@ -7,6 +7,7 @@ import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import TelegramUIPreferences import TelegramUIPreferences
import ItemListUI import ItemListUI
import PresentationDataUtils
import AccountContext import AccountContext
import ItemListPeerItem import ItemListPeerItem

View File

@ -7,6 +7,7 @@ import Postbox
import TelegramCore import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import TelegramStringFormatting import TelegramStringFormatting
class ItemListCallListItem: ListViewItem, ItemListItem { class ItemListCallListItem: ListViewItem, ItemListItem {

View File

@ -6,6 +6,7 @@ import SwiftSignalKit
import TelegramCore import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import EncryptionKeyVisualization import EncryptionKeyVisualization
class ItemListSecretChatKeyItem: ListViewItem, ItemListItem { class ItemListSecretChatKeyItem: ListViewItem, ItemListItem {

View File

@ -6,9 +6,11 @@ import Postbox
import TelegramCore import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import AccountContext import AccountContext
import ContextUI import ContextUI
import AlertUI import AlertUI
import PresentationDataUtils
public enum PeerReportSubject { public enum PeerReportSubject {
case peer(PeerId) case peer(PeerId)

View File

@ -6,6 +6,7 @@ import Postbox
import TelegramCore import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import AccountContext import AccountContext
import TelegramStringFormatting import TelegramStringFormatting

View File

@ -8,6 +8,7 @@ import TelegramCore
import LegacyComponents import LegacyComponents
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import AccountContext import AccountContext
import TextFormat import TextFormat
import OverlayStatusController import OverlayStatusController
@ -15,6 +16,7 @@ import TelegramStringFormatting
import AccountContext import AccountContext
import ShareController import ShareController
import AlertUI import AlertUI
import PresentationDataUtils
import TelegramNotices import TelegramNotices
import GalleryUI import GalleryUI
import ItemListAvatarAndNameInfoItem import ItemListAvatarAndNameInfoItem
@ -785,7 +787,7 @@ public func openAddPersonContactImpl(context: AccountContext, peerId: PeerId, pu
} }
let presentationData = context.sharedContext.currentPresentationData.with { $0 } let presentationData = context.sharedContext.currentPresentationData.with { $0 }
present(OverlayStatusController(theme: presentationData.theme, strings: presentationData.strings, type: .genericSuccess(presentationData.strings.AddContact_StatusSuccess(peer.compactDisplayTitle).0, true)), nil) present(OverlayStatusController(theme: presentationData.theme, type: .genericSuccess(presentationData.strings.AddContact_StatusSuccess(peer.compactDisplayTitle).0, true)), nil)
} }
}), completed: nil, cancelled: nil)) }), completed: nil, cancelled: nil))
}) })
@ -1065,7 +1067,7 @@ public func userInfoController(context: AccountContext, peerId: PeerId, mode: Pe
let progressSignal = Signal<Never, NoError> { subscriber in let progressSignal = Signal<Never, NoError> { subscriber in
let presentationData = context.sharedContext.currentPresentationData.with { $0 } let presentationData = context.sharedContext.currentPresentationData.with { $0 }
let controller = OverlayStatusController(theme: presentationData.theme, strings: presentationData.strings, type: .loading(cancelled: nil)) let controller = OverlayStatusController(theme: presentationData.theme, type: .loading(cancelled: nil))
presentControllerImpl?(controller, nil) presentControllerImpl?(controller, nil)
return ActionDisposable { [weak controller] in return ActionDisposable { [weak controller] in
Queue.mainQueue().async() { Queue.mainQueue().async() {
@ -1348,7 +1350,7 @@ public func userInfoController(context: AccountContext, peerId: PeerId, mode: Pe
let _ = (enqueueMessages(account: context.account, peerId: peerId, messages: [.message(text: "", attributes: [], mediaReference: .standalone(media: contact), replyToMessageId: nil, localGroupingKey: nil)]) let _ = (enqueueMessages(account: context.account, peerId: peerId, messages: [.message(text: "", attributes: [], mediaReference: .standalone(media: contact), replyToMessageId: nil, localGroupingKey: nil)])
|> deliverOnMainQueue).start(next: { [weak controller] _ in |> deliverOnMainQueue).start(next: { [weak controller] _ in
let presentationData = context.sharedContext.currentPresentationData.with { $0 } let presentationData = context.sharedContext.currentPresentationData.with { $0 }
controller?.present(OverlayStatusController(theme: presentationData.theme, strings: presentationData.strings, type: .success), in: .window(.root)) controller?.present(OverlayStatusController(theme: presentationData.theme, type: .success), in: .window(.root))
}) })
}) })
} }
@ -1384,7 +1386,7 @@ public func userInfoController(context: AccountContext, peerId: PeerId, mode: Pe
var cancelImpl: (() -> Void)? var cancelImpl: (() -> Void)?
let progressSignal = Signal<Never, NoError> { subscriber in let progressSignal = Signal<Never, NoError> { subscriber in
let presentationData = context.sharedContext.currentPresentationData.with { $0 } let presentationData = context.sharedContext.currentPresentationData.with { $0 }
let controller = OverlayStatusController(theme: presentationData.theme, strings: presentationData.strings, type: .loading(cancelled: { let controller = OverlayStatusController(theme: presentationData.theme, type: .loading(cancelled: {
cancelImpl?() cancelImpl?()
})) }))
presentControllerImpl?(controller, nil) presentControllerImpl?(controller, nil)

View File

@ -5,6 +5,7 @@ import AsyncDisplayKit
import SwiftSignalKit import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
class UserInfoEditingPhoneActionItem: ListViewItem, ItemListItem { class UserInfoEditingPhoneActionItem: ListViewItem, ItemListItem {
let theme: PresentationTheme let theme: PresentationTheme

View File

@ -5,6 +5,7 @@ import AsyncDisplayKit
import SwiftSignalKit import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import SinglePhoneInputNode import SinglePhoneInputNode
import AppBundle import AppBundle

View File

@ -18,6 +18,7 @@ static_library(
"//submodules/OverlayStatusController:OverlayStatusController", "//submodules/OverlayStatusController:OverlayStatusController",
"//submodules/DeviceLocationManager:DeviceLocationManager", "//submodules/DeviceLocationManager:DeviceLocationManager",
"//submodules/AlertUI:AlertUI", "//submodules/AlertUI:AlertUI",
"//submodules/PresentationDataUtils:PresentationDataUtils",
"//submodules/ItemListPeerItem:ItemListPeerItem", "//submodules/ItemListPeerItem:ItemListPeerItem",
"//submodules/TelegramPermissionsUI:TelegramPermissionsUI", "//submodules/TelegramPermissionsUI:TelegramPermissionsUI",
"//submodules/ItemListPeerActionItem:ItemListPeerActionItem", "//submodules/ItemListPeerActionItem:ItemListPeerActionItem",

View File

@ -8,10 +8,12 @@ import MapKit
import TelegramPresentationData import TelegramPresentationData
import TelegramUIPreferences import TelegramUIPreferences
import ItemListUI import ItemListUI
import PresentationDataUtils
import OverlayStatusController import OverlayStatusController
import DeviceLocationManager import DeviceLocationManager
import AccountContext import AccountContext
import AlertUI import AlertUI
import PresentationDataUtils
import ItemListPeerItem import ItemListPeerItem
import TelegramPermissionsUI import TelegramPermissionsUI
import ItemListPeerActionItem import ItemListPeerActionItem
@ -313,7 +315,7 @@ public func peersNearbyController(context: AccountContext) -> ViewController {
var cancelImpl: (() -> Void)? var cancelImpl: (() -> Void)?
let progressSignal = Signal<Never, NoError> { subscriber in let progressSignal = Signal<Never, NoError> { subscriber in
let controller = OverlayStatusController(theme: presentationData.theme, strings: presentationData.strings, type: .loading(cancelled: { let controller = OverlayStatusController(theme: presentationData.theme, type: .loading(cancelled: {
cancelImpl?() cancelImpl?()
})) }))
presentControllerImpl?(controller, nil) presentControllerImpl?(controller, nil)

View File

@ -5,6 +5,7 @@ import AsyncDisplayKit
import SwiftSignalKit import SwiftSignalKit
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import PeersNearbyIconNode import PeersNearbyIconNode
class PeersNearbyHeaderItem: ListViewItem, ItemListItem { class PeersNearbyHeaderItem: ListViewItem, ItemListItem {

View File

@ -0,0 +1,20 @@
load("//Config:buck_rule_macros.bzl", "static_library")
static_library(
name = "PresentationDataUtils",
srcs = glob([
"Sources/**/*.swift",
]),
deps = [
"//submodules/Display:Display#shared",
"//submodules/SSignalKit/SwiftSignalKit:SwiftSignalKit#shared",
"//submodules/AccountContext:AccountContext",
"//submodules/TelegramPresentationData:TelegramPresentationData",
"//submodules/AlertUI:AlertUI",
"//submodules/ItemListUI:ItemListUI",
],
frameworks = [
"$SDKROOT/System/Library/Frameworks/Foundation.framework",
"$SDKROOT/System/Library/Frameworks/UIKit.framework",
],
)

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
</dict>
</plist>

View File

@ -0,0 +1,13 @@
import Foundation
import Display
import AlertUI
import AccountContext
import SwiftSignalKit
public func textAlertController(context: AccountContext, title: String?, text: String, actions: [TextAlertAction], actionLayout: TextAlertContentActionLayout = .horizontal, allowInputInset: Bool = true) -> AlertController {
return textAlertController(alertContext: AlertControllerContext(theme: AlertControllerTheme(presentationTheme: context.sharedContext.currentPresentationData.with({ $0 }).theme), themeSignal: context.sharedContext.presentationData |> map { presentationData in AlertControllerTheme(presentationTheme: presentationData.theme) }), title: title, text: text, actions: actions, actionLayout: actionLayout, allowInputInset: allowInputInset)
}
public func richTextAlertController(context: AccountContext, title: NSAttributedString?, text: NSAttributedString, actions: [TextAlertAction], actionLayout: TextAlertContentActionLayout = .horizontal, allowInputInset: Bool = true, dismissAutomatically: Bool = true) -> AlertController {
return richTextAlertController(alertContext: AlertControllerContext(theme: AlertControllerTheme(presentationTheme: context.sharedContext.currentPresentationData.with({ $0 }).theme), themeSignal: context.sharedContext.presentationData |> map { presentationData in AlertControllerTheme(presentationTheme: presentationData.theme) }), title: title, text: text, actions: actions, actionLayout: actionLayout, allowInputInset: allowInputInset, dismissAutomatically: dismissAutomatically)
}

View File

@ -0,0 +1,18 @@
import Foundation
import Display
import AlertUI
import AccountContext
import SwiftSignalKit
import ItemListUI
import PresentationDataUtils
public extension ItemListController {
convenience init<ItemGenerationArguments>(context: AccountContext, state: Signal<(ItemListControllerState, (ItemListNodeState, ItemGenerationArguments)), NoError>, tabBarItem: Signal<ItemListControllerTabBarItem, NoError>? = nil) {
self.init(sharedContext: context.sharedContext, state: state, tabBarItem: tabBarItem)
}
convenience init<ItemGenerationArguments>(sharedContext: SharedAccountContext, state: Signal<(ItemListControllerState, (ItemListNodeState, ItemGenerationArguments)), NoError>, tabBarItem: Signal<ItemListControllerTabBarItem, NoError>? = nil) {
let presentationData = sharedContext.currentPresentationData.with { $0 }
self.init(theme: presentationData.theme, strings: presentationData.strings, updatedPresentationData: sharedContext.presentationData |> map { ($0.theme, $0.strings) }, state: state, tabBarItem: tabBarItem)
}
}

View File

@ -0,0 +1,10 @@
import Foundation
import UIKit
import OverlayStatusController
import TelegramPresentationData
public extension OverlayStatusController {
convenience init(theme: PresentationTheme, type: OverlayStatusControllerType) {
self.init(style: theme.actionSheet.backgroundType == .light ? .light : .dark, type: type)
}
}

View File

@ -135,7 +135,7 @@ final class ReactionNode: ASDisplayNode {
renderSize = CGSize(width: intrinsicSize.width * 2.5, height: intrinsicSize.height * 2.5) renderSize = CGSize(width: intrinsicSize.width * 2.5, height: intrinsicSize.height * 2.5)
} }
} }
self.animationNode.setup(account: account, resource: .localFile(path), width: Int(renderSize.width), height: Int(renderSize.height), mode: .direct) self.animationNode.setup(resource: .localFile(path), width: Int(renderSize.width), height: Int(renderSize.height), mode: .direct)
case .reply: case .reply:
self.intrinsicOffset = CGPoint(x: 0.0, y: 0.0) self.intrinsicOffset = CGPoint(x: 0.0, y: 0.0)
self.imageNode.image = UIImage(named: "Chat/Context Menu/ReactionReply", in: getAppBundle(), compatibleWith: nil) self.imageNode.image = UIImage(named: "Chat/Context Menu/ReactionReply", in: getAppBundle(), compatibleWith: nil)

View File

@ -16,6 +16,7 @@ static_library(
"//submodules/AccountContext:AccountContext", "//submodules/AccountContext:AccountContext",
"//submodules/ActivityIndicator:ActivityIndicator", "//submodules/ActivityIndicator:ActivityIndicator",
"//submodules/AlertUI:AlertUI", "//submodules/AlertUI:AlertUI",
"//submodules/PresentationDataUtils:PresentationDataUtils",
"//submodules/AvatarNode:AvatarNode", "//submodules/AvatarNode:AvatarNode",
"//submodules/CallListUI:CallListUI", "//submodules/CallListUI:CallListUI",
"//submodules/ChatListSearchItemNode:ChatListSearchItemNode", "//submodules/ChatListSearchItemNode:ChatListSearchItemNode",

View File

@ -6,9 +6,11 @@ import Postbox
import TelegramCore import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import ItemListUI import ItemListUI
import PresentationDataUtils
import OverlayStatusController import OverlayStatusController
import AccountContext import AccountContext
import AlertUI import AlertUI
import PresentationDataUtils
import AuthorizationUI import AuthorizationUI
private final class ChangePhoneNumberCodeControllerArguments { private final class ChangePhoneNumberCodeControllerArguments {
@ -272,7 +274,7 @@ func changePhoneNumberCodeController(context: AccountContext, phoneNumber: Strin
return $0.withUpdatedChecking(false) return $0.withUpdatedChecking(false)
} }
let presentationData = context.sharedContext.currentPresentationData.with { $0 } let presentationData = context.sharedContext.currentPresentationData.with { $0 }
presentControllerImpl?(OverlayStatusController(theme: presentationData.theme, strings: presentationData.strings, type: .success), nil) presentControllerImpl?(OverlayStatusController(theme: presentationData.theme, type: .success), nil)
dismissImpl?() dismissImpl?()
})) }))
} }

View File

@ -8,6 +8,7 @@ import TelegramPresentationData
import ProgressNavigationButtonNode import ProgressNavigationButtonNode
import AccountContext import AccountContext
import AlertUI import AlertUI
import PresentationDataUtils
import CountrySelectionUI import CountrySelectionUI
final class ChangePhoneNumberController: ViewController { final class ChangePhoneNumberController: ViewController {

View File

@ -7,6 +7,7 @@ import TelegramPresentationData
import TextFormat import TextFormat
import AccountContext import AccountContext
import AlertUI import AlertUI
import PresentationDataUtils
import AppBundle import AppBundle
private final class ChangePhoneNumberIntroControllerNode: ASDisplayNode { private final class ChangePhoneNumberIntroControllerNode: ASDisplayNode {

View File

@ -7,6 +7,7 @@ import TelegramCore
import TelegramPresentationData import TelegramPresentationData
import TelegramUIPreferences import TelegramUIPreferences
import ItemListUI import ItemListUI
import PresentationDataUtils
import AccountContext import AccountContext
enum AutomaticDownloadConnectionType { enum AutomaticDownloadConnectionType {

View File

@ -8,6 +8,7 @@ import TelegramUIPreferences
import TelegramPresentationData import TelegramPresentationData
import LegacyComponents import LegacyComponents
import ItemListUI import ItemListUI
import PresentationDataUtils
enum AutomaticDownloadDataUsage: Int { enum AutomaticDownloadDataUsage: Int {
case low case low

Some files were not shown because too many files have changed in this diff Show More