Skip to content

Commit 818d6f8

Browse files
authored
fix: api error toast (#5906)
(cherry picked from commit f209c55)
1 parent 8ca12ac commit 818d6f8

File tree

5 files changed

+28
-4
lines changed

5 files changed

+28
-4
lines changed

packages/kit/src/provider/Container/ErrorToastContainer/ErrorToastContainer.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export function ErrorToastContainer() {
2323
let toastId = isFilterErrorCode(p.errorCode)
2424
? String(p.errorCode)
2525
: undefined;
26-
toastId = toastId || message;
26+
toastId = toastId || (p.title ? p.title : message);
2727
const actions = isRequestIdMessage(message) ? (
2828
<Button
2929
size="small"

packages/shared/src/errors/errors/baseErrors.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ export class OneKeyError<
5959
let requestId: string | undefined;
6060
let className: EOneKeyErrorClassNames | undefined;
6161
let name: string | undefined;
62+
let disableFallbackMessage: boolean | undefined;
6263

6364
if (!isString(errorProps) && errorProps && isObject(errorProps)) {
6465
({
@@ -72,6 +73,7 @@ export class OneKeyError<
7273
payload: hardwareErrorPayload,
7374
className,
7475
name,
76+
disableFallbackMessage,
7577
} = errorProps);
7678
} else {
7779
msg = isString(errorProps) ? errorProps : '';
@@ -83,7 +85,11 @@ export class OneKeyError<
8385
// * empty string not allowed in Web3RpcError, give a fakeMessage by default
8486
// * can not access this.key before constructor
8587
msg ||
86-
`Unknown Onekey Internal Error. ${[key].filter(Boolean).join(':')}`,
88+
(disableFallbackMessage
89+
? ''
90+
: `Unknown Onekey Internal Error. ${[key]
91+
.filter(Boolean)
92+
.join(':')}`),
8793
data,
8894
);
8995

packages/shared/src/errors/types/errorTypes.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ export interface IOneKeyError<
7777

7878
// ---server props
7979
requestId?: string;
80+
disableFallbackMessage?: boolean;
8081
}
8182

8283
export type IOneKeyHardwareErrorPayload = {

packages/shared/src/errors/utils/errorToastUtils.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { HardwareErrorCode } from '@onekeyfe/hd-shared';
21
import axios from 'axios';
32
import { isPlainObject } from 'lodash';
43

@@ -34,10 +33,23 @@ function showToastOfError(error: IOneKeyError | unknown | undefined) {
3433
) {
3534
return;
3635
}
36+
let shouldMuteToast = false;
37+
if (
38+
err?.className === EOneKeyErrorClassNames.OneKeyServerApiError &&
39+
!err?.message
40+
) {
41+
shouldMuteToast = true;
42+
}
3743
const isTriggered = err?.$$autoToastErrorTriggered;
3844
const isSameError = lastToastErrorInstance === err;
3945
// TODO log error to file if developer mode on
40-
if (err && err?.autoToast && !isTriggered && !isSameError) {
46+
if (
47+
err &&
48+
err?.autoToast &&
49+
!isTriggered &&
50+
!isSameError &&
51+
!shouldMuteToast
52+
) {
4153
err.$$autoToastErrorTriggered = true;
4254
lastToastErrorInstance = err;
4355
appEventBus.emit(EAppEventBusNames.ShowToast, {

packages/shared/src/request/axiosInterceptor.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@ axios.interceptors.response.use(
7373

7474
const data = response.data as IOneKeyAPIBaseResponse;
7575

76+
// test code
77+
// data.code = 4485;
78+
// data.message = 'hhhh';
79+
7680
if (data.code !== 0) {
7781
const requestIdKey = HEADER_REQUEST_ID_KEY;
7882
if (platformEnv.isDev) {
@@ -81,6 +85,7 @@ axios.interceptors.response.use(
8185

8286
throw new OneKeyServerApiError({
8387
autoToast: true,
88+
disableFallbackMessage: true,
8489
message: data.message,
8590
code: data.code,
8691
data,

0 commit comments

Comments
 (0)