feat: restart current workspace

This commit is contained in:
tiddlygit-test 2021-10-16 13:33:11 +08:00
parent 992b2d9918
commit 54db442550
4 changed files with 21 additions and 12 deletions

View file

@ -399,6 +399,12 @@ export class MenuService implements IMenuService {
},
}),
);
menu.append(
new MenuItem({
label: i18next.t('ContextMenu.RestartService'),
click: async () => await this.workspaceViewService.restartWorkspaceViewService(),
}),
);
menu.append(
new MenuItem({
label: sidebar ? i18next.t('Preference.HideSideBar') : i18next.t('Preference.ShowSideBar'),

View file

@ -1,6 +1,5 @@
import type { TFunction } from 'i18next';
import type { MenuItemConstructorOptions } from 'electron';
import { WikiChannel } from '@/constants/channels';
import { WindowNames } from '@services/windows/WindowProperties';
import type { IWindowService } from '@services/windows/interface';
import type { IWorkspaceViewService } from '@services/workspacesView/interface';
@ -13,11 +12,11 @@ import type { IWikiGitWorkspaceService } from '@services/wikiGitWorkspace/interf
interface IWorkspaceMenuRequiredServices {
native: Pick<INativeService, 'open'>;
view: Pick<IViewService, 'reloadViewsWebContents'>;
wiki: Pick<IWikiService, 'restartWiki' | 'wikiOperation' | 'requestOpenTiddlerInWiki' | 'requestWikiSendActionMessage'>;
wiki: Pick<IWikiService, 'requestOpenTiddlerInWiki' | 'requestWikiSendActionMessage'>;
wikiGitWorkspace: Pick<IWikiGitWorkspaceService, 'removeWorkspace'>;
window: Pick<IWindowService, 'open'>;
workspace: Pick<IWorkspaceService, 'get' | 'getActiveWorkspace'>;
workspaceView: Pick<IWorkspaceViewService, 'wakeUpWorkspaceView' | 'hibernateWorkspaceView' | 'setActiveWorkspaceView'>;
workspace: Pick<IWorkspaceService, 'getActiveWorkspace'>;
workspaceView: Pick<IWorkspaceViewService, 'wakeUpWorkspaceView' | 'hibernateWorkspaceView' | 'setActiveWorkspaceView' | 'restartWorkspaceViewService'>;
}
export async function openWorkspaceTagTiddler(workspace: IWorkspace, service: IWorkspaceMenuRequiredServices): Promise<void> {
@ -70,14 +69,7 @@ export function getWorkspaceMenuTemplate(workspace: IWorkspace, t: TFunction, se
},
{
label: t('ContextMenu.RestartService'),
click: async () => {
const workspaceToRestart = await service.workspace.get(id);
if (workspaceToRestart !== undefined) {
await service.wiki.restartWiki(workspaceToRestart);
await service.view.reloadViewsWebContents(id);
await service.wiki.wikiOperation(WikiChannel.generalNotification, [t('ContextMenu.RestartServiceComplete')]);
}
},
click: async () => await service.workspaceView.restartWorkspaceViewService(id),
},
];

View file

@ -276,6 +276,15 @@ export class WorkspaceView implements IWorkspaceViewService {
this.viewService.removeView(id);
}
public async restartWorkspaceViewService(id?: string): Promise<void> {
const workspaceToRestart = id !== undefined ? await this.workspaceService.get(id) : await this.workspaceService.getActiveWorkspace();
if (workspaceToRestart !== undefined) {
await this.wikiService.restartWiki(workspaceToRestart);
await this.viewService.reloadViewsWebContents(workspaceToRestart.id);
await this.wikiService.wikiOperation(WikiChannel.generalNotification, [i18n.t('ContextMenu.RestartServiceComplete')]);
}
}
public async clearBrowsingDataWithConfirm(): Promise<void> {
const availableWindowToShowDialog = this.windowService.get(WindowNames.preferences) ?? this.windowService.get(WindowNames.main);
if (availableWindowToShowDialog !== undefined) {

View file

@ -30,6 +30,7 @@ export interface IWorkspaceViewService {
printTiddler(tiddlerName?: string | undefined): Promise<void>;
realignActiveWorkspace(): Promise<void>;
removeWorkspaceView(id: string): Promise<void>;
restartWorkspaceViewService(id?: string | undefined): Promise<void>;
setActiveWorkspaceView(id: string): Promise<void>;
setWorkspaceView(id: string, workspaceOptions: IWorkspace): Promise<void>;
setWorkspaceViews(workspaces: Record<string, IWorkspace>): Promise<void>;
@ -48,6 +49,7 @@ export const WorkspaceViewServiceIPCDescriptor = {
printTiddler: ProxyPropertyType.Function,
realignActiveWorkspace: ProxyPropertyType.Function,
removeWorkspaceView: ProxyPropertyType.Function,
restartWorkspaceViewService: ProxyPropertyType.Function,
setActiveWorkspaceView: ProxyPropertyType.Function,
setWorkspaceView: ProxyPropertyType.Function,
setWorkspaceViews: ProxyPropertyType.Function,