@@ -45,6 +45,25 @@ const instance = axios.create({
45
45
46
46
const nprogress = useNProgress ( )
47
47
48
+ // Add new dedupe utility at the top
49
+ interface MessageDedupe {
50
+ error : ( content : string , duration ?: number ) => void
51
+ }
52
+
53
+ function useMessageDedupe ( interval = 5000 ) : MessageDedupe {
54
+ const lastMessages = new Map < string , number > ( )
55
+
56
+ return {
57
+ async error ( content , duration = 5 ) {
58
+ const now = Date . now ( )
59
+ if ( ! lastMessages . has ( content ) || ( now - ( lastMessages . get ( content ) || 0 ) ) > interval ) {
60
+ lastMessages . set ( content , now )
61
+ message . error ( content , duration )
62
+ }
63
+ } ,
64
+ }
65
+ }
66
+
48
67
instance . interceptors . request . use (
49
68
config => {
50
69
nprogress . start ( )
@@ -70,16 +89,16 @@ instance.interceptors.request.use(
70
89
} ,
71
90
)
72
91
92
+ const dedupe = useMessageDedupe ( )
93
+
73
94
instance . interceptors . response . use (
74
95
response => {
75
96
nprogress . done ( )
76
-
77
97
return Promise . resolve ( response . data )
78
98
} ,
79
99
// eslint-disable-next-line sonarjs/cognitive-complexity
80
100
async error => {
81
101
nprogress . done ( )
82
-
83
102
const otpModal = use2FAModal ( )
84
103
switch ( error . response . status ) {
85
104
case 401 :
@@ -110,26 +129,26 @@ instance.interceptors.response.use(
110
129
const msg = errors ?. [ err . scope ] ?. [ err . code ]
111
130
112
131
if ( msg ) {
113
- // if err has parmas
132
+ // if err has params
114
133
if ( err ?. params && err . params . length > 0 ) {
115
134
let res = msg ( )
116
135
117
136
err . params . forEach ( ( param , index ) => {
118
137
res = res . replaceAll ( `{${ index } }` , param )
119
138
} )
120
139
121
- message . error ( res , 5 )
140
+ dedupe . error ( res )
122
141
}
123
142
else {
124
- message . error ( msg ( ) , 5 )
143
+ dedupe . error ( msg ( ) )
125
144
}
126
145
}
127
146
else {
128
- message . error ( $gettext ( err ?. message ?? 'Server error' ) )
147
+ dedupe . error ( $gettext ( err ?. message ?? 'Server error' ) )
129
148
}
130
149
}
131
150
else {
132
- message . error ( $gettext ( err ?. message ?? 'Server error' ) )
151
+ dedupe . error ( $gettext ( err ?. message ?? 'Server error' ) )
133
152
}
134
153
135
154
return Promise . reject ( error . response . data )
0 commit comments