wip
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
package com.mycrib.storage
|
||||
|
||||
internal actual fun getPlatformTaskCacheManager(): TaskCacheManager? {
|
||||
// Android requires context, so must use initialize() method
|
||||
return null
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package com.mycrib.storage
|
||||
|
||||
internal actual fun getPlatformTokenManager(): TokenManager? {
|
||||
// Android requires context, so must use initialize() method
|
||||
return null
|
||||
}
|
||||
@@ -21,7 +21,14 @@ object TaskCacheStorage {
|
||||
cacheManager = manager
|
||||
}
|
||||
|
||||
private fun ensureInitialized() {
|
||||
if (cacheManager == null) {
|
||||
cacheManager = getPlatformTaskCacheManager()
|
||||
}
|
||||
}
|
||||
|
||||
fun saveTasks(tasks: List<CustomTask>) {
|
||||
ensureInitialized()
|
||||
try {
|
||||
val tasksJson = json.encodeToString(tasks)
|
||||
cacheManager?.saveTasks(tasksJson)
|
||||
@@ -31,6 +38,7 @@ object TaskCacheStorage {
|
||||
}
|
||||
|
||||
fun getTasks(): List<CustomTask>? {
|
||||
ensureInitialized()
|
||||
return try {
|
||||
val tasksJson = cacheManager?.getTasks()
|
||||
if (tasksJson != null) {
|
||||
@@ -45,6 +53,14 @@ object TaskCacheStorage {
|
||||
}
|
||||
|
||||
fun clearTasks() {
|
||||
ensureInitialized()
|
||||
cacheManager?.clearTasks()
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Platform-specific function to get the default TaskCacheManager instance.
|
||||
* For platforms that don't require context (web, iOS, JVM), returns singleton.
|
||||
* For Android, must be initialized via initialize() method before use.
|
||||
*/
|
||||
internal expect fun getPlatformTaskCacheManager(): TaskCacheManager?
|
||||
|
||||
@@ -18,12 +18,21 @@ object TokenStorage {
|
||||
cachedToken = manager.getToken()
|
||||
}
|
||||
|
||||
private fun ensureInitialized() {
|
||||
if (tokenManager == null) {
|
||||
tokenManager = getPlatformTokenManager()
|
||||
cachedToken = tokenManager?.getToken()
|
||||
}
|
||||
}
|
||||
|
||||
fun saveToken(token: String) {
|
||||
ensureInitialized()
|
||||
cachedToken = token
|
||||
tokenManager?.saveToken(token)
|
||||
}
|
||||
|
||||
fun getToken(): String? {
|
||||
ensureInitialized()
|
||||
// Return cached token if available, otherwise try to load from storage
|
||||
if (cachedToken == null) {
|
||||
cachedToken = tokenManager?.getToken()
|
||||
@@ -32,9 +41,17 @@ object TokenStorage {
|
||||
}
|
||||
|
||||
fun clearToken() {
|
||||
ensureInitialized()
|
||||
cachedToken = null
|
||||
tokenManager?.clearToken()
|
||||
}
|
||||
|
||||
fun hasToken(): Boolean = getToken() != null
|
||||
}
|
||||
|
||||
/**
|
||||
* Platform-specific function to get the default TokenManager instance.
|
||||
* For platforms that don't require context (web, iOS, JVM), returns singleton.
|
||||
* For Android, must be initialized via initialize() method before use.
|
||||
*/
|
||||
internal expect fun getPlatformTokenManager(): TokenManager?
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.mycrib.storage
|
||||
|
||||
internal actual fun getPlatformTaskCacheManager(): TaskCacheManager? {
|
||||
return TaskCacheManager.getInstance()
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.mycrib.storage
|
||||
|
||||
internal actual fun getPlatformTokenManager(): TokenManager? {
|
||||
return TokenManager.getInstance()
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.mycrib.storage
|
||||
|
||||
internal actual fun getPlatformTaskCacheManager(): TaskCacheManager? {
|
||||
return TaskCacheManager.getInstance()
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.mycrib.storage
|
||||
|
||||
internal actual fun getPlatformTokenManager(): TokenManager? {
|
||||
return TokenManager.getInstance()
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.mycrib.storage
|
||||
|
||||
import kotlinx.browser.localStorage
|
||||
|
||||
/**
|
||||
* WASM implementation of TaskCacheManager using browser's localStorage.
|
||||
*/
|
||||
actual class TaskCacheManager {
|
||||
actual fun saveTasks(tasksJson: String) {
|
||||
localStorage.setItem(KEY_TASKS, tasksJson)
|
||||
}
|
||||
|
||||
actual fun getTasks(): String? {
|
||||
return localStorage.getItem(KEY_TASKS)
|
||||
}
|
||||
|
||||
actual fun clearTasks() {
|
||||
localStorage.removeItem(KEY_TASKS)
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val KEY_TASKS = "cached_tasks"
|
||||
|
||||
private var instance: TaskCacheManager? = null
|
||||
|
||||
fun getInstance(): TaskCacheManager {
|
||||
if (instance == null) {
|
||||
instance = TaskCacheManager()
|
||||
}
|
||||
return instance!!
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.mycrib.storage
|
||||
|
||||
internal actual fun getPlatformTaskCacheManager(): TaskCacheManager? {
|
||||
return TaskCacheManager.getInstance()
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.mycrib.storage
|
||||
|
||||
import kotlinx.browser.localStorage
|
||||
|
||||
/**
|
||||
* WASM implementation of TokenManager using browser's localStorage.
|
||||
*/
|
||||
actual class TokenManager {
|
||||
actual fun saveToken(token: String) {
|
||||
localStorage.setItem(KEY_TOKEN, token)
|
||||
}
|
||||
|
||||
actual fun getToken(): String? {
|
||||
return localStorage.getItem(KEY_TOKEN)
|
||||
}
|
||||
|
||||
actual fun clearToken() {
|
||||
localStorage.removeItem(KEY_TOKEN)
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val KEY_TOKEN = "auth_token"
|
||||
|
||||
private var instance: TokenManager? = null
|
||||
|
||||
fun getInstance(): TokenManager {
|
||||
if (instance == null) {
|
||||
instance = TokenManager()
|
||||
}
|
||||
return instance!!
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
package com.mycrib.storage
|
||||
|
||||
internal actual fun getPlatformTokenManager(): TokenManager? {
|
||||
return TokenManager.getInstance()
|
||||
}
|
||||
Reference in New Issue
Block a user