Skip to content

Storage

Store JSON-serializable data tied to the current presentation / user context. Field names on entries are snake_case.

Public surface (storage): get · getAll · getAllAcrossPresentations · getForPresentation · query · search · save · delete

There is no getAllForPresentation() — that 1.x name hit the unrestricted list and was replaced by getAllAcrossPresentations() / getAll() / getForPresentation(id).

interface StorageEntry {
name: string
data: unknown
team_id: number
user_id: number
presentation_id: number | null
created_at: string | null // ISO 8601
updated_at: string | null
}
interface StorageFilter {
name?: string
presentationID?: number
since?: string // ISO 8601
until?: string
limit?: number // default 100 (local fallback path)
}
get(name: string): Promise<StorageEntry | null>
save(name: string, data: unknown): Promise<StorageEntry>
delete(name: string): Promise<void>
import mobilelocker from '@mobilelocker/javascript-sdk'
await mobilelocker.storage.save('scan-results', { leads: [{ id: 1 }] })
const entry = await mobilelocker.storage.get('scan-results')
// entry?.name, entry?.data, entry?.team_id, entry?.presentation_id, …
await mobilelocker.storage.delete('scan-results')

Outside Mobile Locker, get / getAll / save / delete use IndexedDB via localforage.

getAll(): Promise<StorageEntry[]> // current presentation
getAllAcrossPresentations(): Promise<StorageEntry[]> // all for user
getForPresentation(presentationID: number): Promise<StorageEntry[]>
const allHere = await mobilelocker.storage.getAll()
const across = await mobilelocker.storage.getAllAcrossPresentations()
const forPres = await mobilelocker.storage.getForPresentation(37976)
query(filter?: StorageFilter): Promise<StorageEntry[]>
search(text: string, filter?: StorageFilter): Promise<StorageEntry[]>
const filtered = await mobilelocker.storage.query({
name: 'scan-results',
limit: 10,
// presentationID, since, until also supported
})
const hits = await mobilelocker.storage.search('lead', { limit: 20 })
// Matches against name and stringified data
API Use when
storage Named server-backed entries with presentation/user metadata
localforage Drop-in key-value store (native-backed on iOS 5.3.0+ / Android)

Prefer mobilelocker.localforage over raw browser localforage in presentations so data is not lost when the WebView origin/port changes.