From ee2fadbf60f6c3514acf15fdb82dc1b0e203ae60 Mon Sep 17 00:00:00 2001 From: Eugene Pankov Date: Fri, 19 Jan 2018 15:31:28 +0100 Subject: [PATCH] added message popups --- app/package.json | 1 + app/src/app.module.ts | 6 ++ app/src/entry.preload.ts | 1 + app/src/plugins.ts | 1 + app/webpack.config.js | 1 + app/yarn.lock | 4 ++ terminus-core/yarn.lock | 4 ++ terminus-ssh/package.json | 1 + .../src/components/sshModal.component.ts | 4 +- terminus-ssh/src/index.ts | 2 + terminus-ssh/src/services/ssh.service.ts | 10 +++- terminus-ssh/webpack.config.js | 1 + terminus-ssh/yarn.lock | 58 ++----------------- 13 files changed, 36 insertions(+), 58 deletions(-) diff --git a/app/package.json b/app/package.json index 5aec0201..b1dea121 100644 --- a/app/package.json +++ b/app/package.json @@ -27,6 +27,7 @@ "electron-squirrel-startup": "^1.0.0", "js-yaml": "3.8.2", "mz": "^2.6.0", + "ngx-toastr": "^8.0.0", "path": "0.12.7", "rxjs": "5.3.0", "zone.js": "0.8.12" diff --git a/app/src/app.module.ts b/app/src/app.module.ts index 23def87a..08866dec 100644 --- a/app/src/app.module.ts +++ b/app/src/app.module.ts @@ -1,12 +1,18 @@ import { NgModule } from '@angular/core' import { BrowserModule } from '@angular/platform-browser' import { NgbModule } from '@ng-bootstrap/ng-bootstrap' +import { ToastrModule } from 'ngx-toastr' export function getRootModule (plugins: any[]) { let imports = [ BrowserModule, ...plugins, NgbModule.forRoot(), + ToastrModule.forRoot({ + positionClass: 'toast-bottom-center', + preventDuplicates: true, + extendedTimeOut: 5000, + }), ] let bootstrap = [ ...(plugins.filter(x => x.bootstrap).map(x => x.bootstrap)), diff --git a/app/src/entry.preload.ts b/app/src/entry.preload.ts index 9a2987a3..b4582a4d 100644 --- a/app/src/entry.preload.ts +++ b/app/src/entry.preload.ts @@ -1,5 +1,6 @@ import 'source-sans-pro' import 'font-awesome/css/font-awesome.css' +import 'ngx-toastr/toastr.css' import './preload.scss' import * as Raven from 'raven-js' diff --git a/app/src/plugins.ts b/app/src/plugins.ts index 912ddd8d..57c2f28f 100644 --- a/app/src/plugins.ts +++ b/app/src/plugins.ts @@ -59,6 +59,7 @@ const builtinModules = [ '@angular/platform-browser', '@angular/platform-browser-dynamic', '@ng-bootstrap/ng-bootstrap', + 'ngx-toastr', 'rxjs', 'terminus-core', 'terminus-settings', diff --git a/app/webpack.config.js b/app/webpack.config.js index 8fccad2a..3d18c816 100644 --- a/app/webpack.config.js +++ b/app/webpack.config.js @@ -58,6 +58,7 @@ module.exports = { 'child_process': 'commonjs child_process', 'electron': 'commonjs electron', 'electron-is-dev': 'commonjs electron-is-dev', + 'ngx-toastr': 'commonjs ngx-toastr', 'module': 'commonjs module', 'mz': 'commonjs mz', 'path': 'commonjs path', diff --git a/app/yarn.lock b/app/yarn.lock index 1359b553..d2c14a8d 100644 --- a/app/yarn.lock +++ b/app/yarn.lock @@ -195,6 +195,10 @@ mz@^2.6.0: object-assign "^4.0.1" thenify-all "^1.0.0" +ngx-toastr@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/ngx-toastr/-/ngx-toastr-8.0.0.tgz#f3bc53146b2f7da3eabf3daa1b1bbdf65cb49697" + object-assign@^4.0.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" diff --git a/terminus-core/yarn.lock b/terminus-core/yarn.lock index fe7d1451..14b179c4 100644 --- a/terminus-core/yarn.lock +++ b/terminus-core/yarn.lock @@ -191,6 +191,10 @@ ngx-perfect-scrollbar@4.0.0: dependencies: perfect-scrollbar "~0.6.0" +ngx-toastr@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/ngx-toastr/-/ngx-toastr-8.0.0.tgz#f3bc53146b2f7da3eabf3daa1b1bbdf65cb49697" + perfect-scrollbar@~0.6.0: version "0.6.16" resolved "https://registry.yarnpkg.com/perfect-scrollbar/-/perfect-scrollbar-0.6.16.tgz#b1d61a5245cf3962bb9a8407a3fc669d923212fc" diff --git a/terminus-ssh/package.json b/terminus-ssh/package.json index bb9597d8..47926f16 100644 --- a/terminus-ssh/package.json +++ b/terminus-ssh/package.json @@ -22,6 +22,7 @@ "apply-loader": "^2.0.0", "awesome-typescript-loader": "^3.1.2", "electron": "^1.6.11", + "ngx-toastr": "^8.0.0", "pug": "^2.0.0-rc.3", "pug-loader": "^2.3.0", "rxjs": "^5.4.0", diff --git a/terminus-ssh/src/components/sshModal.component.ts b/terminus-ssh/src/components/sshModal.component.ts index 3f712b0f..13645fb3 100644 --- a/terminus-ssh/src/components/sshModal.component.ts +++ b/terminus-ssh/src/components/sshModal.component.ts @@ -1,5 +1,6 @@ import { Component } from '@angular/core' import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap' +import { ToastrService } from 'ngx-toastr' import { ConfigService, AppService } from 'terminus-core' import { SettingsTabComponent } from 'terminus-settings' import { SSHService } from '../services/ssh.service' @@ -19,6 +20,7 @@ export class SSHModalComponent { private config: ConfigService, private ssh: SSHService, private app: AppService, + private toastr: ToastrService, ) { } ngOnInit () { @@ -45,7 +47,7 @@ export class SSHModalComponent { connect (connection: SSHConnection) { this.close() this.ssh.connect(connection).catch(error => { - alert(`Could not connect: ${error}`) + this.toastr.error(`Could not connect: ${error}`) }) } diff --git a/terminus-ssh/src/index.ts b/terminus-ssh/src/index.ts index 9656458e..097000f0 100644 --- a/terminus-ssh/src/index.ts +++ b/terminus-ssh/src/index.ts @@ -2,6 +2,7 @@ import { NgModule } from '@angular/core' import { CommonModule } from '@angular/common' import { FormsModule } from '@angular/forms' import { NgbModule } from '@ng-bootstrap/ng-bootstrap' +import { ToastrModule } from 'ngx-toastr' import { ToolbarButtonProvider, ConfigProvider } from 'terminus-core' import { SettingsTabProvider } from 'terminus-settings' @@ -21,6 +22,7 @@ import { SSHSettingsTabProvider } from './settings' NgbModule, CommonModule, FormsModule, + ToastrModule, ], providers: [ PasswordStorageService, diff --git a/terminus-ssh/src/services/ssh.service.ts b/terminus-ssh/src/services/ssh.service.ts index 30ca35c4..ff1267ba 100644 --- a/terminus-ssh/src/services/ssh.service.ts +++ b/terminus-ssh/src/services/ssh.service.ts @@ -3,6 +3,7 @@ import { NgbModal } from '@ng-bootstrap/ng-bootstrap' import { Client } from 'ssh2' import * as fs from 'mz/fs' import * as path from 'path' +import { ToastrService } from 'ngx-toastr' import { AppService, HostAppService, Platform, Logger, LogService } from 'terminus-core' import { TerminalTabComponent } from 'terminus-terminal' import { SSHConnection, SSHSession } from '../api' @@ -21,6 +22,7 @@ export class SSHService { private ngbModal: NgbModal, private hostApp: HostAppService, private passwordStorage: PasswordStorageService, + private toastr: ToastrService, ) { this.logger = log.create('ssh') } @@ -41,7 +43,7 @@ export class SSHService { try { privateKey = (await fs.readFile(privateKeyPath)).toString() } catch (error) { - // notify: couldn't read key + this.toastr.warning('Could not read the private key file') } if (privateKey) { @@ -73,7 +75,7 @@ export class SSHService { this.passwordStorage.deletePassword(connection) this.zone.run(() => { if (connected) { - alert(`SSH error: ${error}`) + this.toastr.error(error.toString()) } else { reject(error) } @@ -101,7 +103,7 @@ export class SSHService { ssh.connect({ host: connection.host, username: connection.user, - password: privateKey ? undefined : '', + password: connection.privateKey ? undefined : '', privateKey, passphrase: privateKeyPassphrase, tryKeyboard: true, @@ -113,12 +115,14 @@ export class SSHService { ;(ssh as any).config.password = () => this.zone.run(async () => { if (connection.password) { + this.logger.info('Using preset password') return connection.password } if (!keychainPasswordUsed) { let password = await this.passwordStorage.loadPassword(connection) if (password) { + this.logger.info('Using saved password') keychainPasswordUsed = true return password } diff --git a/terminus-ssh/webpack.config.js b/terminus-ssh/webpack.config.js index f2a8f0ae..d829fa62 100644 --- a/terminus-ssh/webpack.config.js +++ b/terminus-ssh/webpack.config.js @@ -40,6 +40,7 @@ module.exports = { 'xkeychain', 'wincredmgr', 'path', + 'ngx-toastr', /^rxjs/, /^@angular/, /^@ng-bootstrap/, diff --git a/terminus-ssh/yarn.lock b/terminus-ssh/yarn.lock index 21551c06..220020d2 100644 --- a/terminus-ssh/yarn.lock +++ b/terminus-ssh/yarn.lock @@ -6,10 +6,6 @@ version "8.0.53" resolved "https://registry.yarnpkg.com/@types/node/-/node-8.0.53.tgz#396b35af826fa66aad472c8cb7b8d5e277f4e6d8" -"@types/openpgp@^0.0.29": - version "0.0.29" - resolved "https://registry.yarnpkg.com/@types/openpgp/-/openpgp-0.0.29.tgz#feabb9d547cb107f7b98fdd51ac616f6cf5aaebd" - "@types/ssh2-streams@*": version "0.1.2" resolved "https://registry.yarnpkg.com/@types/ssh2-streams/-/ssh2-streams-0.1.2.tgz#7aa18b8c2450f17699e9ea18a76efc838188d58d" @@ -748,12 +744,6 @@ emojis-list@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" -encoding@^0.1.11: - version "0.1.12" - resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.12.tgz#538b66f3ee62cd1ab51ec323829d1f9480c74beb" - dependencies: - iconv-lite "~0.4.13" - enhanced-resolve@3.3.0, enhanced-resolve@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.3.0.tgz#950964ecc7f0332a42321b673b38dc8ff15535b3" @@ -1039,7 +1029,7 @@ glob@^7.0.5: once "^1.3.0" path-is-absolute "^1.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -1192,18 +1182,10 @@ https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" -iconv-lite@~0.4.13: - version "0.4.19" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" - ieee754@^1.1.4: version "1.1.8" resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - indent-string@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" @@ -1387,10 +1369,6 @@ is-regex@^1.0.3: dependencies: has "^1.0.1" -is-stream@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" - is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -1730,12 +1708,9 @@ nanomatch@^1.2.5: snapdragon "^0.8.1" to-regex "^3.0.1" -node-fetch@^1.3.3: - version "1.7.3" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" - dependencies: - encoding "^0.1.11" - is-stream "^1.0.1" +ngx-toastr@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/ngx-toastr/-/ngx-toastr-8.0.0.tgz#f3bc53146b2f7da3eabf3daa1b1bbdf65cb49697" node-libs-browser@^2.0.0: version "2.1.0" @@ -1765,12 +1740,6 @@ node-libs-browser@^2.0.0: util "^0.10.3" vm-browserify "0.0.4" -node-localstorage@~1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/node-localstorage/-/node-localstorage-1.3.0.tgz#2e436aae8dcc9ace97b43c65c16c0d577be0a55c" - dependencies: - write-file-atomic "^1.1.4" - node-pre-gyp@^0.6.39: version "0.6.39" resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" @@ -1879,13 +1848,6 @@ once@^1.3.0, once@^1.3.3: dependencies: wrappy "1" -openpgp@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/openpgp/-/openpgp-2.6.1.tgz#7d9da10433e37d87300fbac1fe173c80f0a908c9" - dependencies: - node-fetch "^1.3.3" - node-localstorage "~1.3.0" - os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" @@ -2450,10 +2412,6 @@ single-line-log@^1.1.2: dependencies: string-width "^1.0.1" -slide@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -2947,14 +2905,6 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" -write-file-atomic@^1.1.4: - version "1.3.4" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" - dependencies: - graceful-fs "^4.1.11" - imurmurhash "^0.1.4" - slide "^1.1.5" - xkeychain@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/xkeychain/-/xkeychain-0.0.6.tgz#1c58b3dd2f80481f8f67949c3511aa14027c2b9b"