Automated cherry pick of #4253 (#4254)

* Serialize/Deserialize state as string in store, instead of map

To see if this positively impacts performance lag issues (channel sidebar opening, etc.)

* Update app/store/mmkv_adapter.ts

Co-authored-by: Elias Nahum <nahumhbl@gmail.com>

* Update app/store/mmkv_adapter.ts

* Typescript fixes

Co-authored-by: Amit Uttam <changingrainbows@gmail.com>
Co-authored-by: Miguel Alatzar <migbot@users.noreply.github.com>
Co-authored-by: Elias Nahum <nahumhbl@gmail.com>
Co-authored-by: Miguel Alatzar <this.migbot@gmail.com>
This commit is contained in:
Mattermost Build 2020-04-30 20:43:31 +02:00 committed by GitHub
parent 6cdb50ed39
commit 028dbf1d5a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -38,20 +38,20 @@ export default async function getStorage(identifier = 'default') {
getItem: (
key: string,
callback?: (
error: Error | null | undefined,
result: object | null,
error: Error | null,
result: string | null,
) => void | null | undefined,
): Promise<object | null> => {
): Promise<string | Error> => {
return new Promise((resolve, reject) => {
checkValidInput(key);
MMKV.getMapAsync(key).then((result: object) => {
MMKV.getStringAsync(key).then((result: string) => {
if (callback) {
callback(null, result);
}
resolve(result);
resolve(JSON.parse(result));
}).catch((error: Error) => {
if (callback) {
callback(null, error);
callback(error, null);
}
reject(error);
});
@ -62,12 +62,12 @@ export default async function getStorage(identifier = 'default') {
key: string,
value: object,
callback?: (
error: Error | null | undefined
error: Error | null
) => void | null | undefined,
): Promise<null> => {
): Promise<null | Error> => {
return new Promise((resolve, reject) => {
checkValidInput(key, value);
MMKV.setMapAsync(key, value).then(() => {
MMKV.setStringAsync(key, JSON.stringify(value)).then(() => {
if (callback) {
callback(null);
}
@ -84,7 +84,7 @@ export default async function getStorage(identifier = 'default') {
removeItem: (
key: string,
callback?: (
error: Error | null | undefined
error: null
) => void | null | undefined,
): Promise<boolean> => {
checkValidInput(key);
@ -95,4 +95,4 @@ export default async function getStorage(identifier = 'default') {
return MMKV.removeItem(key);
},
};
}
}