ارفع راسك فوق انته سوري حر ... :green_heart::green_heart:

Skip to content
Snippets Groups Projects
Select Git revision
  • 899a33a3704fbc675ebe237b6d0bb810fecc466a
  • main default protected
  • ui-ux-improvments
  • signature
4 results

SettingsRepository.swift

Blame
  • SettingsRepository.swift 3.37 KiB
    //
    //  SettingsRepository.swift
    //  MiniScanner
    //
    //  Created by Mustafa Merza on 7/17/24.
    //  Copyright © 2024 AppsNectar. All rights reserved.
    //
    
    import Foundation
    
    class SettingsRepository: SettingsRepositoryProtocol {
        
        private let dataSource: SettingsDataSourceProtocol
        
        init(dataSource: SettingsDataSourceProtocol) {
            self.dataSource = dataSource
        }
        
        func getLanguages() -> [SupportedLanguage] {
            dataSource.getLanguages()
        }
        
        func getLanguage() -> SupportedLanguage {
            dataSource.getLanguage()
        }
        
        func changeLanguage(to language: SupportedLanguage) {
            
            if shouldChangeLanguage(to: language) {
                
                dataSource.changeLanguage(to: language)
            }
        }
        
        func getColorScheme() -> SupportedColorScheme {
            dataSource.getColorScheme()
        }
        
        func changeColorScheme(to colorScheme: SupportedColorScheme) {
            
            if shouldChangeColorScheme(to: colorScheme) {
                
                dataSource.changeColorScheme(to: colorScheme)
                
                changeAppColorScheme(to: colorScheme)
            }
        }
        
        func handleAppLanguage() {
            handleLanguage()
        }
        
        func handleAppStart() {
            handleColorScheme()
            handleUISettings()
        }
    }
    
    extension SettingsRepository {
        
        private func shouldChangeLanguage(to language: SupportedLanguage) -> Bool {
            dataSource.getLanguage() != language
        }
        
        private func shouldChangeColorScheme(to colorScheme: SupportedColorScheme) -> Bool {
            dataSource.getColorScheme() != colorScheme
        }
        
        private func changeAppColorScheme(to colorScheme: SupportedColorScheme) {
            switch colorScheme {