28 lines
1023 B
Swift
28 lines
1023 B
Swift
// Copyright © 2023 Mastodon gGmbH. All rights reserved.
|
|
|
|
import Foundation
|
|
import Intents
|
|
import MastodonCore
|
|
import MastodonSDK
|
|
import MastodonLocalization
|
|
|
|
class MultiFollowersCountIntentHandler: INExtension, MultiFollowersCountIntentHandling {
|
|
func provideAccountsOptionsCollection(for intent: MultiFollowersCountIntent, searchTerm: String?) async throws -> INObjectCollection<NSString> {
|
|
guard
|
|
let searchTerm = searchTerm,
|
|
let authenticationBox = WidgetExtension.appContext
|
|
.authenticationService
|
|
.mastodonAuthenticationBoxes
|
|
.first
|
|
else {
|
|
return INObjectCollection(items: [])
|
|
}
|
|
|
|
let results = try await WidgetExtension.appContext
|
|
.apiService
|
|
.search(query: .init(q: searchTerm), authenticationBox: authenticationBox)
|
|
|
|
return INObjectCollection(items: results.value.accounts.map { $0.acctWithDomainIfMissing(authenticationBox.domain) as NSString })
|
|
}
|
|
}
|