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
|
cacheManager = manager
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun ensureInitialized() {
|
||||||
|
if (cacheManager == null) {
|
||||||
|
cacheManager = getPlatformTaskCacheManager()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun saveTasks(tasks: List<CustomTask>) {
|
fun saveTasks(tasks: List<CustomTask>) {
|
||||||
|
ensureInitialized()
|
||||||
try {
|
try {
|
||||||
val tasksJson = json.encodeToString(tasks)
|
val tasksJson = json.encodeToString(tasks)
|
||||||
cacheManager?.saveTasks(tasksJson)
|
cacheManager?.saveTasks(tasksJson)
|
||||||
@@ -31,6 +38,7 @@ object TaskCacheStorage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun getTasks(): List<CustomTask>? {
|
fun getTasks(): List<CustomTask>? {
|
||||||
|
ensureInitialized()
|
||||||
return try {
|
return try {
|
||||||
val tasksJson = cacheManager?.getTasks()
|
val tasksJson = cacheManager?.getTasks()
|
||||||
if (tasksJson != null) {
|
if (tasksJson != null) {
|
||||||
@@ -45,6 +53,14 @@ object TaskCacheStorage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun clearTasks() {
|
fun clearTasks() {
|
||||||
|
ensureInitialized()
|
||||||
cacheManager?.clearTasks()
|
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()
|
cachedToken = manager.getToken()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun ensureInitialized() {
|
||||||
|
if (tokenManager == null) {
|
||||||
|
tokenManager = getPlatformTokenManager()
|
||||||
|
cachedToken = tokenManager?.getToken()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun saveToken(token: String) {
|
fun saveToken(token: String) {
|
||||||
|
ensureInitialized()
|
||||||
cachedToken = token
|
cachedToken = token
|
||||||
tokenManager?.saveToken(token)
|
tokenManager?.saveToken(token)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getToken(): String? {
|
fun getToken(): String? {
|
||||||
|
ensureInitialized()
|
||||||
// Return cached token if available, otherwise try to load from storage
|
// Return cached token if available, otherwise try to load from storage
|
||||||
if (cachedToken == null) {
|
if (cachedToken == null) {
|
||||||
cachedToken = tokenManager?.getToken()
|
cachedToken = tokenManager?.getToken()
|
||||||
@@ -32,9 +41,17 @@ object TokenStorage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun clearToken() {
|
fun clearToken() {
|
||||||
|
ensureInitialized()
|
||||||
cachedToken = null
|
cachedToken = null
|
||||||
tokenManager?.clearToken()
|
tokenManager?.clearToken()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun hasToken(): Boolean = getToken() != null
|
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