diff --git a/Apps/RuuviStation/Sources/Classes/Presentation/Modules/Settings/Submodules/Defaults/Presenter/DefaultsPresenter.swift b/Apps/RuuviStation/Sources/Classes/Presentation/Modules/Settings/Submodules/Defaults/Presenter/DefaultsPresenter.swift index a84ca2340..6c92959f7 100644 --- a/Apps/RuuviStation/Sources/Classes/Presentation/Modules/Settings/Submodules/Defaults/Presenter/DefaultsPresenter.swift +++ b/Apps/RuuviStation/Sources/Classes/Presentation/Modules/Settings/Submodules/Defaults/Presenter/DefaultsPresenter.swift @@ -63,8 +63,6 @@ extension DefaultsPresenter { buildHideNFCButtonInSensorContents(), buildIsAuthorized(), buildAuthToken(), - buildShowEmailAlertSettings(), - buildShowPushAlertSettings(), buildIsAuthorized(), buildShowStatusLabelSettings(), buildShowAlertRangeInGraph(), @@ -378,34 +376,6 @@ extension DefaultsPresenter { return viewModel } - private func buildShowEmailAlertSettings() -> DefaultsViewModel { - let viewModel = DefaultsViewModel() - viewModel.title = RuuviLocalization.Defaults.ShowEmailAlertsSettings.title - viewModel.boolean.value = settings.showEmailAlertSettings - viewModel.hideStatusLabel.value = !settings.showSwitchStatusLabel - viewModel.type.value = .switcher - - bind(viewModel.boolean, fire: false) { observer, show in - observer.settings.showEmailAlertSettings = GlobalHelpers.getBool(from: show) - } - - return viewModel - } - - private func buildShowPushAlertSettings() -> DefaultsViewModel { - let viewModel = DefaultsViewModel() - viewModel.title = RuuviLocalization.Defaults.ShowPushAlertsSettings.title - viewModel.boolean.value = settings.showPushAlertSettings - viewModel.hideStatusLabel.value = !settings.showSwitchStatusLabel - viewModel.type.value = .switcher - - bind(viewModel.boolean, fire: false) { observer, show in - observer.settings.showPushAlertSettings = GlobalHelpers.getBool(from: show) - } - - return viewModel - } - private func buildShowStatusLabelSettings() -> DefaultsViewModel { let viewModel = DefaultsViewModel() viewModel.title = RuuviLocalization.Defaults.ShowStatusLabelSettings.title diff --git a/Apps/RuuviStation/Sources/Classes/Presentation/Modules/Settings/Submodules/Notifications/Presenter/NotificationsSettingsPresenter.swift b/Apps/RuuviStation/Sources/Classes/Presentation/Modules/Settings/Submodules/Notifications/Presenter/NotificationsSettingsPresenter.swift index 3ee88fc89..283402ac0 100644 --- a/Apps/RuuviStation/Sources/Classes/Presentation/Modules/Settings/Submodules/Notifications/Presenter/NotificationsSettingsPresenter.swift +++ b/Apps/RuuviStation/Sources/Classes/Presentation/Modules/Settings/Submodules/Notifications/Presenter/NotificationsSettingsPresenter.swift @@ -55,15 +55,9 @@ extension NotificationsSettingsPresenter { private func configure() { var viewModels: [NotificationsSettingsViewModel] = [] - if settings.showEmailAlertSettings { - viewModels.append(buildEmailAlertSettings()) - } - - if settings.showPushAlertSettings { - viewModels.append(buildPushSettings()) - } - viewModels.append(buildLimitAlertNotificationsSettings()) + viewModels.append(buildEmailAlertSettings()) + viewModels.append(buildPushSettings()) viewModels.append(buildSoundSettings()) settingsViewModels = viewModels @@ -73,15 +67,15 @@ extension NotificationsSettingsPresenter { let viewModel = NotificationsSettingsViewModel() viewModel.title = RuuviLocalization.settingsEmailAlerts viewModel.subtitle = RuuviLocalization.settingsEmailAlertsDescription - viewModel.boolean.value = settings.emailAlertEnabled + viewModel.boolean.value = !settings.emailAlertDisabled viewModel.hideStatusLabel.value = !settings.showSwitchStatusLabel viewModel.configType.value = .switcher viewModel.settingsType.value = .email bind(viewModel.boolean, fire: false) { observer, enabled in - let alertEnabled = GlobalHelpers.getBool(from: enabled) - observer.settings.emailAlertEnabled = alertEnabled - observer.ruuviAppSettingsService.set(emailAlert: alertEnabled) + let alertDisabled = !GlobalHelpers.getBool(from: enabled) + observer.settings.emailAlertDisabled = alertDisabled + observer.ruuviAppSettingsService.set(disableEmailAlert: alertDisabled) } return viewModel @@ -91,15 +85,15 @@ extension NotificationsSettingsPresenter { let viewModel = NotificationsSettingsViewModel() viewModel.title = RuuviLocalization.settingsPushAlerts viewModel.subtitle = RuuviLocalization.settingsPushAlertsDescription - viewModel.boolean.value = settings.pushAlertEnabled + viewModel.boolean.value = !settings.pushAlertDisabled viewModel.hideStatusLabel.value = !settings.showSwitchStatusLabel viewModel.configType.value = .switcher viewModel.settingsType.value = .push bind(viewModel.boolean, fire: false) { observer, enabled in - let alertEnabled = GlobalHelpers.getBool(from: enabled) - observer.settings.pushAlertEnabled = alertEnabled - observer.ruuviAppSettingsService.set(pushAlert: alertEnabled) + let alertDisabled = !GlobalHelpers.getBool(from: enabled) + observer.settings.pushAlertDisabled = alertDisabled + observer.ruuviAppSettingsService.set(disablePushAlert: alertDisabled) } return viewModel @@ -183,7 +177,7 @@ extension NotificationsSettingsPresenter { if let viewModel = settingsViewModels.first(where: { vm in vm.settingsType.value == .email }) { - if viewModel.boolean.value != settings.emailAlertEnabled { + if viewModel.boolean.value == settings.emailAlertDisabled { configure() } } @@ -193,7 +187,7 @@ extension NotificationsSettingsPresenter { if let viewModel = settingsViewModels.first(where: { vm in vm.settingsType.value == .push }) { - if viewModel.boolean.value != settings.pushAlertEnabled { + if viewModel.boolean.value == settings.emailAlertDisabled { configure() } } diff --git a/Packages/RuuviCloud/Sources/RuuviCloud/RuuviCloud.swift b/Packages/RuuviCloud/Sources/RuuviCloud/RuuviCloud.swift index 9bc27c48b..c9874cbe0 100644 --- a/Packages/RuuviCloud/Sources/RuuviCloud/RuuviCloud.swift +++ b/Packages/RuuviCloud/Sources/RuuviCloud/RuuviCloud.swift @@ -174,10 +174,10 @@ public protocol RuuviCloud { func set(dashboardTapActionType: DashboardTapActionType) -> Future @discardableResult - func set(emailAlert: Bool) -> Future + func set(disableEmailAlert: Bool) -> Future @discardableResult - func set(pushAlert: Bool) -> Future + func set(disablePushAlert: Bool) -> Future @discardableResult func set(profileLanguageCode: String) -> Future diff --git a/Packages/RuuviCloud/Sources/RuuviCloudApi/URLSession/Models/Response/RuuviCloudApiGetSettingsResponse.swift b/Packages/RuuviCloud/Sources/RuuviCloudApi/URLSession/Models/Response/RuuviCloudApiGetSettingsResponse.swift index 2a009fd8a..ae0381848 100644 --- a/Packages/RuuviCloud/Sources/RuuviCloudApi/URLSession/Models/Response/RuuviCloudApiGetSettingsResponse.swift +++ b/Packages/RuuviCloud/Sources/RuuviCloudApi/URLSession/Models/Response/RuuviCloudApiGetSettingsResponse.swift @@ -63,12 +63,12 @@ public struct RuuviCloudApiSettings: Decodable, RuuviCloudSettings { dashboardTapActionTypeString?.ruuviCloudApiSettingsDashboardTapActionType } - public var pushAlertEnabled: Bool? { - pushAlertEnabledString?.ruuviCloudApiSettingBoolean + public var pushAlertDisabled: Bool? { + pushAlertDisabledString?.ruuviCloudApiSettingBoolean } - public var emailAlertEnabled: Bool? { - emailAlertEnabledString?.ruuviCloudApiSettingBoolean + public var emailAlertDisabled: Bool? { + emailAlertDisabledString?.ruuviCloudApiSettingBoolean } public var profileLanguageCode: String? { @@ -93,8 +93,8 @@ public struct RuuviCloudApiSettings: Decodable, RuuviCloudSettings { var dashboardEnabledString: String? var dashboardTypeString: String? var dashboardTapActionTypeString: String? - var pushAlertEnabledString: String? - var emailAlertEnabledString: String? + var emailAlertDisabledString: String? + var pushAlertDisabledString: String? var profileLanguageCodeString: String? var dashboardSensorOrderString: String? @@ -113,8 +113,8 @@ public struct RuuviCloudApiSettings: Decodable, RuuviCloudSettings { case dashboardEnabledString = "DASHBOARD_ENABLED" case dashboardTypeString = "DASHBOARD_TYPE" case dashboardTapActionTypeString = "DASHBOARD_TAP_ACTION" - case pushAlertEnabledString = "ALERT_PUSH_ENABLED" - case emailAlertEnabledString = "ALERT_EMAIL_ENABLED" + case emailAlertDisabledString = "DISABLE_EMAIL_NOTIFICATIONS" + case pushAlertDisabledString = "DISABLE_PUSH_NOTIFICATIONS" case profileLanguageCodeString = "PROFILE_LANGUAGE_CODE" case dashboardSensorOrderString = "SENSOR_ORDER" } diff --git a/Packages/RuuviCloud/Sources/RuuviCloudApi/URLSession/Models/Settings/RuuviCloudApiSettings.swift b/Packages/RuuviCloud/Sources/RuuviCloudApi/URLSession/Models/Settings/RuuviCloudApiSettings.swift index 6e3a6bf80..45e9e394f 100644 --- a/Packages/RuuviCloud/Sources/RuuviCloudApi/URLSession/Models/Settings/RuuviCloudApiSettings.swift +++ b/Packages/RuuviCloud/Sources/RuuviCloudApi/URLSession/Models/Settings/RuuviCloudApiSettings.swift @@ -16,8 +16,8 @@ public enum RuuviCloudApiSetting: String, CaseIterable, Codable { case dashboardEnabled = "DASHBOARD_ENABLED" case dashboardType = "DASHBOARD_TYPE" case dashboardTapActionType = "DASHBOARD_TAP_ACTION" - case pushAlertEnabled = "ALERT_PUSH_ENABLED" - case emailAlertEnabled = "ALERT_EMAIL_ENABLED" + case pushAlertDisabled = "DISABLE_PUSH_NOTIFICATIONS" + case emailAlertDisabled = "DISABLE_EMAIL_NOTIFICATIONS" case profileLanguageCode = "PROFILE_LANGUAGE_CODE" case dashboardSensorOrder = "SENSOR_ORDER" } @@ -122,9 +122,9 @@ public extension String { var ruuviCloudApiSettingBoolean: Bool? { switch self { - case "true": + case "true", "1": true - case "false": + case "false", "0": false default: nil diff --git a/Packages/RuuviCloud/Sources/RuuviCloudPure/RuuviCloudPure.swift b/Packages/RuuviCloud/Sources/RuuviCloudPure/RuuviCloudPure.swift index f5afbac31..bc8274f22 100644 --- a/Packages/RuuviCloud/Sources/RuuviCloudPure/RuuviCloudPure.swift +++ b/Packages/RuuviCloud/Sources/RuuviCloudPure/RuuviCloudPure.swift @@ -472,7 +472,7 @@ public final class RuuviCloudPure: RuuviCloud { } @discardableResult - public func set(emailAlert: Bool) -> Future { + public func set(disableEmailAlert: Bool) -> Future { let promise = Promise() guard let apiKey = user.apiKey else { @@ -480,18 +480,18 @@ public final class RuuviCloudPure: RuuviCloud { return promise.future } let request = RuuviCloudApiPostSettingRequest( - name: .emailAlertEnabled, - value: emailAlert.chartBoolSettingString, + name: .emailAlertDisabled, + value: disableEmailAlert.chartBoolSettingString, timestamp: Int(Date().timeIntervalSince1970) ) api.postSetting(request, authorization: apiKey) .on(success: { _ in - promise.succeed(value: emailAlert) + promise.succeed(value: disableEmailAlert) }, failure: { [weak self] error in self?.createQueuedRequest( from: request, type: .settings, - uniqueKey: RuuviCloudApiSetting.emailAlertEnabled.rawValue + uniqueKey: RuuviCloudApiSetting.emailAlertDisabled.rawValue ) promise.fail(error: .api(error)) }) @@ -499,7 +499,7 @@ public final class RuuviCloudPure: RuuviCloud { } @discardableResult - public func set(pushAlert: Bool) -> Future { + public func set(disablePushAlert: Bool) -> Future { let promise = Promise() guard let apiKey = user.apiKey else { @@ -507,18 +507,18 @@ public final class RuuviCloudPure: RuuviCloud { return promise.future } let request = RuuviCloudApiPostSettingRequest( - name: .pushAlertEnabled, - value: pushAlert.chartBoolSettingString, + name: .pushAlertDisabled, + value: disablePushAlert.chartBoolSettingString, timestamp: Int(Date().timeIntervalSince1970) ) api.postSetting(request, authorization: apiKey) .on(success: { _ in - promise.succeed(value: pushAlert) + promise.succeed(value: disablePushAlert) }, failure: { [weak self] error in self?.createQueuedRequest( from: request, type: .settings, - uniqueKey: RuuviCloudApiSetting.pushAlertEnabled.rawValue + uniqueKey: RuuviCloudApiSetting.pushAlertDisabled.rawValue ) promise.fail(error: .api(error)) }) diff --git a/Packages/RuuviLocal/Sources/RuuviLocal/RuuviLocalSettings.swift b/Packages/RuuviLocal/Sources/RuuviLocal/RuuviLocalSettings.swift index b1782d035..986d0a14a 100644 --- a/Packages/RuuviLocal/Sources/RuuviLocal/RuuviLocalSettings.swift +++ b/Packages/RuuviLocal/Sources/RuuviLocal/RuuviLocalSettings.swift @@ -92,10 +92,8 @@ public protocol RuuviLocalSettings { var theme: RuuviTheme { get set } var hideNFCForSensorContest: Bool { get set } var alertSound: RuuviAlertSound { get set } - var showEmailAlertSettings: Bool { get set } - var emailAlertEnabled: Bool { get set } - var showPushAlertSettings: Bool { get set } - var pushAlertEnabled: Bool { get set } + var emailAlertDisabled: Bool { get set } + var pushAlertDisabled: Bool { get set } var limitAlertNotificationsEnabled: Bool { get set } var showSwitchStatusLabel: Bool { get set } var showAlertsRangeInGraph: Bool { get set } diff --git a/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/RuuviLocalSettingsUserDefaults.swift b/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/RuuviLocalSettingsUserDefaults.swift index 997bddce1..21ddebb89 100644 --- a/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/RuuviLocalSettingsUserDefaults.swift +++ b/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/RuuviLocalSettingsUserDefaults.swift @@ -654,11 +654,8 @@ final class RuuviLocalSettingsUserDefaults: RuuviLocalSettings { } } - @UserDefault("SettingsUserDefaults.showEmailAlertSettings", defaultValue: false) - var showEmailAlertSettings: Bool - - @UserDefault("SettingsUserDefaults.emailAlertEnabled", defaultValue: false) - var emailAlertEnabled: Bool { + @UserDefault("SettingsUserDefaults.emailAlertDisabled", defaultValue: false) + var emailAlertDisabled: Bool { didSet { DispatchQueue.global(qos: .userInitiated).async { NotificationCenter @@ -672,11 +669,8 @@ final class RuuviLocalSettingsUserDefaults: RuuviLocalSettings { } } - @UserDefault("SettingsUserDefaults.showPushAlertSettings", defaultValue: false) - var showPushAlertSettings: Bool - - @UserDefault("SettingsUserDefaults.pushAlertEnabled", defaultValue: false) - var pushAlertEnabled: Bool { + @UserDefault("SettingsUserDefaults.pushAlertDisabled", defaultValue: false) + var pushAlertDisabled: Bool { didSet { DispatchQueue.global(qos: .userInitiated).async { NotificationCenter diff --git a/Packages/RuuviOntology/Sources/RuuviOntology/Common/RuuviCloudSettings.swift b/Packages/RuuviOntology/Sources/RuuviOntology/Common/RuuviCloudSettings.swift index 1e5c8e81d..30d519bea 100644 --- a/Packages/RuuviOntology/Sources/RuuviOntology/Common/RuuviCloudSettings.swift +++ b/Packages/RuuviOntology/Sources/RuuviOntology/Common/RuuviCloudSettings.swift @@ -15,8 +15,8 @@ public protocol RuuviCloudSettings { var dashboardEnabled: Bool? { get } var dashboardType: DashboardType? { get } var dashboardTapActionType: DashboardTapActionType? { get } - var pushAlertEnabled: Bool? { get } - var emailAlertEnabled: Bool? { get } + var pushAlertDisabled: Bool? { get } + var emailAlertDisabled: Bool? { get } var profileLanguageCode: String? { get } var dashboardSensorOrder: String? { get } } diff --git a/Packages/RuuviService/Sources/RuuviService/RuuviServiceAppSettings.swift b/Packages/RuuviService/Sources/RuuviService/RuuviServiceAppSettings.swift index ede639afd..427e8c0ae 100644 --- a/Packages/RuuviService/Sources/RuuviService/RuuviServiceAppSettings.swift +++ b/Packages/RuuviService/Sources/RuuviService/RuuviServiceAppSettings.swift @@ -46,10 +46,10 @@ public protocol RuuviServiceAppSettings { func set(dashboardTapActionType: DashboardTapActionType) -> Future @discardableResult - func set(emailAlert: Bool) -> Future + func set(disableEmailAlert: Bool) -> Future @discardableResult - func set(pushAlert: Bool) -> Future + func set(disablePushAlert: Bool) -> Future @discardableResult func set(profileLanguageCode: String) -> Future diff --git a/Packages/RuuviService/Sources/RuuviServiceAppSettings/RuuviServiceAppSettingsImpl.swift b/Packages/RuuviService/Sources/RuuviServiceAppSettings/RuuviServiceAppSettingsImpl.swift index f30dfcd2b..7a3a92b5d 100644 --- a/Packages/RuuviService/Sources/RuuviServiceAppSettings/RuuviServiceAppSettingsImpl.swift +++ b/Packages/RuuviService/Sources/RuuviServiceAppSettings/RuuviServiceAppSettingsImpl.swift @@ -198,11 +198,11 @@ public final class RuuviServiceAppSettingsImpl: RuuviServiceAppSettings { } @discardableResult - public func set(emailAlert: Bool) -> Future { + public func set(disableEmailAlert: Bool) -> Future { let promise = Promise() - cloud.set(emailAlert: emailAlert) - .on(success: { enabled in - promise.succeed(value: enabled) + cloud.set(disableEmailAlert: disableEmailAlert) + .on(success: { disabled in + promise.succeed(value: disabled) }, failure: { error in promise.fail(error: .ruuviCloud(error)) }) @@ -210,11 +210,11 @@ public final class RuuviServiceAppSettingsImpl: RuuviServiceAppSettings { } @discardableResult - public func set(pushAlert: Bool) -> Future { + public func set(disablePushAlert: Bool) -> Future { let promise = Promise() - cloud.set(pushAlert: pushAlert) - .on(success: { enabled in - promise.succeed(value: enabled) + cloud.set(disablePushAlert: disablePushAlert) + .on(success: { disabled in + promise.succeed(value: disabled) }, failure: { error in promise.fail(error: .ruuviCloud(error)) }) diff --git a/Packages/RuuviService/Sources/RuuviServiceCloudSync/RuuviServiceCloudSyncImpl.swift b/Packages/RuuviService/Sources/RuuviServiceCloudSync/RuuviServiceCloudSyncImpl.swift index 4c4866673..a977d9179 100644 --- a/Packages/RuuviService/Sources/RuuviServiceCloudSync/RuuviServiceCloudSyncImpl.swift +++ b/Packages/RuuviService/Sources/RuuviServiceCloudSync/RuuviServiceCloudSyncImpl.swift @@ -109,13 +109,13 @@ public final class RuuviServiceCloudSyncImpl: RuuviServiceCloudSync { dashboardTapActionType != sSelf.ruuviLocalSettings.dashboardTapActionType { sSelf.ruuviLocalSettings.dashboardTapActionType = dashboardTapActionType } - if let pushAlertEnabled = cloudSettings.pushAlertEnabled, - pushAlertEnabled != sSelf.ruuviLocalSettings.pushAlertEnabled { - sSelf.ruuviLocalSettings.pushAlertEnabled = pushAlertEnabled + if let pushAlertDisabled = cloudSettings.pushAlertDisabled, + pushAlertDisabled != sSelf.ruuviLocalSettings.pushAlertDisabled { + sSelf.ruuviLocalSettings.pushAlertDisabled = pushAlertDisabled } - if let emailAlertEnabled = cloudSettings.emailAlertEnabled, - emailAlertEnabled != sSelf.ruuviLocalSettings.emailAlertEnabled { - sSelf.ruuviLocalSettings.emailAlertEnabled = emailAlertEnabled + if let emailAlertDisabled = cloudSettings.emailAlertDisabled, + emailAlertDisabled != sSelf.ruuviLocalSettings.emailAlertDisabled { + sSelf.ruuviLocalSettings.emailAlertDisabled = emailAlertDisabled } if let cloudProfileLanguageCode = cloudSettings.profileLanguageCode { if cloudProfileLanguageCode !=