mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-03 06:55:59 +00:00
Fix remaining retain cycles, allow coordinators to be weakly referenced and make sure the NavigationStackCoordinator cleans up after itself
This commit is contained in:
committed by
Stefan Ceriu
parent
93997efef9
commit
594f6f85dd
@@ -119,7 +119,7 @@ class MockScreen: Identifiable {
|
||||
case .settings:
|
||||
let navigationStackCoordinator = NavigationStackCoordinator()
|
||||
let coordinator = SettingsScreenCoordinator(parameters: .init(navigationStackCoordinator: navigationStackCoordinator,
|
||||
userNotificationController: MockUserNotificationController(),
|
||||
userNotificationController: nil,
|
||||
userSession: MockUserSession(clientProxy: MockClientProxy(userID: "@mock:client.com"),
|
||||
mediaProvider: MockMediaProvider()),
|
||||
bugReportService: MockBugReportService()))
|
||||
@@ -128,7 +128,7 @@ class MockScreen: Identifiable {
|
||||
case .bugReport:
|
||||
let navigationStackCoordinator = NavigationStackCoordinator()
|
||||
let coordinator = BugReportCoordinator(parameters: .init(bugReportService: MockBugReportService(),
|
||||
userNotificationController: MockUserNotificationController(),
|
||||
userNotificationController: nil,
|
||||
screenshot: nil,
|
||||
isModallyPresented: true))
|
||||
navigationStackCoordinator.setRootCoordinator(coordinator)
|
||||
@@ -136,7 +136,7 @@ class MockScreen: Identifiable {
|
||||
case .bugReportWithScreenshot:
|
||||
let navigationStackCoordinator = NavigationStackCoordinator()
|
||||
let coordinator = BugReportCoordinator(parameters: .init(bugReportService: MockBugReportService(),
|
||||
userNotificationController: MockUserNotificationController(),
|
||||
userNotificationController: nil,
|
||||
screenshot: Asset.Images.appLogo.image,
|
||||
isModallyPresented: false))
|
||||
navigationStackCoordinator.setRootCoordinator(coordinator)
|
||||
|
||||
@@ -16,18 +16,23 @@
|
||||
|
||||
import SwiftUI
|
||||
|
||||
struct UITestsRootCoordinator: CoordinatorProtocol {
|
||||
class UITestsRootCoordinator: CoordinatorProtocol {
|
||||
let mockScreens: [MockScreen]
|
||||
var selectionCallback: ((UITestScreenIdentifier) -> Void)?
|
||||
|
||||
init(mockScreens: [MockScreen], selectionCallback: ((UITestScreenIdentifier) -> Void)? = nil) {
|
||||
self.mockScreens = mockScreens
|
||||
self.selectionCallback = selectionCallback
|
||||
}
|
||||
|
||||
func toPresentable() -> AnyView {
|
||||
AnyView(body)
|
||||
}
|
||||
|
||||
private var body: some View {
|
||||
List(mockScreens) { coordinator in
|
||||
Button(coordinator.id.description) {
|
||||
selectionCallback?(coordinator.id)
|
||||
Button(coordinator.id.description) { [weak self] in
|
||||
self?.selectionCallback?(coordinator.id)
|
||||
}
|
||||
.accessibilityIdentifier(coordinator.id.rawValue)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user