Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,9 @@ class StorageApi : BaseApiHandler() {
is Double -> SyncResult(JSValue.createNumber(value))
is Float -> SyncResult(JSValue.createNumber(value.toDouble()))
is Boolean -> SyncResult(JSValue.createBoolean(value))
else -> SyncResult(JSValue.createNull())
is JSONArray -> SyncResult(JSValue.createObject(value.toString()))
is JSONObject -> SyncResult(JSValue.createObject(value.toString()))
else -> SyncResult(JSValue.createString(""))
}
}

Expand Down Expand Up @@ -192,6 +194,11 @@ class StorageApi : BaseApiHandler() {
storage.encode(typeKey, "Array")
}

is JSONObject -> {
storage.encode(key, data.toString())
storage.encode(typeKey, "Object")
}

is Any -> try {
// For JSON-serializable objects
storage.encode(key, data.toString())
Expand Down Expand Up @@ -223,6 +230,11 @@ class StorageApi : BaseApiHandler() {
} catch (_: Exception) {
storage.decodeString(key) // Fallback to String if parsing fails
}
"Object" -> try {
JSONObject(storage.decodeString(key))
} catch (_: Exception) {
storage.decodeString(key) // Fallback to String if parsing fails
}
else -> storage.decodeString(key) // Fallback to String for unknown types
}
}
Expand Down
21 changes: 7 additions & 14 deletions iOS/dimina/DiminaKit/Container/Api/Storage/StorageAPI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -32,33 +32,26 @@ public class StorageAPI: DMPContainerApi {
DMPStorage.shared.initialize()
}

// Set storage synchronously
// wx.setStorageSync(key, data) → params: [key, data]
@BridgeMethod(SET_STORAGE_SYNC)
var setStorageSync: DMPBridgeMethodHandler = { param, env, callback in
let param = param.getMap()
guard let key = param.get("key") as? String else { return DMPSyncResult(false) }
let data = param.get("data")
let encrypt = param.get("encrypt") as? Bool ?? false

guard let data = data else { return DMPSyncResult(false) }

let result = DMPStorage.shared.set(key: key, value: data, encrypted: encrypt)
return DMPSyncResult(result)
guard let array = param.getValue() as? [Any], array.count >= 2,
let key = array[0] as? String else { return DMPSyncResult(false) }
return DMPSyncResult(DMPStorage.shared.set(key: key, value: array[1], encrypted: false))
}

// Get storage synchronously
// wx.getStorageSync(key) → params: key string
@BridgeMethod(GET_STORAGE_SYNC)
var getStorageSync: DMPBridgeMethodHandler = { param, env, callback in
guard let key = param.getValue() as? String else { return DMPNoneResult() }
let value = DMPStorage.shared.get(key: key, encrypted: false)
return DMPSyncResult(value)
return DMPSyncResult(value ?? "")
}

// Remove storage synchronously
// wx.removeStorageSync(key) → params: key string
@BridgeMethod(REMOVE_STORAGE_SYNC)
var removeStorageSync: DMPBridgeMethodHandler = { param, env, callback in
guard let key = param.getValue() as? String else { return DMPSyncResult(false) }

DMPStorage.shared.remove(key: key, encrypted: false)
return DMPSyncResult(true)
}
Expand Down
Loading