Support sending hidden read receipts

Fixes https://github.com/vector-im/riot-web/issues/2527
This commit is contained in:
Travis Ralston 2019-09-05 20:30:19 -06:00
parent 46ee52a406
commit af35cdc2ea
4 changed files with 14 additions and 0 deletions

View file

@ -685,20 +685,25 @@ const TimelinePanel = createReactClass({
} }
this.lastRMSentEventId = this.state.readMarkerEventId; this.lastRMSentEventId = this.state.readMarkerEventId;
const hiddenRR = !SettingsStore.getValue("sendReadReceipts");
debuglog('TimelinePanel: Sending Read Markers for ', debuglog('TimelinePanel: Sending Read Markers for ',
this.props.timelineSet.room.roomId, this.props.timelineSet.room.roomId,
'rm', this.state.readMarkerEventId, 'rm', this.state.readMarkerEventId,
lastReadEvent ? 'rr ' + lastReadEvent.getId() : '', lastReadEvent ? 'rr ' + lastReadEvent.getId() : '',
' hidden:' + hiddenRR,
); );
MatrixClientPeg.get().setRoomReadMarkers( MatrixClientPeg.get().setRoomReadMarkers(
this.props.timelineSet.room.roomId, this.props.timelineSet.room.roomId,
this.state.readMarkerEventId, this.state.readMarkerEventId,
lastReadEvent, // Could be null, in which case no RR is sent lastReadEvent, // Could be null, in which case no RR is sent
{hidden: hiddenRR},
).catch((e) => { ).catch((e) => {
// /read_markers API is not implemented on this HS, fallback to just RR // /read_markers API is not implemented on this HS, fallback to just RR
if (e.errcode === 'M_UNRECOGNIZED' && lastReadEvent) { if (e.errcode === 'M_UNRECOGNIZED' && lastReadEvent) {
return MatrixClientPeg.get().sendReadReceipt( return MatrixClientPeg.get().sendReadReceipt(
lastReadEvent, lastReadEvent,
{hidden: hiddenRR},
).catch((e) => { ).catch((e) => {
console.error(e); console.error(e);
this.lastRRSentEventId = undefined; this.lastRRSentEventId = undefined;

View file

@ -54,6 +54,7 @@ export default class LabsUserSettingsTab extends React.Component {
<SettingsFlag name={"enableWidgetScreenshots"} level={SettingLevel.ACCOUNT} /> <SettingsFlag name={"enableWidgetScreenshots"} level={SettingLevel.ACCOUNT} />
<SettingsFlag name={"showHiddenEventsInTimeline"} level={SettingLevel.DEVICE} /> <SettingsFlag name={"showHiddenEventsInTimeline"} level={SettingLevel.DEVICE} />
<SettingsFlag name={"lowBandwidth"} level={SettingLevel.DEVICE} /> <SettingsFlag name={"lowBandwidth"} level={SettingLevel.DEVICE} />
<SettingsFlag name={"sendReadReceipts"} level={SettingLevel.ACCOUNT} />
</div> </div>
</div> </div>
); );

View file

@ -367,6 +367,7 @@
"Show hidden events in timeline": "Show hidden events in timeline", "Show hidden events in timeline": "Show hidden events in timeline",
"Low bandwidth mode": "Low bandwidth mode", "Low bandwidth mode": "Low bandwidth mode",
"Allow fallback call assist server turn.matrix.org when your homeserver does not offer one (your IP address would be shared during a call)": "Allow fallback call assist server turn.matrix.org when your homeserver does not offer one (your IP address would be shared during a call)", "Allow fallback call assist server turn.matrix.org when your homeserver does not offer one (your IP address would be shared during a call)": "Allow fallback call assist server turn.matrix.org when your homeserver does not offer one (your IP address would be shared during a call)",
"Send read receipts for messages (requires compatible homeserver to disable)": "Send read receipts for messages (requires compatible homeserver to disable)",
"Collecting app version information": "Collecting app version information", "Collecting app version information": "Collecting app version information",
"Collecting logs": "Collecting logs", "Collecting logs": "Collecting logs",
"Uploading report": "Uploading report", "Uploading report": "Uploading report",

View file

@ -394,4 +394,11 @@ export const SETTINGS = {
// This is a tri-state value, where `null` means "prompt the user". // This is a tri-state value, where `null` means "prompt the user".
default: null, default: null,
}, },
"sendReadReceipts": {
supportedLevels: LEVELS_ACCOUNT_SETTINGS,
displayName: _td(
"Send read receipts for messages (requires compatible homeserver to disable)",
),
default: true,
},
}; };