From 244be64374e3bba7a7cf1dbed86000c497a90b9e Mon Sep 17 00:00:00 2001 From: Marino Faggiana Date: Wed, 25 Jun 2025 13:42:17 +0200 Subject: [PATCH] async Signed-off-by: Marino Faggiana --- .../NextcloudKit/NextcloudKit+Dashboard.swift | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/Sources/NextcloudKit/NextcloudKit+Dashboard.swift b/Sources/NextcloudKit/NextcloudKit+Dashboard.swift index 66287df4..d21249e2 100644 --- a/Sources/NextcloudKit/NextcloudKit+Dashboard.swift +++ b/Sources/NextcloudKit/NextcloudKit+Dashboard.swift @@ -42,6 +42,29 @@ public extension NextcloudKit { options.queue.async { request(dashboardRequest) } } + func getDashboardWidgetAsync(account: String, + options: NKRequestOptions = NKRequestOptions(), + taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }) async -> (account: String, + dashboardWidgets: [NCCDashboardWidget]?, + responseData: AFDataResponse?, + request: DataRequest?, + task: URLSessionTask?, + error: NKError) { + await withCheckedContinuation { continuation in + var capturedRequest: DataRequest? + var capturedTask: URLSessionTask? + + getDashboardWidget(account: account, options: options, request: { req in + capturedRequest = req + }, taskHandler: { task in + capturedTask = task + taskHandler(task) // lo inoltriamo comunque al chiamante + }, completion: { account, widgets, response, error in + continuation.resume(returning: (account, widgets, response, capturedRequest, capturedTask, error)) + }) + } + } + func getDashboardWidgetsApplication(_ items: String, account: String, options: NKRequestOptions = NKRequestOptions(), @@ -77,6 +100,30 @@ public extension NextcloudKit { } options.queue.async { request(dashboardRequest) } } + + func getDashboardWidgetsApplicationAsync(_ items: String, + account: String, + options: NKRequestOptions = NKRequestOptions(), + taskHandler: @escaping (_ task: URLSessionTask) -> Void = { _ in }) async -> (account: String, + dashboardApplications: [NCCDashboardApplication]?, + responseData: AFDataResponse?, + request: DataRequest?, + task: URLSessionTask?, + error: NKError) { + await withCheckedContinuation { continuation in + var capturedRequest: DataRequest? + var capturedTask: URLSessionTask? + + getDashboardWidgetsApplication(items, account: account, options: options, request: { req in + capturedRequest = req + }, taskHandler: { task in + capturedTask = task + taskHandler(task) // propaghiamo al chiamante + }, completion: { account, apps, response, error in + continuation.resume(returning: (account, apps, response, capturedRequest, capturedTask, error )) + }) + } + } } public class NCCDashboardApplication: NSObject {