From 8e390eef0517dc447b56ede30255370d0fae2ed0 Mon Sep 17 00:00:00 2001 From: Eugene Pankov Date: Sat, 25 May 2019 22:52:25 +0200 Subject: [PATCH] added welcome tab (fixes #845) --- .../src/components/welcomeTab.component.pug | 19 ++++++++++++++ .../src/components/welcomeTab.component.scss | 6 +++++ .../src/components/welcomeTab.component.ts | 26 +++++++++++++++++++ terminus-core/src/configDefaults.yaml | 1 + terminus-core/src/index.ts | 14 ++++++++++ .../src/services/homeBase.service.ts | 2 +- terminus-settings/src/buttonProvider.ts | 2 +- 7 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 terminus-core/src/components/welcomeTab.component.pug create mode 100644 terminus-core/src/components/welcomeTab.component.scss create mode 100644 terminus-core/src/components/welcomeTab.component.ts diff --git a/terminus-core/src/components/welcomeTab.component.pug b/terminus-core/src/components/welcomeTab.component.pug new file mode 100644 index 00000000..45186247 --- /dev/null +++ b/terminus-core/src/components/welcomeTab.component.pug @@ -0,0 +1,19 @@ +.mb-4 + .terminus-logo + h1.terminus-title Terminus + sup α + +.container + .text-center.mb-5 Thank you for downloading Terminus! + + .form-line + .header + .title Enable analytics + .description Help us track the number of Terminus installs across the world! + toggle( + [(ngModel)]='config.store.enableAnalytics', + (ngModelChange)='config.save(); config.requestRestart()', + ) + + .text-center.mt-5 + button.btn.btn-primary((click)='closeAndDisable()') Close and never show again diff --git a/terminus-core/src/components/welcomeTab.component.scss b/terminus-core/src/components/welcomeTab.component.scss new file mode 100644 index 00000000..6a6860fd --- /dev/null +++ b/terminus-core/src/components/welcomeTab.component.scss @@ -0,0 +1,6 @@ +:host { + display: flex; + flex-direction: column; + margin: auto; + flex: 0 1 500px; +} diff --git a/terminus-core/src/components/welcomeTab.component.ts b/terminus-core/src/components/welcomeTab.component.ts new file mode 100644 index 00000000..f2b8a9f4 --- /dev/null +++ b/terminus-core/src/components/welcomeTab.component.ts @@ -0,0 +1,26 @@ +import { Component } from '@angular/core' +import { BaseTabComponent } from './baseTab.component' +import { ConfigService } from '../services/config.service' +import { AppService } from '../services/app.service' + +/** @hidden */ +@Component({ + selector: 'welcome-page', + template: require('./welcomeTab.component.pug'), + styles: [require('./welcomeTab.component.scss')], +}) +export class WelcomeTabComponent extends BaseTabComponent { + constructor ( + private app: AppService, + public config: ConfigService, + ) { + super() + this.setTitle('Welcome') + } + + closeAndDisable () { + this.config.store.enableWelcomeTab = false + this.config.save() + this.app.closeTab(this) + } +} diff --git a/terminus-core/src/configDefaults.yaml b/terminus-core/src/configDefaults.yaml index 01251dd6..5def4995 100644 --- a/terminus-core/src/configDefaults.yaml +++ b/terminus-core/src/configDefaults.yaml @@ -11,3 +11,4 @@ appearance: vibrancy: false vibrancyType: 'blur' enableAnalytics: true +enableWelcomeTab: true diff --git a/terminus-core/src/index.ts b/terminus-core/src/index.ts index bafb5571..5e807d4a 100644 --- a/terminus-core/src/index.ts +++ b/terminus-core/src/index.ts @@ -18,6 +18,7 @@ import { WindowControlsComponent } from './components/windowControls.component' import { RenameTabModalComponent } from './components/renameTabModal.component' import { SplitTabComponent, SplitTabRecoveryProvider } from './components/splitTab.component' import { SplitTabSpannerComponent } from './components/splitTabSpanner.component' +import { WelcomeTabComponent } from './components/welcomeTab.component' import { AutofocusDirective } from './directives/autofocus.directive' @@ -27,6 +28,9 @@ import { Theme } from './api/theme' import { TabContextMenuItemProvider } from './api/tabContextMenuProvider' import { TabRecoveryProvider } from './api/tabRecovery' +import { AppService } from './services/app.service' +import { ConfigService } from './services/config.service' + import { StandardTheme, StandardCompactTheme, PaperTheme } from './theme' import { CoreConfigProvider } from './config' import { AppHotkeyProvider } from './hotkeys' @@ -72,11 +76,13 @@ const PROVIDERS = [ AutofocusDirective, SplitTabComponent, SplitTabSpannerComponent, + WelcomeTabComponent, ], entryComponents: [ RenameTabModalComponent, SafeModeModalComponent, SplitTabComponent, + WelcomeTabComponent, ], exports: [ CheckboxComponent, @@ -85,6 +91,14 @@ const PROVIDERS = [ ] }) export default class AppModule { + constructor (app: AppService, config: ConfigService) { + app.ready$.subscribe(() => { + if (config.store.enableWelcomeTab) { + app.openNewTabRaw(WelcomeTabComponent) + } + }) + } + static forRoot (): ModuleWithProviders { return { ngModule: AppModule, diff --git a/terminus-core/src/services/homeBase.service.ts b/terminus-core/src/services/homeBase.service.ts index 48ee2f1c..5f8b67d5 100644 --- a/terminus-core/src/services/homeBase.service.ts +++ b/terminus-core/src/services/homeBase.service.ts @@ -16,7 +16,7 @@ export class HomeBaseService { ) { this.appVersion = electron.app.getVersion() - if (this.config.store.enableAnalytics) { + if (this.config.store.enableAnalytics && !this.config.store.enableWelcomeTab) { this.enableAnalytics() } } diff --git a/terminus-settings/src/buttonProvider.ts b/terminus-settings/src/buttonProvider.ts index 0cb61a2f..7f23d4f4 100644 --- a/terminus-settings/src/buttonProvider.ts +++ b/terminus-settings/src/buttonProvider.ts @@ -34,7 +34,7 @@ export class ButtonProvider extends ToolbarButtonProvider { } open (): void { - let settingsTab = this.app.tabs.find((tab) => tab instanceof SettingsTabComponent) + let settingsTab = this.app.tabs.find(tab => tab instanceof SettingsTabComponent) if (settingsTab) { this.app.selectTab(settingsTab) } else {