add e-money, bigsong tauri.conf
@ -93,7 +93,7 @@
|
||||
"eslint-plugin-vue": "6.2.2",
|
||||
"sass": "1.32.*",
|
||||
"sass-loader": "^10.1.0",
|
||||
"vue-cli-plugin-tauri": "~1.0.0-beta.3",
|
||||
"vue-cli-plugin-tauri": "~1.0.0-beta.6",
|
||||
"vue-template-compiler": "2.x"
|
||||
}
|
||||
}
|
||||
|
4
src-tauri/.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
# Generated by Cargo
|
||||
# will have compiled files and executables
|
||||
/target/
|
||||
WixTools
|
3773
src-tauri/Cargo.lock
generated
Normal file
25
src-tauri/Cargo.toml
Normal file
@ -0,0 +1,25 @@
|
||||
[package]
|
||||
name = "app"
|
||||
version = "0.1.0"
|
||||
description = "A Tauri App"
|
||||
authors = ["you"]
|
||||
license = ""
|
||||
repository = ""
|
||||
default-run = "app"
|
||||
edition = "2018"
|
||||
build = "src/build.rs"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[build-dependencies]
|
||||
tauri-build = { version = "1.0.0-beta.1" }
|
||||
# miner = { git="https://github.com/olsf/libra", version="0.1.0" }
|
||||
|
||||
[dependencies]
|
||||
serde_json = "1.0"
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
tauri = { version = "1.0.0-beta.2", features = ["api-all", "menu", "system-tray"] }
|
||||
|
||||
[features]
|
||||
default = [ "custom-protocol" ]
|
||||
custom-protocol = [ "tauri/custom-protocol" ]
|
BIN
src-tauri/icons/128x128.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
src-tauri/icons/128x128@2x.png
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
src-tauri/icons/32x32.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
src-tauri/icons/Square107x107Logo.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
src-tauri/icons/Square142x142Logo.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
src-tauri/icons/Square150x150Logo.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
src-tauri/icons/Square284x284Logo.png
Normal file
After Width: | Height: | Size: 41 KiB |
BIN
src-tauri/icons/Square30x30Logo.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
src-tauri/icons/Square310x310Logo.png
Normal file
After Width: | Height: | Size: 45 KiB |
BIN
src-tauri/icons/Square44x44Logo.png
Normal file
After Width: | Height: | Size: 3.7 KiB |
BIN
src-tauri/icons/Square71x71Logo.png
Normal file
After Width: | Height: | Size: 7.2 KiB |
BIN
src-tauri/icons/Square89x89Logo.png
Normal file
After Width: | Height: | Size: 9.6 KiB |
BIN
src-tauri/icons/StoreLogo.png
Normal file
After Width: | Height: | Size: 4.4 KiB |
BIN
src-tauri/icons/icon.icns
Normal file
BIN
src-tauri/icons/icon.ico
Normal file
After Width: | Height: | Size: 56 KiB |
BIN
src-tauri/icons/icon.png
Normal file
After Width: | Height: | Size: 88 KiB |
14
src-tauri/rustfmt.toml
Normal file
@ -0,0 +1,14 @@
|
||||
max_width = 100
|
||||
hard_tabs = false
|
||||
tab_spaces = 2
|
||||
newline_style = "Auto"
|
||||
use_small_heuristics = "Default"
|
||||
reorder_imports = true
|
||||
reorder_modules = true
|
||||
remove_nested_parens = true
|
||||
edition = "2018"
|
||||
merge_derives = true
|
||||
use_try_shorthand = false
|
||||
use_field_init_shorthand = false
|
||||
force_explicit_abi = true
|
||||
imports_granularity = "Crate"
|
3
src-tauri/src/build.rs
Normal file
@ -0,0 +1,3 @@
|
||||
fn main() {
|
||||
tauri_build::build()
|
||||
}
|
29
src-tauri/src/main.rs
Normal file
@ -0,0 +1,29 @@
|
||||
#![cfg_attr(
|
||||
all(not(debug_assertions), target_os = "windows"),
|
||||
windows_subsystem = "windows"
|
||||
)]
|
||||
use tauri::{CustomMenuItem, SystemTray, SystemTrayMenu, SystemTrayMenuItem, MenuItem};
|
||||
|
||||
#[tauri::command]
|
||||
fn my_custom_command(msg: String) -> String {
|
||||
println!("I was invoked from JS! {}", msg);
|
||||
return "Hello from Rust".into()
|
||||
}
|
||||
|
||||
fn main() {
|
||||
// here `"quit".to_string()` defines the menu item id, and the second parameter is the menu item label.
|
||||
let quit = CustomMenuItem::new("quit".to_string(), "Quit");
|
||||
let hide = CustomMenuItem::new("hide".to_string(), "Hide");
|
||||
let tray_menu = SystemTrayMenu::new()
|
||||
.add_item(quit)
|
||||
.add_native_item(SystemTrayMenuItem::Separator)
|
||||
.add_item(hide);
|
||||
let tray = SystemTray::new().with_menu(tray_menu);
|
||||
|
||||
tauri::Builder::default()
|
||||
.system_tray(tray)
|
||||
// This is where you pass in your commands
|
||||
.invoke_handler(tauri::generate_handler![my_custom_command])
|
||||
.run(tauri::generate_context!())
|
||||
.expect("error while running tauri application");
|
||||
}
|
70
src-tauri/tauri.conf.json
Normal file
@ -0,0 +1,70 @@
|
||||
{
|
||||
"package": {
|
||||
"productName": "Ping-Wallet",
|
||||
"version": "0.1.0"
|
||||
},
|
||||
"build": {
|
||||
"distDir": "Set automatically by Vue CLI plugin",
|
||||
"devPath": "Set automatically by Vue CLI plugin",
|
||||
"beforeDevCommand": "",
|
||||
"beforeBuildCommand": "",
|
||||
"withGlobalTauri": true
|
||||
},
|
||||
"tauri": {
|
||||
"bundle": {
|
||||
"active": true,
|
||||
"targets": "all",
|
||||
"identifier": "com.tauri.dev",
|
||||
"icon": [
|
||||
"icons/32x32.png",
|
||||
"icons/128x128.png",
|
||||
"icons/128x128@2x.png",
|
||||
"icons/icon.icns",
|
||||
"icons/icon.ico"
|
||||
],
|
||||
"resources": [],
|
||||
"externalBin": [],
|
||||
"copyright": "",
|
||||
"category": "DeveloperTool",
|
||||
"shortDescription": "",
|
||||
"longDescription": "",
|
||||
"deb": {
|
||||
"depends": [],
|
||||
"useBootstrapper": false
|
||||
},
|
||||
"macOS": {
|
||||
"frameworks": [],
|
||||
"minimumSystemVersion": "",
|
||||
"useBootstrapper": false,
|
||||
"exceptionDomain": "",
|
||||
"signingIdentity": null,
|
||||
"entitlements": null
|
||||
},
|
||||
"windows": {
|
||||
"certificateThumbprint": null,
|
||||
"digestAlgorithm": "sha256",
|
||||
"timestampUrl": ""
|
||||
}
|
||||
},
|
||||
"updater": {
|
||||
"active": false
|
||||
},
|
||||
"allowlist": {
|
||||
"all": true
|
||||
},
|
||||
"windows": [
|
||||
{
|
||||
"title": "Ping Wallet",
|
||||
"width": 1024,
|
||||
"height": 768,
|
||||
"resizable": true
|
||||
}
|
||||
],
|
||||
"systemTray": {
|
||||
"iconPath": "icons/icon.png"
|
||||
},
|
||||
"security": {
|
||||
"csp": "default-src blob: data: filesystem: ws: wss: http: https: tauri: 'unsafe-eval' 'unsafe-inline' 'self' img-src: 'self'"
|
||||
}
|
||||
}
|
||||
}
|
@ -20,6 +20,8 @@
|
||||
"sentinel": "Sentinel",
|
||||
"sifchain": "Sifchain",
|
||||
"starname": "Starname",
|
||||
"bitsong": "BitSong",
|
||||
"emoney": "E-Money",
|
||||
|
||||
"staking": "Staking",
|
||||
"governance": "Governance",
|
||||
|
@ -1,32 +0,0 @@
|
||||
import {
|
||||
makeAuthInfoBytes, makeSignDoc, Registry,
|
||||
// makeSignBytes,
|
||||
} from '@cosmjs/proto-signing'
|
||||
|
||||
export default class Client {
|
||||
async signDirect(signerAddress, messages, fee, memo, { accountNumber, sequence, chainId }) {
|
||||
// const accountFromSigner = (await this.signer.getAccounts()).find(account => account.address === signerAddress)
|
||||
// if (!accountFromSigner) {
|
||||
// throw new Error('Failed to retrieve account from signer')
|
||||
// }
|
||||
const pubkey = ''
|
||||
const txBodyEncodeObject = {
|
||||
typeUrl: '/cosmos.tx.v1beta1.TxBody',
|
||||
value: {
|
||||
messages,
|
||||
memo,
|
||||
},
|
||||
}
|
||||
const txBodyBytes = new Registry().encode(txBodyEncodeObject)
|
||||
const gasLimit = 1
|
||||
const authInfoBytes = makeAuthInfoBytes([pubkey], fee.amount, gasLimit, sequence)
|
||||
const signDoc = makeSignDoc(txBodyBytes, authInfoBytes, chainId, accountNumber)
|
||||
|
||||
const { signature, signed } = await this.signer.signDirect(signerAddress, signDoc)
|
||||
return tx_4.TxRaw.fromPartial({
|
||||
bodyBytes: signed.bodyBytes,
|
||||
authInfoBytes: signed.authInfoBytes,
|
||||
signatures: [encoding_1.fromBase64(signature.signature)],
|
||||
})
|
||||
}
|
||||
}
|
@ -20,6 +20,7 @@ const modules = [
|
||||
scope: 'normal',
|
||||
title: 'governance',
|
||||
route: 'governance',
|
||||
exclude: 'emoney',
|
||||
},
|
||||
{
|
||||
scope: 'normal',
|
||||
@ -54,14 +55,17 @@ function processMenu() {
|
||||
title: chain,
|
||||
icon: store.state.chains.config[chain].logo,
|
||||
}
|
||||
const { excludes } = store.state.chains.config[chain]
|
||||
const children = []
|
||||
modules.forEach(m => {
|
||||
if (m.scope.match('normal') || m.scope.match(chain)) {
|
||||
children.push({
|
||||
if (excludes === undefined || excludes.indexOf(m.route) === -1) {
|
||||
if (m.scope.match('normal') || m.scope.match(chain)) {
|
||||
children.push({
|
||||
// header: `item-${chain}-${m.route}`,
|
||||
title: m.title,
|
||||
route: { name: m.route, params: { chain } },
|
||||
})
|
||||
title: m.title,
|
||||
route: { name: m.route, params: { chain } },
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
menu.children = children
|
||||
|
7
src/store/chains/bitsong.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"chain_name": "bitsong",
|
||||
"api": "https://lcd.explorebitsong.com",
|
||||
"addr_prefix": "bitsong",
|
||||
"logo": "https://dl.airtable.com/.attachments/8016b71b69fb108f0ff33eb9af1c943f/f5fe4ef4/bitsong.svg",
|
||||
"sdk_version": "0.39.2"
|
||||
}
|
8
src/store/chains/emoney.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"chain_name": "e-money",
|
||||
"api": "https://emoney.validator.network/api",
|
||||
"addr_prefix": "emoney",
|
||||
"logo": "https://dl.airtable.com/.attachments/276e4d6de567b073a5e400240d7d83e9/9bb49806/yoR2r25W_400x400.jpg",
|
||||
"sdk_version": "0.42.10",
|
||||
"excludes": "mint governance"
|
||||
}
|
@ -3,5 +3,6 @@
|
||||
"api": "https://iris.api.ping.pub",
|
||||
"sdk_version": "0.42.4",
|
||||
"addr_prefix": "iaa",
|
||||
"excludes": "mint",
|
||||
"logo": "https://dl.airtable.com/.attachments/2d6d51b1b262db00ecc51616ffc3bdf5/90ff00d0/IRISnet.svg"
|
||||
}
|
@ -41,7 +41,7 @@
|
||||
<summary-parmeters-component :data="staking" />
|
||||
</b-col>
|
||||
</b-row>
|
||||
<b-row>
|
||||
<b-row v-if="gov.items.length > 0">
|
||||
<b-col>
|
||||
<summary-parmeters-component :data="gov" />
|
||||
</b-col>
|
||||
@ -159,11 +159,6 @@ export default {
|
||||
this.marketData = res
|
||||
})
|
||||
|
||||
this.$http.getMintingInflation().then(res => {
|
||||
const chainIndex = this.chain.items.findIndex(x => x.subtitle === 'inflation')
|
||||
this.$set(this.chain.items[chainIndex], 'title', `${percent(res)}%`)
|
||||
})
|
||||
|
||||
this.$http.getStakingParameters().then(res => {
|
||||
this.staking = this.normalize(res, 'Staking Parameters')
|
||||
Promise.all([this.$http.getStakingPool(), this.$http.getBankTotal(res.bond_denom)])
|
||||
@ -178,10 +173,14 @@ export default {
|
||||
this.slasing = this.normalize(res, 'Slashing Parameters')
|
||||
})
|
||||
|
||||
const selected = this.$route.params.chain
|
||||
if (selected === 'iris') {
|
||||
const conf = this.$http.getSelectedConfig()
|
||||
if (conf.excludes && conf.excludes.indexOf('mint') > -1) {
|
||||
this.mint = null
|
||||
} else {
|
||||
this.$http.getMintingInflation().then(res => {
|
||||
const chainIndex = this.chain.items.findIndex(x => x.subtitle === 'inflation')
|
||||
this.$set(this.chain.items[chainIndex], 'title', `${percent(res)}%`)
|
||||
})
|
||||
this.$http.getMintParameters().then(res => {
|
||||
this.mint = this.normalize(res, 'Minting Parameters')
|
||||
})
|
||||
@ -190,19 +189,23 @@ export default {
|
||||
this.$http.getDistributionParameters().then(res => {
|
||||
this.distribution = this.normalize(res, 'Distribution Parameters')
|
||||
})
|
||||
Promise.all([
|
||||
this.$http.getGovernanceParameterDeposit(),
|
||||
this.$http.getGovernanceParameterTallying(),
|
||||
this.$http.getGovernanceParameterVoting(),
|
||||
]).then(data => {
|
||||
let items = []
|
||||
data.forEach(item => {
|
||||
const values = this.normalize(item, '').items
|
||||
items = items.concat(values)
|
||||
if (conf.excludes && conf.excludes.indexOf('governance') > -1) {
|
||||
this.gov.items = []
|
||||
} else {
|
||||
Promise.all([
|
||||
this.$http.getGovernanceParameterDeposit(),
|
||||
this.$http.getGovernanceParameterTallying(),
|
||||
this.$http.getGovernanceParameterVoting(),
|
||||
]).then(data => {
|
||||
let items = []
|
||||
data.forEach(item => {
|
||||
const values = this.normalize(item, '').items
|
||||
items = items.concat(values)
|
||||
})
|
||||
this.gov.items = items
|
||||
this.$set(this.gov, 'items', items)
|
||||
})
|
||||
this.gov.items = items
|
||||
this.$set(this.gov, 'items', items)
|
||||
})
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
normalize(data, title) {
|
||||
|
@ -411,7 +411,7 @@ export default {
|
||||
labels: Object.keys(total.value),
|
||||
datasets: [
|
||||
{
|
||||
label: 'Value',
|
||||
label: 'Market Cap',
|
||||
data: Object.values(total.value),
|
||||
backgroundColor: chartColors(),
|
||||
borderWidth: 0,
|
||||
|