Skip to content

Commit 0ac6f06

Browse files
committed
Remove serverResponse field in favor of customData
1 parent 2a8b2aa commit 0ac6f06

File tree

5 files changed

+23
-50
lines changed

5 files changed

+23
-50
lines changed

packages/firebase/index.d.ts

+1-6
Original file line numberDiff line numberDiff line change
@@ -7620,12 +7620,7 @@ declare namespace firebase.storage {
76207620
/**
76217621
* An error returned by the Firebase Storage SDK.
76227622
*/
7623-
interface FirebaseStorageError {
7624-
name: string;
7625-
code: string;
7626-
message: string;
7627-
serverResponse: null | string;
7628-
}
7623+
interface FirebaseStorageError extends FirebaseError {}
76297624

76307625
interface StorageObserver<T> {
76317626
next?: NextFn<T> | null;

packages/storage-types/index.d.ts

+2-7
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*/
1717

1818
import { FirebaseApp } from '@firebase/app-types';
19-
import { CompleteFn, NextFn, Unsubscribe } from '@firebase/util';
19+
import { CompleteFn, FirebaseError, NextFn, Unsubscribe } from '@firebase/util';
2020

2121
export interface FullMetadata extends UploadMetadata {
2222
bucket: string;
@@ -85,12 +85,7 @@ export interface UploadMetadata extends SettableMetadata {
8585
md5Hash?: string | null;
8686
}
8787

88-
export interface FirebaseStorageError {
89-
name: string;
90-
code: string;
91-
message: string;
92-
serverResponse: null | string;
93-
}
88+
export interface FirebaseStorageError extends FirebaseError {}
9489

9590
export interface StorageObserver<T> {
9691
next?: NextFn<T> | null;

packages/storage/src/implementation/error.ts

+17-34
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { FirebaseError } from '@firebase/util';
12
/**
23
* @license
34
* Copyright 2017 Google LLC
@@ -16,53 +17,35 @@
1617
*/
1718
import { CONFIG_STORAGE_BUCKET_KEY } from './constants';
1819

19-
export class FirebaseStorageError implements Error {
20-
private code_: string;
21-
private message_: string;
22-
private serverResponse_: string | null;
23-
private name_: string;
20+
export class FirebaseStorageError extends FirebaseError {
21+
customData: { serverResponse: string | null };
2422

2523
constructor(code: Code, message: string) {
26-
this.code_ = prependCode(code);
27-
this.message_ = 'Firebase Storage: ' + message;
28-
this.serverResponse_ = null;
29-
this.name_ = 'FirebaseError';
30-
}
31-
32-
codeProp(): string {
33-
return this.code;
24+
super(prependCode(code), 'Firebase Storage: ' + message);
25+
// Without this, `instanceof FirebaseStorageError`, in tests for example,
26+
// returns false.
27+
Object.setPrototypeOf(this, FirebaseStorageError.prototype);
28+
this.customData = { serverResponse: null };
3429
}
3530

3631
codeEquals(code: Code): boolean {
37-
return prependCode(code) === this.codeProp();
38-
}
39-
40-
serverResponseProp(): string | null {
41-
return this.serverResponse_;
42-
}
43-
44-
setServerResponseProp(serverResponse: string | null): void {
45-
this.serverResponse_ = serverResponse;
46-
}
47-
48-
get name(): string {
49-
return this.name_;
50-
}
51-
52-
get code(): string {
53-
return this.code_;
32+
return prependCode(code) === this.code;
5433
}
5534

5635
get message(): string {
57-
if (this.serverResponse_) {
58-
return this.message_ + '\n' + this.serverResponse_;
36+
if (this.customData.serverResponse) {
37+
return this.message + '\n' + this.customData.serverResponse;
5938
} else {
60-
return this.message_;
39+
return this.message;
6140
}
6241
}
6342

6443
get serverResponse(): null | string {
65-
return this.serverResponse_;
44+
return this.customData.serverResponse;
45+
}
46+
47+
set serverResponse(serverResponse: string | null) {
48+
this.customData.serverResponse = serverResponse;
6649
}
6750
}
6851

packages/storage/src/implementation/request.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ class NetworkRequest<T> implements Request<T> {
188188
} else {
189189
if (xhr !== null) {
190190
const err = unknown();
191-
err.setServerResponseProp(xhr.getResponseText());
191+
err.serverResponse = xhr.getResponseText();
192192
if (self.errorCallback_) {
193193
reject(self.errorCallback_(xhr, err));
194194
} else {

packages/storage/src/implementation/requests.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ export function sharedErrorHandler(
114114
}
115115
}
116116
}
117-
newErr.setServerResponseProp(err.serverResponseProp());
117+
newErr.serverResponse = err.serverResponse;
118118
return newErr;
119119
}
120120
return errorHandler;
@@ -133,7 +133,7 @@ export function objectErrorHandler(
133133
if (xhr.getStatus() === 404) {
134134
newErr = objectNotFound(location.path);
135135
}
136-
newErr.setServerResponseProp(err.serverResponseProp());
136+
newErr.serverResponse = err.serverResponse;
137137
return newErr;
138138
}
139139
return errorHandler;

0 commit comments

Comments
 (0)