Settings: Have a toggle for using an integration manager

#2843
This commit is contained in:
manuroe
2019-11-21 15:43:04 +01:00
parent eb020a49f8
commit 4e05188ac0
7 changed files with 156 additions and 8 deletions

View File

@@ -52,6 +52,39 @@ class RiotSharedSettings: NSObject {
// MARK: - Public
// MARK: Integration provisioning
func hasIntegrationProvisioningEnabled() -> Bool {
return getIntegrationProvisioning()?.enabled ?? true
}
func getIntegrationProvisioning() -> RiotSettingIntegrationProvisioning? {
guard let integrationProvisioningDict = getAccountData(forEventType: Settings.integrationProvisioning) else {
return nil
}
do {
let integrationProvisioning: RiotSettingIntegrationProvisioning = try serializationService.deserialize(integrationProvisioningDict)
return integrationProvisioning
} catch {
return nil
}
}
@discardableResult
func setIntegrationProvisioning(enabled: Bool,
success: @escaping () -> Void,
failure: @escaping (Error?) -> Void)
-> MXHTTPOperation? {
// Update only the "widgets" field in the account data
var integrationProvisioningDict = getAccountData(forEventType: Settings.integrationProvisioning) ?? [:]
integrationProvisioningDict[RiotSettingIntegrationProvisioning.CodingKeys.enabled.rawValue] = enabled
return session.setAccountData(integrationProvisioningDict, forType: Settings.integrationProvisioning, success: success, failure: failure)
}
// MARK: Allowed widgets
func permission(for widget: Widget) -> WidgetPermission {
guard let allowedWidgets = getAllowedWidgets() else {
@@ -74,7 +107,8 @@ class RiotSharedSettings: NSObject {
}
}
@discardableResult func setPermission(_ permission: WidgetPermission,
@discardableResult
func setPermission(_ permission: WidgetPermission,
for widget: Widget,
success: @escaping () -> Void,
failure: @escaping (Error?) -> Void)