diff --git a/package-lock.json b/package-lock.json index e09531e..0ea03df 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ "@opentelemetry/semantic-conventions": "^1.3.1", "dompurify": "^2.3.9", "express": "^4.17.2", - "hydrogen-view-sdk": "npm:@mlm/hydrogen-view-sdk@^0.24.0-scratch", + "hydrogen-view-sdk": "npm:@mlm/hydrogen-view-sdk@^0.25.0-scratch", "json5": "^2.2.1", "linkedom": "^0.14.17", "matrix-public-archive-shared": "file:./shared/", @@ -3640,9 +3640,9 @@ }, "node_modules/hydrogen-view-sdk": { "name": "@mlm/hydrogen-view-sdk", - "version": "0.24.0-scratch", - "resolved": "https://registry.npmjs.org/@mlm/hydrogen-view-sdk/-/hydrogen-view-sdk-0.24.0-scratch.tgz", - "integrity": "sha512-NRH2TTjAaV+8siT6R4vAGJ55fSXT/7w5AdTe+mA6fyyTRKX2esWYFO+TtDSABm4TJmySqUxlUP/Yj+h1kuZ46w==", + "version": "0.25.0-scratch", + "resolved": "https://registry.npmjs.org/@mlm/hydrogen-view-sdk/-/hydrogen-view-sdk-0.25.0-scratch.tgz", + "integrity": "sha512-FgSBCgNbVe/jiy6khdY8ZtbcZ/CRPc1cDPNZM0skUWTnuXzDtzPUQ2dW45yOO951gd+GS01TPhpibjowEOWrow==", "dependencies": { "@matrix-org/olm": "https://gitlab.matrix.org/api/v4/projects/27/packages/npm/@matrix-org/olm/-/@matrix-org/olm-3.2.8.tgz", "another-json": "^0.2.0", @@ -8091,9 +8091,9 @@ } }, "hydrogen-view-sdk": { - "version": "npm:@mlm/hydrogen-view-sdk@0.24.0-scratch", - "resolved": "https://registry.npmjs.org/@mlm/hydrogen-view-sdk/-/hydrogen-view-sdk-0.24.0-scratch.tgz", - "integrity": "sha512-NRH2TTjAaV+8siT6R4vAGJ55fSXT/7w5AdTe+mA6fyyTRKX2esWYFO+TtDSABm4TJmySqUxlUP/Yj+h1kuZ46w==", + "version": "npm:@mlm/hydrogen-view-sdk@0.25.0-scratch", + "resolved": "https://registry.npmjs.org/@mlm/hydrogen-view-sdk/-/hydrogen-view-sdk-0.25.0-scratch.tgz", + "integrity": "sha512-FgSBCgNbVe/jiy6khdY8ZtbcZ/CRPc1cDPNZM0skUWTnuXzDtzPUQ2dW45yOO951gd+GS01TPhpibjowEOWrow==", "requires": { "@matrix-org/olm": "https://gitlab.matrix.org/api/v4/projects/27/packages/npm/@matrix-org/olm/-/@matrix-org/olm-3.2.8.tgz", "another-json": "^0.2.0", diff --git a/package.json b/package.json index e07a49b..7acc43d 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "@opentelemetry/semantic-conventions": "^1.3.1", "dompurify": "^2.3.9", "express": "^4.17.2", - "hydrogen-view-sdk": "npm:@mlm/hydrogen-view-sdk@^0.24.0-scratch", + "hydrogen-view-sdk": "npm:@mlm/hydrogen-view-sdk@^0.25.0-scratch", "json5": "^2.2.1", "linkedom": "^0.14.17", "matrix-public-archive-shared": "file:./shared/", diff --git a/shared/hydrogen-vm-render-script.js b/shared/hydrogen-vm-render-script.js index 7e0d409..e887499 100644 --- a/shared/hydrogen-vm-render-script.js +++ b/shared/hydrogen-vm-render-script.js @@ -6,20 +6,13 @@ // Data is passed in via `window.matrixPublicArchiveContext` const assert = require('matrix-public-archive-shared/lib/assert'); -const { - Platform, - MediaRepository, - createNavigation, - createRouter, - - RetainedObservableValue, - PowerLevels, -} = require('hydrogen-view-sdk'); +const { Platform, MediaRepository, createNavigation, createRouter } = require('hydrogen-view-sdk'); const ArchiveRoomView = require('matrix-public-archive-shared/views/ArchiveRoomView'); const ArchiveHistory = require('matrix-public-archive-shared/lib/archive-history'); const supressBlankAnchorsReloadingThePage = require('matrix-public-archive-shared/lib/supress-blank-anchors-reloading-the-page'); const ArchiveRoomViewModel = require('matrix-public-archive-shared/viewmodels/ArchiveRoomViewModel'); +const stubPowerLevelsObservable = require('matrix-public-archive-shared/lib/stub-powerlevels-observable'); const fromTimestamp = window.matrixPublicArchiveContext.fromTimestamp; assert(fromTimestamp); @@ -98,19 +91,7 @@ async function mountHydrogen() { mediaRepository: mediaRepository, // Based on https://github.com/vector-im/hydrogen-web/blob/5f9cfffa3b547991b665f57a8bf715270a1b2ef1/src/matrix/room/BaseRoom.js#L480 observePowerLevels: async function () { - let powerLevelsObservable = this._powerLevelsObservable; - if (!powerLevelsObservable) { - const powerLevels = new PowerLevels({ - powerLevelEvent: {}, - ownUserId: 'xxx-ownUserId', - membership: null, - }); - powerLevelsObservable = new RetainedObservableValue(powerLevels, () => { - this._powerLevels = null; - }); - this._powerLevelsObservable = powerLevelsObservable; - } - return powerLevelsObservable; + return stubPowerLevelsObservable; }, }; diff --git a/shared/lib/stub-powerlevels-observable.js b/shared/lib/stub-powerlevels-observable.js new file mode 100644 index 0000000..2b941a6 --- /dev/null +++ b/shared/lib/stub-powerlevels-observable.js @@ -0,0 +1,17 @@ +'use strict'; + +const { RetainedObservableValue, PowerLevels } = require('hydrogen-view-sdk'); + +// Fake power levels for viewing the room anonymously +const stubPowerLevels = new PowerLevels({ + powerLevelEvent: {}, + ownUserId: 'xxx-ownUserId', + membership: null, +}); +const stubPowerLevelsObservable = new RetainedObservableValue(stubPowerLevels, () => { + // freeCallback + // + // I don't think we need to do anything here 🤷 +}); + +module.exports = stubPowerLevelsObservable; diff --git a/shared/viewmodels/ArchiveRoomViewModel.js b/shared/viewmodels/ArchiveRoomViewModel.js index 6c16c97..7d8427f 100644 --- a/shared/viewmodels/ArchiveRoomViewModel.js +++ b/shared/viewmodels/ArchiveRoomViewModel.js @@ -22,6 +22,7 @@ const AvatarViewModel = require('matrix-public-archive-shared/viewmodels/AvatarV const { customTileClassForEntry, } = require('matrix-public-archive-shared/lib/custom-tile-utilities'); +const stubPowerLevelsObservable = require('matrix-public-archive-shared/lib/stub-powerlevels-observable'); let txnCount = 0; function getFakeEventId() { @@ -371,6 +372,7 @@ class ArchiveRoomViewModel extends ViewModel { fragmentIdComparer: fragmentIdComparer, clock: this.platform.clock, logger: this.platform.logger, + powerLevelsObservable: stubPowerLevelsObservable, }); // Something we can modify with new state updates as we see them