1// SPDX-FileCopyrightText: Nextcloud GmbH
2// SPDX-FileCopyrightText: 2018 Marino Faggiana
3// SPDX-License-Identifier: GPL-3.0-or-later
4
5import UIKit
6@preconcurrency import NextcloudKit
7import RealmSwift
8import SVGKit
9
10class NCService: NSObject {
11 let utilityFileSystem = NCUtilityFileSystem()
12 let utility = NCUtility()
13 let database = NCManageDatabase.shared
14 let global = NCGlobal.shared
…lines 15–259 unchanged (245 lines)
260 session: NCNetworking.shared.sessionDownloadBackground,
261 selector: NCGlobal.shared.selectorSynchronizationOffline)
262 }
263 }
264 }
265
266 // MARK: -
267
268 private func requestDashboardWidget(account: String) async {
269 let results = await NextcloudKit.shared.getDashboardWidgetAsync(account: account, taskHandler: { task in
270 Task {
271 let identifier = await NCNetworking.shared.networkingTasks.createIdentifier(account: account,
272 name: "getDashboardWidget")
273 await NCNetworking.shared.networkingTasks.track(identifier: identifier, task: task)
274 }
275 })
276 if results.error == .success,
277 let dashboardWidgets = results.dashboardWidgets {
278 await NCManageDatabase.shared.addDashboardWidgetAsync(account: account, dashboardWidgets: dashboardWidgets)
279 for widget in dashboardWidgets {
280 if let url = URL(string: widget.iconUrl),
281 let fileName = widget.iconClass {
282 let results = await NextcloudKit.shared.downloadPreviewAsync(url: url, account: account) { task in
283 Task {
284 let identifier = await NCNetworking.shared.networkingTasks.createIdentifier(account: account,
285 path: url.absoluteString,
286 name: "DownloadPreview")
287 await NCNetworking.shared.networkingTasks.track(identifier: identifier, task: task)
288 }
289 }
290 if results.error == .success,
291 let data = results.responseData?.data {
292 await MainActor.run {
293 let size = CGSize(width: 256, height: 256)
294 let finalImage: UIImage?
295 if let uiImage = UIImage(data: data)?.resizeImage(size: size) {
296 finalImage = uiImage
297 } else if let svgImage = SVGKImage(data: data) {
298 svgImage.size = size
299 finalImage = svgImage.uiImage
300 } else {
301 print("Unsupported image format")
302 finalImage = nil
303 }
304 if let image = finalImage {
305 let filePath = (self.utilityFileSystem.directoryUserData as NSString).appendingPathComponent(fileName + ".png")
306 do {
307 try image.pngData()?.write(to: URL(fileURLWithPath: filePath), options: .atomic)
308 } catch {
309 print("Failed to write image to disk: \(error.localizedDescription)")
310 }
311 }
312 }
313 }
314 }
315 }
316 }
317 }
318
…lines 319–440 unchanged (122 lines)