Skip to content

Commit cf670ed

Browse files
author
overtake
committed
• The finer things – champagne, caviar… bug fixes.
1 parent cf2d745 commit cf670ed

File tree

13 files changed

+218
-111
lines changed

13 files changed

+218
-111
lines changed

‎Telegram-Mac.xcworkspace/xcuserdata/keepcoder.xcuserdatad/xcdebugger/Expressions.xcexplist

+53-18
Original file line numberDiff line numberDiff line change
@@ -3,31 +3,40 @@
33
version = "1.0">
44
<ContextStates>
55
<ContextState
6-
contextName = "TelegramMediaFile.isAnimatedSticker.getter:CoreExtension.swift">
6+
contextName = "ChatListViewSpaceState.add(entry:):ChatListViewState.swift">
7+
<PersistentStrings>
8+
<PersistentString
9+
value = "self.orderedEntries">
10+
</PersistentString>
11+
</PersistentStrings>
712
</ContextState>
813
<ContextState
9-
contextName = "closure #1 in ChatListTable.entries(groupId:from:to:peerChatInterfaceStateTable:count:predicate:):ChatListTable.swift">
14+
contextName = "userInfoEntries(view:arguments:mediaTabsData:):UserInfoEntries.swift">
1015
</ContextState>
1116
<ContextState
1217
contextName = "BufferDecompressor.init(compressor:):BufferCompressor.swift">
1318
</ContextState>
1419
<ContextState
15-
contextName = "ChatListViewSpaceState.add(entry:):ChatListViewState.swift">
16-
<PersistentStrings>
17-
<PersistentString
18-
value = "self.orderedEntries">
19-
</PersistentString>
20-
</PersistentStrings>
20+
contextName = "closure #11 in closure #2 in SearchController.viewDidLoad():SearchController.swift">
21+
</ContextState>
22+
<ContextState
23+
contextName = "closure #15 in PreviewSenderController.viewDidLoad():PreviewSenderController.swift">
2124
</ContextState>
2225
<ContextState
2326
contextName = "closure #1 in ThemePreviewView.addTableItems(_:theme:):ThemePreviewModalController.swift">
2427
</ContextState>
2528
<ContextState
2629
contextName = "ServiceEventLogItem.init(_:event:result:chatInteraction:):ChannelEventLogItem.swift">
2730
</ContextState>
31+
<ContextState
32+
contextName = "Window.sendEvent(_:):Window.swift">
33+
</ContextState>
2834
<ContextState
2935
contextName = "closure #6 in InputDataController.viewDidLoad():InputDataController.swift">
3036
</ContextState>
37+
<ContextState
38+
contextName = "groupInfoEntries(view:arguments:inputActivities:channelMembers:):GroupInfoEntries.swift">
39+
</ContextState>
3140
<ContextState
3241
contextName = "specialized installedStickerPacksControllerEntries(state:stickerSettings:view:featured:):InstalledStickerPacksController.swift">
3342
<PersistentStrings>
@@ -40,7 +49,7 @@
4049
contextName = "ChatMediaAnimatedStickerView.update(with:size:context:parent:table:parameters:animated:positionFlags:approximateSynchronousValue:):ChatMediaAnimatedStickerView.swift">
4150
</ContextState>
4251
<ContextState
43-
contextName = "groupInfoEntries(view:arguments:inputActivities:channelMembers:):GroupInfoEntries.swift">
52+
contextName = "applyPaints(_:for:imageSize:):EditImageCanvasController.swift">
4453
</ContextState>
4554
<ContextState
4655
contextName = "importPalette(_:):ParseAppearanceColors.swift">
@@ -74,35 +83,47 @@
7483
contextName = "closure #2 in closure #2 in EditThemeController(context:telegramTheme:presentation:):EditThemeController.swift">
7584
</ContextState>
7685
<ContextState
77-
contextName = "closure #2 in EditThemeController(context:telegramTheme:presentation:):EditThemeController.swift">
86+
contextName = "closure #1 in closure #1 in DiceCache.interactiveSymbolData(baseSymbol:side:synchronous:):DiceCache.swift">
7887
</ContextState>
7988
<ContextState
80-
contextName = "static ChatLayoutUtils.contentSize(for:with:hasText:):ChatLayoutUtils.swift">
89+
contextName = "ChatListViewSample.init(entries:lower:upper:anchorIndex:hole:):ChatListViewState.swift">
8190
</ContextState>
8291
<ContextState
83-
contextName = "closure #1 in closure #4 in closure #2 in EditThemeController(context:telegramTheme:presentation:):EditThemeController.swift">
92+
contextName = "closure #2 in EditThemeController(context:telegramTheme:presentation:):EditThemeController.swift">
8493
</ContextState>
8594
<ContextState
8695
contextName = "closure #1 in SqliteValueBox.filteredRange(_:start:end:values:limit:):SqliteValueBox.swift">
8796
</ContextState>
8897
<ContextState
89-
contextName = "ChatListView.init(_:):ChatListView.swift">
98+
contextName = "static ChatLayoutUtils.contentSize(for:with:hasText:):ChatLayoutUtils.swift">
9099
</ContextState>
91100
<ContextState
92-
contextName = "ChatListViewSample.init(entries:lower:upper:anchorIndex:hole:):ChatListViewState.swift">
101+
contextName = "closure #1 in closure #4 in closure #2 in EditThemeController(context:telegramTheme:presentation:):EditThemeController.swift">
102+
</ContextState>
103+
<ContextState
104+
contextName = "ChatListView.init(_:):ChatListView.swift">
93105
</ContextState>
94106
<ContextState
95107
contextName = "ViewTracker.updateViews(postbox:transaction:):ViewTracker.swift">
96108
</ContextState>
97109
<ContextState
98110
contextName = "ChatListRowItem.menuItems(in:):ChatListRowItem.swift">
99111
</ContextState>
112+
<ContextState
113+
contextName = "EditImageColorPicker.location.didset:EditImageCanvasColorPicker.swift">
114+
</ContextState>
115+
<ContextState
116+
contextName = "closure #3 in closure #5 in DiceCache.init(postbox:network:):DiceCache.swift">
117+
</ContextState>
100118
<ContextState
101119
contextName = "TelegramPresentationTheme.controllerBackgroundMode.getter:Appearance.swift">
102120
</ContextState>
103121
<ContextState
104122
contextName = "closure #7 in PeerMediaListController.load(with:):PeerMediaListController.swift">
105123
</ContextState>
124+
<ContextState
125+
contextName = "closure #6 in DiceCache.init(postbox:network:):DiceCache.swift">
126+
</ContextState>
106127
<ContextState
107128
contextName = "closure #4 in SharedNotificationManager.init(activeAccounts:accountManager:window:bindings:):SharedNotificationManager.swift">
108129
</ContextState>
@@ -117,9 +138,20 @@
117138
</PersistentString>
118139
</PersistentStrings>
119140
</ContextState>
141+
<ContextState
142+
contextName = "TableView.merge(with:forceApply:):TableView.swift">
143+
</ContextState>
120144
<ContextState
121145
contextName = "ChatRowItem.isSharable.getter:ChatRowItem.swift">
122146
</ContextState>
147+
<ContextState
148+
contextName = "closure #1 in closure #1 in closure #5 in DiceCache.init(postbox:network:):DiceCache.swift">
149+
<PersistentStrings>
150+
<PersistentString
151+
value = "">
152+
</PersistentString>
153+
</PersistentStrings>
154+
</ContextState>
123155
<ContextState
124156
contextName = "ThemePaletteSettings.init(decoder:):ThemeSettings.swift">
125157
</ContextState>
@@ -146,6 +178,12 @@
146178
</PersistentString>
147179
</PersistentStrings>
148180
</ContextState>
181+
<ContextState
182+
contextName = "closure #9 in EditThemeController(context:telegramTheme:presentation:):EditThemeController.swift">
183+
</ContextState>
184+
<ContextState
185+
contextName = "closure #1 in ChatListTable.entries(groupId:from:to:peerChatInterfaceStateTable:count:predicate:):ChatListTable.swift">
186+
</ContextState>
149187
<ContextState
150188
contextName = "BufferDecompressor.readPixelBuffer(frame:width:height:):BufferCompressor.swift">
151189
<PersistentStrings>
@@ -154,14 +192,11 @@
154192
</PersistentString>
155193
</PersistentStrings>
156194
</ContextState>
157-
<ContextState
158-
contextName = "closure #9 in EditThemeController(context:telegramTheme:presentation:):EditThemeController.swift">
159-
</ContextState>
160195
<ContextState
161196
contextName = "closure #7 in PeerInfoController.viewDidLoad():PeerInfoController.swift">
162197
</ContextState>
163198
<ContextState
164-
contextName = "userInfoEntries(view:arguments:mediaTabsData:):UserInfoEntries.swift">
199+
contextName = "TelegramMediaFile.isAnimatedSticker.getter:CoreExtension.swift">
165200
</ContextState>
166201
</ContextStates>
167202
</VariablesViewState>

