mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-21 17:12:45 +02:00
@@ -26,11 +26,4 @@ extension RiotSettingAllowedWidgets: Decodable {
|
||||
enum CodingKeys: String, CodingKey {
|
||||
case widgets
|
||||
}
|
||||
|
||||
init(from decoder: Decoder) throws {
|
||||
let container = try decoder.container(keyedBy: CodingKeys.self)
|
||||
let widgets = try container.decode([String: Bool].self, forKey: .widgets)
|
||||
|
||||
self.init(widgets: widgets)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
Copyright 2019 New Vector Ltd
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
import Foundation
|
||||
|
||||
/// Model for "im.vector.setting.integration_provisioning"
|
||||
/// https://github.com/vector-im/riot-meta/blob/master/spec/settings.md#selecting-no-provisioning-for-integration-managers
|
||||
struct RiotSettingIntegrationProvisioning {
|
||||
let enabled: Bool
|
||||
}
|
||||
|
||||
extension RiotSettingIntegrationProvisioning: Decodable {
|
||||
enum CodingKeys: String, CodingKey {
|
||||
case enabled
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user