From f60ea994be257047b14ba65b15da39a15df1e22d Mon Sep 17 00:00:00 2001 From: Rinat Enikeev Date: Sun, 10 Dec 2023 00:05:52 +0200 Subject: [PATCH 1/3] Eliminate warnings and fix localization Fixes localization issues related to %0.f --- .../Resources/de.lproj/Localizable.strings | 10 +- .../Resources/en.lproj/Localizable.strings | 10 +- .../Resources/fi.lproj/Localizable.strings | 10 +- .../Resources/fr.lproj/Localizable.strings | 10 +- .../Resources/ru.lproj/Localizable.strings | 10 +- .../Resources/sv.lproj/Localizable.strings | 10 +- .../RuuviLocalization/RuuviLocalization.swift | 30 +++-- .../Templates/Localizable_de.strings.stencil | 4 +- .../Templates/Localizable_en.strings.stencil | 2 +- .../Templates/Localizable_fi.strings.stencil | 4 +- .../Templates/Localizable_fr.strings.stencil | 4 +- .../Templates/Localizable_ru.strings.stencil | 4 +- .../Templates/Localizable_sv.strings.stencil | 4 +- .../VMP/Presenter/DiscoverPresenter.swift | 20 ++- .../View/Table/DiscoverTableHeaderView.swift | 8 +- .../Table/DiscoverTableViewController.swift | 1 + .../Sources/RuuviOnboard/Pages/Helpers.swift | 6 +- .../Pages/RuuviOnboardViewController.swift | 2 - .../RuuviAnalyticsImpl.swift | 1 - .../Sources/RuuviCloudApi/RuuviCloudApi.swift | 1 - ...uuviCloudApiSensorImageUploadRequest.swift | 1 - .../Request/Upload/UserApiUploadRequest.swift | 1 - .../Response/RuuviCloudApiBaseResponse.swift | 1 - .../URLSession/RuuviCloudApiURLSession.swift | 1 - .../RuuviCloudFactoryPure.swift | 4 - .../RuuviCloudPure/RuuviCloudPure.swift | 4 - .../RealmContextFactoryImpl.swift | 2 - .../RuuviContextRealm/RealmContextImpl.swift | 1 - .../SQLiteContextFactoryGRDB.swift | 1 - .../SQLiteContextGRDB.swift | 1 - .../RuuviCoreImage/RuuviCoreImageImpl.swift | 3 +- .../RuuviCoreLocationImpl.swift | 14 +-- .../Sources/RuuviCorePN/RuuviCorePNImpl.swift | 1 - .../RuuviCorePermissionImpl.swift | 1 - .../Sources/RuuviDFUImpl/DfuFlasher.swift | 1 - .../Sources/RuuviDFUImpl/DfuScanner.swift | 1 - .../Sources/RuuviDFUImpl/RuuviDFUImpl.swift | 1 - .../BackgroundProcessServiceiOS13.swift | 4 - .../RuuviDaemonCloudSyncWorker.swift | 1 - .../RuuviDaemonFactoryCloudSync.swift | 1 - .../Data/DataPruningOperationsManager.swift | 1 - .../RuuviTagAdvertisementDaemonBTKit.swift | 1 - .../RuuviTagHeartbeatDaemonBTKit.swift | 1 - .../RuuviTagPropertiesDaemonBTKit.swift | 3 +- .../Documents/ImagePersistenceDocuments.swift | 1 - .../Background/Image/ImagePersistence.swift | 1 - .../RuuviLocalImagesUserDefaults.swift | 3 +- .../RuuviLocalConnectionsUserDefaults.swift | 1 - .../RuuviLocalFactoryUserDefaults.swift | 1 - .../RuuviLocalIDsUserDefaults.swift | 1 - .../RuuviLocalSettingsUserDefaults.swift | 1 - .../RuuviLocalSyncStateUserDefaults.swift | 1 - .../MigrationManagerAlertService.swift | 1 - .../RuuviMigrationFactoryImpl.swift | 1 - .../MigrationManagerSensorSettings.swift | 1 - .../RuuviMigrationFixRHAlerts.swift | 1 - .../MigrationManagerToChartDuration240.swift | 1 - .../MigrationManagerToNetworkPull60.swift | 1 - .../MigrationManagerToPrune240.swift | 1 - .../toRH/MigrationManagerToRH.swift | 1 - .../toSQLite/MigrationManagerToSQLite.swift | 1 - .../MigrationManagerToTimeouts.swift | 1 - .../toVIPER/MigrationManagerToVIPER.swift | 1 - .../RuuviNotificationLocalImpl.swift | 18 +-- .../RuuviNotifierImpl+Process.swift | 3 +- .../RuuviNotifierImpl/RuuviNotifierImpl.swift | 1 - .../RuuviTagDataRealm+Extension.swift | 1 - ...uviTagDataRealm+RuuviTagSensorRecord.swift | 1 - .../RuuviTagDataRealm.swift | 1 - .../RuuviTagLatestDataRealm+Extension.swift | 1 - ...LatestDataRealm+RuuviTagSensorRecord.swift | 1 - .../RuuviTagLatestDataRealm.swift | 1 - .../RuuviTagRealm+RuuviTagSensor.swift | 1 - .../RuuviOntologyRealm/RuuviTagRealm.swift | 1 - .../RuuviTagRealmProtocol.swift | 1 - .../SensorSettingsRealm.swift | 1 - .../RuuviCloudQueuedRequestSQLite.swift | 1 - .../RuuviTagDataSQLite.swift | 1 - .../RuuviTagLatestDataSQLite.swift | 1 - .../RuuviOntologySQLite/RuuviTagSQLite.swift | 1 - ...viTagSensorRecord+RuuviTagDataSQLite.swift | 1 - .../SensorSettingsSQLite.swift | 1 - .../RuuviPersistenceRealm.swift | 1 - .../RuuviPersistenceSQLite.swift | 1 - .../RuuviPoolCoordinator.swift | 1 - .../RuuviPoolFactoryCoordinator.swift | 1 - .../RuuviReactorFactoryImpl.swift | 1 - .../RuuviReactorImpl/RuuviReactorImpl.swift | 1 - .../RuuviRepositoryCoordinator.swift | 1 - .../RuuviRepositoryFactoryCoordinator.swift | 1 - .../AlertPersistenceUserDefaults.swift | 14 +-- .../UserDefaults/KeyedArchiver.swift | 14 +-- .../RuuviServiceAlertImpl.swift | 3 +- .../RuuviServiceAppSettingsImpl.swift | 1 - .../RuuviServiceAuthImpl.swift | 1 - .../RuuviServiceCloudNotificationImpl.swift | 1 - .../RuuviServiceCloudSyncImpl.swift | 3 +- ...uuviServiceCloudSyncRecordsOperation.swift | 1 - .../RuuviServiceExportImpl.swift | 7 +- .../RuuviServiceFactory.swift | 1 - .../RuuviTagReadLogsOperation.swift | 1 - .../Queue/GATTServiceQueue.swift | 1 - .../RuuviServiceMeasurementImpl.swift | 1 - ...RuuviServiceAppOffsetCalibrationImpl.swift | 1 - .../RuuviServiceOwnershipImpl.swift | 1 - .../RuuviServiceSensorPropertiesImpl.swift | 1 - .../RuuviServiceSensorRecordsImpl.swift | 1 - .../RuuviStorageCoordinator.swift | 1 - .../RuuviStorageFactoryCoordinator.swift | 1 - .../RuuviUserCoordinator.swift | 1 - .../RuuviUserFactoryCoordinator.swift | 3 - project_frameworks.yml | 1 + .../About/View/AboutViewController.swift | 1 + .../BackgroundSelectionViewController.swift | 1 + .../Cards/Presenter/CardsPresenter.swift | 4 +- .../Cards/View/UI/CardsViewController.swift | 1 + .../Presenter/TagChartsViewPresenter.swift | 6 +- .../Charts/View/UI/TagChartsView.swift | 1 + .../View/UI/TagChartsViewController.swift | 5 +- .../Home/Presenter/DashboardPresenter.swift | 4 +- .../Home/View/DashboardViewController.swift | 1 + .../MenuTableEmbededViewController.swift | 5 + .../View/MyRuuviAccountViewController.swift | 1 + .../Table/SettingsTableViewController.swift | 1 + .../UI/ASSelectionTableViewController.swift | 1 + ...ppearanceSettingsTableViewController.swift | 1 + .../View/DefaultsViewController.swift | 1 + .../Table/DefaultsTableViewController.swift | 7 +- .../View/UI/DevicesTableViewController.swift | 1 + .../View/HeartbeatViewController.swift | 1 + .../Table/HeartbeatTableViewController.swift | 1 + ...ertSoundSelectionTableViewController.swift | 1 + ...ficationsSettingsTableViewController.swift | 1 + .../UI/RuuviCloudTableViewController.swift | 1 + .../Table/SelectionTableViewController.swift | 1 + .../UnitSettingsTableViewController.swift | 1 + .../ViewController/ShareViewController.swift | 1 + .../View/SignInBenefitsViewController.swift | 1 + .../SignIn/View/UI/SignInViewController.swift | 1 + .../UI/SensorForceClaimViewController.swift | 1 + .../OffsetCorrectionAppleViewController.swift | 2 +- .../Owner/View/OwnerViewController.swift | 1 + .../View/UI/SensorRemovalViewController.swift | 1 + .../View/UI/TagSettingsViewController.swift | 117 ++++-------------- .../Alert/Impl/AlertPresenterImpl.swift | 16 +-- 145 files changed, 183 insertions(+), 336 deletions(-) diff --git a/Common/RuuviLocalization/Sources/RuuviLocalization/Resources/de.lproj/Localizable.strings b/Common/RuuviLocalization/Sources/RuuviLocalization/Resources/de.lproj/Localizable.strings index 7b56f5ec0..3be9a37ef 100644 --- a/Common/RuuviLocalization/Sources/RuuviLocalization/Resources/de.lproj/Localizable.strings +++ b/Common/RuuviLocalization/Sources/RuuviLocalization/Resources/de.lproj/Localizable.strings @@ -240,7 +240,7 @@ "LocalNotificationsManager.HighTemperature.title" = "Temperatur ist zu hoch!"; "LocalNotificationsManager.LowTemperature.title" = "Temperatur zu niedrig!"; "TagSettings.Alerts.Off" = "Aus"; -"TagSettings.Alerts.Temperature.description" = "Warnung bei weniger als %0.f oder mehr als %0.f"; +"TagSettings.Alerts.Temperature.description" = "Warnung bei weniger als %.0f oder mehr als %.0f"; "TagSettings.Label.alerts.text" = "Warnungen"; "TagSettings.backgroundImageLabel.text" = "Hintergrund bild"; "TagSettings.batteryVoltageTitleLabel.text" = "Batteriespannung"; @@ -558,8 +558,8 @@ Ihr RuuviTag-Sensor ist einsatzbereit!"; "TagSettings.Alert.SetHumidity.title" = "Feuchtigkeitsalarm einstellen"; "TagSettings.Alert.SetPressure.title" = "Druckalarm einstellen"; "TagSettings.Alert.SetRSSI.title" = "Signalstärkealarm einstellen"; -"TagSettings.AlertSettings.Dialog.Min" = "Min (%0.f)"; -"TagSettings.AlertSettings.Dialog.Max" = "Max (%0.f)"; +"TagSettings.AlertSettings.Dialog.Min" = "Min (%.0f)"; +"TagSettings.AlertSettings.Dialog.Max" = "Max (%.0f)"; "export_history" = "Verlauf exportieren (csv)"; "clear_view" = "Klare verlaufsansicht"; "day_1" = "1 Tag"; @@ -572,12 +572,12 @@ Ihr RuuviTag-Sensor ist einsatzbereit!"; "day_8" = "8 Tage"; "day_9" = "9 Tage"; "day_10" = "10 Tage"; -"day_x" = "%0.f Tage"; +"day_x" = "%.0f Tage"; "more" = "Mehr..."; "all" = "Alle"; "longer_history_title" = "Längere Geschichte"; "longer_history_message" = "Die Ruuvi Station Mobile App unterstützt maximal 10 Tage Historie. Ruuvi-Cloud-Abonnenten können mit der Web-App unter ruuvi.com/station (erfordert Ruuvi-Gateway-Router) bis zu 2 Jahre historische Daten anzeigen."; -"reading_history_x" = "Bluetooth-Sync: %0.f"; +"reading_history_x" = "Bluetooth-Sync: %.0f"; "rssi_alert_description" = "Die Verwendung dieses Alarms setzt voraus, dass Sie in der App angemeldet sind und dass Sie den Sensor für sich beansprucht haben und dass er sich in der Reichweite des Ruuvi Gateway Routers befindet. iOS-Geräte können keine Informationen zur Signalstärke der vom Ruuvi-Sensor gesendeten Daten anzeigen, wenn der Sensor gekoppelt ist und Messungen im Hintergrund empfangen werden. Die Echtzeit-Bluetooth-Signalstärke wird in der App angezeigt, hat aber keinen Einfluss auf diesen Alarm."; "bluetooth_download" = "Bluetooth-Download"; "bluetooth_download_description" = "Lokale Sensordaten können heruntergeladen werden, wenn Sie sich in Bluetooth-Reichweite befinden."; diff --git a/Common/RuuviLocalization/Sources/RuuviLocalization/Resources/en.lproj/Localizable.strings b/Common/RuuviLocalization/Sources/RuuviLocalization/Resources/en.lproj/Localizable.strings index f815def81..df8b7ce15 100644 --- a/Common/RuuviLocalization/Sources/RuuviLocalization/Resources/en.lproj/Localizable.strings +++ b/Common/RuuviLocalization/Sources/RuuviLocalization/Resources/en.lproj/Localizable.strings @@ -241,7 +241,7 @@ If you cannot see the Language option in the settings, make sure that you have a "LocalNotificationsManager.HighTemperature.title" = "Temperature is too high!"; "LocalNotificationsManager.LowTemperature.title" = "Temperature is too low!"; "TagSettings.Alerts.Off" = "Off"; -"TagSettings.Alerts.Temperature.description" = "Alert when less than %0.f or more than %0.f"; +"TagSettings.Alerts.Temperature.description" = "Alert when less than %.0f or more than %.0f"; "TagSettings.Label.alerts.text" = "Alerts"; "TagSettings.backgroundImageLabel.text" = "Background image"; "TagSettings.batteryVoltageTitleLabel.text" = "Battery Voltage"; @@ -559,8 +559,8 @@ Your RuuviTag sensor is ready for use!"; "TagSettings.Alert.SetHumidity.title" = "Set humidity alert"; "TagSettings.Alert.SetPressure.title" = "Set pressure alert"; "TagSettings.Alert.SetRSSI.title" = "Set signal strength alert"; -"TagSettings.AlertSettings.Dialog.Min" = "Min (%0.f)"; -"TagSettings.AlertSettings.Dialog.Max" = "Max (%0.f)"; +"TagSettings.AlertSettings.Dialog.Min" = "Min (%.0f)"; +"TagSettings.AlertSettings.Dialog.Max" = "Max (%.0f)"; "export_history" = "Export history (csv)"; "clear_view" = "Clear history view"; "day_1" = "1 day"; @@ -573,12 +573,12 @@ Your RuuviTag sensor is ready for use!"; "day_8" = "8 days"; "day_9" = "9 days"; "day_10" = "10 days"; -"day_x" = "%0.f days"; +"day_x" = "%.0f days"; "more" = "More..."; "all" = "All"; "longer_history_title" = "Longer history"; "longer_history_message" = "Ruuvi Station mobile app supports maximum 10 days of history. Ruuvi Cloud subscribers are able to view up to 2 years of historical data using web app at ruuvi.com/station (requires Ruuvi Gateway router)."; -"reading_history_x" = "Reading Bluetooth: %0.f"; +"reading_history_x" = "Reading Bluetooth: %.0f"; "rssi_alert_description" = "Using this alert requires you to be signed in to the app, and that you have claimed the ownership of this sensor and it's in the range of Ruuvi Gateway router. iOS devices are unable to indicate signal strength information of received data sent by Ruuvi sensor when sensor is paired and measurements are being received in the background. Realtime Bluetooth signal strength is shown in the app but doesn't affect this alert."; "bluetooth_download" = "Bluetooth download"; "bluetooth_download_description" = "Local sensor data can be downloaded, when you're within its Bluetooth range."; diff --git a/Common/RuuviLocalization/Sources/RuuviLocalization/Resources/fi.lproj/Localizable.strings b/Common/RuuviLocalization/Sources/RuuviLocalization/Resources/fi.lproj/Localizable.strings index be1cbb293..50b4daa2e 100644 --- a/Common/RuuviLocalization/Sources/RuuviLocalization/Resources/fi.lproj/Localizable.strings +++ b/Common/RuuviLocalization/Sources/RuuviLocalization/Resources/fi.lproj/Localizable.strings @@ -241,7 +241,7 @@ Mikäli et näe Kieli-valintaa asetuksissa, varmista, että sinulla on vähintä "LocalNotificationsManager.HighTemperature.title" = "Lämpötila liian korkea!"; "LocalNotificationsManager.LowTemperature.title" = "Lämpötila liian alhainen!"; "TagSettings.Alerts.Off" = "Pois käytöstä"; -"TagSettings.Alerts.Temperature.description" = "Hälytä, mikäli alle %0.f tai yli %0.f"; +"TagSettings.Alerts.Temperature.description" = "Hälytä, mikäli alle %.0f tai yli %.0f"; "TagSettings.Label.alerts.text" = "Hälytykset"; "TagSettings.backgroundImageLabel.text" = "Taustakuva"; "TagSettings.batteryVoltageTitleLabel.text" = "Paristojännite"; @@ -559,8 +559,8 @@ RuuviTag on valmis käyttöön!"; "TagSettings.Alert.SetHumidity.title" = "Aseta kosteushälytys"; "TagSettings.Alert.SetPressure.title" = "Aseta painehälytys"; "TagSettings.Alert.SetRSSI.title" = "Aseta signaalinvoimakkuushälytys"; -"TagSettings.AlertSettings.Dialog.Min" = "Min (%0.f)"; -"TagSettings.AlertSettings.Dialog.Max" = "Max (%0.f)"; +"TagSettings.AlertSettings.Dialog.Min" = "Min (%.0f)"; +"TagSettings.AlertSettings.Dialog.Max" = "Max (%.0f)"; "export_history" = "Lataa historia (csv)"; "clear_view" = "Tyhjennä kaavionäkymä"; "day_1" = "1 päivä"; @@ -573,12 +573,12 @@ RuuviTag on valmis käyttöön!"; "day_8" = "8 päivää"; "day_9" = "9 päivää"; "day_10" = "10 päivää"; -"day_x" = "%0.f päivää"; +"day_x" = "%.0f päivää"; "more" = "Lisää..."; "all" = "Kaikki"; "longer_history_title" = "Pidempi historia"; "longer_history_message" = "Ruuvi Station -mobiilisovellus tukee maksimissaan 10 päivän historiaa. Ruuvi Cloud -tilaajat voivat tarkastella historiatietoja jopa 2 vuoden ajalta web-sovelluksessa osoitteessa ruuvi.com/fi/station (vaatii Ruuvi Gateway -reitittimen)."; -"reading_history_x" = "Bluetooth-lataus: %0.f"; +"reading_history_x" = "Bluetooth-lataus: %.0f"; "rssi_alert_description" = "Tämän hälytyksen käyttö vaatii, että olet sisäänkirjautunut sovellukseen, sinut on merkitty anturin omistajaksi ja anturi on Ruuvi Gateway -reitittimen kuuluvuusalueella. iOS-päätelaitteet eivät pysty näyttämään Ruuvin anturien lähettämien viestien signaalinvoimakkuustietoja anturin ollessa paritettuna ja kun mittauksia luetaan taustalla. Reaaliaikainen Bluetooth-signaalinvoimakkuus näytetään sovelluksessa, mutta sitä ei käytetä tässä hälytyksessä."; "bluetooth_download" = "Bluetooth-lataus"; "bluetooth_download_description" = "Voit ladata anturin sisäisen historian ollessasi Bluetooth-kantaman sisällä."; diff --git a/Common/RuuviLocalization/Sources/RuuviLocalization/Resources/fr.lproj/Localizable.strings b/Common/RuuviLocalization/Sources/RuuviLocalization/Resources/fr.lproj/Localizable.strings index 34b04170f..10f7618e3 100644 --- a/Common/RuuviLocalization/Sources/RuuviLocalization/Resources/fr.lproj/Localizable.strings +++ b/Common/RuuviLocalization/Sources/RuuviLocalization/Resources/fr.lproj/Localizable.strings @@ -240,7 +240,7 @@ "LocalNotificationsManager.HighTemperature.title" = "Température trop haute !"; "LocalNotificationsManager.LowTemperature.title" = "Température trop basse !"; "TagSettings.Alerts.Off" = "Désactivé"; -"TagSettings.Alerts.Temperature.description" = "Notifier si la valeur est inférieure à %0.f ou supérieure à %0.f"; +"TagSettings.Alerts.Temperature.description" = "Notifier si la valeur est inférieure à %.0f ou supérieure à %.0f"; "TagSettings.Label.alerts.text" = "Notifications"; "TagSettings.backgroundImageLabel.text" = "Fond d'écran"; "TagSettings.batteryVoltageTitleLabel.text" = "Tension de la pile"; @@ -558,8 +558,8 @@ RuuviTag est prêt à être utilisé !"; "TagSettings.Alert.SetHumidity.title" = "Réglage de l'alerte d'humidité"; "TagSettings.Alert.SetPressure.title" = "Régler l'alerte de pression"; "TagSettings.Alert.SetRSSI.title" = "Définir une alerte sur la puissance du signal"; -"TagSettings.AlertSettings.Dialog.Min" = "Min (%0.f)"; -"TagSettings.AlertSettings.Dialog.Max" = "Max (%0.f)"; +"TagSettings.AlertSettings.Dialog.Min" = "Min (%.0f)"; +"TagSettings.AlertSettings.Dialog.Max" = "Max (%.0f)"; "export_history" = "Exportation de l'historique (csv)"; "clear_view" = "Vue historique vide"; "day_1" = "1 jour"; @@ -572,12 +572,12 @@ RuuviTag est prêt à être utilisé !"; "day_8" = "8 jours"; "day_9" = "9 jours"; "day_10" = "10 jours"; -"day_x" = "%0.f jours"; +"day_x" = "%.0f jours"; "more" = "Plus..."; "all" = "Tout"; "longer_history_title" = "Une histoire plus longue"; "longer_history_message" = "L'application mobile Ruuvi Station prend en charge un maximum de 10 jours d'historique. Les abonnés à Ruuvi Cloud peuvent consulter jusqu'à 2 ans d'historique en utilisant l'application web à ruuvi.com/station (nécessite le routeur Ruuvi Gateway)."; -"reading_history_x" = "Bluetooth sync: %0.f"; +"reading_history_x" = "Bluetooth sync: %.0f"; "rssi_alert_description" = "L'utilisation de cette alerte nécessite que vous soyez connecté à l'application, que vous ayez revendiqué la propriété de ce capteur et qu'il se trouve dans le rayon d'action du routeur de la passerelle Ruuvi. Les appareils iOS sont incapables d'indiquer l'intensité du signal des données reçues envoyées par le capteur Ruuvi lorsque le capteur est apparié et que des mesures sont reçues en arrière-plan. La puissance du signal Bluetooth en temps réel est affichée dans l'application mais n'affecte pas cette alerte."; "bluetooth_download" = "Téléchargement Bluetooth"; "bluetooth_download_description" = "Les données du capteur local peuvent être téléchargées lorsque vous êtes dans sa portée Bluetooth."; diff --git a/Common/RuuviLocalization/Sources/RuuviLocalization/Resources/ru.lproj/Localizable.strings b/Common/RuuviLocalization/Sources/RuuviLocalization/Resources/ru.lproj/Localizable.strings index 5f8df82b7..77faef121 100644 --- a/Common/RuuviLocalization/Sources/RuuviLocalization/Resources/ru.lproj/Localizable.strings +++ b/Common/RuuviLocalization/Sources/RuuviLocalization/Resources/ru.lproj/Localizable.strings @@ -241,7 +241,7 @@ If you cannot see the Language option in the settings, make sure that you have a "LocalNotificationsManager.HighTemperature.title" = "Высокая температура!"; "LocalNotificationsManager.LowTemperature.title" = "Низкая температура!"; "TagSettings.Alerts.Off" = "Отключено"; -"TagSettings.Alerts.Temperature.description" = "Уведомление если меньше %0.f или больше %0.f"; +"TagSettings.Alerts.Temperature.description" = "Уведомление если меньше %.0f или больше %.0f"; "TagSettings.Label.alerts.text" = "Уведомления"; "TagSettings.backgroundImageLabel.text" = "Фоновое изображение"; "TagSettings.batteryVoltageTitleLabel.text" = "Напряжение Батареи"; @@ -559,8 +559,8 @@ If you cannot see the Language option in the settings, make sure that you have a "TagSettings.Alert.SetHumidity.title" = "Set humidity alert"; "TagSettings.Alert.SetPressure.title" = "Set pressure alert"; "TagSettings.Alert.SetRSSI.title" = "Set signal strength alert"; -"TagSettings.AlertSettings.Dialog.Min" = "Min (%0.f)"; -"TagSettings.AlertSettings.Dialog.Max" = "Max (%0.f)"; +"TagSettings.AlertSettings.Dialog.Min" = "Min (%.0f)"; +"TagSettings.AlertSettings.Dialog.Max" = "Max (%.0f)"; "export_history" = "Выгрузить историю (csv)"; "clear_view" = "Clear history view"; "day_1" = "1 день"; @@ -573,12 +573,12 @@ If you cannot see the Language option in the settings, make sure that you have a "day_8" = "8 дней"; "day_9" = "9 дней"; "day_10" = "10 дней"; -"day_x" = "%0.f days"; +"day_x" = "%.0f days"; "more" = "Больше..."; "all" = "All"; "longer_history_title" = "Longer history"; "longer_history_message" = "Ruuvi Station mobile app supports maximum 10 days of history. Ruuvi Cloud subscribers are able to view up to 2 years of historical data using web app at ruuvi.com/station (requires Ruuvi Gateway router)."; -"reading_history_x" = "Bluetooth sync: %0.f"; +"reading_history_x" = "Bluetooth sync: %.0f"; "rssi_alert_description" = "Using this alert requires you to be signed in to the app, and that you have claimed the ownership of this sensor and it's in the range of Ruuvi Gateway router. iOS devices are unable to indicate signal strength information of received data sent by Ruuvi sensor when sensor is paired and measurements are being received in the background. Realtime Bluetooth signal strength is shown in the app but doesn't affect this alert."; "bluetooth_download" = "Bluetooth download"; "bluetooth_download_description" = "Local sensor data can be downloaded, when you're within its Bluetooth range."; diff --git a/Common/RuuviLocalization/Sources/RuuviLocalization/Resources/sv.lproj/Localizable.strings b/Common/RuuviLocalization/Sources/RuuviLocalization/Resources/sv.lproj/Localizable.strings index b9779e4e8..a6979e528 100644 --- a/Common/RuuviLocalization/Sources/RuuviLocalization/Resources/sv.lproj/Localizable.strings +++ b/Common/RuuviLocalization/Sources/RuuviLocalization/Resources/sv.lproj/Localizable.strings @@ -241,7 +241,7 @@ Om du inte kan se språkalternativet i inställningarna, se till att du har lagt "LocalNotificationsManager.HighTemperature.title" = "För hög temperatur!"; "LocalNotificationsManager.LowTemperature.title" = "För låg temperatur!"; "TagSettings.Alerts.Off" = "Av"; -"TagSettings.Alerts.Temperature.description" = "Alarmera när mindre än %0.f eller mer än %0.f"; +"TagSettings.Alerts.Temperature.description" = "Alarmera när mindre än %.0f eller mer än %.0f"; "TagSettings.Label.alerts.text" = "Alarm"; "TagSettings.backgroundImageLabel.text" = "Bakgrundsbild"; "TagSettings.batteryVoltageTitleLabel.text" = "Batterispänning"; @@ -559,8 +559,8 @@ RuuviTag-sensorn är redo att användas!"; "TagSettings.Alert.SetHumidity.title" = "Ställ in fuktighetsalarm"; "TagSettings.Alert.SetPressure.title" = "Ställ in lufttryckssalarm"; "TagSettings.Alert.SetRSSI.title" = "Ställ in signalstyrkealarm"; -"TagSettings.AlertSettings.Dialog.Min" = "Min (%0.f)"; -"TagSettings.AlertSettings.Dialog.Max" = "Max (%0.f)"; +"TagSettings.AlertSettings.Dialog.Min" = "Min (%.0f)"; +"TagSettings.AlertSettings.Dialog.Max" = "Max (%.0f)"; "export_history" = "Exportera historik (csv)"; "clear_view" = "Töm historikvy"; "day_1" = "1 dag"; @@ -573,12 +573,12 @@ RuuviTag-sensorn är redo att användas!"; "day_8" = "8 dagar"; "day_9" = "9 dagar"; "day_10" = "10 dagar"; -"day_x" = "%0.f dagar"; +"day_x" = "%.0f dagar"; "more" = "Mer..."; "all" = "Allt"; "longer_history_title" = "Längre historik"; "longer_history_message" = "Ruuvi Station mobilapp stöder högst 10 dagars historik. Ruuvi Cloud-prenumeranter kan se upp till 2 års historisk data med hjälp av webbappen på ruuvi.com/station (kräver Ruuvi Gateway-router)."; -"reading_history_x" = "Läser Bluetooth: %0.f"; +"reading_history_x" = "Läser Bluetooth: %.0f"; "rssi_alert_description" = "För att använda denna avisering måste du vara inloggad i appen, att du har tagit ägandeskap av den här sensorn och att den är inom räckhåll för Ruuvi Gateway-routern. IOS-enheter kan inte visa signalstyrka för mottagna data som skickas av Ruuvi-sensorn när sensorn är parat och mätningar mottas i bakgrunden. Realtids Bluetooth-signalstyrka visas i appen men påverkar inte denna avisering."; "bluetooth_download" = "Bluetooth-nedladdning"; "bluetooth_download_description" = "Lokal sensordata kan laddas ner när du är inom Bluetooth-räckvidd."; diff --git a/Common/RuuviLocalization/Sources/RuuviLocalization/RuuviLocalization.swift b/Common/RuuviLocalization/Sources/RuuviLocalization/RuuviLocalization.swift index b8a4daaad..343dbe3ee 100644 --- a/Common/RuuviLocalization/Sources/RuuviLocalization/RuuviLocalization.swift +++ b/Common/RuuviLocalization/Sources/RuuviLocalization/RuuviLocalization.swift @@ -180,8 +180,10 @@ public enum RuuviLocalization { public static let day8 = RuuviLocalization.tr("Localizable", "day_8", fallback: "8 days") /// 9 days public static let day9 = RuuviLocalization.tr("Localizable", "day_9", fallback: "9 days") - /// %0.f days - public static let dayX = RuuviLocalization.tr("Localizable", "day_x", fallback: "%0.f days") + /// %.0f days + public static func dayX(_ p1: Float) -> String { + return RuuviLocalization.tr("Localizable", "day_x", p1, fallback: "%.0f days") + } /// dBm public static let dBm = RuuviLocalization.tr("Localizable", "dBm", fallback: "dBm") /// Are you sure? @@ -349,8 +351,10 @@ public enum RuuviLocalization { public static let openSensorView = RuuviLocalization.tr("Localizable", "open_sensor_view", fallback: "Open sensor view") /// Owner's Ruuvi Plan public static let ownersPlan = RuuviLocalization.tr("Localizable", "owners_plan", fallback: "Owner's Ruuvi Plan") - /// Reading Bluetooth: %0.f - public static let readingHistoryX = RuuviLocalization.tr("Localizable", "reading_history_x", fallback: "Reading Bluetooth: %0.f") + /// Reading Bluetooth: %.0f + public static func readingHistoryX(_ p1: Float) -> String { + return RuuviLocalization.tr("Localizable", "reading_history_x", p1, fallback: "Reading Bluetooth: %.0f") + } /// Remove public static let remove = RuuviLocalization.tr("Localizable", "Remove", fallback: "Remove") /// By removing the sensor, your sensor ownership status will be revoked and sensor settings, such as name, background image, calibration settings and alert settings will be removed. After removal, someone else can claim ownership of the sensor. Each Ruuvi sensor can have only one owner. @@ -1920,10 +1924,14 @@ public enum RuuviLocalization { } public enum AlertSettings { public enum Dialog { - /// Max (%0.f) - public static let max = RuuviLocalization.tr("Localizable", "TagSettings.AlertSettings.Dialog.Max", fallback: "Max (%0.f)") - /// Min (%0.f) - public static let min = RuuviLocalization.tr("Localizable", "TagSettings.AlertSettings.Dialog.Min", fallback: "Min (%0.f)") + /// Max (%.0f) + public static func max(_ p1: Float) -> String { + return RuuviLocalization.tr("Localizable", "TagSettings.AlertSettings.Dialog.Max", p1, fallback: "Max (%.0f)") + } + /// Min (%.0f) + public static func min(_ p1: Float) -> String { + return RuuviLocalization.tr("Localizable", "TagSettings.AlertSettings.Dialog.Min", p1, fallback: "Min (%.0f)") + } } } public enum Alerts { @@ -1956,8 +1964,10 @@ public enum RuuviLocalization { } } public enum Temperature { - /// Alert when less than %0.f or more than %0.f - public static let description = RuuviLocalization.tr("Localizable", "TagSettings.Alerts.Temperature.description", fallback: "Alert when less than %0.f or more than %0.f") + /// Alert when less than %.0f or more than %.0f + public static func description(_ p1: Float, _ p2: Float) -> String { + return RuuviLocalization.tr("Localizable", "TagSettings.Alerts.Temperature.description", p1, p2, fallback: "Alert when less than %.0f or more than %.0f") + } } } public enum AlertsAreDisabled { diff --git a/Common/RuuviLocalization/Templates/Localizable_de.strings.stencil b/Common/RuuviLocalization/Templates/Localizable_de.strings.stencil index b40417834..0355527d6 100644 --- a/Common/RuuviLocalization/Templates/Localizable_de.strings.stencil +++ b/Common/RuuviLocalization/Templates/Localizable_de.strings.stencil @@ -11,8 +11,8 @@ {% for item in document.data["translations"] %} {% if item["ident_ios"] != "" %} {% set localizeKey %}{{item["ident_ios"]}}{% endset %} - {% set defaultLocalizeValue %}{{item["en"]|replace:"{%@^%1$s}","%@"|replace:"{%.0f^%1$,d}","%.0f"|replace:"{%d^%1$,d}","%d"|replace:"{%d^%2$,d}","%d"|replace:"{%.0f^%2$,d}","%.0f"|replace:"{%.0f^%1$s}","%0.f" | replace:"{%.0f^%2$s}","%0.f"}}{% endset %} - {% set localizeValue %}{{item["de"]|replace:"{%@^%1$s}","%@"|replace:"{%.0f^%1$,d}","%.0f"|replace:"{%d^%1$,d}","%d"|replace:"{%d^%2$,d}","%d"|replace:"{%.0f^%2$,d}","%.0f"|replace:"{%.0f^%1$s}","%0.f" | replace:"{%.0f^%2$s}","%0.f"}}{% endset %} + {% set defaultLocalizeValue %}{{item["en"]|replace:"{%@^%1$s}","%@"|replace:"{%.0f^%1$,d}","%.0f"|replace:"{%d^%1$,d}","%d"|replace:"{%d^%2$,d}","%d"|replace:"{%.0f^%2$,d}","%.0f"|replace:"{%.0f^%1$s}","%.0f" | replace:"{%.0f^%2$s}","%.0f"}}{% endset %} + {% set localizeValue %}{{item["de"]|replace:"{%@^%1$s}","%@"|replace:"{%.0f^%1$,d}","%.0f"|replace:"{%d^%1$,d}","%d"|replace:"{%d^%2$,d}","%d"|replace:"{%.0f^%2$,d}","%.0f"|replace:"{%.0f^%1$s}","%.0f" | replace:"{%.0f^%2$s}","%.0f"}}{% endset %} {% if not localizeValue %} "{{localizeKey}}" = "{{defaultLocalizeValue}}"; {% else %} diff --git a/Common/RuuviLocalization/Templates/Localizable_en.strings.stencil b/Common/RuuviLocalization/Templates/Localizable_en.strings.stencil index e51ae7a95..c8407cc8d 100644 --- a/Common/RuuviLocalization/Templates/Localizable_en.strings.stencil +++ b/Common/RuuviLocalization/Templates/Localizable_en.strings.stencil @@ -11,7 +11,7 @@ {% for item in document.data["translations"] %} {% if item["ident_ios"] != "" %} {% set localizeKey %}{{item["ident_ios"]}}{% endset %} - {% set localizeValue %}{{item["en"]|replace:"{%@^%1$s}","%@"|replace:"{%.0f^%1$,d}","%.0f"|replace:"{%d^%1$,d}","%d"|replace:"{%d^%2$,d}","%d"|replace:"{%.0f^%2$,d}","%.0f"|replace:"{%.0f^%1$s}","%0.f" | replace:"{%.0f^%2$s}","%0.f"}}{% endset %} + {% set localizeValue %}{{item["en"]|replace:"{%@^%1$s}","%@"|replace:"{%.0f^%1$,d}","%.0f"|replace:"{%d^%1$,d}","%d"|replace:"{%d^%2$,d}","%d"|replace:"{%.0f^%2$,d}","%.0f"|replace:"{%.0f^%1$s}","%.0f" | replace:"{%.0f^%2$s}","%.0f"}}{% endset %} "{{localizeKey}}" = "{{localizeValue}}"; {% endif %} {% endfor %} diff --git a/Common/RuuviLocalization/Templates/Localizable_fi.strings.stencil b/Common/RuuviLocalization/Templates/Localizable_fi.strings.stencil index 4104c602b..da8a19f1f 100644 --- a/Common/RuuviLocalization/Templates/Localizable_fi.strings.stencil +++ b/Common/RuuviLocalization/Templates/Localizable_fi.strings.stencil @@ -11,8 +11,8 @@ {% for item in document.data["translations"] %} {% if item["ident_ios"] != "" %} {% set localizeKey %}{{item["ident_ios"]}}{% endset %} - {% set defaultLocalizeValue %}{{item["en"]|replace:"{%@^%1$s}","%@"|replace:"{%.0f^%1$,d}","%.0f"|replace:"{%d^%1$,d}","%d"|replace:"{%d^%2$,d}","%d"|replace:"{%.0f^%2$,d}","%.0f"|replace:"{%.0f^%1$s}","%0.f" | replace:"{%.0f^%2$s}","%0.f"}}{% endset %} - {% set localizeValue %}{{item["fi"]|replace:"{%@^%1$s}","%@"|replace:"{%.0f^%1$,d}","%.0f"|replace:"{%d^%1$,d}","%d"|replace:"{%d^%2$,d}","%d"|replace:"{%.0f^%2$,d}","%.0f"|replace:"{%.0f^%1$s}","%0.f" | replace:"{%.0f^%2$s}","%0.f"}}{% endset %} + {% set defaultLocalizeValue %}{{item["en"]|replace:"{%@^%1$s}","%@"|replace:"{%.0f^%1$,d}","%.0f"|replace:"{%d^%1$,d}","%d"|replace:"{%d^%2$,d}","%d"|replace:"{%.0f^%2$,d}","%.0f"|replace:"{%.0f^%1$s}","%.0f" | replace:"{%.0f^%2$s}","%.0f"}}{% endset %} + {% set localizeValue %}{{item["fi"]|replace:"{%@^%1$s}","%@"|replace:"{%.0f^%1$,d}","%.0f"|replace:"{%d^%1$,d}","%d"|replace:"{%d^%2$,d}","%d"|replace:"{%.0f^%2$,d}","%.0f"|replace:"{%.0f^%1$s}","%.0f" | replace:"{%.0f^%2$s}","%.0f"}}{% endset %} {% if not localizeValue %} "{{localizeKey}}" = "{{defaultLocalizeValue}}"; {% else %} diff --git a/Common/RuuviLocalization/Templates/Localizable_fr.strings.stencil b/Common/RuuviLocalization/Templates/Localizable_fr.strings.stencil index 4f96a692b..6a67d79e4 100644 --- a/Common/RuuviLocalization/Templates/Localizable_fr.strings.stencil +++ b/Common/RuuviLocalization/Templates/Localizable_fr.strings.stencil @@ -11,8 +11,8 @@ {% for item in document.data["translations"] %} {% if item["ident_ios"] != "" %} {% set localizeKey %}{{item["ident_ios"]}}{% endset %} - {% set defaultLocalizeValue %}{{item["en"]|replace:"{%@^%1$s}","%@"|replace:"{%.0f^%1$,d}","%.0f"|replace:"{%d^%1$,d}","%d"|replace:"{%d^%2$,d}","%d"|replace:"{%.0f^%2$,d}","%.0f"|replace:"{%.0f^%1$s}","%0.f" | replace:"{%.0f^%2$s}","%0.f"}}{% endset %} - {% set localizeValue %}{{item["fr"]|replace:"{%@^%1$s}","%@"|replace:"{%.0f^%1$,d}","%.0f"|replace:"{%d^%1$,d}","%d"|replace:"{%d^%2$,d}","%d"|replace:"{%.0f^%2$,d}","%.0f"|replace:"{%.0f^%1$s}","%0.f" | replace:"{%.0f^%2$s}","%0.f"}}{% endset %} + {% set defaultLocalizeValue %}{{item["en"]|replace:"{%@^%1$s}","%@"|replace:"{%.0f^%1$,d}","%.0f"|replace:"{%d^%1$,d}","%d"|replace:"{%d^%2$,d}","%d"|replace:"{%.0f^%2$,d}","%.0f"|replace:"{%.0f^%1$s}","%.0f" | replace:"{%.0f^%2$s}","%.0f"}}{% endset %} + {% set localizeValue %}{{item["fr"]|replace:"{%@^%1$s}","%@"|replace:"{%.0f^%1$,d}","%.0f"|replace:"{%d^%1$,d}","%d"|replace:"{%d^%2$,d}","%d"|replace:"{%.0f^%2$,d}","%.0f"|replace:"{%.0f^%1$s}","%.0f" | replace:"{%.0f^%2$s}","%.0f"}}{% endset %} {% if not localizeValue %} "{{localizeKey}}" = "{{defaultLocalizeValue}}"; {% else %} diff --git a/Common/RuuviLocalization/Templates/Localizable_ru.strings.stencil b/Common/RuuviLocalization/Templates/Localizable_ru.strings.stencil index e855d4d69..2f4e3d530 100644 --- a/Common/RuuviLocalization/Templates/Localizable_ru.strings.stencil +++ b/Common/RuuviLocalization/Templates/Localizable_ru.strings.stencil @@ -11,8 +11,8 @@ {% for item in document.data["translations"] %} {% if item["ident_ios"] != "" %} {% set localizeKey %}{{item["ident_ios"]}}{% endset %} - {% set defaultLocalizeValue %}{{item["en"]|replace:"{%@^%1$s}","%@"|replace:"{%.0f^%1$,d}","%.0f"|replace:"{%d^%1$,d}","%d"|replace:"{%d^%2$,d}","%d"|replace:"{%.0f^%2$,d}","%.0f"|replace:"{%.0f^%1$s}","%0.f" | replace:"{%.0f^%2$s}","%0.f"}}{% endset %} - {% set localizeValue %}{{item["ru"]|replace:"{%@^%1$s}","%@"|replace:"{%.0f^%1$,d}","%.0f"|replace:"{%d^%1$,d}","%d"|replace:"{%d^%2$,d}","%d"|replace:"{%.0f^%2$,d}","%.0f"|replace:"{%.0f^%1$s}","%0.f" | replace:"{%.0f^%2$s}","%0.f"}}{% endset %} + {% set defaultLocalizeValue %}{{item["en"]|replace:"{%@^%1$s}","%@"|replace:"{%.0f^%1$,d}","%.0f"|replace:"{%d^%1$,d}","%d"|replace:"{%d^%2$,d}","%d"|replace:"{%.0f^%2$,d}","%.0f"|replace:"{%.0f^%1$s}","%.0f" | replace:"{%.0f^%2$s}","%.0f"}}{% endset %} + {% set localizeValue %}{{item["ru"]|replace:"{%@^%1$s}","%@"|replace:"{%.0f^%1$,d}","%.0f"|replace:"{%d^%1$,d}","%d"|replace:"{%d^%2$,d}","%d"|replace:"{%.0f^%2$,d}","%.0f"|replace:"{%.0f^%1$s}","%.0f" | replace:"{%.0f^%2$s}","%.0f"}}{% endset %} {% if not localizeValue %} "{{localizeKey}}" = "{{defaultLocalizeValue}}"; {% else %} diff --git a/Common/RuuviLocalization/Templates/Localizable_sv.strings.stencil b/Common/RuuviLocalization/Templates/Localizable_sv.strings.stencil index 19a0e8584..c09184dc1 100644 --- a/Common/RuuviLocalization/Templates/Localizable_sv.strings.stencil +++ b/Common/RuuviLocalization/Templates/Localizable_sv.strings.stencil @@ -11,8 +11,8 @@ {% for item in document.data["translations"] %} {% if item["ident_ios"] != "" %} {% set localizeKey %}{{item["ident_ios"]}}{% endset %} - {% set defaultLocalizeValue %}{{item["en"]|replace:"{%@^%1$s}","%@"|replace:"{%.0f^%1$,d}","%.0f"|replace:"{%d^%1$,d}","%d"|replace:"{%d^%2$,d}","%d"|replace:"{%.0f^%2$,d}","%.0f"|replace:"{%.0f^%1$s}","%0.f" | replace:"{%.0f^%2$s}","%0.f"}}{% endset %} - {% set localizeValue %}{{item["sv"]|replace:"{%@^%1$s}","%@"|replace:"{%.0f^%1$,d}","%.0f"|replace:"{%d^%1$,d}","%d"|replace:"{%d^%2$,d}","%d"|replace:"{%.0f^%2$,d}","%.0f"|replace:"{%.0f^%1$s}","%0.f" | replace:"{%.0f^%2$s}","%0.f"}}{% endset %} + {% set defaultLocalizeValue %}{{item["en"]|replace:"{%@^%1$s}","%@"|replace:"{%.0f^%1$,d}","%.0f"|replace:"{%d^%1$,d}","%d"|replace:"{%d^%2$,d}","%d"|replace:"{%.0f^%2$,d}","%.0f"|replace:"{%.0f^%1$s}","%.0f" | replace:"{%.0f^%2$s}","%.0f"}}{% endset %} + {% set localizeValue %}{{item["sv"]|replace:"{%@^%1$s}","%@"|replace:"{%.0f^%1$,d}","%.0f"|replace:"{%d^%1$,d}","%d"|replace:"{%d^%2$,d}","%d"|replace:"{%.0f^%2$,d}","%.0f"|replace:"{%.0f^%1$s}","%.0f" | replace:"{%.0f^%2$s}","%.0f"}}{% endset %} {% if not localizeValue %} "{{localizeKey}}" = "{{defaultLocalizeValue}}"; {% else %} diff --git a/Modules/RuuviDiscover/Sources/RuuviDiscover/VMP/Presenter/DiscoverPresenter.swift b/Modules/RuuviDiscover/Sources/RuuviDiscover/VMP/Presenter/DiscoverPresenter.swift index d91669c98..bc0989ce2 100644 --- a/Modules/RuuviDiscover/Sources/RuuviDiscover/VMP/Presenter/DiscoverPresenter.swift +++ b/Modules/RuuviDiscover/Sources/RuuviDiscover/VMP/Presenter/DiscoverPresenter.swift @@ -84,13 +84,7 @@ class DiscoverPresenter: NSObject, RuuviDiscover { private var persistedReactorToken: RuuviReactorToken? private lazy var ruuviLogoImage = UIImage.named("ruuvi_logo", for: Self.self) private var isBluetoothPermissionGranted: Bool { - if #available(iOS 13.1, *) { - return CBCentralManager.authorization == .allowedAlways - } else if #available(iOS 13.0, *) { - return CBCentralManager().authorization == .allowedAlways - } - // Before iOS 13, Bluetooth permissions are not required - return true + CBCentralManager.authorization == .allowedAlways } deinit { @@ -201,9 +195,9 @@ extension DiscoverPresenter: DiscoverViewOutput { } // If tag is not added get the name from the mac and show other info. - if let addableTag = ruuviTags.first(where: { ruuviTag in + if ruuviTags.first(where: { ruuviTag in ruuviTag.mac == nfcSensor?.macId - }) { + }) != nil { guard let message = self.message( for: nfcSensor, displayName: displayName(for: nfcSensor) @@ -289,14 +283,14 @@ extension DiscoverPresenter: RuuviFirmwareOutput { extension DiscoverPresenter { private func startObservingPersistedRuuviSensors() { persistedReactorToken = ruuviReactor.observe { [weak self] change in + guard let self else { return } switch change { case let .initial(sensors): - guard let sSelf = self else { return } - self?.persistedSensors = sensors + persistedSensors = sensors case let .insert(sensor): - self?.persistedSensors.append(sensor) + persistedSensors.append(sensor) case let .delete(sensor): - self?.persistedSensors.removeAll(where: { $0.any == sensor }) + persistedSensors.removeAll(where: { $0.any == sensor }) default: return } diff --git a/Modules/RuuviDiscover/Sources/RuuviDiscover/VMP/View/Table/DiscoverTableHeaderView.swift b/Modules/RuuviDiscover/Sources/RuuviDiscover/VMP/View/Table/DiscoverTableHeaderView.swift index 48f757007..771e1956d 100644 --- a/Modules/RuuviDiscover/Sources/RuuviDiscover/VMP/View/Table/DiscoverTableHeaderView.swift +++ b/Modules/RuuviDiscover/Sources/RuuviDiscover/VMP/View/Table/DiscoverTableHeaderView.swift @@ -15,13 +15,7 @@ class DiscoverTableHeaderView: UIView { } private var isBluetoothPermissionGranted: Bool { - if #available(iOS 13.1, *) { - return CBCentralManager.authorization == .allowedAlways - } else if #available(iOS 13.0, *) { - return CBCentralManager().authorization == .allowedAlways - } - // Before iOS 13, Bluetooth permissions are not required - return true + CBCentralManager.authorization == .allowedAlways } private let addSensorDescriptionKey: String = "add_sensor_description" diff --git a/Modules/RuuviDiscover/Sources/RuuviDiscover/VMP/View/Table/DiscoverTableViewController.swift b/Modules/RuuviDiscover/Sources/RuuviDiscover/VMP/View/Table/DiscoverTableViewController.swift index fea137aae..eb2e1900d 100644 --- a/Modules/RuuviDiscover/Sources/RuuviDiscover/VMP/View/Table/DiscoverTableViewController.swift +++ b/Modules/RuuviDiscover/Sources/RuuviDiscover/VMP/View/Table/DiscoverTableViewController.swift @@ -196,6 +196,7 @@ extension DiscoverTableViewController: DiscoverTableHeaderViewDelegate { extension DiscoverTableViewController { override func viewDidLoad() { super.viewDidLoad() + localize() configureViews() updateUI() output.viewDidLoad() diff --git a/Modules/RuuviOnboard/Sources/RuuviOnboard/Pages/Helpers.swift b/Modules/RuuviOnboard/Sources/RuuviOnboard/Pages/Helpers.swift index 6da970867..69e15295a 100644 --- a/Modules/RuuviOnboard/Sources/RuuviOnboard/Pages/Helpers.swift +++ b/Modules/RuuviOnboard/Sources/RuuviOnboard/Pages/Helpers.swift @@ -5,8 +5,10 @@ import UIKit public extension UIAlertController { func setMessageAlignment(_ alignment: NSTextAlignment) { - let paragraphStyle = NSParagraphStyle.default.mutableCopy() as? NSMutableParagraphStyle - paragraphStyle?.alignment = alignment + guard let paragraphStyle = NSParagraphStyle.default.mutableCopy() as? NSMutableParagraphStyle else { + return + } + paragraphStyle.alignment = alignment let messageText = NSMutableAttributedString( string: message ?? "", diff --git a/Modules/RuuviOnboard/Sources/RuuviOnboard/Pages/RuuviOnboardViewController.swift b/Modules/RuuviOnboard/Sources/RuuviOnboard/Pages/RuuviOnboardViewController.swift index d9b5e9dea..4db785010 100644 --- a/Modules/RuuviOnboard/Sources/RuuviOnboard/Pages/RuuviOnboardViewController.swift +++ b/Modules/RuuviOnboard/Sources/RuuviOnboard/Pages/RuuviOnboardViewController.swift @@ -263,8 +263,6 @@ extension RuuviOnboardViewController { cell?.delegate = self cell?.configure(with: viewModel) return cell - default: - return UICollectionViewCell() } } } diff --git a/Packages/RuuviAnalytics/Sources/RuuviAnalyticsImpl/RuuviAnalyticsImpl.swift b/Packages/RuuviAnalytics/Sources/RuuviAnalyticsImpl/RuuviAnalyticsImpl.swift index 13c765245..adf98a0d2 100644 --- a/Packages/RuuviAnalytics/Sources/RuuviAnalyticsImpl/RuuviAnalyticsImpl.swift +++ b/Packages/RuuviAnalytics/Sources/RuuviAnalyticsImpl/RuuviAnalyticsImpl.swift @@ -2,7 +2,6 @@ import Foundation #if canImport(FirebaseAnalytics) import FirebaseAnalytics #endif -import RuuviAnalytics import RuuviLocal import RuuviOntology import RuuviService diff --git a/Packages/RuuviCloud/Sources/RuuviCloudApi/RuuviCloudApi.swift b/Packages/RuuviCloud/Sources/RuuviCloudApi/RuuviCloudApi.swift index 17eb27ef1..aa7000bca 100644 --- a/Packages/RuuviCloud/Sources/RuuviCloudApi/RuuviCloudApi.swift +++ b/Packages/RuuviCloud/Sources/RuuviCloudApi/RuuviCloudApi.swift @@ -1,7 +1,6 @@ import BTKit import Foundation import Future -import RuuviCloud import RuuviOntology /// https://docs.ruuvi.com/communication/ruuvi-network/backends/serverless/user-api diff --git a/Packages/RuuviCloud/Sources/RuuviCloudApi/URLSession/Models/Request/Upload/RuuviCloudApiSensorImageUploadRequest.swift b/Packages/RuuviCloud/Sources/RuuviCloudApi/URLSession/Models/Request/Upload/RuuviCloudApiSensorImageUploadRequest.swift index af4aa7563..1648e36ac 100644 --- a/Packages/RuuviCloud/Sources/RuuviCloudApi/URLSession/Models/Request/Upload/RuuviCloudApiSensorImageUploadRequest.swift +++ b/Packages/RuuviCloud/Sources/RuuviCloudApi/URLSession/Models/Request/Upload/RuuviCloudApiSensorImageUploadRequest.swift @@ -1,5 +1,4 @@ import Foundation -import RuuviCloud public struct RuuviCloudApiSensorImageUploadRequest: UserApiUploadRequest { public let sensor: String diff --git a/Packages/RuuviCloud/Sources/RuuviCloudApi/URLSession/Models/Request/Upload/UserApiUploadRequest.swift b/Packages/RuuviCloud/Sources/RuuviCloudApi/URLSession/Models/Request/Upload/UserApiUploadRequest.swift index 49c46acac..8db984399 100644 --- a/Packages/RuuviCloud/Sources/RuuviCloudApi/URLSession/Models/Request/Upload/UserApiUploadRequest.swift +++ b/Packages/RuuviCloud/Sources/RuuviCloudApi/URLSession/Models/Request/Upload/UserApiUploadRequest.swift @@ -1,5 +1,4 @@ import Foundation -import RuuviCloud public protocol UserApiUploadRequest: Codable { var sensor: String { get } diff --git a/Packages/RuuviCloud/Sources/RuuviCloudApi/URLSession/Models/Response/RuuviCloudApiBaseResponse.swift b/Packages/RuuviCloud/Sources/RuuviCloudApi/URLSession/Models/Response/RuuviCloudApiBaseResponse.swift index 3f2529581..79895942a 100644 --- a/Packages/RuuviCloud/Sources/RuuviCloudApi/URLSession/Models/Response/RuuviCloudApiBaseResponse.swift +++ b/Packages/RuuviCloud/Sources/RuuviCloudApi/URLSession/Models/Response/RuuviCloudApiBaseResponse.swift @@ -1,5 +1,4 @@ import Foundation -import RuuviCloud public struct RuuviCloudApiBaseResponse: Decodable where T: Decodable { enum Status: String, Decodable { diff --git a/Packages/RuuviCloud/Sources/RuuviCloudApi/URLSession/RuuviCloudApiURLSession.swift b/Packages/RuuviCloud/Sources/RuuviCloudApi/URLSession/RuuviCloudApiURLSession.swift index b730de909..9855cf539 100644 --- a/Packages/RuuviCloud/Sources/RuuviCloudApi/URLSession/RuuviCloudApiURLSession.swift +++ b/Packages/RuuviCloud/Sources/RuuviCloudApi/URLSession/RuuviCloudApiURLSession.swift @@ -1,6 +1,5 @@ import Foundation import Future -import RuuviCloud // swiftlint:disable file_length diff --git a/Packages/RuuviCloud/Sources/RuuviCloudPure/RuuviCloudFactoryPure.swift b/Packages/RuuviCloud/Sources/RuuviCloudPure/RuuviCloudFactoryPure.swift index 51b63009d..9166136d9 100644 --- a/Packages/RuuviCloud/Sources/RuuviCloudPure/RuuviCloudFactoryPure.swift +++ b/Packages/RuuviCloud/Sources/RuuviCloudPure/RuuviCloudFactoryPure.swift @@ -1,10 +1,6 @@ import Foundation -import RuuviCloud import RuuviPool import RuuviUser -#if canImport(RuuviCloudApi) - import RuuviCloudApi -#endif public final class RuuviCloudFactoryPure: RuuviCloudFactory { public init() {} diff --git a/Packages/RuuviCloud/Sources/RuuviCloudPure/RuuviCloudPure.swift b/Packages/RuuviCloud/Sources/RuuviCloudPure/RuuviCloudPure.swift index 11c94485f..7f289dc5c 100644 --- a/Packages/RuuviCloud/Sources/RuuviCloudPure/RuuviCloudPure.swift +++ b/Packages/RuuviCloud/Sources/RuuviCloudPure/RuuviCloudPure.swift @@ -2,13 +2,9 @@ import BTKit // swiftlint:disable file_length import Foundation import Future -import RuuviCloud import RuuviOntology import RuuviPool import RuuviUser -#if canImport(RuuviCloudApi) - import RuuviCloudApi -#endif // swiftlint:disable:next type_body_length public final class RuuviCloudPure: RuuviCloud { diff --git a/Packages/RuuviContext/Sources/RuuviContextRealm/RealmContextFactoryImpl.swift b/Packages/RuuviContext/Sources/RuuviContextRealm/RealmContextFactoryImpl.swift index 68f7bfa62..6dd330878 100644 --- a/Packages/RuuviContext/Sources/RuuviContextRealm/RealmContextFactoryImpl.swift +++ b/Packages/RuuviContext/Sources/RuuviContextRealm/RealmContextFactoryImpl.swift @@ -1,5 +1,3 @@ -import RuuviContext - public final class RealmContextFactoryImpl: RealmContextFactory { public init() {} diff --git a/Packages/RuuviContext/Sources/RuuviContextRealm/RealmContextImpl.swift b/Packages/RuuviContext/Sources/RuuviContextRealm/RealmContextImpl.swift index 6f99a116c..4dfa6f5c3 100644 --- a/Packages/RuuviContext/Sources/RuuviContextRealm/RealmContextImpl.swift +++ b/Packages/RuuviContext/Sources/RuuviContextRealm/RealmContextImpl.swift @@ -1,5 +1,4 @@ import RealmSwift -import RuuviContext class RealmContextImpl: RealmContext { var main: Realm = try! Realm() diff --git a/Packages/RuuviContext/Sources/RuuviContextSQLite/SQLiteContextFactoryGRDB.swift b/Packages/RuuviContext/Sources/RuuviContextSQLite/SQLiteContextFactoryGRDB.swift index 23adfad49..0506e7336 100644 --- a/Packages/RuuviContext/Sources/RuuviContextSQLite/SQLiteContextFactoryGRDB.swift +++ b/Packages/RuuviContext/Sources/RuuviContextSQLite/SQLiteContextFactoryGRDB.swift @@ -1,5 +1,4 @@ import Foundation -import RuuviContext public final class SQLiteContextFactoryGRDB: SQLiteContextFactory { public init() {} diff --git a/Packages/RuuviContext/Sources/RuuviContextSQLite/SQLiteContextGRDB.swift b/Packages/RuuviContext/Sources/RuuviContextSQLite/SQLiteContextGRDB.swift index 864faed91..7fc1254c1 100644 --- a/Packages/RuuviContext/Sources/RuuviContextSQLite/SQLiteContextGRDB.swift +++ b/Packages/RuuviContext/Sources/RuuviContextSQLite/SQLiteContextGRDB.swift @@ -1,6 +1,5 @@ import Foundation import GRDB -import RuuviContext import RuuviOntology #if canImport(RuuviOntologySQLite) import RuuviOntologySQLite diff --git a/Packages/RuuviCore/Sources/RuuviCoreImage/RuuviCoreImageImpl.swift b/Packages/RuuviCore/Sources/RuuviCoreImage/RuuviCoreImageImpl.swift index 5bdb723c7..90f4efd13 100644 --- a/Packages/RuuviCore/Sources/RuuviCoreImage/RuuviCoreImageImpl.swift +++ b/Packages/RuuviCore/Sources/RuuviCoreImage/RuuviCoreImageImpl.swift @@ -1,7 +1,6 @@ import AVFoundation import CoreGraphics import Foundation -import RuuviCore import UIKit public final class RuuviCoreImageImpl: RuuviCoreImage { @@ -25,7 +24,7 @@ extension UIImage { let imageAspectRatio = self.size.width / self.size.height let canvasAspectRatio = size.width / size.height - var resizeFactor: CGFloat = if imageAspectRatio > canvasAspectRatio { + let resizeFactor: CGFloat = if imageAspectRatio > canvasAspectRatio { size.width / self.size.width } else { size.height / self.size.height diff --git a/Packages/RuuviCore/Sources/RuuviCoreLocation/RuuviCoreLocationImpl.swift b/Packages/RuuviCore/Sources/RuuviCoreLocation/RuuviCoreLocationImpl.swift index fe021f5e5..95ad4b49b 100644 --- a/Packages/RuuviCore/Sources/RuuviCoreLocation/RuuviCoreLocationImpl.swift +++ b/Packages/RuuviCore/Sources/RuuviCoreLocation/RuuviCoreLocationImpl.swift @@ -1,34 +1,32 @@ import CoreLocation import Foundation import Future -import RuuviCore public final class RuuviCoreLocationImpl: NSObject, RuuviCoreLocation { public var isLocationPermissionGranted: Bool { CLLocationManager.locationServicesEnabled() - && (CLLocationManager.authorizationStatus() == .authorizedWhenInUse - || CLLocationManager.authorizationStatus() == .authorizedAlways) + && (locationManager.authorizationStatus == .authorizedWhenInUse + || locationManager.authorizationStatus == .authorizedAlways) } public var locationAuthorizationStatus: CLAuthorizationStatus { - CLLocationManager.authorizationStatus() + locationManager.authorizationStatus } var isLocationPermissionDenied: Bool { !CLLocationManager.locationServicesEnabled() - || CLLocationManager.authorizationStatus() == .denied || CLLocationManager.authorizationStatus() == .denied + || locationManager.authorizationStatus == .denied || locationManager.authorizationStatus == .denied } var isLocationPermissionNotDetermined: Bool { - CLLocationManager.authorizationStatus() == .notDetermined + locationManager.authorizationStatus == .notDetermined } - private var locationManager: CLLocationManager + private let locationManager = CLLocationManager() private var requestLocationPermissionCallback: ((Bool) -> Void)? private var getCurrentLocationPromise: Promise? override public init() { - locationManager = CLLocationManager() super.init() locationManager.delegate = self locationManager.distanceFilter = 100 diff --git a/Packages/RuuviCore/Sources/RuuviCorePN/RuuviCorePNImpl.swift b/Packages/RuuviCore/Sources/RuuviCorePN/RuuviCorePNImpl.swift index 29ee43e9b..53b9b5197 100644 --- a/Packages/RuuviCore/Sources/RuuviCorePN/RuuviCorePNImpl.swift +++ b/Packages/RuuviCore/Sources/RuuviCorePN/RuuviCorePNImpl.swift @@ -1,4 +1,3 @@ -import RuuviCore import UIKit import UserNotifications diff --git a/Packages/RuuviCore/Sources/RuuviCorePermission/RuuviCorePermissionImpl.swift b/Packages/RuuviCore/Sources/RuuviCorePermission/RuuviCorePermissionImpl.swift index b22f45b5d..934ce2173 100644 --- a/Packages/RuuviCore/Sources/RuuviCorePermission/RuuviCorePermissionImpl.swift +++ b/Packages/RuuviCore/Sources/RuuviCorePermission/RuuviCorePermissionImpl.swift @@ -1,6 +1,5 @@ import Foundation import Photos -import RuuviCore public final class RuuviCorePermissionImpl: RuuviCorePermission { private let locationManager: RuuviCoreLocation diff --git a/Packages/RuuviDFU/Sources/RuuviDFUImpl/DfuFlasher.swift b/Packages/RuuviDFU/Sources/RuuviDFUImpl/DfuFlasher.swift index d2c5c9c11..04ac983ef 100644 --- a/Packages/RuuviDFU/Sources/RuuviDFUImpl/DfuFlasher.swift +++ b/Packages/RuuviDFU/Sources/RuuviDFUImpl/DfuFlasher.swift @@ -1,6 +1,5 @@ import Combine import Foundation -import RuuviDFU #if canImport(NordicDFU) import NordicDFU #endif diff --git a/Packages/RuuviDFU/Sources/RuuviDFUImpl/DfuScanner.swift b/Packages/RuuviDFU/Sources/RuuviDFUImpl/DfuScanner.swift index c8a722e7e..35a26636e 100644 --- a/Packages/RuuviDFU/Sources/RuuviDFUImpl/DfuScanner.swift +++ b/Packages/RuuviDFU/Sources/RuuviDFUImpl/DfuScanner.swift @@ -1,6 +1,5 @@ import CoreBluetooth import Foundation -import RuuviDFU import UIKit class DfuScanner: NSObject { diff --git a/Packages/RuuviDFU/Sources/RuuviDFUImpl/RuuviDFUImpl.swift b/Packages/RuuviDFU/Sources/RuuviDFUImpl/RuuviDFUImpl.swift index 27649a9eb..e7b62797b 100644 --- a/Packages/RuuviDFU/Sources/RuuviDFUImpl/RuuviDFUImpl.swift +++ b/Packages/RuuviDFU/Sources/RuuviDFUImpl/RuuviDFUImpl.swift @@ -1,6 +1,5 @@ import Combine import Foundation -import RuuviDFU #if canImport(NordicDFU) import NordicDFU #endif diff --git a/Packages/RuuviDaemon/Sources/RuuviDaemonBackground/BackgroundProcessServiceiOS13.swift b/Packages/RuuviDaemon/Sources/RuuviDaemonBackground/BackgroundProcessServiceiOS13.swift index ab2a7b609..53bcfd410 100644 --- a/Packages/RuuviDaemon/Sources/RuuviDaemonBackground/BackgroundProcessServiceiOS13.swift +++ b/Packages/RuuviDaemon/Sources/RuuviDaemonBackground/BackgroundProcessServiceiOS13.swift @@ -1,10 +1,6 @@ import BackgroundTasks import Foundation import Future -import RuuviDaemon -#if canImport(RuuviDaemonOperation) - import RuuviDaemonOperation -#endif @available(iOS 13, *) public final class BackgroundProcessServiceiOS13: BackgroundProcessService { diff --git a/Packages/RuuviDaemon/Sources/RuuviDaemonCloudSync/RuuviDaemonCloudSyncWorker.swift b/Packages/RuuviDaemon/Sources/RuuviDaemonCloudSync/RuuviDaemonCloudSyncWorker.swift index 72df85cfa..5f886f962 100644 --- a/Packages/RuuviDaemon/Sources/RuuviDaemonCloudSync/RuuviDaemonCloudSyncWorker.swift +++ b/Packages/RuuviDaemon/Sources/RuuviDaemonCloudSync/RuuviDaemonCloudSyncWorker.swift @@ -1,5 +1,4 @@ import Foundation -import RuuviDaemon import RuuviLocal import RuuviService diff --git a/Packages/RuuviDaemon/Sources/RuuviDaemonCloudSync/RuuviDaemonFactoryCloudSync.swift b/Packages/RuuviDaemon/Sources/RuuviDaemonCloudSync/RuuviDaemonFactoryCloudSync.swift index 3f2284c93..1bf992c24 100644 --- a/Packages/RuuviDaemon/Sources/RuuviDaemonCloudSync/RuuviDaemonFactoryCloudSync.swift +++ b/Packages/RuuviDaemon/Sources/RuuviDaemonCloudSync/RuuviDaemonFactoryCloudSync.swift @@ -1,5 +1,4 @@ import Foundation -import RuuviDaemon import RuuviLocal import RuuviService diff --git a/Packages/RuuviDaemon/Sources/RuuviDaemonOperation/Data/DataPruningOperationsManager.swift b/Packages/RuuviDaemon/Sources/RuuviDaemonOperation/Data/DataPruningOperationsManager.swift index 831c9657f..5f269a038 100644 --- a/Packages/RuuviDaemon/Sources/RuuviDaemonOperation/Data/DataPruningOperationsManager.swift +++ b/Packages/RuuviDaemon/Sources/RuuviDaemonOperation/Data/DataPruningOperationsManager.swift @@ -1,6 +1,5 @@ import Foundation import Future -import RuuviDaemon import RuuviLocal import RuuviPool import RuuviStorage diff --git a/Packages/RuuviDaemon/Sources/RuuviDaemonRuuviTag/Advertisement/RuuviTagAdvertisementDaemonBTKit.swift b/Packages/RuuviDaemon/Sources/RuuviDaemonRuuviTag/Advertisement/RuuviTagAdvertisementDaemonBTKit.swift index 5dc3f022d..b86567b16 100644 --- a/Packages/RuuviDaemon/Sources/RuuviDaemonRuuviTag/Advertisement/RuuviTagAdvertisementDaemonBTKit.swift +++ b/Packages/RuuviDaemon/Sources/RuuviDaemonRuuviTag/Advertisement/RuuviTagAdvertisementDaemonBTKit.swift @@ -1,6 +1,5 @@ import BTKit import Foundation -import RuuviDaemon import RuuviLocal import RuuviOntology import RuuviPersistence diff --git a/Packages/RuuviDaemon/Sources/RuuviDaemonRuuviTag/Heartbeat/RuuviTagHeartbeatDaemonBTKit.swift b/Packages/RuuviDaemon/Sources/RuuviDaemonRuuviTag/Heartbeat/RuuviTagHeartbeatDaemonBTKit.swift index 8286fcfd9..e428e110a 100644 --- a/Packages/RuuviDaemon/Sources/RuuviDaemonRuuviTag/Heartbeat/RuuviTagHeartbeatDaemonBTKit.swift +++ b/Packages/RuuviDaemon/Sources/RuuviDaemonRuuviTag/Heartbeat/RuuviTagHeartbeatDaemonBTKit.swift @@ -1,6 +1,5 @@ import BTKit import Foundation -import RuuviDaemon import RuuviLocal import RuuviNotification import RuuviNotifier diff --git a/Packages/RuuviDaemon/Sources/RuuviDaemonRuuviTag/Properties/RuuviTagPropertiesDaemonBTKit.swift b/Packages/RuuviDaemon/Sources/RuuviDaemonRuuviTag/Properties/RuuviTagPropertiesDaemonBTKit.swift index f9cc9e9cc..616cf6c35 100644 --- a/Packages/RuuviDaemon/Sources/RuuviDaemonRuuviTag/Properties/RuuviTagPropertiesDaemonBTKit.swift +++ b/Packages/RuuviDaemon/Sources/RuuviDaemonRuuviTag/Properties/RuuviTagPropertiesDaemonBTKit.swift @@ -1,6 +1,5 @@ import BTKit import Foundation -import RuuviDaemon import RuuviLocal import RuuviOntology import RuuviPersistence @@ -166,7 +165,7 @@ public final class RuuviTagPropertiesDaemonBTKit: RuuviDaemonWorker, RuuviTagPro .with(isOwner: true) ).on(success: { [weak self] _ in self?.realmPersistence.readAll(pair.device.uuid).on(success: { realmRecords in - var records = realmRecords.map { $0.with(macId: mac.mac) } + let records = realmRecords.map { $0.with(macId: mac.mac) } self?.sqiltePersistence.create(records).on(success: { _ in self?.realmPersistence.deleteAllRecords(pair.device.uuid).on(success: { _ in self?.idPersistence.set(mac: mac.mac, for: pair.device.uuid.luid) diff --git a/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/Background/Image/Documents/ImagePersistenceDocuments.swift b/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/Background/Image/Documents/ImagePersistenceDocuments.swift index c663ac74b..685cc249c 100644 --- a/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/Background/Image/Documents/ImagePersistenceDocuments.swift +++ b/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/Background/Image/Documents/ImagePersistenceDocuments.swift @@ -1,5 +1,4 @@ import Future -import RuuviLocal import RuuviOntology import UIKit diff --git a/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/Background/Image/ImagePersistence.swift b/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/Background/Image/ImagePersistence.swift index 905a38ced..883716398 100644 --- a/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/Background/Image/ImagePersistence.swift +++ b/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/Background/Image/ImagePersistence.swift @@ -1,5 +1,4 @@ import Future -import RuuviLocal import RuuviOntology import UIKit diff --git a/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/Background/RuuviLocalImagesUserDefaults.swift b/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/Background/RuuviLocalImagesUserDefaults.swift index eee3aa941..a22e1f794 100644 --- a/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/Background/RuuviLocalImagesUserDefaults.swift +++ b/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/Background/RuuviLocalImagesUserDefaults.swift @@ -1,5 +1,4 @@ import Future -import RuuviLocal import RuuviOntology import UIKit @@ -65,7 +64,7 @@ final class RuuviLocalImagesUserDefaults: RuuviLocalImages { } func getOrGenerateBackground(for identifier: Identifier) -> UIImage? { - var id = backgroundId(for: identifier) + let id = backgroundId(for: identifier) if id >= bgMinIndex, id <= bgMaxIndex { return UIImage(named: "bg\(id)") } else { diff --git a/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/RuuviLocalConnectionsUserDefaults.swift b/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/RuuviLocalConnectionsUserDefaults.swift index 4d065bb44..0edce2a06 100644 --- a/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/RuuviLocalConnectionsUserDefaults.swift +++ b/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/RuuviLocalConnectionsUserDefaults.swift @@ -1,5 +1,4 @@ import Foundation -import RuuviLocal import RuuviOntology final class RuuviLocalConnectionsUserDefaults: RuuviLocalConnections { diff --git a/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/RuuviLocalFactoryUserDefaults.swift b/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/RuuviLocalFactoryUserDefaults.swift index 44d87be76..20dd10d40 100644 --- a/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/RuuviLocalFactoryUserDefaults.swift +++ b/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/RuuviLocalFactoryUserDefaults.swift @@ -1,5 +1,4 @@ import Foundation -import RuuviLocal public final class RuuviLocalFactoryUserDefaults: RuuviLocalFactory { public init() {} diff --git a/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/RuuviLocalIDsUserDefaults.swift b/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/RuuviLocalIDsUserDefaults.swift index 80def07c8..3d593962c 100644 --- a/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/RuuviLocalIDsUserDefaults.swift +++ b/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/RuuviLocalIDsUserDefaults.swift @@ -1,5 +1,4 @@ import Foundation -import RuuviLocal import RuuviOntology class RuuviLocalIDsUserDefaults: RuuviLocalIDs { diff --git a/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/RuuviLocalSettingsUserDefaults.swift b/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/RuuviLocalSettingsUserDefaults.swift index 7b5e05aa3..920029844 100644 --- a/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/RuuviLocalSettingsUserDefaults.swift +++ b/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/RuuviLocalSettingsUserDefaults.swift @@ -1,5 +1,4 @@ import Foundation -import RuuviLocal import RuuviOntology // swiftlint:disable type_body_length file_length diff --git a/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/RuuviLocalSyncStateUserDefaults.swift b/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/RuuviLocalSyncStateUserDefaults.swift index 66eafaf15..c9587c207 100644 --- a/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/RuuviLocalSyncStateUserDefaults.swift +++ b/Packages/RuuviLocal/Sources/RuuviLocalUserDefaults/RuuviLocalSyncStateUserDefaults.swift @@ -1,5 +1,4 @@ import Foundation -import RuuviLocal import RuuviOntology final class RuuviLocalSyncStateUserDefaults: RuuviLocalSyncState { diff --git a/Packages/RuuviMigration/Sources/RuuviMigrationImpl/AlertService/MigrationManagerAlertService.swift b/Packages/RuuviMigration/Sources/RuuviMigrationImpl/AlertService/MigrationManagerAlertService.swift index 2f673895c..3e25ee94b 100644 --- a/Packages/RuuviMigration/Sources/RuuviMigrationImpl/AlertService/MigrationManagerAlertService.swift +++ b/Packages/RuuviMigration/Sources/RuuviMigrationImpl/AlertService/MigrationManagerAlertService.swift @@ -1,7 +1,6 @@ import AVKit import Foundation import RuuviContext -import RuuviMigration import RuuviOntology import RuuviService import RuuviStorage diff --git a/Packages/RuuviMigration/Sources/RuuviMigrationImpl/RuuviMigrationFactoryImpl.swift b/Packages/RuuviMigration/Sources/RuuviMigrationImpl/RuuviMigrationFactoryImpl.swift index 613175356..56c22b539 100644 --- a/Packages/RuuviMigration/Sources/RuuviMigrationImpl/RuuviMigrationFactoryImpl.swift +++ b/Packages/RuuviMigration/Sources/RuuviMigrationImpl/RuuviMigrationFactoryImpl.swift @@ -1,6 +1,5 @@ import RuuviContext import RuuviLocal -import RuuviMigration import RuuviPool import RuuviService import RuuviStorage diff --git a/Packages/RuuviMigration/Sources/RuuviMigrationImpl/SensorSettings/MigrationManagerSensorSettings.swift b/Packages/RuuviMigration/Sources/RuuviMigrationImpl/SensorSettings/MigrationManagerSensorSettings.swift index 13b49201e..916352c5c 100644 --- a/Packages/RuuviMigration/Sources/RuuviMigrationImpl/SensorSettings/MigrationManagerSensorSettings.swift +++ b/Packages/RuuviMigration/Sources/RuuviMigrationImpl/SensorSettings/MigrationManagerSensorSettings.swift @@ -1,5 +1,4 @@ import Foundation -import RuuviMigration import RuuviService import RuuviStorage diff --git a/Packages/RuuviMigration/Sources/RuuviMigrationImpl/fixRHAlerts/RuuviMigrationFixRHAlerts.swift b/Packages/RuuviMigration/Sources/RuuviMigrationImpl/fixRHAlerts/RuuviMigrationFixRHAlerts.swift index bd551d126..6f638c841 100644 --- a/Packages/RuuviMigration/Sources/RuuviMigrationImpl/fixRHAlerts/RuuviMigrationFixRHAlerts.swift +++ b/Packages/RuuviMigration/Sources/RuuviMigrationImpl/fixRHAlerts/RuuviMigrationFixRHAlerts.swift @@ -1,7 +1,6 @@ import Foundation import RuuviContext import RuuviLocal -import RuuviMigration import RuuviPool import RuuviService import RuuviStorage diff --git a/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toChartDuration240/MigrationManagerToChartDuration240.swift b/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toChartDuration240/MigrationManagerToChartDuration240.swift index f449bc3ed..37391aba4 100644 --- a/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toChartDuration240/MigrationManagerToChartDuration240.swift +++ b/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toChartDuration240/MigrationManagerToChartDuration240.swift @@ -1,6 +1,5 @@ import Foundation import RuuviLocal -import RuuviMigration final class MigrationManagerToChartDuration240: RuuviMigration { private var settings: RuuviLocalSettings diff --git a/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toNetworkPull60/MigrationManagerToNetworkPull60.swift b/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toNetworkPull60/MigrationManagerToNetworkPull60.swift index d7b156f9f..579cdb2e7 100644 --- a/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toNetworkPull60/MigrationManagerToNetworkPull60.swift +++ b/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toNetworkPull60/MigrationManagerToNetworkPull60.swift @@ -1,6 +1,5 @@ import Foundation import RuuviLocal -import RuuviMigration final class MigrationManagerToNetworkPull60: RuuviMigration { private var settings: RuuviLocalSettings diff --git a/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toPrune240/MigrationManagerToPrune240.swift b/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toPrune240/MigrationManagerToPrune240.swift index a14495c33..08b6a61a4 100644 --- a/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toPrune240/MigrationManagerToPrune240.swift +++ b/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toPrune240/MigrationManagerToPrune240.swift @@ -1,6 +1,5 @@ import Foundation import RuuviLocal -import RuuviMigration final class MigrationManagerToPrune240: RuuviMigration { private var settings: RuuviLocalSettings diff --git a/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toRH/MigrationManagerToRH.swift b/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toRH/MigrationManagerToRH.swift index 98e12af1a..67755eaa2 100644 --- a/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toRH/MigrationManagerToRH.swift +++ b/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toRH/MigrationManagerToRH.swift @@ -1,5 +1,4 @@ import Foundation -import RuuviMigration import RuuviOntology import RuuviService import RuuviStorage diff --git a/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toSQLite/MigrationManagerToSQLite.swift b/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toSQLite/MigrationManagerToSQLite.swift index d1b544ed3..0633be772 100644 --- a/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toSQLite/MigrationManagerToSQLite.swift +++ b/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toSQLite/MigrationManagerToSQLite.swift @@ -2,7 +2,6 @@ import Foundation import RealmSwift import RuuviContext import RuuviLocal -import RuuviMigration import RuuviOntology import RuuviPool #if canImport(RuuviOntologyRealm) diff --git a/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toTimeouts/MigrationManagerToTimeouts.swift b/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toTimeouts/MigrationManagerToTimeouts.swift index 01bc26e7d..2be9edbb6 100644 --- a/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toTimeouts/MigrationManagerToTimeouts.swift +++ b/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toTimeouts/MigrationManagerToTimeouts.swift @@ -1,6 +1,5 @@ import Foundation import RuuviLocal -import RuuviMigration final class MigrationManagerToTimeouts: RuuviMigration { private var settings: RuuviLocalSettings diff --git a/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toVIPER/MigrationManagerToVIPER.swift b/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toVIPER/MigrationManagerToVIPER.swift index ce94e097a..b386decfa 100644 --- a/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toVIPER/MigrationManagerToVIPER.swift +++ b/Packages/RuuviMigration/Sources/RuuviMigrationImpl/toVIPER/MigrationManagerToVIPER.swift @@ -1,7 +1,6 @@ import Foundation import RealmSwift import RuuviLocal -import RuuviMigration import RuuviOntology #if canImport(RuuviOntologyRealm) import RuuviOntologyRealm diff --git a/Packages/RuuviNotification/Sources/RuuviNotificationLocal/RuuviNotificationLocalImpl.swift b/Packages/RuuviNotification/Sources/RuuviNotificationLocal/RuuviNotificationLocalImpl.swift index 6ba15a039..812af9a56 100644 --- a/Packages/RuuviNotification/Sources/RuuviNotificationLocal/RuuviNotificationLocalImpl.swift +++ b/Packages/RuuviNotification/Sources/RuuviNotificationLocal/RuuviNotificationLocalImpl.swift @@ -1,6 +1,5 @@ import Foundation import RuuviLocal -import RuuviNotification import RuuviOntology import RuuviService import RuuviStorage @@ -87,17 +86,12 @@ public final class RuuviNotificationLocalImpl: NSObject, RuuviNotificationLocal } private func id(for uuid: String) -> String { - var id: String = if let macId = idPersistence.mac(for: uuid.luid) { - macId.value - } else { - uuid - } - return id + idPersistence.mac(for: uuid.luid)?.value ?? uuid } public func showDidConnect(uuid: String, title: String) { var needsToShow: Bool - var cache: [String: Date] = connectAlerts + let cache: [String: Date] = connectAlerts if let shownDate = cache[uuid] { var intervalPassed = true @@ -145,7 +139,7 @@ public final class RuuviNotificationLocalImpl: NSObject, RuuviNotificationLocal public func showDidDisconnect(uuid: String, title: String) { var needsToShow: Bool - var cache: [String: Date] = disconnectAlerts + let cache: [String: Date] = disconnectAlerts if let shownDate = cache[uuid] { var intervalPassed = true @@ -193,7 +187,7 @@ public final class RuuviNotificationLocalImpl: NSObject, RuuviNotificationLocal public func notifyDidMove(for uuid: String, counter _: Int, title: String) { var needsToShow: Bool - var cache: [String: Date] = movementAlerts + let cache: [String: Date] = movementAlerts if let shownDate = cache[uuid] { var intervalPassed = true @@ -252,7 +246,7 @@ public extension RuuviNotificationLocalImpl { title: String ) { var needsToShow: Bool - var cache: [String: Date] = switch reason { + let cache: [String: Date] = switch reason { case .low: switch type { case .temperature: @@ -512,7 +506,7 @@ extension RuuviNotificationLocalImpl: UNUserNotificationCenterDelegate { willPresent _: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void ) { - completionHandler([.alert, .badge, .sound]) + completionHandler([.banner, .list, .badge, .sound]) } // swiftlint:disable:next function_body_length diff --git a/Packages/RuuviNotifier/Sources/RuuviNotifierImpl/RuuviNotifierImpl+Process.swift b/Packages/RuuviNotifier/Sources/RuuviNotifierImpl/RuuviNotifierImpl+Process.swift index 517a18726..d51b48d19 100644 --- a/Packages/RuuviNotifier/Sources/RuuviNotifierImpl/RuuviNotifierImpl+Process.swift +++ b/Packages/RuuviNotifier/Sources/RuuviNotifierImpl/RuuviNotifierImpl+Process.swift @@ -1,13 +1,12 @@ // swiftlint:disable file_length import Foundation -import RuuviNotifier import RuuviOntology // MARK: - Process Physical Sensors public extension RuuviNotifierImpl { // swiftlint:disable:next function_body_length - func process(record record: RuuviTagSensorRecord, trigger: Bool) { + func process(record: RuuviTagSensorRecord, trigger: Bool) { guard let luid = record.luid, ruuviAlertService.hasRegistrations(for: record) else { diff --git a/Packages/RuuviNotifier/Sources/RuuviNotifierImpl/RuuviNotifierImpl.swift b/Packages/RuuviNotifier/Sources/RuuviNotifierImpl/RuuviNotifierImpl.swift index 39ca726eb..4db8a67eb 100644 --- a/Packages/RuuviNotifier/Sources/RuuviNotifierImpl/RuuviNotifierImpl.swift +++ b/Packages/RuuviNotifier/Sources/RuuviNotifierImpl/RuuviNotifierImpl.swift @@ -1,7 +1,6 @@ import Foundation import RuuviLocal import RuuviNotification -import RuuviNotifier import RuuviOntology import RuuviService diff --git a/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagDataRealm+Extension.swift b/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagDataRealm+Extension.swift index 5b10e20ed..d229c82ef 100644 --- a/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagDataRealm+Extension.swift +++ b/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagDataRealm+Extension.swift @@ -1,7 +1,6 @@ import Foundation import Humidity import RealmSwift -import RuuviOntology public extension RuuviTagDataRealm { var unitTemperature: Temperature? { diff --git a/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagDataRealm+RuuviTagSensorRecord.swift b/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagDataRealm+RuuviTagSensorRecord.swift index 26b124928..ac97c2c9d 100644 --- a/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagDataRealm+RuuviTagSensorRecord.swift +++ b/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagDataRealm+RuuviTagSensorRecord.swift @@ -1,6 +1,5 @@ import Foundation import RealmSwift -import RuuviOntology public extension RuuviTagDataRealm { var any: AnyRuuviTagSensorRecord? { diff --git a/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagDataRealm.swift b/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagDataRealm.swift index 2d28b0027..a40a1e6d0 100644 --- a/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagDataRealm.swift +++ b/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagDataRealm.swift @@ -1,7 +1,6 @@ import BTKit import Foundation import RealmSwift -import RuuviOntology public final class RuuviTagDataRealm: Object { @objc public dynamic var ruuviTag: RuuviTagRealm? diff --git a/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagLatestDataRealm+Extension.swift b/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagLatestDataRealm+Extension.swift index b60d3354b..02e38a3d6 100644 --- a/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagLatestDataRealm+Extension.swift +++ b/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagLatestDataRealm+Extension.swift @@ -1,7 +1,6 @@ import Foundation import Humidity import RealmSwift -import RuuviOntology public extension RuuviTagLatestDataRealm { var unitTemperature: Temperature? { diff --git a/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagLatestDataRealm+RuuviTagSensorRecord.swift b/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagLatestDataRealm+RuuviTagSensorRecord.swift index 8696a7b79..0ef08ad04 100644 --- a/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagLatestDataRealm+RuuviTagSensorRecord.swift +++ b/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagLatestDataRealm+RuuviTagSensorRecord.swift @@ -1,6 +1,5 @@ import Foundation import RealmSwift -import RuuviOntology public extension RuuviTagLatestDataRealm { var any: AnyRuuviTagSensorRecord? { diff --git a/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagLatestDataRealm.swift b/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagLatestDataRealm.swift index 032471c19..6df825b7b 100644 --- a/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagLatestDataRealm.swift +++ b/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagLatestDataRealm.swift @@ -1,7 +1,6 @@ import BTKit import Foundation import RealmSwift -import RuuviOntology public final class RuuviTagLatestDataRealm: Object { @objc public dynamic var uuid: String = "" diff --git a/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagRealm+RuuviTagSensor.swift b/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagRealm+RuuviTagSensor.swift index 6625335f1..114fdade2 100644 --- a/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagRealm+RuuviTagSensor.swift +++ b/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagRealm+RuuviTagSensor.swift @@ -1,6 +1,5 @@ import Foundation import RealmSwift -import RuuviOntology extension RuuviTagRealm: RuuviTagSensor { public var luid: LocalIdentifier? { diff --git a/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagRealm.swift b/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagRealm.swift index b5d959f0a..be4652124 100644 --- a/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagRealm.swift +++ b/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagRealm.swift @@ -1,7 +1,6 @@ import BTKit import Foundation import RealmSwift -import RuuviOntology public final class RuuviTagRealm: Object, RuuviTagRealmProtocol { @objc public dynamic var uuid: String = "" diff --git a/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagRealmProtocol.swift b/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagRealmProtocol.swift index 85c9db4ee..6656954ff 100644 --- a/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagRealmProtocol.swift +++ b/Packages/RuuviOntology/Sources/RuuviOntologyRealm/RuuviTagRealmProtocol.swift @@ -1,6 +1,5 @@ import Foundation import RealmSwift -import RuuviOntology public protocol RuuviTagRealmProtocol: Object { var uuid: String { get set } diff --git a/Packages/RuuviOntology/Sources/RuuviOntologyRealm/SensorSettingsRealm.swift b/Packages/RuuviOntology/Sources/RuuviOntologyRealm/SensorSettingsRealm.swift index d288ce9fc..090afd652 100644 --- a/Packages/RuuviOntology/Sources/RuuviOntologyRealm/SensorSettingsRealm.swift +++ b/Packages/RuuviOntology/Sources/RuuviOntologyRealm/SensorSettingsRealm.swift @@ -1,6 +1,5 @@ import Foundation import RealmSwift -import RuuviOntology public class SensorSettingsRealm: Object { @objc public dynamic var luid: String? diff --git a/Packages/RuuviOntology/Sources/RuuviOntologySQLite/RuuviCloudQueuedRequestSQLite.swift b/Packages/RuuviOntology/Sources/RuuviOntologySQLite/RuuviCloudQueuedRequestSQLite.swift index c70b8fc07..cef188ac3 100644 --- a/Packages/RuuviOntology/Sources/RuuviOntologySQLite/RuuviCloudQueuedRequestSQLite.swift +++ b/Packages/RuuviOntology/Sources/RuuviOntologySQLite/RuuviCloudQueuedRequestSQLite.swift @@ -1,6 +1,5 @@ import Foundation import GRDB -import RuuviOntology public struct RuuviCloudQueuedRequestSQLite: RuuviCloudQueuedRequest { public var id: Int64? diff --git a/Packages/RuuviOntology/Sources/RuuviOntologySQLite/RuuviTagDataSQLite.swift b/Packages/RuuviOntology/Sources/RuuviOntologySQLite/RuuviTagDataSQLite.swift index 5dabf2e64..b7c4c181a 100644 --- a/Packages/RuuviOntology/Sources/RuuviOntologySQLite/RuuviTagDataSQLite.swift +++ b/Packages/RuuviOntology/Sources/RuuviOntologySQLite/RuuviTagDataSQLite.swift @@ -1,7 +1,6 @@ import Foundation import GRDB import Humidity -import RuuviOntology public struct RuuviTagDataSQLite: RuuviTagSensorRecord { public var luid: LocalIdentifier? diff --git a/Packages/RuuviOntology/Sources/RuuviOntologySQLite/RuuviTagLatestDataSQLite.swift b/Packages/RuuviOntology/Sources/RuuviOntologySQLite/RuuviTagLatestDataSQLite.swift index 9ab62c1f9..6e5b89f42 100644 --- a/Packages/RuuviOntology/Sources/RuuviOntologySQLite/RuuviTagLatestDataSQLite.swift +++ b/Packages/RuuviOntology/Sources/RuuviOntologySQLite/RuuviTagLatestDataSQLite.swift @@ -1,7 +1,6 @@ import Foundation import GRDB import Humidity -import RuuviOntology public struct RuuviTagLatestDataSQLite: RuuviTagSensorRecord { public var id: String diff --git a/Packages/RuuviOntology/Sources/RuuviOntologySQLite/RuuviTagSQLite.swift b/Packages/RuuviOntology/Sources/RuuviOntologySQLite/RuuviTagSQLite.swift index 053f727e8..0bba62ac2 100644 --- a/Packages/RuuviOntology/Sources/RuuviOntologySQLite/RuuviTagSQLite.swift +++ b/Packages/RuuviOntology/Sources/RuuviOntologySQLite/RuuviTagSQLite.swift @@ -1,6 +1,5 @@ import Foundation import GRDB -import RuuviOntology public struct RuuviTagSQLite: RuuviTagSensor { public var id: String diff --git a/Packages/RuuviOntology/Sources/RuuviOntologySQLite/RuuviTagSensorRecord+RuuviTagDataSQLite.swift b/Packages/RuuviOntology/Sources/RuuviOntologySQLite/RuuviTagSensorRecord+RuuviTagDataSQLite.swift index 101b32791..17ca93aaa 100644 --- a/Packages/RuuviOntology/Sources/RuuviOntologySQLite/RuuviTagSensorRecord+RuuviTagDataSQLite.swift +++ b/Packages/RuuviOntology/Sources/RuuviOntologySQLite/RuuviTagSensorRecord+RuuviTagDataSQLite.swift @@ -1,5 +1,4 @@ import Foundation -import RuuviOntology public extension RuuviTagSensorRecord { var sqlite: RuuviTagDataSQLite { diff --git a/Packages/RuuviOntology/Sources/RuuviOntologySQLite/SensorSettingsSQLite.swift b/Packages/RuuviOntology/Sources/RuuviOntologySQLite/SensorSettingsSQLite.swift index d6c099b8e..1043b905c 100644 --- a/Packages/RuuviOntology/Sources/RuuviOntologySQLite/SensorSettingsSQLite.swift +++ b/Packages/RuuviOntology/Sources/RuuviOntologySQLite/SensorSettingsSQLite.swift @@ -1,6 +1,5 @@ import Foundation import GRDB -import RuuviOntology public struct SensorSettingsSQLite: SensorSettings { public var luid: LocalIdentifier? diff --git a/Packages/RuuviPersistence/Sources/RuuviPersistenceRealm/RuuviPersistenceRealm.swift b/Packages/RuuviPersistence/Sources/RuuviPersistenceRealm/RuuviPersistenceRealm.swift index cfec0c094..1f49b26b7 100644 --- a/Packages/RuuviPersistence/Sources/RuuviPersistenceRealm/RuuviPersistenceRealm.swift +++ b/Packages/RuuviPersistence/Sources/RuuviPersistenceRealm/RuuviPersistenceRealm.swift @@ -5,7 +5,6 @@ import Future import RealmSwift import RuuviContext import RuuviOntology -import RuuviPersistence #if canImport(FirebaseCrashlytics) // TODO: @rinat eliminate import FirebaseCrashlytics #endif diff --git a/Packages/RuuviPersistence/Sources/RuuviPersistenceSQLite/RuuviPersistenceSQLite.swift b/Packages/RuuviPersistence/Sources/RuuviPersistenceSQLite/RuuviPersistenceSQLite.swift index 6da3727f2..6aad4eaac 100644 --- a/Packages/RuuviPersistence/Sources/RuuviPersistenceSQLite/RuuviPersistenceSQLite.swift +++ b/Packages/RuuviPersistence/Sources/RuuviPersistenceSQLite/RuuviPersistenceSQLite.swift @@ -5,7 +5,6 @@ import Future import GRDB import RuuviContext import RuuviOntology -import RuuviPersistence #if canImport(FirebaseCrashlytics) import FirebaseCrashlytics #endif diff --git a/Packages/RuuviPool/Sources/RuuviPoolCoordinator/RuuviPoolCoordinator.swift b/Packages/RuuviPool/Sources/RuuviPoolCoordinator/RuuviPoolCoordinator.swift index f30a8a47d..ed66fc45d 100644 --- a/Packages/RuuviPool/Sources/RuuviPoolCoordinator/RuuviPoolCoordinator.swift +++ b/Packages/RuuviPool/Sources/RuuviPoolCoordinator/RuuviPoolCoordinator.swift @@ -3,7 +3,6 @@ import Future import RuuviLocal import RuuviOntology import RuuviPersistence -import RuuviPool // swiftlint:disable:next type_body_length final class RuuviPoolCoordinator: RuuviPool { diff --git a/Packages/RuuviPool/Sources/RuuviPoolCoordinator/RuuviPoolFactoryCoordinator.swift b/Packages/RuuviPool/Sources/RuuviPoolCoordinator/RuuviPoolFactoryCoordinator.swift index 6d627bca5..61e316c53 100644 --- a/Packages/RuuviPool/Sources/RuuviPoolCoordinator/RuuviPoolFactoryCoordinator.swift +++ b/Packages/RuuviPool/Sources/RuuviPoolCoordinator/RuuviPoolFactoryCoordinator.swift @@ -1,7 +1,6 @@ import Foundation import RuuviLocal import RuuviPersistence -import RuuviPool public final class RuuviPoolFactoryCoordinator: RuuviPoolFactory { public init() {} diff --git a/Packages/RuuviReactor/Sources/RuuviReactorImpl/RuuviReactorFactoryImpl.swift b/Packages/RuuviReactor/Sources/RuuviReactorImpl/RuuviReactorFactoryImpl.swift index 3887ce40e..cfa55b8f2 100644 --- a/Packages/RuuviReactor/Sources/RuuviReactorImpl/RuuviReactorFactoryImpl.swift +++ b/Packages/RuuviReactor/Sources/RuuviReactorImpl/RuuviReactorFactoryImpl.swift @@ -1,7 +1,6 @@ import Foundation import RuuviContext import RuuviPersistence -import RuuviReactor public final class RuuviReactorFactoryImpl: RuuviReactorFactory { public init() {} diff --git a/Packages/RuuviReactor/Sources/RuuviReactorImpl/RuuviReactorImpl.swift b/Packages/RuuviReactor/Sources/RuuviReactorImpl/RuuviReactorImpl.swift index 693cd7f0b..0df62d43a 100644 --- a/Packages/RuuviReactor/Sources/RuuviReactorImpl/RuuviReactorImpl.swift +++ b/Packages/RuuviReactor/Sources/RuuviReactorImpl/RuuviReactorImpl.swift @@ -4,7 +4,6 @@ import GRDB import RuuviContext import RuuviOntology import RuuviPersistence -import RuuviReactor #if canImport(RuuviOntologyRealm) import RuuviOntologyRealm #endif diff --git a/Packages/RuuviRepository/Sources/RuuviRepositoryCoordinator/RuuviRepositoryCoordinator.swift b/Packages/RuuviRepository/Sources/RuuviRepositoryCoordinator/RuuviRepositoryCoordinator.swift index 4111e0b94..5c4e67238 100644 --- a/Packages/RuuviRepository/Sources/RuuviRepositoryCoordinator/RuuviRepositoryCoordinator.swift +++ b/Packages/RuuviRepository/Sources/RuuviRepositoryCoordinator/RuuviRepositoryCoordinator.swift @@ -2,7 +2,6 @@ import Foundation import Future import RuuviOntology import RuuviPool -import RuuviRepository import RuuviStorage final class RuuviRepositoryCoordinator: RuuviRepository { diff --git a/Packages/RuuviRepository/Sources/RuuviRepositoryCoordinator/RuuviRepositoryFactoryCoordinator.swift b/Packages/RuuviRepository/Sources/RuuviRepositoryCoordinator/RuuviRepositoryFactoryCoordinator.swift index ae7382e58..bb5808d76 100644 --- a/Packages/RuuviRepository/Sources/RuuviRepositoryCoordinator/RuuviRepositoryFactoryCoordinator.swift +++ b/Packages/RuuviRepository/Sources/RuuviRepositoryCoordinator/RuuviRepositoryFactoryCoordinator.swift @@ -1,6 +1,5 @@ import Foundation import RuuviPool -import RuuviRepository import RuuviStorage public final class RuuviRepositoryFactoryCoordinator: RuuviRepositoryFactory { diff --git a/Packages/RuuviService/Sources/RuuviServiceAlert/AlertPersistence/UserDefaults/AlertPersistenceUserDefaults.swift b/Packages/RuuviService/Sources/RuuviServiceAlert/AlertPersistence/UserDefaults/AlertPersistenceUserDefaults.swift index 91ab2c1d7..4cb0a114f 100644 --- a/Packages/RuuviService/Sources/RuuviServiceAlert/AlertPersistence/UserDefaults/AlertPersistenceUserDefaults.swift +++ b/Packages/RuuviService/Sources/RuuviServiceAlert/AlertPersistence/UserDefaults/AlertPersistenceUserDefaults.swift @@ -273,31 +273,31 @@ class AlertPersistenceUserDefaults: AlertPersistence { func remove(type: AlertType, for uuid: String) { switch type { - case let .temperature(lower, upper): + case .temperature: prefs.removeObject(forKey: temperatureAlertIsOnUDKeyPrefix + uuid) prefs.removeObject(forKey: temperatureLowerBoundUDKeyPrefix + uuid) prefs.removeObject(forKey: temperatureUpperBoundUDKeyPrefix + uuid) prefs.removeObject(forKey: temperatureAlertIsTriggeredUDKeyPrefix + uuid) prefs.removeObject(forKey: temperatureAlertTriggeredAtUDKeyPrefix + uuid) - case let .relativeHumidity(lower, upper): + case .relativeHumidity: prefs.removeObject(forKey: relativeHumidityAlertIsOnUDKeyPrefix + uuid) prefs.removeObject(forKey: relativeHumidityLowerBoundUDKeyPrefix + uuid) prefs.removeObject(forKey: relativeHumidityUpperBoundUDKeyPrefix + uuid) prefs.removeObject(forKey: relativeHumidityAlertIsTriggeredUDKeyPrefix + uuid) prefs.removeObject(forKey: relativeHumidityAlertTriggeredAtUDKeyPrefix + uuid) - case let .humidity(lower, upper): + case .humidity: prefs.removeObject(forKey: humidityAlertIsOnUDKeyPrefix + uuid) prefs.removeObject(forKey: humidityLowerBoundUDKeyPrefix + uuid) prefs.removeObject(forKey: humidityUpperBoundUDKeyPrefix + uuid) prefs.removeObject(forKey: humidityAlertIsTriggeredUDKeyPrefix + uuid) prefs.removeObject(forKey: humidityAlertTriggeredAtUDKeyPrefix + uuid) - case let .pressure(lower, upper): + case .pressure: prefs.removeObject(forKey: pressureAlertIsOnUDKeyPrefix + uuid) prefs.removeObject(forKey: pressureLowerBoundUDKeyPrefix + uuid) prefs.removeObject(forKey: pressureUpperBoundUDKeyPrefix + uuid) prefs.removeObject(forKey: pressureAlertIsTriggeredUDKeyPrefix + uuid) prefs.removeObject(forKey: pressureAlertTriggeredAtUDKeyPrefix + uuid) - case let .signal(lower, upper): + case .signal: prefs.removeObject(forKey: signalAlertIsOnUDKeyPrefix + uuid) prefs.removeObject(forKey: signalLowerBoundUDKeyPrefix + uuid) prefs.removeObject(forKey: signalUpperBoundUDKeyPrefix + uuid) @@ -305,12 +305,12 @@ class AlertPersistenceUserDefaults: AlertPersistence { prefs.removeObject(forKey: signalAlertTriggeredAtUDKeyPrefix + uuid) case .connection: prefs.removeObject(forKey: connectionAlertIsOnUDKeyPrefix + uuid) - case let .cloudConnection(unseenDuration): + case .cloudConnection: prefs.removeObject(forKey: cloudConnectionAlertIsOnUDKeyPrefix + uuid) prefs.removeObject(forKey: cloudConnectionAlertUnseenDurationUDPrefix + uuid) prefs.removeObject(forKey: cloudConnectionAlertIsTriggeredUDKeyPrefix + uuid) prefs.removeObject(forKey: cloudConnectionAlertTriggeredAtUDKeyPrefix + uuid) - case let .movement(last): + case .movement: prefs.removeObject(forKey: movementAlertIsOnUDKeyPrefix + uuid) prefs.removeObject(forKey: movementAlertCounterUDPrefix + uuid) prefs.removeObject(forKey: movementAlertIsTriggeredUDKeyPrefix + uuid) diff --git a/Packages/RuuviService/Sources/RuuviServiceAlert/AlertPersistence/UserDefaults/KeyedArchiver.swift b/Packages/RuuviService/Sources/RuuviServiceAlert/AlertPersistence/UserDefaults/KeyedArchiver.swift index 0706b7031..0f068ad20 100644 --- a/Packages/RuuviService/Sources/RuuviServiceAlert/AlertPersistence/UserDefaults/KeyedArchiver.swift +++ b/Packages/RuuviService/Sources/RuuviServiceAlert/AlertPersistence/UserDefaults/KeyedArchiver.swift @@ -2,18 +2,12 @@ import Foundation enum KeyedArchiver { static func archive(object: Any) -> Data? { - if #available(iOS 12.0, *) { - try? NSKeyedArchiver.archivedData(withRootObject: object, requiringSecureCoding: false) - } else { - NSKeyedArchiver.archivedData(withRootObject: object) - } + try? NSKeyedArchiver.archivedData(withRootObject: object, requiringSecureCoding: false) } static func unarchive(_ data: Data, with _: T.Type) -> T? { - if #available(iOS 12.0, *) { - return try? NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as? T - } else { - return NSKeyedUnarchiver.unarchiveObject(with: data) as? T - } + let unarchiver = try? NSKeyedUnarchiver(forReadingFrom: data) + unarchiver?.requiresSecureCoding = false + return unarchiver?.decodeObject(forKey: NSKeyedArchiveRootObjectKey) as? T } } diff --git a/Packages/RuuviService/Sources/RuuviServiceAlert/RuuviServiceAlertImpl.swift b/Packages/RuuviService/Sources/RuuviServiceAlert/RuuviServiceAlertImpl.swift index 27816b780..bb9f40101 100644 --- a/Packages/RuuviService/Sources/RuuviServiceAlert/RuuviServiceAlertImpl.swift +++ b/Packages/RuuviService/Sources/RuuviServiceAlert/RuuviServiceAlertImpl.swift @@ -4,7 +4,6 @@ import Future import RuuviCloud import RuuviLocal import RuuviOntology -import RuuviService // MARK: - RuuviTag @@ -1285,7 +1284,7 @@ public extension RuuviServiceAlertImpl { } func signalDescription(for uuid: String) -> String? { - signalDescription(for: uuid) + alertPersistence.signalDescription(for: uuid) } } diff --git a/Packages/RuuviService/Sources/RuuviServiceAppSettings/RuuviServiceAppSettingsImpl.swift b/Packages/RuuviService/Sources/RuuviServiceAppSettings/RuuviServiceAppSettingsImpl.swift index e339fa5c6..cb99c0ce4 100644 --- a/Packages/RuuviService/Sources/RuuviServiceAppSettings/RuuviServiceAppSettingsImpl.swift +++ b/Packages/RuuviService/Sources/RuuviServiceAppSettings/RuuviServiceAppSettingsImpl.swift @@ -3,7 +3,6 @@ import Future import RuuviCloud import RuuviLocal import RuuviOntology -import RuuviService public final class RuuviServiceAppSettingsImpl: RuuviServiceAppSettings { private let cloud: RuuviCloud diff --git a/Packages/RuuviService/Sources/RuuviServiceAuth/RuuviServiceAuthImpl.swift b/Packages/RuuviService/Sources/RuuviServiceAuth/RuuviServiceAuthImpl.swift index a39e2d810..5725beb93 100644 --- a/Packages/RuuviService/Sources/RuuviServiceAuth/RuuviServiceAuthImpl.swift +++ b/Packages/RuuviService/Sources/RuuviServiceAuth/RuuviServiceAuthImpl.swift @@ -3,7 +3,6 @@ import Future import RuuviLocal import RuuviOntology import RuuviPool -import RuuviService import RuuviStorage import RuuviUser diff --git a/Packages/RuuviService/Sources/RuuviServiceCloudNotification/RuuviServiceCloudNotificationImpl.swift b/Packages/RuuviService/Sources/RuuviServiceCloudNotification/RuuviServiceCloudNotificationImpl.swift index 64f7498cf..8aa448d15 100644 --- a/Packages/RuuviService/Sources/RuuviServiceCloudNotification/RuuviServiceCloudNotificationImpl.swift +++ b/Packages/RuuviService/Sources/RuuviServiceCloudNotification/RuuviServiceCloudNotificationImpl.swift @@ -5,7 +5,6 @@ import RuuviCore import RuuviLocal import RuuviOntology import RuuviPool -import RuuviService import RuuviStorage import RuuviUser #if canImport(RuuviCloudApi) diff --git a/Packages/RuuviService/Sources/RuuviServiceCloudSync/RuuviServiceCloudSyncImpl.swift b/Packages/RuuviService/Sources/RuuviServiceCloudSync/RuuviServiceCloudSyncImpl.swift index 56e3db61f..43660f93b 100644 --- a/Packages/RuuviService/Sources/RuuviServiceCloudSync/RuuviServiceCloudSyncImpl.swift +++ b/Packages/RuuviService/Sources/RuuviServiceCloudSync/RuuviServiceCloudSyncImpl.swift @@ -5,7 +5,6 @@ import RuuviLocal import RuuviOntology import RuuviPool import RuuviRepository -import RuuviService import RuuviStorage import UIKit // swiftlint:disable file_length @@ -216,7 +215,7 @@ public final class RuuviServiceCloudSyncImpl: RuuviServiceCloudSync { switch error { case let .ruuviCloud(cloudError): switch cloudError { - case let .api(.unauthorized): + case .api(.unauthorized): self?.postNotification() default: break } diff --git a/Packages/RuuviService/Sources/RuuviServiceCloudSync/RuuviServiceCloudSyncRecordsOperation.swift b/Packages/RuuviService/Sources/RuuviServiceCloudSync/RuuviServiceCloudSyncRecordsOperation.swift index 8c38942eb..612bba4ed 100644 --- a/Packages/RuuviService/Sources/RuuviServiceCloudSync/RuuviServiceCloudSyncRecordsOperation.swift +++ b/Packages/RuuviService/Sources/RuuviServiceCloudSync/RuuviServiceCloudSyncRecordsOperation.swift @@ -3,7 +3,6 @@ import RuuviCloud import RuuviLocal import RuuviOntology import RuuviRepository -import RuuviService final class RuuviServiceCloudSyncRecordsOperation: AsyncOperation { var sensor: RuuviTagSensor diff --git a/Packages/RuuviService/Sources/RuuviServiceExport/RuuviServiceExportImpl.swift b/Packages/RuuviService/Sources/RuuviServiceExport/RuuviServiceExportImpl.swift index 1c38d94e8..ef23add29 100644 --- a/Packages/RuuviService/Sources/RuuviServiceExport/RuuviServiceExportImpl.swift +++ b/Packages/RuuviService/Sources/RuuviServiceExport/RuuviServiceExportImpl.swift @@ -3,7 +3,6 @@ import Future import Humidity import RuuviLocal import RuuviOntology -import RuuviService import RuuviStorage public final class RuuviServiceExportImpl: RuuviServiceExport { @@ -113,7 +112,7 @@ extension RuuviServiceExportImpl { pressure = toString(p, format: "%.2f") } - var rssi: String = if let rssiValue = log.rssi { + let rssi: String = if let rssiValue = log.rssi { "\(rssiValue)" } else { self.emptyValueString @@ -131,13 +130,13 @@ extension RuuviServiceExportImpl { self.emptyValueString } - var measurementSequenceNumber: String = if let msn = log.measurementSequenceNumber { + let measurementSequenceNumber: String = if let msn = log.measurementSequenceNumber { "\(msn)" } else { self.emptyValueString } - var txPower: String = if let tx = log.txPower { + let txPower: String = if let tx = log.txPower { "\(tx)" } else { self.emptyValueString diff --git a/Packages/RuuviService/Sources/RuuviServiceFactory/RuuviServiceFactory.swift b/Packages/RuuviService/Sources/RuuviServiceFactory/RuuviServiceFactory.swift index 122e273d8..fb77e0d8d 100644 --- a/Packages/RuuviService/Sources/RuuviServiceFactory/RuuviServiceFactory.swift +++ b/Packages/RuuviService/Sources/RuuviServiceFactory/RuuviServiceFactory.swift @@ -4,7 +4,6 @@ import RuuviCore import RuuviLocal import RuuviPool import RuuviRepository -import RuuviService import RuuviStorage import RuuviUser #if canImport(RuuviServiceCloudSync) diff --git a/Packages/RuuviService/Sources/RuuviServiceGATT/Operations/RuuviTagReadLogsOperation.swift b/Packages/RuuviService/Sources/RuuviServiceGATT/Operations/RuuviTagReadLogsOperation.swift index 690819818..b75b039da 100644 --- a/Packages/RuuviService/Sources/RuuviServiceGATT/Operations/RuuviTagReadLogsOperation.swift +++ b/Packages/RuuviService/Sources/RuuviServiceGATT/Operations/RuuviTagReadLogsOperation.swift @@ -2,7 +2,6 @@ import BTKit import Foundation import RuuviOntology import RuuviPool -import RuuviService final class RuuviTagReadLogsOperation: AsyncOperation { var uuid: String diff --git a/Packages/RuuviService/Sources/RuuviServiceGATT/Queue/GATTServiceQueue.swift b/Packages/RuuviService/Sources/RuuviServiceGATT/Queue/GATTServiceQueue.swift index 7f7613e91..f3ebe4918 100644 --- a/Packages/RuuviService/Sources/RuuviServiceGATT/Queue/GATTServiceQueue.swift +++ b/Packages/RuuviService/Sources/RuuviServiceGATT/Queue/GATTServiceQueue.swift @@ -3,7 +3,6 @@ import Foundation import Future import RuuviOntology import RuuviPool -import RuuviService public final class GATTServiceQueue: GATTService { private let ruuviPool: RuuviPool diff --git a/Packages/RuuviService/Sources/RuuviServiceMeasurement/RuuviServiceMeasurementImpl.swift b/Packages/RuuviService/Sources/RuuviServiceMeasurement/RuuviServiceMeasurementImpl.swift index f3ca5f90f..7a7ef3b92 100644 --- a/Packages/RuuviService/Sources/RuuviServiceMeasurement/RuuviServiceMeasurementImpl.swift +++ b/Packages/RuuviService/Sources/RuuviServiceMeasurement/RuuviServiceMeasurementImpl.swift @@ -3,7 +3,6 @@ import Foundation import Humidity import RuuviLocal import RuuviOntology -import RuuviService // TODO: - @priyonto - Improve the number formatter instances. public final class RuuviServiceMeasurementImpl: NSObject { var settings: RuuviLocalSettings { diff --git a/Packages/RuuviService/Sources/RuuviServiceOffsetCalibration/RuuviServiceAppOffsetCalibrationImpl.swift b/Packages/RuuviService/Sources/RuuviServiceOffsetCalibration/RuuviServiceAppOffsetCalibrationImpl.swift index e69151f42..20a5d2455 100644 --- a/Packages/RuuviService/Sources/RuuviServiceOffsetCalibration/RuuviServiceAppOffsetCalibrationImpl.swift +++ b/Packages/RuuviService/Sources/RuuviServiceOffsetCalibration/RuuviServiceAppOffsetCalibrationImpl.swift @@ -3,7 +3,6 @@ import Future import RuuviCloud import RuuviOntology import RuuviPool -import RuuviService public final class RuuviServiceAppOffsetCalibrationImpl: RuuviServiceOffsetCalibration { private let cloud: RuuviCloud diff --git a/Packages/RuuviService/Sources/RuuviServiceOwnership/RuuviServiceOwnershipImpl.swift b/Packages/RuuviService/Sources/RuuviServiceOwnership/RuuviServiceOwnershipImpl.swift index d8f4c1af7..5f9df21a0 100644 --- a/Packages/RuuviService/Sources/RuuviServiceOwnership/RuuviServiceOwnershipImpl.swift +++ b/Packages/RuuviService/Sources/RuuviServiceOwnership/RuuviServiceOwnershipImpl.swift @@ -4,7 +4,6 @@ import RuuviCloud import RuuviLocal import RuuviOntology import RuuviPool -import RuuviService import RuuviStorage import RuuviUser diff --git a/Packages/RuuviService/Sources/RuuviServiceSensorProperties/RuuviServiceSensorPropertiesImpl.swift b/Packages/RuuviService/Sources/RuuviServiceSensorProperties/RuuviServiceSensorPropertiesImpl.swift index 6d81ebb6f..cd0d8d615 100644 --- a/Packages/RuuviService/Sources/RuuviServiceSensorProperties/RuuviServiceSensorPropertiesImpl.swift +++ b/Packages/RuuviService/Sources/RuuviServiceSensorProperties/RuuviServiceSensorPropertiesImpl.swift @@ -5,7 +5,6 @@ import RuuviCore import RuuviLocal import RuuviOntology import RuuviPool -import RuuviService import UIKit public final class RuuviServiceSensorPropertiesImpl: RuuviServiceSensorProperties { diff --git a/Packages/RuuviService/Sources/RuuviServiceSensorRecords/RuuviServiceSensorRecordsImpl.swift b/Packages/RuuviService/Sources/RuuviServiceSensorRecords/RuuviServiceSensorRecordsImpl.swift index 046c3ec41..e02ddc6e7 100644 --- a/Packages/RuuviService/Sources/RuuviServiceSensorRecords/RuuviServiceSensorRecordsImpl.swift +++ b/Packages/RuuviService/Sources/RuuviServiceSensorRecords/RuuviServiceSensorRecordsImpl.swift @@ -3,7 +3,6 @@ import Future import RuuviLocal import RuuviOntology import RuuviPool -import RuuviService public final class RuuviServiceSensorRecordsImpl: RuuviServiceSensorRecords { private let pool: RuuviPool diff --git a/Packages/RuuviStorage/Sources/RuuviStorageCoordinator/RuuviStorageCoordinator.swift b/Packages/RuuviStorage/Sources/RuuviStorageCoordinator/RuuviStorageCoordinator.swift index c70c22645..62a9d441e 100644 --- a/Packages/RuuviStorage/Sources/RuuviStorageCoordinator/RuuviStorageCoordinator.swift +++ b/Packages/RuuviStorage/Sources/RuuviStorageCoordinator/RuuviStorageCoordinator.swift @@ -2,7 +2,6 @@ import Foundation import Future import RuuviOntology import RuuviPersistence -import RuuviStorage final class RuuviStorageCoordinator: RuuviStorage { private let sqlite: RuuviPersistence diff --git a/Packages/RuuviStorage/Sources/RuuviStorageCoordinator/RuuviStorageFactoryCoordinator.swift b/Packages/RuuviStorage/Sources/RuuviStorageCoordinator/RuuviStorageFactoryCoordinator.swift index 467af6a59..c141fcb6e 100644 --- a/Packages/RuuviStorage/Sources/RuuviStorageCoordinator/RuuviStorageFactoryCoordinator.swift +++ b/Packages/RuuviStorage/Sources/RuuviStorageCoordinator/RuuviStorageFactoryCoordinator.swift @@ -1,6 +1,5 @@ import Foundation import RuuviPersistence -import RuuviStorage public final class RuuviStorageFactoryCoordinator: RuuviStorageFactory { public init() {} diff --git a/Packages/RuuviUser/Sources/RuuviUserCoordinator/RuuviUserCoordinator.swift b/Packages/RuuviUser/Sources/RuuviUserCoordinator/RuuviUserCoordinator.swift index 4f1801831..5c2a71ded 100644 --- a/Packages/RuuviUser/Sources/RuuviUserCoordinator/RuuviUserCoordinator.swift +++ b/Packages/RuuviUser/Sources/RuuviUserCoordinator/RuuviUserCoordinator.swift @@ -1,5 +1,4 @@ import Foundation -import RuuviUser import WidgetKit final class RuuviUserCoordinator: RuuviUser { diff --git a/Packages/RuuviUser/Sources/RuuviUserCoordinator/RuuviUserFactoryCoordinator.swift b/Packages/RuuviUser/Sources/RuuviUserCoordinator/RuuviUserFactoryCoordinator.swift index 086a7d6b5..fc7b26792 100644 --- a/Packages/RuuviUser/Sources/RuuviUserCoordinator/RuuviUserFactoryCoordinator.swift +++ b/Packages/RuuviUser/Sources/RuuviUserCoordinator/RuuviUserFactoryCoordinator.swift @@ -1,6 +1,3 @@ -import Foundation -import RuuviUser - public final class RuuviUserFactoryCoordinator: RuuviUserFactory { public init() {} diff --git a/project_frameworks.yml b/project_frameworks.yml index 98ba56094..db74ff24e 100644 --- a/project_frameworks.yml +++ b/project_frameworks.yml @@ -296,6 +296,7 @@ targets: PROVISIONING_PROFILE_SPECIFIER: "match AdHoc com.ruuvi.station" Debug: CODE_SIGN_STYLE: Automatic + OTHER_LDFLAGS: -Xlinker -no_warn_duplicate_libraries Release: EXCLUDED_SOURCE_FILE_NAMES: "FLEX*" CODE_SIGN_IDENTITY: "iPhone Distribution" diff --git a/station/Classes/Presentation/Modules/About/View/AboutViewController.swift b/station/Classes/Presentation/Modules/About/View/AboutViewController.swift index fb3155b27..303ce0a26 100644 --- a/station/Classes/Presentation/Modules/About/View/AboutViewController.swift +++ b/station/Classes/Presentation/Modules/About/View/AboutViewController.swift @@ -41,6 +41,7 @@ extension AboutViewController { super.viewDidLoad() configureViews() setUpChangelogTapGesture() + localize() output.viewDidLoad() } diff --git a/station/Classes/Presentation/Modules/Dashboard/Background/View/UI/BackgroundSelectionViewController.swift b/station/Classes/Presentation/Modules/Dashboard/Background/View/UI/BackgroundSelectionViewController.swift index 43907f7f4..0252a1d75 100644 --- a/station/Classes/Presentation/Modules/Dashboard/Background/View/UI/BackgroundSelectionViewController.swift +++ b/station/Classes/Presentation/Modules/Dashboard/Background/View/UI/BackgroundSelectionViewController.swift @@ -55,6 +55,7 @@ extension BackgroundSelectionViewController { super.viewDidLoad() setUpUI() bindViewModel() + localize() output.viewDidLoad() } } diff --git a/station/Classes/Presentation/Modules/Dashboard/Cards/Presenter/CardsPresenter.swift b/station/Classes/Presentation/Modules/Dashboard/Cards/Presenter/CardsPresenter.swift index 6b8f85731..06211dc1a 100644 --- a/station/Classes/Presentation/Modules/Dashboard/Cards/Presenter/CardsPresenter.swift +++ b/station/Classes/Presentation/Modules/Dashboard/Cards/Presenter/CardsPresenter.swift @@ -1305,7 +1305,7 @@ extension CardsPresenter { for uuid: String, viewModel: CardsViewModel ) { - var observable: Observable = switch type { + let observable: Observable = switch type { case .temperature: viewModel.temperatureAlertMutedTill case .relativeHumidity: @@ -1334,7 +1334,7 @@ extension CardsPresenter { for uuid: String, viewModel: CardsViewModel ) { - var observable: Observable = switch type { + let observable: Observable = switch type { case .temperature: viewModel.isTemperatureAlertOn case .relativeHumidity: diff --git a/station/Classes/Presentation/Modules/Dashboard/Cards/View/UI/CardsViewController.swift b/station/Classes/Presentation/Modules/Dashboard/Cards/View/UI/CardsViewController.swift index 621143818..9143b34d5 100644 --- a/station/Classes/Presentation/Modules/Dashboard/Cards/View/UI/CardsViewController.swift +++ b/station/Classes/Presentation/Modules/Dashboard/Cards/View/UI/CardsViewController.swift @@ -210,6 +210,7 @@ extension CardsViewController { super.viewDidLoad() setUpUI() configureGestureViews() + localize() output.viewDidLoad() } diff --git a/station/Classes/Presentation/Modules/Dashboard/Charts/Presenter/TagChartsViewPresenter.swift b/station/Classes/Presentation/Modules/Dashboard/Charts/Presenter/TagChartsViewPresenter.swift index b790267c2..a5c5c06d0 100644 --- a/station/Classes/Presentation/Modules/Dashboard/Charts/Presenter/TagChartsViewPresenter.swift +++ b/station/Classes/Presentation/Modules/Dashboard/Charts/Presenter/TagChartsViewPresenter.swift @@ -846,7 +846,7 @@ extension TagChartsViewPresenter { var value: Double? switch type { case .temperature: - var temp: Temperature? + let temp: Temperature? // Backword compatibility for the users who used earlier versions than 0.7.7 // 1: If local record has temperature offset added, calculate and get original temp data // 2: Apply current sensor settings @@ -859,7 +859,7 @@ extension TagChartsViewPresenter { } value = measurementService.double(for: temp) ?? 0 case .humidity: - var humidity: Humidity? + let humidity: Humidity? // Backword compatibility for the users who used earlier versions than 0.7.7 // 1: If local record has humidity offset added, calculate and get original humidity data // 2: Apply current sensor settings @@ -876,7 +876,7 @@ extension TagChartsViewPresenter { isDecimal: false ) case .pressure: - var pressure: Pressure? + let pressure: Pressure? // Backword compatibility for the users who used earlier versions than 0.7.7 // 1: If local record has pressure offset added, calculate and get original pressure data // 2: Apply current sensor settings diff --git a/station/Classes/Presentation/Modules/Dashboard/Charts/View/UI/TagChartsView.swift b/station/Classes/Presentation/Modules/Dashboard/Charts/View/UI/TagChartsView.swift index dfcb29db0..7c5be0f38 100644 --- a/station/Classes/Presentation/Modules/Dashboard/Charts/View/UI/TagChartsView.swift +++ b/station/Classes/Presentation/Modules/Dashboard/Charts/View/UI/TagChartsView.swift @@ -44,6 +44,7 @@ class TagChartsView: LineChartView { delegate = self addSubviews() configure() + localize() } @available(*, unavailable) diff --git a/station/Classes/Presentation/Modules/Dashboard/Charts/View/UI/TagChartsViewController.swift b/station/Classes/Presentation/Modules/Dashboard/Charts/View/UI/TagChartsViewController.swift index 9d21ccd2c..b67a3bac8 100644 --- a/station/Classes/Presentation/Modules/Dashboard/Charts/View/UI/TagChartsViewController.swift +++ b/station/Classes/Presentation/Modules/Dashboard/Charts/View/UI/TagChartsViewController.swift @@ -194,6 +194,7 @@ class TagChartsViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() setUpUI() + localize() output.viewDidLoad() } @@ -797,7 +798,7 @@ extension TagChartsViewController: TagChartsViewInput { syncStatusLabel.text = RuuviLocalization.TagCharts.Status.serving case let .reading(points): let format = RuuviLocalization.readingHistoryX - syncStatusLabel.text = String(format: format, Float(points)) + syncStatusLabel.text = format(Float(points)) case .disconnecting: syncStatusLabel.text = RuuviLocalization.TagCharts.Status.disconnecting case .success: @@ -1240,7 +1241,7 @@ private extension Int { case 10: RuuviLocalization.day10 default: - String(format: RuuviLocalization.dayX, self) + RuuviLocalization.dayX(Float(self)) // TOOD: @rinat check } } } diff --git a/station/Classes/Presentation/Modules/Dashboard/Home/Presenter/DashboardPresenter.swift b/station/Classes/Presentation/Modules/Dashboard/Home/Presenter/DashboardPresenter.swift index 1ae69ce52..417c29cf7 100644 --- a/station/Classes/Presentation/Modules/Dashboard/Home/Presenter/DashboardPresenter.swift +++ b/station/Classes/Presentation/Modules/Dashboard/Home/Presenter/DashboardPresenter.swift @@ -1746,7 +1746,7 @@ extension DashboardPresenter { for uuid: String, viewModel: CardsViewModel ) { - var observable: Observable = switch type { + let observable: Observable = switch type { case .temperature: viewModel.temperatureAlertMutedTill case .relativeHumidity: @@ -1776,7 +1776,7 @@ extension DashboardPresenter { for uuid: String, viewModel: CardsViewModel ) { - var observable: Observable = switch type { + let observable: Observable = switch type { case .temperature: viewModel.isTemperatureAlertOn case .relativeHumidity: diff --git a/station/Classes/Presentation/Modules/Dashboard/Home/View/DashboardViewController.swift b/station/Classes/Presentation/Modules/Dashboard/Home/View/DashboardViewController.swift index 54b170355..a920b3106 100644 --- a/station/Classes/Presentation/Modules/Dashboard/Home/View/DashboardViewController.swift +++ b/station/Classes/Presentation/Modules/Dashboard/Home/View/DashboardViewController.swift @@ -169,6 +169,7 @@ extension DashboardViewController { super.viewDidLoad() setUpUI() configureRestartAnimationsOnAppDidBecomeActive() + localize() output.viewDidLoad() } diff --git a/station/Classes/Presentation/Modules/Menu/View/Table/MenuTableEmbededViewController.swift b/station/Classes/Presentation/Modules/Menu/View/Table/MenuTableEmbededViewController.swift index 8e6fcec53..1a8763fdb 100644 --- a/station/Classes/Presentation/Modules/Menu/View/Table/MenuTableEmbededViewController.swift +++ b/station/Classes/Presentation/Modules/Menu/View/Table/MenuTableEmbededViewController.swift @@ -36,6 +36,11 @@ extension MenuTableEmbededViewController { // MARK: - View lifecycle extension MenuTableEmbededViewController { + override func viewDidLoad() { + super.viewDidLoad() + localize() + } + override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) output.viewWillAppear() diff --git a/station/Classes/Presentation/Modules/My Ruuvi/View/MyRuuviAccountViewController.swift b/station/Classes/Presentation/Modules/My Ruuvi/View/MyRuuviAccountViewController.swift index 6af673f20..9dd7a466d 100644 --- a/station/Classes/Presentation/Modules/My Ruuvi/View/MyRuuviAccountViewController.swift +++ b/station/Classes/Presentation/Modules/My Ruuvi/View/MyRuuviAccountViewController.swift @@ -20,6 +20,7 @@ class MyRuuviAccountViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() configureViews() + localize() output.viewDidLoad() } diff --git a/station/Classes/Presentation/Modules/Settings/Module/View/Table/SettingsTableViewController.swift b/station/Classes/Presentation/Modules/Settings/Module/View/Table/SettingsTableViewController.swift index ed372aa76..42187f16b 100644 --- a/station/Classes/Presentation/Modules/Settings/Module/View/Table/SettingsTableViewController.swift +++ b/station/Classes/Presentation/Modules/Settings/Module/View/Table/SettingsTableViewController.swift @@ -124,6 +124,7 @@ extension SettingsTableViewController { super.viewDidLoad() updateNavBarTitleFont() updateUI() + localize() output.viewDidLoad() becomeFirstResponder() } diff --git a/station/Classes/Presentation/Modules/Settings/Submodules/Appearance/Selection/View/UI/ASSelectionTableViewController.swift b/station/Classes/Presentation/Modules/Settings/Submodules/Appearance/Selection/View/UI/ASSelectionTableViewController.swift index b7d0df9dd..c53442d60 100644 --- a/station/Classes/Presentation/Modules/Settings/Submodules/Appearance/Selection/View/UI/ASSelectionTableViewController.swift +++ b/station/Classes/Presentation/Modules/Settings/Submodules/Appearance/Selection/View/UI/ASSelectionTableViewController.swift @@ -28,6 +28,7 @@ extension ASSelectionTableViewController { override func viewDidLoad() { super.viewDidLoad() setUpUI() + localize() output.viewDidLoad() } } diff --git a/station/Classes/Presentation/Modules/Settings/Submodules/Appearance/View/UI/AppearanceSettingsTableViewController.swift b/station/Classes/Presentation/Modules/Settings/Submodules/Appearance/View/UI/AppearanceSettingsTableViewController.swift index 5428b946a..3c7882c9a 100644 --- a/station/Classes/Presentation/Modules/Settings/Submodules/Appearance/View/UI/AppearanceSettingsTableViewController.swift +++ b/station/Classes/Presentation/Modules/Settings/Submodules/Appearance/View/UI/AppearanceSettingsTableViewController.swift @@ -28,6 +28,7 @@ extension AppearanceSettingsTableViewController { override func viewDidLoad() { super.viewDidLoad() setUpUI() + localize() output.viewDidLoad() } } diff --git a/station/Classes/Presentation/Modules/Settings/Submodules/Defaults/View/DefaultsViewController.swift b/station/Classes/Presentation/Modules/Settings/Submodules/Defaults/View/DefaultsViewController.swift index c87c73e10..d9926f2b8 100644 --- a/station/Classes/Presentation/Modules/Settings/Submodules/Defaults/View/DefaultsViewController.swift +++ b/station/Classes/Presentation/Modules/Settings/Submodules/Defaults/View/DefaultsViewController.swift @@ -53,6 +53,7 @@ extension DefaultsViewController { override func viewDidLoad() { super.viewDidLoad() configureViews() + localize() } override func shouldPerformSegue(withIdentifier identifier: String, sender _: Any?) -> Bool { diff --git a/station/Classes/Presentation/Modules/Settings/Submodules/Defaults/View/Table/DefaultsTableViewController.swift b/station/Classes/Presentation/Modules/Settings/Submodules/Defaults/View/Table/DefaultsTableViewController.swift index 68f217505..310337645 100644 --- a/station/Classes/Presentation/Modules/Settings/Submodules/Defaults/View/Table/DefaultsTableViewController.swift +++ b/station/Classes/Presentation/Modules/Settings/Submodules/Defaults/View/Table/DefaultsTableViewController.swift @@ -29,7 +29,12 @@ extension DefaultsTableViewController: DefaultsViewInput { // MARK: - View lifecycle -extension DefaultsTableViewController {} +extension DefaultsTableViewController { + override func viewDidLoad() { + super.viewDidLoad() + localize() + } +} // MARK: - UITableViewDataSource diff --git a/station/Classes/Presentation/Modules/Settings/Submodules/Devices/View/UI/DevicesTableViewController.swift b/station/Classes/Presentation/Modules/Settings/Submodules/Devices/View/UI/DevicesTableViewController.swift index 45be1de76..67c160e24 100644 --- a/station/Classes/Presentation/Modules/Settings/Submodules/Devices/View/UI/DevicesTableViewController.swift +++ b/station/Classes/Presentation/Modules/Settings/Submodules/Devices/View/UI/DevicesTableViewController.swift @@ -27,6 +27,7 @@ extension DevicesTableViewController { override func viewDidLoad() { super.viewDidLoad() setUpTableView() + localize() output.viewDidLoad() } diff --git a/station/Classes/Presentation/Modules/Settings/Submodules/Heartbeat/View/HeartbeatViewController.swift b/station/Classes/Presentation/Modules/Settings/Submodules/Heartbeat/View/HeartbeatViewController.swift index b13649bb9..7d4fa1dad 100644 --- a/station/Classes/Presentation/Modules/Settings/Submodules/Heartbeat/View/HeartbeatViewController.swift +++ b/station/Classes/Presentation/Modules/Settings/Submodules/Heartbeat/View/HeartbeatViewController.swift @@ -41,6 +41,7 @@ extension HeartbeatViewController { override func viewDidLoad() { super.viewDidLoad() configureViews() + localize() } override func shouldPerformSegue(withIdentifier identifier: String, sender _: Any?) -> Bool { diff --git a/station/Classes/Presentation/Modules/Settings/Submodules/Heartbeat/View/Table/HeartbeatTableViewController.swift b/station/Classes/Presentation/Modules/Settings/Submodules/Heartbeat/View/Table/HeartbeatTableViewController.swift index 842b78e95..4aad330ad 100644 --- a/station/Classes/Presentation/Modules/Settings/Submodules/Heartbeat/View/Table/HeartbeatTableViewController.swift +++ b/station/Classes/Presentation/Modules/Settings/Submodules/Heartbeat/View/Table/HeartbeatTableViewController.swift @@ -52,6 +52,7 @@ extension HeartbeatTableViewController { super.viewDidLoad() bindViewModel() updateUIComponent() + localize() } } diff --git a/station/Classes/Presentation/Modules/Settings/Submodules/Notifications/Selection/View/UI/PushAlertSoundSelectionTableViewController.swift b/station/Classes/Presentation/Modules/Settings/Submodules/Notifications/Selection/View/UI/PushAlertSoundSelectionTableViewController.swift index 76f5a24e8..b7ada4f69 100644 --- a/station/Classes/Presentation/Modules/Settings/Submodules/Notifications/Selection/View/UI/PushAlertSoundSelectionTableViewController.swift +++ b/station/Classes/Presentation/Modules/Settings/Submodules/Notifications/Selection/View/UI/PushAlertSoundSelectionTableViewController.swift @@ -38,6 +38,7 @@ extension PushAlertSoundSelectionTableViewController { override func viewDidLoad() { super.viewDidLoad() setUpUI() + localize() output.viewDidLoad() } } diff --git a/station/Classes/Presentation/Modules/Settings/Submodules/Notifications/View/UI/NotificationsSettingsTableViewController.swift b/station/Classes/Presentation/Modules/Settings/Submodules/Notifications/View/UI/NotificationsSettingsTableViewController.swift index dac9c4d8d..300c701e3 100644 --- a/station/Classes/Presentation/Modules/Settings/Submodules/Notifications/View/UI/NotificationsSettingsTableViewController.swift +++ b/station/Classes/Presentation/Modules/Settings/Submodules/Notifications/View/UI/NotificationsSettingsTableViewController.swift @@ -30,6 +30,7 @@ extension NotificationsSettingsTableViewController { override func viewDidLoad() { super.viewDidLoad() setUpUI() + localize() output?.viewDidLoad() } } diff --git a/station/Classes/Presentation/Modules/Settings/Submodules/Ruuvi Cloud/View/UI/RuuviCloudTableViewController.swift b/station/Classes/Presentation/Modules/Settings/Submodules/Ruuvi Cloud/View/UI/RuuviCloudTableViewController.swift index 912edbcd0..99188f8c1 100644 --- a/station/Classes/Presentation/Modules/Settings/Submodules/Ruuvi Cloud/View/UI/RuuviCloudTableViewController.swift +++ b/station/Classes/Presentation/Modules/Settings/Submodules/Ruuvi Cloud/View/UI/RuuviCloudTableViewController.swift @@ -28,6 +28,7 @@ extension RuuviCloudTableViewController { override func viewDidLoad() { super.viewDidLoad() setUpUI() + localize() output.viewDidLoad() } diff --git a/station/Classes/Presentation/Modules/Settings/Submodules/Selection/View/Table/SelectionTableViewController.swift b/station/Classes/Presentation/Modules/Settings/Submodules/Selection/View/Table/SelectionTableViewController.swift index 45c4cb226..3e7bcbd6b 100644 --- a/station/Classes/Presentation/Modules/Settings/Submodules/Selection/View/Table/SelectionTableViewController.swift +++ b/station/Classes/Presentation/Modules/Settings/Submodules/Selection/View/Table/SelectionTableViewController.swift @@ -48,6 +48,7 @@ extension SelectionTableViewController: SelectionViewInput { extension SelectionTableViewController { override func viewDidLoad() { super.viewDidLoad() + localize() output.viewDidLoad() updateUI() } diff --git a/station/Classes/Presentation/Modules/Settings/Submodules/Unit Settings/View/Table/UnitSettingsTableViewController.swift b/station/Classes/Presentation/Modules/Settings/Submodules/Unit Settings/View/Table/UnitSettingsTableViewController.swift index 6c5d8b809..ece0c480b 100644 --- a/station/Classes/Presentation/Modules/Settings/Submodules/Unit Settings/View/Table/UnitSettingsTableViewController.swift +++ b/station/Classes/Presentation/Modules/Settings/Submodules/Unit Settings/View/Table/UnitSettingsTableViewController.swift @@ -67,6 +67,7 @@ extension UnitSettingsTableViewController: UnitSettingsViewInput { extension UnitSettingsTableViewController { override func viewDidLoad() { super.viewDidLoad() + localize() output.viewDidLoad() updateUI() } diff --git a/station/Classes/Presentation/Modules/Share/View/ViewController/ShareViewController.swift b/station/Classes/Presentation/Modules/Share/View/ViewController/ShareViewController.swift index 066df855c..ee90bde01 100644 --- a/station/Classes/Presentation/Modules/Share/View/ViewController/ShareViewController.swift +++ b/station/Classes/Presentation/Modules/Share/View/ViewController/ShareViewController.swift @@ -52,6 +52,7 @@ class ShareViewController: UITableViewController { super.viewDidLoad() configureTableView() setupCustomBackButton() + localize() output.viewDidLoad() } diff --git a/station/Classes/Presentation/Modules/SignIn/Submodules/Sign In Benefits/View/SignInBenefitsViewController.swift b/station/Classes/Presentation/Modules/SignIn/Submodules/Sign In Benefits/View/SignInBenefitsViewController.swift index 73be92e39..14911f47f 100644 --- a/station/Classes/Presentation/Modules/SignIn/Submodules/Sign In Benefits/View/SignInBenefitsViewController.swift +++ b/station/Classes/Presentation/Modules/SignIn/Submodules/Sign In Benefits/View/SignInBenefitsViewController.swift @@ -109,6 +109,7 @@ extension SignInBenefitsViewController { override func viewDidLoad() { super.viewDidLoad() setUpUI() + localize() } override func viewWillAppear(_ animated: Bool) { diff --git a/station/Classes/Presentation/Modules/SignIn/View/UI/SignInViewController.swift b/station/Classes/Presentation/Modules/SignIn/View/UI/SignInViewController.swift index 1c968c348..776b8f150 100644 --- a/station/Classes/Presentation/Modules/SignIn/View/UI/SignInViewController.swift +++ b/station/Classes/Presentation/Modules/SignIn/View/UI/SignInViewController.swift @@ -74,6 +74,7 @@ extension SignInViewController { override func viewDidLoad() { super.viewDidLoad() setUpUI() + localize() output.viewDidLoad() } diff --git a/station/Classes/Presentation/Modules/TagSettings/Submodules/Force Claim/View/UI/SensorForceClaimViewController.swift b/station/Classes/Presentation/Modules/TagSettings/Submodules/Force Claim/View/UI/SensorForceClaimViewController.swift index 7c936fca1..44d9d3b19 100644 --- a/station/Classes/Presentation/Modules/TagSettings/Submodules/Force Claim/View/UI/SensorForceClaimViewController.swift +++ b/station/Classes/Presentation/Modules/TagSettings/Submodules/Force Claim/View/UI/SensorForceClaimViewController.swift @@ -120,6 +120,7 @@ extension SensorForceClaimViewController { override func viewDidLoad() { super.viewDidLoad() setUpUI() + localize() output?.viewDidLoad() } } diff --git a/station/Classes/Presentation/Modules/TagSettings/Submodules/OffsetCorrection/View/Apple/OffsetCorrectionAppleViewController.swift b/station/Classes/Presentation/Modules/TagSettings/Submodules/OffsetCorrection/View/Apple/OffsetCorrectionAppleViewController.swift index 7034efe01..e52e2a165 100644 --- a/station/Classes/Presentation/Modules/TagSettings/Submodules/OffsetCorrection/View/Apple/OffsetCorrectionAppleViewController.swift +++ b/station/Classes/Presentation/Modules/TagSettings/Submodules/OffsetCorrection/View/Apple/OffsetCorrectionAppleViewController.swift @@ -49,7 +49,7 @@ class OffsetCorrectionAppleViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() - + localize() timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true, block: { [weak self] _ in if let updateAt = self?.updatedAt { self?.originalValueUpdateTimeLabel.text = "(\(updateAt.ruuviAgo()))" diff --git a/station/Classes/Presentation/Modules/TagSettings/Submodules/Owner/View/OwnerViewController.swift b/station/Classes/Presentation/Modules/TagSettings/Submodules/Owner/View/OwnerViewController.swift index 73b2d24ae..a9009d4d8 100644 --- a/station/Classes/Presentation/Modules/TagSettings/Submodules/Owner/View/OwnerViewController.swift +++ b/station/Classes/Presentation/Modules/TagSettings/Submodules/Owner/View/OwnerViewController.swift @@ -59,6 +59,7 @@ final class OwnerViewController: UIViewController { super.viewDidLoad() setUpCustomBackButton() setUpCloudHistoryContentView() + localize() output.viewDidTriggerFirmwareUpdateDialog() } } diff --git a/station/Classes/Presentation/Modules/TagSettings/Submodules/Removal/View/UI/SensorRemovalViewController.swift b/station/Classes/Presentation/Modules/TagSettings/Submodules/Removal/View/UI/SensorRemovalViewController.swift index 309441752..12514a7c4 100644 --- a/station/Classes/Presentation/Modules/TagSettings/Submodules/Removal/View/UI/SensorRemovalViewController.swift +++ b/station/Classes/Presentation/Modules/TagSettings/Submodules/Removal/View/UI/SensorRemovalViewController.swift @@ -80,6 +80,7 @@ extension SensorRemovalViewController { override func viewDidLoad() { super.viewDidLoad() setUpUI() + localize() output?.viewDidLoad() } } diff --git a/station/Classes/Presentation/Modules/TagSettings/View/UI/TagSettingsViewController.swift b/station/Classes/Presentation/Modules/TagSettings/View/UI/TagSettingsViewController.swift index 3495f9b38..c836927c9 100644 --- a/station/Classes/Presentation/Modules/TagSettings/View/UI/TagSettingsViewController.swift +++ b/station/Classes/Presentation/Modules/TagSettings/View/UI/TagSettingsViewController.swift @@ -396,6 +396,7 @@ class TagSettingsViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() setUpUI() + localize() output.viewDidLoad() } @@ -1865,42 +1866,15 @@ extension TagSettingsViewController { max: CGFloat? = nil ) -> NSMutableAttributedString? { guard isViewLoaded else { return nil } - var format = RuuviLocalization.TagSettings.Alerts.Temperature.description + let format = RuuviLocalization.TagSettings.Alerts.Temperature.description if let min, let max { - return attributedString(from: String( - format: format, - locale: Locale.autoupdatingCurrent, - min, - max - )) + return attributedString(from: format(Float(min), Float(max))) } if let tu = viewModel?.temperatureUnit.value?.unitTemperature, let l = viewModel?.temperatureLowerBound.value?.converted(to: tu), let u = viewModel?.temperatureUpperBound.value?.converted(to: tu) { - if l.value.decimalPoint > 0 { - let decimalPointToConsider = l.value.decimalPoint > 2 ? 2 : l.value.decimalPoint - format = format.replacingFirstOccurrence( - of: "%0.f", - with: "%0.\(decimalPointToConsider)f" - ) - } - - if u.value.decimalPoint > 0 { - let decimalPointToConsider = u.value.decimalPoint > 2 ? 2 : u.value.decimalPoint - format = format.replacingLastOccurrence( - of: "%0.f", - with: "%0.\(decimalPointToConsider)f" - ) - } - - let message = String( - format: format, - locale: Locale.autoupdatingCurrent, - l.value.round(to: 2), - u.value.round(to: 2) - ) - return attributedString(from: message) + return attributedString(from: format(Float(l.value.round(to: 2)), Float(u.value.round(to: 2)))) } else { return nil } @@ -1948,31 +1922,15 @@ extension TagSettingsViewController { max: CGFloat? = nil ) -> NSMutableAttributedString? { guard isViewLoaded else { return nil } - var format = RuuviLocalization.TagSettings.Alerts.Temperature.description + let format = RuuviLocalization.TagSettings.Alerts.Temperature.description if let min, let max { - return attributedString(from: String( - format: format, - locale: Locale.autoupdatingCurrent, - min, - max - )) + return attributedString(from: format(Float(min), Float(max))) } if let l = viewModel?.relativeHumidityLowerBound.value, let u = viewModel?.relativeHumidityUpperBound.value { - if l.decimalPoint > 0 { - let decimalPointToConsider = l.decimalPoint > 2 ? 2 : l.decimalPoint - format = format.replacingFirstOccurrence(of: "%0.f", with: "%0.\(decimalPointToConsider)f") - } - - if u.decimalPoint > 0 { - let decimalPointToConsider = u.decimalPoint > 2 ? 2 : u.decimalPoint - format = format.replacingLastOccurrence(of: "%0.f", with: "%0.\(decimalPointToConsider)f") - } - let message = String( - format: format, - locale: Locale.autoupdatingCurrent, - l.round(to: 2), - u.round(to: 2) + let message = format( + Float(l.round(to: 2)), + Float(u.round(to: 2)) ) return attributedString(from: message) } else { @@ -2014,15 +1972,12 @@ extension TagSettingsViewController { maxValue: CGFloat? = nil ) -> NSMutableAttributedString? { guard isViewLoaded else { return nil } - var format = RuuviLocalization.TagSettings.Alerts.Temperature.description + let format = RuuviLocalization.TagSettings.Alerts.Temperature.description if let minValue, let maxValue { - return attributedString(from: String( - format: format, - locale: Locale.autoupdatingCurrent, - minValue, - maxValue - )) + return attributedString( + from: format(Float(minValue), Float(maxValue)) + ) } if let pu = viewModel?.pressureUnit.value, @@ -2036,20 +1991,9 @@ extension TagSettingsViewController { min(upper, pu.alertRange.upperBound), pu.alertRange.lowerBound ) - if l.decimalPoint > 0 { - let decimalPointToConsider = l.decimalPoint > 2 ? 2 : l.decimalPoint - format = format.replacingFirstOccurrence(of: "%0.f", with: "%0.\(decimalPointToConsider)f") - } - - if u.decimalPoint > 0 { - let decimalPointToConsider = u.decimalPoint > 2 ? 2 : u.decimalPoint - format = format.replacingLastOccurrence(of: "%0.f", with: "%0.\(decimalPointToConsider)f") - } - let message = String( - format: format, - locale: Locale.autoupdatingCurrent, - l.round(to: 2), - u.round(to: 2) + let message = format( + Float(l.round(to: 2)), + Float(u.round(to: 2)) ) return attributedString(from: message) } else { @@ -2110,21 +2054,16 @@ extension TagSettingsViewController { let format = RuuviLocalization.TagSettings.Alerts.Temperature.description if let min, let max { - return attributedString(from: String( - format: format, - locale: Locale.autoupdatingCurrent, - min, - max - )) + return attributedString( + from: format(Float(min), Float(max)) + ) } if let lower = viewModel?.signalLowerBound.value, let upper = viewModel?.signalUpperBound.value { - let message = String( - format: format, - locale: Locale.autoupdatingCurrent, - lower, - upper + let message = format( + Float(lower), + Float(upper) ) return attributedString(from: message) } else { @@ -3788,10 +3727,8 @@ extension TagSettingsViewController { guard let self else { return } alertTextField.delegate = self let format = RuuviLocalization.TagSettings.AlertSettings.Dialog.min - alertTextField.placeholder = String( - format: format, - locale: Locale.autoupdatingCurrent, - minimumBound + alertTextField.placeholder = format( + Float(minimumBound) ) alertTextField.keyboardType = .decimalPad alertMinRangeTextField = alertTextField @@ -3807,10 +3744,8 @@ extension TagSettingsViewController { guard let self else { return } alertTextField.delegate = self let format = RuuviLocalization.TagSettings.AlertSettings.Dialog.max - alertTextField.placeholder = String( - format: format, - locale: Locale.autoupdatingCurrent, - maximumBound + alertTextField.placeholder = format( + Float(maximumBound) ) alertTextField.keyboardType = .decimalPad alertMaxRangeTextField = alertTextField diff --git a/station/Classes/Presentation/Presenters/Alert/Impl/AlertPresenterImpl.swift b/station/Classes/Presentation/Presenters/Alert/Impl/AlertPresenterImpl.swift index 72fb9272e..0bac89215 100644 --- a/station/Classes/Presentation/Presenters/Alert/Impl/AlertPresenterImpl.swift +++ b/station/Classes/Presentation/Presenters/Alert/Impl/AlertPresenterImpl.swift @@ -9,19 +9,11 @@ class AlertPresenterImpl: AlertPresenter { preferredStyle: viewModel.style ) viewModel.actions.forEach { alert.addAction($0) } - let group = DispatchGroup() DispatchQueue.main.async { - group.enter() - let topViewController = UIApplication.shared.topViewController() - group.leave() - group.notify(queue: .main) { - DispatchQueue.main.async { - let feedback = UINotificationFeedbackGenerator() - feedback.notificationOccurred(.error) - feedback.prepare() - UIApplication.shared.topViewController()?.present(alert, animated: true) - } - } + let feedback = UINotificationFeedbackGenerator() + feedback.notificationOccurred(.error) + feedback.prepare() + UIApplication.shared.topViewController()?.present(alert, animated: true) } } } From d17fd3991e6ecde48e469ba5a2ff234d1e8b78df Mon Sep 17 00:00:00 2001 From: Rinat Enikeev Date: Sun, 10 Dec 2023 00:56:24 +0200 Subject: [PATCH 2/3] suppress OTHER_LDFLAGS: -Xlinker -no_warn_duplicate_libraries --- intents_frameworks.yml | 1 + pnservice.yml | 1 + project_frameworks.yml | 9 +++++++++ 3 files changed, 11 insertions(+) diff --git a/intents_frameworks.yml b/intents_frameworks.yml index 158d18292..070846e13 100644 --- a/intents_frameworks.yml +++ b/intents_frameworks.yml @@ -26,6 +26,7 @@ targets: PROVISIONING_PROFILE_SPECIFIER: "match AdHoc com.ruuvi.station.intents" Debug: CODE_SIGN_STYLE: Automatic + OTHER_LDFLAGS: -Xlinker -no_warn_duplicate_libraries Release: EXCLUDED_SOURCE_FILE_NAMES: "FLEX*" CODE_SIGN_IDENTITY: "iPhone Distribution" diff --git a/pnservice.yml b/pnservice.yml index d6db014fc..cac393f9b 100644 --- a/pnservice.yml +++ b/pnservice.yml @@ -22,6 +22,7 @@ targets: PROVISIONING_PROFILE_SPECIFIER: "match AdHoc com.ruuvi.station.pnservice" Debug: CODE_SIGN_STYLE: Automatic + OTHER_LDFLAGS: -Xlinker -no_warn_duplicate_libraries Release: EXCLUDED_SOURCE_FILE_NAMES: "FLEX*" CODE_SIGN_IDENTITY: "iPhone Distribution" diff --git a/project_frameworks.yml b/project_frameworks.yml index db74ff24e..ce06fe8e3 100644 --- a/project_frameworks.yml +++ b/project_frameworks.yml @@ -55,6 +55,9 @@ targetTemplates: CFBundleShortVersionString: "$(MARKETING_VERSION)" CFBundleVersion: $(CURRENT_PROJECT_VERSION) MERGEABLE_LIBRARY: true + configs: + Debug: + OTHER_LDFLAGS: -Xlinker -no_warn_duplicate_libraries Module: name: "${target_name}" type: framework @@ -88,6 +91,9 @@ targetTemplates: CFBundleShortVersionString: "$(MARKETING_VERSION)" CFBundleVersion: $(CURRENT_PROJECT_VERSION) MERGEABLE_LIBRARY: true + configs: + Debug: + OTHER_LDFLAGS: -Xlinker -no_warn_duplicate_libraries CommonFramework: name: "${target_name}" type: framework @@ -121,6 +127,9 @@ targetTemplates: CFBundleShortVersionString: "$(MARKETING_VERSION)" CFBundleVersion: $(CURRENT_PROJECT_VERSION) MERGEABLE_LIBRARY: true + configs: + Debug: + OTHER_LDFLAGS: -Xlinker -no_warn_duplicate_libraries packages: BTKit: From 96c681088a448ea7f4985cc1baa94720adc8072a Mon Sep 17 00:00:00 2001 From: Rinat Enikeev Date: Sun, 10 Dec 2023 01:00:04 +0200 Subject: [PATCH 3/3] suppress OTHER_LDFLAGS: -Xlinker -no_warn_duplicate_libraries in widgets --- widget_frameworks.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/widget_frameworks.yml b/widget_frameworks.yml index fd1f025cd..90f9a2a4b 100644 --- a/widget_frameworks.yml +++ b/widget_frameworks.yml @@ -22,6 +22,7 @@ targets: PROVISIONING_PROFILE_SPECIFIER: "match AdHoc com.ruuvi.station.widgets" Debug: CODE_SIGN_STYLE: Automatic + OTHER_LDFLAGS: -Xlinker -no_warn_duplicate_libraries Release: CODE_SIGN_IDENTITY: "iPhone Distribution" PROVISIONING_PROFILE_SPECIFIER: "match AdHoc com.ruuvi.station.widgets"