File tree Expand file tree Collapse file tree
packages/react-native-mmkv/src Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11import type { MMKV } from '../specs/MMKV.nitro'
22import type { Configuration } from '../specs/MMKVFactory.nitro'
3+ import { createTextDecoder } from '../web/createTextDecoder'
34import { createTextEncoder } from '../web/createTextEncoder'
45import {
56 getLocalStorage ,
@@ -16,6 +17,7 @@ export function createMMKV(
1617 throw new Error ( "MMKV: 'path' is not supported on Web!" )
1718 }
1819
20+ const textDecoder = createTextDecoder ( )
1921 const textEncoder = createTextEncoder ( )
2022 const listeners = new Set < ( key : string ) => void > ( )
2123
@@ -71,7 +73,11 @@ export function createMMKV(
7173 set : ( key , value ) => {
7274 const storage = getLocalStorage ( )
7375 if ( key === '' ) throw new Error ( 'Cannot set a value for an empty key!' )
74- storage . setItem ( prefixedKey ( key ) , value . toString ( ) )
76+ if ( value instanceof ArrayBuffer ) {
77+ storage . setItem ( prefixedKey ( key ) , textDecoder . decode ( value ) )
78+ } else {
79+ storage . setItem ( prefixedKey ( key ) , String ( value ) )
80+ }
7581 callListeners ( key )
7682 } ,
7783 getString : ( key ) => {
Original file line number Diff line number Diff line change 1+ export function createTextDecoder ( ) : TextDecoder {
2+ const g = global ?? globalThis ?? window
3+ if ( g . TextDecoder != null ) {
4+ return new g . TextDecoder ( )
5+ } else {
6+ return {
7+ decode : ( ) => {
8+ throw new Error ( 'TextDecoder is not supported in this environment!' )
9+ } ,
10+ encoding : 'utf-8' ,
11+ fatal : false ,
12+ ignoreBOM : false ,
13+ }
14+ }
15+ }
Original file line number Diff line number Diff line change 1- export function createTextEncoder ( ) {
1+ export function createTextEncoder ( ) : TextEncoder {
22 const g = global ?? globalThis ?? window
33 if ( g . TextEncoder != null ) {
44 return new g . TextEncoder ( )
You can’t perform that action at this time.
0 commit comments