2018-09-08 23:44:19 +02:00
|
|
|
<template>
|
2019-02-22 04:46:15 +01:00
|
|
|
<q-page class="receive">
|
2018-10-26 01:17:33 +02:00
|
|
|
<q-list link no-border :dark="theme=='dark'">
|
2018-09-08 23:44:19 +02:00
|
|
|
|
|
|
|
<q-list-header>My primary address</q-list-header>
|
2019-02-22 04:46:15 +01:00
|
|
|
<q-list class="item-group primary-address" no-border v-for="address in address_list.primary" :key="address.address" @click.native="details(address)">
|
|
|
|
<q-item>
|
|
|
|
<q-item-main>
|
|
|
|
<q-item-tile class="ellipsis" label>{{ address.address }}</q-item-tile>
|
|
|
|
<q-item-tile sublabel>Primary address</q-item-tile>
|
|
|
|
</q-item-main>
|
|
|
|
<q-item-side>
|
|
|
|
<q-btn
|
|
|
|
flat
|
|
|
|
style="width:25px;"
|
|
|
|
size="md" icon="file_copy"
|
|
|
|
@click="copyAddress(address.address, $event)">
|
|
|
|
<q-tooltip anchor="center left" self="center right" :offset="[5, 10]">
|
|
|
|
Copy address
|
|
|
|
</q-tooltip>
|
|
|
|
</q-btn>
|
|
|
|
</q-item-side>
|
|
|
|
</q-item>
|
|
|
|
<q-item-separator />
|
|
|
|
<q-item class="info">
|
|
|
|
<q-item-main class="flex justify-between">
|
|
|
|
<div class="column">
|
|
|
|
<span>Balance</span>
|
|
|
|
<span class="value">{{address.balance | currency}}</span>
|
|
|
|
</div>
|
|
|
|
<div class="column">
|
|
|
|
<span>Unlocked balance</span>
|
|
|
|
<span class="value">{{ address.unlocked_balance | currency }}</span>
|
|
|
|
</div>
|
|
|
|
<div class="column">
|
|
|
|
<span>Unspent outputs</span>
|
|
|
|
<span class="value">{{ address.num_unspent_outputs | toString }}</span>
|
|
|
|
</div>
|
|
|
|
</q-item-main>
|
|
|
|
</q-item>
|
2018-11-02 19:31:36 +01:00
|
|
|
<q-context-menu>
|
|
|
|
<q-list link separator style="min-width: 150px; max-height: 300px;">
|
|
|
|
<q-item v-close-overlay
|
|
|
|
@click.native="details(address)">
|
|
|
|
<q-item-main label="Show details" />
|
|
|
|
</q-item>
|
|
|
|
|
|
|
|
<q-item v-close-overlay
|
|
|
|
@click.native="copyAddress(address.address, $event)">
|
|
|
|
<q-item-main label="Copy address" />
|
|
|
|
</q-item>
|
|
|
|
</q-list>
|
|
|
|
</q-context-menu>
|
2019-02-22 04:46:15 +01:00
|
|
|
</q-list>
|
2018-09-08 23:44:19 +02:00
|
|
|
|
|
|
|
<template v-if="address_list.used.length">
|
|
|
|
<q-list-header>My used addresses</q-list-header>
|
2019-02-22 04:46:15 +01:00
|
|
|
<q-list class="item-group" no-border v-for="address in address_list.used" @click.native="details(address)" :key="address.address">
|
|
|
|
<q-item>
|
|
|
|
<q-item-main>
|
|
|
|
<q-item-tile class="ellipsis" label>{{ address.address }}</q-item-tile>
|
|
|
|
<q-item-tile sublabel>Sub-address (Index {{ address.address_index }})</q-item-tile>
|
|
|
|
</q-item-main>
|
|
|
|
<q-item-side>
|
|
|
|
<q-btn
|
|
|
|
flat
|
|
|
|
style="width:25px;"
|
|
|
|
size="md" icon="file_copy"
|
|
|
|
@click="copyAddress(address.address, $event)">
|
|
|
|
<q-tooltip anchor="center left" self="center right" :offset="[5, 10]">
|
|
|
|
Copy address
|
|
|
|
</q-tooltip>
|
|
|
|
</q-btn>
|
|
|
|
</q-item-side>
|
|
|
|
</q-item>
|
|
|
|
<q-item-separator />
|
|
|
|
<q-item class="info">
|
|
|
|
<q-item-main class="flex justify-between">
|
|
|
|
<div class="column">
|
|
|
|
<span>Balance</span>
|
|
|
|
<span class="value">{{ address.balance | currency }}</span>
|
|
|
|
</div>
|
|
|
|
<div class="column">
|
|
|
|
<span>Unlocked balance</span>
|
|
|
|
<span class="value">{{ address.unlocked_balance | currency }}</span>
|
|
|
|
</div>
|
|
|
|
<div class="column">
|
|
|
|
<span>Unspent outputs</span>
|
|
|
|
<span class="value">{{ address.num_unspent_outputs | toString }}</span>
|
|
|
|
</div>
|
|
|
|
</q-item-main>
|
|
|
|
</q-item>
|
2018-11-02 19:31:36 +01:00
|
|
|
|
|
|
|
<q-context-menu>
|
|
|
|
<q-list link separator style="min-width: 150px; max-height: 300px;">
|
|
|
|
<q-item v-close-overlay
|
|
|
|
@click.native="details(address)">
|
|
|
|
<q-item-main label="Show details" />
|
|
|
|
</q-item>
|
|
|
|
|
|
|
|
<q-item v-close-overlay
|
|
|
|
@click.native="copyAddress(address.address, $event)">
|
|
|
|
<q-item-main label="Copy address" />
|
|
|
|
</q-item>
|
|
|
|
</q-list>
|
|
|
|
</q-context-menu>
|
2019-02-22 04:46:15 +01:00
|
|
|
</q-list>
|
2018-09-08 23:44:19 +02:00
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<template v-if="address_list.unused.length">
|
|
|
|
<q-list-header>My unused addresses</q-list-header>
|
2019-02-22 04:46:15 +01:00
|
|
|
<q-list class="item-group" no-border v-for="address in address_list.unused" @click.native="details(address)" :key="address.address">
|
|
|
|
<q-item>
|
|
|
|
<q-item-main>
|
|
|
|
<q-item-tile class="ellipsis" label>{{ address.address }}</q-item-tile>
|
|
|
|
<q-item-tile sublabel>Sub-address (Index {{ address.address_index }})</q-item-tile>
|
|
|
|
</q-item-main>
|
|
|
|
<q-item-side>
|
|
|
|
<q-btn
|
|
|
|
flat
|
|
|
|
style="width:25px;"
|
|
|
|
size="md" icon="file_copy"
|
|
|
|
@click="copyAddress(address.address, $event)">
|
|
|
|
<q-tooltip anchor="center left" self="center right" :offset="[5, 10]">
|
|
|
|
Copy address
|
|
|
|
</q-tooltip>
|
|
|
|
</q-btn>
|
|
|
|
</q-item-side>
|
|
|
|
</q-item>
|
2018-11-02 19:31:36 +01:00
|
|
|
|
|
|
|
<q-context-menu>
|
|
|
|
<q-list link separator style="min-width: 150px; max-height: 300px;">
|
|
|
|
<q-item v-close-overlay
|
|
|
|
@click.native="details(address)">
|
|
|
|
<q-item-main label="Show details" />
|
|
|
|
</q-item>
|
|
|
|
|
|
|
|
<q-item v-close-overlay
|
|
|
|
@click.native="copyAddress(address.address, $event)">
|
|
|
|
<q-item-main label="Copy address" />
|
|
|
|
</q-item>
|
|
|
|
</q-list>
|
|
|
|
</q-context-menu>
|
|
|
|
|
2019-02-22 04:46:15 +01:00
|
|
|
</q-list>
|
2018-09-08 23:44:19 +02:00
|
|
|
</template>
|
|
|
|
|
|
|
|
</q-list>
|
|
|
|
<AddressDetails ref="addressDetails" />
|
|
|
|
</q-page>
|
|
|
|
</template>
|
|
|
|
|
|
|
|
<script>
|
2019-02-22 04:46:15 +01:00
|
|
|
|
2018-10-27 18:44:37 +02:00
|
|
|
const { clipboard } = require("electron")
|
2018-09-08 23:44:19 +02:00
|
|
|
import { mapState } from "vuex"
|
|
|
|
import Identicon from "components/identicon"
|
|
|
|
import AddressDetails from "components/address_details"
|
|
|
|
export default {
|
|
|
|
computed: mapState({
|
2018-10-26 01:17:33 +02:00
|
|
|
theme: state => state.gateway.app.config.appearance.theme,
|
2018-09-08 23:44:19 +02:00
|
|
|
address_list: state => state.gateway.wallet.address_list
|
|
|
|
}),
|
2019-02-22 04:46:15 +01:00
|
|
|
filters: {
|
|
|
|
toString: function (value) {
|
|
|
|
if (typeof value !== "number") return "N/A";
|
|
|
|
return String(value);
|
|
|
|
},
|
|
|
|
currency: function (value) {
|
|
|
|
if (typeof value !== "number") return "N/A";
|
|
|
|
|
|
|
|
const amount = value / 1e9
|
|
|
|
return amount.toLocaleString()
|
|
|
|
}
|
|
|
|
},
|
2018-09-08 23:44:19 +02:00
|
|
|
methods: {
|
|
|
|
details (address) {
|
|
|
|
this.$refs.addressDetails.address = address;
|
|
|
|
this.$refs.addressDetails.isVisible = true;
|
2018-10-27 18:44:37 +02:00
|
|
|
},
|
|
|
|
copyAddress (address, event) {
|
|
|
|
event.stopPropagation()
|
|
|
|
for(let i = 0; i < event.path.length; i++) {
|
|
|
|
if(event.path[i].tagName == "BUTTON") {
|
|
|
|
event.path[i].blur()
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
clipboard.writeText(address)
|
|
|
|
this.$q.notify({
|
|
|
|
type: "positive",
|
|
|
|
timeout: 1000,
|
|
|
|
message: "Address copied to clipboard"
|
|
|
|
})
|
2018-09-08 23:44:19 +02:00
|
|
|
}
|
|
|
|
},
|
|
|
|
components: {
|
|
|
|
Identicon,
|
|
|
|
AddressDetails,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
2019-02-22 04:46:15 +01:00
|
|
|
|
|
|
|
<style lang="scss">
|
|
|
|
.receive {
|
|
|
|
.q-item-label {
|
|
|
|
font-weight: 400;
|
|
|
|
}
|
|
|
|
|
|
|
|
.q-item-sublabel, .q-list-header {
|
|
|
|
font-size: 13px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.item-group {
|
|
|
|
cursor: pointer;
|
|
|
|
|
|
|
|
margin: 0 16px;
|
|
|
|
// padding: 14px;
|
|
|
|
border-radius: 3px;
|
|
|
|
|
|
|
|
+ .item-group {
|
|
|
|
margin-top: 10px;
|
|
|
|
}
|
|
|
|
|
|
|
|
.q-item-side {
|
|
|
|
display: flex;
|
|
|
|
justify-content: center;
|
|
|
|
align-items: center;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</style>
|