|  |  |  | // Copyright © 2022 Rangeproof Pty Ltd. All rights reserved. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import UIKit | 
					
						
							|  |  |  | import SessionUIKit | 
					
						
							|  |  |  | import SignalUtilitiesKit | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // FIXME: Refactor to be MVVM and use database observation | 
					
						
							|  |  |  | class ChatSettingsViewController: OWSTableViewController { | 
					
						
							|  |  |  |     // MARK: - Lifecycle | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     override func viewDidLoad() { | 
					
						
							|  |  |  |         super.viewDidLoad() | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         self.updateTableContents() | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         ViewControllerUtilities.setUpDefaultSessionStyle(for: self, title: "CHATS_TITLE".localized(), hasCustomBackButton: false) | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     override func viewDidAppear(_ animated: Bool) { | 
					
						
							|  |  |  |         super.viewDidAppear(animated) | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         self.updateTableContents() | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     // MARK: - Table Contents | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     func updateTableContents() { | 
					
						
							|  |  |  |         let updatedContents: OWSTableContents = OWSTableContents() | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         let messageTrimming: OWSTableSection = OWSTableSection() | 
					
						
							|  |  |  |         messageTrimming.headerTitle = "MESSAGE_TRIMMING_TITLE".localized() | 
					
						
							|  |  |  |         messageTrimming.footerTitle = "MESSAGE_TRIMMING_OPEN_GROUP_DESCRIPTION".localized() | 
					
						
							|  |  |  |         messageTrimming.add(OWSTableItem.switch( | 
					
						
							|  |  |  |             withText: "MESSAGE_TRIMMING_OPEN_GROUP_TITLE".localized(), | 
					
						
							|  |  |  |             isOn: { Storage.shared[.trimOpenGroupMessagesOlderThanSixMonths] }, | 
					
						
							|  |  |  |             target: self, | 
					
						
							|  |  |  |             selector: #selector(didToggleTrimOpenGroupsSwitch(_:)) | 
					
						
							|  |  |  |         )) | 
					
						
							|  |  |  |         updatedContents.addSection(messageTrimming) | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         self.contents = updatedContents | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // MARK: - Actions | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     @objc private func didToggleTrimOpenGroupsSwitch(_ sender: UISwitch) { | 
					
						
							|  |  |  |         let switchIsOn: Bool = sender.isOn | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         Storage.shared.writeAsync( | 
					
						
							|  |  |  |             updates: { db in | 
					
						
							|  |  |  |                 db[.trimOpenGroupMessagesOlderThanSixMonths] = !switchIsOn | 
					
						
							|  |  |  |             }, | 
					
						
							|  |  |  |             completion: { [weak self] _, _ in | 
					
						
							|  |  |  |                 self?.updateTableContents() | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     @objc private func close(_ sender: UIBarButtonItem) { | 
					
						
							|  |  |  |         self.navigationController?.dismiss(animated: true) | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } |