Skip to content

Commit 0048417

Browse files
Update controls state when minimizing call drawer from Done button
1 parent 23d6a23 commit 0048417

File tree

3 files changed

+37
-8
lines changed

3 files changed

+37
-8
lines changed

Signal/Calls/UserInterface/CallDrawerSheet.swift

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ import SignalServiceKit
99
import SignalUI
1010
import Combine
1111

12+
protocol CallDrawerDelegate: AnyObject {
13+
func didPresentViewController(_ viewController: UIViewController)
14+
func didTapDone()
15+
}
16+
1217
// MARK: - GroupCallSheet
1318

1419
class CallDrawerSheet: InteractiveSheetViewController {
@@ -42,7 +47,7 @@ class CallDrawerSheet: InteractiveSheetViewController {
4247
let doneButton = UIButton(primaryAction: .init(
4348
title: CommonStrings.doneButton
4449
) { [weak self] _ in
45-
self?.minimizeHeight()
50+
self?.callDrawerDelegate?.didTapDone()
4651
})
4752
container.addSubview(doneButton)
4853
doneButton.setTitleColor(UIColor.Signal.label, for: .normal)
@@ -68,6 +73,8 @@ class CallDrawerSheet: InteractiveSheetViewController {
6873
private let call: SignalCall
6974
private let callSheetDataSource: CallDrawerSheetDataSource
7075

76+
private weak var callDrawerDelegate: CallDrawerDelegate?
77+
7178
private var callLinkDataSource: CallLinkSheetDataSource? {
7279
self.callSheetDataSource as? CallLinkSheetDataSource
7380
}
@@ -99,7 +106,7 @@ class CallDrawerSheet: InteractiveSheetViewController {
99106
confirmationToastManager: CallControlsConfirmationToastManager,
100107
callControlsDelegate: CallControlsDelegate,
101108
sheetPanDelegate: (any SheetPanDelegate)?,
102-
didPresentViewController: ((UIViewController) -> Void)? = nil
109+
callDrawerDelegate: CallDrawerDelegate? = nil
103110
) {
104111
self.call = call
105112
self.callSheetDataSource = callSheetDataSource
@@ -109,12 +116,12 @@ class CallDrawerSheet: InteractiveSheetViewController {
109116
confirmationToastManager: confirmationToastManager,
110117
delegate: callControlsDelegate
111118
)
112-
self.didPresentViewController = didPresentViewController
113119

114120
super.init(blurEffect: nil)
115121

116122
self.animationsShouldBeInterruptible = true
117123
self.sheetPanDelegate = sheetPanDelegate
124+
self.callDrawerDelegate = callDrawerDelegate
118125

119126
self.overrideUserInterfaceStyle = .dark
120127
callSheetDataSource.addObserver(self, syncStateImmediately: true)
@@ -147,7 +154,7 @@ class CallDrawerSheet: InteractiveSheetViewController {
147154

148155
override func present(_ viewControllerToPresent: UIViewController, animated flag: Bool, completion: (() -> Void)? = nil) {
149156
super.present(viewControllerToPresent, animated: flag, completion: completion)
150-
self.didPresentViewController?(viewControllerToPresent)
157+
self.callDrawerDelegate?.didPresentViewController(viewControllerToPresent)
151158
}
152159

153160
// MARK: - Table setup

Signal/Calls/UserInterface/GroupCallViewController.swift

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,7 @@ class GroupCallViewController: UIViewController {
3838
confirmationToastManager: callControlsConfirmationToastManager,
3939
callControlsDelegate: self,
4040
sheetPanDelegate: self,
41-
didPresentViewController: { [weak self] _ in
42-
self?.scheduleBottomSheetTimeoutIfNecessary()
43-
}
41+
callDrawerDelegate: self
4442
)
4543
}()
4644
private lazy var fullscreenLocalMemberAddOnsView = SupplementalCallControlsForFullscreenLocalMember(
@@ -2095,6 +2093,19 @@ extension GroupCallViewController: SheetPanDelegate {
20952093
}
20962094
}
20972095

2096+
// MARK: - CallDrawerDelegate
2097+
2098+
extension GroupCallViewController: CallDrawerDelegate {
2099+
func didPresentViewController(_ viewController: UIViewController) {
2100+
self.scheduleBottomSheetTimeoutIfNecessary()
2101+
}
2102+
2103+
func didTapDone() {
2104+
bottomSheetStateManager.submitState(.callControls)
2105+
self.bottomSheet.minimizeHeight()
2106+
}
2107+
}
2108+
20982109
// MARK: - Bottom Sheet State Management
20992110

21002111
enum BottomSheetState {

Signal/Calls/UserInterface/IndividualCallViewController.swift

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ class IndividualCallViewController: OWSViewController, IndividualCallObserver {
5454
callService: callService,
5555
confirmationToastManager: callControlsConfirmationToastManager,
5656
callControlsDelegate: self,
57-
sheetPanDelegate: self
57+
sheetPanDelegate: self,
58+
callDrawerDelegate: self
5859
)
5960

6061
private var callService: CallService { AppEnvironment.shared.callService }
@@ -1417,3 +1418,13 @@ extension IndividualCallViewController: SheetPanDelegate {
14171418
}
14181419
}
14191420
}
1421+
1422+
extension IndividualCallViewController: CallDrawerDelegate {
1423+
func didPresentViewController(_ viewController: UIViewController) {
1424+
}
1425+
1426+
func didTapDone() {
1427+
bottomSheetState = .callControls
1428+
bottomSheet.minimizeHeight(animated: true)
1429+
}
1430+
}

0 commit comments

Comments
 (0)