Skip to content
This repository was archived by the owner on May 13, 2024. It is now read-only.

Commit fc06184

Browse files
committed
fix: balance api call
1 parent 8bef163 commit fc06184

File tree

3 files changed

+24
-12
lines changed

3 files changed

+24
-12
lines changed

src/features/Apiexplorer/SubscribeRenderer/__tests__/SubscribeRenderer.test.tsx

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,8 +84,6 @@ describe('SubscribeRenderer', () => {
8484
expect(button).toBeVisible();
8585

8686
await userEvent.click(button);
87-
88-
expect(mockUnsubscribe).toBeCalledTimes(1);
8987
expect(mockSubscribe).toBeCalledTimes(1);
9088
expect(mockSubscribe).toBeCalledWith({ ticks: 'R_50', subscribe: 1 });
9189
});
@@ -96,8 +94,6 @@ describe('SubscribeRenderer', () => {
9694
expect(button).toBeVisible();
9795

9896
await userEvent.click(button);
99-
100-
expect(mockUnsubscribe).toBeCalledTimes(1);
10197
});
10298

10399
it('should throw an error if incorrect json is being parsed', async () => {

src/features/Apiexplorer/SubscribeRenderer/index.tsx

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useState, useCallback, useEffect } from 'react';
1+
import React, { useState, useCallback, useEffect, useRef } from 'react';
22
import {
33
TSocketSubscribableEndpointNames,
44
TSocketRequestProps,
@@ -30,10 +30,16 @@ function SubscribeRenderer<T extends TSocketSubscribableEndpointNames>({
3030
const [toggle_modal, setToggleModal] = useState(false);
3131
const [is_not_valid, setIsNotValid] = useState(false);
3232

33+
const subscribe_ref: any = useRef();
34+
3335
useEffect(() => {
3436
if (error && error.code === 'AuthorizationRequired') {
3537
setToggleModal(true);
3638
}
39+
40+
return () => {
41+
if (subscribe_ref.current) subscribe_ref.current.unsubscribe();
42+
};
3743
}, [error]);
3844

3945
const parseRequestJSON = () => {
@@ -51,13 +57,13 @@ function SubscribeRenderer<T extends TSocketSubscribableEndpointNames>({
5157
};
5258

5359
const handleClick = useCallback(() => {
54-
unsubscribe();
55-
subscribe(parseRequestJSON());
60+
if (subscribe_ref.current) subscribe_ref.current.unsubscribe();
61+
subscribe_ref.current = subscribe(parseRequestJSON());
5662
setResponseState(true);
57-
}, [reqData, subscribe, unsubscribe]);
63+
}, [subscribe, unsubscribe]);
5864

5965
const handleClear = () => {
60-
unsubscribe();
66+
subscribe_ref.current?.unsubscribe?.();
6167
setResponseState(false);
6268
};
6369

@@ -88,4 +94,4 @@ function SubscribeRenderer<T extends TSocketSubscribableEndpointNames>({
8894
);
8995
}
9096

91-
export default SubscribeRenderer;
97+
export default React.memo(SubscribeRenderer);

src/hooks/useSubscription/index.tsx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ const useSubscription = <T extends TSocketSubscribableEndpointNames>(name: T) =>
3838
(data: Parameters<typeof apiManager.augmentedSubscribe<T>>[1]) => {
3939
setIsLoading(true);
4040
setSubscribed(true);
41-
setSubscriber(apiManager.augmentedSubscribe(name, data).subscribe(onData, onError));
41+
const subscriber_ref = apiManager.augmentedSubscribe(name, data).subscribe(onData, onError);
42+
setSubscriber(subscriber_ref);
43+
return subscriber_ref;
4244
},
4345
[name, onData, onError],
4446
);
@@ -48,7 +50,15 @@ const useSubscription = <T extends TSocketSubscribableEndpointNames>(name: T) =>
4850
setSubscribed(false);
4951
}, [subscriber]);
5052

51-
return { subscribe, unsubscribe, is_loading, is_subscribed, error, data, full_response };
53+
return {
54+
subscribe,
55+
unsubscribe,
56+
is_loading,
57+
is_subscribed,
58+
error,
59+
data,
60+
full_response,
61+
};
5262
};
5363

5464
export default useSubscription;

0 commit comments

Comments
 (0)