Skip to content

Commit 78f3eba

Browse files
committed
feat: refactor service interface
1 parent 1c8def7 commit 78f3eba

File tree

6 files changed

+34
-31
lines changed

6 files changed

+34
-31
lines changed

src/components/tabs/index.tsx

+7-6
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,23 @@ import './style.scss';
1111

1212
export interface ITab {
1313
id?: number | string;
14-
name?: string; // fileName
15-
activeTab?: number; // activeTab
16-
modified?: boolean; // modify file
14+
name?: string;
15+
activeTab?: number;
16+
modified?: boolean;
1717
renderPane?: () => React.ReactNode;
1818
value?: string;
19+
mode?: string | undefined;
1920
}
2021
export interface ITabsProps {
2122
data: ITab[];
2223
closeTab?: (item: ITab) => void;
2324
onMoveTab?: (tabs: ITab[]) => void;
24-
selectTab?: (index: number) => void;
25+
onSelectTab?: (index: number) => void;
2526
onTabChange: (index: number) => void;
2627
}
2728

2829
const DraggleTabs = (props: ITabsProps) => {
29-
const { data, selectTab } = props;
30+
const { data, onSelectTab } = props;
3031

3132
const onMoveTab = useCallback(
3233
(dragIndex, hoverIndex) => {
@@ -45,7 +46,7 @@ const DraggleTabs = (props: ITabsProps) => {
4546

4647
const onTabClick = (key) => {
4748
console.log(`onTabClick ${key}`);
48-
selectTab?.(key);
49+
onSelectTab?.(key);
4950
};
5051

5152
const onTabClose = (item: ITab) => {};

src/extensions/explore/index.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ function init(extensionCtx: ExtensionService) {
2727
editorService.onMoveTab((data) => {
2828
console.log(data);
2929
});
30-
editorService.selectTab((tab) => {
31-
console.log(`selected tabs${tab}`);
30+
editorService.onSelectTab((tabKey) => {
31+
console.log(`selected tabKey${tabKey}`);
3232
});
3333
const explorePane = {
3434
id: 'explore',

src/extensions/search/index.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ function init() {
3939
editorService.onMoveTab((data) => {
4040
console.log(data);
4141
});
42-
editorService.selectTab((tab) => {
43-
console.log(`selected tabs${tab}`);
42+
editorService.onSelectTab((tab) => {
43+
console.log(`selected tabKey${tab}`);
4444
});
4545
}
4646

src/model/workbench/editor.ts

+8-9
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,18 @@ import { container, inject, injectable } from 'tsyringe';
66

77
export enum EditorEvent {
88
CloseTab = 'editor.close',
9-
onMoveTab = 'editor.moveTab',
9+
OnMoveTab = 'editor.moveTab',
1010
OpenTab = 'editor.openTab',
11-
SelectTab = 'editor.selectTab',
11+
OnSelectTab = 'editor.selectTab',
1212
}
1313
export interface IEditor {
1414
current: IEditorGroup | undefined;
1515
groups: IEditorGroup[];
1616
closeAll?: () => void;
1717
onClose?: () => void;
1818
render?: () => React.ReactNode;
19-
onMoveTab: (tabs: ITab[], group?: number) => void;
20-
selectTab: (tab: ITab) => void;
19+
onMoveTab?: (tabs: ITab[], group?: number) => void;
20+
onSelectTab?: (tabKey: number) => void;
2121
}
2222

2323
export interface IEditorGroup<E = any> {
@@ -73,15 +73,14 @@ export class EditorModel implements IEditor {
7373
}
7474
closeAll?: (() => void) | undefined;
7575
onClose?: (() => void) | undefined;
76-
onMoveTab: (tabs: ITab[], group?: number | undefined) => void;
7776

7877
public render!: () => React.ReactNode;
7978

80-
public readonly selectTab = (tab: ITab) => {
81-
EventBus.emit(EditorEvent.onMoveTab, tab);
79+
public readonly onselectTab = (tabKey: number) => {
80+
EventBus.emit(EditorEvent.OnSelectTab, tabKey);
8281
};
83-
public readonly changeTab = (updateTabs: ITab[], groupId?: number) => {
84-
EventBus.emit(EditorEvent.onMoveTab, updateTabs, groupId);
82+
public readonly onMoveTab = (updateTabs: ITab[], groupId?: number) => {
83+
EventBus.emit(EditorEvent.OnMoveTab, updateTabs, groupId);
8584
};
8685
}
8786

src/services/workbench/editorService.ts

+8-5
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export interface IEditorService extends Component<IEditor> {
2020
open<T = any>(tab: ITab, groupId?: number): void;
2121
close(index: number, callback: () => void): void;
2222
onMoveTab(callback: (tabs: ITab[]) => void);
23-
selectTab(callback: (tab: ITab) => void);
23+
onSelectTab(callback: (tabKey: number) => void);
2424
}
2525

2626
@singleton()
@@ -32,6 +32,12 @@ export class EditorService
3232
super();
3333
this.state = container.resolve(EditorModel);
3434
}
35+
onSelectTab(callback: (tabKey: number) => void) {
36+
this.subscribe(EditorEvent.OnSelectTab, (args) => {
37+
callback?.(args?.[0]);
38+
});
39+
}
40+
3541
@emit(EditorEvent.OpenTab)
3642
public open<T>(tab: ITab, groupId?: number) {
3743
let { current, groups } = this.state;
@@ -49,7 +55,7 @@ export class EditorService
4955
}
5056
}
5157
public onMoveTab(callback: (data) => void) {
52-
this.subscribe(EditorEvent.onMoveTab, (args) => {
58+
this.subscribe(EditorEvent.OnMoveTab, (args) => {
5359
let { groups } = this.state;
5460
let group;
5561
if (!args?.[1]) return;
@@ -59,9 +65,6 @@ export class EditorService
5965
callback?.(args?.[0]);
6066
});
6167
}
62-
public selectTab(callback: Function) {
63-
this.subscribe(EditorEvent.SelectTab, callback);
64-
}
6568
public closeAll() {}
6669

6770
@emit(EditorEvent.CloseTab)

src/workbench/editor/editor.tsx

+7-7
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import Tabs from 'mo/components/tabs';
99
import Welcome from './welcome';
1010
import { IEditor, IEditorGroup } from 'mo/model';
1111

12-
function renderEditorGroup(group: IEditorGroup, onMoveTab, selectTab) {
12+
function renderEditorGroup(group: IEditorGroup, onMoveTab, onSelectTab) {
1313
const editor = group.activeTab;
1414
return (
1515
<div className={`editor-group`} key={`group-${group.id}`}>
@@ -18,7 +18,7 @@ function renderEditorGroup(group: IEditorGroup, onMoveTab, selectTab) {
1818
<Tabs
1919
data={group.tabs}
2020
onMoveTab={onMoveTab}
21-
onTabChange={selectTab}
21+
onTabChange={onSelectTab}
2222
/>
2323
</div>
2424
<div className="group-breadcrumbs"></div>
@@ -47,9 +47,9 @@ function renderEditorGroup(group: IEditorGroup, onMoveTab, selectTab) {
4747
);
4848
}
4949

50-
export function renderGroups(groups: IEditorGroup[], onMoveTab, selectTab) {
50+
export function renderGroups(groups: IEditorGroup[], onMoveTab, onSelectTab) {
5151
if (groups.length === 1) {
52-
return renderEditorGroup(groups[0], onMoveTab, selectTab);
52+
return renderEditorGroup(groups[0], onMoveTab, onSelectTab);
5353
} else if (groups.length > 1) {
5454
const averageNum = Math.round(100 / groups.length);
5555
return (
@@ -60,7 +60,7 @@ export function renderGroups(groups: IEditorGroup[], onMoveTab, selectTab) {
6060
allowResize={true}
6161
>
6262
{groups.map((g: IEditorGroup) =>
63-
renderEditorGroup(g, onMoveTab, selectTab)
63+
renderEditorGroup(g, onMoveTab, onSelectTab)
6464
)}
6565
</SplitPane>
6666
);
@@ -69,13 +69,13 @@ export function renderGroups(groups: IEditorGroup[], onMoveTab, selectTab) {
6969
}
7070

7171
export function Editor(props: IEditor) {
72-
const { groups, render, current, onMoveTab, selectTab } = props;
72+
const { groups, render, current, onMoveTab, onSelectTab } = props;
7373
console.log('Editor render:', props);
7474
let content: React.ReactNode = <Welcome />;
7575
if (current) {
7676
content = render
7777
? render()
78-
: renderGroups(groups, (tabs) => onMoveTab(tabs, 1), selectTab);
78+
: renderGroups(groups, (tabs) => onMoveTab?.(tabs, 1), onSelectTab);
7979
}
8080

8181
return <div className={prefixClaName('editor')}>{content}</div>;

0 commit comments

Comments
 (0)