From 028987a4206f020d736c6bfdb460e124dae734b9 Mon Sep 17 00:00:00 2001 From: Garth Vander Houwen Date: Thu, 24 Apr 2025 08:10:58 -0700 Subject: [PATCH] Remove orphaned code --- Localizable.xcstrings | 96 ------------------- Meshtastic.xcodeproj/project.pbxproj | 16 ---- Meshtastic/Extensions/UserDefaults.swift | 18 ---- .../Helpers/Map/OfflineTileManager.swift | 74 -------------- Meshtastic/Helpers/Map/TileOverlay.swift | 15 --- Meshtastic/Views/Settings/AppSettings.swift | 25 ----- 6 files changed, 244 deletions(-) delete mode 100644 Meshtastic/Helpers/Map/OfflineTileManager.swift delete mode 100644 Meshtastic/Helpers/Map/TileOverlay.swift diff --git a/Localizable.xcstrings b/Localizable.xcstrings index 138162db..1d170efb 100644 --- a/Localizable.xcstrings +++ b/Localizable.xcstrings @@ -7004,28 +7004,6 @@ } } }, - "Delete all map tiles?" : { - "localizations" : { - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Cancellare tutte le tessere della mappa?" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Избрисати све плочице мапе?" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "删除所有瓦片地图?" - } - } - } - }, "Delete all positions?" : { "localizations" : { "it" : { @@ -17086,80 +17064,6 @@ } } }, - "Map Tile Data" : { - "localizations" : { - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Dati delle piastrelle della mappa" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Подаци плочица мапе" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "瓦片地图数据" - } - } - } - }, - "map.tiles.delete" : { - "localizations" : { - "en" : { - "stringUnit" : { - "state" : "translated", - "value" : "Delete All Map Tiles" - } - }, - "fr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Supprimer toutes les tuiles de carte" - } - }, - "he" : { - "stringUnit" : { - "state" : "translated", - "value" : "מחק כל חלקי מפה שמורים" - } - }, - "it" : { - "stringUnit" : { - "state" : "translated", - "value" : "Cancellare tutte le tessere della mappa" - } - }, - "pl" : { - "stringUnit" : { - "state" : "translated", - "value" : "Usuń Wszystkie Kafle Mapy" - } - }, - "se" : { - "stringUnit" : { - "state" : "translated", - "value" : "Radera Alla Kartplattor" - } - }, - "sr" : { - "stringUnit" : { - "state" : "translated", - "value" : "Обриши све плочице мапе" - } - }, - "zh-Hans" : { - "stringUnit" : { - "state" : "translated", - "value" : "删除所有瓦片地图" - } - } - } - }, "map.usertrackingmode.follow" : { "localizations" : { "de" : { diff --git a/Meshtastic.xcodeproj/project.pbxproj b/Meshtastic.xcodeproj/project.pbxproj index 1ac17a2e..25d25afc 100644 --- a/Meshtastic.xcodeproj/project.pbxproj +++ b/Meshtastic.xcodeproj/project.pbxproj @@ -176,8 +176,6 @@ DDB6CCFB2AAF805100945AF6 /* NodeMapSwiftUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB6CCFA2AAF805100945AF6 /* NodeMapSwiftUI.swift */; }; DDB75A0F2A05920E006ED576 /* FileManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB75A0E2A05920E006ED576 /* FileManager.swift */; }; DDB75A112A059258006ED576 /* Url.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB75A102A059258006ED576 /* Url.swift */; }; - DDB75A142A0593E2006ED576 /* OfflineTileManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB75A132A0593E2006ED576 /* OfflineTileManager.swift */; }; - DDB75A162A0594AD006ED576 /* TileOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB75A152A0594AD006ED576 /* TileOverlay.swift */; }; DDB75A1A2A05EB67006ED576 /* alpha.png in Resources */ = {isa = PBXBuildFile; fileRef = DDB75A192A05EB67006ED576 /* alpha.png */; }; DDB75A1E2A0B0CD0006ED576 /* LoRaSignalStrengthIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB75A1D2A0B0CD0006ED576 /* LoRaSignalStrengthIndicator.swift */; }; DDB75A212A12B954006ED576 /* LoRaSignalStrength.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDB75A202A12B954006ED576 /* LoRaSignalStrength.swift */; }; @@ -475,8 +473,6 @@ DDB759E12A04B264006ED576 /* MeshtasticDataModelV12.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = MeshtasticDataModelV12.xcdatamodel; sourceTree = ""; }; DDB75A0E2A05920E006ED576 /* FileManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileManager.swift; sourceTree = ""; }; DDB75A102A059258006ED576 /* Url.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Url.swift; sourceTree = ""; }; - DDB75A132A0593E2006ED576 /* OfflineTileManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OfflineTileManager.swift; sourceTree = ""; }; - DDB75A152A0594AD006ED576 /* TileOverlay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TileOverlay.swift; sourceTree = ""; }; DDB75A192A05EB67006ED576 /* alpha.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = alpha.png; sourceTree = ""; }; DDB75A1D2A0B0CD0006ED576 /* LoRaSignalStrengthIndicator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoRaSignalStrengthIndicator.swift; sourceTree = ""; }; DDB75A1F2A10766D006ED576 /* MeshtasticDataModelV13.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = MeshtasticDataModelV13.xcdatamodel; sourceTree = ""; }; @@ -918,15 +914,6 @@ path = Map; sourceTree = ""; }; - DDB75A122A0593CD006ED576 /* Map */ = { - isa = PBXGroup; - children = ( - DDB75A132A0593E2006ED576 /* OfflineTileManager.swift */, - DDB75A152A0594AD006ED576 /* TileOverlay.swift */, - ); - path = Map; - sourceTree = ""; - }; DDC2E14B26CE248E0042C5E4 = { isa = PBXGroup; children = ( @@ -1064,7 +1051,6 @@ isa = PBXGroup; children = ( DDD43FE12A78C86B0083A3E9 /* Mqtt */, - DDB75A122A0593CD006ED576 /* Map */, DDAF8C5226EB1DF10058C060 /* BLEManager.swift */, DDC2E1A626CEB3400042C5E4 /* LocationHelper.swift */, DD913638270DFF4C00D7ACF3 /* LocalNotificationManager.swift */, @@ -1445,7 +1431,6 @@ DDDB444229F8A88700EE2349 /* Double.swift in Sources */, DDF45C342BC1A48E005ED5F2 /* MQTTIcon.swift in Sources */, DDA9515A2BC6624100CEA535 /* TelemetryWeather.swift in Sources */, - DDB75A162A0594AD006ED576 /* TileOverlay.swift in Sources */, DD1BD0EB2C601795008C0C70 /* CLLocation.swift in Sources */, DDF924CA26FBB953009FE055 /* ConnectedDevice.swift in Sources */, DD3CC6BE28E4CD9800FA9159 /* BatteryGauge.swift in Sources */, @@ -1520,7 +1505,6 @@ DD6F65762C6EA5490053C113 /* AckErrors.swift in Sources */, DDDB445029F8AC9C00EE2349 /* UIImage.swift in Sources */, DD86D40F2881BE4C00BAEB7A /* CsvDocument.swift in Sources */, - DDB75A142A0593E2006ED576 /* OfflineTileManager.swift in Sources */, DDB75A1E2A0B0CD0006ED576 /* LoRaSignalStrengthIndicator.swift in Sources */, DDA6B2E928419CF2003E8C16 /* MeshPackets.swift in Sources */, DDCE4E2C2869F92900BE9F8F /* UserConfig.swift in Sources */, diff --git a/Meshtastic/Extensions/UserDefaults.swift b/Meshtastic/Extensions/UserDefaults.swift index 740f04e2..ac13f24b 100644 --- a/Meshtastic/Extensions/UserDefaults.swift +++ b/Meshtastic/Extensions/UserDefaults.swift @@ -118,24 +118,6 @@ extension UserDefaults { @UserDefault(.enableMapPointsOfInterest, defaultValue: false) static var enableMapPointsOfInterest: Bool - @UserDefault(.enableOfflineMaps, defaultValue: false) - static var enableOfflineMaps: Bool - - @UserDefault(.mapTileServer, defaultValue: .openStreetMap) - static var mapTileServer: MapTileServer - - @UserDefault(.enableOverlayServer, defaultValue: false) - static var enableOverlayServer: Bool - - @UserDefault(.mapOverlayServer, defaultValue: .baseReReflectivityCurrent) - static var mapOverlayServer: MapOverlayServer - - @UserDefault(.mapTilesAboveLabels, defaultValue: false) - static var mapTilesAboveLabels: Bool - - @UserDefault(.mapUseLegacy, defaultValue: false) - static var mapUseLegacy: Bool - @UserDefault(.enableDetectionNotifications, defaultValue: false) static var enableDetectionNotifications: Bool diff --git a/Meshtastic/Helpers/Map/OfflineTileManager.swift b/Meshtastic/Helpers/Map/OfflineTileManager.swift deleted file mode 100644 index 66afa93c..00000000 --- a/Meshtastic/Helpers/Map/OfflineTileManager.swift +++ /dev/null @@ -1,74 +0,0 @@ -// -// OfflineTileManager.swift -// Meshtastic -// -// Copyright(c) Garth Vander Houwen 4/23/23. -// - -import Foundation -import MapKit -import OSLog - -class OfflineTileManager: ObservableObject { - static let shared = OfflineTileManager() - - // MARK: - Public properties - - @Published var status: DownloadStatus = .downloaded - - enum DownloadStatus { - case downloaded, downloading - } - - init() { - Logger.services.info("🗂️ Documents Directory = \(self.documentsDirectory.absoluteString, privacy: .public)") - createDirectoriesIfNecessary() - } - - // MARK: - Private properties - - private var overlay: MKTileOverlay { MKTileOverlay(urlTemplate: UserDefaults.mapTileServer.tileUrl.count > 1 ? UserDefaults.mapTileServer.tileUrl : MapTileServer.openStreetMap.tileUrl) } - private var documentsDirectory: URL { fileManager.urls(for: .documentDirectory, in: .userDomainMask).first! } - private let fileManager = FileManager.default - - // MARK: - Public methods - - func getAllDownloadedSize() -> String { - fileManager.allocatedSizeOfDirectory(at: documentsDirectory.appendingPathComponent("tiles")) - } - - func removeAll() { - try? fileManager.removeItem(at: documentsDirectory.appendingPathComponent("tiles")) - createDirectoriesIfNecessary() - } - - func loadAndCacheTileOverlay(for path: MKTileOverlayPath) throws -> Data { - guard UserDefaults.enableOfflineMaps, UserDefaults.mapTileServer.zoomRange.contains(path.z) else { - return try Data(contentsOf: Bundle.main.url(forResource: "alpha", withExtension: "png")!) - } - - let tilesUrl = documentsDirectory - .appendingPathComponent("tiles") - .appendingPathComponent("\(UserDefaults.mapTileServer.id)-z\(path.z)x\(path.x)y\(path.y)") - .appendingPathExtension("png") - - do { - return try Data(contentsOf: tilesUrl) - } catch let error as NSError where error.code == NSFileReadNoSuchFileError { - DispatchQueue.main.async { self.status = .downloading } - defer { - DispatchQueue.main.async { self.status = .downloaded } - } - let data = try Data(contentsOf: overlay.url(forTilePath: path)) - try data.write(to: tilesUrl) - return data - } - } - - // MARK: Private methods - - private func createDirectoriesIfNecessary() { - let tiles = documentsDirectory.appendingPathComponent("tiles") - try? fileManager.createDirectory(at: tiles, withIntermediateDirectories: true, attributes: [:]) - } -} diff --git a/Meshtastic/Helpers/Map/TileOverlay.swift b/Meshtastic/Helpers/Map/TileOverlay.swift deleted file mode 100644 index 754771df..00000000 --- a/Meshtastic/Helpers/Map/TileOverlay.swift +++ /dev/null @@ -1,15 +0,0 @@ -// -// TileOverlay.swift -// Meshtastic -// -// Copyright(c) Garth Vander Houwen 5/5/23. -// - -import Foundation -import MapKit - -class TileOverlay: MKTileOverlay { - override func loadTile(at path: MKTileOverlayPath) async throws -> Data { - return try OfflineTileManager.shared.loadAndCacheTileOverlay(for: path) - } -} diff --git a/Meshtastic/Views/Settings/AppSettings.swift b/Meshtastic/Views/Settings/AppSettings.swift index d8d1a1e8..7ba7d3f9 100644 --- a/Meshtastic/Views/Settings/AppSettings.swift +++ b/Meshtastic/Views/Settings/AppSettings.swift @@ -8,7 +8,6 @@ import OSLog struct AppSettings: View { @Environment(\.managedObjectContext) var context @EnvironmentObject var bleManager: BLEManager - @ObservedObject var tileManager = OfflineTileManager.shared @State var totalDownloadedTileSize = "" @State private var isPresentingCoreDataResetConfirm = false @State private var isPresentingDeleteMapTilesConfirm = false @@ -85,31 +84,7 @@ struct AppSettings: View { .foregroundColor(.red) } } - if totalDownloadedTileSize != "0MB" { - Section(header: Text("Map Tile Data")) { - Button { - isPresentingDeleteMapTilesConfirm = true - } label: { - Label("\("map.tiles.delete".localized) (\(totalDownloadedTileSize))", systemImage: "trash") - .foregroundColor(.red) - } - .confirmationDialog( - "Are you sure?", - isPresented: $isPresentingDeleteMapTilesConfirm, - titleVisibility: .visible - ) { - Button("Delete all map tiles?", role: .destructive) { - tileManager.removeAll() - totalDownloadedTileSize = tileManager.getAllDownloadedSize() - Logger.services.debug("delete all tiles") - } - } - } - } } - .onAppear(perform: { - totalDownloadedTileSize = tileManager.getAllDownloadedSize() - }) } .navigationTitle("App Settings") .navigationBarItems(trailing: