From 826f57c28df1aae629862ff509277d11e6fa3bfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20M=C3=BCller?= Date: Fri, 16 Aug 2024 21:53:43 +0200 Subject: [PATCH] Some improvements - code cleanup --- src/node/handler/PadMessageHandler.ts | 4 +-- src/node/utils/Cleanup.ts | 47 +++------------------------ 2 files changed, 6 insertions(+), 45 deletions(-) diff --git a/src/node/handler/PadMessageHandler.ts b/src/node/handler/PadMessageHandler.ts index 390949607..e5a92da19 100644 --- a/src/node/handler/PadMessageHandler.ts +++ b/src/node/handler/PadMessageHandler.ts @@ -1142,7 +1142,7 @@ const getChangesetInfo = async (pad: PadType, startNum: number, endNum:number, g getPadLines(pad, startNum - 1), // Get all needed composite Changesets. ...compositesChangesetNeeded.map(async (item) => { - const changeset = await composePadChangesets(pad, item.start, item.end); + const changeset = await exports.composePadChangesets(pad, item.start, item.end); composedChangesets[`${item.start}/${item.end}`] = changeset; }), // Get all needed revision Dates. @@ -1208,7 +1208,7 @@ const getPadLines = async (pad: PadType, revNum: number) => { * Tries to rebuild the composePadChangeset function of the original Etherpad * https://github.com/ether/pad/blob/master/etherpad/src/etherpad/control/pad/pad_changeset_control.js#L241 */ -const composePadChangesets = async (pad: PadType, startNum: number, endNum: number) => { +exports.composePadChangesets = async (pad: PadType, startNum: number, endNum: number) => { // fetch all changesets we need const headNum = pad.getHeadRevisionNumber(); endNum = Math.min(endNum, headNum + 1); diff --git a/src/node/utils/Cleanup.ts b/src/node/utils/Cleanup.ts index 5bc5176e7..3bcfd9ef9 100644 --- a/src/node/utils/Cleanup.ts +++ b/src/node/utils/Cleanup.ts @@ -1,8 +1,6 @@ 'use strict' -import {AChangeSet, PadType} from "../types/PadType"; -import {MapArrayType} from "../types/MapType"; -import {ChangeSet} from "../types/ChangeSet"; +import {AChangeSet} from "../types/PadType"; import {Revision} from "../types/Revision"; const promises = require('./promises'); @@ -13,43 +11,6 @@ const db = require('ep_etherpad-lite/node/db/DB'); const Changeset = require('ep_etherpad-lite/static/js/Changeset'); const padMessageHandler = require('ep_etherpad-lite/node/handler/PadMessageHandler'); - -const composePadChangesets = async (pad: PadType, startNum: number, endNum: number) => { - // fetch all changesets we need - const headNum = pad.getHeadRevisionNumber(); - endNum = Math.min(endNum, headNum + 1); - startNum = Math.max(startNum, 0); - - // create an array for all changesets, we will - // replace the values with the changeset later - const changesetsNeeded = []; - for (let r = startNum; r < endNum; r++) { - changesetsNeeded.push(r); - } - - // get all changesets - const changesets: MapArrayType = {}; - await Promise.all(changesetsNeeded.map( - (revNum) => pad.getRevisionChangeset(revNum) - .then((changeset) => changesets[revNum] = changeset))); - - // compose Changesets - let r; - try { - let changeset = changesets[startNum]; - const pool = pad.apool(); - - for (r = startNum + 1; r < endNum; r++) { - const cs = changesets[r]; - changeset = Changeset.compose(changeset, cs, pool); - } - return changeset; - } catch (e) { - // r-1 indicates the rev that was build starting with startNum, applying startNum+1, +2, +3 - throw e; - } -}; - exports.deleteAllRevisions = async (padID: string): Promise => { const randomPadId = padID + 'aertdfdf' + Math.random().toString(10) @@ -61,7 +22,7 @@ exports.deleteAllRevisions = async (padID: string): Promise => { await pad.remove(); } -const createRevision = async (aChangeset: AChangeSet, timestamp: number, isKeyRev: boolean, authorId = '', atext: any = null, pool: any = null) => { +const createRevision = async (aChangeset: AChangeSet, timestamp: number, isKeyRev: boolean, authorId: string, atext: any, pool: any) => { if (authorId !== '') pool.putAttrib(['author', authorId]); @@ -81,7 +42,7 @@ const createRevision = async (aChangeset: AChangeSet, timestamp: number, isKeyRe exports.deleteRevisions = async (padId: string, keepRevisions: number): Promise => { let pad = await padManager.getPad(padId); - pad.check() + await pad.check() console.log('Initial pad is valid') @@ -89,7 +50,7 @@ exports.deleteRevisions = async (padId: string, keepRevisions: number): Promise< const cleanupUntilRevision = pad.head - keepRevisions console.log('Composing changesets: ', cleanupUntilRevision) - const changeset = await composePadChangesets(pad, 0, cleanupUntilRevision + 1) + const changeset = await padMessageHandler.composePadChangesets(pad, 0, cleanupUntilRevision + 1) const revisions: Revision[] = [];