Skip to content

Commit 840d854

Browse files
committed
fix(async-storage): proper errors on windows
1 parent e3167f6 commit 840d854

File tree

3 files changed

+21
-48
lines changed

3 files changed

+21
-48
lines changed

packages/async-storage/src/AsyncStorageError.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ export class AsyncStorageError extends Error {
3838
}
3939

4040
static nativeError(e: unknown): AsyncStorageError {
41+
// do not override own error
42+
if(e instanceof AsyncStorageError) {
43+
throw e
44+
}
45+
4146
const error = getNativeError(e);
4247
if (!error) {
4348
return new AsyncStorageError(

packages/async-storage/src/createAsyncStorage.windows.ts

Lines changed: 8 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,7 @@ class LegacyAsyncStorageImpl implements AsyncStorage {
5050
this.db.multiGet([key], (errors, result) => {
5151
const error = this.getError(errors);
5252
if (error) {
53-
return reject(
54-
AsyncStorageError.jsError(
55-
error.message,
56-
AsyncStorageError.Type.OtherStorageError
57-
)
58-
);
53+
return reject(error);
5954
}
6055
resolve(result?.[0]?.[1] ?? null);
6156
});
@@ -71,12 +66,7 @@ class LegacyAsyncStorageImpl implements AsyncStorage {
7166
this.db.multiSet([[key, value]], (errors) => {
7267
const error = this.getError(errors);
7368
if (error) {
74-
return reject(
75-
AsyncStorageError.jsError(
76-
error.message,
77-
AsyncStorageError.Type.OtherStorageError
78-
)
79-
);
69+
return reject(error);
8070
}
8171
resolve();
8272
});
@@ -92,12 +82,7 @@ class LegacyAsyncStorageImpl implements AsyncStorage {
9282
this.db.multiRemove([key], (errors) => {
9383
const error = this.getError(errors);
9484
if (error) {
95-
return reject(
96-
AsyncStorageError.jsError(
97-
error.message,
98-
AsyncStorageError.Type.OtherStorageError
99-
)
100-
);
85+
return reject(error);
10186
}
10287
resolve();
10388
});
@@ -113,12 +98,7 @@ class LegacyAsyncStorageImpl implements AsyncStorage {
11398
this.db.multiGet(keys, (errors, result) => {
11499
const error = this.getError(errors);
115100
if (error) {
116-
return reject(
117-
AsyncStorageError.jsError(
118-
error.message,
119-
AsyncStorageError.Type.OtherStorageError
120-
)
121-
);
101+
return reject(error);
122102
}
123103
const resultMap = new Map(result);
124104
const entries: Record<string, string | null> = {};
@@ -139,12 +119,7 @@ class LegacyAsyncStorageImpl implements AsyncStorage {
139119
this.db.multiSet(Object.entries(entries), (errors) => {
140120
const error = this.getError(errors);
141121
if (error) {
142-
return reject(
143-
AsyncStorageError.jsError(
144-
error.message,
145-
AsyncStorageError.Type.OtherStorageError
146-
)
147-
);
122+
return reject(error);
148123
}
149124
resolve();
150125
});
@@ -160,12 +135,7 @@ class LegacyAsyncStorageImpl implements AsyncStorage {
160135
this.db.multiRemove(keys, (errors) => {
161136
const error = this.getError(errors);
162137
if (error) {
163-
return reject(
164-
AsyncStorageError.jsError(
165-
error.message,
166-
AsyncStorageError.Type.OtherStorageError
167-
)
168-
);
138+
return reject(error);
169139
}
170140
resolve();
171141
});
@@ -181,12 +151,7 @@ class LegacyAsyncStorageImpl implements AsyncStorage {
181151
this.db.getAllKeys((errors, result) => {
182152
const error = this.getError(errors);
183153
if (error) {
184-
return reject(
185-
AsyncStorageError.jsError(
186-
error.message,
187-
AsyncStorageError.Type.OtherStorageError
188-
)
189-
);
154+
return reject(error);
190155
}
191156
if (!result) {
192157
return reject(
@@ -211,12 +176,7 @@ class LegacyAsyncStorageImpl implements AsyncStorage {
211176
this.db.clear((errors) => {
212177
const error = this.getError(errors);
213178
if (error) {
214-
return reject(
215-
AsyncStorageError.jsError(
216-
error.message,
217-
AsyncStorageError.Type.OtherStorageError
218-
)
219-
);
179+
return reject(error);
220180
}
221181
resolve();
222182
});

packages/async-storage/windows/code/DBStorage.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -595,5 +595,13 @@ void WriteValue(const winrt::IJSValueWriter &writer, const DBStorage::Error &val
595595
{
596596
writer.WriteObjectBegin();
597597
winrt::WriteProperty(writer, L"message", value.Message);
598+
winrt::WriteProperty(writer, L"code", "AsyncStorageError"); // from AsyncStorageError.Type
599+
600+
writer.WritePropertyName(L"userInfo");
601+
writer.WriteObjectBegin();
602+
writer.WritePropertyName(L"type");
603+
writer.WriteString(L"OtherException"); // make sure all Windows errors are treated as "OtherSqliteError"
604+
writer.WriteObjectEnd();
605+
598606
writer.WriteObjectEnd();
599607
}

0 commit comments

Comments
 (0)