Add device access token authentication
This commit is contained in:
@@ -469,7 +469,12 @@ final class iPhoneLibraryViewModel {
|
||||
baseURL: ServerEnvironment.defaultLocalBaseURL,
|
||||
appVersion: "0.1.0"
|
||||
)
|
||||
let apiClient = URLSessionVelodyAPIClient(environment: environment)
|
||||
let apiClient = URLSessionVelodyAPIClient(
|
||||
environment: environment,
|
||||
deviceAccessTokenProvider: {
|
||||
try await keychainService.loadValue(forKey: Self.deviceAccessTokenKey)
|
||||
}
|
||||
)
|
||||
let store = Self.makeRemoteLibraryStore()
|
||||
let downloadStateStore = Self.makeRemoteTrackDownloadStateStore()
|
||||
let audioFileStore = Self.makeOfflineAudioFileStore()
|
||||
@@ -657,7 +662,10 @@ final class iPhoneLibraryViewModel {
|
||||
private func currentOrRegisterDeviceID() async throws -> String {
|
||||
if let existingDeviceID = try await keychainService.loadValue(
|
||||
forKey: Self.deviceIDKey
|
||||
), !existingDeviceID.isEmpty {
|
||||
), !existingDeviceID.isEmpty,
|
||||
let existingDeviceAccessToken = try await keychainService.loadValue(
|
||||
forKey: Self.deviceAccessTokenKey
|
||||
), !existingDeviceAccessToken.isEmpty {
|
||||
return existingDeviceID
|
||||
}
|
||||
|
||||
@@ -670,6 +678,10 @@ final class iPhoneLibraryViewModel {
|
||||
)
|
||||
|
||||
try await keychainService.save(response.deviceId, forKey: Self.deviceIDKey)
|
||||
try await keychainService.save(
|
||||
response.deviceAccessToken,
|
||||
forKey: Self.deviceAccessTokenKey
|
||||
)
|
||||
try await keychainService.save(
|
||||
response.bootstrapToken,
|
||||
forKey: Self.bootstrapTokenKey
|
||||
@@ -914,6 +926,7 @@ final class iPhoneLibraryViewModel {
|
||||
#endif
|
||||
|
||||
private static let deviceIDKey = "velody.iphone.device-id"
|
||||
private static let deviceAccessTokenKey = "velody.iphone.device-access-token"
|
||||
private static let bootstrapTokenKey = "velody.iphone.bootstrap-token"
|
||||
private static let remoteLibraryEmptyMessage = LibrarySectionMessage(
|
||||
title: "No music synced yet",
|
||||
|
||||
Reference in New Issue
Block a user