Fix `DisabledComposerView` description being overriden by powerlevel changes (#58)

We added the description in https://github.com/matrix-org/matrix-public-archive/pull/54 but then made a fix to one of the after render errors, https://github.com/matrix-org/matrix-public-archive/pull/57, which exposed that the description is then overriden when the powerlevel changes.

We now just override the getters directly instead of the internal fields which are overwritten internally.

---

This also fixes a warning from Hydrogen in the console:

```
disposable not found, did it leak? {kind: 'disabled', description: Array(3)}
```
This commit is contained in:
Eric Eastwood 2022-08-31 00:16:14 -05:00 committed by GitHub
parent 33d52e8c07
commit fd00fec6f1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 24 additions and 17 deletions

View File

@ -262,25 +262,32 @@ async function mountHydrogen() {
this.navigation.applyPath(path);
};
// FIXME: We shouldn't have to dive into the internal fields to make this work
roomViewModel._timelineVM = timelineViewModel;
Object.defineProperty(roomViewModel, 'timelineViewModel', {
get() {
return timelineViewModel;
},
});
const fromDate = new Date(fromTimestamp);
const dateString = fromDate.toISOString().split('T')[0];
roomViewModel._composerVM = {
kind: 'disabled',
description: [
`You're viewing an archive of events from ${dateString}. Use a `,
tag.a(
{
href: matrixPublicArchiveURLCreator.permalinkForRoomId(roomData.id),
rel: 'noopener',
target: '_blank',
},
['Matrix client']
),
` to start chatting in this room.`,
],
};
Object.defineProperty(roomViewModel, 'composerViewModel', {
get() {
return {
kind: 'disabled',
description: [
`You're viewing an archive of events from ${dateString}. Use a `,
tag.a(
{
href: matrixPublicArchiveURLCreator.permalinkForRoomId(roomData.id),
rel: 'noopener',
target: '_blank',
},
['Matrix client']
),
` to start chatting in this room.`,
],
};
},
});
const archiveViewModel = new ArchiveViewModel({
// Hydrogen options