aboutsummaryrefslogtreecommitdiff
path: root/Captura/Intents/GetRemoteCaptures.swift
blob: 58d9583e5a473214d10efd45c9bb46d4fa85461f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import AppIntents
import CoreData

struct GetRemoteCaptures: AppIntent {
    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.")
  }
  
  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 ?? "")} ?? []
    return .result(value: finalResults)
  }
}