## Description Added ESLint rule to force blank lines between statements. Fixes #`Issue Number` _or_ Fixes `Issue URL` > [!WARNING] > _If no issue exists, please create an issue first, and check with the maintainers if the issue is valid._ ## Automation /ok-to-test tags="@tag.All" ### 🔍 Cypress test results <!-- This is an auto-generated comment: Cypress test results --> > [!CAUTION] > 🔴 🔴 🔴 Some tests have failed. > Workflow run: <https://github.com/appsmithorg/appsmith/actions/runs/10924926728> > Commit: 34f57714a1575ee04e94e03cbcaf95e57a96c86c > <a href="https://internal.appsmith.com/app/cypress-dashboard/rundetails-65890b3c81d7400d08fa9ee5?branch=master&workflowId=10924926728&attempt=1&selectiontype=test&testsstatus=failed&specsstatus=fail" target="_blank">Cypress dashboard</a>. > Tags: @tag.All > Spec: > The following are new failures, please fix them before merging the PR: <ol> > <li>cypress/e2e/Regression/ClientSide/Anvil/AnvilModal_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilButtonWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilCheckboxGroupWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilCurrencyInputWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilIconButtonWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilInlineButtonWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilInputWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilParagraphWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilPhoneInputWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilStatsWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilSwitchGroupWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilSwitchWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilTableWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilToolbarButtonWidgetSnapshot_spec.ts > <li>cypress/e2e/Regression/ClientSide/Anvil/Widgets/AnvilZoneSectionWidgetSnapshot_spec.ts</ol> > <a href="https://internal.appsmith.com/app/cypress-dashboard/identified-flaky-tests-65890b3c81d7400d08fa9ee3?branch=master" target="_blank">List of identified flaky tests</a>. > <hr>Wed, 18 Sep 2024 16:33:36 UTC <!-- end of auto-generated comment: Cypress test results --> ## Communication Should the DevRel and Marketing teams inform users about this change? - [ ] Yes - [ ] No --------- Co-authored-by: Valera Melnikov <valera@appsmith.com>
83 lines
2.6 KiB
TypeScript
83 lines
2.6 KiB
TypeScript
import type { Server, Socket } from "socket.io";
|
|
import log from "loglevel";
|
|
import {
|
|
APP_ROOM_PREFIX,
|
|
RELEASE_VERSION_EVENT_NAME,
|
|
LEAVE_EDIT_EVENT_NAME,
|
|
PAGE_EDIT_NAMESPACE,
|
|
PAGE_ROOM_PREFIX,
|
|
ROOT_NAMESPACE,
|
|
PAGE_VISIBILITY_EVENT_NAME,
|
|
} from "@constants/socket";
|
|
import { VERSION as buildVersion } from "../version";
|
|
import {
|
|
subscribeToEditEvents,
|
|
onAppSocketConnected,
|
|
onPageSocketConnected,
|
|
sendCurrentUsers,
|
|
} from "@controllers/socket";
|
|
|
|
export function watchEvents(io: Server) {
|
|
io.on("connection", (socket: Socket) => {
|
|
socket.emit(RELEASE_VERSION_EVENT_NAME, buildVersion);
|
|
subscribeToEditEvents(socket, APP_ROOM_PREFIX);
|
|
onAppSocketConnected(socket).catch((error) =>
|
|
log.error("Error in socket connected handler", error),
|
|
);
|
|
});
|
|
/** When we get the page visibility event, it means the page/tab
|
|
* is visible on the client after navigating away from it.
|
|
* We will respond back with the current version to
|
|
* so that the client can confirm if they are
|
|
* on the latest version of the client
|
|
*/
|
|
io.on(PAGE_VISIBILITY_EVENT_NAME, (socket: Socket) => {
|
|
socket.emit(RELEASE_VERSION_EVENT_NAME, buildVersion);
|
|
});
|
|
|
|
io.of(PAGE_EDIT_NAMESPACE).on("connection", (socket: Socket) => {
|
|
subscribeToEditEvents(socket, PAGE_ROOM_PREFIX);
|
|
onPageSocketConnected(socket, io).catch((error) =>
|
|
log.error("Error in socket connected handler", error),
|
|
);
|
|
});
|
|
|
|
io.of(ROOT_NAMESPACE).adapter.on("leave-room", (room, id) => {
|
|
if (room.startsWith(APP_ROOM_PREFIX)) {
|
|
log.debug(`ns:${ROOT_NAMESPACE}# socket ${id} left the room ${room}`);
|
|
}
|
|
|
|
sendCurrentUsers(io, room, APP_ROOM_PREFIX);
|
|
});
|
|
|
|
io.of(ROOT_NAMESPACE).adapter.on("join-room", (room, id) => {
|
|
if (room.startsWith(APP_ROOM_PREFIX)) {
|
|
log.debug(`ns:${ROOT_NAMESPACE}# socket ${id} joined the room ${room}`);
|
|
}
|
|
|
|
sendCurrentUsers(io, room, APP_ROOM_PREFIX);
|
|
});
|
|
|
|
io.of(PAGE_EDIT_NAMESPACE).adapter.on("leave-room", (room, id) => {
|
|
if (room.startsWith(PAGE_ROOM_PREFIX)) {
|
|
// someone left the page edit, notify others
|
|
log.debug(
|
|
`ns:${PAGE_EDIT_NAMESPACE} # socket ${id} left the room ${room}`,
|
|
);
|
|
io.of(PAGE_EDIT_NAMESPACE).to(room).emit(LEAVE_EDIT_EVENT_NAME, id);
|
|
}
|
|
|
|
sendCurrentUsers(io.of(PAGE_EDIT_NAMESPACE), room, PAGE_ROOM_PREFIX);
|
|
});
|
|
|
|
io.of(PAGE_EDIT_NAMESPACE).adapter.on("join-room", (room, id) => {
|
|
if (room.startsWith(PAGE_ROOM_PREFIX)) {
|
|
log.debug(
|
|
`ns:${PAGE_EDIT_NAMESPACE}# socket ${id} joined the room ${room}`,
|
|
);
|
|
}
|
|
|
|
sendCurrentUsers(io.of(PAGE_EDIT_NAMESPACE), room, PAGE_ROOM_PREFIX);
|
|
});
|
|
}
|