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