From cd822054c68d8eff1915981415ec47c1a6328a72 Mon Sep 17 00:00:00 2001 From: Mustafa Merza <mustafa.merza95@gmail.com> Date: Wed, 17 Jul 2024 17:08:56 +0300 Subject: [PATCH] - Added use case to handle app start and configure language and color scheme if needed. --- MiniScanner.xcodeproj/project.pbxproj | 4 ++++ .../Common/DI/DependencyManager.swift | 2 ++ .../Repositories/SettingsRepository.swift | 17 ++++++++++++++ .../SettingsRepositoryProtocol.swift | 2 ++ .../UseCases/HandleAppStartUseCase.swift | 22 +++++++++++++++++++ .../Supporting Files/SceneDelegate.swift | 4 ++++ 6 files changed, 51 insertions(+) create mode 100644 MiniScanner/Features/Common/Domain/UseCases/HandleAppStartUseCase.swift diff --git a/MiniScanner.xcodeproj/project.pbxproj b/MiniScanner.xcodeproj/project.pbxproj index 0f7ada4..df3087a 100644 --- a/MiniScanner.xcodeproj/project.pbxproj +++ b/MiniScanner.xcodeproj/project.pbxproj @@ -189,6 +189,7 @@ 672C46CF2C47EA6D00497EF0 /* GetColorSchemeUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 672C46CE2C47EA6D00497EF0 /* GetColorSchemeUseCase.swift */; }; 672C46D12C47EA7400497EF0 /* ChangeColorSchemeUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 672C46D02C47EA7400497EF0 /* ChangeColorSchemeUseCase.swift */; }; 672C46D32C47EA8F00497EF0 /* SupportedColorScheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 672C46D22C47EA8F00497EF0 /* SupportedColorScheme.swift */; }; + 672C46D52C47F8D000497EF0 /* HandleAppStartUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 672C46D42C47F8D000497EF0 /* HandleAppStartUseCase.swift */; }; B827E5196CC419E773B843E1 /* Pods_MiniScanner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E9A37DC9F9A8E3AF632DFB98 /* Pods_MiniScanner.framework */; }; EC0CF1FE254D8BBF00888722 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC0CF1FD254D8BBF00888722 /* AppDelegate.swift */; }; EC0CF200254D8BBF00888722 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC0CF1FF254D8BBF00888722 /* SceneDelegate.swift */; }; @@ -428,6 +429,7 @@ 672C46CE2C47EA6D00497EF0 /* GetColorSchemeUseCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GetColorSchemeUseCase.swift; sourceTree = "<group>"; }; 672C46D02C47EA7400497EF0 /* ChangeColorSchemeUseCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChangeColorSchemeUseCase.swift; sourceTree = "<group>"; }; 672C46D22C47EA8F00497EF0 /* SupportedColorScheme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SupportedColorScheme.swift; sourceTree = "<group>"; }; + 672C46D42C47F8D000497EF0 /* HandleAppStartUseCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HandleAppStartUseCase.swift; sourceTree = "<group>"; }; E8AF4FB39674DF589D719DCF /* Pods-MiniScanner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MiniScanner.release.xcconfig"; path = "Target Support Files/Pods-MiniScanner/Pods-MiniScanner.release.xcconfig"; sourceTree = "<group>"; }; E9A37DC9F9A8E3AF632DFB98 /* Pods_MiniScanner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_MiniScanner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; EC0CF1FA254D8BBF00888722 /* MiniScanner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MiniScanner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -1025,6 +1027,7 @@ children = ( 672C46CD2C47EA2A00497EF0 /* ColorScheme */, 672C46BB2C47E98900497EF0 /* Language */, + 672C46D42C47F8D000497EF0 /* HandleAppStartUseCase.swift */, ); path = UseCases; sourceTree = "<group>"; @@ -1494,6 +1497,7 @@ 539996822C27130000671340 /* ConstraintDescription.swift in Sources */, EC702546254E1E9E00BE1958 /* WalkthroughModel.swift in Sources */, 53D9D1C22C1AF521004D1C1C /* StickerView.swift in Sources */, + 672C46D52C47F8D000497EF0 /* HandleAppStartUseCase.swift in Sources */, 539996A22C27130000671340 /* ConstraintDirectionalInsets.swift in Sources */, 53E7D3352C1B00880025A1D3 /* FSPagerView.swift in Sources */, 672C46B32C47E8D700497EF0 /* DependencyManager.swift in Sources */, diff --git a/MiniScanner/Features/Common/DI/DependencyManager.swift b/MiniScanner/Features/Common/DI/DependencyManager.swift index 43a708a..ef3895f 100644 --- a/MiniScanner/Features/Common/DI/DependencyManager.swift +++ b/MiniScanner/Features/Common/DI/DependencyManager.swift @@ -32,5 +32,7 @@ final class DependencyManager { @Provide var getColorSchemeUseCase = GetColorSchemeUseCase(repository: repository) @Provide var changeColorSchemeUseCase = ChangeColorSchemeUseCase(repository: repository) + + @Provide var handleAppStartUseCase = HandleAppStartUseCase(repository: repository) } } diff --git a/MiniScanner/Features/Common/Data/Repositories/SettingsRepository.swift b/MiniScanner/Features/Common/Data/Repositories/SettingsRepository.swift index 1b99dea..9759223 100644 --- a/MiniScanner/Features/Common/Data/Repositories/SettingsRepository.swift +++ b/MiniScanner/Features/Common/Data/Repositories/SettingsRepository.swift @@ -45,6 +45,11 @@ class SettingsRepository: SettingsRepositoryProtocol { changeAppColorScheme(to: colorScheme) } } + + func handleAppStart() { + handleColorScheme() + handleUISettings() + } } extension SettingsRepository { @@ -77,3 +82,15 @@ extension SettingsRepository { window?.overrideUserInterfaceStyle = userInterfaceStyle } } + +extension SettingsRepository { + + func handleColorScheme() { + let colorScheme = getColorScheme() + changeAppColorScheme(to: colorScheme) + } + + func handleUISettings() { + + } +} diff --git a/MiniScanner/Features/Common/Domain/Repositories/SettingsRepositoryProtocol.swift b/MiniScanner/Features/Common/Domain/Repositories/SettingsRepositoryProtocol.swift index 453e045..42094b8 100644 --- a/MiniScanner/Features/Common/Domain/Repositories/SettingsRepositoryProtocol.swift +++ b/MiniScanner/Features/Common/Domain/Repositories/SettingsRepositoryProtocol.swift @@ -16,4 +16,6 @@ protocol SettingsRepositoryProtocol { func getColorScheme() -> SupportedColorScheme func changeColorScheme(to colorScheme: SupportedColorScheme) + + func handleAppStart() } diff --git a/MiniScanner/Features/Common/Domain/UseCases/HandleAppStartUseCase.swift b/MiniScanner/Features/Common/Domain/UseCases/HandleAppStartUseCase.swift new file mode 100644 index 0000000..d08552d --- /dev/null +++ b/MiniScanner/Features/Common/Domain/UseCases/HandleAppStartUseCase.swift @@ -0,0 +1,22 @@ +// +// HandleAppStartUseCase.swift +// MiniScanner +// +// Created by Mustafa Merza on 7/17/24. +// Copyright © 2024 AppsNectar. All rights reserved. +// + +import Foundation + +class HandleAppStartUseCase { + + private let repository: SettingsRepositoryProtocol + + init(repository: SettingsRepositoryProtocol) { + self.repository = repository + } + + func execute() { + repository.handleAppStart() + } +} diff --git a/MiniScanner/Supporting Files/SceneDelegate.swift b/MiniScanner/Supporting Files/SceneDelegate.swift index 28988ff..97a3b83 100644 --- a/MiniScanner/Supporting Files/SceneDelegate.swift +++ b/MiniScanner/Supporting Files/SceneDelegate.swift @@ -15,6 +15,10 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { let navigationController = AppTabBarController.buildViewController()//BaseNavigationViewController.buildViewController() window?.rootViewController = navigationController window?.makeKeyAndVisible() + + @Inject var handleAppStartUseCase: HandleAppStartUseCase + + handleAppStartUseCase.execute() } func sceneDidDisconnect(_ scene: UIScene) { -- GitLab