-
Notifications
You must be signed in to change notification settings - Fork 62
/
BeaconError.ts
67 lines (62 loc) · 2.3 KB
/
BeaconError.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import { assertNever } from '../utils/assert-never'
import {
AbortedBeaconError,
UnknownBeaconError,
NetworkNotSupportedBeaconError,
NoAddressBeaconError,
NoPrivateKeyBeaconError,
NotGrantedBeaconError,
ParametersInvalidBeaconError,
TooManyOperationsBeaconError,
TransactionInvalidBeaconError,
SignatureTypeNotSupportedBeaconError,
BroadcastBeaconError
// EncryptionTypeNotSupportedBeaconError
} from '..'
import { BeaconErrorType } from '@airgap/beacon-types'
/**
* @category Error
*/
export abstract class BeaconError implements Error {
public name: string = 'BeaconError'
public message: string
public title: string = 'Error' // Visible in the UI
public description: string // Visible in the UI
public get fullDescription(): { description: string; data?: string } {
return { description: this.description }
}
constructor(errorType: BeaconErrorType, message: string) {
this.message = `[${errorType}]:${message}`
this.description = message
}
public static getError(errorType: BeaconErrorType, errorData: unknown): BeaconError {
switch (errorType) {
case BeaconErrorType.BROADCAST_ERROR:
return new BroadcastBeaconError()
case BeaconErrorType.NETWORK_NOT_SUPPORTED:
return new NetworkNotSupportedBeaconError()
case BeaconErrorType.NO_ADDRESS_ERROR:
return new NoAddressBeaconError()
case BeaconErrorType.NO_PRIVATE_KEY_FOUND_ERROR:
return new NoPrivateKeyBeaconError()
case BeaconErrorType.NOT_GRANTED_ERROR:
return new NotGrantedBeaconError()
case BeaconErrorType.PARAMETERS_INVALID_ERROR:
return new ParametersInvalidBeaconError()
case BeaconErrorType.TOO_MANY_OPERATIONS:
return new TooManyOperationsBeaconError()
case BeaconErrorType.TRANSACTION_INVALID_ERROR:
return new TransactionInvalidBeaconError(errorData)
case BeaconErrorType.SIGNATURE_TYPE_NOT_SUPPORTED:
return new SignatureTypeNotSupportedBeaconError()
// case BeaconErrorType.ENCRYPTION_TYPE_NOT_SUPPORTED:
// return new EncryptionTypeNotSupportedBeaconError()
case BeaconErrorType.ABORTED_ERROR:
return new AbortedBeaconError()
case BeaconErrorType.UNKNOWN_ERROR:
return new UnknownBeaconError()
default:
assertNever(errorType)
}
}
}