diff --git a/src/pages/send/confirm/confirm.ts b/src/pages/send/confirm/confirm.ts index a877b9d3c..30675327b 100644 --- a/src/pages/send/confirm/confirm.ts +++ b/src/pages/send/confirm/confirm.ts @@ -371,7 +371,7 @@ export class ConfirmPage { tx.txp[wallet.id] = txp; this.tx = tx; - this.logger.debug('Confirm. TX Fully Updated for wallet:' + wallet.id, tx); + this.logger.debug('Confirm. TX Fully Updated for wallet:' + wallet.id, JSON.stringify(tx)); return resolve(); }).catch((err: any) => { return reject(err); diff --git a/src/pages/settings/about/session-log/session-log.html b/src/pages/settings/about/session-log/session-log.html index 38398e409..6e769877d 100644 --- a/src/pages/settings/about/session-log/session-log.html +++ b/src/pages/settings/about/session-log/session-log.html @@ -2,7 +2,7 @@ {{'Session Log' | translate}} - + @@ -11,23 +11,27 @@ - +
+ No entries for this log level. +
+ -
- No entries for this log level. - Filter setting. -
- [{{l.timestamp}}] - [{{l.level}}] {{l.msg}} + [{{l.timestamp}}] + [{{l.level}}] {{l.msg}}
- -
\ No newline at end of file + + +
+
+
{{option.value.label}}
+
+ +
+
\ No newline at end of file diff --git a/src/pages/settings/about/session-log/session-log.scss b/src/pages/settings/about/session-log/session-log.scss index d8e83b2c7..e023cbd72 100644 --- a/src/pages/settings/about/session-log/session-log.scss +++ b/src/pages/settings/about/session-log/session-log.scss @@ -22,4 +22,22 @@ page-session-log { .assertive { color: color($colors,danger); } + .filter-container { + padding: 20px; + .labels { + display: flex; + justify-content: space-between; + .info-label { + margin-right: -10px; + } + } + } + .no-entries-message { + height: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + text-align: center; + } } \ No newline at end of file diff --git a/src/pages/settings/about/session-log/session-log.ts b/src/pages/settings/about/session-log/session-log.ts index da2bc7f4c..bf39285c4 100644 --- a/src/pages/settings/about/session-log/session-log.ts +++ b/src/pages/settings/about/session-log/session-log.ts @@ -1,4 +1,7 @@ import { Component } from '@angular/core'; +import { DOCUMENT } from "@angular/platform-browser"; +import { Inject } from '@angular/core'; +import { ActionSheetController, ToastController } from 'ionic-angular'; //native import { SocialSharing } from '@ionic-native/social-sharing'; @@ -6,6 +9,7 @@ import { SocialSharing } from '@ionic-native/social-sharing'; //providers import { ConfigProvider } from '../../../../providers/config/config'; import { Logger } from '../../../../providers/logger/logger'; +import { PlatformProvider } from '../../../../providers/platform/platform'; import * as _ from 'lodash'; @@ -16,22 +20,27 @@ import * as _ from 'lodash'; export class SessionLogPage { private config: any; - private logLevels: any; - private selectedLevel: any; + private dom: Document; public logOptions: any; public filteredLogs: Array; - public fillClass: any; - public showOptions: boolean; + public filterValue: number; + public isCordova: boolean; constructor( + @Inject(DOCUMENT) dom: Document, private configProvider: ConfigProvider, private logger: Logger, - private socialSharing: SocialSharing + private socialSharing: SocialSharing, + private actionSheetCtrl: ActionSheetController, + private toastCtrl: ToastController, + private platformProvider: PlatformProvider ) { + this.dom = dom; this.config = this.configProvider.get(); - this.logLevels = this.logger.getLevels(); - this.logOptions = _.keyBy(this.logLevels, 'level'); + this.isCordova = this.platformProvider.isCordova; + let logLevels: any = this.logger.getLevels(); + this.logOptions = _.keyBy(logLevels, 'weight'); } ionViewDidLoad() { @@ -39,28 +48,21 @@ export class SessionLogPage { } ionViewWillEnter() { - this.selectedLevel = _.has(this.config, 'log.filter') ? this.logger.getLevel(this.config.log.filter) : this.logger.getDefaultLevel(); - this.setOptionSelected(this.selectedLevel.level); - this.filterLogs(this.selectedLevel.weight); + let selectedLevel: any = _.has(this.config, 'log.filter') ? this.logger.getWeight(this.config.log.filter) : this.logger.getDefaultWeight(); + this.filterValue = selectedLevel.weight; + this.setOptionSelected(selectedLevel.weight); + this.filterLogs(selectedLevel.weight); } private filterLogs(weight: number): void { this.filteredLogs = this.logger.get(weight); } - public setOptionSelected(level: string): void { - let weight = this.logOptions[level].weight; - this.fillClass = 'fill-bar-' + level; + public setOptionSelected(weight: number): void { this.filterLogs(weight); - _.each(this.logOptions, (opt) => { - opt.selected = opt.weight <= weight ? true : false; - opt.head = opt.weight == weight; - }); - - // Save the setting. let opts = { log: { - filter: level + filter: weight } }; this.configProvider.set(opts); @@ -76,6 +78,20 @@ export class SessionLogPage { return log; } + private copyToClipboard() { + let textarea = this.dom.createElement('textarea'); + this.dom.body.appendChild(textarea); + textarea.value = this.prepareLogs(); + textarea.select(); + this.dom.execCommand('copy'); + let message = 'Copied to clipboard' //TODO gettextcatalog + let showSuccess = this.toastCtrl.create({ + message: message, + duration: 1000, + }); + showSuccess.present(); + } + public sendLogs(): void { let body = this.prepareLogs(); @@ -90,8 +106,32 @@ export class SessionLogPage { } public showOptionsMenu(): void { - this.showOptions = true; - //TODO show filter menu - } + let copyText = 'Copy to clipboard' //TODO gettextcatalog + let emailText = 'Send by email' //TODO gettextcatalog + let button = []; + + if (this.isCordova) { + button = [{ + text: emailText, + handler: () => { + this.sendLogs() + } + }]; + } + else { + button = [{ + text: copyText, + handler: () => { + this.copyToClipboard(); + } + }]; + } + + let actionSheet = this.actionSheetCtrl.create({ + title: '', + buttons: button + }); + actionSheet.present(); + } } diff --git a/src/pages/settings/wallet-settings/wallet-settings-advanced/wallet-export/wallet-export.ts b/src/pages/settings/wallet-settings/wallet-settings-advanced/wallet-export/wallet-export.ts index ac94e20c6..ed7b3d7bc 100644 --- a/src/pages/settings/wallet-settings/wallet-settings-advanced/wallet-export/wallet-export.ts +++ b/src/pages/settings/wallet-settings/wallet-settings-advanced/wallet-export/wallet-export.ts @@ -226,8 +226,9 @@ export class WalletExportPage { var ew = backup; if (!ew) return; this.clipboard.copy(ew); + let copyMessage = 'Copied to clipboard' //TODO gettextcatalog let showSuccess = this.toastCtrl.create({ - message: 'Copied to clipboard', + message: copyMessage, duration: 1000, }); showSuccess.present(); @@ -235,8 +236,9 @@ export class WalletExportPage { }; public sendWalletBackup(): void { + let preparingMessage = 'Preparing backup...' //TODO gettextcatalog let showSuccess = this.toastCtrl.create({ - message: 'Preparing backup...', + message: preparingMessage, duration: 1000, }); showSuccess.present(); diff --git a/src/providers/logger/logger.ts b/src/providers/logger/logger.ts index 39a02da3b..a2fd53ddf 100644 --- a/src/providers/logger/logger.ts +++ b/src/providers/logger/logger.ts @@ -20,10 +20,10 @@ export class Logger { this.logger.info('Logger initialized.'); this.logs = []; this.levels = [ - { level: 'error', weight: 0, label: 'Error' }, - { level: 'warn', weight: 1, label: 'Warning' }, - { level: 'info', weight: 2, label: 'Info', default: true }, - { level: 'debug', weight: 3, label: 'Debug' } + { level: 'error', weight: 1, label: 'Error' }, + { level: 'warn', weight: 2, label: 'Warning' }, + { level: 'info', weight: 3, label: 'Info', default: true }, + { level: 'debug', weight: 4, label: 'Debug' } ]; // Create an array of level weights for performant filtering. @@ -62,13 +62,13 @@ export class Logger { return this.levels; }; - public getLevel(level): any { + public getWeight(weight): any { return _.find(this.levels, (l) => { - return l.level == level; + return l.weight == weight; }); }; - public getDefaultLevel(): any { + public getDefaultWeight(): any { return _.find(this.levels, (l) => { return l.default; }); diff --git a/src/providers/profile/profile.ts b/src/providers/profile/profile.ts index b67ee39c8..dfc029b56 100644 --- a/src/providers/profile/profile.ts +++ b/src/providers/profile/profile.ts @@ -146,7 +146,7 @@ export class ProfileProvider { }); wallet.on('notification', (n: any) => { - this.logger.debug('BWC Notification:', n); + this.logger.debug('BWC Notification:', JSON.stringify(n)); if (n.type == "NewBlock" && n.data.network == "testnet") { this.throttledBwsEvent(n, wallet); @@ -707,7 +707,7 @@ export class ProfileProvider { if (showOpts.extendedPrivateKey) showOpts.extendedPrivateKey = '[hidden]'; if (showOpts.mnemonic) showOpts.mnemonic = '[hidden]'; - this.logger.debug('Creating Wallet:', showOpts); + this.logger.debug('Creating Wallet:', JSON.stringify(showOpts)); setTimeout(() => { this.seedWallet(opts).then((walletClient: any) => {