yattee/Shared/Navigation/AccountsViewModel.swift
2023-04-22 23:39:43 +02:00

33 lines
966 B
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 }
}