Skip to content

Don't lock in AsyncStorage #18

@solominh

Description

@solominh

Please don't lock in Storage library. I use mmkv lib. Just provider a Storage interface:

import { MMKV } from 'react-native-mmkv'

export function createSyncStorage(internalStorage: MMKV) {
  function getItem(key: string): string | null {
    const value = internalStorage.getString(key)
    return value ? value : null
  }

  function setItem(key: string, value: string): void {
    internalStorage.set(key, value)
  }

  function removeItem(key: string): void {
    internalStorage.remove(key)
  }

  function clearAll(): void {
    internalStorage.clearAll()
  }
  return {
    getItem,
    setItem,
    removeItem,
    clearAll,
  }
}

export function createAsyncStorage(internalStorage: MMKV) {
  async function getItem(key: string): Promise<string | null> {
    const value = internalStorage.getString(key)
    return value ? value : null
  }

  async function setItem(key: string, value: string): Promise<void> {
    internalStorage.set(key, value)
  }

  async function removeItem(key: string): Promise<void> {
    internalStorage.remove(key)
  }

  async function clearAll(): Promise<void> {
    internalStorage.clearAll()
  }
  return {
    getItem,
    setItem,
    removeItem,
    clearAll,
  }
}

// This is = "@react-native-async-storage/async-storage
export const AsyncStorage = createAyncStorage(mmkvSyncStorage)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions