+/*
+ Copyright (C) 2024 Rubén Beltrán del Río
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see https://captura.tranquil.systems.
+ */
import AppIntents
import CoreData
struct GetRemoteCaptures: AppIntent {
- static var title: LocalizedStringResource = "Get remote captures"
-
- static var description =
- IntentDescription("Return a list of remote captures")
-
+ static var title: LocalizedStringResource = "Get remote captures"
+
+ static var description =
+ IntentDescription("Return a list of remote captures")
+
@Parameter(title: "Count") var count: Int?
-
+
static var parameterSummary: some ParameterSummary {
- Summary("Get \(\.$count) latest captures.")
+ Summary("Get \(\.$count) latest captures.")
}
-
+
func perform() async throws -> some IntentResult & ReturnsValue {
let viewContext = PersistenceController.shared.container.viewContext
let fetchRequest = NSFetchRequest<CapturaRemoteFile>(entityName: "CapturaRemoteFile")
fetchRequest.fetchLimit = min(10, max(1, count ?? 5))
fetchRequest.sortDescriptors = [NSSortDescriptor(key: "timestamp", ascending: false)]
-
+
let results = await viewContext.perform {
return try? viewContext.fetch(fetchRequest)
}
-
- let finalResults = results?.compactMap { URL(string: $0.url ?? "")} ?? []
+
+ let finalResults = results?.compactMap { URL(string: $0.url ?? "") } ?? []
return .result(value: finalResults)
}
}