Ghosted: add max inactive time for dms (#897)
This commit is contained in:
parent
fe8ffe1916
commit
6eff813522
2 changed files with 18 additions and 3 deletions
|
|
@ -98,6 +98,9 @@ export function Boo({ channel }: { channel: Channel; }) {
|
||||||
});
|
});
|
||||||
const [isCleared, setIsCleared] = useState(false);
|
const [isCleared, setIsCleared] = useState(false);
|
||||||
|
|
||||||
|
const lastMessageTimestampMs = lastMessage ? new Date(lastMessage.timestamp).getTime() : 0;
|
||||||
|
const isInactive = !!lastMessage && settings.store.maxInactiveTimeMs > 0 && Number.isFinite(lastMessageTimestampMs) && Date.now() - lastMessageTimestampMs > settings.store.maxInactiveTimeMs;
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (!lastMessage || !currentUserId) return;
|
if (!lastMessage || !currentUserId) return;
|
||||||
|
|
||||||
|
|
@ -167,7 +170,7 @@ export function Boo({ channel }: { channel: Channel; }) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// if exempted or bot (if setting enabled), remove from ghost tracking
|
// if exempted or bot (if setting enabled), remove from ghost tracking
|
||||||
if (isExempted || (settings.store.ignoreBots && lastMessage.author.bot)) {
|
if (isExempted || (settings.store.ignoreBots && lastMessage.author.bot) || isInactive) {
|
||||||
if (countedChannels.has(id)) {
|
if (countedChannels.has(id)) {
|
||||||
countedChannels.delete(id);
|
countedChannels.delete(id);
|
||||||
setBooCount(getBooCount() - 1);
|
setBooCount(getBooCount() - 1);
|
||||||
|
|
@ -187,9 +190,9 @@ export function Boo({ channel }: { channel: Channel; }) {
|
||||||
setBooCount(getBooCount() + 1);
|
setBooCount(getBooCount() + 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, [state.isCurrentUser, state.isDataProcessed, id, lastMessage?.id]);
|
}, [state.isCurrentUser, state.isDataProcessed, id, lastMessage?.id, isInactive]);
|
||||||
|
|
||||||
if (!state.isDataProcessed || !currentUserId || !lastMessage || state.isCurrentUser || isChannelExempted(channel) || isCleared || (settings.store.ignoreBots && lastMessage.author.bot))
|
if (!state.isDataProcessed || !currentUserId || !lastMessage || state.isCurrentUser || isChannelExempted(channel) || isCleared || (settings.store.ignoreBots && lastMessage.author.bot) || isInactive)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
if (!settings.store.showDmIcons) return null;
|
if (!settings.store.showDmIcons) return null;
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,18 @@ export const settings = definePluginSettings({
|
||||||
description: "Ignore DMs from bots",
|
description: "Ignore DMs from bots",
|
||||||
default: true,
|
default: true,
|
||||||
restartNeeded: false
|
restartNeeded: false
|
||||||
|
},
|
||||||
|
maxInactiveTimeMs: {
|
||||||
|
type: OptionType.SELECT,
|
||||||
|
description: "Only ghost DMs active within this timeframe",
|
||||||
|
options: [
|
||||||
|
{ label: "No limit", value: 0, default: true },
|
||||||
|
{ label: "1 hour", value: 60 * 60 * 1000 },
|
||||||
|
{ label: "1 day", value: 24 * 60 * 60 * 1000 },
|
||||||
|
{ label: "1 week", value: 7 * 24 * 60 * 60 * 1000 },
|
||||||
|
{ label: "1 month", value: 30 * 24 * 60 * 60 * 1000 },
|
||||||
|
],
|
||||||
|
restartNeeded: false
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue