-
Notifications
You must be signed in to change notification settings - Fork 83
Expand file tree
/
Copy pathuseApiBase.ts
More file actions
50 lines (44 loc) · 2.03 KB
/
Copy pathuseApiBase.ts
File metadata and controls
50 lines (44 loc) · 2.03 KB
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
import { useEffect, useState } from 'react';
import {
account_list$,
authData$,
CONNECTION_STATUS,
connectionStatus$,
isAuthorized$,
isAuthorizing$,
} from '@/external/bot-skeleton/services/api/observables/connection-status-stream';
import { TAuthData } from '@/types/api-types';
export const useApiBase = () => {
const [connectionStatus, setConnectionStatus] = useState<CONNECTION_STATUS>(CONNECTION_STATUS.UNKNOWN);
const [isAuthorized, setIsAuthorized] = useState<boolean>(false);
const [isAuthorizing, setIsAuthorizing] = useState<boolean>(true); // Will be overridden by observable stream which now starts with true
const [accountList, setAccountList] = useState<TAuthData['account_list']>([]);
const [authData, setAuthData] = useState<TAuthData | null>(null);
const [activeLoginid, setActiveLoginid] = useState<string>('');
useEffect(() => {
const connectionStatusSubscription = connectionStatus$.subscribe(status => {
setConnectionStatus(status as CONNECTION_STATUS);
});
const isAuthorizedSubscription = isAuthorized$.subscribe(isAuthorized => {
setIsAuthorized(isAuthorized);
});
const isAuthorizingSubscription = isAuthorizing$.subscribe(isAuthorizing => {
setIsAuthorizing(isAuthorizing);
});
const accountListSubscription = account_list$.subscribe(accountList => {
setAccountList(accountList);
});
const authDataSubscription = authData$.subscribe(authData => {
setAuthData(authData);
setActiveLoginid(authData?.loginid ?? '');
});
return () => {
connectionStatusSubscription.unsubscribe();
isAuthorizedSubscription.unsubscribe();
isAuthorizingSubscription.unsubscribe();
accountListSubscription.unsubscribe();
authDataSubscription.unsubscribe();
};
}, []);
return { connectionStatus, isAuthorized, isAuthorizing, accountList, authData, activeLoginid, setIsAuthorizing };
};