7 |
10 | {{ $t("msg.msg") }}
8 | 9 |
11 | {{msg}}
12 |
13 | ├── .electron-vue ├── build.js ├── dev-client.js ├── dev-runner.js ├── webpack.main.config.js ├── webpack.renderer.config.js └── webpack.web.config.js ├── .gitignore ├── .nvmrc ├── .travis.yml ├── LICENSE ├── README.fr-FR.md ├── README.md ├── README.zh-CN.md ├── appveyor.yml ├── build └── icons │ ├── 128x128.png │ ├── 16x16.png │ ├── 24x24.png │ ├── 256x256.png │ ├── 32x32.png │ ├── 48x48.png │ ├── 64x64.png │ ├── 96x96.png │ ├── icon.icns │ └── icon.ico ├── hedwig ├── README.md ├── client.js ├── package.json └── test.js ├── package.json ├── resources └── bin │ ├── linux │ ├── README.md │ ├── grin │ └── grin-wallet │ ├── mac │ ├── README.md │ ├── grin │ └── grin-wallet │ └── win │ ├── README.md │ ├── grin-wallet.exe │ └── grin.exe ├── src ├── index.ejs ├── lang │ ├── en.js │ ├── fr.js │ ├── index.js │ ├── ko.js │ ├── nl.js │ ├── ru.js │ ├── tr.js │ └── zh.js ├── main │ ├── index.dev.js │ └── index.js ├── renderer │ ├── App.vue │ ├── assets │ │ ├── .gitkeep │ │ ├── imgs │ │ │ ├── arrow-alt-circle-left.svg │ │ │ └── arrow-alt-circle-right.svg │ │ └── logo.png │ ├── components │ │ ├── Check.vue │ │ ├── Commit.vue │ │ ├── Create.vue │ │ ├── FileSend.vue │ │ ├── Finalize.vue │ │ ├── Gaddress.vue │ │ ├── Gnode.vue │ │ ├── GnodeConfig.vue │ │ ├── GnodeConfigModal.vue │ │ ├── HedwigV1.vue │ │ ├── HttpReceive.vue │ │ ├── HttpSend.vue │ │ ├── Landing.vue │ │ ├── Lang.vue │ │ ├── Login.vue │ │ ├── Message.vue │ │ ├── New.vue │ │ ├── Receive.vue │ │ ├── Remove.vue │ │ ├── Restore.vue │ │ ├── SummaryInfo.vue │ │ ├── Tor.vue │ │ └── Transaction.vue │ ├── db.js │ ├── main.js │ ├── messagebus.js │ └── mixin.js └── shared │ ├── config.js │ ├── first.js │ ├── gnode.js │ ├── logger.js │ ├── tor.js │ ├── updateChecker.js │ ├── utils.js │ ├── wallet.js │ └── walletv3.js └── static ├── .gitkeep ├── css ├── animate.css ├── bulma.min.css ├── bulmaswatch.min.css └── font-awesome.min.css ├── grin_mw_logo.png └── grin_mw_logo.svg /.electron-vue/build.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | process.env.NODE_ENV = 'production' 4 | 5 | const { say } = require('cfonts') 6 | const chalk = require('chalk') 7 | const del = require('del') 8 | const { spawn } = require('child_process') 9 | const webpack = require('webpack') 10 | const Multispinner = require('multispinner') 11 | 12 | 13 | const mainConfig = require('./webpack.main.config') 14 | const rendererConfig = require('./webpack.renderer.config') 15 | const webConfig = require('./webpack.web.config') 16 | 17 | const doneLog = chalk.bgGreen.white(' DONE ') + ' ' 18 | const errorLog = chalk.bgRed.white(' ERROR ') + ' ' 19 | const okayLog = chalk.bgBlue.white(' OKAY ') + ' ' 20 | const isCI = process.env.CI || false 21 | 22 | if (process.env.BUILD_TARGET === 'clean') clean() 23 | else if (process.env.BUILD_TARGET === 'web') web() 24 | else build() 25 | 26 | function clean () { 27 | del.sync(['build/*', '!build/icons', '!build/icons/icon.*']) 28 | console.log(`\n${doneLog}\n`) 29 | process.exit() 30 | } 31 | 32 | function build () { 33 | greeting() 34 | 35 | del.sync(['dist/electron/*', '!.gitkeep']) 36 | 37 | const tasks = ['main', 'renderer'] 38 | const m = new Multispinner(tasks, { 39 | preText: 'building', 40 | postText: 'process' 41 | }) 42 | 43 | let results = '' 44 | 45 | m.on('success', () => { 46 | process.stdout.write('\x1B[2J\x1B[0f') 47 | console.log(`\n\n${results}`) 48 | console.log(`${okayLog}take it away ${chalk.yellow('`electron-builder`')}\n`) 49 | process.exit() 50 | }) 51 | 52 | pack(mainConfig).then(result => { 53 | results += result + '\n\n' 54 | m.success('main') 55 | }).catch(err => { 56 | m.error('main') 57 | console.log(`\n ${errorLog}failed to build main process`) 58 | console.error(`\n${err}\n`) 59 | process.exit(1) 60 | }) 61 | 62 | pack(rendererConfig).then(result => { 63 | results += result + '\n\n' 64 | m.success('renderer') 65 | }).catch(err => { 66 | m.error('renderer') 67 | console.log(`\n ${errorLog}failed to build renderer process`) 68 | console.error(`\n${err}\n`) 69 | process.exit(1) 70 | }) 71 | } 72 | 73 | function pack (config) { 74 | return new Promise((resolve, reject) => { 75 | config.mode = 'production' 76 | webpack(config, (err, stats) => { 77 | if (err) reject(err.stack || err) 78 | else if (stats.hasErrors()) { 79 | let err = '' 80 | 81 | stats.toString({ 82 | chunks: false, 83 | colors: true 84 | }) 85 | .split(/\r?\n/) 86 | .forEach(line => { 87 | err += ` ${line}\n` 88 | }) 89 | 90 | reject(err) 91 | } else { 92 | resolve(stats.toString({ 93 | chunks: false, 94 | colors: true 95 | })) 96 | } 97 | }) 98 | }) 99 | } 100 | 101 | function web () { 102 | del.sync(['dist/web/*', '!.gitkeep']) 103 | webConfig.mode = 'production' 104 | webpack(webConfig, (err, stats) => { 105 | if (err || stats.hasErrors()) console.log(err) 106 | 107 | console.log(stats.toString({ 108 | chunks: false, 109 | colors: true 110 | })) 111 | 112 | process.exit() 113 | }) 114 | } 115 | 116 | function greeting () { 117 | const cols = process.stdout.columns 118 | let text = '' 119 | 120 | if (cols > 85) text = 'lets-build' 121 | else if (cols > 60) text = 'lets-|build' 122 | else text = false 123 | 124 | if (text && !isCI) { 125 | say(text, { 126 | colors: ['yellow'], 127 | font: 'simple3d', 128 | space: false 129 | }) 130 | } else console.log(chalk.yellow.bold('\n lets-build')) 131 | console.log() 132 | } -------------------------------------------------------------------------------- /.electron-vue/dev-client.js: -------------------------------------------------------------------------------- 1 | const hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true') 2 | 3 | hotClient.subscribe(event => { 4 | /** 5 | * Reload browser when HTMLWebpackPlugin emits a new index.html 6 | * 7 | * Currently disabled until jantimon/html-webpack-plugin#680 is resolved. 8 | * https://github.com/SimulatedGREG/electron-vue/issues/437 9 | * https://github.com/jantimon/html-webpack-plugin/issues/680 10 | */ 11 | // if (event.action === 'reload') { 12 | // window.location.reload() 13 | // } 14 | 15 | /** 16 | * Notify `mainWindow` when `main` process is compiling, 17 | * giving notice for an expected reload of the `electron` process 18 | */ 19 | if (event.action === 'compiling') { 20 | document.body.innerHTML += ` 21 | 34 | 35 |
{{ $t("msg.check.title") }}
8 |{{ $t("msg.check.checkedMsg") }}
27 |mouseover(index)" @mouseleave="mouseLeave" >
33 | {{ct.commit| truncate(35)}}
34 | {{ct.commit| truncate(35)}}
35 |
36 |
37 |
54 | {{ ct.value/1000000000 }} ツ 55 |
56 | {{ $t("msg.commit.unspent") }} 57 | ({{ct.confirmed_count+'/10'}}) {{ $t("msg.unconfirmed") }} 58 | {{ $t("msg.unconfirmed") }} 59 | {{ $t("msg.locked") }} 60 | {{ $t("msg.commit.spent") }} 61 |{{ $t("msg.commit.noCmtFound") }}
90 |{{ $t("msg.commit.noCmt") }}
91 |11 | {{ $t('msg.create.backupNote') }} 12 |
13 | 14 |{{ $t("msg.fileSend.slatepack") }}
8 | 9 |{{ error }}
14 |18 | {{ $t("msg.fileSend.slatepackCreated") }} 19 |
20 | 21 |{{ $t("msg.fileSend.slatepackEncryptedTips") }}
22 |{{ $t("msg.fileSend.slatepackUnEncryptedTips") }}
23 | 24 |27 | {{line}} 28 |
29 |{{ $t("msg.fileSend.slatepackAddressTips") }}
53 |{{ $t("msg.finalize.finalize") }}
8 | 9 |{{ error }}
14 |{{ $t("msg.finalize.sending") }}
29 |{{ $t("msg.finalize.toPaste") }}
40 |45 | {{line}} 46 |
47 |{{ $t("msg.address") }}
7 | 8 |{{ $t("msg.gnodeConfig.warning") }}
4 |{{ $t("msg.gnodeConfigModal.config") }}
9 | 10 |{{ $t("msg.hedwig.title") }}
8 | 9 |{{ error }}
39 |{{ $t("msg.receive") }} (HTTP/HTTPS)
8 | 9 |{{ error }}
32 |{{ $t("msg.lang.title") }}
8 | 9 |{{ $t("msg.receive") }}
8 | 9 |{{ error }}
14 |18 | {{ $t("msg.fileReceive.slatepackCreated") }} 19 |
20 | 21 |24 | {{line}} 25 |
26 |{{ $t("msg.fileReceive.toPaste") }}
53 |{{ $t("msg.fileReceive.sender") }}: {{sender}}
56 | 57 |60 | {{line}} 61 |
62 |{{ $t("msg.remove.title") }}
9 | 10 |{{ $t("msg.remove.success") }}
14 |27 | {{ $t("msg.remove.help") }} 28 |
29 |{{ $t("msg.remove.help") }}
30 | 31 | 44 | 45 |{{ $t("msg.info.spendable") }}:
4 |{{spendable}} ツ
5 |{{ $t("msg.info.total") }}: {{total}} ツ
6 |{{ $t("msg.unconfirmed") }}: {{unconfirmed}} ツ
7 |{{ $t("msg.info.unfinalization") }}: {{unfinalization}} ツ
8 |{{ $t("msg.info.immature") }}: {{immature}} ツ
9 |{{ $t("msg.locked") }}: {{locked}} ツ
10 |
30 |
31 |
32 | {{tx.tx_slate_id}}
33 |
40 | -{{(tx.amount_debited-tx.amount_credited-tx.fee)/1000000000}} 41 | ({{tx.fee/1000000000}}) 42 | 43 | +{{ tx.amount_credited/1000000000 }}ツ 44 |
45 | {{ $t("msg.confirmed") }} 46 |{{ $t("msg.txs.noTxFound") }}
82 |{{ $t("msg.txs.noTx") }}
83 |