Remove all uses of the ServiceLocator from within Coordinators and View Models.

It is still used for mocks in tests, previews etc, and still used in the AppCoordinator.
This commit is contained in:
Doug
2025-08-27 16:05:49 +01:00
committed by Doug
parent dfb2425240
commit cb7d11fd13
23 changed files with 138 additions and 69 deletions
@@ -15,9 +15,12 @@ struct PinnedEventsTimelineScreenCoordinatorParameters {
let mediaPlayerProvider: MediaPlayerProviderProtocol
let voiceMessageMediaManager: VoiceMessageMediaManagerProtocol
let appMediator: AppMediatorProtocol
let appSettings: AppSettings
let analytics: AnalyticsService
let emojiProvider: EmojiProviderProtocol
let timelineControllerFactory: TimelineControllerFactoryProtocol
let clientProxy: ClientProxyProtocol
let userIndicatorController: UserIndicatorControllerProtocol
}
enum PinnedEventsTimelineScreenCoordinatorAction {
@@ -43,16 +46,16 @@ final class PinnedEventsTimelineScreenCoordinator: CoordinatorProtocol {
init(parameters: PinnedEventsTimelineScreenCoordinatorParameters) {
self.parameters = parameters
viewModel = PinnedEventsTimelineScreenViewModel(analyticsService: ServiceLocator.shared.analytics)
viewModel = PinnedEventsTimelineScreenViewModel(analyticsService: parameters.analytics)
timelineViewModel = TimelineViewModel(roomProxy: parameters.roomProxy,
timelineController: parameters.timelineController,
mediaProvider: parameters.mediaProvider,
mediaPlayerProvider: parameters.mediaPlayerProvider,
voiceMessageMediaManager: parameters.voiceMessageMediaManager,
userIndicatorController: ServiceLocator.shared.userIndicatorController,
userIndicatorController: parameters.userIndicatorController,
appMediator: parameters.appMediator,
appSettings: ServiceLocator.shared.settings,
analyticsService: ServiceLocator.shared.analytics,
appSettings: parameters.appSettings,
analyticsService: parameters.analytics,
emojiProvider: parameters.emojiProvider,
timelineControllerFactory: parameters.timelineControllerFactory,
clientProxy: parameters.clientProxy)