161 lines
4.7 KiB
Vue
161 lines
4.7 KiB
Vue
<template>
|
|
<div>
|
|
<q-btn class="menu" icon="menu" size="md" flat>
|
|
<q-popover>
|
|
<q-list separator link>
|
|
<q-item v-if="!disableSwitchWallet" v-close-overlay @click.native="switchWallet">
|
|
<q-item-main>
|
|
<q-item-tile label>{{ $t("menuItems.switchWallet") }}</q-item-tile>
|
|
</q-item-main>
|
|
</q-item>
|
|
<q-item v-close-overlay @click.native="openSettings">
|
|
<q-item-main>
|
|
<q-item-tile label>{{ $t("menuItems.settings") }}</q-item-tile>
|
|
</q-item-main>
|
|
</q-item>
|
|
<q-item v-close-overlay @click.native="showAbout(true)">
|
|
<q-item-main>
|
|
<q-item-tile label>{{ $t("menuItems.about") }}</q-item-tile>
|
|
</q-item-main>
|
|
</q-item>
|
|
<q-item v-close-overlay @click.native="exit">
|
|
<q-item-main>
|
|
<q-item-tile label>{{ $t("menuItems.exit") }}</q-item-tile>
|
|
</q-item-main>
|
|
</q-item>
|
|
</q-list>
|
|
</q-popover>
|
|
</q-btn>
|
|
<SettingsModal ref="settingsModal" />
|
|
<q-modal ref="aboutModal" minimized>
|
|
<div class="about-modal">
|
|
<img class="q-mb-md" src="statics/loki.svg" height="42" />
|
|
|
|
<p class="q-my-sm">Wallet Version: v{{ version }}</p>
|
|
<p class="q-my-sm">Deaemon Version: v{{ daemonVersion }}</p>
|
|
<p class="q-my-sm">Copyright (c) 2018-2019, Loki Project</p>
|
|
<p class="q-my-sm">Copyright (c) 2018, Ryo Currency Project</p>
|
|
<p class="q-my-sm">All rights reserved.</p>
|
|
|
|
<div class="q-mt-md q-mb-lg external-links">
|
|
<p>
|
|
<a href="#" @click="openExternal('https://loki.network/')">https://loki.network/</a>
|
|
</p>
|
|
<p>
|
|
<a href="#" @click="openExternal('https://t.me/joinchat/DeNvR0JJ4JPn6TVSQjCsZQ')">Telegram</a>
|
|
-
|
|
<a href="#" @click="openExternal('https://discordapp.com/invite/67GXfD6')">Discord</a>
|
|
-
|
|
<a href="#" @click="openExternal('https://www.reddit.com/r/LokiProject/')">Reddit</a>
|
|
-
|
|
<a href="#" @click="openExternal('https://github.com/loki-project/loki-electron-wallet')">Github</a>
|
|
</p>
|
|
</div>
|
|
|
|
<q-btn color="primary" label="Close" @click="showAbout(false)" />
|
|
</div>
|
|
</q-modal>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import { version } from "../../package.json";
|
|
import { mapState } from "vuex";
|
|
import SettingsModal from "components/settings";
|
|
export default {
|
|
name: "MainMenu",
|
|
components: {
|
|
SettingsModal
|
|
},
|
|
props: {
|
|
disableSwitchWallet: {
|
|
type: Boolean,
|
|
required: false,
|
|
default: false
|
|
}
|
|
},
|
|
data() {
|
|
return {
|
|
version: ""
|
|
};
|
|
},
|
|
computed: mapState({
|
|
theme: state => state.gateway.app.config.appearance.theme,
|
|
isRPCSyncing: state => state.gateway.wallet.isRPCSyncing,
|
|
daemon: state => state.gateway.daemon,
|
|
daemonVersion() {
|
|
return this.daemon.info.version || "N/A";
|
|
}
|
|
}),
|
|
mounted() {
|
|
this.version = version;
|
|
},
|
|
methods: {
|
|
openExternal(url) {
|
|
this.$gateway.send("core", "open_url", { url });
|
|
},
|
|
showAbout(toggle) {
|
|
if (toggle) this.$refs.aboutModal.show();
|
|
else this.$refs.aboutModal.hide();
|
|
},
|
|
openSettings() {
|
|
this.$refs.settingsModal.isVisible = true;
|
|
},
|
|
switchWallet() {
|
|
// If the rpc is syncing then we want to tell the user to restart
|
|
if (this.isRPCSyncing) {
|
|
this.$gateway.confirmClose(this.$t("dialog.switchWallet.restartMessage"), true);
|
|
return;
|
|
}
|
|
|
|
// Allow switching normally because rpc won't be blocked
|
|
this.$q
|
|
.dialog({
|
|
title: this.$t("dialog.switchWallet.title"),
|
|
message: this.$t("dialog.switchWallet.closeMessage"),
|
|
ok: {
|
|
label: this.$t("dialog.buttons.ok")
|
|
},
|
|
cancel: {
|
|
flat: true,
|
|
label: this.$t("dialog.buttons.cancel"),
|
|
color: this.theme == "dark" ? "white" : "dark"
|
|
}
|
|
})
|
|
.then(() => {
|
|
this.$router.replace({ path: "/wallet-select" });
|
|
this.$gateway.send("wallet", "close_wallet");
|
|
setTimeout(() => {
|
|
// short delay to prevent wallet data reaching the
|
|
// websocket moments after we close and reset data
|
|
this.$store.dispatch("gateway/resetWalletData");
|
|
}, 250);
|
|
})
|
|
.catch(() => {});
|
|
},
|
|
exit() {
|
|
this.$gateway.confirmClose(this.$t("dialog.exit.message"));
|
|
}
|
|
}
|
|
};
|
|
</script>
|
|
|
|
<style lang="scss">
|
|
.about-modal {
|
|
padding: 25px;
|
|
|
|
.external-links {
|
|
a {
|
|
color: #497dc6;
|
|
text-decoration: none;
|
|
|
|
&:hover,
|
|
&:active,
|
|
&:visited {
|
|
text-decoration: underline;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
</style>
|