Skip to content

Commit 0243a63

Browse files
committed
11.4
1 parent 535b69e commit 0243a63

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+2251
-399
lines changed

Telegram-Mac/AccountViewController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -945,7 +945,7 @@ class AccountViewController : TelegramGenericViewController<AccountControllerVie
945945
}
946946

947947

948-
let arguments = AccountInfoArguments(context: context, storyList: PeerStoryListContext(account: context.account, peerId: context.peerId, isArchived: false), presentController: { [weak self] controller, main in
948+
let arguments = AccountInfoArguments(context: context, storyList: PeerStoryListContext(account: context.account, peerId: context.peerId, isArchived: false, folderId: nil), presentController: { [weak self] controller, main in
949949
guard let navigation = self?.navigation as? MajorNavigationController else {return}
950950
guard let singleLayout = self?.context.layout else {return}
951951
if main {

Telegram-Mac/AnimtedStickerHeaderItem.swift

Lines changed: 69 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,15 @@ import TelegramMedia
1313
class AnimatedStickerHeaderItem: GeneralRowItem {
1414
fileprivate let context: AccountContext
1515
fileprivate let textLayout: TextViewLayout
16-
fileprivate let sticker: LocalAnimatedSticker
16+
fileprivate let sticker: LocalAnimatedSticker?
1717
let stickerSize: NSSize
1818
let bgColor: NSColor?
1919
let modify:[String]?
2020
let isFullView: Bool
21-
init(_ initialSize: NSSize, stableId: AnyHashable, context: AccountContext, sticker: LocalAnimatedSticker, text: NSAttributedString, stickerSize: NSSize = NSMakeSize(120, 120), bgColor: NSColor? = nil, modify:[String]? = nil, isFullView: Bool = false) {
21+
let image: CGImage?
22+
init(_ initialSize: NSSize, stableId: AnyHashable, context: AccountContext, sticker: LocalAnimatedSticker?, text: NSAttributedString, stickerSize: NSSize = NSMakeSize(120, 120), bgColor: NSColor? = nil, modify:[String]? = nil, isFullView: Bool = false, image: CGImage? = nil) {
2223
self.context = context
24+
self.image = image
2325
self.sticker = sticker
2426
self.stickerSize = stickerSize
2527
self.bgColor = bgColor
@@ -63,12 +65,12 @@ class AnimatedStickerHeaderItem: GeneralRowItem {
6365

6466

6567
private final class AnimtedStickerHeaderView : TableRowView {
66-
private let imageView: MediaAnimatedStickerView = MediaAnimatedStickerView(frame: .zero)
68+
private var animationView: MediaAnimatedStickerView?
69+
private var imageView: ImageView?
6770
private let textView: TextView = TextView()
6871
private var bgView: View?
6972
required init(frame frameRect: NSRect) {
7073
super.init(frame: frameRect)
71-
addSubview(imageView)
7274
addSubview(textView)
7375

7476
textView.isSelectable = false
@@ -90,15 +92,62 @@ private final class AnimtedStickerHeaderView : TableRowView {
9092

9193
guard let item = item as? AnimatedStickerHeaderItem else { return }
9294

93-
let params = item.sticker.parameters
95+
if let sticker = item.sticker {
96+
97+
if let view = self.imageView {
98+
performSubviewRemoval(view, animated: animated)
99+
self.imageView = nil
100+
}
101+
102+
let current: MediaAnimatedStickerView
103+
if let view = self.animationView {
104+
current = view
105+
} else {
106+
current = MediaAnimatedStickerView(frame: item.stickerSize.bounds)
107+
self.animationView = current
108+
addSubview(current)
109+
}
110+
let params = sticker.parameters
111+
112+
if let modify = item.modify, let color = item.bgColor {
113+
params.colors = modify.map {
114+
.init(keyPath: $0, color: color)
115+
}
116+
}
117+
118+
current.update(with: sticker.file, size: item.stickerSize, context: item.context, parent: nil, table: item.table, parameters: params, animated: animated, positionFlags: nil, approximateSynchronousValue: false)
119+
} else {
120+
if let view = self.animationView {
121+
performSubviewRemoval(view, animated: animated)
122+
self.animationView = nil
123+
}
124+
}
94125

95-
if let modify = item.modify, let color = item.bgColor {
96-
params.colors = modify.map {
97-
.init(keyPath: $0, color: color)
126+
if let image = item.image {
127+
128+
if let view = self.animationView {
129+
performSubviewRemoval(view, animated: animated)
130+
self.animationView = nil
131+
}
132+
133+
let current: ImageView
134+
if let view = self.imageView {
135+
current = view
136+
} else {
137+
current = ImageView(frame: item.stickerSize.bounds)
138+
self.imageView = current
139+
addSubview(current)
140+
}
141+
current.image = image
142+
current.sizeToFit()
143+
} else {
144+
if let view = self.imageView {
145+
performSubviewRemoval(view, animated: animated)
146+
self.imageView = nil
98147
}
99148
}
100149

101-
imageView.update(with: item.sticker.file, size: item.stickerSize, context: item.context, parent: nil, table: item.table, parameters: params, animated: animated, positionFlags: nil, approximateSynchronousValue: false)
150+
102151

103152
// self.imageView.image = item.icon
104153
// self.imageView.sizeToFit()
@@ -122,15 +171,21 @@ private final class AnimtedStickerHeaderView : TableRowView {
122171
super.layout()
123172
guard let item = item as? AnimatedStickerHeaderItem else { return }
124173

174+
let imageView = self.imageView ?? self.animationView
175+
176+
guard let imageView else {
177+
return
178+
}
179+
125180
if item.isFullView {
126-
self.imageView.center()
127-
self.imageView.setFrameOrigin(NSMakePoint(self.imageView.frame.minX, self.imageView.frame.minY - 40))
181+
imageView.center()
182+
imageView.setFrameOrigin(NSMakePoint(imageView.frame.minX, imageView.frame.minY - 40))
128183
} else {
129-
self.imageView.centerX(y: item.inset.top)
184+
imageView.centerX(y: item.inset.top)
130185
}
131-
self.textView.centerX(y: self.imageView.frame.maxY + item.inset.bottom)
186+
self.textView.centerX(y: imageView.frame.maxY + item.inset.bottom)
132187

133-
self.bgView?.frame = self.imageView.frame
188+
self.bgView?.frame = imageView.frame
134189
}
135190

136191
required init?(coder: NSCoder) {
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
{
2+
"images" : [
3+
{
4+
"filename" : "face_id_90.png",
5+
"idiom" : "universal",
6+
"scale" : "1x"
7+
},
8+
{
9+
"filename" : "face_id_90@2x.png",
10+
"idiom" : "universal",
11+
"scale" : "2x"
12+
},
13+
{
14+
"idiom" : "universal",
15+
"scale" : "3x"
16+
}
17+
],
18+
"info" : {
19+
"author" : "xcode",
20+
"version" : 1
21+
}
22+
}
755 Bytes
Loading
1.28 KB
Loading

Telegram-Mac/BrowserState.swift

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -339,22 +339,24 @@ final class BrowserStateContext {
339339

340340

341341
func add(_ recently: WebappRecentlyUsed) {
342-
if recently.tabdata.data.canBeRecent {
343-
updateState { current in
344-
var current = current
345-
if let index = current.recentlyUsed.firstIndex(where: { $0.tabdata.unique == recently.tabdata.unique }) {
346-
current.recentlyUsed.move(at: index, to: 0)
347-
current.recentlyUsed[0] = recently
348-
} else {
349-
current.recentlyUsed.insert(recently, at: 0)
342+
if recently.tabdata.peer?.addressName != context.appConfiguration.getStringValue("verify_age_bot_username", orElse: "") {
343+
if recently.tabdata.data.canBeRecent {
344+
updateState { current in
345+
var current = current
346+
if let index = current.recentlyUsed.firstIndex(where: { $0.tabdata.unique == recently.tabdata.unique }) {
347+
current.recentlyUsed.move(at: index, to: 0)
348+
current.recentlyUsed[0] = recently
349+
} else {
350+
current.recentlyUsed.insert(recently, at: 0)
351+
}
352+
return current
350353
}
351-
return current
352354
}
353355
}
354356
}
355357
func setExternalState(_ unique: BrowserTabData.Unique, external: WebpageModalState) {
356358
updateState { current in
357-
var current = current
359+
let current = current
358360
if let index = current.recentlyUsed.firstIndex(where: { $0.tabdata.unique == unique }) {
359361
current.recentlyUsed[index].tabdata.external = external
360362
}
@@ -397,15 +399,15 @@ final class BrowserStateContext {
397399
}
398400

399401
}
400-
402+
let verify_age_bot = context.appConfiguration.getStringValue("verify_age_bot_username", orElse: "")
403+
401404

402405
if let peer = tab.peer {
403406

404407

405408
let peerId = peer.id
406-
let botData = context.engine.data.get(TelegramEngine.EngineData.Item.Peer.BotAppSettings(id: peerId)) |> deliverOnMainQueue
407409

408-
if FastSettings.shouldConfirmWebApp(peerId) {
410+
if FastSettings.shouldConfirmWebApp(peerId), peer.addressName != verify_age_bot {
409411

410412
let signal = context.engine.data.get(TelegramEngine.EngineData.Item.Peer.BotPrivacyPolicyUrl(id: peerId)) |> deliverOnMainQueue
411413
_ = signal.startStandalone(next: { [weak self] privacyUrl in

Telegram-Mac/ChannelInfoEntries.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ class ChannelInfoArguments : PeerInfoArguments {
254254
}
255255

256256
func archiveStories() {
257-
self.pushViewController(StoryMediaController(context: context, peerId: peerId, listContext: PeerStoryListContext(account: context.account, peerId: peerId, isArchived: true), standalone: true, isArchived: true))
257+
self.pushViewController(StoryMediaController(context: context, peerId: peerId, listContext: PeerStoryListContext(account: context.account, peerId: peerId, isArchived: true, folderId: nil), standalone: true, isArchived: true))
258258
}
259259

260260
func boosts(_ access: GroupAccess) {

Telegram-Mac/ChannelStatsViewController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,7 @@ func ChannelStatsViewController(_ context: AccountContext, peerId: PeerId) -> Vi
480480

481481
let storiesPromise = Promise<PeerStoryListContext.State?>()
482482

483-
let storyList = PeerStoryListContext(account: context.account, peerId: peerId, isArchived: false)
483+
let storyList = PeerStoryListContext(account: context.account, peerId: peerId, isArchived: false, folderId: nil)
484484
storyList.loadMore()
485485
storiesPromise.set(
486486
.single(nil)

Telegram-Mac/ChatController.swift

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3428,7 +3428,7 @@ class ChatController: EditableViewController<ChatControllerView>, Notifable, Tab
34283428
includeJoin = false
34293429
}
34303430

3431-
let entries = messageEntries(msgEntries, location: chatLocation, maxReadIndex: maxReadIndex, dayGrouping: customChatContents == nil, renderType: chatTheme.bubbled ? .bubble : .list, includeBottom: true, timeDifference: timeDifference, ranks: ranks, pollAnswersLoading: pollAnswersLoading, threadLoading: threadLoading, groupingPhotos: true, autoplayMedia: initialData.autoplayMedia, searchState: searchState, animatedEmojiStickers: bigEmojiEnabled ? animatedEmojiStickers : [:], topFixedMessages: topMessages, customChannelDiscussionReadState: customChannelDiscussionReadState, customThreadOutgoingReadState: customThreadOutgoingReadState, addRepliesHeader: peerId == repliesPeerId && view.earlierId == nil, updatingMedia: updatingMedia, adMessage: ads.fixed, dynamicAdMessages: ads.opportunistic, chatTheme: chatTheme, reactions: reactions, transribeState: uiState.transribe, topicCreatorId: uiState.topicCreatorId, mediaRevealed: uiState.mediaRevealed, translate: uiState.translate, storyState: uiState.storyState, peerStoryStats: view.peerStoryStats, cachedData: peerView?.cachedData, peer: peer, holeLater: view.holeLater, holeEarlier: view.holeEarlier, recommendedChannels: recommendedChannels, includeJoin: includeJoin, earlierId: view.earlierId, laterId: view.laterId, automaticDownload: initialData.autodownloadSettings, savedMessageTags: savedMessageTags, contentSettings: context.contentSettings, codeSyntaxData: uiState.codeSyntaxes, messageEffects: messageEffects, factCheckRevealed: uiState.factCheck, quoteRevealed: uiState.quoteRevealed, peerStatus: uiState.peerStatus, commonGroups: uiState.commonGroups, monoforumState: uiState.monoforumState, accountPeerId: context.peerId).map { ChatWrappedEntry(appearance: AppearanceWrapperEntry(entry: $0, appearance: appearance), tag: view.tag) }
3431+
let entries = messageEntries(msgEntries, location: chatLocation, maxReadIndex: maxReadIndex, dayGrouping: customChatContents == nil, renderType: chatTheme.bubbled ? .bubble : .list, includeBottom: true, timeDifference: timeDifference, ranks: ranks, pollAnswersLoading: pollAnswersLoading, threadLoading: threadLoading, groupingPhotos: true, autoplayMedia: initialData.autoplayMedia, searchState: searchState, animatedEmojiStickers: bigEmojiEnabled ? animatedEmojiStickers : [:], topFixedMessages: topMessages, customChannelDiscussionReadState: customChannelDiscussionReadState, customThreadOutgoingReadState: customThreadOutgoingReadState, addRepliesHeader: peerId == repliesPeerId && view.earlierId == nil, updatingMedia: updatingMedia, adMessage: ads.fixed, dynamicAdMessages: ads.opportunistic, chatTheme: chatTheme, reactions: reactions, transribeState: uiState.transribe, topicCreatorId: uiState.topicCreatorId, mediaRevealed: uiState.mediaRevealed, translate: uiState.translate, storyState: uiState.storyState, peerStoryStats: view.peerStoryStats, cachedData: peerView?.cachedData, peer: peer, holeLater: view.holeLater, holeEarlier: view.holeEarlier, recommendedChannels: recommendedChannels, includeJoin: includeJoin, earlierId: view.earlierId, laterId: view.laterId, automaticDownload: initialData.autodownloadSettings, savedMessageTags: savedMessageTags, contentSettings: context.contentSettings, codeSyntaxData: uiState.codeSyntaxes, messageEffects: messageEffects, factCheckRevealed: uiState.factCheck, quoteRevealed: uiState.quoteRevealed, peerStatus: uiState.peerStatus, commonGroups: uiState.commonGroups, monoforumState: uiState.monoforumState, accountPeerId: context.peerId, contentConfig: context.contentConfig).map { ChatWrappedEntry(appearance: AppearanceWrapperEntry(entry: $0, appearance: appearance), tag: view.tag) }
34323432
proccesedView = ChatHistoryView(originalView: view, filteredEntries: entries, theme: chatTheme)
34333433
}
34343434
} else {
@@ -5339,24 +5339,41 @@ class ChatController: EditableViewController<ChatControllerView>, Notifable, Tab
53395339
chatInteraction.revealMedia = { [weak self] message in
53405340

53415341
if message.isSensitiveContent(platform: "ios") {
5342-
verifyAlert(for: context.window, header: strings().chatSensitiveContent, information: strings().chatSensitiveContentConfirm, ok: strings().chatSensitiveContentConfirmOk, option: context.contentConfig.canAdjustSensitiveContent ? strings().chatSensitiveContentConfirmThird : nil, optionIsSelected: false, successHandler: { result in
5342+
5343+
if !context.contentConfig.sensitiveContentEnabled, context.contentConfig.canAdjustSensitiveContent {
5344+
let need_verification = context.appConfiguration.getBoolValue("need_age_video_verification", orElse: false)
5345+
5346+
if need_verification {
5347+
showModal(with: VerifyAgeAlertController(context: context), for: context.window)
5348+
return
5349+
}
5350+
}
5351+
if context.contentConfig.sensitiveContentEnabled {
53435352
self?.updateState { current in
53445353
var current = current
53455354
current.mediaRevealed.insert(message.id)
53465355
return current
53475356
}
5348-
if result == .thrid {
5349-
let _ = updateRemoteContentSettingsConfiguration(postbox: context.account.postbox, network: context.account.network, sensitiveContentEnabled: true).start()
5350-
let messages = self?.historyView?.originalView?.entries.compactMap { $0.message } ?? []
5357+
} else {
5358+
verifyAlert(for: context.window, header: strings().chatSensitiveContent, information: strings().chatSensitiveContentConfirm, ok: strings().chatSensitiveContentConfirmOk, option: context.contentConfig.canAdjustSensitiveContent ? strings().chatSensitiveContentConfirmThird : nil, optionIsSelected: false, successHandler: { result in
53515359
self?.updateState { current in
53525360
var current = current
5353-
for message in messages {
5354-
current.mediaRevealed.insert(message.id)
5355-
}
5361+
current.mediaRevealed.insert(message.id)
53565362
return current
53575363
}
5358-
}
5359-
})
5364+
if result == .thrid {
5365+
let _ = updateRemoteContentSettingsConfiguration(postbox: context.account.postbox, network: context.account.network, sensitiveContentEnabled: true).start()
5366+
let messages = self?.historyView?.originalView?.entries.compactMap { $0.message } ?? []
5367+
self?.updateState { current in
5368+
var current = current
5369+
for message in messages {
5370+
current.mediaRevealed.insert(message.id)
5371+
}
5372+
return current
5373+
}
5374+
}
5375+
})
5376+
}
53605377
} else {
53615378
self?.updateState { current in
53625379
var current = current

0 commit comments

Comments
 (0)