This commit is contained in:
Trey t
2025-11-04 10:51:20 -06:00
parent 78c62cfc52
commit de1c7931e9
21 changed files with 1645 additions and 87 deletions

View File

@@ -1,5 +1,11 @@
package com.example.mycrib
import androidx.compose.ui.window.ComposeUIViewController
import com.mycrib.storage.TokenManager
import com.mycrib.storage.TokenStorage
fun MainViewController() = ComposeUIViewController { App() }
fun MainViewController() = ComposeUIViewController {
// Initialize TokenStorage with iOS TokenManager
TokenStorage.initialize(TokenManager.getInstance())
App()
}

View File

@@ -0,0 +1,43 @@
package com.mycrib.storage
import platform.Foundation.NSUserDefaults
import kotlin.concurrent.Volatile
/**
* iOS implementation of TokenManager using NSUserDefaults.
*/
actual class TokenManager {
private val userDefaults = NSUserDefaults.standardUserDefaults
actual fun saveToken(token: String) {
userDefaults.setObject(token, KEY_TOKEN)
userDefaults.synchronize()
}
actual fun getToken(): String? {
return userDefaults.stringForKey(KEY_TOKEN)
}
actual fun clearToken() {
userDefaults.removeObjectForKey(KEY_TOKEN)
userDefaults.synchronize()
}
companion object {
private const val KEY_TOKEN = "auth_token"
@Volatile
private var instance: TokenManager? = null
fun getInstance(): TokenManager {
return instance ?: synchronized(this) {
instance ?: TokenManager().also { instance = it }
}
}
}
}
// Helper function for synchronization on iOS
private fun <T> synchronized(lock: Any, block: () -> T): T {
return block()
}