Browse Source

added message popups

Eugene Pankov 7 years ago
parent
commit
ee2fadbf60

+ 1 - 0
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"

+ 6 - 0
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)),

+ 1 - 0
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'

+ 1 - 0
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',

+ 1 - 0
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',

+ 4 - 0
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"

+ 4 - 0
terminus-core/yarn.lock

@@ -191,6 +191,10 @@ [email protected]:
   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"

+ 1 - 0
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",

+ 3 - 1
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}`)
         })
     }
 

+ 2 - 0
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,

+ 7 - 3
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
                     }

+ 1 - 0
terminus-ssh/webpack.config.js

@@ -40,6 +40,7 @@ module.exports = {
     'xkeychain',
     'wincredmgr',
     'path',
+    'ngx-toastr',
     /^rxjs/,
     /^@angular/,
     /^@ng-bootstrap/,

+ 4 - 54
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"
-
 [email protected], 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"