Fix network editing in vue and use absolute urls in router links.

This commit is contained in:
Richard Lewis 2019-10-28 13:48:13 +00:00 committed by Pavel Djundik
parent 2049a16d64
commit 8fa42c5c48
6 changed files with 37 additions and 8 deletions

View file

@ -4,7 +4,7 @@
<SidebarToggle />
</div>
<div class="container">
<router-link id="back-to-help" to="help">« Help</router-link>
<router-link id="back-to-help" to="/help">« Help</router-link>
<template
v-if="

View file

@ -10,7 +10,7 @@
<small class="pull-right">
v{{ $root.serverConfiguration.version }} (<router-link
id="view-changelog"
to="changelog"
to="/changelog"
>release notes</router-link
>)
</small>

View file

@ -1,8 +1,8 @@
<template>
<NetworkForm
v-if="$store.state.currentNetworkConfig"
v-if="networkData"
:handle-submit="handleSubmit"
:defaults="$store.state.currentNetworkConfig"
:defaults="networkData"
:disabled="disabled"
/>
</template>
@ -21,9 +21,21 @@ export default {
data() {
return {
disabled: false,
networkData: null,
};
},
watch: {
"$route.params.uuid"() {
this.setNetworkData();
},
},
mounted() {
this.setNetworkData();
},
methods: {
setNetworkData() {
this.networkData = this.$root.findNetwork(this.$route.params.uuid);
},
handleSubmit(data) {
this.disabled = true;
socket.emit("network:edit", data);
@ -32,7 +44,6 @@ export default {
// TODO: move networks to vuex and update state when the network info comes in
const network = this.$root.networks.find((n) => n.uuid === data.uuid);
network.name = network.channels[0].name = data.name;
sidebar.find(`.network[data-uuid="${data.uuid}"] .chan.lobby .name`).click();
},
},

View file

@ -290,8 +290,8 @@ function addFocusItem() {
}
function addEditNetworkItem() {
function edit(itemData) {
socket.emit("network:get", itemData);
function edit(networkUuid) {
vueApp.$router.push("/edit-network/" + networkUuid);
}
addContextMenuItem({

View file

@ -9,6 +9,7 @@ const Connect = require("../components/Windows/Connect.vue").default;
const Settings = require("../components/Windows/Settings.vue").default;
const Help = require("../components/Windows/Help.vue").default;
const Changelog = require("../components/Windows/Changelog.vue").default;
const NetworkEdit = require("../components/Windows/NetworkEdit.vue").default;
const RoutedChat = require("../components/RoutedChat.vue").default;
const router = new VueRouter({
@ -53,6 +54,14 @@ const router = new VueRouter({
windowName: "Changelog",
},
},
{
path: "/edit-network/:uuid",
component: NetworkEdit,
meta: {
isChat: false,
windowName: "NetworkEdit",
},
},
{
path: "/chan-*",
component: RoutedChat,

View file

@ -102,12 +102,21 @@ const vueApp = new Vue({
return null;
},
findNetwork(uuid) {
for (const network of this.networks) {
if (network.uuid === uuid) {
return network;
}
}
return null;
},
switchToChannel(channel) {
if (this.activeChannel && this.activeChannel.channel.id === channel.id) {
return;
}
this.$router.push("chan-" + channel.id);
this.$router.push("/chan-" + channel.id);
},
switchOutOfChannel(channel) {
// When switching out of a channel, mark everything as read