diff --git a/src/Routes/Base/SidebarLeft/index.js b/src/Routes/Base/SidebarLeft/index.js
index 5f82a2275..ec5f522da 100644
--- a/src/Routes/Base/SidebarLeft/index.js
+++ b/src/Routes/Base/SidebarLeft/index.js
@@ -72,8 +72,6 @@ const LogoContainer = styled.div`
display: flex;
`;
-const equalByGuideOn = (a, b) => a.isOn === b.isOn;
-
const sidebarSelector = state => ({
[LEFT_SIDEBAR_NAMES.JOBS]: selectors.jobs.count(state),
[LEFT_SIDEBAR_NAMES.PIPELINES]: selectors.pipelines.collection.count(state),
@@ -100,7 +98,7 @@ const Name = styled.span`
const SidebarLeft = () => {
const dataCountSource = useSelector(sidebarSelector, isEqual);
- const { isOn } = useSelector(state => state.userGuide, equalByGuideOn);
+ const { isOn } = useSelector(selectors.userGuide);
const location = useLocation();
const dataCount = isOn ? dataCountMock : dataCountSource;
const { isCollapsed, toggle } = useLeftSidebar();
diff --git a/src/Routes/Base/UserGuide/index.js b/src/Routes/Base/UserGuide/index.js
index a5ab66663..907d6e301 100644
--- a/src/Routes/Base/UserGuide/index.js
+++ b/src/Routes/Base/UserGuide/index.js
@@ -2,6 +2,7 @@ import React, { useCallback } from 'react';
import { useSelector, useDispatch } from 'react-redux';
import Joyride, { EVENTS, ACTIONS } from 'react-joyride';
import { useHistory } from 'react-router-dom';
+import { selectors } from 'reducers';
import {
triggerUserGuide,
changeStep as _changeStep,
@@ -13,13 +14,11 @@ import UserGuideTooltip from './UserGuideTooltip.react';
const stepAction = [ACTIONS.NEXT, ACTIONS.PREV, ACTIONS.INIT, ACTIONS.UPDATE];
-const isOnEqual = (a, b) => a.isOn === b.isOn;
-
const UserGuide = () => {
const history = useHistory();
const { setCollapsed } = useLeftSidebar();
- const { isOn } = useSelector(state => state.userGuide, isOnEqual);
+ const { isOn } = useSelector(selectors.userGuide);
const dispatch = useDispatch();
const trigger = useCallback(() => dispatch(triggerUserGuide()), [dispatch]);
diff --git a/src/Routes/SidebarRight/AddDataSource/index.js b/src/Routes/SidebarRight/AddDataSource/index.js
index e46d21c08..a0e3cb34b 100644
--- a/src/Routes/SidebarRight/AddDataSource/index.js
+++ b/src/Routes/SidebarRight/AddDataSource/index.js
@@ -1,11 +1,12 @@
import React, { useCallback, useContext, useState } from 'react';
import PropTypes from 'prop-types';
-import { useDispatch } from 'react-redux';
+import { useDispatch, useSelector } from 'react-redux';
import { Input, Icon, Form, Button, Alert } from 'antd';
import { BottomContent } from 'components/common';
import { createDataSource } from 'actions/dataSources';
import UploadDragger, { useDragger } from 'components/UploadDragger';
import { DRAWER_SIZE } from 'const';
+import { selectors } from 'reducers';
import ctx from './../ctx';
/** @type {import('antd/lib/upload/interface').UploadFile[]} */
@@ -15,12 +16,11 @@ const AddDataSource = ({ form }) => {
const context = useContext(ctx);
const { getFieldDecorator, validateFields } = form;
const dispatch = useDispatch();
-
const [addedFiles, setAddedFiles] = useState(initialState);
const { onChange, customRequest } = useDragger({
setFileList: setAddedFiles,
});
-
+ const SubmittingStatus = useSelector(selectors.dataSources.createStatus);
const onSubmit = useCallback(
e => {
e.preventDefault();
@@ -67,8 +67,12 @@ const AddDataSource = ({ form }) => {
-
-