From 899a33a3704fbc675ebe237b6d0bb810fecc466a Mon Sep 17 00:00:00 2001 From: Mustafa Merza <mustafa.merza95@gmail.com> Date: Thu, 18 Jul 2024 10:09:10 +0300 Subject: [PATCH] - Added use case to handle app language when the app launches. --- MiniScanner.xcodeproj/project.pbxproj | 4 ++++ .../Common/DI/DependencyManager.swift | 2 ++ .../Data/DataSources/SettingsDataSource.swift | 5 +++++ .../Repositories/SettingsRepository.swift | 10 +++++++++ .../SettingsRepositoryProtocol.swift | 1 + .../Language/HandleAppLanguageUseCase.swift | 22 +++++++++++++++++++ .../Supporting Files/AppDelegate.swift | 3 +++ 7 files changed, 47 insertions(+) create mode 100644 MiniScanner/Features/Common/Domain/UseCases/Language/HandleAppLanguageUseCase.swift diff --git a/MiniScanner.xcodeproj/project.pbxproj b/MiniScanner.xcodeproj/project.pbxproj index cbf5299..2066f5c 100644 --- a/MiniScanner.xcodeproj/project.pbxproj +++ b/MiniScanner.xcodeproj/project.pbxproj @@ -193,6 +193,7 @@ 672C46D72C48006200497EF0 /* Colors.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 672C46D62C48006200497EF0 /* Colors.xcassets */; }; 672C46DA2C48018400497EF0 /* Color+Colors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 672C46D92C48018400497EF0 /* Color+Colors.swift */; }; 672C46DC2C48018D00497EF0 /* UIColors+Colors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 672C46DB2C48018D00497EF0 /* UIColors+Colors.swift */; }; + 67807F8C2C48F49B00D1F168 /* HandleAppLanguageUseCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67807F8B2C48F49B00D1F168 /* HandleAppLanguageUseCase.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 */; }; @@ -436,6 +437,7 @@ 672C46D62C48006200497EF0 /* Colors.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Colors.xcassets; sourceTree = "<group>"; }; 672C46D92C48018400497EF0 /* Color+Colors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Color+Colors.swift"; sourceTree = "<group>"; }; 672C46DB2C48018D00497EF0 /* UIColors+Colors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColors+Colors.swift"; sourceTree = "<group>"; }; + 67807F8B2C48F49B00D1F168 /* HandleAppLanguageUseCase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HandleAppLanguageUseCase.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; }; @@ -1024,6 +1026,7 @@ 672C46B92C47E98900497EF0 /* ChangeLanguageUseCase.swift */, 672C46BA2C47E98900497EF0 /* GetLanguagesUseCase.swift */, 672C46CB2C47E9AB00497EF0 /* GetLanguageUseCase.swift */, + 67807F8B2C48F49B00D1F168 /* HandleAppLanguageUseCase.swift */, ); path = Language; sourceTree = "<group>"; @@ -1570,6 +1573,7 @@ 53014FA22C11A8E80071CE39 /* ScannedPageViewController.swift in Sources */, 5399969D2C27130000671340 /* Constraint.swift in Sources */, EC8A9B1D254DCEC600F9AF99 /* File.swift in Sources */, + 67807F8C2C48F49B00D1F168 /* HandleAppLanguageUseCase.swift in Sources */, 53E7D33A2C1B00880025A1D3 /* FSPageControl.swift in Sources */, EC8A9B24254DE72F00F9AF99 /* UIView+Extensions.swift in Sources */, EC0CF200254D8BBF00888722 /* SceneDelegate.swift in Sources */, diff --git a/MiniScanner/Features/Common/DI/DependencyManager.swift b/MiniScanner/Features/Common/DI/DependencyManager.swift index ef3895f..795688c 100644 --- a/MiniScanner/Features/Common/DI/DependencyManager.swift +++ b/MiniScanner/Features/Common/DI/DependencyManager.swift @@ -34,5 +34,7 @@ final class DependencyManager { @Provide var changeColorSchemeUseCase = ChangeColorSchemeUseCase(repository: repository) @Provide var handleAppStartUseCase = HandleAppStartUseCase(repository: repository) + + @Provide var handleAppLanguageUseCase = HandleAppLanguageUseCase(repository: repository) } } diff --git a/MiniScanner/Features/Common/Data/DataSources/SettingsDataSource.swift b/MiniScanner/Features/Common/Data/DataSources/SettingsDataSource.swift index 469ed75..a539686 100644 --- a/MiniScanner/Features/Common/Data/DataSources/SettingsDataSource.swift +++ b/MiniScanner/Features/Common/Data/DataSources/SettingsDataSource.swift @@ -13,6 +13,7 @@ protocol SettingsDataSourceProtocol { func getLanguages() -> [SupportedLanguage] func getLanguage() -> SupportedLanguage func changeLanguage(to language: SupportedLanguage) + func changeManagerLanguage(to language: SupportedLanguage) func getColorScheme() -> SupportedColorScheme func changeColorScheme(to colorScheme: SupportedColorScheme) @@ -57,6 +58,10 @@ class SettingsDataSource: SettingsDataSourceProtocol { func changeLanguage(to language: SupportedLanguage) { self.language = language + changeManagerLanguage(to: language) + } + + func changeManagerLanguage(to language: SupportedLanguage) { languageManager.setLanguage(language: language.language) languageManager.defaultLanguage = language.language } diff --git a/MiniScanner/Features/Common/Data/Repositories/SettingsRepository.swift b/MiniScanner/Features/Common/Data/Repositories/SettingsRepository.swift index 21dec49..908de5a 100644 --- a/MiniScanner/Features/Common/Data/Repositories/SettingsRepository.swift +++ b/MiniScanner/Features/Common/Data/Repositories/SettingsRepository.swift @@ -46,6 +46,10 @@ class SettingsRepository: SettingsRepositoryProtocol { } } + func handleAppLanguage() { + handleLanguage() + } + func handleAppStart() { handleColorScheme() handleUISettings() @@ -85,6 +89,12 @@ extension SettingsRepository { extension SettingsRepository { + private func handleLanguage() { + let langauge = getLanguage() + + dataSource.changeManagerLanguage(to: langauge) + } + private func handleColorScheme() { let colorScheme = getColorScheme() changeAppColorScheme(to: colorScheme) diff --git a/MiniScanner/Features/Common/Domain/Repositories/SettingsRepositoryProtocol.swift b/MiniScanner/Features/Common/Domain/Repositories/SettingsRepositoryProtocol.swift index 42094b8..9c98fcf 100644 --- a/MiniScanner/Features/Common/Domain/Repositories/SettingsRepositoryProtocol.swift +++ b/MiniScanner/Features/Common/Domain/Repositories/SettingsRepositoryProtocol.swift @@ -17,5 +17,6 @@ protocol SettingsRepositoryProtocol { func getColorScheme() -> SupportedColorScheme func changeColorScheme(to colorScheme: SupportedColorScheme) + func handleAppLanguage() func handleAppStart() } diff --git a/MiniScanner/Features/Common/Domain/UseCases/Language/HandleAppLanguageUseCase.swift b/MiniScanner/Features/Common/Domain/UseCases/Language/HandleAppLanguageUseCase.swift new file mode 100644 index 0000000..1af982a --- /dev/null +++ b/MiniScanner/Features/Common/Domain/UseCases/Language/HandleAppLanguageUseCase.swift @@ -0,0 +1,22 @@ +// +// HandleAppLanguageUseCase.swift +// MiniScanner +// +// Created by Mustafa Merza on 7/18/24. +// Copyright © 2024 AppsNectar. All rights reserved. +// + +import Foundation + +class HandleAppLanguageUseCase { + + private let repository: SettingsRepositoryProtocol + + init(repository: SettingsRepositoryProtocol) { + self.repository = repository + } + + func execute() { + repository.handleAppLanguage() + } +} diff --git a/MiniScanner/Supporting Files/AppDelegate.swift b/MiniScanner/Supporting Files/AppDelegate.swift index 70aded3..6ad27a9 100644 --- a/MiniScanner/Supporting Files/AppDelegate.swift +++ b/MiniScanner/Supporting Files/AppDelegate.swift @@ -11,6 +11,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate { initializeDependencies() + @Inject var handleAppLanguageUseCase: HandleAppLanguageUseCase + handleAppLanguageUseCase.execute() + if let savedFolders = UserDefaults.standard.object(forKey: "folders") as? Data { print("nooo!!") } else { -- GitLab