‎Telegram-Mac/AccountContext.swift

+13
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,14 @@ final class AccountContext {
270270
return _limitConfiguration.with { $0 }
271271
}
272272

273+
private let _appConfiguration: Atomic<AppConfiguration> = Atomic(value: AppConfiguration.defaultValue)
274+
275+
var appConfiguration: AppConfiguration {
276+
return _appConfiguration.with { $0 }
277+
}
278+
279+
280+
273281
private let _autoplayMedia: Atomic<AutoplayMediaPreferences> = Atomic(value: AutoplayMediaPreferences.defaultSettings)
274282

275283
var autoplayMedia: AutoplayMediaPreferences {
@@ -311,6 +319,11 @@ final class AccountContext {
311319
_ = limitConfiguration.swap(view.values[PreferencesKeys.limitsConfiguration] as? LimitsConfiguration ?? LimitsConfiguration.defaultValue)
312320
}))
313321

322+
let appConfiguration = _appConfiguration
323+
prefDisposable.add(account.postbox.preferencesView(keys: [PreferencesKeys.appConfiguration]).start(next: { view in
324+
_ = appConfiguration.swap(view.values[PreferencesKeys.appConfiguration] as? AppConfiguration ?? AppConfiguration.defaultValue)
325+
}))
326+
314327
let autoplayMedia = _autoplayMedia
315328
prefDisposable.add(account.postbox.preferencesView(keys: [ApplicationSpecificPreferencesKeys.autoplayMedia]).start(next: { view in
316329
_ = autoplayMedia.swap(view.values[ApplicationSpecificPreferencesKeys.autoplayMedia] as? AutoplayMediaPreferences ?? AutoplayMediaPreferences.defaultSettings)

‎Telegram-Mac/ChatDiceContentView.swift

+45-42
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,22 @@ import TelegramCore
1212
import SyncCore
1313
import TGUIKit
1414
import SwiftSignalKit
15+
1516
private let diceSide1: String = "1️⃣"
1617
private let diceSide2: String = "2️⃣"
1718
private let diceSide3: String = "3️⃣"
1819
private let diceSide4: String = "4️⃣"
1920
private let diceSide5: String = "5️⃣"
2021
private let diceSide6: String = "6️⃣"
22+
private let diceSide7: String = "7️⃣"
23+
private let diceSide8: String = "8️⃣"
24+
private let diceSide9: String = "9️⃣"
25+
private let diceIdle: String = "#️⃣"
26+
27+
28+
29+
30+
2131

2232
private extension Int32 {
2333
var diceSide: String {
@@ -34,6 +44,12 @@ private extension Int32 {
3444
return diceSide5
3545
case 6:
3646
return diceSide6
47+
case 7:
48+
return diceSide7
49+
case 8:
50+
return diceSide8
51+
case 9:
52+
return diceSide9
3753
default:
3854
preconditionFailure()
3955
}
@@ -176,42 +192,25 @@ class ChatDiceContentView: ChatMediaContentView {
176192
}
177193

178194
let baseSymbol: String = media.emoji
179-
195+
let sideSymbol: String
180196

181197
let currentValue = media.value
182198

183-
let idleSticker: LocalAnimatedSticker
184-
185-
switch baseSymbol {
186-
case diceSymbol:
187-
idleSticker = .dice_idle
188-
case dartSymbol:
189-
idleSticker = .dart_idle
190-
default:
191-
idleSticker = .dice_idle
199+
if let currentValue = currentValue, currentValue > 0 && currentValue <= 9 {
200+
sideSymbol = currentValue.diceSide
201+
} else {
202+
sideSymbol = diceIdle
192203
}
193-
204+
205+
194206
let diceState = DiceState(message: parent)
195207

196208
if self.diceState != diceState {
197209

198210
self.diceState = diceState
199211

200-
201-
let data: Signal<(Data, TelegramMediaFile), NoError>
202-
if let currentValue = currentValue, currentValue > 0 && currentValue <= 6 {
203-
data = context.diceCache.interactiveSymbolData(baseSymbol: baseSymbol, side: currentValue.diceSide, synchronous: approximateSynchronousValue)
204-
} else {
205-
data = Signal { subscriber in
206-
let resource = idleSticker.file.resource as! LocalBundleResource
207-
if let path = Bundle.main.path(forResource: resource.name, ofType: resource.ext), let data = try? Data(contentsOf: URL(fileURLWithPath: path), options: [.mappedRead]) {
208-
subscriber.putNext((data, idleSticker.file))
209-
subscriber.putCompletion()
210-
}
211-
return EmptyDisposable
212-
} |> runOn(resourcesQueue)
213-
}
214-
212+
let data: Signal<(Data?, TelegramMediaFile), NoError>
213+
data = context.diceCache.interactiveSymbolData(baseSymbol: baseSymbol, side: sideSymbol, synchronous: approximateSynchronousValue)
215214

216215

217216
self.loadResourceDisposable.set((data |> deliverOnMainQueue).start(next: { [weak self] data in
@@ -233,30 +232,34 @@ class ChatDiceContentView: ChatMediaContentView {
233232
}
234233
self.thumbView.isHidden = animated
235234
}
236-
let animation = LottieAnimation(compressed: data.0, key: LottieAnimationEntryKey(key: .media(data.1.id), size: size), cachePurpose: .none, playPolicy: playPolicy, maximumFps: 60)
237-
238-
animation.onFinish = {
239-
if case .end = diceState.play {
240-
FastSettings.markDiceAsPlayed(parent.id)
235+
if let bytes = data.0 {
236+
let animation = LottieAnimation(compressed: bytes, key: LottieAnimationEntryKey(key: .media(data.1.id), size: size), cachePurpose: .none, playPolicy: playPolicy, maximumFps: 60)
237+
238+
animation.onFinish = {
239+
if case .end = diceState.play {
240+
FastSettings.markDiceAsPlayed(parent.id)
241+
}
241242
}
242-
}
243-
switch diceState.play {
244-
case .end:
245-
if let previous = self.playerView.animation {
246-
previous.triggerOn = (.last, { [weak self] in
247-
self?.playerView.set(animation)
248-
})
249-
} else {
243+
switch diceState.play {
244+
case .end:
245+
if let previous = self.playerView.animation {
246+
previous.triggerOn = (.last, { [weak self] in
247+
self?.playerView.set(animation)
248+
})
249+
} else {
250+
self.playerView.set(animation)
251+
}
252+
default:
250253
self.playerView.set(animation)
251254
}
252-
default:
253-
self.playerView.set(animation)
255+
} else {
256+
self.playerView.set(nil)
254257
}
255258

259+
256260
if let currentValue = currentValue, currentValue > 0 && currentValue <= 6 {
257261
let arguments = TransformImageArguments(corners: ImageCorners(), imageSize: size, boundingSize: size, intrinsicInsets: NSEdgeInsets())
258262

259-
260263

261264
self.thumbView.setSignal(signal: cachedMedia(media: data.1, arguments: arguments, scale: self.backingScaleFactor), clearInstantly: true)
262265
if !self.thumbView.isFullyLoaded {

0 commit comments

Comments
 (0)