Files
discord-decomp/modules/recent_channels/NewChannelsStore.tsx
T
2026-11-01 12:12:55 +02:00

281 lines
9.2 KiB
TypeScript

// Metro module 5785 (f5786).
import UserSettingsProtoStore from "../user_settings/UserSettingsProtoStore";
import AuthenticationStore from "../../stores/AuthenticationStore";
import ChannelStore from "../../stores/ChannelStore";
import GuildChannelStore, { GUILD_SELECTABLE_CHANNELS_KEY } from "../../stores/GuildChannelStore";
import GuildMemberStore from "../../stores/GuildMemberStore";
import GuildStore from "../../stores/GuildStore";
import ReadStateStore from "../../stores/ReadStateStore";
import UserGuildSettingsStore from "../../stores/UserGuildSettingsStore";
import { GuildFeatures } from "../../Constants";
import Durations from "../../utils/Durations";
import { SidebarType } from "../sidebar/SidebarActionTypes";
import Dispatcher from "../../Dispatcher";
import SnowflakeUtils from "../../utils/SnowflakeUtils";
import Module589 from "../../_bundle/Module589";
function $mk77042($env) {
return () => {
const r6 = $env.$parent;
const r3 = r6[0];
const r1 = r6[2];
const r5 = r3(r1[12]);
const r15 = $env[0];
return r5.ack(r15, {
object: r6[12].ACK_RECENT_CHANNEL_NEW_CHANNEL_VIEWED,
objectType: r6[13].ACK_AUTOMATIC
}, true, true, (0, r6[1])(r1[13]).atPreviousMillisecond(r15));
};
}
let initializeNewChannels, pruneNewChannels, c3601_15, c3601_16, c3601_17, c3601_18, c3601_22;
let env3601 = {};
const guildHasCommunity = function guildHasCommunity(a0) {
const guild = GuildStore.getGuild(a0);
return (guild == null ? void 0 : guild.features.has(GuildFeatures.COMMUNITY)) === true;
};
const seedCommunityBaseline = function seedCommunityBaseline() {
c3601_18.clear();
for (const item of GuildStore.getGuildIds()) {
if (guildHasCommunity(item)) {
c3601_18.add(item);
}
}
return false;
};
initializeNewChannels = function initializeNewChannels(a0) {
let time;
if (c3601_16[a0] == null) {
const r9 = GuildChannelStore.getChannels(a0)[GUILD_SELECTABLE_CHANNELS_KEY];
let r11 = void 0;
const r10 = r9.map((item) => item.channel.id);
const member = GuildMemberStore.getMember(a0, AuthenticationStore.getId());
if (member != null) {
r11 = member.joinedAt;
}
if (r11 != null) {
c3601_16[a0] = new Set();
time = new Date(r11).getTime();
if (r10.length !== 0) {
c3601_16[a0] = new Set(r10.filter((item) => {
const r10 = SnowflakeUtils.extractTimestamp(item);
return ReadStateStore.getTrackedAckMessageId(item) == null && r10 > Date.now() - Durations.Millis.WEEK && r10 > UserSettingsProtoStore.getGuildRecentsDismissedAt(a0) && r10 > time && !UserGuildSettingsStore.isChannelOrParentOptedIn(a0, item);
}));
c3601_17[a0] = Date.now();
}
}
}
};
pruneNewChannels = function pruneNewChannels() {
SnowflakeUtils.keys(c3601_16).forEach((item) => {
let c25600_0 = item;
c3601_16[item] = new Set([...c3601_16[item]].filter((item) => !UserGuildSettingsStore.isChannelOrParentOptedIn(c25600_0, item)));
});
};
c3601_15 = new Set();
c3601_16 = {};
c3601_17 = {};
c3601_18 = new Set();
class NewChannelsStore extends Module589.Store {
static displayName = "NewChannelsStore";
constructor() {
super(...arguments);
}
initialize() {
this.waitFor(AuthenticationStore, ChannelStore, GuildChannelStore, GuildMemberStore, GuildStore, ReadStateStore, UserGuildSettingsStore, UserSettingsProtoStore);
this.syncWith([UserGuildSettingsStore], pruneNewChannels);
}
getNewChannelIds(a0) {
let r11;
if (a0 != null && c3601_16[a0] == null) {
initializeNewChannels(a0);
}
if (a0 != null) {
let r12 = c3601_16[a0];
if (r12 == null) {
r12 = c3601_15;
}
r11 = r12;
} else {
r11 = c3601_15;
}
return r11;
}
shouldIndicateNewChannel(a0, a1) {
if (a0 == null) {
return false;
}
const guild = GuildStore.getGuild(a0);
const r1 = guild == null || !guild.features.has(GuildFeatures.COMMUNITY);
let r15 = !r1;
if (!r1) {
if (a0 != null && c3601_16[a0] == null) {
initializeNewChannels(a0);
}
const r9 = c3601_16[a0];
r15 = (r9 == null ? void 0 : r9.has(a1)) && ReadStateStore.getTrackedAckMessageId(a1) == null;
}
return r15;
}
}
c3601_22 = NewChannelsStore;
const r80 = new NewChannelsStore(Dispatcher, {
BULK_CLEAR_RECENTS: function handleBulkClearRecents({ guildId, channelIds }) {
if (c3601_16[guildId] == null) {
return false;
}
channelIds.forEach((channelId) => c3601_16[guildId].delete(channelId));
if (c3601_16[guildId].size === 0) {
delete c3601_16[guildId];
}
},
CHANNEL_ACK: () => true,
CHANNEL_SELECT: function handleChannelSelect({ guildId: guildId2, channelId }) {
let r1;
let r2 = guildId2 != null;
if (r2) {
L19: {
if (c3601_16[guildId2] != null) {
if (!(c3601_17[guildId2] < Date.now() - Durations.Millis.HOUR)) {
const r6 = channelId != null;
r1 = false;
if (!r6) {
break L19;
}
let env15167;
const r27 = env15167 = {
$parent: env3601
};
env15167[0] = channelId;
const r28 = c3601_16[guildId2];
let r29 = r28 != null && channelId != null && r28.has(channelId) && UserGuildSettingsStore.isOptInEnabled(guildId2);
if (r29) {
const channel = ChannelStore.getChannel(channelId);
r29 = !(channel == null ? void 0 : channel.isThread());
}
if (r29) {
r29 = ReadStateStore.ackMessageId(channelId) == null;
}
r1 = false;
if (!r29) {
break L19;
}
Dispatcher.wait($mk77042(r27));
r1 = false;
} else {
initializeNewChannels(guildId2);
r1 = true;
}
} else {
initializeNewChannels(guildId2);
r1 = true;
}
}
r2 = r1;
}
return r2;
},
SIDEBAR_VIEW_CHANNEL: function handleSidebarViewChannel({ guildId: guildId2, channelId, sidebarType }) {
if (!(guildId2 == null || sidebarType !== SidebarType.VIEW_CHANNEL)) {
let env15168;
const r15 = env15168 = {
$parent: env3601
};
env15168[0] = channelId;
const r7 = c3601_16[guildId2];
let r17 = r7 != null && channelId != null && r7.has(channelId) && UserGuildSettingsStore.isOptInEnabled(guildId2);
if (r17) {
const channel = ChannelStore.getChannel(channelId);
r17 = !(channel == null ? void 0 : channel.isThread());
}
if (r17) {
r17 = ReadStateStore.ackMessageId(channelId) == null;
}
if (r17) {
Dispatcher.wait($mk77042(r15));
}
}
return false;
},
SIDEBAR_VIEW_GUILD: function handleSidebarViewGuild({ guildId: guildId2, baseChannelId }) {
if (guildId2 != null) {
let env15169;
const r9 = env15169 = {
$parent: env3601
};
env15169[0] = baseChannelId;
const r6 = c3601_16[guildId2];
let r10 = r6 != null && baseChannelId != null && r6.has(baseChannelId) && UserGuildSettingsStore.isOptInEnabled(guildId2);
if (r10) {
const channel = ChannelStore.getChannel(baseChannelId);
r10 = !(channel == null ? void 0 : channel.isThread());
}
if (r10) {
r10 = ReadStateStore.ackMessageId(baseChannelId) == null;
}
if (r10) {
Dispatcher.wait($mk77042(r9));
}
}
return false;
},
CONNECTION_OPEN: seedCommunityBaseline,
CACHE_LOADED: seedCommunityBaseline,
GUILD_CREATE: function handleGuildCreate({ guild }) {
const guild2 = GuildStore.getGuild(guild.id);
if ((guild2 == null ? void 0 : guild2.features.has(GuildFeatures.COMMUNITY)) === true) {
c3601_18.add(guild.id);
}
return false;
},
GUILD_UPDATE: function handleGuildUpdate({ guild }) {
let c15170_0, c15170_1;
let r6 = void 0;
c15170_0 = void 0;
c15170_1 = void 0;
const guild2 = GuildStore.getGuild(guild.id);
if (guild2 != null) {
r6 = guild2.features.has(GuildFeatures.COMMUNITY);
}
const r20 = r6 === true;
if (r20) {
if (!c3601_18.has(guild.id)) {
c3601_18.add(guild.id);
const r30 = c3601_16[guild.id];
c15170_0 = r30;
const guild3 = GuildStore.getGuild(guild.id);
const set = new Set();
c15170_1 = set;
if (guild3 != null && r30 != null) {
[guild3.rulesChannelId, guild3.publicUpdatesChannelId].forEach((item) => {
if (item != null && c15170_0.has(item)) {
c15170_1.add(item);
}
});
}
c3601_16[guild.id] = set;
c3601_17[guild.id] = Date.now();
return true;
}
}
if (!r20) {
c3601_18.delete(guild.id);
}
return false;
},
GUILD_DELETE: function handleGuildDelete({ guild }) {
delete c3601_16[guild.id];
c3601_18.delete(guild.id);
},
CHANNEL_CREATE: function handleChannelCreate({ channel }) {
if (!channel.isVocal()) {
const guild_id = channel.guild_id;
let r13 = c3601_16[channel.guild_id];
if (r13 == null) {
r13 = new Set();
}
c3601_16[guild_id] = r13;
c3601_16[channel.guild_id].add(channel.id);
}
}
});
export default r80;