mastodon-app-ufficiale-ipho.../MastodonIntent/Handler/HashtagIntentHandler.swift

46 lines
1.4 KiB
Swift
Raw Normal View History

2023-03-27 22:41:36 +02:00
// Copyright © 2023 Mastodon gGmbH. All rights reserved.
import Foundation
import Intents
import MastodonSDK
2023-03-27 22:41:36 +02:00
class HashtagIntentHandler: INExtension, HashtagIntentHandling {
func provideHashtagOptionsCollection(for intent: HashtagIntent, searchTerm: String?) async throws -> INObjectCollection<NSString> {
guard let authenticationBox = WidgetExtension.appContext
.authenticationService
.mastodonAuthenticationBoxes
.first
else {
return INObjectCollection(items: [])
}
var results: [NSString] = []
if let searchTerm, searchTerm.isEmpty == false {
let searchResults = try await WidgetExtension.appContext
.apiService
.search(query: .init(q: searchTerm, type: .hashtags), authenticationBox: authenticationBox)
.value
.hashtags
2024-07-24 14:36:00 +02:00
.compactMap { "#\($0.name)" as NSString }
2023-03-27 22:41:36 +02:00
results = searchResults
} else {
let followedTags = try await WidgetExtension.appContext.apiService.getFollowedTags(
domain: authenticationBox.domain,
query: Mastodon.API.Account.FollowedTagsQuery(limit: nil),
authenticationBox: authenticationBox)
.value
2024-07-24 14:36:00 +02:00
.compactMap { "#\($0.name)" as NSString }
results = followedTags
2023-03-27 22:41:36 +02:00
}
return INObjectCollection(items: results)
}
}