mirror of
https://github.com/yattee/yattee.git
synced 2024-11-14 18:18:22 +00:00
37 lines
1.1 KiB
Swift
37 lines
1.1 KiB
Swift
import Foundation
|
|
|
|
final class AccountsViewModel: ObservableObject {
|
|
typealias AreInIncreasingOrder = (Account, Account) -> Bool
|
|
|
|
var accounts: [Account] { AccountsModel.shared.all }
|
|
|
|
var sortedAccounts: [Account] {
|
|
accounts.sorted { lhs, rhs in
|
|
let predicates: [AreInIncreasingOrder] = [
|
|
{ ($0.app ?? .local).rawValue < ($1.app ?? .local).rawValue },
|
|
{ $0.urlHost < $1.urlHost },
|
|
{ $0.description < $1.description }
|
|
]
|
|
|
|
for predicate in predicates {
|
|
if !predicate(lhs, rhs), !predicate(rhs, lhs) {
|
|
continue
|
|
}
|
|
|
|
return predicate(lhs, rhs)
|
|
}
|
|
|
|
return false
|
|
}
|
|
}
|
|
|
|
var publicAccount: Account? { AccountsModel.shared.publicAccount }
|
|
var currentAccount: Account? { AccountsModel.shared.current }
|
|
|
|
var instances: [Instance] { InstancesModel.shared.all }
|
|
|
|
func accountsOfInstance(_ instance: Instance) -> [Account] {
|
|
accounts.filter { $0.instance.apiURL == instance.apiURL }.sorted { $0.name < $1.name }
|
|
}
|
|
}
|