This commit is contained in:
janisslsm committed 2026-11-01 12:12:55 +02:00
1 parent 1781d25a15
commit 732c0ad767
33051 files changed
+2591613 -3019689

No files matched your search

@@ -0,0 +1,225 @@
// Metro module 11438 (f11439).
import ImpersonateStore from "../impersonate/ImpersonateStore";
import ChannelStore from "../../stores/ChannelStore";
import GuildOnboardingHomeSettingsStore from "./GuildOnboardingHomeSettingsStore";
import GuildOnboardingMemberActionStore from "./GuildOnboardingMemberActionStore";
import { AnalyticEvents, Endpoints } from "../../Constants";
import Dispatcher from "../../Dispatcher";
import { HTTP } from "../../_bundle/sendRequest";
import { settingsFromServer, actionsFromServer } from "./GuildOnboardingHomeTypes";
import AnalyticsUtils from "../../utils/AnalyticsUtils";
import { transitionToChannel } from "../routing/transitionToChannel";
import SnowflakeUtils from "../../utils/SnowflakeUtils";
export async function fetchGuildHomeSettings(guildId) {
let r76;
let c27065_4 = 0;
let c30406_0, c30406_1, c30406_2;
try {
c30406_0 = guildId;
c30406_1 = void 0;
c30406_2 = void 0;
Dispatcher.dispatch({
type: "GUILD_HOME_SETTINGS_FETCH_START",
guildId
});
c27065_4 = 1;
c30406_1 = await HTTP.get({
url: Endpoints.GUILD_HOME_SETTINGS(guildId),
oldFormErrors: true,
rejectWithError: true
});
c30406_2 = settingsFromServer(c30406_1.body);
Dispatcher.dispatch({
type: "GUILD_HOME_SETTINGS_FETCH_SUCCESS",
guildId: c30406_0,
homeSettings: c30406_2
});
r76 = c30406_2;
c27065_4 = 0;
} catch ($e) {
let r8 = $e;
if (c27065_4 !== 0) {
while (true) {
try {
c27065_4 = 0;
Dispatcher.dispatch({
type: "GUILD_HOME_SETTINGS_FETCH_FAIL",
guildId: c30406_0
});
} catch ($e) {
r8 = $e;
if (c27065_4 === 0) {
break;
}
continue;
}
return void 0;
}
}
throw r8;
}
return r76;
}
export async function fetchNewMemberActions(guildId2) {
let r80;
let c27066_4 = 0;
let c30407_0, c30407_1, c30407_2;
L12: {
try {
c30407_0 = guildId2;
c30407_1 = void 0;
c30407_2 = void 0;
if (ImpersonateStore.isFullServerPreview(guildId2)) {
break L12;
}
Dispatcher.dispatch({
type: "GUILD_NEW_MEMBER_ACTIONS_FETCH_START",
guildId: guildId2
});
c27066_4 = 1;
c30407_1 = await HTTP.get({
url: Endpoints.GUILD_MEMBER_ACTIONS(guildId2),
oldFormErrors: true,
rejectWithError: true
});
c30407_2 = actionsFromServer(c30407_1.body);
Dispatcher.dispatch({
type: "GUILD_NEW_MEMBER_ACTIONS_FETCH_SUCCESS",
guildId: c30407_0,
memberActions: c30407_2
});
r80 = c30407_2;
c27066_4 = 0;
} catch ($e) {
let r8 = $e;
if (c27066_4 !== 0) {
while (true) {
try {
c27066_4 = 0;
Dispatcher.dispatch({
type: "GUILD_NEW_MEMBER_ACTIONS_FETCH_FAIL",
guildId: c30407_0
});
} catch ($e) {
r8 = $e;
if (c27066_4 === 0) {
break;
}
continue;
}
return void 0;
}
}
throw r8;
}
return r80;
}
}
export async function clearNewMemberActions(guildId3) {
let c27067_4 = 0;
let c30408_0;
L10: {
try {
c30408_0 = guildId3;
Dispatcher.dispatch({
type: "GUILD_NEW_MEMBER_ACTIONS_DELETE_START",
guildId: guildId3
});
c27067_4 = 1;
await HTTP.del({
url: Endpoints.GUILD_MEMBER_ACTIONS(guildId3),
oldFormErrors: true,
rejectWithError: true
});
Dispatcher.dispatch({
type: "GUILD_NEW_MEMBER_ACTIONS_DELETE_SUCCESS",
guildId: c30408_0
});
c27067_4 = 0;
} catch ($e) {
let r8 = $e;
if (c27067_4 !== 0) {
while (true) {
try {
c27067_4 = 0;
Dispatcher.dispatch({
type: "GUILD_NEW_MEMBER_ACTIONS_DELETE_FAIL",
guildId: c30408_0
});
break L10;
} catch ($e) {
r8 = $e;
if (c27067_4 === 0) {
break;
}
}
}
}
throw r8;
}
}
}
export function selectHomeResourceChannel(a0, a1, r4 = true) {
if (a1 != null) {
const channel = ChannelStore.getChannel(a1);
const resourceForChannel = GuildOnboardingHomeSettingsStore.getResourceForChannel(a0, a1);
if (!(a0 == null || ImpersonateStore.isFullServerPreview(a0) || channel == null || resourceForChannel == null)) {
AnalyticsUtils.track(AnalyticEvents.SERVER_GUIDE_CHANNEL_SELECTED, {
guild_id: a0,
channel_id: channel.id,
server_guide_channel_type: "resource",
channel_action_type: -1
});
}
if (r4) {
transitionToChannel(a1, {
navigationReplace: false
});
}
}
}
export function selectNewMemberActionChannel(a0, a1) {
const channel = ChannelStore.getChannel(a1);
const actionForChannel = GuildOnboardingHomeSettingsStore.getActionForChannel(a0, a1);
if (!(a0 == null || ImpersonateStore.isFullServerPreview(a0) || channel == null || actionForChannel == null)) {
AnalyticsUtils.track(AnalyticEvents.SERVER_GUIDE_CHANNEL_SELECTED, {
guild_id: a0,
channel_id: channel.id,
server_guide_channel_type: "member action",
channel_action_type: actionForChannel.actionType
});
}
transitionToChannel(a1);
}
export function completeNewMemberAction(a0, a1) {
Dispatcher.dispatch({
type: "COMPLETE_NEW_MEMBER_ACTION",
guildId: a0,
channelId: a1
});
if (!ImpersonateStore.isFullServerPreview(a0)) {
const channel = ChannelStore.getChannel(a1);
const actionForChannel = GuildOnboardingHomeSettingsStore.getActionForChannel(a0, a1);
if (channel != null && actionForChannel != null) {
let r27 = GuildOnboardingMemberActionStore.getCompletedActions(a0);
if (r27 == null) {
r27 = {};
}
let c18838_0 = SnowflakeUtils.keys(r27);
let r31 = GuildOnboardingHomeSettingsStore.getNewMemberActions(a0);
if (r31 == null) {
r31 = [];
}
AnalyticsUtils.track(AnalyticEvents.SERVER_GUIDE_ACTION_COMPLETED, {
guild_id: channel.guild_id,
channel_id: channel.id,
channel_action_type: actionForChannel.actionType,
has_completed_all: r31.reduce((acc, item) => acc ? c18838_0.includes(item.channelId) : acc, true)
});
}
HTTP.post({
url: Endpoints.GUILD_MEMBER_ACTION_UPDATE(a0, a1),
rejectWithError: true
});
}
}
@@ -0,0 +1,205 @@
// Metro module 4391 (f4392).
import Module589 from "../../_bundle/Module589";
import Dispatcher from "../../Dispatcher";
let c2623_0, c2623_1, c2623_2, c2623_3, c2623_4;
const handleSettingsLoadSuccess = function handleSettingsLoadSuccess({ homeSettings, guildId }) {
if (guildId != null) {
if (homeSettings == null) {
c2623_2[guildId] = c2623_0;
}
c2623_2[guildId] = homeSettings;
const newMemberActions = c2623_2[guildId]?.newMemberActions;
if (newMemberActions != null) {
c2623_4[guildId] = newMemberActions;
c2623_4[guildId];
}
c2623_3.delete(guildId);
}
};
c2623_0 = {
enabled: false
};
c2623_1 = [];
c2623_2 = {};
c2623_3 = new Set();
c2623_4 = {};
class GuildOnboardingHomeSettingsStore extends Module589.Store {
static displayName = "GuildOnboardingHomeSettingsStore";
getSettings(a0) {
const r1 = a0 == null;
let r2 = null;
if (!r1) {
let r6 = c2623_2[a0];
if (r6 == null) {
r6 = c2623_0;
}
r2 = r6;
}
return r2;
}
getNewMemberActions(a0) {
let r14;
const r0 = a0 == null;
let r1 = null;
if (!r0) {
const r11 = this.getSettings(a0)?.newMemberActions == null;
r1 = null;
if (!r11) {
if (c2623_4[a0] == null) {
const newMemberActions = c2623_2[a0]?.newMemberActions;
const r18 = newMemberActions == null;
let r19 = null;
if (!r18) {
c2623_4[a0] = newMemberActions;
r19 = c2623_4[a0];
}
r14 = r19;
} else {
r14 = c2623_4[a0];
}
r1 = r14;
}
}
return r1;
}
getActionForChannel(a0, c14219_0) {
const settings = this.getSettings(a0);
const r1 = settings == null;
let r8 = null;
if (!r1) {
let newMemberActions = settings.newMemberActions;
if (newMemberActions == null) {
newMemberActions = [];
}
r8 = newMemberActions.find((newMemberAction) => newMemberAction.channelId === c14219_0);
}
return r8;
}
hasMemberAction(a0, a1) {
return this.getActionForChannel(a0, a1) != null;
}
getResourceChannels(a0) {
let r6 = c2623_2[a0]?.resourceChannels;
if (r6 == null) {
r6 = c2623_1;
}
return r6;
}
getResourceForChannel(a0, c14220_0) {
if (a0 == null) {
return null;
}
const resourceChannels = this.getResourceChannels(a0);
return resourceChannels !== c2623_1 ? resourceChannels.find((resourceChannel) => resourceChannel.channelId === c14220_0) : null;
}
getIsLoading(a0) {
return a0 != null && c2623_3.has(a0);
}
getWelcomeMessage(a0) {
if (a0 != null) {
return c2623_2[a0]?.welcomeMessage;
}
}
hasSettings(a0) {
return a0 != null && c2623_2[a0] != null;
}
getEnabled(a0) {
let r2 = a0 != null;
if (r2) {
let r7 = c2623_2[a0]?.enabled;
if (r7 == null) {
r7 = false;
}
r2 = r7;
}
return r2;
}
getNewMemberAction(a0, a1) {
const r1 = a0 == null;
let r3 = null;
if (!r1) {
const r8 = a1 == null;
r3 = null;
if (!r8) {
const r11 = c2623_2[a0];
const r12 = r11 == null;
let r13 = void 0;
if (!r12) {
const newMemberActions = r11.newMemberActions;
r13 = newMemberActions == null ? void 0 : newMemberActions.find((newMemberAction) => newMemberAction.channelId === a1);
}
if (r13 == null) {
r13 = null;
}
r3 = r13;
}
}
return r3;
}
}
const guildOnboardingHomeSettingsStore = new GuildOnboardingHomeSettingsStore(Dispatcher, {
GUILD_HOME_SETTINGS_FETCH_START: function handleSettingsFetchStart(a0) {
c2623_3.add(a0.guildId);
},
GUILD_HOME_SETTINGS_FETCH_SUCCESS: handleSettingsLoadSuccess,
GUILD_HOME_SETTINGS_FETCH_FAIL: function handleSettingsFetchFail(a0) {
c2623_3.delete(a0.guildId);
},
GUILD_HOME_SETTINGS_UPDATE_SUCCESS: handleSettingsLoadSuccess,
GUILD_HOME_SETTINGS_TOGGLE_ENABLED: function handleSettingsToggleEnabled({ guildId, enabled }) {
const r6 = c2623_2[guildId];
if (r6 == null) {
return false;
}
r6.enabled = enabled;
},
GUILD_RESOURCE_CHANNEL_UPDATE_SUCCESS: function handleResourceChannelUpdate({ guildId, resourceChannel }) {
const r12 = c2623_2[guildId];
if (r12 == null) {
return false;
}
let resourceChannels = r12.resourceChannels;
if (resourceChannels == null) {
resourceChannels = [];
}
r12.resourceChannels = resourceChannels;
const r16 = r12.resourceChannels.findIndex((a0) => a0.channelId === resourceChannel.channelId);
let r17 = r16 !== -1;
if (r17) {
r12.resourceChannels[r16] = {
...resourceChannel
};
r17 = true;
}
return r17;
},
GUILD_NEW_MEMBER_ACTION_UPDATE_SUCCESS: function handleNewMemberActionUpdate({ guildId, action }) {
const r12 = c2623_2[guildId];
if (r12 == null) {
return false;
}
let newMemberActions = r12.newMemberActions;
if (newMemberActions == null) {
newMemberActions = [];
}
r12.newMemberActions = newMemberActions;
const r16 = r12.newMemberActions.findIndex((newMemberAction) => newMemberAction.channelId === action.channelId);
let r17 = r16 !== -1;
if (r17) {
r12.newMemberActions[r16] = {
...action
};
r17 = true;
}
return r17;
},
GUILD_DELETE: function handleGuildDelete({ guild }) {
if (c2623_2[guild.id] == null) {
return false;
}
delete c2623_2[guild.id];
delete c2623_4[guild.id];
}
});
export default guildOnboardingHomeSettingsStore;
export { c2623_0 as NO_SETTINGS };
@@ -0,0 +1,267 @@
// Metro module 11439 (f11440).
import ChannelStore from "../../stores/ChannelStore";
import { ChannelTypes, Permissions } from "../../Constants";
import { isNotNullish } from "../../utils/GlobalUtils";
import { canEveryoneRole } from "../../utils/PermissionUtils";
let resourceChannelFromServer, isSettingsEmpty;
const newMemberActionFromServer = function newMemberActionFromServer(a0) {
const emoji = a0.emoji == null ? null : {
id: a0.emoji.id,
name: a0.emoji.name,
animated: a0.emoji.animated
};
let icon = a0.icon;
if (icon == null) {
icon = null;
}
return {
channelId: a0.channel_id,
actionType: a0.action_type,
title: a0.title,
description: a0.description,
emoji,
icon
};
};
resourceChannelFromServer = function resourceChannelFromServer(a0) {
let description = a0.description;
if (description == null) {
description = "";
}
const emoji = a0.emoji == null ? null : {
id: a0.emoji.id,
name: a0.emoji.name,
animated: a0.emoji.animated
};
let icon = a0.icon;
if (icon == null) {
icon = null;
}
return {
channelId: a0.channel_id,
title: a0.title,
description,
emoji,
icon
};
};
isSettingsEmpty = function isSettingsEmpty(a0) {
let r5 = a0 == null;
if (!r5) {
const welcomeMessage = a0.welcomeMessage;
let r2 = welcomeMessage == null;
if (!r2) {
const r1 = welcomeMessage.message != null && welcomeMessage.message.length > 0;
r2 = r1 ? !r1 : !(welcomeMessage.authorIds != null && welcomeMessage.authorIds.length > 0);
}
let r18 = !!r2;
if (r18) {
const r20 = a0.newMemberActions != null && a0.newMemberActions.length > 0;
r18 = r20 ? !r20 : !(a0.resourceChannels != null && a0.resourceChannels.length > 0);
}
r5 = r18;
}
return r5;
};
const r26 = {
VIEW: 0,
0: "VIEW",
CHAT: 1,
1: "CHAT"
};
const r29 = {
DEFAULT: 0,
0: "DEFAULT",
TODO: 1,
1: "TODO",
RESOURCE: 2,
2: "RESOURCE",
RULES: 3,
3: "RULES",
UPDATES: 4,
4: "UPDATES"
};
export const WELCOME_MESSAGE_MIN_LENGTH = 7;
export const WELCOME_MESSAGE_MAX_LENGTH = 300;
export const NEW_MEMBER_ACTION_TITLE_MIN_LENGTH = 7;
export const NEW_MEMBER_ACTION_TITLE_MAX_LENGTH = 60;
export const NEW_MEMBER_ACTION_MIN = 3;
export const NEW_MEMBER_ACTION_MAX = 5;
export const RESOURCE_CHANNEL_TITLE_MIN_LENGTH = 1;
export const RESOURCE_CHANNEL_TITLE_MAX_LENGTH = 30;
export const RESOURCE_CHANNEL_DESCRIPTION_MAX_LENGTH = 200;
export const RESOURCE_CHANNEL_MAX = 7;
export const NEW_MEMBER_ACTION_COMPLETE_MODAL_KEY = "NEW_MEMBER_ACTION_COMPLETE_MODAL_KEY";
export const CHANNEL_ACTION_BANNER_HEIGHT = 46;
export { r26 as NewMemberActionTypes };
export { newMemberActionFromServer };
export { resourceChannelFromServer };
export function settingsFromServer(a0) {
if (a0 == null) {
return null;
}
const { welcome_message, new_member_actions, resource_channels, enabled } = a0;
return {
welcomeMessage: {
authorIds: welcome_message.author_ids,
message: welcome_message.message
},
newMemberActions: new_member_actions.filter((new_member_action) => isNotNullish(ChannelStore.getChannel(new_member_action.channel_id))).map(newMemberActionFromServer),
resourceChannels: resource_channels.filter((resource_channel) => isNotNullish(ChannelStore.getChannel(resource_channel.channel_id))).map(resourceChannelFromServer),
enabled
};
}
export function settingsToServer(a0, a1) {
if (a1 == null) {
return null;
}
const welcomeMessage = a1.welcomeMessage;
let newMemberActions = a1.newMemberActions;
let resourceChannels = a1.resourceChannels;
const enabled = a1.enabled;
let author_ids = welcomeMessage?.authorIds;
if (author_ids == null) {
author_ids = [];
}
let message = welcomeMessage?.message;
if (message == null) {
message = "";
}
const welcome_message = {
author_ids,
message
};
if (newMemberActions == null) {
newMemberActions = [];
}
const r10 = {
guild_id: a0,
welcome_message,
new_member_actions: newMemberActions.filter((newMemberAction) => isNotNullish(ChannelStore.getChannel(newMemberAction.channelId))).map((item) => {
let id = item.emoji?.id;
if (id == null) {
id = void 0;
}
let name = item.emoji?.name;
if (name == null) {
name = void 0;
}
let animated = item.emoji?.animated;
if (animated == null) {
animated = void 0;
}
const emoji = {
id,
name,
animated
};
let icon = item.icon;
if (icon == null) {
icon = void 0;
}
return {
channel_id: item.channelId,
action_type: item.actionType,
title: item.title,
description: item.description,
emoji,
icon
};
}),
resource_channels: null,
enabled: null
};
if (resourceChannels == null) {
resourceChannels = [];
}
r10.resource_channels = resourceChannels.filter((resourceChannel) => isNotNullish(ChannelStore.getChannel(resourceChannel.channelId))).map((item) => {
let id = item.emoji?.id;
if (id == null) {
id = void 0;
}
let name = item.emoji?.name;
if (name == null) {
name = void 0;
}
let animated = item.emoji?.animated;
if (animated == null) {
animated = void 0;
}
const emoji = {
id,
name,
animated
};
let icon = item.icon;
if (icon == null) {
icon = void 0;
}
return {
channel_id: item.channelId,
title: item.title,
description: item.description,
emoji,
icon
};
});
r10.enabled = enabled;
return r10;
}
export function actionsFromServer(a0) {
if (a0 == null) {
return null;
}
const r3 = {};
const channel_actions = a0.channel_actions;
for (const key in channel_actions) {
r3[key] = a0.channel_actions[key].completed;
}
return r3;
}
export function isWelcomeMessageEmpty(a0) {
let r3 = a0 == null;
if (!r3) {
const r2 = a0.message != null && a0.message.length > 0;
r3 = r2 ? !r2 : !(a0.authorIds != null && a0.authorIds.length > 0);
}
return r3;
}
export { isSettingsEmpty };
export function isSettingsValid(a0) {
if (a0 == null) {
return false;
}
if (isSettingsEmpty(a0)) {
return true;
}
if (a0.welcomeMessage?.message != null && !(a0.welcomeMessage.message.length < 7)) {
if (a0.welcomeMessage?.authorIds != null && a0.welcomeMessage.authorIds.length !== 0) {
if (a0.newMemberActions != null && !(a0.newMemberActions.length < 3)) {
if (a0.newMemberActions != null) {
for (const newMemberAction of a0.newMemberActions) {
const channel = ChannelStore.getChannel(newMemberAction.channelId);
if (channel != null && canEveryoneRole(Permissions.VIEW_CHANNEL, channel)) {
continue;
}
return false;
}
}
return true;
}
return false;
}
return false;
}
return false;
}
export function isChannelValidForResourceChannel(a0) {
return a0.type === ChannelTypes.GUILD_TEXT && !canEveryoneRole(Permissions.SEND_MESSAGES, a0) && canEveryoneRole(Permissions.VIEW_CHANNEL, a0);
}
export function isChannelValidForNewMemberAction(a0) {
const type = a0.type;
if (ChannelTypes.GUILD_TEXT !== type && ChannelTypes.GUILD_ANNOUNCEMENT !== type && ChannelTypes.GUILD_FORUM !== type && ChannelTypes.GUILD_MEDIA !== type) {
return false;
}
return canEveryoneRole(Permissions.VIEW_CHANNEL, a0);
}
export { r29 as ChannelEditBlockTypes };
@@ -0,0 +1,63 @@
// Metro module 4392 (f4393).
import Module589 from "../../_bundle/Module589";
import Dispatcher from "../../Dispatcher";
let c2624_0 = {};
let c2624_1 = {};
let c2624_2 = new Set();
class GuildOnboardingMemberActionStore extends Module589.Store {
static displayName = "GuildOnboardingMemberActionStore";
getCompletedActions(a0) {
return a0 != null ? c2624_1[a0] : null;
}
hasCompletedActionForChannel(a0, a1) {
const completedActions = this.getCompletedActions(a0);
return completedActions != null && completedActions[a1] != null;
}
getState(a0) {
return a0 == null ? {} : {
completedActions: c2624_1[a0],
loading: c2624_2.has(a0)
};
}
}
const guildOnboardingMemberActionStore = new GuildOnboardingMemberActionStore(Dispatcher, {
GUILD_NEW_MEMBER_ACTIONS_FETCH_START: function handleMemberActionsFetchStart(a0) {
c2624_2.add(a0.guildId);
},
GUILD_NEW_MEMBER_ACTIONS_FETCH_SUCCESS: function handleMemberActionsFetchSuccess({ memberActions, guildId }) {
if (memberActions != null) {
c2624_1[guildId] = memberActions;
c2624_2.delete(guildId);
} else {
c2624_1[guildId] = c2624_0;
}
},
GUILD_NEW_MEMBER_ACTIONS_FETCH_FAIL: function handleMemberActionsFetchFail(a0) {
c2624_2.delete(a0.guildId);
},
GUILD_NEW_MEMBER_ACTIONS_DELETE_SUCCESS: function handleNewMemberActionsDelete({ guildId }) {
if (c2624_1[guildId] == null) {
return false;
}
delete c2624_1[guildId];
},
COMPLETE_NEW_MEMBER_ACTION: function handleCompleteNewMemberAction({ guildId, channelId }) {
const r9 = {
...c2624_1
};
const r10 = {
...c2624_1[guildId]
};
r10[channelId] = true;
r9[guildId] = r10;
c2624_1 = r9;
},
GUILD_DELETE: function handleGuildDelete({ guild }) {
if (c2624_1[guild.id] == null) {
return false;
}
delete c2624_1[guild.id];
}
});
export default guildOnboardingMemberActionStore;
export { c2624_0 as NO_ACTIONS };
@@ -0,0 +1,38 @@
// Metro module 11441 (f11442).
import GuildMemberStore from "../../stores/GuildMemberStore";
import GuildOnboardingHomeSettingsStore from "./GuildOnboardingHomeSettingsStore";
import GuildOnboardingMemberActionStore from "./GuildOnboardingMemberActionStore";
import { GuildMemberFlags } from "../guild_member/GuildMemberConstants";
import useIsNewMember from "./useIsNewMember";
import { useStateFromStores } from "../../_bundle/defaultAreStatesEqual";
import { hasFlag } from "../../_bundle/Module1384";
export function useMemberActionsForChannel(a0, c18843_1) {
const isNewMember = useIsNewMember(a0);
const stateFromStores2 = useStateFromStores([GuildOnboardingHomeSettingsStore], () => GuildOnboardingHomeSettingsStore.getNewMemberActions(a0), [a0]);
const stateFromStores3 = useStateFromStores([GuildOnboardingMemberActionStore], () => GuildOnboardingMemberActionStore.getCompletedActions(a0));
if (isNewMember) {
let r30 = stateFromStores2 == null ? void 0 : stateFromStores2.findIndex((item) => item.channelId === c18843_1.id);
if (r30 == null) {
r30 = 0;
}
const channelAction = r30 >= 0 ? stateFromStores2 != null ? stateFromStores2[r30] : null : null;
return {
channelAction,
completed: channelAction != null && (stateFromStores3 == null ? void 0 : stateFromStores3[channelAction.channelId]) === true
};
}
return {};
}
export function useNextMemberAction(c18844_0, c18844_1) {
let stateFromStores;
const stateFromStores2 = useStateFromStores([GuildOnboardingHomeSettingsStore], () => GuildOnboardingHomeSettingsStore.getNewMemberActions(c18844_0));
stateFromStores = useStateFromStores([GuildOnboardingMemberActionStore], () => GuildOnboardingMemberActionStore.getCompletedActions(c18844_0));
return stateFromStores2 == null ? void 0 : stateFromStores2.find((item) => (stateFromStores == null ? void 0 : stateFromStores[item.channelId]) !== true && item.channelId !== c18844_1);
}
export function useAllActionsCompleted(c18845_0) {
let r19 = useStateFromStores([GuildMemberStore], () => GuildMemberStore.getSelfMember(c18845_0))?.flags;
if (r19 == null) {
r19 = 0;
}
return hasFlag(r19, GuildMemberFlags.COMPLETED_HOME_ACTIONS);
}
@@ -0,0 +1,98 @@
// Metro module 5658 (f5659).
import ImpersonateStore from "../impersonate/ImpersonateStore";
import ChannelStore from "../../stores/ChannelStore";
import GuildStore from "../../stores/GuildStore";
import GuildOnboardingHomeSettingsStore from "./GuildOnboardingHomeSettingsStore";
import { GuildFeatures, ME } from "../../Constants";
import { ChannelFlags } from "../channel/ChannelConstants";
import useIsNewMember from "./useIsNewMember";
import { useStateFromStores } from "../../_bundle/defaultAreStatesEqual";
import { isFavoritesGuildId } from "../favorites/FavoritesUtils";
import { isGuildOnboardingSettingsAvailable } from "../guild_onboarding/GuildOnboardingUtils";
import guildHasOnboardingHome from "./guildHasOnboardingHome";
import { $forInKeys } from "../../_hermes/prelude";
export function useCanSeeOnboardingHome(a0) {
const isNewMember = useIsNewMember(a0);
let c14982_1 = isNewMember;
return useStateFromStores([ChannelStore, GuildStore, ImpersonateStore], () => {
let r34, hasFlag;
if (a0 !== ME && !isFavoritesGuildId(a0)) {
const guild = GuildStore.getGuild(a0);
let r27 = !!(guild == null ? void 0 : guild.features.has(GuildFeatures.COMMUNITY));
if (r27) {
if (ImpersonateStore.isFullServerPreview(a0)) {
const id = guild.id;
let r55 = GuildOnboardingHomeSettingsStore.getNewMemberActions(id);
if (r55 == null) {
r55 = [];
}
let r58 = r55.length > 0;
const enabled = GuildOnboardingHomeSettingsStore.getEnabled(id);
if (r58) {
r58 = guild.features.has(GuildFeatures.COMMUNITY);
}
if (r58) {
r58 = !(guild.features.has(GuildFeatures.GUILD_ONBOARDING) && !enabled);
}
r34 = r58;
} else {
r34 = isGuildOnboardingSettingsAvailable(a0) || !!guildHasOnboardingHome(guild);
if (r34) {
let r40 = c14982_1;
if (!r40) {
const mutableGuildChannelsForGuild = ChannelStore.getMutableGuildChannelsForGuild(a0);
let r45 = false;
const r46 = $forInKeys(mutableGuildChannelsForGuild);
let r1 = 0;
const length = r46.length;
if (r46 !== void 0) {
do {
r45 = false;
const r47 = r1 < length ? r46[r1++] : void 0;
if (r47 === void 0) {
break;
}
hasFlag = mutableGuildChannelsForGuild[r47].hasFlag(ChannelFlags.IS_GUILD_RESOURCE_CHANNEL);
r45 = true;
} while (!hasFlag);
}
r40 = r45;
}
r34 = r40;
}
}
r27 = r34;
}
return r27;
}
return false;
}, [a0, isNewMember]);
}
export function canSeeOnboardingHome(a0) {
const guild = GuildStore.getGuild(a0);
const isFullServerPreview = ImpersonateStore.isFullServerPreview(a0);
if (guild == null) {
return false;
}
if (a0 !== ME && !isFavoritesGuildId(a0)) {
if (isFullServerPreview) {
const id = guild.id;
let r44 = GuildOnboardingHomeSettingsStore.getNewMemberActions(id);
if (r44 == null) {
r44 = [];
}
let r46 = r44.length > 0;
const enabled = GuildOnboardingHomeSettingsStore.getEnabled(id);
if (r46) {
r46 = guild.features.has(GuildFeatures.COMMUNITY);
}
if (r46) {
r46 = !(guild.features.has(GuildFeatures.GUILD_ONBOARDING) && !enabled);
}
return r46;
}
const r21 = isGuildOnboardingSettingsAvailable(a0) && guild.features.has(GuildFeatures.GUILD_ONBOARDING) && guild.features.has(GuildFeatures.GUILD_SERVER_GUIDE);
return (guild.features.has(GuildFeatures.GUILD_ONBOARDING) && guild.features.has(GuildFeatures.GUILD_SERVER_GUIDE) || r21) && guild.features.has(GuildFeatures.COMMUNITY);
}
return false;
}
@@ -0,0 +1,28 @@
// Metro module 11437 (f11438).
import GuildOnboardingHomeSettingsStore from "./GuildOnboardingHomeSettingsStore";
import { useStateFromStores } from "../../_bundle/Module589";
export default function getCurrentAndNextResourceChannel(a0, c18836_0) {
const resourceChannels = GuildOnboardingHomeSettingsStore.getResourceChannels(a0);
const r10 = resourceChannels.findIndex((resourceChannel) => resourceChannel.channelId === c18836_0);
return r10 < 0 ? [null, null] : [resourceChannels[r10], resourceChannels[(r10 + 1) % resourceChannels.length]];
};
export function usePreviousAndNextResourceChannel(a0, a1) {
let r26;
let c18837_0, c18837_1;
L7: {
c18837_0 = a0;
c18837_1 = a1;
const stateFromStores = useStateFromStores([GuildOnboardingHomeSettingsStore], () => GuildOnboardingHomeSettingsStore.getResourceChannels(c18837_0));
const r18 = stateFromStores.findIndex((stateFromStore) => stateFromStore.channelId === c18837_1);
if (!(r18 < 0) && !(stateFromStores.length <= 1)) {
if (stateFromStores.length === 2) {
r26 = [null, stateFromStores[1 - r18]];
break L7;
}
r26 = [stateFromStores[(r18 - 1) % stateFromStores.length], stateFromStores[(r18 + 1) % stateFromStores.length]];
} else {
r26 = [null, null];
}
}
return r26;
}
@@ -0,0 +1,6 @@
// Metro module 4393 (f4394).
import { GuildFeatures, ME } from "../../Constants";
import { isFavoritesGuildId } from "../favorites/FavoritesUtils";
export default function guildHasOnboardingHome(a0) {
return !(a0 == null || a0.id === ME || isFavoritesGuildId(a0.id) || !a0.features.has(GuildFeatures.COMMUNITY) || !a0.features.has(GuildFeatures.GUILD_SERVER_GUIDE) || !a0.features.has(GuildFeatures.GUILD_ONBOARDING));
};
@@ -0,0 +1,29 @@
// Metro module 4390 (f4391).
import ChannelStore from "../../stores/ChannelStore";
import GuildMemberStore from "../../stores/GuildMemberStore";
import GuildStore from "../../stores/GuildStore";
import GuildOnboardingHomeSettingsStore from "./GuildOnboardingHomeSettingsStore";
import GuildOnboardingMemberActionStore from "./GuildOnboardingMemberActionStore";
import { GuildFeatures } from "../../Constants";
import { GuildMemberFlags } from "../guild_member/GuildMemberConstants";
import guildHasOnboardingHome from "./guildHasOnboardingHome";
import { hasFlag } from "../../_bundle/Module1384";
export function hasPendingMemberAction(a0, a1) {
const guild = GuildStore.getGuild(a0);
const channel = ChannelStore.getChannel(a1);
let r17 = guild != null && channel != null && guildHasOnboardingHome(guild) && guild.features.has(GuildFeatures.GUILD_SERVER_GUIDE);
if (r17) {
let r32 = GuildMemberStore.getSelfMember(guild.id)?.flags;
if (r32 == null) {
r32 = 0;
}
r17 = !hasFlag(r32, GuildMemberFlags.COMPLETED_HOME_ACTIONS);
}
if (r17) {
r17 = GuildOnboardingHomeSettingsStore.hasMemberAction(guild.id, channel.id);
}
if (r17) {
r17 = !GuildOnboardingMemberActionStore.hasCompletedActionForChannel(guild.id, channel.id);
}
return r17;
}
@@ -0,0 +1,39 @@
// Metro module 10416 (f10417).
import "../../stores/ChannelSectionStore";
import "../../stores/SelectedChannelStore";
import { isGuildHomeChannel } from "../channel/ChannelConstants";
import { getRootNavigationRef } from "../main_tabs_v2/RootNavigationRef.native";
import { coerceMainRoute, coerceChannelRoute } from "../main_tabs_v2/helpers/NavigationRouteUtils.native";
export default function isSelectedFromHomeChannel(a0) {
const rootNavigationRef = getRootNavigationRef();
if (rootNavigationRef != null && rootNavigationRef.isReady()) {
const rootState = rootNavigationRef.getRootState();
if (rootState == null) {
return false;
}
const r27 = coerceMainRoute(rootState.routes[rootState.index]);
if (r27 == null) {
return false;
}
const state = r27.state;
if (state == null) {
return false;
}
let index = state.index;
while (index >= 0) {
const r14 = state.routes[index];
if (r14 != null) {
const r34 = coerceChannelRoute(r14);
if (r34 != null && r34.params.channelId === a0.id) {
const r43 = coerceChannelRoute(state.routes[index - 1]);
if (r43 != null) {
return r43.params.guildId === a0.guild_id && isGuildHomeChannel(r43.params.channelId);
}
}
}
index = index - 1;
}
return false;
}
return false;
};
@@ -0,0 +1,166 @@
// Metro module 15435 (f15436).
import { useEffect, useCallback } from "react";
import { Image as Image2, View } from "react-native";
import ChannelStore from "../../../stores/ChannelStore";
import GuildChannelStore from "../../../stores/GuildChannelStore";
import MessageStore from "../../../stores/MessageStore";
import PermissionStore from "../../../stores/PermissionStore";
import { Permissions, Routes } from "../../../Constants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import { useStateFromStores } from "../../../_bundle/Module589";
import { useForumPostMediaProperties, useFirstMediaIsEmbed, getEmbedColor } from "../../forums/ForumPostMediaUtils";
import { useSharedMediaProps, ForumPostMediaThumbnail } from "../../forums/native/posts/ForumPostMedia";
import useFirstMessageOrEmbedContent from "../useFirstMessageOrEmbedContent";
import MessageActionCreators from "../../../actions/MessageActionCreators";
import { selectHomeResourceChannel } from "../GuildOnboardingHomeActionCreators";
import AvatarUtils from "../../../utils/AvatarUtils";
import { PressableOpacity } from "../../../design/void/Pressables/native/Pressables";
import { Text } from "../../../design/components/Text/native/Text";
import MarkupUtils from "../../markup/MarkupUtils";
import useResourceChannels from "../useResourceChannels";
import { transitionTo } from "../../routing/router_utils";
import { intl, t } from "../../../intl/index.native";
import Module15437 from "../../../_bundle/Module15437";
import { Button } from "../../../design/components/Button/native/Button.native";
let useStyles;
const ResourceChannelRow = function ResourceChannelRow(props) {
let c21992_2;
const { channelId, title, icon, description } = props;
c21992_2 = void 0;
const styles = useStyles();
const stateFromStores = useStateFromStores([ChannelStore], () => ChannelStore.getChannel(channelId));
const stateFromStores2 = useStateFromStores([PermissionStore], () => PermissionStore.can(Permissions.VIEW_CHANNEL, stateFromStores));
const stateFromStores3 = useStateFromStores([MessageStore], () => MessageStore.getMessages(channelId));
const r52 = stateFromStores3.first();
const forumPostMediaProperties = useForumPostMediaProperties(r52, false);
const firstMediaIsEmbed = useFirstMediaIsEmbed(r52, false);
const media = forumPostMediaProperties?.length > 0 ? forumPostMediaProperties[0] : null;
let shouldObscure = useSharedMediaProps({
channel: stateFromStores,
media
}).shouldObscure;
const firstMessageOrEmbedContent = useFirstMessageOrEmbedContent(r52);
const r69 = stateFromStores != null && stateFromStores3.first() == null && !stateFromStores3.loadingMore && !stateFromStores3.ready && !stateFromStores3.hasFetched;
c21992_2 = r69;
useEffect(() => {
if (c21992_2) {
MessageActionCreators.fetchMessages({
channelId,
after: channelId,
limit: 5
});
}
}, [channelId, r69]);
const callback = useCallback(() => {
if (stateFromStores != null) {
selectHomeResourceChannel(stateFromStores.guild_id, stateFromStores.id);
}
}, [stateFromStores]);
if (stateFromStores != null && stateFromStores2) {
const resourceChannelIconURL = AvatarUtils.getResourceChannelIconURL({
channelId: stateFromStores.id,
icon
});
const r90 = description == null || description.length === 0;
const r128 = [<View style={styles.textContent}>
<Text variant="heading-md/extrabold" color="mobile-text-heading-primary">{title}</Text>
{r90 && firstMessageOrEmbedContent != null && <Text variant="text-sm/normal" color="text-default" style={styles.messageContent} lineClamp={3} ellipsizeMode="tail">
{MarkupUtils.parse(firstMessageOrEmbedContent, true, {
guildId: stateFromStores.guild_id,
channelId: stateFromStores.id
})}
</Text>}
{r90 ? !r90 : <Text variant="text-sm/normal" color="text-default" style={styles.messageContent} lineClamp={3} ellipsizeMode="tail">
{MarkupUtils.parse(description, true, {
guildId: stateFromStores.guild_id,
channelId: stateFromStores.id
})}
</Text>}
</View>, icon != null ? resourceChannelIconURL != null ? <Image2 source={{
uri: resourceChannelIconURL
}} style={styles.icon} /> : null : null, ,];
const r136 = resourceChannelIconURL != null;
let r137 = null;
if (!r136) {
const r138 = r52 == null;
r137 = null;
if (!r138) {
const blocked = r52?.blocked;
r137 = null;
if (!blocked) {
const r141 = media == null;
r137 = null;
if (!r141) {
if (shouldObscure == null) {
shouldObscure = false;
}
r137 = <ForumPostMediaThumbnail channel={stateFromStores} media={media} isEmbed={firstMediaIsEmbed} embedLeftBorderColor={getEmbedColor(r52, shouldObscure)} firstMessageId={r52?.id} containerStyle={styles.thumbnail} />;
}
}
}
}
r128[2] = r137;
return <PressableOpacity onPress={callback} style={styles.channelContainer}>{r128}</PressableOpacity>;
}
return null;
};
useStyles = createStyles({
container: {
paddingHorizontal: 12,
display: "flex",
flexDirection: "column",
alignItems: "center"
},
emptyStateContainer: {
padding: 20,
display: "flex",
flexDirection: "column",
alignItems: "center"
},
channelContainer: {
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW,
marginBottom: 8,
padding: 12,
borderRadius: Module712.radii.sm,
display: "flex",
flexDirection: "row",
alignItems: "flex-start"
},
messageContent: {
marginTop: 8
},
textContent: {
flex: 1
},
thumbnail: {
marginLeft: 8
},
emptyStateImage: {
marginTop: 12,
marginBottom: 20
},
icon: {
width: 72,
height: 72
}
});
export default function GuildHomeResources(props) {
const guildId = props.guildId;
const styles = useStyles();
const resourceChannels = useResourceChannels(guildId);
return resourceChannels.length === 0 ? <View style={styles.emptyStateContainer}>
<Text variant="heading-xl/bold" color="mobile-text-heading-primary">
{intl.string(t.owvC9U)}
</Text>
<Image2 style={styles.emptyStateImage} source={Module15437} />
<Button onPress={function onPress() {
const defaultChannel = GuildChannelStore.getDefaultChannel(guildId);
if (defaultChannel != null) {
transitionTo(Routes.CHANNEL(guildId, defaultChannel.id));
}
}} text={intl.string(t["3iCBUn"])} />
</View> : <View style={styles.container}>
{resourceChannels.map((resourceChannel) => <ResourceChannelRow key={`resource-${resourceChannel.channelId}`} channelId={resourceChannel.channelId} title={resourceChannel.title} icon={resourceChannel.icon} description={resourceChannel.description} />)}
</View>;
};
@@ -0,0 +1,284 @@
// Metro module 16188 (f16189).
import _slicedToArray from "../../../_bundle/_slicedToArray";
import ImpersonateStore from "../../impersonate/ImpersonateStore";
import AuthenticationStore from "../../../stores/AuthenticationStore";
import ChannelStore from "../../../stores/ChannelStore";
import GuildMemberStore from "../../../stores/GuildMemberStore";
import GuildStore from "../../../stores/GuildStore";
import SelectedGuildStore from "../../../stores/SelectedGuildStore";
import GuildOnboardingHomeSettingsStore from "../GuildOnboardingHomeSettingsStore";
import GuildOnboardingMemberActionStore from "../GuildOnboardingMemberActionStore";
import { GuildMemberFlags } from "../../guild_member/GuildMemberConstants";
import AutomaticLifecycleManager from "../../../lib/AutomaticLifecycleManager";
import * as _Module1384 from "../../../_bundle/Module1384";
import ModalActionCreators from "../../../actions/ModalActionCreators";
import { NEW_MEMBER_ACTION_COMPLETE_MODAL_KEY, NewMemberActionTypes } from "../GuildOnboardingHomeTypes";
import { ModalAnimation } from "../../../ConstantsIOS";
import { completeNewMemberAction, fetchGuildHomeSettings, fetchNewMemberActions } from "../GuildOnboardingHomeActionCreators";
import * as _OnboardingHomeUtils from "../OnboardingHomeUtils";
import { getIsNewMember } from "../useIsNewMember";
function $mk118530($env) {
return (a0) => a0.channelId === $env[1];
}
function $mk118531($env) {
return (a0) => a0.channelId === $env[1];
}
class GuildOnboardingHomeManager extends AutomaticLifecycleManager {
constructor() {
let c22855_0, c22855_1;
let c22856_0, c22856_1;
let c22857_0, c22857_1;
let c22858_0;
let c22859_0;
super(...arguments);
const _this = this;
this.onboardingCompleteGuilds = new Set();
this.actions = {
POST_CONNECTION_OPEN: () => _this.handlePostConnectionOpen(),
GUILD_MEMBER_UPDATE: (a0) => _this.handleGuildMemberUpdate(a0),
GUILD_DELETE: (a0) => _this.handleGuildDelete(a0),
CHANNEL_SELECT: (a0) => _this.handleChannelSelect(a0),
MESSAGE_CREATE: (a0) => _this.handleMessageSend(a0),
THREAD_CREATE: (a0) => _this.handleThreadCreate(a0)
};
this.handlePostConnectionOpen = () => {
const guilds = GuildStore.getGuilds();
for (const key in guilds) {
let r23 = GuildMemberStore.getSelfMember(key)?.flags;
if (r23 == null) {
r23 = 0;
}
if (_Module1384.hasFlag(r23, GuildMemberFlags.COMPLETED_HOME_ACTIONS)) {
_this.onboardingCompleteGuilds.add(key);
}
}
const guildId = SelectedGuildStore.getGuildId();
if (guildId != null) {
_this._getOrLoadOnboardingMemberActions(guildId);
}
};
this.handleGuildMemberUpdate = (a0) => {
let flags2 = a0.flags;
const { user, guildId } = a0;
if (user.id === AuthenticationStore.getId()) {
if (!_this.onboardingCompleteGuilds.has(guildId)) {
if (flags2 == null) {
flags2 = 0;
}
if (_Module1384.hasFlag(flags2, GuildMemberFlags.COMPLETED_HOME_ACTIONS)) {
_this.onboardingCompleteGuilds.add(guildId);
let numActions = GuildOnboardingHomeSettingsStore.getNewMemberActions(guildId)?.length;
if (numActions == null) {
numActions = 0;
}
if (numActions === 0) {
return void 0;
}
ModalActionCreators.pushLazy(import("./NewMemberActionsCompletedModal"), {
initialPercent: (numActions - 1) / numActions,
numActions
}, NEW_MEMBER_ACTION_COMPLETE_MODAL_KEY, {
animation: ModalAnimation.FADE
});
}
}
}
};
this.handleGuildDelete = (a0) => {
_this.onboardingCompleteGuilds.delete(a0.guild.id);
};
c22855_0 = void 0;
c22855_1 = this;
c22855_0 = async (c30981_0) => {
let c30981_2;
let env31793;
c30981_2 = void 0;
const r9 = env31793 = {};
let c30981_1 = r9;
env31793[0] = void 0;
env31793[1] = void 0;
env31793[0] = c30981_0.guildId;
env31793[1] = c30981_0.channelId;
env31793[2] = void 0;
env31793[3] = void 0;
env31793[4] = void 0;
env31793[5] = void 0;
await void 0;
if (env31793[0] != null && env31793[1] != null) {
env31793[2] = await c22855_1._getOrLoadOnboardingMemberActions(env31793[0]);
env31793[3] = env31793[2].memberActions;
env31793[4] = env31793[2].completedActions;
const r13 = env31793[3];
env31793[5] = r13 == null ? void 0 : r13.find($mk118530(c30981_1));
const r12 = env31793[4];
if ((r12 == null ? void 0 : r12[env31793[1]]) !== true && env31793[5] != null && env31793[5].actionType === NewMemberActionTypes.VIEW) {
completeNewMemberAction(env31793[0], env31793[1]);
}
}
};
this.handleChannelSelect = function() {
return c22855_0.apply(this, arguments);
};
this.handleMessageSend = ({ guildId, channelId, message }) => {
if (guildId != null && channelId != null) {
if (message.author?.id === AuthenticationStore.getId()) {
const channel = ChannelStore.getChannel(channelId);
if ((channel == null ? void 0 : channel.isForumPost()) && channel?.parent_id != null) {
_this._completeChatAction(guildId, channel.parent_id);
}
_this._completeChatAction(guildId, channelId);
}
}
};
this.handleThreadCreate = (a0) => {
const channel = a0.channel;
let r6 = a0.isNewlyCreated && channel.parent_id != null;
if (r6) {
const channel2 = ChannelStore.getChannel(channel.parent_id);
r6 = channel2 == null ? void 0 : channel2.isForumLikeChannel();
}
if (r6) {
r6 = channel.ownerId === AuthenticationStore.getId();
}
if (r6) {
_this._completeChatAction(channel.guild_id, channel.parent_id);
}
};
c22856_0 = void 0;
c22856_1 = this;
c22856_0 = async (c30982_0, c30982_1) => {
let c30982_3;
let env31794;
c30982_3 = void 0;
const r11 = env31794 = {};
let c30982_2 = r11;
env31794[0] = c30982_0;
env31794[1] = c30982_1;
env31794[2] = void 0;
env31794[3] = void 0;
env31794[4] = void 0;
env31794[5] = void 0;
env31794[2] = await c22856_1._getOrLoadOnboardingMemberActions(c30982_0);
env31794[3] = env31794[2].memberActions;
env31794[4] = env31794[2].completedActions;
const r12 = env31794[3];
env31794[5] = r12 == null ? void 0 : r12.find($mk118531(c30982_2));
const r51 = env31794[4];
if ((r51 == null ? void 0 : r51[env31794[1]]) !== true && env31794[5] != null && env31794[5].actionType === NewMemberActionTypes.CHAT) {
completeNewMemberAction(env31794[0], env31794[1]);
}
};
this._completeChatAction = function() {
return c22856_0.apply(this, arguments);
};
c22857_0 = void 0;
c22857_1 = this;
c22857_0 = async (c30983_0) => {
let r78;
let c30983_2;
let c31795_0, c31795_1;
L17: {
L16: {
L10: {
c30983_2 = void 0;
c31795_0 = void 0;
c31795_1 = void 0;
const canSeeOnboardingHome = _OnboardingHomeUtils.canSeeOnboardingHome(c30983_0);
const isFullServerPreview = ImpersonateStore.isFullServerPreview(c30983_0);
if (!canSeeOnboardingHome && !isFullServerPreview) {
break L10;
}
const selfMember = GuildMemberStore.getSelfMember(c30983_0);
if (selfMember == null) {
break L17;
}
if (!getIsNewMember(c30983_0)) {
break L17;
}
const r45 = Promise;
c31795_0 = await r45.all([c22857_1._getOrLoadOnboardingHomeSettings(c30983_0), c22857_1._getOrLoadMemberActions(c30983_0, selfMember)]);
c31795_1 = (0, _slicedToArray)(c31795_0, 2);
r78 = {
memberActions: c31795_1[0],
completedActions: c31795_1[1]
};
break L16;
}
return {};
}
return r78;
}
return {};
};
this._getOrLoadOnboardingMemberActions = function() {
return c22857_0.apply(this, arguments);
};
c22858_0 = void 0;
c22858_0 = async (c30984_0) => {
let r57, newMemberActions;
let c31796_0;
L16: {
L15: {
c31796_0 = void 0;
newMemberActions = GuildOnboardingHomeSettingsStore.getNewMemberActions(c30984_0);
const isLoading = GuildOnboardingHomeSettingsStore.getIsLoading(c30984_0);
if (newMemberActions != null) {
break L16;
}
if (isLoading) {
break L16;
}
if (!getIsNewMember(c30984_0)) {
break L16;
}
c31796_0 = await fetchGuildHomeSettings(c30984_0);
const r54 = c31796_0;
const r56 = r54 == null;
r57 = void 0;
if (r56) {
break L15;
}
r57 = r54.newMemberActions;
}
return r57;
}
return newMemberActions;
};
this._getOrLoadOnboardingHomeSettings = function() {
return c22858_0.apply(this, arguments);
};
c22859_0 = void 0;
c22859_0 = async (c30985_0, c30985_1) => {
let r8;
let flags;
L15: {
const state = GuildOnboardingMemberActionStore.getState(c30985_0);
const { completedActions, loading } = state;
r8 = completedActions;
if (completedActions != null) {
break L15;
}
r8 = completedActions;
if (loading) {
break L15;
}
flags = c30985_1.flags;
if (flags == null) {
flags = 0;
}
const hasFlag = _Module1384.hasFlag(flags, GuildMemberFlags.STARTED_HOME_ACTIONS);
r8 = completedActions;
if (!hasFlag) {
break L15;
}
return await fetchNewMemberActions(c30985_0);
}
return r8;
};
this._getOrLoadMemberActions = function() {
return c22859_0.apply(this, arguments);
};
}
}
const guildOnboardingHomeManager = new GuildOnboardingHomeManager();
export default guildOnboardingHomeManager;
@@ -0,0 +1,90 @@
// Metro module 15420 (f15421).
import { useEffect } from "react";
import ExperimentStore from "../../experiments/ExperimentStore";
import GuildOnboardingHomeSettingsStore, { NO_SETTINGS } from "../GuildOnboardingHomeSettingsStore";
import GuildOnboardingMemberActionStore from "../GuildOnboardingMemberActionStore";
import { AnalyticEvents } from "../../../Constants";
import { useSharedValue } from "../../reanimated/ReanimatedRexport";
import { useStateFromStores } from "../../../_bundle/Module589";
import useIsNewMember from "../useIsNewMember";
import { fetchGuildHomeSettings } from "../GuildOnboardingHomeActionCreators";
import AnalyticsUtils from "../../../utils/AnalyticsUtils";
import { collectGuildAnalyticsMetadata } from "../../app_analytics/AppAnalyticsUtils";
import GuildActionCreators from "../../../actions/GuildActionCreators";
import OnboardingHomeScrollView from "./OnboardingHomeScrollView";
import GuildFeedBanner from "../../guild_home/native/components/GuildFeedBanner";
import ResourcesRow from "./ResourcesRow";
import HomeWelcomeMessage from "./HomeWelcomeMessage";
import GuildOnboardingNewMemberActions from "./GuildOnboardingNewMemberActions";
import GuildHomeResources from "./GuildHomeResources";
import { useCanSeeOnboardingHome } from "../OnboardingHomeUtils";
const GuildOnboardingHomePage = function GuildOnboardingHomePage(props) {
let c21981_2;
const guildId = props.guildId;
c21981_2 = void 0;
const sharedValue = useSharedValue(-999);
const stateFromStores = useStateFromStores([GuildOnboardingHomeSettingsStore], () => GuildOnboardingHomeSettingsStore.getSettings(guildId));
const isNewMember = useIsNewMember(guildId);
let r2 = !isNewMember;
if (!isNewMember) {
let r30 = stateFromStores == null ? void 0 : stateFromStores.resourceChannels?.length;
if (r30 == null) {
r30 = 0;
}
r2 = r30 === 0;
}
c21981_2 = r2;
useEffect(() => {
if (stateFromStores === NO_SETTINGS) {
fetchGuildHomeSettings(guildId);
} else if (stateFromStores != null) {
const SERVER_GUIDE_VIEWED = AnalyticEvents.SERVER_GUIDE_VIEWED;
const r21 = {
...collectGuildAnalyticsMetadata(guildId)
};
let num_member_actions = stateFromStores.newMemberActions?.length;
if (num_member_actions == null) {
num_member_actions = 0;
}
r21.num_member_actions = num_member_actions;
const r13 = Object;
let r31 = GuildOnboardingMemberActionStore.getCompletedActions(guildId);
if (r31 == null) {
r31 = {};
}
r21.num_member_actions_completed = r13.keys(r31).length;
let num_resource_channels = stateFromStores.resourceChannels?.length;
if (num_resource_channels == null) {
num_resource_channels = 0;
}
r21.num_resource_channels = num_resource_channels;
AnalyticsUtils.track(SERVER_GUIDE_VIEWED, r21);
}
}, [guildId, stateFromStores, r2]);
useEffect(() => {
if (c21981_2 && stateFromStores !== NO_SETTINGS) {
GuildActionCreators.escapeToDefaultChannel(guildId);
}
}, [guildId, r2, stateFromStores]);
return r2 ? null : <OnboardingHomeScrollView guildId={guildId} scrollValue={sharedValue}>
<GuildFeedBanner guildId={guildId} hideDescription={isNewMember} />
{isNewMember ? <>
<ResourcesRow guildId={guildId} />
<HomeWelcomeMessage guildId={guildId} />
<GuildOnboardingNewMemberActions guildId={guildId} />
</> : <GuildHomeResources guildId={guildId} />}
</OnboardingHomeScrollView>;
};
export default function GuildOnboardingHomePageGuard(props) {
let canSeeOnboardingHome;
const guildId2 = props.guildId;
canSeeOnboardingHome = void 0;
const stateFromStores2 = useStateFromStores([ExperimentStore], () => ExperimentStore.hasLoadedExperiments);
canSeeOnboardingHome = useCanSeeOnboardingHome(guildId2);
useEffect(() => {
if (stateFromStores2 && !canSeeOnboardingHome) {
GuildActionCreators.escapeToDefaultChannel(guildId2);
}
}, [guildId2, stateFromStores2, canSeeOnboardingHome]);
return <GuildOnboardingHomePage guildId={guildId2} />;
};
@@ -0,0 +1,196 @@
// Metro module 15432 (f15433).
import { useCallback, useEffect } from "react";
import { View } from "react-native";
import EmojiStore from "../../emojis/EmojiStore";
import ChannelStore from "../../../stores/ChannelStore";
import GuildMemberStore from "../../../stores/GuildMemberStore";
import GuildStore from "../../../stores/GuildStore";
import PermissionStore from "../../../stores/PermissionStore";
import GuildOnboardingHomeSettingsStore from "../GuildOnboardingHomeSettingsStore";
import GuildOnboardingMemberActionStore from "../GuildOnboardingMemberActionStore";
import { Permissions } from "../../../Constants";
import { EMOJI_URL_BASE_SIZE } from "../../emojis/EmojiConstants";
import { GuildMemberFlags } from "../../guild_member/GuildMemberConstants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import { useStateFromStores } from "../../../_bundle/Module589";
import useChannelName from "../../channel/useChannelName";
import AvatarUtils from "../../../utils/AvatarUtils";
import { selectNewMemberActionChannel, fetchNewMemberActions } from "../GuildOnboardingHomeActionCreators";
import FastImage from "../../../components_native/common/FastImage";
import UnicodeEmojis from "../../emojis/UnicodeEmojis";
import { Text } from "../../../design/components/Text/native/Text";
import { Icon } from "../../../design/void/native";
import Module10990 from "../../../_bundle/Module10990";
import { PressableOpacity } from "../../../design/void/Pressables/native/Pressables";
import { intl, t } from "../../../intl/index.native";
import Module11442 from "../../../_bundle/Module11442";
import Module15433 from "../../../_bundle/Module15433";
import { hasFlag } from "../../../_bundle/Module1384";
import Module15434 from "../../../_bundle/Module15434";
let useStyles;
const MemberActionRow = function MemberActionRow(props) {
let r82;
const { channelId, title } = props;
let emoji = props.emoji;
const { icon, completed } = props;
const styles = useStyles();
if (emoji == null) {
emoji = {};
}
const { id, name } = emoji;
const stateFromStores = useStateFromStores([ChannelStore], () => ChannelStore.getChannel(channelId));
const channelName = useChannelName(stateFromStores, true);
const stateFromStores6 = useStateFromStores([PermissionStore], () => PermissionStore.can(Permissions.VIEW_CHANNEL, stateFromStores));
const stateFromStores5 = useStateFromStores([EmojiStore], () => id != null ? EmojiStore.getCustomEmojiById(id) : null, [id]);
const newMemberActionIconURL = AvatarUtils.getNewMemberActionIconURL({
channelId,
icon
});
const callback = useCallback(() => {
if (stateFromStores != null) {
selectNewMemberActionChannel(stateFromStores.guild_id, stateFromStores.id);
}
}, [stateFromStores]);
const r55 = stateFromStores != null;
let r56 = null;
if (r55) {
r56 = null;
if (stateFromStores6) {
L14: {
if (newMemberActionIconURL != null) {
r82 = <FastImage style={styles.icon} source={{
uri: newMemberActionIconURL
}} resizeMode="contain" />;
} else if (stateFromStores5 != null) {
r82 = <FastImage style={styles.emoji} source={{
uri: AvatarUtils.getEmojiURL({
id: stateFromStores5.id,
animated: stateFromStores5.animated,
size: EMOJI_URL_BASE_SIZE
})
}} resizeMode="contain" />;
} else {
if (name != null && UnicodeEmojis.getByName(UnicodeEmojis.convertSurrogateToName(name, false)) != null) {
r82 = <Text style={styles.textEmoji} variant="heading-xxl/normal">{name}</Text>;
break L14;
}
r82 = <View style={styles.emojiPlaceholder}>
<Icon size={Icon.Sizes.REFRESH_SMALL_16} source={Module10990} />
</View>;
}
}
r56 = <PressableOpacity onPress={callback} style={styles.actionContainer}>
{r82}
<View style={styles.channelNameContainer}>
<Text variant="text-md/semibold" color="mobile-text-heading-primary">{title}</Text>
<Text variant="text-xs/normal" color="text-muted">
{intl.format(t.MkzlDL, {
channelName
})}
</Text>
</View>
<Icon disableColor size={Icon.Sizes.MEDIUM} source={completed ? Module11442 : Module15433} />
</PressableOpacity>;
}
}
return r56;
};
useStyles = createStyles({
actionsContainer: {
paddingHorizontal: 12
},
actionsHeader: {
display: "flex",
marginBottom: 16
},
actionContainer: {
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW,
marginBottom: 8,
padding: 12,
borderRadius: Module712.radii.sm,
display: "flex",
flexDirection: "row",
alignItems: "center"
},
channelNameContainer: {
flex: 1,
marginHorizontal: 8
},
icon: {
width: 40,
height: 40,
borderRadius: Module712.radii.xs
},
emoji: {
width: 40,
height: 40
},
textEmoji: {
width: 40,
textAlign: "center"
},
emojiPlaceholder: {
width: 40,
height: 40,
backgroundColor: Module712.colors.BACKGROUND_BASE_LOWEST,
borderRadius: 20,
display: "flex",
alignItems: "center",
justifyContent: "center"
}
});
export default function GuildOnboardingNewMemberActions(props) {
let stateFromStores2, stateFromStores3, stateFromStores4;
const guildId = props.guildId;
stateFromStores2 = void 0;
stateFromStores3 = void 0;
stateFromStores4 = void 0;
const styles = useStyles();
const stateFromStores5 = useStateFromStores([GuildOnboardingHomeSettingsStore], () => GuildOnboardingHomeSettingsStore.getNewMemberActions(guildId), [guildId]);
stateFromStores2 = useStateFromStores([GuildOnboardingMemberActionStore], () => GuildOnboardingMemberActionStore.getCompletedActions(guildId));
stateFromStores3 = useStateFromStores([GuildMemberStore], () => GuildMemberStore.getSelfMember(guildId));
stateFromStores4 = useStateFromStores([GuildStore], () => GuildStore.getGuild(guildId));
useEffect(() => {
let r9 = stateFromStores2 == null && stateFromStores3?.flags != null;
if (r9) {
let flags = stateFromStores3.flags;
if (flags == null) {
flags = 0;
}
r9 = hasFlag(flags, GuildMemberFlags.STARTED_HOME_ACTIONS);
}
if (r9) {
fetchNewMemberActions(guildId);
}
}, [stateFromStores2, guildId, stateFromStores3?.flags]);
const callback = useCallback(() => {
if (stateFromStores4 != null && stateFromStores4?.rulesChannelId != null) {
selectNewMemberActionChannel(stateFromStores4.id, stateFromStores4.rulesChannelId);
}
}, [stateFromStores4]);
return stateFromStores3 == null ? null : stateFromStores5 == null ? null : stateFromStores5.length !== 0 ? <View style={styles.actionsContainer}>
<View style={styles.actionsHeader}>
<Text variant="heading-lg/bold" color="mobile-text-heading-primary">
{intl.string(t.LhlgY9)}
</Text>
</View>
{stateFromStores5.map((item) => {
let completed = stateFromStores2 == null ? void 0 : stateFromStores2[item.channelId];
if (completed == null) {
completed = false;
}
return <MemberActionRow key={`member-action-${item.channelId}`} channelId={item.channelId} title={item.title} emoji={item.emoji} icon={item.icon} completed={completed} />;
})}
{stateFromStores4?.rulesChannelId != null && <PressableOpacity onPress={callback} style={styles.actionContainer}>
<View style={styles.emojiPlaceholder}>
<Icon size={Icon.Sizes.REFRESH_SMALL_16} source={Module15434} />
</View>
<View style={styles.channelNameContainer}>
<Text variant="text-md/semibold" color="mobile-text-heading-primary">
{intl.string(t["K/i3iQ"])}
</Text>
</View>
</PressableOpacity>}
</View> : null;
};
@@ -0,0 +1,161 @@
// Metro module 15431 (f15432).
import { useEffect } from "react";
import { View } from "react-native";
import GuildStore from "../../../stores/GuildStore";
import UserStore from "../../../stores/UserStore";
import GuildOnboardingHomeSettingsStore from "../GuildOnboardingHomeSettingsStore";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import { useStateFromStores } from "../../../_bundle/defaultAreStatesEqual";
import useDisplayProfile from "../../user_profile/hooks/useDisplayProfile";
import useProfileTheme from "../../user_profile/hooks/useProfileTheme";
import { useSubscribeGuildMembers } from "../../../lib/guild/subscribeGuildMembers";
import maybeFetchUserProfile from "../../user_profile/maybeFetchUserProfile";
import { useName } from "../../../utils/UserUtils";
import { ThemeContextProvider } from "../../../_bundle/Module3901";
import { int2rgba } from "../../../_bundle/int2hslRaw";
import HeaderAvatar from "../../profile_customization/native/HeaderAvatar";
import { AvatarSizes, Icon } from "../../../design/void/native";
import UserProfileGradientContainer from "../../user_profile/native/UserProfileGradientContainer";
import { Text } from "../../../design/components/Text/native/Text";
import NicknameUtils from "../../../utils/NicknameUtils";
import Module8287 from "../../../_bundle/Module8287";
const useStyles = createStyles({
relativeContainer: {
position: "relative"
},
welcomeContainer: {
marginHorizontal: 12,
marginVertical: 16,
borderRadius: Module712.radii.sm,
padding: 2,
display: "flex",
flexDirection: "column"
},
welcomeContent: {
borderRadius: Module712.radii.sm,
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW,
paddingHorizontal: 12,
paddingBottom: 12,
paddingTop: 4
},
avatarBackground: {
position: "absolute",
zIndex: 2,
top: 0,
left: 28,
width: 40,
height: 40,
borderRadius: Module712.radii.round,
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW
},
avatarBorder: {
position: "absolute",
top: -2,
zIndex: -1,
left: 26,
width: 44,
height: 44,
borderRadius: Module712.radii.round
},
avatar: {
position: "absolute",
top: 0,
zIndex: 3,
left: 28
},
adminUsernameContainer: {
display: "flex",
flexDirection: "row",
alignItems: "center",
marginBottom: 4,
paddingLeft: 44
},
adminUsername: {
color: Module712.colors.MOBILE_TEXT_HEADING_PRIMARY,
paddingLeft: 8
},
message: {
color: Module712.colors.TEXT_DEFAULT
},
icon: {
marginLeft: 4
}
});
export default function HomeWelcomeMessage(props) {
let stateFromStores, stateFromStores2, stateFromStores3;
const guildId = props.guildId;
stateFromStores = void 0;
stateFromStores2 = void 0;
stateFromStores3 = void 0;
const styles = useStyles();
const stateFromStores4 = useStateFromStores([UserStore], () => UserStore.getCurrentUser());
stateFromStores = useStateFromStores([GuildOnboardingHomeSettingsStore], () => GuildOnboardingHomeSettingsStore.getWelcomeMessage(guildId));
stateFromStores2 = useStateFromStores([UserStore], () => UserStore.getUser(stateFromStores == null ? void 0 : stateFromStores.authorIds[0]));
const profileTheme = useProfileTheme({
user: stateFromStores2,
displayProfile: useDisplayProfile(stateFromStores2?.id, guildId)
});
const { theme, primaryColor, secondaryColor } = profileTheme;
stateFromStores3 = useStateFromStores([GuildStore], () => GuildStore.getGuild(guildId));
let r72 = stateFromStores?.authorIds;
if (r72 == null) {
r72 = [];
}
const r73 = {};
r73[guildId] = r72;
useSubscribeGuildMembers(r73, "HomeWelcomeMessage");
useEffect(() => {
if (!(stateFromStores2 == null || stateFromStores2.isNonUserBot())) {
maybeFetchUserProfile(stateFromStores2.id, stateFromStores2.getAvatarURL(stateFromStores3?.id, 80), {
dispatchWait: true,
guildId: stateFromStores3?.id
});
}
}, [stateFromStores2, stateFromStores3]);
const name = useName(stateFromStores4);
if (stateFromStores != null && stateFromStores4 != null && stateFromStores2 != null) {
const r84 = stateFromStores3 != null && stateFromStores3.ownerId === stateFromStores2.id;
const fallbackBackground = ["#B8CDFF", "#8CD9FF"];
const r102 = [stateFromStores2.avatarDecoration == null ? <View style={[styles.avatarBorder, {
backgroundColor: primaryColor != null ? int2rgba(primaryColor, 1) : fallbackBackground[0]
}]} /> : null, <View style={styles.avatarBackground} />, <HeaderAvatar style={styles.avatar} user={stateFromStores2} size={AvatarSizes.NORMAL} disableStatus />, ,];
const r147 = [<View style={styles.adminUsernameContainer}>
<Text style={styles.adminUsername} variant="text-md/semibold">
{NicknameUtils.getName(guildId, null, stateFromStores2)}
</Text>
{r84 ? <Icon size={Icon.Sizes.REFRESH_SMALL_16} style={styles.icon} source={Module8287} disableColor /> : null}
</View>, ,];
const message = stateFromStores.message;
let r152 = name;
if (r152 == null) {
r152 = stateFromStores4.username;
}
const r155 = message.split(/\[@username\]/g);
const r156 = [];
const r2 = r155.length - 1;
let key = 0;
if (0 < r2) {
do {
r156.push(<Text key={key} variant="text-sm/normal" style={styles.message}>
{r155[key]}
</Text>);
r156.push(<Text key={`${key}-user`} variant="text-sm/bold" style={styles.message}>
{`@${r152}`}
</Text>);
key = key + 1;
} while (key < r155.length - 1);
}
r156.push(<Text key={r155.length} variant="text-sm/normal" style={styles.message}>
{r155[r155.length - 1]}
</Text>);
r147[1] = <Text variant="text-sm/normal">{r156}</Text>;
r102[3] = <UserProfileGradientContainer containerStyle={styles.welcomeContainer} primaryColor={primaryColor} secondaryColor={secondaryColor} fallbackBackground={fallbackBackground}>
<View style={styles.welcomeContent}>{r147}</View>
</UserProfileGradientContainer>;
return <ThemeContextProvider theme={theme} primaryColor={primaryColor} secondaryColor={secondaryColor}>
<View style={styles.relativeContainer}>{r102}</View>
</ThemeContextProvider>;
}
return null;
};
@@ -0,0 +1,313 @@
// Metro module 11440 (f11441).
import { useState, useEffect, useCallback, memo } from "react";
import { View } from "react-native";
import AccessibilityStore from "../../a11y/AccessibilityStore";
import EmojiStore from "../../emojis/EmojiStore";
import ChannelStore from "../../../stores/ChannelStore";
import GuildMemberStore from "../../../stores/GuildMemberStore";
import { Routes } from "../../../Constants";
import { EMOJI_URL_BASE_SIZE } from "../../emojis/EmojiConstants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import { useStateFromStores } from "../../../_bundle/defaultAreStatesEqual";
import useChannelName from "../../channel/useChannelName";
import { Text } from "../../../design/components/Text/native/Text";
import { intl, t } from "../../../intl/index.native";
import * as _native from "../../../design/void/native";
import { Icon } from "../../../design/void/native";
import Module10990 from "../../../_bundle/Module10990";
import FastImage from "../../../components_native/common/FastImage";
import AvatarUtils from "../../../utils/AvatarUtils";
import UnicodeEmojis from "../../emojis/UnicodeEmojis";
import { useMemberActionsForChannel, useNextMemberAction, useAllActionsCompleted } from "../MemberActionUtils";
import { NewMemberActionTypes, CHANNEL_ACTION_BANNER_HEIGHT } from "../GuildOnboardingHomeTypes";
import * as _ReanimatedRexport from "../../reanimated/ReanimatedRexport";
import ReanimatedRexport, { useSharedValue, useAnimatedStyle } from "../../reanimated/ReanimatedRexport";
import * as _timing from "../../../design/animation/reanimated/timing/timing";
import Module11442 from "../../../_bundle/Module11442";
import { PressableHighlight } from "../../../design/void/Pressables/native/Pressables";
import { transitionTo } from "../../routing/router_utils";
import Module6684 from "../../../_bundle/Module6684";
import { useCanSeeOnboardingHome } from "../OnboardingHomeUtils";
let useStyles, ChannelActionEmoji, __initData, __initData2, MemberActionChatInputBanner, Component;
const ActionChannelInfo = function ActionChannelInfo(props) {
const action = props.action;
const stateFromStores2 = useStateFromStores([ChannelStore], () => ChannelStore.getChannel(action.channelId));
const channelName = useChannelName(stateFromStores2, true);
return <Text {...stateFromStores2 == null ? {
variant: "text-xxs/normal",
color: "text-default",
children: intl.format(t.MkzlDL, {
channelName: intl.string(t.J90oLW)
})
} : {
variant: "text-xxs/normal",
color: "text-default",
children: intl.format(t.MkzlDL, {
channelName
})
}} />;
};
ChannelActionEmoji = function ChannelActionEmoji(props) {
const emoji = props.emoji;
const styles2 = useStyles();
const r29 = <View style={styles2.emojiPlaceholder}>
<Icon size={Icon.Sizes.REFRESH_SMALL_16} source={Module10990} />
</View>;
const id = emoji?.id;
const name = emoji?.name;
const stateFromStores2 = useStateFromStores([EmojiStore], () => id != null ? EmojiStore.getCustomEmojiById(id) : null, [id]);
return stateFromStores2 != null ? <FastImage style={styles2.emoji} source={{
uri: AvatarUtils.getEmojiURL({
id: stateFromStores2.id,
animated: stateFromStores2.animated,
size: EMOJI_URL_BASE_SIZE
})
}} resizeMode="contain" /> : name != null ? UnicodeEmojis.getByName(UnicodeEmojis.convertSurrogateToName(name, false)) != null ? <Text style={styles2.textEmoji} variant="heading-lg/normal">{name}</Text> : r29 : r29;
};
MemberActionChatInputBanner = function MemberActionChatInputBanner(props) {
let c18841_6, state, setState, state2, setState2, sharedValue, sharedValue2;
const channel = props.channel;
c18841_6 = void 0;
state = void 0;
setState = void 0;
state2 = void 0;
setState2 = void 0;
sharedValue = void 0;
sharedValue2 = void 0;
const styles = useStyles();
const memberActionsForChannel = useMemberActionsForChannel(channel.guild_id, channel);
const { channelAction, completed } = memberActionsForChannel;
const nextMemberAction = useNextMemberAction(channel.guild_id, channelAction?.channelId);
const stateFromStores = useStateFromStores([AccessibilityStore], () => AccessibilityStore.useReducedMotion);
const isViewAction = channelAction?.actionType === NewMemberActionTypes.VIEW;
c18841_6 = isViewAction;
[state, setState] = useState(CHANNEL_ACTION_BANNER_HEIGHT);
[state2, setState2] = useState(CHANNEL_ACTION_BANNER_HEIGHT);
sharedValue = useSharedValue(0);
sharedValue2 = useSharedValue(completed ? state2 : 0);
useEffect(() => {
if (!completed && !c18841_6) {
sharedValue.set(state);
} else {
sharedValue.set(0);
}
}, [sharedValue, completed, isViewAction, state]);
useEffect(() => {
if (completed && nextMemberAction != null) {
sharedValue2.set(state2);
} else {
sharedValue2.set(0);
}
}, [sharedValue2, completed, nextMemberAction, state2]);
const G = function G() {
let r25;
const r4 = {
height: null
};
if (stateFromStores) {
r4.height = sharedValue.get();
r25 = r4;
} else {
r4.height = _ReanimatedRexport.withDelay(completed ? 800 : 200, _timing.withTiming(sharedValue.get(), {
duration: 400,
easing: _native.DECELERATED_EASING
}));
r25 = r4;
}
return r25;
};
G.__closure = {
useReducedMotion: stateFromStores,
height: sharedValue,
withDelay: _ReanimatedRexport.withDelay,
completed,
withTiming: _timing.withTiming,
DECELERATED_EASING: _native.DECELERATED_EASING
};
G.__workletHash = 5585837927201;
G.__initData = __initData;
const animatedStyle = useAnimatedStyle(G);
const B = function B() {
let r26;
const r5 = {
height: null
};
if (stateFromStores) {
r5.height = sharedValue2.get();
r26 = r5;
} else {
r5.height = _ReanimatedRexport.withDelay(c18841_6 ? 0 : completed ? 1200 : 0, _timing.withTiming(sharedValue2.get(), {
duration: 400,
easing: _native.DECELERATED_EASING
}));
r26 = r5;
}
return r26;
};
B.__closure = {
useReducedMotion: stateFromStores,
nextHeight: sharedValue2,
withDelay: _ReanimatedRexport.withDelay,
isViewAction,
completed,
withTiming: _timing.withTiming,
DECELERATED_EASING: _native.DECELERATED_EASING
};
B.__workletHash = 10256555667281;
B.__initData = __initData2;
const animatedStyle2 = useAnimatedStyle(B);
const callback = useCallback((a0) => {
setState(a0.nativeEvent.layout.height);
}, [setState]);
const callback2 = useCallback((a0) => {
setState2(a0.nativeEvent.layout.height);
}, [setState2]);
if (channelAction == null) {
return null;
}
const renderAction = function renderAction() {
let r1 = null;
if (channelAction != null) {
const r21 = [<ChannelActionEmoji emoji={channelAction.emoji} />, <View style={styles.text}>
<Text variant="text-sm/medium" color="mobile-text-heading-primary" style={styles.wrap}>{channelAction.title}</Text>
<Text variant="text-xxs/normal" color="text-muted">
{intl.string(t["ElGg8+"])}
</Text>
</View>, ,];
let r44 = completed;
if (completed) {
r44 = <Icon disableColor size={Icon.Sizes.MEDIUM} source={Module11442} />;
}
r21[2] = r44;
r1 = <View style={styles.container}>{r21}</View>;
}
return r1;
};
const r127 = [<View style={styles.measurement} onLayout={callback}>
{renderAction()}
</View>, isViewAction ? !isViewAction : <ReanimatedRexport.View style={[styles.animatedContainer, animatedStyle]}>
{renderAction()}
</ReanimatedRexport.View>, ,];
let r136 = null;
if (completed) {
const r137 = nextMemberAction != null;
r136 = null;
if (r137) {
const renderNextAction = function renderNextAction() {
return nextMemberAction != null ? <PressableHighlight accessibilityRole="button" accessibilityLabel={intl.string(t.PDTjLN)} style={styles.container} onPress={() => transitionTo(Routes.CHANNEL(channel.guild_id, nextMemberAction.channelId))}>
<ChannelActionEmoji emoji={nextMemberAction.emoji} />
<View style={styles.text}>
<Text variant="text-sm/medium" color="mobile-text-heading-primary" style={styles.wrap}>
{intl.format(t["/beONw"], {
step: nextMemberAction.title
})}
</Text>
<ActionChannelInfo action={nextMemberAction} />
</View>
<View style={styles.circle}>
<Icon size={Icon.Sizes.REFRESH_SMALL_16} style={styles.icon} source={Module6684} />
</View>
</PressableHighlight> : null;
};
r136 = <>
<View style={styles.measurement} onLayout={callback2}>
{renderNextAction()}
</View>
<ReanimatedRexport.View style={[styles.animatedContainer, animatedStyle2]}>
{renderNextAction()}
</ReanimatedRexport.View>
</>;
}
}
r127[2] = r136;
return <>{r127}</>;
};
useStyles = createStyles({
animatedContainer: {
overflow: "hidden"
},
measurement: {
opacity: 0,
position: "absolute"
},
container: {
display: "flex",
flexDirection: "row",
alignItems: "center",
backgroundColor: Module712.colors.BACKGROUND_BASE_LOWEST,
paddingHorizontal: 12,
paddingVertical: 8
},
text: {
flexGrow: 1,
flexShrink: 1,
marginLeft: 8
},
wrap: {
flexShrink: 1,
flexWrap: "wrap"
},
emoji: {
width: 24,
height: 24
},
textEmoji: {
width: 24,
textAlign: "center"
},
emojiPlaceholder: {
width: 24,
height: 24,
backgroundColor: Module712.colors.BACKGROUND_SURFACE_HIGH,
borderRadius: Module712.radii.md,
display: "flex",
alignItems: "center",
justifyContent: "center"
},
circle: {
display: "flex",
alignItems: "center",
justifyContent: "center",
height: 20,
width: 20,
borderRadius: 15,
marginLeft: 8,
backgroundColor: Module712.colors.BACKGROUND_BRAND
},
icon: {
tintColor: Module712.colors.WHITE
}
});
__initData = {
code: "function MemberActionChatInputBannerTsx1(){const{useReducedMotion,height,withDelay,completed,withTiming,DECELERATED_EASING}=this.__closure;if(useReducedMotion){return{height:height.get()};}return{height:withDelay(completed?800:200,withTiming(height.get(),{duration:400,easing:DECELERATED_EASING}))};}"
};
__initData2 = {
code: "function MemberActionChatInputBannerTsx2(){const{useReducedMotion,nextHeight,withDelay,isViewAction,completed,withTiming,DECELERATED_EASING}=this.__closure;if(useReducedMotion){return{height:nextHeight.get()};}return{height:withDelay(!isViewAction&&completed?1200:0,withTiming(nextHeight.get(),{duration:400,easing:DECELERATED_EASING}))};}"
};
Component = memo(function({ channel: channel2 }) {
const canSeeOnboardingHome = useCanSeeOnboardingHome(channel2.guild_id);
const stateFromStores2 = useStateFromStores([GuildMemberStore], () => GuildMemberStore.getSelfMember(channel2.guild_id)?.isPending === true);
return useAllActionsCompleted(channel2.guild_id) ? null : stateFromStores2 ? null : canSeeOnboardingHome ? <MemberActionChatInputBanner channel={channel2} /> : null;
});
const r84 = memo(function({ channel: channel3 }) {
let r27;
const memberActionsForChannel = useMemberActionsForChannel(channel3.guild_id, channel3);
const { channelAction: channelAction2, completed: completed2 } = memberActionsForChannel;
const nextMemberAction2 = useNextMemberAction(channel3.guild_id, channelAction2?.channelId);
const actionType = channelAction2?.actionType;
L8: {
if (actionType === NewMemberActionTypes.VIEW) {
r27 = null;
if (!completed2) {
break L8;
}
r27 = nextMemberAction2 != null ? <Component channel={channel3} /> : null;
} else {
r27 = <Component channel={channel3} />;
}
}
return r27;
});
export { Component as MemberActionChatInputBannerGuarded };
export { r84 as MemberActionsChatInputBannerGuardedOuter };
@@ -0,0 +1,77 @@
// Metro module 16189 (f16190).
import { useEffect } from "react";
import { View } from "react-native";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import * as _ReanimatedRexport from "../../reanimated/ReanimatedRexport";
import ReanimatedRexport, { useSharedValue, useAnimatedStyle } from "../../reanimated/ReanimatedRexport";
import * as _timing from "../../../design/animation/reanimated/timing/timing";
import ModalActionCreators from "../../../actions/ModalActionCreators";
import { NEW_MEMBER_ACTION_COMPLETE_MODAL_KEY } from "../GuildOnboardingHomeTypes";
import { Text } from "../../../design/components/Text/native/Text";
import { intl, t } from "../../../intl/index.native";
const useStyles = createStyles({
screen: {
flex: 1,
position: "absolute",
width: "100%",
height: "100%",
backgroundColor: "rgba(0, 0, 0, 0.8)",
display: "flex",
alignItems: "center",
justifyContent: "center"
},
text: {
marginBottom: 16
},
progressBackground: {
borderRadius: Module712.radii.round,
height: 8,
backgroundColor: Module712.colors.BACKGROUND_MOD_NORMAL,
width: "60%"
},
progressForeground: {
backgroundColor: Module712.unsafe_rawColors.GREEN_330,
borderRadius: Module712.radii.round,
height: 8
}
});
const __initData = {
code: "function NewMemberActionsCompletedModalTsx1(){const{withDelay,withTiming,barWidth}=this.__closure;return{width:withDelay(500,withTiming(barWidth.get()*100+\"%\",{duration:700}))};}"
};
export default function NewMemberActionsCompleted(props) {
const { initialPercent, numActions } = props;
const styles = useStyles();
const sharedValue = useSharedValue(initialPercent);
useEffect(() => {
sharedValue.set(1);
}, [sharedValue]);
const b = function b() {
return {
width: _ReanimatedRexport.withDelay(500, _timing.withTiming(100 * sharedValue.get() + "%", {
duration: 700
}))
};
};
b.__closure = {
withDelay: _ReanimatedRexport.withDelay,
withTiming: _timing.withTiming,
barWidth: sharedValue
};
b.__workletHash = 7643178959760;
b.__initData = __initData;
const animatedStyle = useAnimatedStyle(b);
useEffect(() => {
setTimeout(() => ModalActionCreators.popWithKey(NEW_MEMBER_ACTION_COMPLETE_MODAL_KEY), 2500);
}, []);
return <View style={styles.screen}>
<Text style={styles.text} variant="heading-xl/semibold" color="text-overlay-light">
{intl.format(t.pGj5u2, {
count: numActions
})}
</Text>
<View style={styles.progressBackground}>
<ReanimatedRexport.View style={[styles.progressForeground, animatedStyle]} />
</View>
</View>;
};
@@ -0,0 +1,99 @@
// Metro module 15177 (f15178).
import { useMemo } from "react";
import { View } from "react-native";
import GuildMemberStore from "../../../stores/GuildMemberStore";
import GuildOnboardingHomeSettingsStore from "../GuildOnboardingHomeSettingsStore";
import GuildOnboardingMemberActionStore from "../GuildOnboardingMemberActionStore";
import { StaticChannelRoute } from "../../channel/ChannelConstants";
import { GuildMemberFlags } from "../../guild_member/GuildMemberConstants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import Module4611 from "../../../_bundle/Module4611";
import { useStateFromStores } from "../../../_bundle/defaultAreStatesEqual";
import { hasFlag } from "../../../_bundle/Module1384";
import { PressableOpacity } from "../../../design/void/Pressables/native/Pressables";
import { transitionTo } from "../../routing/router_utils";
import { Text } from "../../../design/components/Text/native/Text";
import { intl, t } from "../../../intl/index.native";
import { Icon } from "../../../design/void/native";
import Module10737 from "../../../_bundle/Module10737";
let useStyles;
const ProgressBar = function ProgressBar(props) {
const percent = props.percent;
const styles = useStyles();
return <View style={styles.progressBackground}>
<Module4611 style={[styles.progressForeground, {
width: `${percent}%`
}]} colors={["rgba(103, 203, 134, 1)", "rgba(59, 165, 92, 1)"]} useAngle angle={-90} />
</View>;
};
useStyles = createStyles({
container: {
padding: 16
},
horizontal: {
flexDirection: "row",
alignItems: "center"
},
spaceBetween: {
justifyContent: "space-between"
},
spaceBelow: {
marginBottom: 8
},
progressBackground: {
borderRadius: Module712.radii.round,
height: 8,
backgroundColor: Module712.colors.BACKGROUND_MOD_NORMAL
},
progressForeground: {
backgroundColor: Module712.colors.STATUS_POSITIVE_BACKGROUND,
borderRadius: Module712.radii.round,
height: 8
}
});
export function NewMemberActionsProgress(props) {
let stateFromStores2;
const guildId = props.guildId;
stateFromStores2 = void 0;
const styles = useStyles();
const stateFromStores = useStateFromStores([GuildOnboardingHomeSettingsStore], () => GuildOnboardingHomeSettingsStore.getNewMemberActions(guildId), [guildId]);
stateFromStores2 = useStateFromStores([GuildOnboardingMemberActionStore], () => GuildOnboardingMemberActionStore.getCompletedActions(guildId));
const stateFromStores3 = useStateFromStores([GuildMemberStore], () => GuildMemberStore.getSelfMember(guildId));
let r14 = stateFromStores?.length;
if (r14 == null) {
r14 = 0;
}
const memo = useMemo(() => {
if (stateFromStores != null && stateFromStores2 != null) {
let c27958_0 = 0;
stateFromStores.forEach((stateFromStore) => {
if (stateFromStores2[stateFromStore.channelId] != null) {
c27958_0 = c27958_0 + 1;
}
});
return c27958_0;
}
return 0;
}, [stateFromStores2, stateFromStores]);
let r50 = stateFromStores3?.flags;
if (r50 == null) {
r50 = 0;
}
return hasFlag(r50, GuildMemberFlags.COMPLETED_HOME_ACTIONS) ? null : r14 !== 0 ? memo + r14 !== 0 ? <PressableOpacity accessibilityRole="button" activeOpacity={0.4} style={styles.container} onPress={function onPress() {
transitionTo(StaticChannelRoute.GUILD_HOME);
}}>
<View style={[styles.horizontal, styles.spaceBetween, styles.spaceBelow]}>
<Text variant="text-xs/bold" color="mobile-text-heading-primary">
{intl.string(t.LhlgY9)}
</Text>
<View style={styles.horizontal}>
<Text variant="text-xs/bold" color="mobile-text-heading-primary">{memo}</Text>
<Text variant="text-xs/medium" color="text-default">/</Text>
<Text variant="text-xs/bold" color="mobile-text-heading-primary">{r14}</Text>
<Icon size={Icon.Sizes.REFRESH_SMALL_16} source={Module10737} />
</View>
</View>
<ProgressBar percent={memo / r14 * 100 + 3} />
</PressableOpacity> : null : null;
}
@@ -0,0 +1,2 @@
// Metro module 15428 (f15429).
export const ONBOARDING_HOME_RESOURCES_SHEET_KEY = "OnboardingHomeResourcesSheet";
@@ -0,0 +1,34 @@
// Metro module 15430 (f15431).
import { ONBOARDING_HOME_RESOURCES_SHEET_KEY } from "./OnboardingHomeConstants";
import { useToken } from "../../../design/tokens/native/useToken";
import Module712 from "../../../_bundle/Module712";
import useResourceChannels from "../useResourceChannels";
import { selectHomeResourceChannel } from "../GuildOnboardingHomeActionCreators";
import ActionSheetActionCreators from "../../action_sheet/native/ActionSheetActionCreators";
import { ActionSheet } from "../../../design/components/Sheet/native/ActionSheet.native";
import { ActionSheetRow } from "../../../design/components/Sheet/native/ActionSheetRow.native";
import AvatarUtils from "../../../utils/AvatarUtils";
import FastImage from "../../../components_native/common/FastImage";
export default function OnboardingHomeResourcesSheet(props) {
const guildId = props.guildId;
const token = useToken(Module712.modules.mobile.TABLE_ROW_ICON_SIZE);
return <ActionSheet>
<ActionSheetRow.Group hasIcons>
{useResourceChannels(guildId).map((item) => {
let uri = AvatarUtils.getResourceChannelIconURL(item);
if (uri == null) {
uri = void 0;
}
return <ActionSheetRow key={item.channelId} label={item.title} icon={uri != null ? <FastImage style={{
width: token,
height: token
}} source={{
uri
}} /> : void 0} onPress={() => {
selectHomeResourceChannel(guildId, item.channelId);
ActionSheetActionCreators.hideActionSheet(ONBOARDING_HOME_RESOURCES_SHEET_KEY);
}} arrow />;
})}
</ActionSheetRow.Group>
</ActionSheet>;
};
@@ -0,0 +1,43 @@
// Metro module 15421 (f15422).
import { useRef, useEffect, useMemo } from "react";
import { ScrollView } from "react-native";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import useSafeAreaInsets_native from "../../safe_area/useSafeAreaInsets.native";
const useStyles = createStyles({
guildFeedBackground: {
backgroundColor: Module712.colors.BACKGROUND_SURFACE_HIGH
}
});
export default function OnboardingHomeScrollView(props) {
const { guildId, headerOffset = 0 } = props;
let ref3;
const marginTop = headerOffset;
const { scrollValue, children } = props;
ref3 = void 0;
const styles = useStyles();
const ref = useRef(false);
const ref2 = useRef(null);
const bottom = useSafeAreaInsets_native().bottom;
useEffect(() => {
ref.current = false;
}, [guildId]);
ref3 = useRef(true);
useEffect(() => {
if (!(ref2.current == null || ref3.current)) {
ref2.current.scrollTo({
animated: false,
y: 0
});
}
ref3.current = false;
}, [guildId]);
return <ScrollView ref={ref2} scrollIndicatorInsets={{
right: 1
}} onScroll={function onScroll(event) {
scrollValue.set(event.nativeEvent.contentOffset.y);
}} scrollEventThrottle={16} style={styles.guildFeedBackground} contentContainerStyle={useMemo(() => ({
paddingBottom: 16 + bottom,
marginTop
}), [bottom, marginTop])}>{children}</ScrollView>;
};
@@ -0,0 +1,66 @@
// Metro module 11436 (f11437).
import { useCallback } from "react";
import { View } from "react-native";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import { useNavigation } from "../../../_bundle/Module1481";
import { usePreviousAndNextResourceChannel } from "../getNextResourceChannel";
import { selectHomeResourceChannel } from "../GuildOnboardingHomeActionCreators";
import { Button } from "../../../design/components/Button/native/Button.native";
import { Icon } from "../../../design/void/native";
import Module10028 from "../../../_bundle/Module10028";
import Module6684 from "../../../_bundle/Module6684";
const useStyles = createStyles({
wrapper: {
display: "flex",
flexDirection: "row",
padding: 12,
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW
},
buttonWrapper: {
flex: 1
},
spacer: {
width: 8
},
iconColor: {
color: Module712.colors.WHITE
}
});
export default function ResourceChannelButtons(props) {
let r40;
let channel, navigation, c18835_2, c18835_3, callback;
L11: {
channel = props.channel;
navigation = void 0;
c18835_2 = void 0;
c18835_3 = void 0;
callback = void 0;
navigation = useNavigation();
const styles = useStyles();
const [r33, r15] = usePreviousAndNextResourceChannel(channel.guild_id, channel.id);
c18835_2 = r33;
c18835_3 = r15;
callback = useCallback((a0) => {
navigation.goBack();
selectHomeResourceChannel(channel.guild_id, a0);
}, [channel.guild_id, navigation]);
if (r33 == null) {
const r3 = r15 == null;
r40 = null;
if (r3) {
break L11;
}
}
r40 = <View style={styles.wrapper}>
{r33 != null && <View style={styles.buttonWrapper}>
<Button variant="secondary" text={r33.title} icon={<Icon color={styles.iconColor.color} source={Module10028} />} onPress={() => callback(c18835_2.channelId)} grow />
</View>}
{r33 != null && r15 != null && <View style={styles.spacer} />}
{r15 != null && <View style={styles.buttonWrapper}>
<Button text={r15.title} icon={<Icon color={styles.iconColor.color} source={Module6684} />} iconPosition="end" onPress={() => callback(c18835_3.channelId)} grow />
</View>}
</View>;
}
return r40;
};
@@ -0,0 +1,54 @@
// Metro module 15427 (f15428).
import { ScrollView } from "react-native";
import { ONBOARDING_HOME_RESOURCES_SHEET_KEY } from "./OnboardingHomeConstants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import useResourceChannels from "../useResourceChannels";
import { selectHomeResourceChannel } from "../GuildOnboardingHomeActionCreators";
import ActionSheetActionCreators from "../../action_sheet/native/ActionSheetActionCreators";
import { PressableOpacity } from "../../../design/void/Pressables/native/Pressables";
import { Text } from "../../../design/components/Text/native/Text";
import { intl, t } from "../../../intl/index.native";
const useStyles = createStyles({
container: {
display: "flex",
flexDirection: "row",
paddingBottom: 8,
marginBottom: 16
},
channelItem: {
display: "flex",
justifyContent: "center",
backgroundColor: Module712.colors.BACKGROUND_BASE_LOWEST,
borderRadius: Module712.radii.round,
marginLeft: 8,
paddingVertical: 8,
paddingHorizontal: 12
}
});
export default function ResourcesRow(props) {
const guildId = props.guildId;
const styles = useStyles();
const resourceChannels = useResourceChannels(guildId);
const r3 = resourceChannels.length > 2;
return <ScrollView horizontal style={styles.container}>
{resourceChannels.slice(0, 2).map((item) => {
return <PressableOpacity key={item.channelId} style={styles.channelItem} onPress={() => {
selectHomeResourceChannel(guildId, item.channelId);
}}>
<Text variant="text-md/medium" color="text-default">{item.title}</Text>
</PressableOpacity>;
})}
{r3 ? <PressableOpacity style={styles.channelItem} onPress={() => {
ActionSheetActionCreators.openLazy(import("./OnboardingHomeResourcesSheet"), ONBOARDING_HOME_RESOURCES_SHEET_KEY, {
guildId
});
}}>
<Text variant="text-md/medium" color="text-default">
{intl.format(t.F6iMs4, {
count: resourceChannels.length - 2
})}
</Text>
</PressableOpacity> : null}
</ScrollView>;
};
@@ -0,0 +1,21 @@
// Metro module 15436 (f15437).
export default function useFirstMessageOrEmbedContent(a0) {
if (a0 == null) {
return null;
}
if (a0.content?.length > 0) {
return a0.content;
}
if (a0.embeds?.length > 0) {
for (const embed of a0.embeds) {
if (embed.rawDescription == null) {
continue;
}
if (!(embed.rawDescription.length > 0)) {
continue;
}
return embed.rawDescription;
}
}
return null;
};
@@ -0,0 +1,55 @@
// Metro module 5659 (f5660).
import ImpersonateStore from "../impersonate/ImpersonateStore";
import GuildMemberStore from "../../stores/GuildMemberStore";
import { GuildMemberFlags } from "../guild_member/GuildMemberConstants";
import * as _Module1384 from "../../_bundle/Module1384";
import Durations from "../../utils/Durations";
import { useStateFromStores } from "../../_bundle/Module589";
export default function useIsNewMember(c14983_0) {
return useStateFromStores([GuildMemberStore, ImpersonateStore], () => {
const isFullServerPreview = ImpersonateStore.isFullServerPreview(c14983_0);
let r2 = true;
if (!isFullServerPreview) {
const selfMember = GuildMemberStore.getSelfMember(c14983_0);
const r3 = selfMember == null;
r2 = false;
if (!r3) {
const selfMemberJoinedAt = GuildMemberStore.getSelfMemberJoinedAt(c14983_0);
let r18 = selfMemberJoinedAt != null;
if (r18) {
let flags = selfMember.flags;
if (flags == null) {
flags = 0;
}
const hasFlag = _Module1384.hasFlag(flags, GuildMemberFlags.COMPLETED_HOME_ACTIONS);
r18 = hasFlag ? !hasFlag : Date.now() - selfMemberJoinedAt.getTime() < Durations.Millis.WEEK;
}
r2 = r18;
}
}
return r2;
});
};
export function getIsNewMember(a0) {
const isFullServerPreview = ImpersonateStore.isFullServerPreview(a0);
let r2 = true;
if (!isFullServerPreview) {
const selfMember = GuildMemberStore.getSelfMember(a0);
const r3 = selfMember == null;
r2 = false;
if (!r3) {
const selfMemberJoinedAt = GuildMemberStore.getSelfMemberJoinedAt(a0);
let r17 = selfMemberJoinedAt != null;
if (r17) {
let flags = selfMember.flags;
if (flags == null) {
flags = 0;
}
const hasFlag = _Module1384.hasFlag(flags, GuildMemberFlags.COMPLETED_HOME_ACTIONS);
r17 = hasFlag ? !hasFlag : Date.now() - selfMemberJoinedAt.getTime() < Durations.Millis.WEEK;
}
r2 = r17;
}
}
return r2;
}
@@ -0,0 +1,24 @@
// Metro module 10415 (f10416).
import ChannelSectionStore from "../../stores/ChannelSectionStore";
import ChannelStore from "../../stores/ChannelStore";
import SelectedChannelStore from "../../stores/SelectedChannelStore";
import { EMPTY_STRING_SNOWFLAKE_ID } from "../../Constants";
import { ChannelFlags } from "../channel/ChannelConstants";
import { useStateFromStores } from "../../_bundle/defaultAreStatesEqual";
import { hasFlag } from "../../_bundle/Module1384";
import isSelectedFromHomeChannel_native from "./isSelectedFromHomeChannel.native";
import { useCanSeeOnboardingHome } from "./OnboardingHomeUtils";
export default function useIsSelectedResourceChannel(c17938_0) {
const stateFromStores = useStateFromStores([ChannelStore, SelectedChannelStore, ChannelSectionStore], () => {
const channel = ChannelStore.getChannel(c17938_0);
if (channel != null && hasFlag(channel.flags, ChannelFlags.IS_GUILD_RESOURCE_CHANNEL) && isSelectedFromHomeChannel_native(channel, SelectedChannelStore, ChannelSectionStore)) {
return channel.guild_id;
}
});
let r19 = stateFromStores;
if (r19 == null) {
r19 = EMPTY_STRING_SNOWFLAKE_ID;
}
const canSeeOnboardingHome = useCanSeeOnboardingHome(r19);
return stateFromStores != null && canSeeOnboardingHome;
};
@@ -0,0 +1,7 @@
// Metro module 15429 (f15430).
import ChannelStore from "../../stores/ChannelStore";
import GuildOnboardingHomeSettingsStore from "./GuildOnboardingHomeSettingsStore";
import { useStateFromStoresArray } from "../../_bundle/defaultAreStatesEqual";
export default function useResourceChannels(c21987_0) {
return useStateFromStoresArray([GuildOnboardingHomeSettingsStore, ChannelStore], () => GuildOnboardingHomeSettingsStore.getResourceChannels(c21987_0).filter((item) => ChannelStore.getChannel(item.channelId) != null));
};