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

222 lines
8.9 KiB
TypeScript

// Metro module 5120 (f5121).
import ImpersonateStore from "../impersonate/ImpersonateStore";
import ChannelStore from "../../stores/ChannelStore";
import GuildMemberStore from "../../stores/GuildMemberStore";
import UserStore from "../../stores/UserStore";
import GuildOnboardingPromptsStore from "./GuildOnboardingPromptsStore";
import { AnalyticEvents, AnalyticsPages, Endpoints } from "../../Constants";
import { GuildMemberFlags } from "../guild_member/GuildMemberConstants";
import { ReadStateTypes } from "../read_states/ReadStateConstants";
import { HTTP } from "../../_bundle/sendRequest";
import Dispatcher from "../../Dispatcher";
import SentryUtils_native from "../../utils/SentryUtils.native";
import { updateImpersonatedRoles, updateImpersonatedChannels, updateImpersonatedData } from "../impersonate/ImpersonateActionCreators";
import Module12 from "../../_bundle/Module12";
import { getSelectedRoleIds, getSelectedChannelIds, getChannelCoverageForOnboarding, getProviderConnectionState, getApplicationConnectionState } from "./GuildOnboardingUtils";
import { isNotNullish } from "../../utils/GlobalUtils";
import { getFlattenedChannels } from "./useFlattenedChannels";
import AnalyticsUtils from "../../utils/AnalyticsUtils";
import { collectGuildAnalyticsMetadata } from "../app_analytics/AppAnalyticsUtils";
import { ackGuildFeature } from "../../actions/ReadStateActionCreators";
import SnowflakeUtils from "../../utils/SnowflakeUtils";
import { setFlag } from "../../_bundle/Module1384";
import { bulkOptInChannels } from "../opt_in_channels/OptInChannelsActionCreators";
import { updateGuildSelfMember } from "../guild_member/GuildMemberActionCreators";
const _updateOnboardingResponses = function _updateOnboardingResponses(a0) {
let c14657_2, c14657_3;
const guildId = a0;
let r2 = arguments[1];
if (r2 === void 0) {
r2 = false;
}
c14657_2 = void 0;
c14657_3 = void 0;
if (ImpersonateStore.isFullServerPreview(a0)) {
return void 0;
}
const r7 = r2 ? GuildOnboardingPromptsStore.getOnboardingPromptsForOnboarding(a0) : GuildOnboardingPromptsStore.getOnboardingPrompts(a0);
const onboardingResponses = GuildOnboardingPromptsStore.getOnboardingResponses(a0);
const r13 = r7.map((item) => item.options.filter((option) => onboardingResponses.includes(option.id))).flat();
const onboarding_prompts_seen = {};
c14657_2 = onboarding_prompts_seen;
const onboarding_responses_seen = {};
c14657_3 = onboarding_responses_seen;
r7.forEach((item) => {
c14657_2[item.id] = Date.now();
item.options.forEach(({ id }) => {
const r7 = Date.now();
c14657_3[id] = r7;
return r7;
});
});
return r2 ? HTTP.post({
url: Endpoints.GUILD_ONBOARDING_RESPONSES(a0),
body: {
onboarding_responses: r13.map((item) => item.id),
onboarding_prompts_seen,
onboarding_responses_seen
},
rejectWithError: true
}).then((result) => {
if (result.body != null) {
Dispatcher.dispatch({
type: "GUILD_ONBOARDING_UPDATE_RESPONSES_SUCCESS",
guildId,
options: result.body.onboarding_responses,
prompts_seen: result.body.onboarding_prompts_seen,
options_seen: result.body.onboarding_responses_seen
});
}
}).catch((error) => SentryUtils_native.captureException(error)) : HTTP.put({
url: Endpoints.GUILD_ONBOARDING_RESPONSES(a0),
body: {
onboarding_responses: r13.map((item) => item.id),
onboarding_prompts_seen,
onboarding_responses_seen
},
rejectWithError: false
}).then((result) => {
if (result.body != null) {
Dispatcher.dispatch({
type: "GUILD_ONBOARDING_UPDATE_RESPONSES_SUCCESS",
guildId,
options: result.body.onboarding_responses,
prompts_seen: result.body.onboarding_prompts_seen,
options_seen: result.body.onboarding_responses_seen
});
}
}).catch((error) => {
SentryUtils_native.captureException(new Error(`Failed to update onboarding responses for guild ${guildId}: ${error.statusCode}`, {
cause: error
}));
});
};
const r40 = {
selectOption: (a0, a1, a2, a3) => {
const onboardingPrompt = GuildOnboardingPromptsStore.getOnboardingPrompt(a1);
if (onboardingPrompt != null) {
Dispatcher.dispatch({
type: "GUILD_ONBOARDING_SELECT_OPTION",
guildId: a0,
promptId: a1,
optionId: a2,
selected: a3,
removedOptionIds: onboardingPrompt.singleSelect ? Module12.without(Module12.map(onboardingPrompt.options, "id"), a2) : []
});
}
},
updateOnboardingResponses: Module12.debounce(_updateOnboardingResponses, 1000),
updateRolesLocal: function updateRolesLocal(a0, a1, a2) {
let r13 = GuildMemberStore.getSelfMember(a0)?.roles;
if (r13 == null) {
r13 = [];
}
if (ImpersonateStore.isViewingRoles(a0)) {
updateImpersonatedRoles(a0, Module12.difference(Module12.union(r13, a1), a2));
} else if (a1.length > 0 || a2.length > 0) {
Dispatcher.dispatch({
type: "GUILD_MEMBER_UPDATE_LOCAL",
guildId: a0,
roles: Module12.difference(Module12.union(r13, a1), a2),
addedRoleIds: a1,
removedRoleIds: a2
});
}
},
completeOnboarding: (a0, a1) => {
const r24 = a1.length > 0 ? a1[a1.length - 1] : null;
const selectedOptions = GuildOnboardingPromptsStore.getSelectedOptions(a0);
const selectedRoleIds = getSelectedRoleIds(selectedOptions);
const selectedChannelIds = getSelectedChannelIds(selectedOptions);
const r47 = GuildOnboardingPromptsStore.getEnabled(a0) ? GuildOnboardingPromptsStore.getDefaultChannelIds(a0) : [];
const [r23, r22] = getChannelCoverageForOnboarding(a0, a1, r47);
const r54 = [...selectedChannelIds, ...r47];
const r66 = r54.map((item) => ChannelStore.getChannel(item)).filter(isNotNullish);
const length = getFlattenedChannels(a0, new Set(r54), r66, true).length;
const r21 = r24 == null ? [] : r24.options.map((option) => option.id);
let c14658_0 = r21;
const connections = GuildOnboardingPromptsStore.getConnections(a0);
const providerConnectionState = getProviderConnectionState(connections);
const applicationConnectionState = getApplicationConnectionState(connections);
AnalyticsUtils.track(AnalyticEvents.GUILD_ONBOARDING_STEP_COMPLETED, {
...collectGuildAnalyticsMetadata(a0),
step: a1.length - 1,
options_selected: r24 == null ? 0 : selectedOptions.filter((selectedOption) => c14658_0.includes(selectedOption.id)).length,
skipped: r21.length > 0,
back: false,
in_onboarding: true,
is_final_step: true,
roles_granted: selectedRoleIds.size,
channels_granted: length,
guild_onboarding_covered_channel_ids: r23.map((item) => item.id),
guild_onboarding_uncovered_channel_ids: r22.map((item) => item.id),
provider_connections_connected: providerConnectionState.connected,
provider_connections_not_connected: providerConnectionState.notConnected,
application_connections_connected: applicationConnectionState.connected,
application_connections_not_connected: applicationConnectionState.notConnected
});
ackGuildFeature(a0, ReadStateTypes.GUILD_ONBOARDING_QUESTION, SnowflakeUtils.fromTimestamp(Date.now()));
_updateOnboardingResponses(a0, true);
if (ImpersonateStore.isFullServerPreview(a0)) {
updateImpersonatedChannels(a0, r54, []);
updateImpersonatedData(a0, {
optInEnabled: true
});
updateImpersonatedRoles(a0, Array.from(selectedRoleIds));
const currentUser = UserStore.getCurrentUser();
if (currentUser != null) {
let r164 = GuildMemberStore.getMember(a0, currentUser.id)?.flags;
if (r164 == null) {
r164 = 0;
}
updateImpersonatedData(a0, {
memberOptions: {
flags: setFlag(r164, GuildMemberFlags.COMPLETED_ONBOARDING, true)
}
});
}
}
},
onboardExistingMember: (a0, a1) => {
const set = new Set(a1);
let c14659_0 = set;
(GuildOnboardingPromptsStore.getEnabled(a0) ? GuildOnboardingPromptsStore.getDefaultChannelIds(a0) : []).forEach((item) => c14659_0.add(item));
if (set.size > 0) {
bulkOptInChannels(a0, Array.from(set), true, {
page: AnalyticsPages.GUILD_ONBOARDING
});
}
},
finishOnboarding: (a0) => {
Dispatcher.dispatch({
type: "GUILD_ONBOARDING_COMPLETE",
guildId: a0
});
},
setUserOnboardingStep: (a0, a1) => {
Dispatcher.dispatch({
type: "GUILD_ONBOARDING_SET_STEP",
guildId: a0,
step: a1
});
},
resetOnboarding: async (c14660_0) => {
let flags;
L15: {
const currentUser = UserStore.getCurrentUser();
if (currentUser != null) {
flags = GuildMemberStore.getMember(c14660_0, currentUser.id)?.flags;
if (flags == null) {
flags = 0;
}
await updateGuildSelfMember(c14660_0, {
flags: setFlag(flags, GuildMemberFlags.COMPLETED_ONBOARDING, false)
});
break L15;
}
return void 0;
}
}
};
export default r40;