Current section

Files

Jump to
plinth src plinth browser storage.gleam
Raw

src/plinth/browser/storage.gleam

import gleam/javascript/promise.{type Promise}
import plinth/browser/file_system.{type DirectoryHandle}
pub type StorageManager
@external(javascript, "../../plinth_browser_storage_ffi.mjs", "getStorage")
pub fn get() -> Result(StorageManager, Nil)
pub type Estimate {
Estimate(quota: Int, usage: Int)
}
@external(javascript, "../../plinth_browser_storage_ffi.mjs", "estimate")
fn do_estimate(storage: StorageManager) -> Promise(Result(#(Int, Int), String))
pub fn estimate(storage) {
use #(quota, usage) <- promise.map_try(do_estimate(storage))
Ok(Estimate(quota, usage))
}
@external(javascript, "../../plinth_browser_storage_ffi.mjs", "getDirectory")
pub fn get_directory(
storage: StorageManager,
) -> Promise(Result(DirectoryHandle, String))
@external(javascript, "../../plinth_browser_storage_ffi.mjs", "persist")
pub fn persist(storage: StorageManager) -> Promise(Result(Bool, String))
@external(javascript, "../../plinth_browser_storage_ffi.mjs", "persisted")
pub fn persisted(storage: StorageManager) -> Promise(Result(Bool, String))