mirror of
https://github.com/CodePhiliaX/Chat2DB.git
synced 2026-03-13 09:02:05 +08:00
store
This commit is contained in:
@@ -12,8 +12,8 @@ import { ITreeConfigItem, treeConfig } from '../treeConfig';
|
||||
import { useMemo } from 'react';
|
||||
|
||||
// ----- store -----
|
||||
import { createConsole, addWorkspaceTab } from '@/store/console';
|
||||
import { useWorkspaceStore } from '@/store/workspace';
|
||||
import { createConsole, addWorkspaceTab } from '@/pages/main/workspace/store/console';
|
||||
import { useWorkspaceStore } from '@/pages/main/workspace/store';
|
||||
|
||||
// ---- functions -----
|
||||
import { openView, openFunction, openProcedure, openTrigger } from '../functions/openAsyncSql';
|
||||
|
||||
@@ -15,7 +15,7 @@ import LoadingGracile from '@/components/Loading/LoadingGracile';
|
||||
import Driver from './components/Driver';
|
||||
|
||||
// ----- store -----
|
||||
import { useConnectionStore } from '@/store/connection';
|
||||
import { useConnectionStore } from '@/pages/main/store/connection';
|
||||
|
||||
const { Option } = Select;
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ const OperationLine = (props: IProps) => {
|
||||
</Button>
|
||||
</div>
|
||||
<div>
|
||||
{/* <SelectBoundInfo setBoundInfo={setBoundInfo} boundInfo={boundInfo} /> */}
|
||||
<SelectBoundInfo setBoundInfo={setBoundInfo} boundInfo={boundInfo} />
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import React, { useEffect, useMemo, useState } from 'react';
|
||||
import { IBoundInfo } from '../../index';
|
||||
import { Dropdown } from 'antd';
|
||||
import { useConnectionStore } from '@/store/connection';
|
||||
import { useConnectionStore } from '@/pages/main/store/connection';
|
||||
import connectionService from '@/service/connection';
|
||||
import styles from './index.less';
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import sqlService from '@/service/sql';
|
||||
import i18n from '@/i18n';
|
||||
import { debounce } from 'lodash';
|
||||
import { DatabaseTypeCode } from '@/constants';
|
||||
import { setOpenCreateDatabaseModal } from '@/store/workspace/modal';
|
||||
import { setOpenCreateDatabaseModal } from '@/pages/main/workspace/store/modal';
|
||||
|
||||
interface IProps {
|
||||
relyOnParams: {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import React, { memo } from 'react';
|
||||
import styles from './index.less';
|
||||
import classnames from 'classnames';
|
||||
import { useWorkspaceStore } from '@/store/workspace';
|
||||
import { togglePanelLeft, togglePanelRight } from '@/store/workspace/config';
|
||||
import { useWorkspaceStore } from '@/pages/main/workspace/store';
|
||||
import { togglePanelLeft, togglePanelRight } from '@/pages/main/workspace/store/config';
|
||||
|
||||
interface IProps {
|
||||
className?: string;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { setWorkspaceTabList, useConsoleStore, setActiveConsoleId } from '@/store/console';
|
||||
import { setWorkspaceTabList, setActiveConsoleId } from '@/pages/main/workspace/store/console';
|
||||
import { useWorkspaceStore } from '@/pages/main/workspace/store';
|
||||
import { ConsoleStatus, ConsoleOpenedStatus, WorkspaceTabType, DatabaseTypeCode } from '@/constants'
|
||||
import historyService from '@/service/history';
|
||||
|
||||
@@ -14,7 +15,7 @@ interface ICreateConsoleParams {
|
||||
}
|
||||
|
||||
function useCreateConsole() {
|
||||
const { workspaceTabList } = useConsoleStore(state => {
|
||||
const { workspaceTabList } = useWorkspaceStore(state => {
|
||||
return {
|
||||
workspaceTabList: state.workspaceTabList,
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import { useEffect } from 'react';
|
||||
import connectionService from '@/service/connection';
|
||||
|
||||
import { setConnectionEnvList, getConnectionList } from '@/store/connection';
|
||||
import { useWorkspaceStore } from '@/store/workspace';
|
||||
import { setCurrentConnectionDetails } from '@/store/workspace/common';
|
||||
import { setConnectionEnvList, getConnectionList } from '@/pages/main/store/connection';
|
||||
import { useWorkspaceStore } from '@/pages/main/workspace/store';
|
||||
import { setCurrentConnectionDetails } from '@/pages/main/workspace/store/common';
|
||||
|
||||
const useGetConnection = () => {
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ import MenuLabel from '@/components/MenuLabel';
|
||||
import useClickAndDoubleClick from '@/hooks/useClickAndDoubleClick';
|
||||
|
||||
// ----- store -----
|
||||
import { useConnectionStore, getConnectionList } from '@/store/connection';
|
||||
import { useConnectionStore, getConnectionList } from '@/pages/main/store/connection';
|
||||
|
||||
import styles from './index.less';
|
||||
|
||||
|
||||
@@ -88,19 +88,13 @@ function MainPage(props: IProps) {
|
||||
if (!activeNav) {
|
||||
return;
|
||||
}
|
||||
// activeNav 发生变化,同步到全局状态管理
|
||||
|
||||
activeNav.isLoad = true;
|
||||
dispatch({
|
||||
type: 'mainPage/updateCurPage',
|
||||
payload: activeNav.key,
|
||||
});
|
||||
// activeNav 发生变化 如果没有选中连接并且不在connections 那么需要跳转到 连接页面
|
||||
// if (!curConnection?.id && activeNav.key !== 'connections') {
|
||||
// setActiveNav(navConfig[2]);
|
||||
// }
|
||||
// activeNav 变化 同步地址栏变化
|
||||
// change url,but no page refresh
|
||||
// window.history.pushState({}, "", `/#/${activeNav.key}`);
|
||||
|
||||
}, [activeNav]);
|
||||
|
||||
useEffect(() => {
|
||||
|
||||
@@ -2,7 +2,7 @@ import React, { memo, useEffect, useState } from 'react';
|
||||
import styles from './index.less';
|
||||
import classnames from 'classnames';
|
||||
|
||||
import { useWorkspaceStore } from '@/store/workspace';
|
||||
import { useWorkspaceStore } from '@/pages/main/workspace/store';
|
||||
|
||||
// ----- components -----
|
||||
import OperationLine from '../OperationLine';
|
||||
|
||||
@@ -10,7 +10,7 @@ import { DatabaseTypeCode } from '@/constants';
|
||||
import Iconfont from '@/components/Iconfont';
|
||||
|
||||
// ----- store -----
|
||||
import { useWorkspaceStore } from '@/store/workspace';
|
||||
import { useWorkspaceStore } from '@/pages/main/workspace/store';
|
||||
|
||||
interface IProps {
|
||||
searchValue: string;
|
||||
|
||||
@@ -4,7 +4,7 @@ import classnames from 'classnames';
|
||||
import { Popover } from 'antd';
|
||||
import Iconfont from '@/components/Iconfont';
|
||||
import Output from '@/components/Output';
|
||||
import { useWorkspaceStore } from '@/store/workspace';
|
||||
import { useWorkspaceStore } from '@/pages/main/workspace/store';
|
||||
import i18n from '@/i18n';
|
||||
|
||||
interface IProps {
|
||||
|
||||
@@ -4,9 +4,9 @@ import classnames from 'classnames';
|
||||
import styles from './index.less';
|
||||
|
||||
// ---- store ----
|
||||
import { useConnectionStore } from '@/store/connection';
|
||||
import { useWorkspaceStore } from '@/store/workspace';
|
||||
import { setCurrentConnectionDetails } from '@/store/workspace/common';
|
||||
import { useConnectionStore } from '@/pages/main/store/connection';
|
||||
import { useWorkspaceStore } from '@/pages/main/workspace/store';
|
||||
import { setCurrentConnectionDetails } from '@/pages/main/workspace/store/common';
|
||||
|
||||
// ----- components -----
|
||||
import Iconfont from '@/components/Iconfont';
|
||||
|
||||
@@ -20,8 +20,8 @@ import Iconfont from '@/components/Iconfont';
|
||||
import ShortcutKey from '@/components/ShortcutKey';
|
||||
|
||||
// ---- store -----
|
||||
import { useConsoleStore, getSavedConsoleList, setActiveConsoleId, setWorkspaceTabList } from '@/store/console';
|
||||
import { useWorkspaceStore } from '@/store/workspace';
|
||||
import { getSavedConsoleList, setActiveConsoleId, setWorkspaceTabList } from '@/pages/main/workspace/store/console';
|
||||
import { useWorkspaceStore } from '@/pages/main/workspace/store';
|
||||
|
||||
// ----- services -----
|
||||
import historyService from '@/service/history';
|
||||
@@ -29,7 +29,8 @@ import historyService from '@/service/history';
|
||||
import indexedDB from '@/indexedDB';
|
||||
|
||||
const WorkspaceTabs = memo(() => {
|
||||
const { activeConsoleId, consoleList, workspaceTabList } = useConsoleStore((state) => {
|
||||
|
||||
const { activeConsoleId, consoleList, workspaceTabList } = useWorkspaceStore((state) => {
|
||||
return {
|
||||
consoleList: state.consoleList,
|
||||
activeConsoleId: state.activeConsoleId,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import React, { memo, useRef } from 'react';
|
||||
import classnames from 'classnames';
|
||||
|
||||
import { useWorkspaceStore } from '@/store/workspace';
|
||||
import { useWorkspaceStore } from '@/pages/main/workspace/store';
|
||||
|
||||
import DraggableContainer from '@/components/DraggableContainer';
|
||||
import WorkspaceLeft from './components/WorkspaceLeft';
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
import { UseBoundStoreWithEqualityFn, createWithEqualityFn } from 'zustand/traditional';
|
||||
import { devtools } from 'zustand/middleware';
|
||||
import { shallow } from 'zustand/shallow';
|
||||
import { StoreApi } from 'zustand';
|
||||
import { useWorkspaceStore } from './index';
|
||||
import { IConsole, ICreateConsoleParams } from '@/typings';
|
||||
import { IWorkspaceTab } from '@/typings/workspace';
|
||||
import historyService from '@/service/history';
|
||||
@@ -13,37 +10,32 @@ export interface IConsoleStore {
|
||||
workspaceTabList: IWorkspaceTab[] | null;
|
||||
}
|
||||
|
||||
const initConsoleStore = {
|
||||
export const initConsoleStore = {
|
||||
consoleList: null,
|
||||
activeConsoleId: null,
|
||||
workspaceTabList: null,
|
||||
}
|
||||
|
||||
export const useConsoleStore: UseBoundStoreWithEqualityFn<StoreApi<IConsoleStore>> = createWithEqualityFn(
|
||||
devtools(() => (initConsoleStore)),
|
||||
shallow
|
||||
);
|
||||
|
||||
export const getSavedConsoleList = () => {
|
||||
historyService.getSavedConsoleList({
|
||||
tabOpened: 'y',
|
||||
pageNo: 1,
|
||||
pageSize: 20,
|
||||
}).then((res) => {
|
||||
useConsoleStore.setState({ consoleList: res?.data });
|
||||
useWorkspaceStore.setState({ consoleList: res?.data });
|
||||
});
|
||||
}
|
||||
|
||||
export const setActiveConsoleId = (id: IConsoleStore['activeConsoleId']) => {
|
||||
useConsoleStore.setState({ activeConsoleId: id });
|
||||
useWorkspaceStore.setState({ activeConsoleId: id });
|
||||
}
|
||||
|
||||
export const setWorkspaceTabList = (items: IConsoleStore['workspaceTabList']) => {
|
||||
useConsoleStore.setState({ workspaceTabList: items });
|
||||
useWorkspaceStore.setState({ workspaceTabList: items });
|
||||
}
|
||||
|
||||
export const createConsole = (params: ICreateConsoleParams)=>{
|
||||
const workspaceTabList = useConsoleStore.getState().workspaceTabList;
|
||||
const workspaceTabList = useWorkspaceStore.getState().workspaceTabList;
|
||||
const newConsole = {
|
||||
...params,
|
||||
name: params.name || 'create console',
|
||||
@@ -71,7 +63,7 @@ export const createConsole = (params: ICreateConsoleParams)=>{
|
||||
}
|
||||
|
||||
export const addWorkspaceTab = (params: IWorkspaceTab) => {
|
||||
const workspaceTabList = useConsoleStore.getState().workspaceTabList;
|
||||
const workspaceTabList = useWorkspaceStore.getState().workspaceTabList;
|
||||
if(workspaceTabList?.findIndex((item) => item?.id === params?.id) !== -1){
|
||||
setActiveConsoleId(params.id);
|
||||
return;
|
||||
@@ -4,7 +4,7 @@ import { shallow } from 'zustand/shallow';
|
||||
import { StoreApi } from 'zustand';
|
||||
|
||||
import { initConfigStore, IConfigStore } from './config';
|
||||
import { consoleStore, IConsoleStore } from './console';
|
||||
import { initConsoleStore, IConsoleStore } from './console';
|
||||
import { initCommonStore, ICommonStore } from './common';
|
||||
import { initModalStore , IModalStore } from './modal';
|
||||
|
||||
@@ -13,8 +13,8 @@ export type IStore = IConfigStore & IConsoleStore & ICommonStore & IModalStore;
|
||||
export const useWorkspaceStore: UseBoundStoreWithEqualityFn<StoreApi<IStore>> = createWithEqualityFn(
|
||||
devtools(
|
||||
persist(
|
||||
(set) => ({
|
||||
...consoleStore(set),
|
||||
() => ({
|
||||
...initConsoleStore,
|
||||
...initConfigStore,
|
||||
...initCommonStore,
|
||||
...initModalStore,
|
||||
@@ -1,43 +0,0 @@
|
||||
export interface IConsoleStore {
|
||||
activeTab: {
|
||||
activeConsole: {
|
||||
id: string | number | null;
|
||||
};
|
||||
activeSearchResult: {
|
||||
id: string | number | null;
|
||||
};
|
||||
};
|
||||
setActiveConsole: (props: IActiveTabData) => void;
|
||||
setActiveSearchResult: (props: IActiveTabData) => void;
|
||||
}
|
||||
|
||||
type IActiveTabData = {
|
||||
id: string | number;
|
||||
} | null
|
||||
|
||||
export const consoleStore = (set): IConsoleStore => ({
|
||||
activeTab: {
|
||||
activeConsole: {
|
||||
id: null,
|
||||
},
|
||||
activeSearchResult: {
|
||||
id: null,
|
||||
},
|
||||
},
|
||||
setActiveConsole: (activeConsole: IActiveTabData) => {
|
||||
return set((state) => ({
|
||||
activeTab: {
|
||||
...state.activeTab,
|
||||
activeConsole,
|
||||
},
|
||||
}));
|
||||
},
|
||||
setActiveSearchResult: (activeSearchResult: IActiveTabData) => {
|
||||
return set((state) => ({
|
||||
activeTab: {
|
||||
...state.activeTab,
|
||||
activeSearchResult,
|
||||
},
|
||||
}));
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user