Improved initial board installation experience

This commit is contained in:
Christian Weichel
2019-05-08 15:47:04 +02:00
parent 43ab17fd34
commit 6584b0d5b1
8 changed files with 153 additions and 24 deletions

View File

@@ -4,7 +4,8 @@ import { Message } from '@phosphor/messaging';
import { ReactWidget } from '@theia/core/lib/browser/widgets/react-widget';
import { WindowService } from '@theia/core/lib/browser/window/window-service';
import { FilterableListContainer } from '../components/component-list/filterable-list-container';
import { BoardsService } from '../../common/protocol/boards-service';
import { BoardsService, Board, BoardPackage } from '../../common/protocol/boards-service';
import { BoardsNotificationService } from '../boards-notification-service';
@injectable()
export abstract class ListWidget extends ReactWidget {
@@ -15,6 +16,9 @@ export abstract class ListWidget extends ReactWidget {
@inject(WindowService)
protected readonly windowService: WindowService;
@inject(BoardsNotificationService)
protected readonly boardsNotificationService: BoardsNotificationService;
constructor() {
super();
const { id, title, iconClass } = this.widgetProps();
@@ -46,8 +50,19 @@ export abstract class ListWidget extends ReactWidget {
}
render(): React.ReactNode {
const boardsServiceDelegate = this.boardsService;
const boardsService: BoardsService = {
getAttachedBoards: () => boardsServiceDelegate.getAttachedBoards(),
selectBoard: (board: Board) => boardsServiceDelegate.selectBoard(board),
getSelectBoard: () => boardsServiceDelegate.getSelectBoard(),
search: (options: { query?: string }) => boardsServiceDelegate.search(options),
install: async (item: BoardPackage) => {
await boardsServiceDelegate.install(item);
this.boardsNotificationService.notifyBoardsInstalled();
}
}
return <FilterableListContainer
service={this.boardsService}
service={boardsService}
windowService={this.windowService}
/>;
}