mirror of
https://github.com/thelounge/thelounge
synced 2024-11-25 21:40:22 +00:00
Fix up network editing
This commit is contained in:
parent
8fa42c5c48
commit
c8b22b2df3
8 changed files with 64 additions and 49 deletions
|
@ -12,9 +12,7 @@
|
|||
Edit {{ defaults.name }}
|
||||
</template>
|
||||
<template v-else>
|
||||
<template v-if="config.public"
|
||||
>The Lounge -
|
||||
</template>
|
||||
<template v-if="config.public">The Lounge - </template>
|
||||
Connect
|
||||
<template v-if="!config.displayNetwork">
|
||||
<template v-if="config.lockNetwork">
|
||||
|
|
|
@ -34,6 +34,7 @@ export default {
|
|||
},
|
||||
methods: {
|
||||
setNetworkData() {
|
||||
socket.emit("network:get", this.$route.params.uuid);
|
||||
this.networkData = this.$root.findNetwork(this.$route.params.uuid);
|
||||
},
|
||||
handleSubmit(data) {
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
"use strict";
|
||||
|
||||
const $ = require("jquery");
|
||||
const socket = require("../socket");
|
||||
const {vueApp, initChannel, findChannel} = require("../vue");
|
||||
const {vueApp, initChannel, findChannel, findNetwork} = require("../vue");
|
||||
|
||||
socket.on("network", function(data) {
|
||||
const network = data.networks[0];
|
||||
|
@ -13,10 +12,6 @@ socket.on("network", function(data) {
|
|||
|
||||
vueApp.networks.push(network);
|
||||
vueApp.switchToChannel(network.channels[0]);
|
||||
|
||||
$("#connect")
|
||||
.find(".btn")
|
||||
.prop("disabled", false);
|
||||
});
|
||||
|
||||
socket.on("network:options", function(data) {
|
||||
|
@ -50,7 +45,13 @@ socket.on("channel:state", function(data) {
|
|||
});
|
||||
|
||||
socket.on("network:info", function(data) {
|
||||
vueApp.$store.commit("currentNetworkConfig", data.defaults);
|
||||
vueApp.$store.commit("activeWindow", "NetworkEdit");
|
||||
vueApp.activeChannel = null;
|
||||
const network = findNetwork(data.uuid);
|
||||
|
||||
if (!network) {
|
||||
return;
|
||||
}
|
||||
|
||||
for (const key in data) {
|
||||
vueApp.$set(network, key, data[key]);
|
||||
}
|
||||
});
|
||||
|
|
|
@ -198,6 +198,10 @@ function findChannel(id) {
|
|||
return vueApp.findChannel(id);
|
||||
}
|
||||
|
||||
function findNetwork(uuid) {
|
||||
return vueApp.findNetwork(uuid);
|
||||
}
|
||||
|
||||
function initChannel(channel) {
|
||||
channel.pendingMessage = "";
|
||||
channel.inputHistoryPosition = 0;
|
||||
|
@ -221,6 +225,7 @@ function getActiveWindowComponent() {
|
|||
module.exports = {
|
||||
vueApp,
|
||||
findChannel,
|
||||
findNetwork,
|
||||
initChannel,
|
||||
getActiveWindowComponent,
|
||||
};
|
||||
|
|
|
@ -10,21 +10,19 @@ const Helper = require("../helper");
|
|||
module.exports = Network;
|
||||
|
||||
/**
|
||||
* @type {Object} List of keys which should not be sent to the client.
|
||||
* @type {Object} List of keys which should be sent to the client by default.
|
||||
*/
|
||||
const filteredFromClient = {
|
||||
awayMessage: true,
|
||||
chanCache: true,
|
||||
highlightRegex: true,
|
||||
irc: true,
|
||||
password: true,
|
||||
ignoreList: true,
|
||||
keepNick: true,
|
||||
const fieldsForClient = {
|
||||
uuid: true,
|
||||
name: true,
|
||||
nick: true,
|
||||
serverOptions: true,
|
||||
};
|
||||
|
||||
function Network(attr) {
|
||||
_.defaults(this, attr, {
|
||||
name: "",
|
||||
nick: "",
|
||||
host: "",
|
||||
port: 6667,
|
||||
tls: false,
|
||||
|
@ -294,7 +292,7 @@ Network.prototype.getFilteredClone = function(lastActiveChannel, lastMessage) {
|
|||
newNetwork[prop] = this[prop].map((channel) =>
|
||||
channel.getFilteredClone(lastActiveChannel, lastMessage)
|
||||
);
|
||||
} else if (!filteredFromClient[prop]) {
|
||||
} else if (fieldsForClient[prop]) {
|
||||
// Some properties that are not useful for the client are skipped
|
||||
newNetwork[prop] = this[prop];
|
||||
}
|
||||
|
@ -352,6 +350,32 @@ Network.prototype.addChannel = function(newChan) {
|
|||
return index;
|
||||
};
|
||||
|
||||
Network.prototype.exportForEdit = function() {
|
||||
let fieldsToReturn;
|
||||
|
||||
if (Helper.config.displayNetwork) {
|
||||
// Return fields required to edit a network
|
||||
fieldsToReturn = [
|
||||
"uuid",
|
||||
"nick",
|
||||
"name",
|
||||
"host",
|
||||
"port",
|
||||
"tls",
|
||||
"rejectUnauthorized",
|
||||
"password",
|
||||
"username",
|
||||
"realname",
|
||||
"commands",
|
||||
];
|
||||
} else {
|
||||
// Same fields as in getClientConfiguration when network is hidden
|
||||
fieldsToReturn = ["name", "nick", "username", "password", "realname"];
|
||||
}
|
||||
|
||||
return _.pick(this, fieldsToReturn);
|
||||
};
|
||||
|
||||
Network.prototype.export = function() {
|
||||
const network = _.pick(this, [
|
||||
"uuid",
|
||||
|
|
|
@ -399,7 +399,7 @@ function initializeClient(socket, client, token, lastMessage, openChannel) {
|
|||
return;
|
||||
}
|
||||
|
||||
socket.emit("network:info", getClientConfiguration(network.export()));
|
||||
socket.emit("network:info", network.exportForEdit());
|
||||
});
|
||||
|
||||
socket.on("network:edit", (data) => {
|
||||
|
@ -657,7 +657,7 @@ function initializeClient(socket, client, token, lastMessage, openChannel) {
|
|||
}
|
||||
}
|
||||
|
||||
function getClientConfiguration(network) {
|
||||
function getClientConfiguration() {
|
||||
const config = _.pick(Helper.config, [
|
||||
"public",
|
||||
"lockNetwork",
|
||||
|
@ -670,10 +670,10 @@ function getClientConfiguration(network) {
|
|||
config.ldapEnabled = Helper.config.ldap.enable;
|
||||
|
||||
if (config.displayNetwork) {
|
||||
config.defaults = _.clone(network || Helper.config.defaults);
|
||||
config.defaults = _.clone(Helper.config.defaults);
|
||||
} else {
|
||||
// Only send defaults that are visible on the client
|
||||
config.defaults = _.pick(network || Helper.config.defaults, [
|
||||
config.defaults = _.pick(Helper.config.defaults, [
|
||||
"name",
|
||||
"nick",
|
||||
"username",
|
||||
|
@ -683,13 +683,11 @@ function getClientConfiguration(network) {
|
|||
]);
|
||||
}
|
||||
|
||||
if (!network) {
|
||||
config.version = pkg.version;
|
||||
config.gitCommit = Helper.getGitCommit();
|
||||
config.themes = themes.getAll();
|
||||
config.defaultTheme = Helper.config.theme;
|
||||
config.defaults.nick = Helper.getDefaultNick();
|
||||
}
|
||||
|
||||
if (Uploader) {
|
||||
config.fileUploadMaxFileSize = Uploader.getMaxFileSize();
|
||||
|
|
|
@ -227,21 +227,7 @@ describe("Network", function() {
|
|||
|
||||
expect(clone)
|
||||
.to.be.an("object")
|
||||
.that.has.all.keys(
|
||||
"channels",
|
||||
"commands",
|
||||
"host",
|
||||
"name",
|
||||
"port",
|
||||
"realname",
|
||||
"serverOptions",
|
||||
"status",
|
||||
"tls",
|
||||
"userDisconnected",
|
||||
"rejectUnauthorized",
|
||||
"uuid",
|
||||
"username"
|
||||
);
|
||||
.that.has.all.keys("channels", "status", "nick", "name", "serverOptions", "uuid");
|
||||
|
||||
expect(clone.status)
|
||||
.to.be.an("object")
|
||||
|
|
|
@ -91,10 +91,12 @@ describe("Server", function() {
|
|||
client.on("network", (data) => {
|
||||
expect(data.networks).to.be.an("array");
|
||||
expect(data.networks).to.have.lengthOf(1);
|
||||
expect(data.networks[0].realname).to.equal("The Lounge Test");
|
||||
expect(data.networks[0].nick).to.equal("test-user");
|
||||
expect(data.networks[0].name).to.equal("Test Network");
|
||||
expect(data.networks[0].channels).to.have.lengthOf(3);
|
||||
expect(data.networks[0].channels[0].name).to.equal("Test Network");
|
||||
expect(data.networks[0].channels[1].name).to.equal("#thelounge");
|
||||
expect(data.networks[0].channels[2].name).to.equal("#spam");
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue