diff --git a/src/utils/PermanentUserData.js b/src/utils/PermanentUserData.js index 29fd1f52..2f0dfd48 100644 --- a/src/utils/PermanentUserData.js +++ b/src/utils/PermanentUserData.js @@ -139,4 +139,21 @@ export class PermanentUserData { } return null } + + /** + * @return {Array} + */ + getUsers () { + const users = new Map() + + for (const [userDescription] of this.dss.entries()) { + users.set(userDescription, true) + } + + for (const client of this.clients.entries()) { + users.set(client[1], true) + } + + return Array.from(users.keys()) + } } diff --git a/tests/encoding.tests.js b/tests/encoding.tests.js index 65563e9d..cfd57447 100644 --- a/tests/encoding.tests.js +++ b/tests/encoding.tests.js @@ -60,4 +60,8 @@ export const testPermanentUserData = async tc => { applyUpdate(ydoc3, encodeStateAsUpdate(ydoc1)) const pd3 = new PermanentUserData(ydoc3) pd3.setUserMapping(ydoc3, ydoc3.clientID, 'user a') + + t.assert(pd3.getUsers().length === 2) + t.assert(pd3.getUsers().includes('user a')) + t.assert(pd3.getUsers().includes('user b')) }