@@ -45,6 +45,25 @@ const instance = axios.create({
4545
4646const nprogress = useNProgress ( )
4747
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+
4867instance . interceptors . request . use (
4968 config => {
5069 nprogress . start ( )
@@ -70,16 +89,16 @@ instance.interceptors.request.use(
7089 } ,
7190)
7291
92+ const dedupe = useMessageDedupe ( )
93+
7394instance . interceptors . response . use (
7495 response => {
7596 nprogress . done ( )
76-
7797 return Promise . resolve ( response . data )
7898 } ,
7999 // eslint-disable-next-line sonarjs/cognitive-complexity
80100 async error => {
81101 nprogress . done ( )
82-
83102 const otpModal = use2FAModal ( )
84103 switch ( error . response . status ) {
85104 case 401 :
@@ -110,26 +129,26 @@ instance.interceptors.response.use(
110129 const msg = errors ?. [ err . scope ] ?. [ err . code ]
111130
112131 if ( msg ) {
113- // if err has parmas
132+ // if err has params
114133 if ( err ?. params && err . params . length > 0 ) {
115134 let res = msg ( )
116135
117136 err . params . forEach ( ( param , index ) => {
118137 res = res . replaceAll ( `{${ index } }` , param )
119138 } )
120139
121- message . error ( res , 5 )
140+ dedupe . error ( res )
122141 }
123142 else {
124- message . error ( msg ( ) , 5 )
143+ dedupe . error ( msg ( ) )
125144 }
126145 }
127146 else {
128- message . error ( $gettext ( err ?. message ?? 'Server error' ) )
147+ dedupe . error ( $gettext ( err ?. message ?? 'Server error' ) )
129148 }
130149 }
131150 else {
132- message . error ( $gettext ( err ?. message ?? 'Server error' ) )
151+ dedupe . error ( $gettext ( err ?. message ?? 'Server error' ) )
133152 }
134153
135154 return Promise . reject ( error . response . data )
0 commit comments