diff --git a/packages/cfd/src/Containers/__tests__/cfd-server-error-dialog.spec.js b/packages/cfd/src/Containers/__tests__/cfd-server-error-dialog.spec.js
index dbe28275cdd0..c424c8a7ce38 100644
--- a/packages/cfd/src/Containers/__tests__/cfd-server-error-dialog.spec.js
+++ b/packages/cfd/src/Containers/__tests__/cfd-server-error-dialog.spec.js
@@ -13,6 +13,9 @@ describe(' ', () => {
let mockRootStore;
beforeEach(() => {
mockRootStore = {
+ client: {
+ is_authorize: false,
+ },
ui: {
disableApp: jest.fn(),
enableApp: jest.fn(),
@@ -53,6 +56,9 @@ describe(' ', () => {
it('should not render the component if has_cfd_error is false', () => {
const new_mockRootStore = {
+ client: {
+ is_authorize: false,
+ },
ui: {
...mockRootStore.ui,
},
@@ -72,6 +78,9 @@ describe(' ', () => {
it('should not render the component if is_cfd_success_dialog_enabled', () => {
const new_mockRootStore = {
+ client: {
+ is_authorize: false,
+ },
ui: {
...mockRootStore.ui,
},
diff --git a/packages/core/src/Stores/client-store.js b/packages/core/src/Stores/client-store.js
index d7c1c6ca82fd..f3ed69fe216a 100644
--- a/packages/core/src/Stores/client-store.js
+++ b/packages/core/src/Stores/client-store.js
@@ -2118,8 +2118,8 @@ export default class ClientStore extends BaseStore {
if (response?.logout === 1) {
this.cleanUp();
-
RudderStack.reset();
+ this.setIsAuthorize(false);
this.setLogout(true);
}
diff --git a/packages/stores/src/mockStore.ts b/packages/stores/src/mockStore.ts
index a6d20e11ec82..0c0299471829 100644
--- a/packages/stores/src/mockStore.ts
+++ b/packages/stores/src/mockStore.ts
@@ -432,6 +432,11 @@ const mock = (): TStores & { is_mock: boolean } => {
update: jest.fn(),
unmount: jest.fn(),
},
+ website_status: {
+ data: undefined,
+ update: jest.fn(),
+ unmount: jest.fn(),
+ },
feature_flags: {
data: undefined,
update: jest.fn(),
diff --git a/packages/stores/src/providers/WebsiteStatusProvider.tsx b/packages/stores/src/providers/WebsiteStatusProvider.tsx
new file mode 100644
index 000000000000..42ad2e41fa90
--- /dev/null
+++ b/packages/stores/src/providers/WebsiteStatusProvider.tsx
@@ -0,0 +1,29 @@
+import React, { useEffect } from 'react';
+import { useSubscription } from '@deriv/api';
+import { observer } from 'mobx-react-lite';
+import useStore from '../useStore';
+import merge from 'lodash.merge';
+
+const WebsiteStatusProvider = observer(({ children }: React.PropsWithChildren) => {
+ const { data, subscribe, unsubscribe } = useSubscription('website_status');
+ const {
+ client: { is_authorize },
+ website_status: { update },
+ } = useStore();
+
+ useEffect(() => {
+ if (data) {
+ const { website_status } = data;
+ if (website_status) update(prev => merge(prev, website_status));
+ }
+ }, [update, data]);
+
+ useEffect(() => {
+ if (is_authorize) unsubscribe()
+ subscribe()
+ }, [is_authorize, subscribe, unsubscribe]);
+
+ return <>{children}>;
+});
+
+export default WebsiteStatusProvider;
diff --git a/packages/stores/src/providers/index.ts b/packages/stores/src/providers/index.ts
index ef166d8bd2b9..b998b4d94b35 100644
--- a/packages/stores/src/providers/index.ts
+++ b/packages/stores/src/providers/index.ts
@@ -1 +1,2 @@
export { default as ExchangeRatesProvider } from './ExchangeRatesProvider';
+export { default as WebsiteStatusProvider } from './WebsiteStatusProvider';
diff --git a/packages/stores/src/storeProvider.tsx b/packages/stores/src/storeProvider.tsx
index 73a35d0b28f3..67e8a02c849a 100644
--- a/packages/stores/src/storeProvider.tsx
+++ b/packages/stores/src/storeProvider.tsx
@@ -1,7 +1,7 @@
import React, { useEffect, useMemo } from 'react';
-import { ExchangeRatesProvider } from './providers';
import StoreContext from './storeContext';
-import { ExchangeRatesStore, FeatureFlagsStore } from './stores';
+import { ExchangeRatesStore, FeatureFlagsStore, WebsiteStatusStore } from './stores';
+import { ExchangeRatesProvider, WebsiteStatusProvider } from './providers';
import type { TCoreStores, TStores } from '../types';
const StoreProvider = ({ children, store }: React.PropsWithChildren<{ store: TCoreStores }>) => {
@@ -14,6 +14,7 @@ const StoreProvider = ({ children, store }: React.PropsWithChildren<{ store: TCo
...store,
exchange_rates: new ExchangeRatesStore(),
feature_flags: new FeatureFlagsStore(),
+ website_status: new WebsiteStatusStore(),
};
}, [store]);
@@ -27,7 +28,9 @@ const StoreProvider = ({ children, store }: React.PropsWithChildren<{ store: TCo
return (
- {children}
+
+ {children}
+
);
};
diff --git a/packages/stores/src/stores/WebsiteStatusStore.ts b/packages/stores/src/stores/WebsiteStatusStore.ts
new file mode 100644
index 000000000000..5a10cc551026
--- /dev/null
+++ b/packages/stores/src/stores/WebsiteStatusStore.ts
@@ -0,0 +1,8 @@
+import type { ServerStatusResponse } from '@deriv/api-types';
+import BaseStore from './BaseStore';
+
+export default class WebsiteStatusStore extends BaseStore {
+ constructor() {
+ super('WebsiteStatusStore');
+ }
+}
diff --git a/packages/stores/src/stores/index.ts b/packages/stores/src/stores/index.ts
index 83324af5936b..1b725c02362d 100644
--- a/packages/stores/src/stores/index.ts
+++ b/packages/stores/src/stores/index.ts
@@ -1,2 +1,3 @@
export { default as ExchangeRatesStore } from './ExchangeRatesStore';
export { default as FeatureFlagsStore } from './FeatureFlagsStore';
+export { default as WebsiteStatusStore } from './WebsiteStatusStore';
diff --git a/packages/stores/types.ts b/packages/stores/types.ts
index 0b8532114400..d10eb8d2a34b 100644
--- a/packages/stores/types.ts
+++ b/packages/stores/types.ts
@@ -14,7 +14,7 @@ import type {
} from '@deriv/api-types';
import type { Moment } from 'moment';
import type { RouteComponentProps } from 'react-router';
-import type { ExchangeRatesStore, FeatureFlagsStore } from './src/stores';
+import type { ExchangeRatesStore, FeatureFlagsStore, WebsiteStatusStore } from './src/stores';
type TPopulateSettingsExtensionsMenuItem = {
icon: string;
@@ -498,5 +498,6 @@ export type TCoreStores = {
export type TStores = TCoreStores & {
exchange_rates: ExchangeRatesStore;
+ website_status: WebsiteStatusStore;
feature_flags: FeatureFlagsStore;
};