Skip to content

Commit 8770c29

Browse files
committed
Update debug description
1 parent 1c011b0 commit 8770c29

File tree

3 files changed

+64
-29
lines changed

3 files changed

+64
-29
lines changed

Sources/ExampleFluidApp/FirstViewController.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,12 @@ final class FirstViewController: FluidViewController {
44

55
override func viewDidLoad() {
66
super.viewDidLoad()
7-
7+
8+
}
9+
10+
override func viewDidAppear(_ animated: Bool) {
11+
super.viewDidAppear(animated)
12+
813
fluidPush(SecondViewController(), target: .current, relation: .hierarchicalNavigation)
914
}
1015
}

Sources/FluidInterfaceKit/ViewController/FluidStackController.swift

Lines changed: 56 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import SwiftUI
22
import UIKit
3+
import ResultBuilderKit
34

45
/// Actions that comes from ``FluidStackController``
56
public enum FluidStackAction {
@@ -55,15 +56,8 @@ open class FluidStackController: UIViewController {
5556
stackingItems.map { $0.viewController }
5657
}
5758

58-
private(set) var stackingItems: [PresentedViewControllerWrapperView] = [] {
59+
private(set) var stackingItems: [StackingPlatterView] = [] {
5960
didSet {
60-
Log.debug(
61-
.stack,
62-
"""
63-
Updated Stacking: \(stackingItems.count)
64-
\(stackingItems.map { " - \($0.debugDescription)" }.joined(separator: "\n"))
65-
"""
66-
)
6761
// TODO: Update with animation
6862
UIViewPropertyAnimator(duration: 0.4, dampingRatio: 1) {
6963
self.setNeedsStatusBarAppearanceUpdate()
@@ -138,6 +132,19 @@ open class FluidStackController: UIViewController {
138132
}
139133

140134
// MARK: - Functions
135+
136+
public func stackingDescription() -> String {
137+
138+
let body = stackingItems.map { item in
139+
"- isLoaded: \(item.isLoaded), \(item.viewController.debugDescription)"
140+
}
141+
.joined(separator: "\n")
142+
143+
return """
144+
Stacking: \(stackingItems.count), \(self.debugDescription)
145+
\(body)
146+
"""
147+
}
141148

142149
/**
143150
Make sure call super method when you create override.
@@ -210,14 +217,14 @@ open class FluidStackController: UIViewController {
210217
viewControllerToAdd.fluidStackContext = context
211218
}
212219

213-
let wrapperView: PresentedViewControllerWrapperView
220+
let wrapperView: StackingPlatterView
214221

215-
if let currentWrapperView = viewControllerToAdd.view.superview as? PresentedViewControllerWrapperView {
222+
if let currentWrapperView = viewControllerToAdd.view.superview as? StackingPlatterView {
216223
// reuse
217224
wrapperView = currentWrapperView
218225
} else {
219226
// create new one
220-
let containerView = PresentedViewControllerWrapperView(
227+
let containerView = StackingPlatterView(
221228
viewController: viewControllerToAdd,
222229
frame: self.view.bounds
223230
)
@@ -251,7 +258,7 @@ open class FluidStackController: UIViewController {
251258
viewControllerToAdd.fluidStackActionHandler?(.didDisplay)
252259

253260
assert(viewControllerToAdd.view.superview != nil)
254-
assert(viewControllerToAdd.view.superview is PresentedViewControllerWrapperView)
261+
assert(viewControllerToAdd.view.superview is StackingPlatterView)
255262

256263
let newTransitionContext = AddingTransitionContext(
257264
contentView: wrapperView,
@@ -280,6 +287,8 @@ open class FluidStackController: UIViewController {
280287
}
281288

282289
context.transitionSucceeded()
290+
291+
Log.debug(.stack, self.stackingDescription())
283292

284293
}
285294
)
@@ -399,7 +408,7 @@ open class FluidStackController: UIViewController {
399408
Make sure to complete the transition with the context.
400409
*/
401410
private func _startRemoving(
402-
_ viewToRemove: PresentedViewControllerWrapperView
411+
_ viewToRemove: StackingPlatterView
403412
) -> RemovingTransitionContext {
404413

405414
// Ensure it's managed
@@ -411,7 +420,7 @@ open class FluidStackController: UIViewController {
411420
}
412421

413422
// finds a view controller that will be displayed next.
414-
let backView: PresentedViewControllerWrapperView? = {
423+
let backView: StackingPlatterView? = {
415424
let target = index.advanced(by: -1)
416425
if stackingItems.indices.contains(target) {
417426
return stackingItems[target]
@@ -448,6 +457,8 @@ open class FluidStackController: UIViewController {
448457

449458
context.transitionSucceeded()
450459

460+
Log.debug(.stack, self.stackingDescription())
461+
451462
},
452463
onRequestedDisplayOnTop: { [weak self] source in
453464

@@ -535,9 +546,6 @@ open class FluidStackController: UIViewController {
535546

536547
/**
537548
Removes all view controllers which are displaying
538-
539-
- Parameters:
540-
- leavesRoot: If true, the first view controller will still be alive.
541549
*/
542550
public func removeAllViewController(
543551
transition: AnyBatchRemovingTransition?
@@ -614,12 +622,13 @@ open class FluidStackController: UIViewController {
614622
itemToRemove.viewController.fluidStackContext = nil
615623

616624
self.stackingItems.removeAll { instance in
617-
(instance as PresentedViewControllerWrapperView) == (itemToRemove as PresentedViewControllerWrapperView)
625+
(instance as StackingPlatterView) == (itemToRemove as StackingPlatterView)
618626
}
619627
}
620628

621629
context.transitionSucceeded()
622630

631+
Log.debug(.stack, self.stackingDescription())
623632
}
624633
)
625634

@@ -654,7 +663,7 @@ open class FluidStackController: UIViewController {
654663

655664
private func addPortalView(
656665
for source: DisplaySource,
657-
on targetView: PresentedViewControllerWrapperView
666+
on targetView: StackingPlatterView
658667
) -> DisplayingOnTopSubscription {
659668

660669
assert(Thread.isMainThread)
@@ -689,11 +698,11 @@ open class FluidStackController: UIViewController {
689698
/**
690699
Offloads view controllers which do not need to display from their wrapper view.
691700
*/
692-
private func updateOffloadingItems(displayItem: PresentedViewControllerWrapperView) {
701+
private func updateOffloadingItems(displayItem: StackingPlatterView) {
693702

694703
let items = stackingItems
695704

696-
var order: [(PresentedViewControllerWrapperView, Bool)] = []
705+
var order: [(StackingPlatterView, Bool)] = []
697706

698707
var offloads: Bool = false
699708
var isInBehindDisplayItem: Bool = false
@@ -725,9 +734,7 @@ open class FluidStackController: UIViewController {
725734
}
726735

727736
}
728-
729-
Log.debug(.stack, "Update offloading:\n\(order.map { "\($0.0 == displayItem ? "->" : " ") \($0.1 ? "off" : "on ") \($0.0.viewController.fluidStackContentConfiguration.contentType)" }.joined(separator: "\n"))")
730-
737+
731738
for (item, offloads) in order {
732739
if offloads {
733740
item.offloadViewController()
@@ -738,7 +745,25 @@ open class FluidStackController: UIViewController {
738745

739746
}
740747

748+
749+
}
741750

751+
extension FluidStackController {
752+
753+
open override var debugDescription: String {
754+
let pointer = Unmanaged.passUnretained(self).toOpaque()
755+
756+
let properties: [(String, String)] = buildArray {
757+
758+
("identifier", identifier?.rawValue ?? "null")
759+
760+
}
761+
762+
let body = properties.map { "\($0.0) = \($0.1);" }.joined(separator: " ")
763+
764+
return "<\(String(reflecting: type(of: self))): \(pointer.debugDescription); \(body)>"
765+
}
766+
742767
}
743768

744769
// MARK: - Nested types
@@ -793,7 +818,10 @@ extension FluidStackController {
793818

794819
}
795820

796-
final class PresentedViewControllerWrapperView: UIView {
821+
/**
822+
A view that manages view controller in stack
823+
*/
824+
final class StackingPlatterView: UIView {
797825

798826
private(set) var isLoaded: Bool = true
799827

@@ -807,8 +835,10 @@ extension FluidStackController {
807835
) {
808836

809837
self.viewController = viewController
810-
838+
811839
super.init(frame: frame)
840+
841+
accessibilityIdentifier = String(reflecting: viewController)
812842

813843
backgroundColor = .clear
814844

Sources/FluidInterfaceKit/ViewController/FluidViewController.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -252,11 +252,11 @@ open class FluidViewController: FluidGestureHandlingViewController, UINavigation
252252
return tokens
253253

254254
}
255-
255+
256256
}
257257

258258
extension FluidViewController {
259-
259+
260260
/**
261261
Configurations for ``FluidViewController``
262262

0 commit comments

Comments
 (0)