add config settings for typing notifications, message history and typing updates

This commit is contained in:
hippoz 2022-08-31 11:40:10 +03:00
parent e42176fac7
commit 8c75b96696
No known key found for this signature in database
GPG key ID: 7C52899193467641
2 changed files with 29 additions and 21 deletions

View file

@ -8,7 +8,11 @@ const defaults = {
"log:Gateway": false, "log:Gateway": false,
"log:Store": false, "log:Store": false,
"ui:stateful:presistSelectedChannel": true, "ui:stateful:presistSelectedChannel": true,
"ui:showSidebarToggle": false "ui:showSidebarToggle": false,
"ui:online:processRemoteTypingEvents": true,
"ui:online:processRemotePresenceEvents": true,
"ui:online:loadMessageHistory": true,
"ui:online:sendTypingUpdates": true
}; };
const store = new Map(Object.entries(defaults)); const store = new Map(Object.entries(defaults));
const persistentProvider = localStorage; const persistentProvider = localStorage;

View file

@ -229,7 +229,7 @@ class MessageStore extends Store {
} }
async loadOlderMessages(beforeCommitToStore=null) { async loadOlderMessages(beforeCommitToStore=null) {
if (this.channelId === -1) if (!getItem("ui:online:loadMessageHistory") || this.channelId === -1)
return; return;
const oldestMessage = this.value[0]; const oldestMessage = this.value[0];
@ -331,17 +331,19 @@ class TypingStore extends Store {
this.ownTimeout = null; this.ownTimeout = null;
this.ownNeedsUpdate = true; this.ownNeedsUpdate = true;
gateway.subscribe(GatewayPayloadType.TypingStart, ({ user, channel, time }) => { if (getItem("ui:online:processRemoteTypingEvents")) {
if (userInfoStore && user.id === userInfoStore.value.id) gateway.subscribe(GatewayPayloadType.TypingStart, ({ user, channel, time }) => {
return; if (userInfoStore && user.id === userInfoStore.value.id)
return;
this.startedTyping(user, channel.id, time); this.startedTyping(user, channel.id, time);
}); });
// assume someone has stopped typing once they send a message // assume someone has stopped typing once they send a message
gateway.subscribe(GatewayPayloadType.MessageCreate, ({ author_id }) => { gateway.subscribe(GatewayPayloadType.MessageCreate, ({ author_id }) => {
this.stoppedTyping(author_id); this.stoppedTyping(author_id);
}); });
}
} }
stoppedTyping(id) { stoppedTyping(id) {
@ -392,7 +394,7 @@ class TypingStore extends Store {
} }
async didInputKey() { async didInputKey() {
if (!userInfoStore.value) if (!userInfoStore.value || !getItem("ui:online:sendTypingUpdates"))
return; return;
this.startedTyping(userInfoStore.value, selectedChannel.value.id, 6500); this.startedTyping(userInfoStore.value, selectedChannel.value.id, 6500);
@ -407,13 +409,15 @@ class PresenceStore extends Store {
constructor() { constructor() {
super([], "PresenceStore"); super([], "PresenceStore");
gateway.subscribe(GatewayEventType.Ready, ({ presence }) => { if (getItem("ui:online:processRemotePresenceEvents")) {
this.ingestPresenceUpdate(presence); gateway.subscribe(GatewayEventType.Ready, ({ presence }) => {
}); this.ingestPresenceUpdate(presence);
});
gateway.subscribe(GatewayEventType.PresenceUpdate, (data) => { gateway.subscribe(GatewayEventType.PresenceUpdate, (data) => {
this.ingestPresenceUpdate(data); this.ingestPresenceUpdate(data);
}); });
}
} }
entryIndexByUserId(userId) { entryIndexByUserId(userId) {