an open source Navidrome client written in Swift — https://dub.sh/getflo dub.sh/getflo
navidrome-client

fix: delete separated User models

and do something related with #9

+30 -19
+3 -3
flo/AuthViewModel.swift
··· 9 9 import KeychainAccess 10 10 11 11 class AuthViewModel: ObservableObject { 12 - @Published var user: User? 12 + @Published var user: UserAuth? 13 13 14 14 @Published var serverUrl: String = "" 15 15 @Published var username: String = "" ··· 44 44 self.login() 45 45 } else { 46 46 47 - self.user = User( 47 + self.user = UserAuth( 48 48 id: data.id, username: data.username, name: data.name, isAdmin: data.isAdmin, 49 49 lastFMApiKey: data.lastFMApiKey) 50 50 self.isLoggedIn = true ··· 130 130 AuthService.shared.setCreds(data) 131 131 UserDefaultsManager.serverBaseURL = self.serverUrl 132 132 133 - self.user = User( 133 + self.user = UserAuth( 134 134 id: data.id, username: data.username, name: data.name, isAdmin: data.isAdmin, 135 135 lastFMApiKey: data.lastFMApiKey) 136 136 } catch {
-16
flo/Shared/Models/User.swift
··· 1 - // 2 - // User.swift 3 - // flo 4 - // 5 - // Created by rizaldy on 09/06/24. 6 - // 7 - 8 - import Foundation 9 - 10 - struct User: Codable { 11 - let id: String 12 - let username: String 13 - let name: String 14 - let isAdmin: Bool 15 - let lastFMApiKey: String 16 - }
+27
flo/Shared/Models/UserAuth.swift
··· 16 16 let subsonicSalt: String 17 17 let subsonicToken: String 18 18 let token: String 19 + 20 + init( 21 + id: String, username: String, name: String, isAdmin: Bool, lastFMApiKey: String = "", 22 + subsonicSalt: String = "", subsonicToken: String = "", token: String = "" 23 + ) { 24 + self.id = id 25 + self.name = name 26 + self.username = username 27 + self.isAdmin = isAdmin 28 + self.lastFMApiKey = lastFMApiKey 29 + self.subsonicSalt = subsonicSalt 30 + self.subsonicToken = subsonicToken 31 + self.token = token 32 + } 33 + 34 + init(from decoder: any Decoder) throws { 35 + let container = try decoder.container(keyedBy: CodingKeys.self) 36 + 37 + self.id = try container.decode(String.self, forKey: .id) 38 + self.name = try container.decode(String.self, forKey: .name) 39 + self.username = try container.decode(String.self, forKey: .username) 40 + self.isAdmin = try container.decode(Bool.self, forKey: .isAdmin) 41 + self.lastFMApiKey = try container.decodeIfPresent(String.self, forKey: .lastFMApiKey) ?? "" 42 + self.subsonicSalt = try container.decode(String.self, forKey: .subsonicSalt) 43 + self.subsonicToken = try container.decode(String.self, forKey: .subsonicToken) 44 + self.token = try container.decode(String.self, forKey: .token) 45 + } 19 46 }