feat: dynamic frontend configuration

This commit is contained in:
Florent Chehab
2020-05-10 23:13:55 +02:00
parent 9fda0a2c4b
commit b0337d9f5b
10 changed files with 180 additions and 83 deletions

View File

@@ -30,13 +30,39 @@
"frontend": {
"type": "object",
"additionalProperties": false,
"required": ["setReadOnlyOnWhiteboardLoad", "showSmallestScreenIndicator"],
"required": ["readOnlyOnWhiteboardLoad", "showSmallestScreenIndicator", "performance"],
"properties": {
"setReadOnlyOnWhiteboardLoad": {
"readOnlyOnWhiteboardLoad": {
"type": "boolean"
},
"showSmallestScreenIndicator": {
"type": "boolean"
},
"performance": {
"type": "object",
"additionalProperties": false,
"required": ["pointerEventsThreshold", "refreshInfoFreq"],
"properties": {
"pointerEventsThreshold": {
"type": "object",
"additionalProperties": false,
"required": ["minDistDelta", "minTimeDelta"],
"properties": {
"minDistDelta": {
"type": "number",
"minimum": 0
},
"minTimeDelta": {
"type": "number",
"minimum": 0
}
}
},
"refreshInfoFreq": {
"type": "number",
"minimum": 0
}
}
}
}
}

View File

@@ -195,19 +195,19 @@ function startBackendServer(port) {
var whiteboardId = null;
socket.on("disconnect", function () {
if (infoByWhiteboard.has(whiteboardId)) {
const whiteboardServerSideInfo = infoByWhiteboard.get(whiteboardId);
const whiteboardServerSideInfo = infoByWhiteboard.get(whiteboardId);
if (socket && socket.id) {
whiteboardServerSideInfo.deleteScreenResolutionOfClient(socket.id);
}
if (socket && socket.id) {
whiteboardServerSideInfo.deleteScreenResolutionOfClient(socket.id);
}
whiteboardServerSideInfo.decrementNbConnectedUsers();
whiteboardServerSideInfo.decrementNbConnectedUsers();
if (whiteboardServerSideInfo.hasConnectedUser()) {
socket.compress(false).broadcast.emit("refreshUserBadges", null); //Removes old user Badges
} else {
infoByWhiteboard.delete(whiteboardId);
}
if (whiteboardServerSideInfo.hasConnectedUser()) {
socket.compress(false).broadcast.emit("refreshUserBadges", null); //Removes old user Badges
} else {
infoByWhiteboard.delete(whiteboardId);
}
}
});
@@ -224,6 +224,8 @@ function startBackendServer(port) {
socket.on("joinWhiteboard", function (content) {
content = escapeAllContentStrings(content);
if (accessToken === "" || accessToken == content["at"]) {
socket.emit("whiteboardConfig", { common: config.frontend });
whiteboardId = content["wid"];
socket.join(whiteboardId); //Joins room name=wid
if (!infoByWhiteboard.has(whiteboardId)) {

View File

@@ -31,11 +31,11 @@ test("Complex object config override", () => {
test("Override default config", () => {
const defaultConfig = getDefaultConfig();
const overrideConfig1 = { frontend: { setReadOnlyOnWhiteboardLoad: true } };
const overrideConfig1 = { frontend: { readOnlyOnWhiteboardLoad: true } };
expect(
deepMergeConfigs(defaultConfig, overrideConfig1).frontend.setReadOnlyOnWhiteboardLoad
).toBe(true);
expect(deepMergeConfigs(defaultConfig, overrideConfig1).frontend.readOnlyOnWhiteboardLoad).toBe(
true
);
});
test("Dumb config is not valid", () => {