Skip to content

Commit da854e8

Browse files
committed
fix(Storage): Don't give up when storage entry can not be parsed
fixes #1838 Signed-off-by: Marcel Klehr <[email protected]>
1 parent fd62968 commit da854e8

File tree

2 files changed

+24
-10
lines changed

2 files changed

+24
-10
lines changed

src/lib/browser/BrowserAccountStorage.js

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import DefunctCryptography from '../DefunctCrypto'
44
import Mappings from '../Mappings'
55
import { Folder, ItemLocation } from '../Tree'
66
import AsyncLock from 'async-lock'
7+
import Logger from '../Logger'
78

89
const storageLock = new AsyncLock()
910

@@ -23,12 +24,18 @@ export default class BrowserAccountStorage {
2324

2425
static async getEntry(entryName, defaultVal) {
2526
let entry = await browser.storage.local.get(entryName)
26-
if (entry[entryName]) {
27-
while (typeof entry[entryName] === 'string') {
28-
entry[entryName] = JSON.parse(entry[entryName])
27+
try {
28+
if (entry[entryName]) {
29+
while (typeof entry[entryName] === 'string') {
30+
entry[entryName] = JSON.parse(entry[entryName])
31+
}
32+
return entry[entryName]
33+
} else {
34+
return defaultVal
2935
}
30-
return entry[entryName]
31-
} else {
36+
} catch (e) {
37+
Logger.log('Error while parsing BrowserAccountStorage entry value ' + e.message)
38+
console.error(e)
3239
return defaultVal
3340
}
3441
}

src/lib/native/NativeAccountStorage.js

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import DefunctCryptography from '../DefunctCrypto'
44
import Mappings from '../Mappings'
55
import { Folder, ItemLocation } from '../Tree'
66
import AsyncLock from 'async-lock'
7+
import Logger from '../Logger'
78

89
const storageLock = new AsyncLock()
910

@@ -23,12 +24,18 @@ export default class NativeAccountStorage {
2324

2425
static async getEntry(entryName, defaultVal) {
2526
let entry = await Storage.get({key: entryName })
26-
if (entry.value) {
27-
while (typeof entry.value === 'string') {
28-
entry.value = JSON.parse(entry.value)
27+
try {
28+
if (entry.value) {
29+
while (typeof entry.value === 'string') {
30+
entry.value = JSON.parse(entry.value)
31+
}
32+
return entry.value
33+
} else {
34+
return defaultVal
2935
}
30-
return entry.value
31-
} else {
36+
} catch (e) {
37+
Logger.log('Error while parsing NativeAccountStorage entry value ' + e.message)
38+
console.error(e)
3239
return defaultVal
3340
}
3441
}

0 commit comments

Comments
 (0)