From 27736f66ef84617bc706f9b56904b7169edd8863 Mon Sep 17 00:00:00 2001 From: Tom Moor Date: Wed, 15 Sep 2021 23:27:22 -0700 Subject: [PATCH] fix: Various fixes for collaborative editing beta (#2586) --- package.json | 2 +- server/collaboration/logger.js | 8 ++++---- server/collaboration/persistence.js | 9 +++------ server/logging/logger.js | 2 +- .../20210915051740-collaborative-collections.js | 13 +++++++++++++ server/routes/api/team.js | 4 ++++ yarn.lock | 8 ++++---- 7 files changed, 30 insertions(+), 16 deletions(-) create mode 100644 server/migrations/20210915051740-collaborative-collections.js diff --git a/package.json b/package.json index ba8b874c2..607a52745 100644 --- a/package.json +++ b/package.json @@ -150,7 +150,7 @@ "react-window": "^1.8.6", "reakit": "^1.3.8", "regenerator-runtime": "^0.13.7", - "rich-markdown-editor": "^11.17.6", + "rich-markdown-editor": "^11.17.7", "semver": "^7.3.2", "sequelize": "^6.3.4", "sequelize-cli": "^6.2.0", diff --git a/server/collaboration/logger.js b/server/collaboration/logger.js index 3179f3e01..214c93133 100644 --- a/server/collaboration/logger.js +++ b/server/collaboration/logger.js @@ -2,18 +2,18 @@ import Logger from "../logging/logger"; export default class CollaborationLogger { async onCreateDocument(data: { documentName: string }) { - Logger.info("collaboration", `Created document "${data.documentName}"`); + Logger.info("hocuspocus", `Created document "${data.documentName}"`); } async onConnect(data: { documentName: string }) { - Logger.info("collaboration", `New connection to "${data.documentName}"`); + Logger.info("hocuspocus", `New connection to "${data.documentName}"`); } async onDisconnect(data: { documentName: string }) { - Logger.info("collaboration", `Connection to "${data.documentName}" closed`); + Logger.info("hocuspocus", `Connection to "${data.documentName}" closed`); } async onUpgrade() { - Logger.info("collaboration", "Upgrading connection"); + Logger.info("hocuspocus", "Upgrading connection"); } } diff --git a/server/collaboration/persistence.js b/server/collaboration/persistence.js index 656280569..13fceefec 100644 --- a/server/collaboration/persistence.js +++ b/server/collaboration/persistence.js @@ -29,16 +29,13 @@ export default class Persistence { if (document.state) { const ydoc = new Y.Doc(); - Logger.info( - "collaboration", - `Document ${documentId} is in database state` - ); + Logger.info("database", `Document ${documentId} is in database state`); Y.applyUpdate(ydoc, document.state); return ydoc; } Logger.info( - "collaboration", + "database", `Document ${documentId} is not in state, creating from markdown` ); const ydoc = markdownToYDoc(document.text, fieldName); @@ -60,7 +57,7 @@ export default class Persistence { }) => { const [, documentId] = documentName.split("."); - Logger.info("collaboration", `Persisting ${documentId}`); + Logger.info("database", `Persisting ${documentId}`); await documentUpdater({ documentId, diff --git a/server/logging/logger.js b/server/logging/logger.js index 6098e8a0f..30656f513 100644 --- a/server/logging/logger.js +++ b/server/logging/logger.js @@ -9,7 +9,7 @@ const isProduction = env.NODE_ENV === "production"; type LogCategory = | "lifecycle" - | "collaboration" + | "hocuspocus" | "http" | "commands" | "processor" diff --git a/server/migrations/20210915051740-collaborative-collections.js b/server/migrations/20210915051740-collaborative-collections.js new file mode 100644 index 000000000..1facb81ef --- /dev/null +++ b/server/migrations/20210915051740-collaborative-collections.js @@ -0,0 +1,13 @@ +"use strict"; + +module.exports = { + up: async (queryInterface, Sequelize) => { + await queryInterface.addColumn("collections", "state", { + type: Sequelize.BLOB, + }); + }, + + down: async (queryInterface, Sequelize) => { + await queryInterface.removeColumn("collections", "state"); + }, +}; diff --git a/server/routes/api/team.js b/server/routes/api/team.js index b7d8a1455..eb433948f 100644 --- a/server/routes/api/team.js +++ b/server/routes/api/team.js @@ -17,6 +17,7 @@ router.post("team.update", auth(), async (ctx) => { sharing, guestSignin, documentEmbeds, + collaborativeEditing, } = ctx.body; const user = ctx.state.user; const team = await Team.findByPk(user.teamId); @@ -31,6 +32,9 @@ router.post("team.update", auth(), async (ctx) => { if (documentEmbeds !== undefined) team.documentEmbeds = documentEmbeds; if (guestSignin !== undefined) team.guestSignin = guestSignin; if (avatarUrl !== undefined) team.avatarUrl = avatarUrl; + if (collaborativeEditing !== undefined) { + team.collaborativeEditing = collaborativeEditing; + } const changes = team.changed(); const data = {}; diff --git a/yarn.lock b/yarn.lock index 2cc4362fc..75146f9d1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12482,10 +12482,10 @@ retry-as-promised@^3.2.0: dependencies: any-promise "^1.3.0" -rich-markdown-editor@^11.17.6: - version "11.17.6" - resolved "https://registry.yarnpkg.com/rich-markdown-editor/-/rich-markdown-editor-11.17.6.tgz#c524ba03a3e331105c5e2a927e6359efd034295c" - integrity sha512-lZ6gZ+C10SclOM28m1b6rElBoaylpkifGc7KJfd+rOqyFsFu1kX3RMCm2R8X2keVjTz3d0zhZ3eHNvoOaICXoQ== +rich-markdown-editor@^11.17.7: + version "11.17.7" + resolved "https://registry.yarnpkg.com/rich-markdown-editor/-/rich-markdown-editor-11.17.7.tgz#833b9532812a361a9cf4f7752e4e75c6b4bff9e4" + integrity sha512-SFIMDz8xOrasOMeMiPyFShlldd3ta1TsIe9F4M3Gkej9UxGDsjBUbKux8NGEssZrxgYNxIh9GMYgM3+IJv+/1g== dependencies: copy-to-clipboard "^3.0.8" lodash "^4.17.11"