mirror of https://github.com/oxen-io/session-ios
				
				
				
			
			You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			106 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Swift
		
	
			
		
		
	
	
			106 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Swift
		
	
| // Copyright © 2024 Rangeproof Pty Ltd. All rights reserved.
 | |
| 
 | |
| import UIKit
 | |
| import SessionUIKit
 | |
| import SessionSnodeKit
 | |
| import SessionUtilitiesKit
 | |
| 
 | |
| // MARK: - SessionSNUIKitConfig
 | |
| 
 | |
| internal struct SessionSNUIKitConfig: SNUIKit.ConfigType {
 | |
|     private let dependencies: Dependencies
 | |
|     
 | |
|     var maxFileSize: UInt { Network.maxFileSize }
 | |
|     var isStorageValid: Bool { dependencies[singleton: .storage].isValid }
 | |
|     
 | |
|     // MARK: - Initialization
 | |
|     
 | |
|     init(using dependencies: Dependencies) {
 | |
|         self.dependencies = dependencies
 | |
|     }
 | |
|     
 | |
|     // MARK: - Functions
 | |
|     
 | |
|     func themeChanged(_ theme: Theme, _ primaryColor: Theme.PrimaryColor, _ matchSystemNightModeSetting: Bool) {
 | |
|         dependencies[singleton: .storage].write { db in
 | |
|             db[.theme] = theme
 | |
|             db[.themePrimaryColor] = primaryColor
 | |
|             db[.themeMatchSystemDayNightCycle] = matchSystemNightModeSetting
 | |
|         }
 | |
|     }
 | |
|     
 | |
|     func persistentTopBannerChanged(warningKey: String?) {
 | |
|         dependencies[defaults: .appGroup, key: .topBannerWarningToShow] = warningKey
 | |
|     }
 | |
|     
 | |
|     func cachedContextualActionInfo(tableViewHash: Int, sideKey: String) -> [Int: Any]? {
 | |
|         dependencies[cache: .general].contextualActionLookupMap
 | |
|             .getting(tableViewHash)?
 | |
|             .getting(sideKey)
 | |
|     }
 | |
|     
 | |
|     func cacheContextualActionInfo(tableViewHash: Int, sideKey: String, actionIndex: Int, actionInfo: Any) {
 | |
|         dependencies.mutate(cache: .general) { cache in
 | |
|             let updatedLookup = (cache.contextualActionLookupMap[tableViewHash] ?? [:])
 | |
|                 .setting(
 | |
|                     sideKey,
 | |
|                     ((cache.contextualActionLookupMap[tableViewHash] ?? [:]).getting(sideKey) ?? [:])
 | |
|                         .setting(actionIndex, actionInfo)
 | |
|                 )
 | |
|             
 | |
|             cache.contextualActionLookupMap[tableViewHash] = updatedLookup
 | |
|         }
 | |
|     }
 | |
|     
 | |
|     func removeCachedContextualActionInfo(tableViewHash: Int, keys: [String]) {
 | |
|         dependencies.mutate(cache: .general) { cache in
 | |
|             keys.forEach { key in
 | |
|                 cache.contextualActionLookupMap[tableViewHash]?[key] = nil
 | |
|             }
 | |
|             
 | |
|             if cache.contextualActionLookupMap[tableViewHash]?.isEmpty == true {
 | |
|                 cache.contextualActionLookupMap[tableViewHash] = nil
 | |
|             }
 | |
|         }
 | |
|     }
 | |
|     
 | |
|     func placeholderIconCacher(cacheKey: String, generator: @escaping () -> UIImage) -> UIImage {
 | |
|         if let cachedIcon: UIImage = dependencies[cache: .general].placeholderCache.object(forKey: cacheKey as NSString) {
 | |
|             return cachedIcon
 | |
|         }
 | |
|         
 | |
|         let generatedImage: UIImage = generator()
 | |
|         dependencies.mutate(cache: .general) {
 | |
|             $0.placeholderCache.setObject(generatedImage, forKey: cacheKey as NSString)
 | |
|         }
 | |
|         
 | |
|         return generatedImage
 | |
|     }
 | |
|     
 | |
|     func localizedString(for key: String) -> String {
 | |
|         return key.localized()
 | |
|     }
 | |
|     
 | |
|     public static func localizedFormatted(_ helper: LocalizationHelper, _ baseFont: UIFont) -> NSAttributedString {
 | |
|         return NSAttributedString(stringWithHTMLTags: helper.localized(), font: baseFont)
 | |
|     }
 | |
|     
 | |
|     public static func localizedDeformatted(_ helper: LocalizationHelper) -> String {
 | |
|         return NSAttributedString(stringWithHTMLTags: helper.localized(), font: .systemFont(ofSize: 14)).string
 | |
|     }
 | |
| }
 | |
| 
 | |
| // MARK: - SNUIKit Localization
 | |
| 
 | |
| public extension LocalizationHelper {
 | |
|     func localizedFormatted(in view: FontAccessible) -> NSAttributedString {
 | |
|         return localizedFormatted(baseFont: (view.fontValue ?? .systemFont(ofSize: 14)))
 | |
|     }    
 | |
| }
 | |
| 
 | |
| public extension String {
 | |
|     func localizedFormatted(in view: FontAccessible) -> NSAttributedString {
 | |
|         return LocalizationHelper(template: self).localizedFormatted(in: view)
 | |
|     }
 | |
| }
 |