WIP - Complete App refactoring
This commit is contained in:
@@ -6,3 +6,44 @@
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import SwiftUI
|
||||
import KeychainSwift
|
||||
|
||||
|
||||
enum AccountType: String, Codable, CaseIterable {
|
||||
case cookbook = "cookbook"
|
||||
case local = "local"
|
||||
|
||||
var accountType: any Decodable.Type {
|
||||
switch self {
|
||||
case .cookbook: return CookbookAccount.self
|
||||
case .local: return LocalAccount.self
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protocol Account: Codable, Identifiable {
|
||||
/// A unique identifier for this account
|
||||
var id: UUID { get }
|
||||
|
||||
/// A name for the account that can be displayed in the UI
|
||||
var displayName: String { get }
|
||||
|
||||
/// For differentiating account types when decoding
|
||||
var accountType: AccountType { get }
|
||||
|
||||
/// Base endpoint URL
|
||||
var baseURL: URL { get }
|
||||
|
||||
/// Account username
|
||||
var username: String { get }
|
||||
|
||||
/// For storing/retrieving tokens from Keychain
|
||||
func saveTokenToKeychain(_ token: String)
|
||||
func getTokenFromKeychain() -> String?
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user