Skip to content

Commit 6632e6c

Browse files
author
overtake
committed
no message
1 parent b5e1d1e commit 6632e6c

16 files changed

+61
-43
lines changed

Telegram-Mac/AppDelegate.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -601,6 +601,8 @@ class AppDelegate: NSResponder, NSApplicationDelegate, NSUserNotificationCenterD
601601
if let contextValue = self.contextValue {
602602
contextValue.context.isCurrent = false
603603
contextValue.rootView.removeFromSuperview()
604+
} else if context == nil {
605+
globalAudio?.stop()
604606
}
605607

606608
(HackUtils.findElements(byClass: "Telegram.OpmizeDatabaseView", in: self.window.contentView!).first as? NSView)?.removeFromSuperview()

Telegram-Mac/ApplicationContext.swift

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,7 @@ final class AuthorizedApplicationContext: NSObject, SplitViewDelegate {
217217
return view
218218
}))
219219

220+
220221
rightController.set(callHeader: CallNavigationHeader(35, initializer: { header -> NavigationHeaderView in
221222
let view = CallNavigationHeaderView(header)
222223
return view
@@ -232,6 +233,8 @@ final class AuthorizedApplicationContext: NSObject, SplitViewDelegate {
232233

233234
super.init()
234235

236+
237+
235238

236239
updatesDisposable.set(managedAppConfigurationUpdates(accountManager: context.sharedContext.accountManager, network: context.account.network).start())
237240

@@ -664,6 +667,16 @@ final class AuthorizedApplicationContext: NSObject, SplitViewDelegate {
664667
self?.updateLeftSidebar(with: value, animated: true)
665668
}))
666669

670+
671+
672+
673+
674+
if let controller = globalAudio {
675+
let header = self.rightController.header?.view as? InlineAudioPlayerView
676+
header?.update(with: controller, context: context, tableView: nil)
677+
self.rightController.header?.show(false)
678+
}
679+
667680
// _ready.set(.single(true))
668681
}
669682

@@ -852,7 +865,6 @@ final class AuthorizedApplicationContext: NSObject, SplitViewDelegate {
852865
alertsDisposable.dispose()
853866
termDisposable.dispose()
854867
viewer?.close()
855-
globalAudio?.cleanup()
856868
someActionsDisposable.dispose()
857869
clearReadNotifiesDisposable.dispose()
858870
chatUndoManagerDisposable.dispose()

Telegram-Mac/AudioPlayerController.swift

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -262,9 +262,7 @@ struct APTransition {
262262

263263
fileprivate func prepareItems(from:[APEntry]?, to:[APEntry], account:Account) -> Signal<APTransition, NoError> {
264264
return Signal {(subscriber) in
265-
266265
let (removed, inserted, updated) = proccessEntries(from, right: to, { (entry) -> APItem in
267-
268266
switch entry {
269267
case .song:
270268
return APSongItem(entry,account)
@@ -273,7 +271,6 @@ fileprivate func prepareItems(from:[APEntry]?, to:[APEntry], account:Account) ->
273271
}
274272

275273
})
276-
277274
subscriber.putNext(APTransition(inserted: inserted, removed: removed, updated:updated))
278275
subscriber.putCompletion()
279276
return EmptyDisposable
@@ -380,7 +377,12 @@ class APController : NSResponder {
380377

381378

382379
public let ready:Promise<Bool> = Promise()
383-
let account:Account
380+
let context: AccountContext
381+
382+
var account: Account {
383+
return context.account
384+
}
385+
384386
private var _timebase: CMTimebase?
385387

386388
fileprivate let history:Promise<APHistoryLocation> = Promise()
@@ -534,8 +536,8 @@ class APController : NSResponder {
534536
mediaPlayer?.setBaseRate(baseRate)
535537
}
536538
}
537-
init(account:Account, streamable: Bool, baseRate: Double) {
538-
self.account = account
539+
init(context: AccountContext, streamable: Bool, baseRate: Double) {
540+
self.context = context
539541
self.streamable = streamable
540542
self.baseRate = baseRate
541543
super.init()
@@ -933,10 +935,10 @@ class APChatController : APController {
933935
private let peerId:PeerId
934936
private let index:MessageIndex?
935937

936-
init(account: Account, peerId: PeerId, index: MessageIndex?, streamable: Bool, baseRate: Double = 1.0) {
938+
init(context: AccountContext, peerId: PeerId, index: MessageIndex?, streamable: Bool, baseRate: Double = 1.0) {
937939
self.peerId = peerId
938940
self.index = index
939-
super.init(account: account, streamable: streamable, baseRate: baseRate)
941+
super.init(context: context, streamable: streamable, baseRate: baseRate)
940942
}
941943

942944
required init?(coder: NSCoder) {
@@ -948,7 +950,7 @@ class APChatController : APController {
948950
let tagMask:MessageTags = self.tags
949951
let list = self.entries
950952
let items = self.items
951-
let account = self.account
953+
let account = self.context.account
952954
let peerId = self.peerId
953955
let index = self.index
954956
let apply = history.get() |> distinctUntilChanged |> mapToSignal { location -> Signal<(MessageHistoryView, ViewUpdateType, InitialMessageHistoryData?), NoError> in
@@ -1007,8 +1009,8 @@ class APChatController : APController {
10071009

10081010
class APChatMusicController : APChatController {
10091011

1010-
init(account: Account, peerId: PeerId, index: MessageIndex?, baseRate: Double = 1.0) {
1011-
super.init(account: account, peerId: peerId, index: index, streamable: true, baseRate: baseRate)
1012+
init(context: AccountContext, peerId: PeerId, index: MessageIndex?, baseRate: Double = 1.0) {
1013+
super.init(context: context, peerId: peerId, index: index, streamable: true, baseRate: baseRate)
10121014
}
10131015

10141016
required init?(coder: NSCoder) {
@@ -1022,8 +1024,8 @@ class APChatMusicController : APChatController {
10221024

10231025
class APChatVoiceController : APChatController {
10241026
private let markAsConsumedDisposable = MetaDisposable()
1025-
init(account: Account, peerId: PeerId, index: MessageIndex?, baseRate: Double = 1.0) {
1026-
super.init(account: account, peerId: peerId, index:index, streamable: false, baseRate: baseRate)
1027+
init(context: AccountContext, peerId: PeerId, index: MessageIndex?, baseRate: Double = 1.0) {
1028+
super.init(context: context, peerId: peerId, index:index, streamable: false, baseRate: baseRate)
10271029
}
10281030

10291031
required init?(coder: NSCoder) {
@@ -1059,9 +1061,9 @@ class APChatVoiceController : APChatController {
10591061

10601062
class APSingleResourceController : APController {
10611063
let wrapper:APSingleWrapper
1062-
init(account: Account, wrapper:APSingleWrapper, streamable: Bool, baseRate: Double = 1.0) {
1064+
init(context: AccountContext, wrapper:APSingleWrapper, streamable: Bool, baseRate: Double = 1.0) {
10631065
self.wrapper = wrapper
1064-
super.init(account: account, streamable: streamable, baseRate: baseRate)
1066+
super.init(context: context, streamable: streamable, baseRate: baseRate)
10651067
merge(with: APTransition(inserted: [(0,APSongItem(.single(wrapper), account))], removed: [], updated: []))
10661068
}
10671069

Telegram-Mac/ChatAudioContentView.swift

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,15 +78,13 @@ class ChatAudioContentView: ChatMediaContentView, APDelegate {
7878
if let parameters = parameters as? ChatMediaMusicLayoutParameters, let context = context, let parent = parent {
7979
if let controller = globalAudio, let song = controller.currentSong, song.entry.isEqual(to: parent) {
8080
controller.playOrPause()
81-
} else {
82-
83-
81+
} else {
8482
let controller:APController
8583

8684
if parameters.isWebpage {
87-
controller = APSingleResourceController(account: context.account, wrapper: APSingleWrapper(resource: parameters.resource, mimeType: parameters.file.mimeType, name: parameters.title, performer: parameters.performer, id: parent.chatStableId), streamable: true)
85+
controller = APSingleResourceController(context: context, wrapper: APSingleWrapper(resource: parameters.resource, mimeType: parameters.file.mimeType, name: parameters.title, performer: parameters.performer, id: parent.chatStableId), streamable: true)
8886
} else {
89-
controller = APChatMusicController(account: context.account, peerId: parent.id.peerId, index: MessageIndex(parent))
87+
controller = APChatMusicController(context: context, peerId: parent.id.peerId, index: MessageIndex(parent))
9088
}
9189
parameters.showPlayer(controller)
9290
controller.start()

Telegram-Mac/ChatController.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2051,6 +2051,9 @@ class ChatController: EditableViewController<ChatControllerView>, Notifable, Tab
20512051
}
20522052
}
20532053
}
2054+
2055+
2056+
20542057
chatInteraction.searchPeerMessages = { [weak self] peer in
20552058
guard let `self` = self else { return }
20562059
self.chatInteraction.update({$0.updatedSearchMode((false, nil, nil))})

Telegram-Mac/ChatVideoMessageContentView.swift

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -148,10 +148,9 @@ class ChatVideoMessageContentView: ChatMediaContentView, APDelegate {
148148
} else {
149149
let controller:APController
150150
if parameters.isWebpage, let wrapper = singleWrapper {
151-
controller = APSingleResourceController(account: context.account, wrapper: wrapper, streamable: false)
152-
// controller.set(trackProgress: controller.c)
151+
controller = APSingleResourceController(context: context, wrapper: wrapper, streamable: false)
153152
} else {
154-
controller = APChatVoiceController(account: context.account, peerId: parent.id.peerId, index: MessageIndex(parent))
153+
controller = APChatVoiceController(context: context, peerId: parent.id.peerId, index: MessageIndex(parent))
155154
}
156155

157156
parameters.showPlayer(controller)

Telegram-Mac/ChatVoiceContentView.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ class ChatVoiceContentView: ChatAudioContentView {
5454

5555
let controller:APController
5656
if parameters.isWebpage {
57-
controller = APSingleResourceController(account: context.account, wrapper: APSingleWrapper(resource: parameters.resource, name: tr(L10n.audioControllerVoiceMessage), performer: parent.author?.displayTitle, id: parent.chatStableId), streamable: false)
57+
controller = APSingleResourceController(context: context, wrapper: APSingleWrapper(resource: parameters.resource, name: L10n.audioControllerVoiceMessage, performer: parent.author?.displayTitle, id: parent.chatStableId), streamable: false)
5858
} else {
59-
controller = APChatVoiceController(account: context.account, peerId: parent.id.peerId, index: MessageIndex(parent))
59+
controller = APChatVoiceController(context: context, peerId: parent.id.peerId, index: MessageIndex(parent))
6060
}
6161
parameters.showPlayer(controller)
6262
controller.start()

Telegram-Mac/ContextListRowItem.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ class ContextListAudioView : ContextListRowView, APDelegate {
308308
if let controller = globalAudio, let song = controller.currentSong, song.entry.isEqual(to: wrapper) {
309309
controller.playOrPause()
310310
} else {
311-
let controller = APSingleResourceController(account: item.context.account, wrapper: wrapper, streamable: false)
311+
let controller = APSingleResourceController(context: item.context, wrapper: wrapper, streamable: false)
312312
controller.add(listener: self)
313313
item.chatInteraction.inlineAudioPlayer(controller)
314314
controller.start()

Telegram-Mac/Info.plist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
</dict>
3737
</array>
3838
<key>CFBundleVersion</key>
39-
<string>203623</string>
39+
<string>203645</string>
4040
<key>LSApplicationCategoryType</key>
4141
<string>public.app-category.social-networking</string>
4242
<key>LSFileQuarantineEnabled</key>

Telegram-Mac/InlineAudioPlayerView.swift

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -150,13 +150,13 @@ class InlineAudioPlayerView: NavigationHeaderView, APDelegate {
150150
}
151151

152152
private func showAudioPlayerList() {
153-
guard let window = kitWindow, let context = context else {return}
153+
guard let window = kitWindow, let context = self.context else {return}
154154
let point = containerView.convert(window.mouseLocationOutsideOfEventStream, from: nil)
155155
if NSPointInRect(point, textView.frame) {
156-
if let song = controller?.currentSong, controller is APChatMusicController {
156+
if let controller = controller, let song = controller.currentSong, controller is APChatMusicController {
157157
switch song.stableId {
158158
case let .message(message):
159-
showPopover(for: textView, with: PlayerListController(audioPlayer: self, context: context, messageIndex: MessageIndex(message)), edge: .minX, inset: NSMakePoint((300 - textView.frame.width) / 2, -60))
159+
showPopover(for: textView, with: PlayerListController(audioPlayer: self, context: controller.context, currentContext: context, messageIndex: MessageIndex(message)), edge: .minX, inset: NSMakePoint((300 - textView.frame.width) / 2, -60))
160160
default:
161161
break
162162
}
@@ -226,7 +226,7 @@ class InlineAudioPlayerView: NavigationHeaderView, APDelegate {
226226
}
227227

228228
private func gotoMessage() {
229-
if let message = message, let context = context {
229+
if let message = message, let context = context, context.peerId == controller?.context.peerId {
230230
if let controller = context.sharedContext.bindings.rootNavigation().controller as? ChatController, controller.chatInteraction.peerId == message.id.peerId {
231231
controller.chatInteraction.focusMessageId(nil, message.id, .center(id: 0, innerId: nil, animated: true, focus: .init(focus: false), inset: 0))
232232
} else {
@@ -238,21 +238,24 @@ class InlineAudioPlayerView: NavigationHeaderView, APDelegate {
238238
func update(with controller:APController, context: AccountContext, tableView:TableView?, supportTableView: TableView? = nil) {
239239
self.controller?.remove(listener: self)
240240
self.controller = controller
241-
self.context = context
242241
self.controller?.add(listener: self)
242+
self.context = context
243243
self.ready.set(controller.ready.get())
244244

245245
repeatControl.isHidden = !(controller is APChatMusicController)
246246
if let tableView = tableView {
247247
if self.instantVideoPip == nil {
248-
self.instantVideoPip = InstantVideoPIP(controller, context: context, window: mainWindow)
248+
self.instantVideoPip = InstantVideoPIP(controller, context: controller.context, window: mainWindow)
249249
}
250-
self.instantVideoPip?.updateTableView(tableView, context: context, controller: controller)
250+
self.instantVideoPip?.updateTableView(tableView, context: controller.context, controller: controller)
251251
addGlobalAudioToVisible(tableView: tableView)
252252
}
253253
if let supportTableView = supportTableView {
254254
addGlobalAudioToVisible(tableView: supportTableView)
255255
}
256+
if let song = controller.currentSong {
257+
songDidChanged(song: song, for: controller)
258+
}
256259
}
257260

258261
private func addGlobalAudioToVisible(tableView: TableView) {
@@ -284,7 +287,6 @@ class InlineAudioPlayerView: NavigationHeaderView, APDelegate {
284287

285288
deinit {
286289
controller?.remove(listener: self)
287-
controller?.stop()
288290
bufferingStatusDisposable.dispose()
289291
}
290292

0 commit comments

Comments
 (0)