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,433 @@
// Metro module 9156 (f9157).
import { createChannelRecordFromServer } from "../../records/ChannelRecord";
import GuildJoinRequestStore from "./GuildJoinRequestStore";
import { joinRequestFromServer } from "./UserGuildJoinRequestStore";
import { AbortCodes, Endpoints } from "../../Constants";
import { GuildJoinRequestApplicationStatuses, MAX_RESULTS_PER_PAGE } from "./MemberVerificationTypes";
import Dispatcher from "../../Dispatcher";
import { HTTP, rejectWithMigratedError } from "../../_bundle/sendRequest";
import { trackMemberApplicationAction, trackMemberApplicationViewed } from "./GuildJoinRequestAnalyticUtils";
import AlertActionCreators from "../../actions/AlertActionCreators";
import { intl, t } from "../../intl/index.native";
import SelectedChannelActionCreators from "../../actions/SelectedChannelActionCreators";
function $mk115421($env) {
return (a0) => {
let r1 = a0 ? a0.body : a0;
if (r1) {
r1 = a0.body.code === AbortCodes.REQUEST_TO_JOIN_USER_INELIGIBLE;
}
if (r1) {
AlertActionCreators.show({
title: intl.string(t.DxJj4e),
body: intl.string(t.rSAOk9)
});
}
return Promise.reject(a0);
};
}
let env6008 = {};
const r36 = {
fetchGuildJoinRequests: async function fetchGuildJoinRequests(c26371_0) {
let r150;
let guild_join_requests, c26371_4;
let c26371_5 = 0;
let c30042_0, c30042_1, c30042_2, c30042_3, c30042_4, c30042_5, c30042_6, c30042_7, c30042_8, c30042_9, c30042_10;
L26: {
try {
c30042_0 = void 0;
c30042_1 = void 0;
c30042_2 = void 0;
c30042_3 = void 0;
c30042_4 = void 0;
c30042_5 = void 0;
c30042_0 = c26371_0.guildId;
let status = c26371_0.status;
if (status === void 0) {
status = GuildJoinRequestApplicationStatuses.SUBMITTED;
}
c30042_1 = status;
c30042_2 = c26371_0.before;
c30042_3 = c26371_0.after;
let limit = c26371_0.limit;
if (limit === void 0) {
limit = MAX_RESULTS_PER_PAGE;
}
c30042_4 = limit;
const force = c26371_0.force;
if (force !== void 0) {
c30042_5 = force;
c30042_6 = void 0;
c30042_7 = void 0;
c30042_8 = void 0;
c30042_9 = void 0;
} else {
c30042_5 = false;
c30042_6 = void 0;
c30042_7 = void 0;
c30042_8 = void 0;
c30042_9 = void 0;
}
await void 0;
c30042_6 = c30042_5 || !GuildJoinRequestStore.hasFetched(c30042_0);
if (GuildJoinRequestStore.isFetching()) {
break L26;
}
if (!c30042_6) {
break L26;
}
Dispatcher.dispatch({
type: "GUILD_JOIN_REQUESTS_FETCH_START"
});
c26371_5 = 1;
c30042_7 = await HTTP.get({
url: Endpoints.GUILD_JOIN_REQUESTS(c30042_0),
query: {
status: c30042_1,
limit: c30042_4,
before: c30042_2,
after: c30042_3
},
rejectWithError: rejectWithMigratedError()
});
c30042_8 = c30042_7.body.total;
const guild_join_requests2 = c30042_7.body.guild_join_requests;
guild_join_requests = guild_join_requests2;
if (guild_join_requests2 == null) {
guild_join_requests = [];
}
c30042_9 = guild_join_requests.map(joinRequestFromServer);
Dispatcher.dispatch({
type: "GUILD_JOIN_REQUESTS_FETCH_SUCCESS",
status: c30042_1,
requests: c30042_9,
total: c30042_8,
limit: c30042_4,
guildId: c30042_0
});
r150 = c30042_7;
c26371_5 = 0;
} catch ($e) {
const r31 = $e;
let r8 = r31;
c26371_4 = r31;
if (c26371_5 !== 0) {
while (true) {
try {
const r160 = c26371_4;
c26371_5 = 0;
c30042_10 = r160;
Dispatcher.dispatch({
type: "GUILD_JOIN_REQUESTS_FETCH_FAILURE"
});
throw c30042_10;
} catch (r156) {
r8 = r156;
c26371_4 = r156;
if (c26371_5 === 0) {
break;
}
}
}
}
throw r8;
}
return r150;
}
},
fetchGuildJoinRequestsForUser: async function fetchGuildJoinRequestsForUser(c26372_0, c26372_1) {
let c30043_0 = c26372_0;
let c30043_1 = c26372_1;
let c30043_2 = await HTTP.get({
url: Endpoints.GUILD_JOIN_REQUESTS_FOR_USER(c26372_0, c26372_1),
rejectWithError: rejectWithMigratedError()
});
const body2 = c30043_2.body;
let body = body2;
if (body2 == null) {
body = [];
}
let c30043_3 = body.map(joinRequestFromServer);
Dispatcher.dispatch({
type: "GUILD_JOIN_REQUESTS_FOR_USER_FETCH_SUCCESS",
guildId: c30043_0,
userId: c30043_1,
requests: c30043_3
});
return c30043_2;
},
ackUserGuildJoinRequest: async function ackUserGuildJoinRequest(c26374_0, c26374_1) {
let r24;
let c26374_4;
let c26374_5 = 0;
let c30045_0, c30045_1;
try {
c30045_0 = c26374_0;
c30045_1 = c26374_1;
c26374_5 = 2;
r24 = await HTTP.post({
url: Endpoints.GUILD_JOIN_REQUEST_ACK(c26374_0, c26374_1),
rejectWithError: rejectWithMigratedError()
});
c26374_5 = 0;
Dispatcher.dispatch({
type: "ACK_APPROVED_GUILD_JOIN_REQUEST",
id: c30045_1,
guildId: c30045_0
});
} catch ($e) {
const r28 = $e;
let r8 = r28;
c26374_4 = r28;
let r29 = c26374_5;
if (r29 !== 0) {
while (true) {
if (r29 !== 1) {
try {
c26374_5 = 0;
Dispatcher.dispatch({
type: "ACK_APPROVED_GUILD_JOIN_REQUEST",
id: c30045_1,
guildId: c30045_0
});
} catch (r72) {
r8 = r72;
c26374_4 = r72;
r29 = c26374_5;
if (r29 === 0) {
break;
}
continue;
}
return void 0;
}
try {
const r91 = c26374_4;
c26374_5 = 0;
Dispatcher.dispatch({
type: "ACK_APPROVED_GUILD_JOIN_REQUEST",
id: c30045_1,
guildId: c30045_0
});
throw r91;
} catch (r88) {
r8 = r88;
c26374_4 = r88;
r29 = c26374_5;
if (r29 === 0) {
break;
}
}
}
}
throw r8;
}
return r24;
},
removeGuildJoinRequest: async function removeGuildJoinRequest(c26373_0) {
let r65;
let c26373_3;
let c26373_4 = 0;
let c30044_0, c30044_1;
try {
c30044_0 = c26373_0;
c30044_1 = void 0;
c26373_4 = 1;
c30044_1 = await HTTP.del({
url: Endpoints.GUILD_MEMBER_REQUEST_TO_JOIN(c26373_0),
rejectWithError: rejectWithMigratedError()
});
Dispatcher.dispatch({
type: "USER_GUILD_JOIN_REQUEST_UPDATE",
guildId: c30044_0,
request: null
});
r65 = c30044_1;
c26373_4 = 0;
} catch ($e) {
const r26 = $e;
let r8 = r26;
c26373_3 = r26;
if (c26373_4 !== 0) {
while (true) {
try {
const r72 = c26373_3;
c26373_4 = 0;
throw r72;
} catch (r70) {
r8 = r70;
c26373_3 = r70;
if (c26373_4 === 0) {
break;
}
}
}
}
throw r8;
}
return r65;
},
updateGuildJoinRequest: async function updateGuildJoinRequest(c26375_0, c26375_1, c26375_2, c26375_3, c26375_4) {
let env30046;
const r12 = env6008;
let c26375_6 = r12;
const r10 = env30046 = {
$parent: r12
};
let c26375_5 = r10;
env30046[3] = void 0;
env30046[4] = void 0;
env30046[0] = c26375_0;
env30046[1] = c26375_1;
env30046[2] = c26375_2;
let r34 = c26375_3;
if (r34 === void 0) {
r34 = GuildJoinRequestApplicationStatuses.APPROVED;
}
env30046[3] = r34;
env30046[4] = c26375_4;
env30046[5] = void 0;
await void 0;
trackMemberApplicationAction({
guildId: env30046[0],
actionType: env30046[3],
applicationUserId: env30046[1]
});
env30046[5] = await HTTP.patch({
url: Endpoints.GUILD_JOIN_REQUEST(env30046[0], env30046[2]),
body: {
action: env30046[3],
rejection_reason: env30046[4]
},
rejectWithError: rejectWithMigratedError()
}).catch($mk115421(env6008));
Dispatcher.dispatch({
type: "GUILD_JOIN_REQUEST_UPDATE",
guildId: env30046[0],
status: env30046[5].body.application_status,
request: env30046[5].body
});
},
resetGuildJoinRequest: async function resetGuildJoinRequest(c26376_0) {
let r67;
let c26376_3;
let c26376_4 = 0;
let c30047_0, c30047_1;
try {
c30047_0 = c26376_0;
c30047_1 = void 0;
c26376_4 = 1;
c30047_1 = (await HTTP.post({
url: Endpoints.GUILD_MEMBER_REQUEST_TO_JOIN(c26376_0),
rejectWithError: rejectWithMigratedError()
})).body;
Dispatcher.dispatch({
type: "USER_GUILD_JOIN_REQUEST_UPDATE",
guildId: c30047_0,
request: c30047_1
});
r67 = c30047_1;
c26376_4 = 0;
} catch ($e) {
const r26 = $e;
let r8 = r26;
c26376_3 = r26;
if (c26376_4 !== 0) {
while (true) {
try {
const r74 = c26376_3;
c26376_4 = 0;
throw r74;
} catch (r72) {
r8 = r72;
c26376_3 = r72;
if (c26376_4 === 0) {
break;
}
}
}
}
throw r8;
}
return r67;
},
fetchRequestToJoinGuilds: async function fetchRequestToJoinGuilds() {
let c30048_0 = await HTTP.get({
url: Endpoints.USER_JOIN_REQUEST_GUILDS,
rejectWithError: rejectWithMigratedError()
});
Dispatcher.dispatch({
type: "USER_JOIN_REQUEST_GUILDS_FETCH",
guilds: c30048_0.body
});
},
setSelectedApplicationTab: function setSelectedApplicationTab(a0, a1) {
Dispatcher.dispatch({
type: "GUILD_JOIN_REQUESTS_SET_APPLICATION_TAB",
guildId: a0,
applicationTab: a1
});
},
setSelectedSortOrder: function setSelectedSortOrder(a0, a1, a2) {
Dispatcher.dispatch({
type: "GUILD_JOIN_REQUESTS_SET_SORT_ORDER",
guildId: a0,
sortOrder: a1,
applicationStatus: a2
});
},
setSelectedGuildJoinRequest: function setSelectedGuildJoinRequest(a0, a1) {
if (a1 != null) {
trackMemberApplicationViewed({
guildId: a0,
applicationStatus: a1.applicationStatus,
applicationUserId: a1.userId
});
}
Dispatcher.dispatch({
type: "GUILD_JOIN_REQUESTS_SET_SELECTED",
guildId: a0,
request: a1
});
},
fetchJoinRequestForInterview: async function fetchJoinRequestForInterview(c26378_0) {
let c30049_0 = await HTTP.get({
url: Endpoints.JOIN_REQUEST(c26378_0),
rejectWithError: rejectWithMigratedError()
});
let c30049_1 = (0, joinRequestFromServer)(c30049_0.body);
Dispatcher.dispatch({
type: "GUILD_JOIN_REQUEST_BY_ID_FETCH_SUCCESS",
joinRequest: c30049_1
});
return c30049_0;
},
createOrEnterJoinRequestInterview: async function createOrEnterJoinRequestInterview(c26379_0, c26379_1) {
let c30050_1, c30050_2, c30050_3;
c30050_1 = void 0;
let c30050_0 = c26379_0;
if (c26379_1 !== void 0) {
c30050_1 = c26379_1;
c30050_2 = void 0;
c30050_3 = void 0;
} else {
c30050_1 = true;
c30050_2 = void 0;
c30050_3 = void 0;
}
await void 0;
c30050_2 = await HTTP.post({
url: Endpoints.JOIN_REQUEST_INTERVIEW(c30050_0),
rejectWithError: rejectWithMigratedError()
});
c30050_3 = (0, createChannelRecordFromServer)(c30050_2.body);
Dispatcher.dispatch({
type: "CHANNEL_CREATE",
channel: c30050_3
});
if (c30050_1) {
SelectedChannelActionCreators.selectPrivateChannel(c30050_3.id);
}
return c30050_3.id;
}
};
export default r36;
@@ -0,0 +1,38 @@
// Metro module 6177 (f6178).
import AuthenticationStore from "../../stores/AuthenticationStore";
import GuildMemberStore from "../../stores/GuildMemberStore";
import { AnalyticEvents } from "../../Constants";
import AnalyticsUtils from "../../utils/AnalyticsUtils";
export function trackMemberApplicationViewed({ guildId, applicationUserId, applicationStatus }) {
AnalyticsUtils.track(AnalyticEvents.GUILD_MEMBER_APPLICATION_VIEWED, {
guild_id: guildId,
viewing_user_id: AuthenticationStore.getId(),
application_user_id: applicationUserId,
application_status: applicationStatus
});
}
export function trackMemberApplicationAction(a0) {
AnalyticsUtils.track(AnalyticEvents.GUILD_MEMBER_APPLICATION_ACTION, {
guild_id: a0.guildId,
action_type: a0.actionType,
application_user_id: a0.applicationUserId,
viewing_user_id: AuthenticationStore.getId()
});
}
export function trackMemberApplicationInterviewMessage({ guildId, messageId, channelId, joinRequestStatus, joinRequestUserId }) {
const id = AuthenticationStore.getId();
AnalyticsUtils.track(AnalyticEvents.GUILD_MEMBER_APPLICATION_INTERVIEW_MESSAGE, {
guild_id: guildId,
channel_id: channelId,
message_id: messageId,
message_user_id: id,
is_member: GuildMemberStore.getMember(guildId, id)?.joinedAt != null,
join_request_status: joinRequestStatus,
join_request_user_id: joinRequestUserId
});
}
export function trackMemberVerificationApplicationViewed(a0) {
AnalyticsUtils.track(AnalyticEvents.MEMBER_VERIFICATION_APPLICATION_VIEWED, {
guild_id: a0
});
}
@@ -0,0 +1,199 @@
// Metro module 5714 (f5715).
import UserStore from "../../stores/UserStore";
import { joinRequestFromServer } from "./UserGuildJoinRequestStore";
import Module3771 from "../../_bundle/Module3771";
import { GuildJoinRequestApplicationStatuses, GuildJoinRequestSortOrders } from "./MemberVerificationTypes";
import { SecondaryIndexMap } from "../../_bundle/Module3813";
import { isSubmittedApplicationStatus, isActionedApplicationStatus } from "./GuildJoinRequestUtils";
import Durations from "../../utils/Durations";
import Module589 from "../../_bundle/Module589";
import Dispatcher from "../../Dispatcher";
let c3544_5, c3544_6, c3544_8, c3544_9, StaticGuildJoinRequestIndexes_GUILD_JOIN_REQUESTS_BY_ID, StaticGuildJoinRequestIndexes_GUILD_JOIN_REQUESTS_BY_STATUS, c3544_12, c3544_13, c3544_14, upsert, c3544_16, c3544_17, c3544_18, c3544_19, c3544_20;
const updateSubmittedGuildJoinRequestTotal = function updateSubmittedGuildJoinRequestTotal(guildId, applicationStatus, a2) {
if (applicationStatus !== a2 && applicationStatus != null) {
if (applicationStatus === GuildJoinRequestApplicationStatuses.SUBMITTED) {
c3544_6[guildId] = c3544_6[guildId] + 1;
c3544_5.set(guildId, Module3771());
}
if (a2 === GuildJoinRequestApplicationStatuses.SUBMITTED) {
c3544_6[guildId] = Math.max(0, c3544_6[guildId] - 1);
c3544_5.set(guildId, Module3771());
}
}
};
const guildJoinRequestsIndex = function guildJoinRequestsIndex(a0) {
const r0 = [];
r0.push(`guild-join-request=${a0.joinRequestId}`);
r0.push(`guild-${a0.guildId}-${a0.applicationStatus}`);
return r0;
};
upsert = function upsert(a0) {
c3544_19[a0.joinRequestId] = a0;
c3544_12.set(a0.joinRequestId, a0);
if (isSubmittedApplicationStatus(a0.applicationStatus)) {
c3544_14.delete(a0.joinRequestId);
c3544_13.set(a0.joinRequestId, a0);
}
if (isActionedApplicationStatus(a0.applicationStatus)) {
c3544_13.delete(a0.joinRequestId);
c3544_14.set(a0.joinRequestId, a0);
}
};
const handleGuildJoinRequestCreateOrUpdate = function handleGuildJoinRequestCreateOrUpdate(a0) {
const guildId = a0.guildId;
const r6 = joinRequestFromServer(a0.request);
const currentUser = UserStore.getCurrentUser();
if (currentUser != null && r6.userId !== currentUser.id) {
updateSubmittedGuildJoinRequestTotal(guildId, r6.applicationStatus, c3544_12.get(r6.joinRequestId)?.applicationStatus);
c3544_19[r6.joinRequestId] = r6;
c3544_12.set(r6.joinRequestId, r6);
if (isSubmittedApplicationStatus(r6.applicationStatus)) {
c3544_14.delete(r6.joinRequestId);
c3544_13.set(r6.joinRequestId, r6);
}
if (isActionedApplicationStatus(r6.applicationStatus)) {
c3544_13.delete(r6.joinRequestId);
c3544_14.set(r6.joinRequestId, r6);
}
return true;
}
return false;
};
c3544_5 = new Map();
c3544_6 = {};
c3544_8 = {};
c3544_9 = false;
StaticGuildJoinRequestIndexes_GUILD_JOIN_REQUESTS_BY_ID = (a0) => {};
StaticGuildJoinRequestIndexes_GUILD_JOIN_REQUESTS_BY_STATUS = (a0, a1) => {};
c3544_12 = new SecondaryIndexMap(guildJoinRequestsIndex, (a0) => `${a0.joinRequestId}`);
c3544_13 = new SecondaryIndexMap(guildJoinRequestsIndex, (a0) => `${a0.joinRequestId}`);
c3544_14 = new SecondaryIndexMap(guildJoinRequestsIndex, (a0) => `${a0.actionedAt}`);
c3544_16 = {};
c3544_17 = {};
c3544_18 = {};
c3544_19 = {};
c3544_20 = 10 * Durations.Seconds.MINUTE;
class GuildJoinRequestStoreV2 extends Module589.Store {
static displayName = "GuildJoinRequestStoreV2";
initialize() {
this.waitFor(UserStore);
}
getRequest(a0) {
return c3544_19[a0];
}
getRequests(a0, a1) {
const r15 = `guild-${a0}-${a1}`;
return isActionedApplicationStatus(a1) ? c3544_14.values(r15) : isSubmittedApplicationStatus(a1) ? c3544_13.values(r15) : c3544_12.values(r15);
}
getSubmittedGuildJoinRequestTotal(a0) {
return c3544_6[a0];
}
isFetching() {
return c3544_9;
}
hasFetched(a0) {
if (c3544_5.has(a0)) {
const r6 = c3544_5.get(a0);
return r6 != null && Module3771().diff(r6, "seconds") < c3544_20;
}
return false;
}
getSelectedApplicationTab(a0) {
const SUBMITTED = GuildJoinRequestApplicationStatuses.SUBMITTED;
let r10 = c3544_16[a0];
if (r10 == null) {
r10 = SUBMITTED;
}
return r10;
}
getSelectedSortOrder(a0) {
let r4 = c3544_17[a0];
if (r4 == null) {
r4 = GuildJoinRequestSortOrders.TIMESTAMP_DESC;
}
return r4;
}
getSelectedGuildJoinRequest(a0) {
const r5 = c3544_18[a0];
return r5 != null ? c3544_12.get(r5.joinRequestId) : null;
}
getRequestsForUser(a0, a1) {
const r11 = c3544_8[`${a0}:${a1}`];
return r11 != null ? r11.map((item) => c3544_12.get(item)).filter((item) => item != null) : null;
}
}
const guildJoinRequestStoreV2 = new GuildJoinRequestStoreV2(Dispatcher, {
GUILD_JOIN_REQUEST_BY_ID_FETCH_SUCCESS: function handleFetchByIdSuccess({ joinRequest }) {
c3544_19[joinRequest.joinRequestId] = joinRequest;
c3544_12.set(joinRequest.joinRequestId, joinRequest);
if (isSubmittedApplicationStatus(joinRequest.applicationStatus)) {
c3544_14.delete(joinRequest.joinRequestId);
c3544_13.set(joinRequest.joinRequestId, joinRequest);
}
if (isActionedApplicationStatus(joinRequest.applicationStatus)) {
c3544_13.delete(joinRequest.joinRequestId);
c3544_14.set(joinRequest.joinRequestId, joinRequest);
}
},
GUILD_JOIN_REQUESTS_FOR_USER_FETCH_SUCCESS: function handleFetchForUserSuccess({ guildId, userId, requests }) {
requests.forEach(upsert);
c3544_8[`${guildId}:${userId}`] = requests.map((request) => request.joinRequestId);
},
GUILD_JOIN_REQUESTS_FETCH_SUCCESS: function handleFetchSuccess({ status, requests, total, guildId }) {
c3544_9 = false;
if (status === GuildJoinRequestApplicationStatuses.SUBMITTED) {
c3544_6[guildId] = total;
c3544_5.set(guildId, Module3771());
}
requests.forEach((request) => {
c3544_19[request.joinRequestId] = request;
c3544_12.set(request.joinRequestId, request);
if (isSubmittedApplicationStatus(request.applicationStatus)) {
c3544_14.delete(request.joinRequestId);
c3544_13.set(request.joinRequestId, request);
}
if (isActionedApplicationStatus(request.applicationStatus)) {
c3544_13.delete(request.joinRequestId);
c3544_14.set(request.joinRequestId, request);
}
});
},
GUILD_JOIN_REQUESTS_FETCH_START: function handleFetchStart() {
c3544_9 = true;
},
GUILD_JOIN_REQUESTS_FETCH_FAILURE: function handleFetchFailure() {
c3544_9 = false;
},
GUILD_JOIN_REQUEST_CREATE: handleGuildJoinRequestCreateOrUpdate,
GUILD_JOIN_REQUEST_UPDATE: handleGuildJoinRequestCreateOrUpdate,
GUILD_JOIN_REQUEST_DELETE: function handleGuildJoinRequestDelete({ id, guildId }) {
const r10 = c3544_12.get(id);
if (r10 != null) {
updateSubmittedGuildJoinRequestTotal(guildId, "DELETED", r10.applicationStatus);
delete c3544_19[id];
c3544_12.delete(id);
c3544_13.delete(id);
c3544_14.delete(id);
}
},
GUILD_JOIN_REQUESTS_SET_APPLICATION_TAB: function handleSetApplicationTab({ guildId, applicationTab }) {
if (applicationTab !== c3544_16[guildId]) {
c3544_16[guildId] = applicationTab;
}
},
GUILD_JOIN_REQUESTS_SET_SORT_ORDER: function handleSetSortOrder({ guildId, sortOrder, applicationStatus }) {
if (sortOrder !== c3544_17[guildId]) {
c3544_17[guildId] = sortOrder;
if (isActionedApplicationStatus(applicationStatus)) {
c3544_14.clear();
}
if (isSubmittedApplicationStatus(applicationStatus)) {
c3544_13.clear();
}
}
},
GUILD_JOIN_REQUESTS_SET_SELECTED: function handleGuildJoinRequestSelect(a0) {
c3544_18[a0.guildId] = a0.request;
}
});
export default guildJoinRequestStoreV2;
@@ -0,0 +1,15 @@
// Metro module 4008 (f4009).
import { GuildJoinRequestApplicationStatuses } from "./MemberVerificationTypes";
export function isActionedApplicationStatus(a0) {
return a0 === GuildJoinRequestApplicationStatuses.APPROVED || a0 === GuildJoinRequestApplicationStatuses.REJECTED;
}
export function isSubmittedApplicationStatus(a0) {
return a0 === GuildJoinRequestApplicationStatuses.SUBMITTED;
}
export function isApprovedAndAcked(a0) {
return a0.applicationStatus === GuildJoinRequestApplicationStatuses.APPROVED && a0.lastSeen != null;
}
export function isActionedAndNotAcked(a0) {
const applicationStatus = a0.applicationStatus;
return (applicationStatus === GuildJoinRequestApplicationStatuses.APPROVED || applicationStatus === GuildJoinRequestApplicationStatuses.REJECTED) && a0.lastSeen == null;
}
@@ -0,0 +1,295 @@
// Metro module 5183 (f5184).
import ImpersonateStore from "../impersonate/ImpersonateStore";
import GuildMemberStore from "../../stores/GuildMemberStore";
import InviteStore from "../../stores/InviteStore";
import UserStore from "../../stores/UserStore";
import { Endpoints, AnalyticEvents } from "../../Constants";
import { HTTP, rejectWithMigratedError } from "../../_bundle/sendRequest";
import { parseInviteCodeFromInviteKey } from "../instant_invite/InviteCodeUtils";
import Dispatcher from "../../Dispatcher";
import { buildGuildProfileFromServer } from "../guild_profile/GuildProfileBuilders";
import { updateImpersonatedData } from "../impersonate/ImpersonateActionCreators";
import { hasNonTermsFormField } from "./MemberVerificationTypes";
import { closeContextMenu } from "../../actions/ContextMenuActionCreators";
import AlertActionCreators from "../../actions/AlertActionCreators";
import { intl, t } from "../../intl/index.native";
import { APIError } from "../../errors/index";
import AnalyticsUtils from "../../utils/AnalyticsUtils";
function $mk114664($env) {
return () => {
Dispatcher.dispatch({
type: "USER_GUILD_JOIN_REQUEST_COACHMARK_SHOW",
guildId: $env[0]
});
};
}
let env3130 = {};
const r33 = {
fetchVerificationForm: async function fetchVerificationForm(c25367_0, c25367_1) {
let r112;
let inviteKeyForGuildId;
let c25367_6 = 0;
let c29468_0, c29468_1, c29468_2;
try {
c29468_0 = c25367_0;
c29468_1 = void 0;
c29468_2 = void 0;
inviteKeyForGuildId = c25367_1;
if (c25367_1 == null) {
inviteKeyForGuildId = InviteStore.getInviteKeyForGuildId(c25367_0);
}
const r21 = inviteKeyForGuildId;
const with_guild = !GuildMemberStore.isMember(c25367_0, UserStore.getCurrentUser()?.id);
c25367_6 = 1;
c29468_1 = await HTTP.get({
url: Endpoints.GUILD_MEMBER_VERIFICATION(c25367_0),
query: {
with_guild,
invite_code: r21 != null ? parseInviteCodeFromInviteKey(r21) : void 0
},
oldFormErrors: true,
rejectWithError: rejectWithMigratedError()
});
if (c29468_1.body == null) {
throw c29468_1;
}
c29468_2 = c29468_1.body;
Dispatcher.dispatch({
type: "MEMBER_VERIFICATION_FORM_UPDATE",
guildId: c29468_0,
form: {
version: c29468_2.version,
description: c29468_2.description,
formFields: c29468_2.form_fields,
guild: c29468_2.guild,
profile: c29468_2.profile != null ? buildGuildProfileFromServer(c29468_2.profile) : null
}
});
r112 = c29468_2;
c25367_6 = 0;
} catch ($e) {
let r8 = $e;
if (c25367_6 !== 0) {
while (true) {
try {
c25367_6 = 0;
Dispatcher.dispatch({
type: "MEMBER_VERIFICATION_FORM_FETCH_FAIL",
guildId: c29468_0
});
} catch ($e) {
r8 = $e;
if (c25367_6 === 0) {
break;
}
continue;
}
return void 0;
}
}
throw r8;
}
return r112;
},
updateVerificationForm: async function updateVerificationForm(c25368_0, form_fields, enabled, bulk_action) {
let c29469_0 = c25368_0;
let c29469_1 = (await HTTP.patch({
url: Endpoints.GUILD_MEMBER_VERIFICATION(c25368_0),
body: {
form_fields,
enabled,
bulk_action
},
oldFormErrors: true,
rejectWithError: rejectWithMigratedError()
})).body;
Dispatcher.dispatch({
type: "MEMBER_VERIFICATION_FORM_UPDATE",
guildId: c29469_0,
form: {
version: c29469_1.version,
description: c29469_1.description,
formFields: c29469_1.form_fields
}
});
},
updateVerificationFormFieldsLocal: function updateVerificationFormFieldsLocal(a0, a1) {
Dispatcher.dispatch({
type: "MEMBER_VERIFICATION_FORM_UPDATE",
guildId: a0,
form: {
formFields: a1
},
isLocalUpdate: true
});
},
updateVerificationFormDescription: async function updateVerificationFormDescription(c25369_0, description) {
let c29470_0 = c25369_0;
let c29470_1 = (await HTTP.patch({
url: Endpoints.GUILD_MEMBER_VERIFICATION(c25369_0),
body: {
description
},
oldFormErrors: true,
rejectWithError: rejectWithMigratedError()
})).body;
Dispatcher.dispatch({
type: "MEMBER_VERIFICATION_FORM_UPDATE",
guildId: c29470_0,
form: {
version: c29470_1.version,
description: c29470_1.description,
formFields: c29470_1.form_fields
}
});
},
updateVerificationFormDescriptionLocal: function updateVerificationFormDescriptionLocal(a0, a1) {
Dispatcher.dispatch({
type: "MEMBER_VERIFICATION_FORM_UPDATE",
guildId: a0,
form: {
description: a1
},
isLocalUpdate: true
});
},
enableVerificationForm: async function enableVerificationForm(c25370_0, enabled2) {
await HTTP.patch({
url: Endpoints.GUILD_MEMBER_VERIFICATION(c25370_0),
body: {
enabled: enabled2
},
oldFormErrors: true,
rejectWithError: rejectWithMigratedError()
});
},
submitVerificationForm: async function submitVerificationForm(c25371_0, c25371_1, c25371_2) {
let r145;
let anyErrorMessage, c25371_4, c25371_5, c25371_6;
let c25371_7 = 0;
const r15 = env3130;
L21: {
try {
let env29471;
c25371_5 = r15;
const r40 = env29471 = {
$parent: r15
};
c25371_4 = r40;
env29471[2] = void 0;
env29471[0] = c25371_0;
env29471[1] = c25371_1;
if (c25371_2 !== void 0) {
env29471[2] = c25371_2;
env29471[3] = void 0;
} else {
env29471[2] = 200;
env29471[3] = void 0;
}
await void 0;
if (ImpersonateStore.isFullServerPreview(env29471[0])) {
updateImpersonatedData(env29471[0], {
memberOptions: {
isPending: false
}
});
break L21;
}
c25371_7 = 1;
env29471[3] = (await HTTP.put({
url: Endpoints.GUILD_MEMBER_REQUEST_TO_JOIN(env29471[0]),
body: {
version: env29471[1].version,
form_fields: env29471[1].formFields
},
rejectWithError: rejectWithMigratedError()
})).body;
Dispatcher.dispatch({
type: "USER_GUILD_JOIN_REQUEST_UPDATE",
guildId: env29471[0],
request: env29471[3]
});
if (hasNonTermsFormField(env29471[1].formFields) && env29471[2] !== -1) {
const r147 = c25371_4;
const r148 = setTimeout;
const r149 = env29471[2];
r148($mk114664(r147), r149);
}
r145 = env29471[3];
c25371_7 = 0;
} catch ($e) {
const r38 = $e;
let r8 = r38;
c25371_6 = r38;
if (c25371_7 !== 0) {
while (true) {
try {
const r158 = c25371_6;
c25371_7 = 0;
env29471[4] = r158;
const status = env29471[4].status;
if (status === 429) {
closeContextMenu();
AlertActionCreators.show({
title: intl.string(t.MmIrpf),
body: intl.string(t.yjpDQ3),
confirmText: intl.string(t.XNGT1O)
});
throw {
...env29471[4],
message: intl.string(t.yjpDQ3)
};
}
if (status === 403) {
throw {
...env29471[4],
message: intl.string(t["8T1rxN"])
};
}
anyErrorMessage = new APIError(env29471[4]).getAnyErrorMessage();
if (anyErrorMessage == null) {
anyErrorMessage = intl.string(t.R0RpRX);
}
throw {
...env29471[4],
message: anyErrorMessage
};
} catch (r155) {
r8 = r155;
c25371_6 = r155;
if (c25371_7 === 0) {
break;
}
}
}
}
throw r8;
}
return r145;
}
},
clearCoachmark: function clearCoachmark() {
Dispatcher.dispatch({
type: "USER_GUILD_JOIN_REQUEST_COACHMARK_CLEAR"
});
},
reportApplication: function reportApplication(a0) {
const { guild, guildJoinRequest } = a0;
AnalyticsUtils.track(AnalyticEvents.GUILD_MEMBER_APPLICATION_REPORTED, {
application_id: guildJoinRequest.joinRequestId,
applicant_id: a0.guildJoinRequestUser.id,
guild_id: guild.id,
reason: a0.reason,
reason_other: a0.reasonOther,
responses: a0.responses
});
}
};
export default r33;
export const DISABLE_JOIN_REQUEST_COACHMARK = -1;
export function showCoachmark(a0) {
Dispatcher.dispatch({
type: "USER_GUILD_JOIN_REQUEST_COACHMARK_SHOW",
guildId: a0
});
}
@@ -0,0 +1,26 @@
// Metro module 4678 (f4679).
import { VerificationFormFieldTypes } from "./MemberVerificationTypes";
const r10 = [{
field_type: VerificationFormFieldTypes.VERIFICATION
}];
const set = new Set([VerificationFormFieldTypes.TERMS]);
const set2 = new Set([VerificationFormFieldTypes.MULTIPLE_CHOICE, VerificationFormFieldTypes.TEXT_INPUT, VerificationFormFieldTypes.PARAGRAPH]);
const r50 = {
VERIFICATION_INFO: "VERIFICATION_INFO"
};
export { r10 as REQUIRED_FORM_FIELDS };
export { set as AUTOMATIC_APPROVAL_FORM_FIELDS };
export { set2 as MANUAL_APPROVAL_FORM_FIELDS };
export const MAX_FORM_ELEMENTS = 5;
export const MAX_NUM_RULES = 16;
export const MAX_RULE_LENGTH = 300;
export const MAX_QUESTION_LENGTH = 300;
export const MAX_PLACEHOLDER_LENGTH = 150;
export const MAX_NUM_CHOICES = 8;
export const MAX_CHOICE_LENGTH = 150;
export const MAX_TEXT_RESPONSE_LENGTH = 150;
export const MAX_PARAGRAPH_RESPONSE_LENGTH = 1000;
export const MAX_DESCRIPTION_LENGTH = 300;
export const MEMBER_VERIFICATION_TYPE = "Membership Gating";
export const IN_APP_MEMBER_VERIFICATION_MODAL_KEY = "in-app-member-verification";
export { r50 as MemberVerificationModalStates };
@@ -0,0 +1,69 @@
// Metro module 5138 (f5139).
import Module589 from "../../_bundle/Module589";
import Module12 from "../../_bundle/Module12";
import { isTermsFormField } from "./MemberVerificationTypes";
import Dispatcher from "../../Dispatcher";
let c3100_3 = {
version: "",
description: "",
formFields: []
};
let c3100_4 = {};
class MemberVerificationFormStore extends Module589.Store {
static displayName = "MemberVerificationFormStore";
get(a0) {
if (a0 != null) {
return c3100_4[a0];
}
}
getRulesPrompt(a0) {
return Module12.find(c3100_4[a0]?.formFields, isTermsFormField);
}
}
const memberVerificationFormStore = new MemberVerificationFormStore(Dispatcher, {
INVITE_ACCEPT_SUCCESS: function handleInviteData({ invite }) {
const { member_verification_form, guild } = invite;
let r0 = guild != null && member_verification_form != null;
if (r0) {
const id = guild.id;
let description = member_verification_form.description;
if (description == null) {
description = "";
}
c3100_4[id] = {
version: member_verification_form.version,
description,
formFields: member_verification_form.form_fields,
guild
};
r0 = true;
}
return r0;
},
MEMBER_VERIFICATION_FORM_UPDATE: function handleVerificationFormUpdate({ form, guildId }) {
if (form == null) {
c3100_4[guildId] = c3100_3;
} else {
let r6 = c3100_4[guildId];
if (r6 == null) {
r6 = c3100_3;
}
c3100_4[guildId] = {
...r6,
...form
};
}
},
MEMBER_VERIFICATION_FORM_FETCH_FAIL: function handleVerificationFormFetchFail({ guildId }) {
let r5 = c3100_4[guildId];
if (r5 == null) {
r5 = c3100_3;
}
c3100_4[guildId] = r5;
},
GUILD_DELETE: function handleGuildDelete(a0) {
delete c3100_4[a0.guild?.id];
}
});
export default memberVerificationFormStore;
export { c3100_3 as NO_MEMBER_VERIFICATION_FORM };
@@ -0,0 +1,5 @@
// Metro module 9141 (f9142).
import * as _MemberVerificationModalActionCreators from "./native/MemberVerificationModalActionCreators";
export const openMemberVerificationModal = _MemberVerificationModalActionCreators.default.openMemberVerificationModal;
export const closeMemberVerificationModal = _MemberVerificationModalActionCreators.default.closeMemberVerificationModal;
export default _MemberVerificationModalActionCreators.default;
@@ -0,0 +1,34 @@
// Metro module 4009 (f4010).
let c2286_0 = {
TERMS: "TERMS",
TEXT_INPUT: "TEXT_INPUT",
PARAGRAPH: "PARAGRAPH",
MULTIPLE_CHOICE: "MULTIPLE_CHOICE",
VERIFICATION: "VERIFICATION"
};
const r19 = {
EMAIL: "email",
PHONE: "phone"
};
const r22 = {
TIMESTAMP_DESC: "NEWEST",
TIMESTAMP_ASC: "OLDEST"
};
const r25 = {
STARTED: "STARTED",
SUBMITTED: "SUBMITTED",
REJECTED: "REJECTED",
APPROVED: "APPROVED"
};
export const MAX_RESULTS_PER_PAGE = 25;
export const MAX_VISIBLE_PAGES = 4;
export { c2286_0 as VerificationFormFieldTypes };
export { r19 as UserVerificationFieldPlatforms };
export { r22 as GuildJoinRequestSortOrders };
export { r25 as GuildJoinRequestApplicationStatuses };
export function isTermsFormField(a0) {
return a0 != null && a0.field_type === c2286_0.TERMS;
}
export function hasNonTermsFormField(a0) {
return a0 != null && a0.some((item) => !(item != null && item.field_type === c2286_0.TERMS));
}
@@ -0,0 +1,35 @@
// Metro module 4677 (f4678).
import { AUTOMATIC_APPROVAL_FORM_FIELDS, MANUAL_APPROVAL_FORM_FIELDS } from "./MemberVerificationConstants";
import { GuildFeatures } from "../../Constants";
import { VerificationFormFieldTypes } from "./MemberVerificationTypes";
import { assertNever } from "../../utils/GlobalUtils";
export function isValidFormResponse({ required, response, field_type }) {
if (required) {
if (response == null) {
return false;
}
if (VerificationFormFieldTypes.TERMS !== field_type && VerificationFormFieldTypes.VERIFICATION !== field_type) {
if (VerificationFormFieldTypes.TEXT_INPUT !== field_type && VerificationFormFieldTypes.PARAGRAPH !== field_type) {
if (VerificationFormFieldTypes.MULTIPLE_CHOICE === field_type) {
return typeof response === "number";
}
return assertNever(field_type);
}
return typeof response === "string" ? response.trim() !== "" : typeof response === "string";
}
return Boolean(response);
}
return true;
}
export function removeInternalFields(a0) {
return a0.filter((item) => item.field_type !== VerificationFormFieldTypes.VERIFICATION);
}
export function isAutomaticApprovalFormField(a0) {
return AUTOMATIC_APPROVAL_FORM_FIELDS.has(a0?.field_type);
}
export function isManualApprovalFormField(a0) {
return MANUAL_APPROVAL_FORM_FIELDS.has(a0?.field_type);
}
export function guildHasVerificationGate(a0) {
return a0 != null && a0.features.has(GuildFeatures.MEMBER_VERIFICATION_GATE_ENABLED);
}
@@ -0,0 +1,228 @@
// Metro module 4007 (f4008).
import UserStore from "../../stores/UserStore";
import * as _GuildJoinRequestUtils from "./GuildJoinRequestUtils";
import Module589 from "../../_bundle/Module589";
import { fromGuildBasic } from "../../utils/GuildRecordUtils";
import Dispatcher from "../../Dispatcher";
let guildId, c2284_4, c2284_5, c2284_6;
const handleGatewayJoinRequestUpdate = function handleGatewayJoinRequestUpdate({ guildId: guildId2, request }) {
if (request != null) {
const r5 = {
joinRequestId: request.join_request_id,
guildId: request.guild_id,
userId: request.user_id,
user: request.user,
createdAt: request.created_at,
formResponses: request.form_responses,
rejectionReason: request.rejection_reason,
applicationStatus: request.application_status,
actionedAt: request.actioned_at,
actionedByUser: request.actioned_by_user,
lastSeen: request.last_seen,
interviewChannelId: request.interview_channel_id
};
const currentUser = UserStore.getCurrentUser();
if (currentUser != null && r5.userId !== currentUser.id) {
return false;
}
const isApprovedAndAcked = _GuildJoinRequestUtils.isApprovedAndAcked(r5);
if (isApprovedAndAcked) {
delete c2284_4[guildId2];
if (guildId === guildId2) {
guildId = null;
}
} else {
c2284_4[guildId2] = r5;
}
}
};
guildId = null;
c2284_4 = {};
c2284_5 = false;
c2284_6 = {};
class UserGuildJoinRequestStore extends Module589.Store {
static displayName = "UserGuildJoinRequestStore";
initialize() {
this.waitFor(UserStore);
}
getRequest(a0) {
return c2284_4[a0];
}
computeGuildIds() {
return Object.values(c2284_4).map((item) => item?.guildId).filter((item) => item != null);
}
getJoinRequestGuild(a0) {
return c2284_6[a0] != null ? fromGuildBasic(c2284_6[a0]) : null;
}
get hasFetchedRequestToJoinGuilds() {
return c2284_5;
}
hasJoinRequestCoackmark() {
return guildId != null;
}
}
const userGuildJoinRequestStore = new UserGuildJoinRequestStore(Dispatcher, {
CONNECTION_OPEN: function handleConnectionOpen({ guildJoinRequests }) {
c2284_5 = false;
c2284_6 = {};
c2284_4 = {};
guildJoinRequests.forEach((guildJoinRequest) => {
const guild_id = guildJoinRequest.guild_id;
if (guild_id != null) {
c2284_4[guild_id] = {
joinRequestId: guildJoinRequest.join_request_id,
guildId: guildJoinRequest.guild_id,
userId: guildJoinRequest.user_id,
user: guildJoinRequest.user,
createdAt: guildJoinRequest.created_at,
formResponses: guildJoinRequest.form_responses,
rejectionReason: guildJoinRequest.rejection_reason,
applicationStatus: guildJoinRequest.application_status,
actionedAt: guildJoinRequest.actioned_at,
actionedByUser: guildJoinRequest.actioned_by_user,
lastSeen: guildJoinRequest.last_seen,
interviewChannelId: guildJoinRequest.interview_channel_id
};
}
});
},
GUILD_JOIN_REQUEST_UPDATE: handleGatewayJoinRequestUpdate,
GUILD_JOIN_REQUEST_CREATE: handleGatewayJoinRequestUpdate,
GUILD_JOIN_REQUEST_DELETE: function handleRemoveJoinRequest({ guildId: guildId2 }) {
delete c2284_4[guildId2];
if (guildId === guildId2) {
guildId = null;
}
},
USER_GUILD_JOIN_REQUEST_UPDATE: function handleJoinRequestUpdate({ request, guildId: guildId2 }) {
if (request != null) {
const r9 = {
joinRequestId: request.join_request_id,
guildId: request.guild_id,
userId: request.user_id,
user: request.user,
createdAt: request.created_at,
formResponses: request.form_responses,
rejectionReason: request.rejection_reason,
applicationStatus: request.application_status,
actionedAt: request.actioned_at,
actionedByUser: request.actioned_by_user,
lastSeen: request.last_seen,
interviewChannelId: request.interview_channel_id
};
const isApprovedAndAcked = _GuildJoinRequestUtils.isApprovedAndAcked(r9);
if (isApprovedAndAcked) {
delete c2284_4[guildId2];
if (guildId === guildId2) {
guildId = null;
}
} else {
c2284_4[guildId2] = r9;
}
} else {
delete c2284_4[guildId2];
if (guildId === guildId2) {
guildId = null;
}
}
},
GUILD_DELETE: function handleGuildLeave(a0) {
const id = a0.guild.id;
delete c2284_4[id];
if (guildId === id) {
guildId = null;
}
},
USER_JOIN_REQUEST_GUILDS_FETCH: function handleJoinRequestGuildsFetch({ guilds }) {
c2284_5 = true;
guilds.forEach((guild) => {
const id = guild.id;
c2284_6[id] = {
id,
name: guild.name,
features: guild.features,
icon: guild.icon,
splash: guild.splash
};
});
},
MEMBER_VERIFICATION_FORM_UPDATE: function handleVerificationFormUpdate({ form, guildId: guildId2 }) {
if (form?.guild != null) {
const guild = form.guild;
const { id, name, icon } = guild;
let features = guild.features;
const splash = guild.splash;
if (features == null) {
features = [];
}
c2284_6[guildId2] = {
id,
name,
icon,
features,
splash
};
}
},
INVITE_ACCEPT_SUCCESS: function handleInviteSuccess({ invite }) {
const { guild, join_request } = invite;
if (guild != null && join_request != null) {
c2284_4[join_request.guild_id] = {
joinRequestId: join_request.join_request_id,
guildId: join_request.guild_id,
userId: join_request.user_id,
user: join_request.user,
createdAt: join_request.created_at,
formResponses: join_request.form_responses,
rejectionReason: join_request.rejection_reason,
applicationStatus: join_request.application_status,
actionedAt: join_request.actioned_at,
actionedByUser: join_request.actioned_by_user,
lastSeen: join_request.last_seen,
interviewChannelId: join_request.interview_channel_id
};
const { id, name, icon } = guild;
let features = guild.features;
const splash = guild.splash;
if (features == null) {
features = [];
}
c2284_6[id] = {
id,
name,
icon,
features,
splash
};
}
},
ACK_APPROVED_GUILD_JOIN_REQUEST: function handleAckApprovedGuildJoinRequest({ guildId: guildId2 }) {
delete c2284_4[guildId2];
if (guildId === guildId2) {
guildId = null;
}
},
USER_GUILD_JOIN_REQUEST_COACHMARK_SHOW: function handleShowCoachmark(a0) {
guildId = a0.guildId;
},
USER_GUILD_JOIN_REQUEST_COACHMARK_CLEAR: function handleClearCoachmark() {
guildId = null;
}
});
export default userGuildJoinRequestStore;
export function joinRequestFromServer(a0) {
return {
joinRequestId: a0.join_request_id,
guildId: a0.guild_id,
userId: a0.user_id,
user: a0.user,
createdAt: a0.created_at,
formResponses: a0.form_responses,
rejectionReason: a0.rejection_reason,
applicationStatus: a0.application_status,
actionedAt: a0.actioned_at,
actionedByUser: a0.actioned_by_user,
lastSeen: a0.last_seen,
interviewChannelId: a0.interview_channel_id
};
}
@@ -0,0 +1,14 @@
// Metro module 12626 (f12627).
import GuildStore from "../../stores/GuildStore";
import PermissionStore from "../../stores/PermissionStore";
import { GuildFeatures, Permissions } from "../../Constants";
import { useStateFromStores } from "../../_bundle/Module589";
import { guildHasVerificationGate } from "./MemberVerificationUtils";
export function canReviewGuildMemberApplications(a0) {
const guild = GuildStore.getGuild(a0);
return guild != null && (guild.features.has(GuildFeatures.MEMBER_VERIFICATION_MANUAL_APPROVAL) && PermissionStore.can(Permissions.KICK_MEMBERS, guild));
}
export function useCanReviewGuildMemberApplications(c19941_0) {
const stateFromStores = useStateFromStores([GuildStore], () => GuildStore.getGuild(c19941_0));
return stateFromStores != null && stateFromStores.features.has(GuildFeatures.MEMBER_VERIFICATION_MANUAL_APPROVAL) && PermissionStore.can(Permissions.KICK_MEMBERS, stateFromStores) && guildHasVerificationGate(stateFromStores);
}
@@ -0,0 +1,84 @@
// Metro module 9159 (f9160).
import _slicedToArray from "../../../_bundle/_slicedToArray";
import { useState, useCallback, useEffect } from "react";
import InviteStore from "../../../stores/InviteStore";
import UserGuildJoinRequestStore from "../UserGuildJoinRequestStore";
import { GuildFeatures } from "../../../Constants";
import { useStateFromStores } from "../../../_bundle/Module589";
import MemberVerificationActionCreators from "../MemberVerificationActionCreators";
let env6011 = {};
export function useCanReapplyToRejectedMemberVerificationApplication(a0) {
let c17043_0;
let env17042 = {
$parent: env6011
};
env17042[0] = a0;
const r14 = _slicedToArray(useState(true), 2);
const isLoading = r14[0];
env17042[1] = r14[1];
const stateFromStores = useStateFromStores([UserGuildJoinRequestStore], () => {
const r4 = env17042[0];
return r4 != null ? UserGuildJoinRequestStore.getJoinRequestGuild(r4) : void 0;
});
c17043_0 = void 0;
c17043_0 = async (c30051_0) => {
let c30051_1, c30051_3;
let c30051_4 = 0;
const r11 = void 0;
L12: {
try {
c30051_1 = r11;
c30051_4 = 1;
const inviteKeyForGuildId = InviteStore.getInviteKeyForGuildId(c30051_0);
if (inviteKeyForGuildId != null) {
await MemberVerificationActionCreators.fetchVerificationForm(c30051_0, inviteKeyForGuildId);
c30051_4 = 0;
(0, c30051_1.$parent[1])(false);
break L12;
}
c30051_4 = 0;
(0, c30051_1.$parent[1])(false);
} catch ($e) {
const r26 = $e;
let r7 = r26;
c30051_3 = r26;
if (c30051_4 !== 0) {
while (true) {
try {
const r68 = c30051_1;
const r69 = c30051_3;
c30051_4 = 0;
(0, r68.$parent[1])(false);
throw r69;
} catch (r66) {
r7 = r66;
c30051_3 = r66;
if (c30051_4 === 0) {
break;
}
}
}
}
throw r7;
}
return void 0;
}
};
const callback = useCallback(function() {
return c17043_0.apply(this, arguments);
}, []);
env17042[2] = callback;
useEffect(() => {
const r4 = env17042[0];
if (r4 == null) {
(0, env17042[1])(false);
} else {
(0, env17042[1])(true);
(0, env17042[2])(r4);
}
}, [a0, callback]);
return {
canReapply: stateFromStores != null && stateFromStores.features.has(GuildFeatures.MEMBER_VERIFICATION_MANUAL_APPROVAL),
isLoading
};
}
@@ -0,0 +1,6 @@
// Metro module 9158 (f9159).
import UserGuildJoinRequestStore from "../UserGuildJoinRequestStore";
import { useStateFromStores } from "../../../_bundle/Module589";
export function useCurrentUserGuildJoinRequest(a0) {
return useStateFromStores([UserGuildJoinRequestStore], () => a0 != null ? UserGuildJoinRequestStore.getRequest(a0) : null, [a0]);
}
@@ -0,0 +1,57 @@
// Metro module 11725 (f11726).
import { useState, useEffect } from "react";
import GuildStore from "../../../stores/GuildStore";
import PermissionStore from "../../../stores/PermissionStore";
import GuildJoinRequestStore from "../GuildJoinRequestStore";
import UserGuildJoinRequestStore from "../UserGuildJoinRequestStore";
import { Permissions } from "../../../Constants";
import SnowflakeUtils from "../../../utils/SnowflakeUtils";
import { useStateFromStoresObject } from "../../../_bundle/Module589";
import GuildJoinRequestActionCreators from "../GuildJoinRequestActionCreators";
export default function useGetJoinRequestAndGuildForInterviewChannel(a0) {
let joinRequest, guild;
const [loading, setState] = useState(false);
const [state, setState2] = useState(false);
const r24 = SnowflakeUtils.cast(a0);
let c19097_3 = r24;
const stateFromStoresObject = useStateFromStoresObject([GuildJoinRequestStore, UserGuildJoinRequestStore, GuildStore, PermissionStore], () => {
const request = GuildJoinRequestStore.getRequest(c19097_3);
if (request == null) {
return {
joinRequest: null,
isModmin: false,
guild: null
};
}
let guild2 = GuildStore.getGuild(request.guildId);
if (guild2 == null) {
guild2 = UserGuildJoinRequestStore.getJoinRequestGuild(request.guildId);
}
return {
joinRequest: request,
isModmin: guild2 != null && PermissionStore.can(Permissions.KICK_MEMBERS, guild2),
guild: guild2
};
});
joinRequest = stateFromStoresObject.joinRequest;
guild = stateFromStoresObject.guild;
useEffect(() => {
if (!(guild != null || state)) {
setState2(true);
GuildJoinRequestActionCreators.fetchRequestToJoinGuilds();
}
}, [guild, state]);
useEffect(() => {
if (joinRequest == null) {
setState(true);
GuildJoinRequestActionCreators.fetchJoinRequestForInterview(c19097_3).finally(() => {
setState(false);
});
}
}, [joinRequest, r24]);
return {
loading,
joinRequest,
joinRequestGuild: guild
};
};
@@ -0,0 +1,16 @@
// Metro module 11957 (f11958).
import { useEffect } from "react";
import UserGuildJoinRequestStore from "../UserGuildJoinRequestStore";
import { useStateFromStores } from "../../../_bundle/Module589";
import GuildJoinRequestActionCreators from "../GuildJoinRequestActionCreators";
export default function useGetGuildJoinRequest(c19291_0) {
let stateFromStores;
const stateFromStores2 = useStateFromStores([UserGuildJoinRequestStore], () => c19291_0 != null ? UserGuildJoinRequestStore.getRequest(c19291_0) : null);
stateFromStores = useStateFromStores([UserGuildJoinRequestStore], () => UserGuildJoinRequestStore.hasFetchedRequestToJoinGuilds);
useEffect(() => {
if (!stateFromStores) {
GuildJoinRequestActionCreators.fetchRequestToJoinGuilds();
}
}, [stateFromStores]);
return stateFromStores2;
};
@@ -0,0 +1,20 @@
// Metro module 15452 (f15453).
import { useEffect, useMemo } from "react";
import GuildJoinRequestStore from "../GuildJoinRequestStore";
import { useStateFromStores } from "../../../_bundle/Module589";
import GuildJoinRequestActionCreators from "../GuildJoinRequestActionCreators";
export function useOtherGuildJoinRequestsForUser({ guildId, userId, selectedJoinRequestId }) {
const stateFromStores = useStateFromStores([GuildJoinRequestStore], () => GuildJoinRequestStore.getRequestsForUser(guildId, userId), [guildId, userId]);
useEffect(() => {
if (stateFromStores == null) {
GuildJoinRequestActionCreators.fetchGuildJoinRequestsForUser(guildId, userId);
}
}, [guildId, userId, stateFromStores]);
return useMemo(() => {
let r3 = stateFromStores;
if (stateFromStores == null) {
r3 = [];
}
return r3.filter((item) => item.joinRequestId !== selectedJoinRequestId).slice().sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
}, [stateFromStores, selectedJoinRequestId]);
}
@@ -0,0 +1,162 @@
// Metro module 15454 (f15455).
import _slicedToArray from "../../../_bundle/_slicedToArray";
import { useRef, useState, useCallback } from "react";
import { MAX_RESULTS_PER_PAGE, MAX_VISIBLE_PAGES, GuildJoinRequestApplicationStatuses, GuildJoinRequestSortOrders } from "../MemberVerificationTypes";
import SnowflakeUtils from "../../../utils/SnowflakeUtils";
import GuildJoinRequestActionCreators from "../GuildJoinRequestActionCreators";
import { APIError } from "../../../errors/index";
let env10990 = {};
const c10990_6 = MAX_RESULTS_PER_PAGE * MAX_VISIBLE_PAGES;
export { c10990_6 as MEMBER_APPLICATION_FETCH_LIMIT };
export function usePaginatedMemberApplications(a0) {
let env22017 = {
$parent: env10990
};
const guildId = a0.guildId;
env22017[0] = guildId;
const guildJoinRequests = a0.guildJoinRequests;
env22017[1] = guildJoinRequests;
env22017[2] = void 0;
env22017[3] = void 0;
env22017[4] = void 0;
env22017[5] = void 0;
env22017[6] = void 0;
env22017[2] = useRef(false);
const r16 = _slicedToArray(useState(null), 2);
const error = r16[0];
env22017[3] = error;
env22017[4] = r16[1];
env22017[5] = useRef(null);
env22017[6] = useRef(false);
let c22018_0 = async (c30876_0, status) => {
let c30876_2, c30876_3, c30876_4;
let c30876_5 = 0;
const r11 = void 0;
const r10 = env10990;
L23: {
L22: {
try {
let env31761;
c30876_3 = r11;
const r39 = env31761 = {
$parent: r10
};
c30876_2 = r39;
env31761[0] = void 0;
env31761[1] = void 0;
if (env22017[2].current) {
break L23;
}
const current2 = `${c30876_0}-${status}`;
const r45 = env22017[5];
const current = r45.current;
let r22 = false;
if (current2 === current) {
if (env22017[6].current) {
break L23;
}
} else {
r45.current = current2;
env22017[6].current = false;
r22 = true;
if (env22017[6].current) {
break L23;
}
}
if (env22017[3] != null) {
(0, env22017[4])(null);
}
const guildId = env22017[0];
const r54 = (function getRequestPaginationParams(a0, a1, a2, a3, a4) {
const r3 = a3 === GuildJoinRequestApplicationStatuses.SUBMITTED;
if (a2 === GuildJoinRequestSortOrders.TIMESTAMP_DESC) {
if (!a4 && a1.length !== 0) {
const r34 = a1[a1.length - 1];
return {
before: r3 ? r34.joinRequestId : r34.actionedAt
};
}
return {
before: SnowflakeUtils.fromTimestamp(new Date().getTime())
};
}
if (!a4 && a1.length !== 0) {
const r24 = a1[a1.length - 1];
return {
after: r3 ? r24.joinRequestId : r24.actionedAt
};
}
return {
after: a0
};
})(guildId, env22017[1], c30876_0, status, r22);
c30876_5 = 2;
env22017[2].current = true;
env31761[0] = await GuildJoinRequestActionCreators.fetchGuildJoinRequests({
guildId,
status,
limit: c10990_6,
force: true,
...r54
});
if (env31761[0] != null && env31761[0].body.guild_join_requests.length < c10990_6) {
env22017[6].current = true;
}
c30876_5 = 1;
c30876_5 = 0;
env22017[2].current = false;
} catch ($e) {
const r37 = $e;
let r7 = r37;
c30876_4 = r37;
let r38 = c30876_5;
if (r38 !== 0) {
while (true) {
if (r38 === 1) {
try {
const r141 = c30876_4;
c30876_5 = 0;
env22017[2].current = false;
throw r141;
} catch (r139) {
r7 = r139;
c30876_4 = r139;
r38 = c30876_5;
if (r38 === 0) {
break;
}
}
} else {
try {
const r114 = c30876_4;
c30876_5 = 1;
env31761[2] = r114;
env31761[1] = new APIError(env31761[2]);
(0, env22017[4])(env31761[1].getAnyErrorMessage());
c30876_5 = 0;
env22017[2].current = false;
break L22;
} catch (r111) {
r7 = r111;
c30876_4 = r111;
r38 = c30876_5;
if (r38 === 0) {
break;
}
}
}
}
}
throw r7;
}
}
return void 0;
}
};
return {
fetchNextPage: useCallback(function() {
return c22018_0.apply(this, arguments);
}, [error, guildId, guildJoinRequests]),
error
};
}
@@ -0,0 +1,20 @@
// Metro module 9147 (f9148).
import { useEffect } from "react";
import GuildStore from "../../../stores/GuildStore";
import MemberVerificationFormStore from "../MemberVerificationFormStore";
import { useStateFromStores } from "../../../_bundle/Module589";
import MemberVerificationActionCreators from "../MemberVerificationActionCreators";
import { fromVerificationGateGuild } from "../../../utils/GuildRecordUtils";
export default function usePreviewDisabledGuild(a0) {
let r14 = useStateFromStores([GuildStore], () => GuildStore.getGuild(a0));
const stateFromStores = useStateFromStores([MemberVerificationFormStore], () => MemberVerificationFormStore.get(a0)?.guild);
useEffect(() => {
if (a0 != null) {
MemberVerificationActionCreators.fetchVerificationForm(a0);
}
}, [a0]);
if (r14 == null) {
r14 = stateFromStores != null ? fromVerificationGateGuild(stateFromStores) : null;
}
return r14;
};
@@ -0,0 +1,31 @@
// Metro module 4676 (f4677).
import GuildMemberStore from "../../../stores/GuildMemberStore";
import GuildStore from "../../../stores/GuildStore";
import UserStore from "../../../stores/UserStore";
import { guildHasVerificationGate } from "../MemberVerificationUtils";
import { useStateFromStores } from "../../../_bundle/Module589";
const shouldShowMembershipVerificationGate = function shouldShowMembershipVerificationGate(a0, r6 = [GuildStore, UserStore, GuildMemberStore]) {
const [r32, r33, r35] = r6;
if (a0 == null) {
return false;
}
const guild = r32.getGuild(a0);
const currentUser = r33.getCurrentUser();
const r3 = currentUser != null;
let r45 = false;
if (r3) {
let r50 = r35.getMember(a0, currentUser.id)?.isPending;
if (r50 == null) {
r50 = false;
}
r45 = r50;
}
if (r45) {
r45 = !!guildHasVerificationGate(guild);
}
return r45;
};
export { shouldShowMembershipVerificationGate };
export function useShowMemberVerificationGate(a0) {
return useStateFromStores([GuildStore, UserStore, GuildMemberStore], () => a0 != null && shouldShowMembershipVerificationGate(a0, [GuildStore, UserStore, GuildMemberStore]), [a0]);
}
@@ -0,0 +1,11 @@
// Metro module 15453 (f15454).
import { useMemo } from "react";
import GuildJoinRequestStore from "../GuildJoinRequestStore";
import { useStateFromStores } from "../../../_bundle/Module589";
import { GuildJoinRequestSortOrders } from "../MemberVerificationTypes";
export function useSortedMemberApplications({ guildId, applicationStatus, sortOrder }) {
const stateFromStores = useStateFromStores([GuildJoinRequestStore], () => GuildJoinRequestStore.getRequests(guildId, applicationStatus), [applicationStatus, guildId]);
return {
guildJoinRequests: useMemo(() => sortOrder === GuildJoinRequestSortOrders.TIMESTAMP_DESC ? [...stateFromStores].reverse() : stateFromStores, [sortOrder, stateFromStores])
};
}
@@ -0,0 +1,6 @@
// Metro module 15182 (f15183).
import GuildJoinRequestStore from "../GuildJoinRequestStore";
import { useStateFromStores } from "../../../_bundle/Module589";
export function useSubmittedGuildJoinRequestTotal({ guildId }) {
return useStateFromStores([GuildJoinRequestStore], () => guildId != null ? GuildJoinRequestStore.getSubmittedGuildJoinRequestTotal(guildId) : void 0, [guildId]);
}
@@ -0,0 +1,34 @@
// Metro module 9146 (f9147).
import Module589 from "../../../_bundle/Module589";
import Dispatcher from "../../../Dispatcher";
let c6000_2 = new Map();
class InitialMemberVerificationStore extends Module589.Store {
static displayName = "InitialMemberVerificationStore";
getInitialVerificationState(a0) {
const r1 = a0 == null;
let r2 = null;
if (!r1) {
let r7 = c6000_2.get(a0);
if (r7 == null) {
r7 = null;
}
r2 = r7;
}
return r2;
}
}
const initialMemberVerificationStore = new InitialMemberVerificationStore(Dispatcher, {
SET_INITIAL_MEMBER_VERIFICATION: function handleSetInitialState({ guildId, state }) {
if (!c6000_2.has(guildId)) {
c6000_2.set(guildId, state);
}
}
});
export default initialMemberVerificationStore;
export function setInitialVerification(a0, a1) {
Dispatcher.dispatch({
type: "SET_INITIAL_MEMBER_VERIFICATION",
guildId: a0,
state: a1
});
}
@@ -0,0 +1,167 @@
// Metro module 9148 (f9149).
import { dismissGlobalKeyboard } from "../../../utils/native/KeyboardManagerUtils";
import AlertActionCreators from "../../../actions/native/AlertActionCreators";
import { Button } from "../../../design/components/Button/native/Button.native";
import { intl, t } from "../../../intl/index.native";
import { $withEnv } from "../../../_hermes/prelude";
function $mk82007($env) {
return () => {
const r1 = $env.$parent;
const r3 = r1[0];
const r4 = r1[3];
return r3(r4[5])(r4[7], r4.paths).then($mk106271($env));
};
}
function $mk82008($env) {
return () => {
const r2 = $env.$parent;
(0, r2[1])(r2[3][3]).close();
const r10 = $env[0];
if (r10 != null) {
r10();
}
};
}
function $mk106271($env) {
return (a0) => {
let env30036 = {
$parent: $env
};
env30036[0] = a0.default;
return (a0) => {
let env31488;
const r4 = env30036.$parent.$parent;
const r3 = r4[4];
const r2 = env30036[0];
const r10 = env30036.$parent;
const r13 = r10[3];
const r14 = env31488 = {
$parent: r4
};
env31488[0] = r13;
return r3(r2, {
...a0,
guildId: r10[0],
confirmText: r10[1],
subtitleText: r10[2],
onClose: $withEnv($mk82008(r14), r14)
});
};
};
}
let env6002 = {};
export function openMemberVerificationSuccessAlert(guildId, handleConfirmAndAck) {
dismissGlobalKeyboard();
AlertActionCreators.openLazy({
importer: () => import("./components/alerts/MemberVerificationAlertSuccess").then(({ default: Component }) => (a0) => <Component {...a0} guildId={guildId} handleConfirmAndAck={handleConfirmAndAck} />)
});
}
export function openMemberVerificationPendingAlert(guildId2, c17033_1) {
dismissGlobalKeyboard();
AlertActionCreators.openLazy({
importer: () => import("./components/alerts/MemberVerificationAlertPending").then(({ default: Component2 }) => (a0) => {
let env31489;
const r4 = env6002;
const r12 = env31489 = {
$parent: r4
};
env31489[0] = c17033_1;
return <Component2 {...a0} guildId={guildId2} onClose={$withEnv($mk82008(r12), r12)} />;
})
});
}
export function openMemberVerificationCancelPendingAlert(a0) {
let env17030;
const r4 = env17030 = {
$parent: env6002
};
env17030[0] = a0.guildId;
env17030[1] = a0.confirmText;
env17030[2] = a0.subtitleText;
env17030[3] = a0.onClose;
dismissGlobalKeyboard();
AlertActionCreators.openLazy({
importer: $mk82007(r4)
});
}
export function openMemberVerificationRejectedAlert({ guildId: guildId3, canWithdraw, onClose }) {
let env17035;
const r13 = env17035 = {
$parent: env6002
};
env17035[0] = onClose;
const onPress2 = $withEnv($mk82008(r13), r13);
let c17034_2 = onPress2;
const secondaryButton = <Button {...canWithdraw ? {
text: intl.string(t.g9tK0o),
variant: "destructive",
onPress: () => {
const r8 = c17034_2.$env;
const r9 = r8.$parent;
(0, r9[1])(r9[3][3]).close();
const r15 = r8[0];
if (r15 != null) {
r15();
}
let env26370;
const r17 = env6002;
const r19 = {
guildId: guildId3
};
const r20 = env26370 = {
$parent: r17
};
env26370[0] = r19.guildId;
env26370[1] = r19.confirmText;
env26370[2] = r19.subtitleText;
env26370[3] = r19.onClose;
dismissGlobalKeyboard();
AlertActionCreators.openLazy({
importer: $mk82007(r20)
});
}
} : {
text: intl.string(t.BddRzS),
onPress: onPress2
}} />;
dismissGlobalKeyboard();
AlertActionCreators.openLazy({
importer: () => import("./components/alerts/MemberVerificationAlertRejected").then(({ default: Component3 }) => (a0) => {
let env31490;
const r12 = env31490 = {
$parent: env6002
};
env31490[0] = onClose;
return <Component3 {...a0} guildId={guildId3} onClose={$withEnv($mk82008(r12), r12)} secondaryButton={secondaryButton} />;
})
});
}
export function openMemberVerificationUpdateAlert() {
dismissGlobalKeyboard();
AlertActionCreators.openLazy({
importer: () => import("./components/alerts/MemberVerificationAlertUpdate").then(({ default: Component4 }) => (a0) => <Component4 {...a0} />)
});
}
export function closeMemberVerificationAlert(a0) {
let env17031;
const r0 = env17031 = {
$parent: env6002
};
env17031[0] = a0;
return $withEnv($mk82008(r0), r0);
}
export function openMemberVerificationIncompleteAlert(guildId4, c17036_1) {
dismissGlobalKeyboard();
AlertActionCreators.openLazy({
isDismissable: true,
importer: () => import("./components/alerts/MemberVerificationAlertIncomplete").then(({ default: Component5 }) => (a0) => {
let env31491;
const r4 = env6002;
const r12 = env31491 = {
$parent: r4
};
env31491[0] = c17036_1;
return <Component5 {...a0} guildId={guildId4} onClose={$withEnv($mk82008(r12), r12)} />;
})
});
}
@@ -0,0 +1,28 @@
// Metro module 9142 (f9143).
import { IN_APP_MEMBER_VERIFICATION_MODAL_KEY, MEMBER_VERIFICATION_TYPE } from "../MemberVerificationConstants";
import { AnalyticEvents } from "../../../Constants";
import AnalyticsUtils from "../../../utils/AnalyticsUtils";
import MemberVerificationActionCreators from "../MemberVerificationActionCreators";
import ModalActionCreators from "../../../actions/ModalActionCreators";
const r21 = {
openMemberVerificationModal: (a0, a1) => {
MemberVerificationActionCreators.fetchVerificationForm(a0);
AnalyticsUtils.track(AnalyticEvents.OPEN_MODAL, {
type: MEMBER_VERIFICATION_TYPE,
guild_id: a0
});
ModalActionCreators.pushLazy(import("./components/MemberVerificationModal"), {
guildId: a0,
onClose: a1
}, IN_APP_MEMBER_VERIFICATION_MODAL_KEY);
},
closeMemberVerificationModal: function closeMemberVerificationModal(r3 = false) {
if (!r3) {
AnalyticsUtils.track(AnalyticEvents.MODAL_DISMISSED, {
type: MEMBER_VERIFICATION_TYPE
});
}
ModalActionCreators.popWithKey(IN_APP_MEMBER_VERIFICATION_MODAL_KEY);
}
};
export default r21;
@@ -0,0 +1,63 @@
// Metro module 9145 (f9146).
import { useRef, useEffect } from "react";
import UserStore from "../../../stores/UserStore";
import InitialMemberVerificationStore, { setInitialVerification } from "./InitialMemberVerificationStore";
import { useStateFromStores, useStateFromStoresObject } from "../../../_bundle/Module589";
import { UserVerificationFieldPlatforms } from "../MemberVerificationTypes";
function $mk82001($env) {
return () => $env.$parent[4].getInitialVerificationState($env[0]);
}
let $mk82000 = function() {
return () => {
const currentUser = UserStore.getCurrentUser();
const EMAIL = UserVerificationFieldPlatforms.EMAIL;
let r6 = currentUser?.verified;
if (r6 == null) {
r6 = false;
}
const r14 = {};
r14[EMAIL] = r6;
const PHONE = UserVerificationFieldPlatforms.PHONE;
let r20 = currentUser == null ? void 0 : currentUser.isPhoneVerified();
if (r20 == null) {
r20 = false;
}
r14[PHONE] = r20;
return r14;
};
};
let env5999 = {};
export function useSetInitialVerificationEffect(a0) {
let env17028;
const r7 = env17028 = {
$parent: env5999
};
env17028[0] = a0;
const current = {
initial: useStateFromStores([InitialMemberVerificationStore], $mk82001(r7), [a0]),
current: useStateFromStoresObject([UserStore], $mk82000())
};
const ref = useRef(current);
useEffect(() => {
ref.current = current;
});
useEffect(() => {
const current3 = ref.current;
const current2 = current3.current;
if (current3.initial == null) {
(0, setInitialVerification)(a0, current2);
}
}, [a0]);
return current.initial;
}
export function useUserVerificationState() {
return useStateFromStoresObject([UserStore], $mk82000());
}
export function useInitialVerification(a0) {
let env17026;
const r1 = env17026 = {
$parent: env5999
};
env17026[0] = a0;
return useStateFromStores([InitialMemberVerificationStore], $mk82001(r1), [a0]);
}
@@ -0,0 +1,93 @@
// Metro module 11724 (f11725).
import { View } from "react-native";
import PermissionStore from "../../../../stores/PermissionStore";
import UserStore from "../../../../stores/UserStore";
import { Permissions } from "../../../../Constants";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import useGetJoinRequestAndGuildForInterviewChannel from "../../hooks/useGetJoinRequestAndGuildForInterviewChannel";
import { useStateFromStores } from "../../../../_bundle/Module589";
import { useJoinRequestButtonActions } from "../useJoinRequestButtonActions";
import GuildIcon, { GuildIconSizes } from "../../../guild/native/GuildIcon";
import { Text } from "../../../../design/components/Text/native/Text";
import { intl, t } from "../../../../intl/index.native";
import { VerificationFormFieldTypes, GuildJoinRequestApplicationStatuses } from "../../MemberVerificationTypes";
import { ButtonGroup } from "../../../../design/components/ButtonGroup/native/ButtonGroup.native";
import { Button } from "../../../../design/components/Button/native/Button.native";
const useStyles = createStyles({
container: {
width: "100%",
marginTop: 12,
display: "flex",
flexDirection: "column",
alignSelf: "flex-start",
padding: 16,
backgroundColor: Module712.colors.BACKGROUND_SURFACE_HIGH,
borderColor: Module712.colors.BORDER_SUBTLE,
borderWidth: 1,
borderRadius: Module712.radii.lg
},
guildInfoRow: {
display: "flex",
flexDirection: "row",
alignItems: "center",
gap: 4
},
divider: {
backgroundColor: Module712.colors.BORDER_SUBTLE,
height: 1,
border: "none",
marginVertical: 16
},
formQuestion: {
marginBottom: 4
}
});
export default function ChatBeginningRowJoinRequest(props) {
const channelId = props.channelId;
const styles = useStyles();
const getJoinRequestAndGuildForInterviewChannel = useGetJoinRequestAndGuildForInterviewChannel(channelId);
const { joinRequest, joinRequestGuild } = getJoinRequestAndGuildForInterviewChannel;
const stateFromStores = useStateFromStores([UserStore], () => UserStore.getUser(joinRequest?.userId));
const joinRequestButtonActions = useJoinRequestButtonActions(joinRequest, channelId);
const { approveRequest, rejectRequest } = joinRequestButtonActions;
let r43 = useStateFromStores([PermissionStore], () => PermissionStore.can(Permissions.KICK_MEMBERS, joinRequestGuild));
const r2 = joinRequest == null;
let r44 = null;
if (!r2) {
const r46 = joinRequest.formResponses == null;
r44 = null;
if (!r46) {
const r90 = [<View style={styles.container}>
{joinRequestGuild != null && <View style={styles.guildInfoRow}>
<GuildIcon guild={joinRequestGuild} size={GuildIconSizes.XXSMALL} />
<Text variant="heading-sm/semibold" color="mobile-text-heading-primary">{joinRequestGuild.name}</Text>
</View>}
{stateFromStores != null && <Text variant="heading-xl/semibold" color="mobile-text-heading-primary">
{intl.format(t.jDV3i6, {
username: stateFromStores.globalName
})}
</Text>}
{joinRequest.formResponses.filter((formResponse) => formResponse.field_type !== VerificationFormFieldTypes.TERMS).map((item, index) => <View key={`form-response-${index}`}>
<View style={styles.divider} />
<Text style={styles.formQuestion} variant="text-xs/semibold" color="text-muted">{item.label}</Text>
<Text variant="text-md/medium" color="text-strong">
{item.field_type === VerificationFormFieldTypes.MULTIPLE_CHOICE && item.response != null ? item.choices[item.response] : item.response}
</Text>
</View>)}
</View>, ,];
if (r43) {
r43 = joinRequest.applicationStatus === GuildJoinRequestApplicationStatuses.SUBMITTED;
}
if (r43) {
r43 = <ButtonGroup direction="horizontal" align="center">
<Button grow size="md" variant="primary" onPress={approveRequest} text={intl.string(t.BzjDQJ)} />
<Button grow size="md" variant="destructive" onPress={rejectRequest} text={intl.string(t.hDtbsz)} />
</ButtonGroup>;
}
r90[1] = r43;
r44 = <>{r90}</>;
}
}
return r44;
};
@@ -0,0 +1,56 @@
// Metro module 15181 (f15182).
import { useEffect, useCallback } from "react";
import { GuildFeatures, Routes } from "../../../../Constants";
import { StaticChannelRoute } from "../../../channel/ChannelConstants";
import { CHANNEL_MARGIN_VERTICAL } from "../../../channel_list_v2/native/RedesignChannelListConstants";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import { useSubmittedGuildJoinRequestTotal } from "../../hooks/useSubmittedGuildJoinRequestTotal";
import GuildJoinRequestActionCreators from "../../GuildJoinRequestActionCreators";
import { GuildJoinRequestApplicationStatuses } from "../../MemberVerificationTypes";
import { transitionTo } from "../../../routing/router_utils";
import BaseChannelItem, { ChannelModes, BaseChannelName, BaseChannelIcon } from "../../../guild_sidebar/native/BaseChannelItem";
import { intl, t } from "../../../../intl/index.native";
import { GroupIcon } from "../../../../design/components/Icon/native/redesign/generated/GroupIcon";
import { Badge } from "../../../../design/void/native";
const useStyles = createStyles({
container: {
marginVertical: CHANNEL_MARGIN_VERTICAL,
marginHorizontal: 8,
borderRadius: Module712.radii.md
},
badge: {
backgroundColor: Module712.colors.BADGE_BACKGROUND_DEFAULT
},
badgeText: {
color: Module712.colors.BADGE_TEXT_DEFAULT
}
});
export default function GuildMemberDashChannelRow(props) {
const { guild, selected } = props;
const styles = useStyles();
const id = guild.id;
let value = useSubmittedGuildJoinRequestTotal({
guildId: id
});
if (value == null) {
value = 0;
}
const r24 = guild.features.has(GuildFeatures.MEMBER_VERIFICATION_MANUAL_APPROVAL);
let c21742_1 = r24;
useEffect(() => {
if (c21742_1) {
GuildJoinRequestActionCreators.fetchGuildJoinRequests({
guildId: id,
status: GuildJoinRequestApplicationStatuses.SUBMITTED
});
}
}, [guild.features, id, r24]);
const callback = useCallback(() => {
transitionTo(Routes.CHANNEL(id, StaticChannelRoute.MEMBER_SAFETY));
}, [id]);
const mode = selected ? ChannelModes.SELECTED : ChannelModes.DEFAULT;
return <BaseChannelItem onPress={callback} style={styles.container} accessible accessibilityLabel={intl.string(t["9Oq93m"])} accessibilityState={{
selected
}} mode={mode} name={<BaseChannelName name={intl.string(t["9Oq93m"])} mode={mode} />} icon={<BaseChannelIcon mode={mode} IconComponent={GroupIcon} />} channelInfo={value > 0 ? <Badge style={styles.badge} textStyle={styles.badgeText} value={value} /> : null} />;
};
@@ -0,0 +1,121 @@
// Metro module 15449 (f15450).
import { useRef, useCallback, useEffect, memo } from "react";
import { View } from "react-native";
import AccessibilityStore from "../../../a11y/AccessibilityStore";
import UserRecord from "../../../../records/UserRecord";
import UserStore from "../../../../stores/UserStore";
import { EMPTY_STRING_SNOWFLAKE_ID } from "../../../../Constants";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import { useStateFromStores } from "../../../../_bundle/Module589";
import useDisplayProfile from "../../../user_profile/hooks/useDisplayProfile";
import { useBottomSheetRef } from "../../../../design/components/Sheet/native/useBottomSheetRef";
import { useSharedValue } from "../../../reanimated/ReanimatedRexport";
import useProfileTheme from "../../../user_profile/hooks/useProfileTheme";
import useTheme from "../../../../hooks/useTheme";
import { useProfileThemeValues } from "../../../user_profile/useProfileThemeValues.native";
import { useToken } from "../../../../design/tokens/native/useToken";
import Module712 from "../../../../_bundle/Module712";
import { int2hex } from "../../../../_bundle/int2hslRaw";
import { calculateOverlayedColor } from "../../../user_profile/UserProfileGradientUtils";
import { trackMemberApplicationViewed } from "../../GuildJoinRequestAnalyticUtils";
import isChangelogUser from "../../../changelog/utils/isChangelogUser";
import maybeFetchUserProfile from "../../../user_profile/maybeFetchUserProfile";
import { BottomSheet } from "../../../../design/components/Sheet/native/BottomSheet.native";
import { EmptyState } from "../../../../design/void/native";
import { NoResults } from "../../../../design/components/Illustration/native/redesign/generated/NoResults";
import { intl, t } from "../../../../intl/index.native";
import { ThemeContextProvider } from "../../../../_bundle/Module3901";
import { BottomSheetScrollView } from "../../../../_bundle/Module5245";
import JoinRequestActionSheetContent from "./JoinRequestActionSheetContent";
import { ActionSheetHeaderBar } from "../../../../design/components/Sheet/native/ActionSheetHeaderBar.native";
let useStyles;
export function JoinRequestActionSheet(props) {
let sharedValue;
const joinRequest = props.joinRequest;
sharedValue = void 0;
const styles = useStyles();
const { user, userId, guildId } = joinRequest;
const stateFromStores = useStateFromStores([UserStore], () => {
let r8 = UserStore.getUser(userId);
if (r8 == null) {
r8 = new UserRecord(user);
}
return r8;
}, [user, userId]);
let r37 = user?.id;
if (r37 == null) {
r37 = EMPTY_STRING_SNOWFLAKE_ID;
}
const displayProfile = useDisplayProfile(r37);
const bottomSheetRef = useBottomSheetRef();
const { bottomSheetRef: bottomSheetRef2, bottomSheetClose } = bottomSheetRef;
const ref = useRef(null);
sharedValue = useSharedValue(0);
const callback = useCallback((a0) => {
sharedValue.set(a0.nativeEvent.contentOffset.y);
}, [sharedValue]);
const profileTheme = useProfileTheme({
user: stateFromStores,
displayProfile
});
const { theme: theme2, primaryColor, secondaryColor } = profileTheme;
const stateFromStores2 = useStateFromStores([AccessibilityStore], () => AccessibilityStore.syncProfileThemeWithUserTheme);
const theme = useTheme();
const profileThemeValues = useProfileThemeValues(theme2);
const token = useToken(Module712.colors.INTERACTIVE_TEXT_HOVER, theme2);
const r75 = profileThemeValues == null;
const r29 = stateFromStores2 ? r75 ? void 0 : profileThemeValues.overlaySyncedWithUserTheme : r75 ? void 0 : profileThemeValues.overlay;
const token2 = useToken(Module712.colors.MOBILE_ACTIONSHEET_GRADIENT_BACKGROUND_DEFAULT, theme);
const backgroundColor = secondaryColor != null ? profileThemeValues != null ? r29 != null ? int2hex(calculateOverlayedColor(secondaryColor, r29)) : token2 : token2 : token2;
useEffect(() => {
trackMemberApplicationViewed({
guildId,
applicationStatus: joinRequest.applicationStatus,
applicationUserId: joinRequest.userId
});
}, [guildId, joinRequest.applicationStatus, joinRequest.userId]);
useEffect(() => {
if (!(stateFromStores == null || stateFromStores.isNonUserBot() && !isChangelogUser(stateFromStores.id))) {
maybeFetchUserProfile(stateFromStores.id, stateFromStores.getAvatarURL(guildId, 80), {
type: "action_sheet",
withMutualGuilds: true,
withMutualFriends: true,
dispatchWait: true,
guildId
});
}
}, [guildId, stateFromStores]);
return user == null ? <BottomSheet>
<EmptyState style={{
marginTop: 42
}} Illustration={NoResults} body={intl.string(t.eAn6z2)} />
</BottomSheet> : <ThemeContextProvider theme={theme2} primaryColor={primaryColor} secondaryColor={secondaryColor}>
<BottomSheet ref={bottomSheetRef2} handleDisabled scrollable startExpanded contentStyles={styles.noPadding}>
<BottomSheetScrollView scrollsToTop={false} style={[styles.container, {
backgroundColor
}]} ref={ref} onScroll={callback}>
<View>
<View style={styles.profileContainer}>
<JoinRequestActionSheetContent joinRequest={joinRequest} user={stateFromStores} displayProfile={displayProfile} />
</View>
</View>
</BottomSheetScrollView>
<ActionSheetHeaderBar variant="floating" tabStyle={{
backgroundColor: token
}} onPress={bottomSheetClose} />
</BottomSheet>
</ThemeContextProvider>;
}
useStyles = createStyles({
container: {
flex: 1
},
profileContainer: {
position: "relative"
},
noPadding: {
paddingHorizontal: 0
}
});
const r41 = memo(JoinRequestActionSheet);
export default r41;
@@ -0,0 +1,380 @@
// Metro module 15450 (f15451).
import * as Module19 from "react";
import { useCallback, useMemo } from "react";
import { View } from "react-native";
import ChannelStore from "../../../../stores/ChannelStore";
import { ACTION_SHEET_MAX_WIDTH } from "../../../action_sheet/native/ActionSheetConstants";
import { PROFILE_CONTENT_WITHOUT_STATUS_TOP_PADDING } from "../../../user_profile/native/Constants";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import UserProfileSharedStyles from "../../../user_profile/native/UserProfileSharedStyles";
import useUserProfileBannerHeight from "../../../user_profile/hooks/native/useUserProfileBannerHeight";
import useProfileTheme from "../../../user_profile/hooks/useProfileTheme";
import { useUserProfileColors } from "../../../user_profile/hooks/native/useUserProfileColors";
import showUserProfileActionSheet from "../../../user_profile/native/showUserProfileActionSheet";
import openJoinRequestActionSheet from "../openJoinRequestActionSheet";
import UserProfileBanner from "../../../user_profile/native/UserProfileBanner";
import UserProfileAvatar from "../../../user_profile/native/UserProfileAvatar";
import UserProfileGradientContainer from "../../../user_profile/native/UserProfileGradientContainer";
import { PrimaryInfo } from "../../../user_profile/native/UserProfileContent";
import UserProfileMutuals from "../../../user_profile/native/UserProfileMutuals";
import { useStateFromStores } from "../../../../_bundle/Module589";
import { useJoinRequestButtonActions } from "../useJoinRequestButtonActions";
import { isActionedApplicationStatus } from "../../GuildJoinRequestUtils";
import { Button } from "../../../../design/components/Button/native/Button.native";
import { ChatIcon } from "../../../../design/components/Icon/native/redesign/generated/ChatIcon";
import { intl, t } from "../../../../intl/index.native";
import { GuildJoinRequestApplicationStatuses, VerificationFormFieldTypes } from "../../MemberVerificationTypes";
import { HourglassIcon } from "../../../../design/components/Icon/native/redesign/generated/HourglassIcon";
import { Text } from "../../../../design/components/Text/native/Text";
import { CircleXIcon } from "../../../../design/components/Icon/native/redesign/generated/CircleXIcon";
import { dateFormat } from "../../../../utils/DateUtils";
import SnowflakeUtils from "../../../../utils/SnowflakeUtils";
import { CircleCheckIcon } from "../../../../design/components/Icon/native/redesign/generated/CircleCheckIcon";
import { ButtonGroup } from "../../../../design/components/ButtonGroup/native/ButtonGroup.native";
import { IconButton } from "../../../../design/components/Button/native/IconButton.native";
import { CheckmarkLargeIcon } from "../../../../design/components/Icon/native/redesign/generated/CheckmarkLargeIcon";
import { XLargeIcon } from "../../../../design/components/Icon/native/redesign/generated/XLargeIcon";
import useSafeAreaInsets_native from "../../../safe_area/useSafeAreaInsets.native";
import JoinRequestOtherApplications from "./JoinRequestOtherApplications";
let useStyles, Component, Component2, Component3, Component4, Component5;
const OpenInterviewButton = function OpenInterviewButton(props) {
let r30;
let interviewChannelId;
L5: {
const joinRequest4 = props.joinRequest;
let label = props.label;
interviewChannelId = void 0;
interviewChannelId = joinRequest4.interviewChannelId;
const applicationStatus = joinRequest4.applicationStatus;
const stateFromStores = useStateFromStores([ChannelStore], () => interviewChannelId != null && ChannelStore.getChannel(interviewChannelId) != null, [interviewChannelId]);
const joinRequestButtonActions = useJoinRequestButtonActions(joinRequest4, interviewChannelId);
const { handleOpenInterview, submitting } = joinRequestButtonActions;
if (isActionedApplicationStatus(applicationStatus)) {
r30 = null;
if (!stateFromStores) {
break L5;
}
}
const props2 = {
variant: "secondary",
size: "md",
icon: <ChatIcon color={Module712.colors.CONTROL_SECONDARY_TEXT_DEFAULT} size="sm" />,
text: null,
onPress: null,
disabled: null
};
if (label == null) {
label = intl.string(t["2simqN"]);
}
props2.text = label;
props2.onPress = handleOpenInterview;
props2.disabled = submitting;
r30 = <Button {...props2} />;
}
return r30;
};
useStyles = createStyles({
responsesContainer: {
paddingHorizontal: 16,
paddingTop: 24,
borderTopColor: Module712.colors.BORDER_SUBTLE,
borderTopWidth: 1
},
formQuestion: {
marginBottom: 8
},
formResponse: {
padding: 12,
width: "100%",
borderRadius: Module712.radii.md,
lineHeight: 20,
backgroundColor: Module712.colors.INPUT_BACKGROUND_DEFAULT
},
formResponseMargin: {
marginBottom: 16
},
termsField: {
flexDirection: "row",
alignItems: "center",
justifyContent: "space-between"
},
statusContainer: {
flexDirection: "column",
gap: 12,
paddingHorizontal: 16,
paddingVertical: 12,
marginTop: 8,
marginBottom: 16,
marginHorizontal: 16,
backgroundColor: Module712.colors.BACKGROUND_SURFACE_HIGH,
borderRadius: Module712.radii.md
},
statusRow: {
flexDirection: "row",
alignItems: "center",
gap: 12
},
actionedInfo: {
flexDirection: "row",
gap: 8,
alignItems: "center"
},
dot: {
height: 4,
width: 4,
borderRadius: Module712.radii.xs,
backgroundColor: Module712.colors.TEXT_DEFAULT
},
accountInfoLabel: {
marginTop: 16,
marginHorizontal: 16,
marginBottom: 8
},
accountInfoContainer: {
backgroundColor: Module712.colors.BACKGROUND_SURFACE_HIGH,
marginHorizontal: 16,
marginBottom: 16,
borderRadius: Module712.radii.md
},
accountInfoRow: {
flexDirection: "row",
justifyContent: "space-between",
alignItems: "center",
padding: 16
},
divider: {
width: "100%",
height: 1,
backgroundColor: Module712.colors.BORDER_SUBTLE
}
});
Component = Module19.memo(function({ user, displayProfile, joinRequest }) {
const styles = UserProfileSharedStyles();
const userProfileBannerHeight = useUserProfileBannerHeight(ACTION_SHEET_MAX_WIDTH);
const profileTheme = useProfileTheme({
user,
displayProfile
});
const { theme, primaryColor, secondaryColor } = profileTheme;
const userProfileColors = useUserProfileColors({
theme,
primaryColor,
secondaryColor
});
const { gradientFallbackBackground, containerBackground, avatarBackground, statusBackground } = userProfileColors;
const callback = useCallback(() => {
showUserProfileActionSheet({
userId: user.id,
onClose: function onClose() {
openJoinRequestActionSheet(joinRequest);
}
});
}, [joinRequest, user.id]);
return user != null ? <>
<UserProfileBanner user={user} displayProfile={displayProfile} bannerHeight={userProfileBannerHeight} />
<View>
<UserProfileAvatar user={user} disableStatus backgroundColor={avatarBackground} statusStyle={{
backgroundColor: statusBackground
}} onPress={callback} />
<UserProfileGradientContainer fallbackBackground={gradientFallbackBackground} primaryColor={primaryColor} secondaryColor={secondaryColor} containerStyle={[styles.profileContentWrapper, styles.profileContent, {
paddingTop: PROFILE_CONTENT_WITHOUT_STATUS_TOP_PADDING,
paddingBottom: 0
}]}>
<View style={styles.primaryInfo}>
<PrimaryInfo user={user} displayProfile={displayProfile} badgeContainerBackground={containerBackground} isPreviewingChanges={false} />
<UserProfileMutuals user={user} />
</View>
</UserProfileGradientContainer>
</View>
</> : null;
});
Component2 = Module19.memo(function({ joinRequest: joinRequest4 }) {
const { actionedAt, actionedByUser, rejectionReason, applicationStatus, interviewChannelId: interviewChannelId2 } = joinRequest4;
const styles = useStyles();
if (applicationStatus === GuildJoinRequestApplicationStatuses.SUBMITTED && interviewChannelId2 != null) {
return <View style={styles.statusContainer}>
<View style={styles.statusRow}>
<HourglassIcon size="lg" color={Module712.colors.STATUS_WARNING} />
<View>
<Text variant="text-md/medium" color="mobile-text-heading-primary">
{intl.string(t["Vr+7eO"])}
</Text>
</View>
</View>
<OpenInterviewButton joinRequest={joinRequest4} label={intl.string(t.rcqdhN)} />
</View>;
}
if (GuildJoinRequestApplicationStatuses.REJECTED === applicationStatus) {
const r140 = [<CircleXIcon size="lg" color={Module712.colors.ICON_FEEDBACK_CRITICAL} secondaryColor={Module712.colors.WHITE} />, ,];
const r155 = [<Text variant="text-md/medium" color="mobile-text-heading-primary">
{intl.string(t.bSZkla)}
</Text>, , ,];
const r157 = actionedByUser != null;
let r158 = null;
if (r157) {
const r159 = actionedAt != null;
r158 = null;
if (r159) {
const qnimbL2 = t.qnimbL;
let global_name2 = actionedByUser.global_name;
if (global_name2 == null) {
global_name2 = actionedByUser.username;
}
r158 = <View style={styles.actionedInfo}>
<Text variant="text-sm/normal" color="text-default">
{intl.formatToPlainString(qnimbL2, {
username: global_name2
})}
</Text>
<View style={styles.dot} />
<Text variant="text-sm/normal" color="text-default">
{dateFormat(new Date(SnowflakeUtils.extractTimestamp(actionedAt)), "LL")}
</Text>
</View>;
}
}
r155[1] = r158;
r155[2] = rejectionReason != null && <Text variant="text-sm/normal" color="text-default">
{intl.formatToPlainString(t.fU5PPM, {
rejectionReason
})}
</Text>;
r140[1] = <View>{r155}</View>;
return <View style={styles.statusContainer}>
<View style={styles.statusRow}>{r140}</View>
<OpenInterviewButton joinRequest={joinRequest4} />
</View>;
}
if (GuildJoinRequestApplicationStatuses.APPROVED === applicationStatus) {
const r60 = [<CircleCheckIcon size="lg" color={Module712.colors.STATUS_POSITIVE_BACKGROUND} secondaryColor={Module712.colors.STATUS_POSITIVE_TEXT} />, ,];
const r72 = [<Text variant="text-md/medium" color="mobile-text-heading-primary">
{intl.string(t.aURgY2)}
</Text>, ,];
const r2 = actionedByUser != null;
let r74 = null;
if (r2) {
const r75 = actionedAt != null;
r74 = null;
if (r75) {
const qnimbL = t.qnimbL;
let global_name = actionedByUser.global_name;
if (global_name == null) {
global_name = actionedByUser.username;
}
r74 = <View style={styles.actionedInfo}>
<Text variant="text-sm/normal" color="text-default">
{intl.formatToPlainString(qnimbL, {
username: global_name
})}
</Text>
<View style={styles.dot} />
<Text variant="text-sm/normal" color="text-default">
{dateFormat(new Date(SnowflakeUtils.extractTimestamp(actionedAt)), "LL")}
</Text>
</View>;
}
}
r72[1] = r74;
r60[1] = <View>{r72}</View>;
return <View style={styles.statusContainer}>
<View style={styles.statusRow}>{r60}</View>
<OpenInterviewButton joinRequest={joinRequest4} />
</View>;
}
return null;
});
Component3 = Module19.memo(function({ joinRequest: joinRequest2 }) {
const joinRequestButtonActions = useJoinRequestButtonActions(joinRequest2, joinRequest2.interviewChannelId, useCallback(() => {
openJoinRequestActionSheet(joinRequest2);
}, [joinRequest2]));
const { approveRequest, rejectRequest, handleOpenInterview, submitting } = joinRequestButtonActions;
return <ButtonGroup direction="horizontal" align="flex-start" justify="space-evenly">
<IconButton variant="primary" icon={<CheckmarkLargeIcon color={Module712.colors.WHITE} size="lg" />} label={intl.string(t.BzjDQJ)} onPress={approveRequest} disabled={submitting} />
<IconButton variant="destructive" icon={<XLargeIcon color={Module712.colors.WHITE} size="lg" />} label={intl.string(t.hDtbsz)} onPress={rejectRequest} disabled={submitting} />
{joinRequest2.interviewChannelId == null && <IconButton variant="secondary" icon={<ChatIcon color={Module712.colors.CONTROL_SECONDARY_TEXT_DEFAULT} size="lg" />} label={intl.string(t.KQeYoC)} onPress={handleOpenInterview} disabled={submitting} />}
</ButtonGroup>;
});
Component4 = Module19.memo(function({ field, isLastField }) {
const styles = useStyles();
const field_type = field.field_type;
if (VerificationFormFieldTypes.TERMS === field_type) {
return <View style={[styles.termsField, styles.formResponse, isLastField ? null : styles.formResponseMargin]}>
<Text variant="text-md/medium" color="text-default">{field.label}</Text>
<CircleCheckIcon size="sm" color={Module712.colors.STATUS_POSITIVE_BACKGROUND} secondaryColor={Module712.colors.STATUS_POSITIVE_TEXT} />
</View>;
}
if (VerificationFormFieldTypes.MULTIPLE_CHOICE === field_type) {
return <View>
<Text style={styles.formQuestion} variant="text-sm/semibold" color="text-subtle">{field.label}</Text>
<View style={[styles.formResponse, isLastField ? null : styles.formResponseMargin]}>
<Text variant="text-md/medium" color="text-default">
{field.response != null ? field.choices[field.response] : null}
</Text>
</View>
</View>;
}
return <View>
<Text style={styles.formQuestion} variant="text-sm/semibold" color="text-subtle">{field.label}</Text>
<View style={[styles.formResponse, isLastField ? null : styles.formResponseMargin]}>
<Text variant="text-md/medium" color="text-default">{field.response}</Text>
</View>
</View>;
});
Component5 = Module19.memo(function({ joinRequest: joinRequest4, user: user2 }) {
const styles = useStyles();
return <>
<Text variant="text-sm/semibold" color="text-subtle" style={styles.accountInfoLabel}>
{intl.string(t["ldCE/p"])}
</Text>
<View style={styles.accountInfoContainer}>
<View style={styles.accountInfoRow}>
<Text variant="text-sm/semibold" color="text-strong">
{intl.string(t.SaDIpL)}
</Text>
<Text variant="text-sm/normal" color="text-subtle">
{dateFormat(new Date(SnowflakeUtils.extractTimestamp(user2.id)), "LL")}
</Text>
</View>
<View style={styles.divider} />
<View style={styles.accountInfoRow}>
<Text variant="text-sm/semibold" color="text-strong">
{intl.string(t["Vt4cn+"])}
</Text>
<Text variant="text-sm/normal" color="text-subtle">
{dateFormat(new Date(joinRequest4.createdAt), "LL")}
</Text>
</View>
</View>
</>;
});
const r107 = Module19.memo(function JoinRequestActionSheetContent(props) {
const { user: user2, displayProfile, joinRequest: joinRequest3 } = props;
const styles = useStyles();
const bottom = useSafeAreaInsets_native().bottom;
const memo = useMemo(() => {
let r4 = joinRequest3?.formResponses;
if (r4 == null) {
r4 = [];
}
return r4;
}, [joinRequest3?.formResponses]);
return <View style={{
paddingBottom: bottom
}}>
<Component joinRequest={joinRequest3} user={user2} displayProfile={displayProfile} />
{joinRequest3.applicationStatus === GuildJoinRequestApplicationStatuses.SUBMITTED ? <>
{joinRequest3.interviewChannelId != null && <Component2 joinRequest={joinRequest3} />}
<Component3 joinRequest={joinRequest3} />
</> : <Component2 joinRequest={joinRequest3} />}
<View style={styles.responsesContainer}>
{memo == null ? void 0 : memo.map((item, index) => {
const isLastField = index === memo.length - 1;
return <Component4 key={`response-${index}-${item.field_type}-${item.label}-${isLastField}`} field={item} isLastField={isLastField} />;
})}
</View>
<Component5 joinRequest={joinRequest3} user={user2} />
<JoinRequestOtherApplications guildId={joinRequest3.guildId} userId={joinRequest3.userId} selectedJoinRequestId={joinRequest3.joinRequestId} />
</View>;
});
export default r107;
@@ -0,0 +1,75 @@
// Metro module 15451 (f15452).
import * as Module19 from "react";
import { memo } from "react";
import { Pressable, View } from "react-native";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import { GuildJoinRequestApplicationStatuses } from "../../MemberVerificationTypes";
import { CircleCheckIcon } from "../../../../design/components/Icon/native/redesign/generated/CircleCheckIcon";
import { CircleXIcon } from "../../../../design/components/Icon/native/redesign/generated/CircleXIcon";
import { useOtherGuildJoinRequestsForUser } from "../../hooks/useOtherGuildJoinRequestsForUser";
import { Text } from "../../../../design/components/Text/native/Text";
import { intl, t } from "../../../../intl/index.native";
import openJoinRequestActionSheet from "../openJoinRequestActionSheet";
import { dateFormat } from "../../../../utils/DateUtils";
let useStyles;
const ApplicationStatusIcon = function ApplicationStatusIcon(props) {
const status = props.status;
if (GuildJoinRequestApplicationStatuses.APPROVED === status) {
return <CircleCheckIcon size="sm" color={Module712.colors.STATUS_POSITIVE_BACKGROUND} secondaryColor={Module712.colors.STATUS_POSITIVE_TEXT} />;
}
if (GuildJoinRequestApplicationStatuses.REJECTED === status) {
return <CircleXIcon size="sm" color={Module712.colors.ICON_FEEDBACK_CRITICAL} secondaryColor={Module712.colors.WHITE} />;
}
return null;
};
useStyles = createStyles({
label: {
marginHorizontal: 16,
marginBottom: 8
},
container: {
backgroundColor: Module712.colors.BACKGROUND_SURFACE_HIGH,
marginHorizontal: 16,
marginBottom: 12,
borderRadius: Module712.radii.md
},
row: {
flexDirection: "row",
justifyContent: "space-between",
alignItems: "center",
padding: 16
},
divider: {
width: "100%",
height: 1,
backgroundColor: Module712.colors.BORDER_SUBTLE
}
});
const r48 = memo(function({ guildId, userId, selectedJoinRequestId }) {
const styles = useStyles();
const otherGuildJoinRequestsForUser = useOtherGuildJoinRequestsForUser({
guildId,
userId,
selectedJoinRequestId
});
return otherGuildJoinRequestsForUser.length !== 0 ? <>
<Text variant="text-sm/semibold" color="text-subtle" style={styles.label}>
{intl.string(t["hxa+G3"])}
</Text>
<View style={styles.container}>
{otherGuildJoinRequestsForUser.map((item, index) => {
return <Module19.Fragment key={item.joinRequestId}>
{index > 0 && <View style={styles.divider} />}
<Pressable accessibilityRole="button" style={styles.row} onPress={() => openJoinRequestActionSheet(item)}>
<Text variant="text-sm/normal" color="text-default">
{dateFormat(new Date(item.createdAt), "LL")}
</Text>
<ApplicationStatusIcon status={item.applicationStatus} />
</Pressable>
</Module19.Fragment>;
})}
</View>
</> : null;
});
export default r48;
@@ -0,0 +1,111 @@
// Metro module 11727 (f11728).
import { useState, useCallback, memo } from "react";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import { useBottomSheetRef } from "../../../../design/components/Sheet/native/useBottomSheetRef";
import GuildJoinRequestActionCreators from "../../GuildJoinRequestActionCreators";
import { GuildJoinRequestApplicationStatuses } from "../../MemberVerificationTypes";
import ToastActionCreators from "../../../toast/native/ToastActionCreators";
import { intl, t } from "../../../../intl/index.native";
import { CircleXIcon } from "../../../../design/components/Icon/native/redesign/generated/CircleXIcon";
import Module712 from "../../../../_bundle/Module712";
import ActionSheetActionCreators from "../../../action_sheet/native/ActionSheetActionCreators";
import { BottomSheet } from "../../../../design/components/Sheet/native/BottomSheet.native";
import { SafeAreaPaddingView } from "../../../../components_native/common/SafeAreaView";
import { TextArea } from "../../../../design/components/TextInput/native/TextArea.native";
import { ButtonGroup } from "../../../../design/components/ButtonGroup/native/ButtonGroup.native";
import { Button } from "../../../../design/components/Button/native/Button.native";
function $mk116288($env) {
return () => <CircleXIcon color={Module712.colors.BACKGROUND_FEEDBACK_CRITICAL} secondaryColor={Module712.colors.ICON_FEEDBACK_CRITICAL} />;
}
let useStyles;
export function JoinRequestRejectionReasonActionSheet(props) {
const { joinRequest, onError, onDismiss } = props;
const styles = useStyles();
const { userId, guildId, joinRequestId } = joinRequest;
const [state, onChange] = useState();
const bottomSheetRef = useBottomSheetRef();
const { bottomSheetRef: bottomSheetRef2, bottomSheetClose } = bottomSheetRef;
const [disabled, setState] = useState(false);
const callback = useCallback(async () => {
let c27136_0, c27136_1, c27136_2;
let c27136_3 = 0;
const r13 = void 0;
L10: {
try {
c27136_1 = r13;
c27136_0 = r13;
setState(true);
c27136_3 = 2;
await GuildJoinRequestActionCreators.updateGuildJoinRequest(guildId, userId, joinRequestId, GuildJoinRequestApplicationStatuses.REJECTED, state);
ToastActionCreators.open({
key: "JOIN_REQUEST_REJECT",
content: intl.string(t["TQY/Rd"]),
icon: $mk116288(void 0)
});
ActionSheetActionCreators.hideAllActionSheets();
c27136_3 = 1;
c27136_3 = 0;
(0, setState)(false);
} catch ($e) {
const r35 = $e;
let r7 = r35;
c27136_2 = r35;
let r36 = c27136_3;
if (r36 !== 0) {
while (true) {
if (r36 === 1) {
try {
const r112 = c27136_2;
c27136_3 = 0;
(0, setState)(false);
throw r112;
} catch (r110) {
r7 = r110;
c27136_2 = r110;
r36 = c27136_3;
if (r36 === 0) {
break;
}
}
} else {
try {
c27136_3 = 1;
(0, onError)();
c27136_3 = 0;
(0, setState)(false);
break L10;
} catch (r99) {
r7 = r99;
c27136_2 = r99;
r36 = c27136_3;
if (r36 === 0) {
break;
}
}
}
}
}
throw r7;
}
}
}, [guildId, joinRequestId, onError, state, userId]);
return <BottomSheet bodyStyles={styles.container} onDismiss={onDismiss} ref={bottomSheetRef2}>
<SafeAreaPaddingView bottom>
<TextArea label={intl.string(t["mFP/qw"])} maxLength={160} onChange={onChange} value={state} />
<ButtonGroup direction="horizontal" style={styles.buttonGroup}>
<Button grow variant="secondary" text={intl.string(t["ETE/oC"])} onPress={bottomSheetClose} disabled={disabled} />
<Button grow variant="destructive" text={intl.string(t.hDtbsz)} onPress={callback} disabled={disabled} />
</ButtonGroup>
</SafeAreaPaddingView>
</BottomSheet>;
}
useStyles = createStyles({
container: {
padding: 20
},
buttonGroup: {
marginTop: 16
}
});
const r32 = memo(JoinRequestRejectionReasonActionSheet);
export default r32;
@@ -0,0 +1,45 @@
// Metro module 16205 (f16206).
import SelectedGuildStore from "../../../../stores/SelectedGuildStore";
import UserGuildJoinRequestStore from "../../UserGuildJoinRequestStore";
import AutomaticLifecycleManager from "../../../../lib/AutomaticLifecycleManager";
import AlertActionCreators from "../../../../actions/native/AlertActionCreators";
import { GuildJoinRequestApplicationStatuses } from "../../MemberVerificationTypes";
import { openMemberVerificationSuccessAlert } from "../MemberVerificationAlertActionCreators";
import GuildJoinRequestActionCreators from "../../GuildJoinRequestActionCreators";
class MemberVerificationApplicationManager extends AutomaticLifecycleManager {
isShowingAlert = false;
actions = {
POST_CONNECTION_OPEN: () => this.showApplicationApprovedAlert(),
GUILD_JOIN_REQUEST_UPDATE: () => this.showApplicationApprovedAlert(),
CHANNEL_SELECT: () => this.showApplicationApprovedAlert()
};
showApplicationApprovedAlert = () => {
const guildId = SelectedGuildStore.getGuildId();
if (guildId == null) {
if (this.isShowingAlert) {
AlertActionCreators.close();
this.isShowingAlert = false;
}
return void 0;
}
const request = UserGuildJoinRequestStore.getRequest(guildId);
const applicationStatus = request?.applicationStatus;
L17: {
if (applicationStatus === GuildJoinRequestApplicationStatuses.APPROVED) {
if (this.isShowingAlert && request?.lastSeen !== null) {
AlertActionCreators.close();
this.isShowingAlert = false;
break L17;
}
if (!(this.isShowingAlert || request == null || request?.lastSeen !== null)) {
openMemberVerificationSuccessAlert(guildId, () => {
GuildJoinRequestActionCreators.ackUserGuildJoinRequest(guildId, request.joinRequestId);
});
this.isShowingAlert = true;
}
}
}
};
}
const memberVerificationApplicationManager = new MemberVerificationApplicationManager();
export default memberVerificationApplicationManager;
@@ -0,0 +1,299 @@
// Metro module 9171 (f9172).
import { useMemo, useRef, useEffect, useState } from "react";
import { View } from "react-native";
import MemberVerificationFormStore, { NO_MEMBER_VERIFICATION_FORM } from "../../MemberVerificationFormStore";
import { VerificationLevels } from "../../../../Constants";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import ToastActionCreators from "../../../toast/native/ToastActionCreators";
import { intl, t } from "../../../../intl/index.native";
import Module9172 from "../../../../_bundle/Module9172";
import { useUserVerificationState, useInitialVerification } from "../MemberVerificationModalHooks";
import useInitialValue from "../../../../hooks/useInitialValue";
import { VerificationFormFieldTypes, UserVerificationFieldPlatforms } from "../../MemberVerificationTypes";
import { useStateFromStores } from "../../../../_bundle/Module589";
import { removeInternalFields, isValidFormResponse } from "../../MemberVerificationUtils";
import MemberVerificationActionCreators from "../../MemberVerificationActionCreators";
import MemberVerificationFormRenderer from "./MemberVerificationFormRenderer";
import FreeFormErrorLabel from "../../../../design/void/Form/native/FreeFormErrorLabel";
import { Button } from "../../../../design/components/Button/native/Button.native";
import { HermesBuiltin } from "../../../../_hermes/prelude";
let env6018 = {};
const useStyles = createStyles({
container: {
flex: 1,
flexDirection: "column",
alignItems: "stretch",
paddingHorizontal: 16,
paddingVertical: 0
},
submitButton: {
marginTop: 12,
marginBottom: 12
},
error: {
alignSelf: "center",
paddingVertical: 16,
fontSize: 16
}
});
export default function MemberVerificationForm(props) {
let r57;
let userVerificationState, c17046_4, c17046_5, c17046_6, c17046_7, setState, setState2, memo;
let id, c17047_1, stateFromStores, memo2, getFormFields2, ref, setState3;
let guild2, initialVerification;
const { guild, onSuccess, onClose } = props;
userVerificationState = void 0;
c17046_4 = void 0;
c17046_5 = void 0;
c17046_6 = void 0;
c17046_7 = void 0;
setState = void 0;
setState2 = void 0;
memo = void 0;
let _handleSubmit2 = function _handleSubmit() {
const r9 = async () => {
let r106, r117;
let c30052_0, c30052_1, c30052_2, c30052_3;
let c30052_4 = 0;
const r11 = void 0;
const r10 = env6018;
L22: {
L21: {
try {
let env31492;
c30052_2 = r11;
const r31 = env31492 = {
$parent: r10
};
c30052_1 = r31;
env31492[0] = void 0;
env31492[1] = void 0;
if (c17046_4 != null) {
if (memo) {
(function showIncompleteToast() {
ToastActionCreators.open({
key: "MEMBER_VERIFICATION_FORM_INCOMPLETE",
content: intl.string(t.StC497),
icon: Module9172
});
})();
break L22;
}
setState2(null);
setState(true);
c30052_0 = c17046_6;
if (c17046_6 == null) {
c30052_0 = NO_MEMBER_VERIFICATION_FORM;
}
const r19 = {
...c30052_0,
formFields: removeInternalFields(c17046_4)
};
c30052_4 = 1;
env31492[0] = await MemberVerificationActionCreators.submitVerificationForm(guild.id, r19);
(0, setState)(false);
if (onSuccess != null) {
onSuccess(env31492[0]);
}
if (onClose != null) {
onClose(true);
}
c30052_4 = 0;
break L21;
}
} catch ($e) {
const r29 = $e;
let r7 = r29;
c30052_3 = r29;
if (c30052_4 !== 0) {
while (true) {
try {
const r93 = c30052_3;
c30052_4 = 0;
env31492[1] = r93?.body;
const r100 = env31492[1];
const r102 = r100 == null ? void 0 : r100.errors?.version;
L42: {
if (r102 == null) {
const r119 = env31492[1];
if ((r119 == null ? void 0 : r119.errors?.form_fields) == null) {
const r125 = env31492[1];
const r126 = r125 == null;
r117 = void 0;
if (r126) {
break L42;
}
r117 = r125.message;
} else {
r106 = env6018;
r117 = intl.string(t.PD09Sl);
}
} else {
r106 = env6018;
r117 = intl.string(t.PD09Sl);
}
}
setState2(r117);
(0, setState)(false);
break L21;
} catch (r91) {
r7 = r91;
c30052_3 = r91;
if (c30052_4 === 0) {
break;
}
}
}
}
throw r7;
}
return void 0;
}
return void 0;
}
};
_handleSubmit2 = r9;
return r9.apply(this, arguments);
};
const styles = useStyles();
userVerificationState = useUserVerificationState();
id = void 0;
c17047_1 = void 0;
stateFromStores = void 0;
memo2 = void 0;
ref = void 0;
setState3 = void 0;
getFormFields2 = function getFormFields() {
let r10;
L12: {
if (!memo2) {
if (c17047_1 != null) {
r10 = [c17047_1];
let r11 = stateFromStores?.formFields;
if (r11 == null) {
r11 = [];
}
HermesBuiltin.arraySpread(r10, r11, 1);
break L12;
}
}
let r15 = stateFromStores?.formFields;
if (r15 == null) {
r15 = [];
}
r10 = [...r15];
}
return r10;
};
id = guild.id;
guild2 = guild;
initialVerification = void 0;
initialVerification = useInitialVerification(guild.id);
const initialValue = useInitialValue(() => guild2.verificationLevel === VerificationLevels.VERY_HIGH ? initialVerification?.phone ? null : {
field_type: VerificationFormFieldTypes.VERIFICATION,
platform: UserVerificationFieldPlatforms.PHONE
} : {
field_type: VerificationFormFieldTypes.VERIFICATION,
platform: UserVerificationFieldPlatforms.EMAIL
});
c17047_1 = initialValue;
stateFromStores = useStateFromStores([MemberVerificationFormStore], () => MemberVerificationFormStore.get(id), [id]);
memo2 = useMemo(() => {
const r2 = stateFromStores == null;
let r7 = void 0;
if (!r2) {
const formFields = stateFromStores.formFields;
r7 = formFields == null ? void 0 : formFields.some((formField) => formField.field_type !== VerificationFormFieldTypes.TERMS);
}
return r7;
}, [stateFromStores?.formFields]);
ref = useRef(getFormFields2);
useEffect(() => {
ref.current = getFormFields2;
});
if (!memo2 && initialValue != null) {
r57 = [initialValue];
let r59 = stateFromStores?.formFields;
if (r59 == null) {
r59 = [];
}
HermesBuiltin.arraySpread(r57, r59, 1);
} else {
let r61 = stateFromStores?.formFields;
if (r61 == null) {
r61 = [];
}
r57 = [...r61];
}
let state;
[state, setState3] = useState(r57);
useEffect(() => {
if (stateFromStores != null) {
setState3(ref.current());
}
}, [stateFromStores]);
let formFields, r81, r82;
[formFields, c17046_5, r81, r82] = [state, setState3, stateFromStores, memo2];
c17046_4 = formFields;
c17046_6 = r81;
c17046_7 = r82;
let loading;
[loading, setState] = useState(false);
let state2;
[state2, setState2] = useState(null);
useEffect(() => {
if (c17046_6 === NO_MEMBER_VERIFICATION_FORM && onClose != null) {
onClose(false);
}
}, [onClose, r81]);
memo = useMemo(() => {
if (c17046_4 == null ? void 0 : c17046_4.some((item) => !isValidFormResponse(item))) {
return true;
}
if (c17046_7) {
return false;
}
const verificationLevel = guild.verificationLevel;
if (VerificationLevels.VERY_HIGH === verificationLevel) {
return !userVerificationState[UserVerificationFieldPlatforms.PHONE];
}
if (VerificationLevels.HIGH !== verificationLevel && VerificationLevels.MEDIUM !== verificationLevel && VerificationLevels.LOW !== verificationLevel) {
VerificationLevels.NONE;
return false;
}
const r28 = userVerificationState[UserVerificationFieldPlatforms.EMAIL];
return r28 ? !r28 : !userVerificationState[UserVerificationFieldPlatforms.PHONE];
}, [guild.verificationLevel, r82, userVerificationState, formFields]);
if (formFields == null) {
return null;
}
const r114 = [<MemberVerificationFormRenderer rulesChannelId={guild.rulesChannelId} formFields={formFields} onChange={function handleFormChange(event, a1) {
if (c17046_4 != null) {
const r9 = c17046_4[event];
c17046_5([...c17046_4.slice(0, event), {
...r9,
response: a1
}, ...c17046_4.slice(event + 1)]);
}
}} verification={userVerificationState} />, state2 != null ? <FreeFormErrorLabel style={styles.error}>{state2}</FreeFormErrorLabel> : null, ,];
const props2 = {
variant: "primary",
size: "md",
grow: true,
text: intl.string(t["r8/DT+"]),
loading,
disabled: null,
onPress: null
};
if (!loading) {
loading = memo;
}
props2.disabled = loading;
props2.onPress = function handleSubmit() {
return _handleSubmit2.apply(this, arguments);
};
r114[2] = <View style={styles.submitButton}>
<Button {...props2} />
</View>;
return <View style={styles.container}>{r114}</View>;
};
@@ -0,0 +1,10 @@
// Metro module 9144 (f9145).
import useWindowDimensions_native from "../../../screen/useWindowDimensions.native";
let c5998_2 = 0.5625;
export const BANNER_RATIO_HEIGHT_16_9 = 0.5625;
export const AVATAR_SIZE = 76;
export const AVATAR_BORDER_WIDTH = 6;
export const SCROLL_EVENT_TIMER_MS = 16;
export function useBannerHeight() {
return useWindowDimensions_native().width * c5998_2;
}
@@ -0,0 +1,33 @@
// Metro module 9173 (f9174).
import { Keyboard, View } from "react-native";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import { VerificationFormFieldTypes } from "../../MemberVerificationTypes";
import TermsField from "./form_fields/TermsField";
import UserVerification from "./form_fields/UserVerification";
import TextInputField from "./form_fields/TextInputField";
import ParagraphField from "./form_fields/ParagraphField";
import MultipleChoiceField from "./form_fields/MultipleChoiceField";
const useStyles = createStyles({
container: {
flex: 1,
flexDirection: "column",
alignItems: "stretch",
paddingHorizontal: 0
}
});
export default function MemberVerificationFormRenderer(props) {
const { rulesChannelId, formFields, onChange: onChange2, verification } = props;
return <View style={useStyles().container}>
{formFields == null ? void 0 : formFields.map((formField, index) => {
const key = `verification-field-${index}`;
const field_type = formField.field_type;
return VerificationFormFieldTypes.TERMS === field_type ? <TermsField key={key} field={formField} rulesChannelId={rulesChannelId} onChange={(event) => {
onChange2(index, event);
Keyboard.dismiss();
}} /> : VerificationFormFieldTypes.VERIFICATION === field_type ? <UserVerification key={key} verification={verification} field={formField} /> : VerificationFormFieldTypes.TEXT_INPUT === field_type ? <TextInputField key={key} field={formField} onChange={(event) => onChange2(index, event)} /> : VerificationFormFieldTypes.PARAGRAPH === field_type ? <ParagraphField key={key} field={formField} onChange={(event) => onChange2(index, event)} /> : VerificationFormFieldTypes.MULTIPLE_CHOICE === field_type ? <MultipleChoiceField key={key} field={formField} hasIcons={false} onChange={(event) => {
onChange2(index, event);
Keyboard.dismiss();
}} /> : null;
})}
</View>;
};
@@ -0,0 +1,164 @@
// Metro module 9165 (f9166).
import { View } from "react-native";
import { AVATAR_SIZE, useBannerHeight, AVATAR_BORDER_WIDTH } from "./MemberVerificationFormConstants";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import AvatarUtils from "../../../../utils/AvatarUtils";
import Module9166 from "../../../../_bundle/Module9166";
import useSafeAreaInsets_native from "../../../safe_area/useSafeAreaInsets.native";
import * as _ReanimatedRexport from "../../../reanimated/ReanimatedRexport";
import ReanimatedRexport, { useDerivedValue, useAnimatedStyle } from "../../../reanimated/ReanimatedRexport";
import Module4611 from "../../../../_bundle/Module4611";
import GuildIcon, { GuildIconSizes } from "../../../guild/native/GuildIcon";
import GuildBadge from "../../../guild/native/GuildBadge";
import { Heading, Text } from "../../../../design/components/Text/native/Text";
import { intl, t } from "../../../../intl/index.native";
const ANIMATION_GOLDEN_RATIO = 1.20225424859375;
const useStyles = createStyles({
header: {
flex: 1,
flexDirection: "column",
justifyContent: "flex-end",
alignItems: "center",
marginBottom: 12
},
headerContent: {
alignItems: "center",
marginTop: -48,
paddingTop: 20,
paddingBottom: 0,
paddingHorizontal: 16
},
linearGradient: {
position: "absolute",
height: 140,
top: 0,
right: 0,
left: 0
},
avatar: {
borderRadius: Module712.radii.lg,
borderWidth: 0,
borderColor: Module712.colors.BACKGROUND_BASE_LOWER,
height: AVATAR_SIZE,
width: AVATAR_SIZE,
margin: 0,
backgroundColor: Module712.colors.BACKGROUND_SCRIM
},
avatarContainer: {
borderRadius: 20,
borderWidth: AVATAR_BORDER_WIDTH,
borderColor: Module712.colors.BACKGROUND_BASE_LOWER,
height: AVATAR_SIZE + 2 * AVATAR_BORDER_WIDTH,
width: AVATAR_SIZE + 2 * AVATAR_BORDER_WIDTH,
marginBottom: 16,
marginTop: -16,
marginLeft: -4,
backgroundColor: Module712.colors.BACKGROUND_BASE_LOWER
},
featureIcon: {
position: "absolute",
top: 56,
right: -8
},
headerTitle: {
textAlign: "center",
marginBottom: 8
},
headerDescription: {
lineHeight: 18,
textAlign: "center"
}
});
const __initData = {
code: "function MemberVerificationGuildHeaderTsx1(){const{scrollTop}=this.__closure;return scrollTop.get()*-1;}"
};
const __initData2 = {
code: "function MemberVerificationGuildHeaderTsx2(){const{height,interpolate,scrollTop,safeAreaTop,scrollTopNegative}=this.__closure;return{width:'100%',height:height,opacity:interpolate(scrollTop.get(),[0,height-safeAreaTop],[1,0],'clamp'),transform:[{translateY:interpolate(scrollTopNegative.get(),[0,height],[0,-height],'clamp')},{scale:interpolate(scrollTopNegative.get(),[0,height],[1,1.08],'clamp')}]};}"
};
const __initData3 = {
code: "function MemberVerificationGuildHeaderTsx3(){const{interpolate,scrollTopNegative,height,ANIMATION_GOLDEN_RATIO,AVATAR_SIZE}=this.__closure;return{transform:[{translateY:interpolate(scrollTopNegative.get(),[0,height],[0,-(height/ANIMATION_GOLDEN_RATIO)],'clamp')},{scale:interpolate(scrollTopNegative.get(),[0,AVATAR_SIZE],[1,ANIMATION_GOLDEN_RATIO],'clamp')}]};}"
};
export default function MemberVerificationGuildHeader(props) {
let derivedValue;
const { guild, scrollTop, hasManualFormFields } = props;
derivedValue = void 0;
const styles = useStyles();
const source = guild.banner != null ? AvatarUtils.getGuildBannerSource(guild) : Module9166;
const bannerHeight = useBannerHeight();
const top = useSafeAreaInsets_native().top;
const N = () => -1 * scrollTop.get();
N.__closure = {
scrollTop
};
N.__workletHash = 6997429707371;
N.__initData = __initData;
derivedValue = useDerivedValue(N);
const I = () => ({
width: "100%",
height: bannerHeight,
opacity: _ReanimatedRexport.interpolate(scrollTop.get(), [0, bannerHeight - top], [1, 0], "clamp"),
transform: [{
translateY: _ReanimatedRexport.interpolate(derivedValue.get(), [0, bannerHeight], [0, -bannerHeight], "clamp")
}, {
scale: _ReanimatedRexport.interpolate(derivedValue.get(), [0, bannerHeight], [1, 1.08], "clamp")
}]
});
I.__closure = {
height: bannerHeight,
interpolate: _ReanimatedRexport.interpolate,
scrollTop,
safeAreaTop: top,
scrollTopNegative: derivedValue
};
I.__workletHash = 15738371977789;
I.__initData = __initData2;
const animatedStyle = useAnimatedStyle(I);
const b = () => ({
transform: [{
translateY: _ReanimatedRexport.interpolate(derivedValue.get(), [0, bannerHeight], [0, -bannerHeight / ANIMATION_GOLDEN_RATIO], "clamp")
}, {
scale: _ReanimatedRexport.interpolate(derivedValue.get(), [0, AVATAR_SIZE], [1, ANIMATION_GOLDEN_RATIO], "clamp")
}]
});
b.__closure = {
interpolate: _ReanimatedRexport.interpolate,
scrollTopNegative: derivedValue,
height: bannerHeight,
ANIMATION_GOLDEN_RATIO,
AVATAR_SIZE
};
b.__workletHash = 62412230968;
b.__initData = __initData3;
return <View style={styles.header}>
<ReanimatedRexport.View style={animatedStyle}>
<ReanimatedRexport.Image style={{
width: "100%",
height: bannerHeight
}} source={source} />
<Module4611 start={{
x: 0,
y: 0
}} end={{
x: 0,
y: 1
}} style={styles.linearGradient} colors={["rgba(0,0,0,0.7)", "transparent"]} />
</ReanimatedRexport.View>
<View style={styles.headerContent}>
<ReanimatedRexport.View style={[styles.avatarContainer, useAnimatedStyle(b)]}>
<GuildIcon style={styles.avatar} guild={guild} size={GuildIconSizes.XLARGE} animate />
<GuildBadge style={styles.featureIcon} guild={guild} disableColor />
</ReanimatedRexport.View>
<Heading style={styles.headerTitle} variant="heading-xl/extrabold" color="mobile-text-heading-primary">
{hasManualFormFields ? intl.format(t.cgX47Z, {
guildName: guild.name
}) : intl.format(t.VnxBOA, {
guildName: guild.name
})}
</Heading>
<Text style={styles.headerDescription} variant="text-sm/medium" color="text-default">
{hasManualFormFields ? intl.string(t["3smSPP"]) : intl.string(t["7D3C5p"])}
</Text>
</View>
</View>;
};
@@ -0,0 +1,185 @@
// Metro module 9143 (f9144).
import { useMemo, useRef, useEffect } from "react";
import { View } from "react-native";
import GuildMemberStore from "../../../../stores/GuildMemberStore";
import MemberVerificationFormStore from "../../MemberVerificationFormStore";
import { SCROLL_EVENT_TIMER_MS, useBannerHeight } from "./MemberVerificationFormConstants";
import * as _ReanimatedRexport from "../../../reanimated/ReanimatedRexport";
import ReanimatedRexport, { useSharedValue, useAnimatedScrollHandler, useAnimatedStyle } from "../../../reanimated/ReanimatedRexport";
import { Icon } from "../../../../design/void/native";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import useSafeAreaInsets_native from "../../../safe_area/useSafeAreaInsets.native";
import useTheme from "../../../../hooks/useTheme";
import { useSetInitialVerificationEffect } from "../MemberVerificationModalHooks";
import usePreviewDisabledGuild from "../../hooks/usePreviewDisabledGuild";
import { useStateFromStores } from "../../../../_bundle/Module589";
import { VerificationFormFieldTypes, GuildJoinRequestApplicationStatuses } from "../../MemberVerificationTypes";
import Dispatcher from "../../../../Dispatcher";
import { openMemberVerificationUpdateAlert, openMemberVerificationPendingAlert } from "../MemberVerificationAlertActionCreators";
import { ActivityIndicator } from "../../../../design/components/ActivityIndicator/native/ActivityIndicator.native";
import KeyboardAwareView from "../../../keyboard/native/KeyboardAwareView";
import MemberVerificationGuildHeader from "./MemberVerificationGuildHeader";
import FormSeparator from "./form_fields/FormSeparator";
import MemberVerificationForm from "./MemberVerificationForm";
import { PressableOpacity } from "../../../../design/void/Pressables/native/Pressables";
import { intl, t } from "../../../../intl/index.native";
import Module7734 from "../../../../_bundle/Module7734";
const AnimatedComponent = ReanimatedRexport.createAnimatedComponent(Icon);
const useStyles = createStyles({
flex: {
flex: 1
},
flexLoading: {
flex: 1,
alignItems: "center",
justifyContent: "center",
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW
},
scrollContainer: {
flex: 1,
backgroundColor: Module712.colors.BACKGROUND_BASE_LOWER
},
closeButtonContainer: {
position: "absolute",
right: 0
},
closeIconContainer: {
position: "relative",
marginTop: 10,
marginRight: 20,
width: 24,
height: 24
},
closeIconOverBanner: {
position: "absolute",
tintColor: Module712.colors.WHITE
},
closeIconAfterBanner: {
position: "absolute",
tintColor: Module712.colors.TEXT_DEFAULT
},
headerSeparator: {
marginHorizontal: 16,
marginVertical: 12
}
});
const __initData = {
code: "function MemberVerificationModalTsx1({contentOffset:{y:y}}){const{scrollTop}=this.__closure;return scrollTop.set(y);}"
};
const __initData2 = {
code: "function MemberVerificationModalTsx2(){const{interpolate,scrollTop,bannerHeight,safeAreaTop,theme}=this.__closure;return{opacity:interpolate(scrollTop.get(),[0,bannerHeight-safeAreaTop],[1,theme==='dark'?1:0],'clamp')};}"
};
const __initData3 = {
code: "function MemberVerificationModalTsx3(){const{interpolate,scrollTop,bannerHeight,safeAreaTop}=this.__closure;return{opacity:interpolate(scrollTop.get(),[0,bannerHeight-safeAreaTop],[0,1],'clamp')};}"
};
export default function MemberVerificationModal(props) {
let c17025_4, bannerHeight, stateFromStores, memo, ref;
const { guildId, onClose } = props;
c17025_4 = void 0;
bannerHeight = void 0;
stateFromStores = void 0;
memo = void 0;
ref = void 0;
const styles = useStyles();
const safeAreaInsets_native = useSafeAreaInsets_native();
const { bottom, top } = safeAreaInsets_native;
const sharedValue = useSharedValue(0);
const A = (a0) => sharedValue.set(a0.contentOffset.y);
A.__closure = {
scrollTop: sharedValue
};
A.__workletHash = 16447800091731;
A.__initData = __initData;
const animatedScrollHandler = useAnimatedScrollHandler(A);
const theme = useTheme();
c17025_4 = theme;
bannerHeight = useBannerHeight();
const M = () => ({
opacity: _ReanimatedRexport.interpolate(sharedValue.get(), [0, bannerHeight - top], [1, c17025_4 === "dark" ? 1 : 0], "clamp")
});
M.__closure = {
interpolate: _ReanimatedRexport.interpolate,
scrollTop: sharedValue,
bannerHeight,
safeAreaTop: top,
theme
};
M.__workletHash = 9776820170891;
M.__initData = __initData2;
const animatedStyle2 = useAnimatedStyle(M);
const C = () => ({
opacity: _ReanimatedRexport.interpolate(sharedValue.get(), [0, bannerHeight - top], [0, 1], "clamp")
});
C.__closure = {
interpolate: _ReanimatedRexport.interpolate,
scrollTop: sharedValue,
bannerHeight,
safeAreaTop: top
};
C.__workletHash = 4275816745587;
C.__initData = __initData3;
const animatedStyle = useAnimatedStyle(C);
const setInitialVerificationEffect = useSetInitialVerificationEffect(guildId);
const previewDisabledGuild = usePreviewDisabledGuild(guildId);
stateFromStores = useStateFromStores([MemberVerificationFormStore], () => MemberVerificationFormStore.get(guildId), [guildId]);
const memo2 = useMemo(() => {
const r2 = stateFromStores == null;
let r7 = void 0;
if (!r2) {
const formFields = stateFromStores.formFields;
r7 = formFields == null ? void 0 : formFields.some((formField) => formField.field_type !== VerificationFormFieldTypes.TERMS);
}
if (r7 == null) {
r7 = false;
}
return r7;
}, [stateFromStores?.formFields]);
memo = useMemo(() => {
let r5 = stateFromStores?.formFields;
if (r5 == null) {
r5 = [];
}
let c26369_0 = Object.values(VerificationFormFieldTypes);
return r5.some((item) => !c26369_0.includes(item.field_type));
}, [stateFromStores?.formFields]);
ref = useRef(onClose);
useEffect(() => {
ref.current = onClose;
});
useEffect(() => {
if (memo) {
Dispatcher.wait(() => {
const current = ref.current;
if (current != null) {
current.call(ref);
}
openMemberVerificationUpdateAlert();
});
}
}, [memo]);
return previewDisabledGuild != null && (setInitialVerificationEffect != null && !memo) ? <KeyboardAwareView style={styles.flex}>
<ReanimatedRexport.ScrollView style={styles.scrollContainer} contentContainerStyle={{
paddingBottom: bottom
}} scrollEventThrottle={SCROLL_EVENT_TIMER_MS} keyboardShouldPersistTaps="handled" onScroll={animatedScrollHandler}>
<MemberVerificationGuildHeader guild={previewDisabledGuild} scrollTop={sharedValue} hasManualFormFields={memo2} />
<FormSeparator style={styles.headerSeparator} />
<MemberVerificationForm guild={previewDisabledGuild} onSuccess={function onSuccess(event) {
const r2 = GuildMemberStore.getSelfMember(guildId) != null;
if (!(event.application_status !== GuildJoinRequestApplicationStatuses.SUBMITTED || r2)) {
openMemberVerificationPendingAlert(guildId);
}
}} onClose={onClose} />
</ReanimatedRexport.ScrollView>
<View style={[styles.closeButtonContainer, {
top
}]}>
<PressableOpacity accessibilityRole="button" accessibilityLabel={intl.string(t.cpT0Cq)} style={styles.closeIconContainer} onPress={() => onClose == null ? void 0 : onClose()}>
<AnimatedComponent source={Module7734} style={[styles.closeIconOverBanner, animatedStyle2]} />
<AnimatedComponent source={Module7734} style={[styles.closeIconAfterBanner, animatedStyle]} />
</PressableOpacity>
</View>
</KeyboardAwareView> : <View style={styles.flexLoading}>
<ActivityIndicator />
</View>;
};
@@ -0,0 +1,118 @@
// Metro module 15573 (f15574).
import { useEffect, useCallback } from "react";
import { View } from "react-native";
import GuildChannelStore from "../../../../stores/GuildChannelStore";
import GuildStore from "../../../../stores/GuildStore";
import UserGuildJoinRequestStore from "../../UserGuildJoinRequestStore";
import { Routes } from "../../../../Constants";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../_bundle/Module712";
import { ActivityIndicator } from "../../../../design/components/ActivityIndicator/native/ActivityIndicator.native";
import MemberVerificationModal from "./MemberVerificationModal";
import { useStateFromStores } from "../../../../_bundle/Module589";
import useInitialValue from "../../../../hooks/useInitialValue";
import { GuildJoinRequestApplicationStatuses } from "../../MemberVerificationTypes";
import { openMemberVerificationPendingAlert, openMemberVerificationRejectedAlert } from "../MemberVerificationAlertActionCreators";
import { transitionTo } from "../../../routing/router_utils";
import { popScreens, navigateToRootTab } from "../../../main_tabs_v2/helpers/NavigationRouteUtils.native";
import useSafeAreaInsets_native from "../../../safe_area/useSafeAreaInsets.native";
import KeyboardAwareView from "../../../keyboard/native/KeyboardAwareView";
import { makeAuthenticated } from "../../../auth/makeAuthenticated";
let useStyles, MemberVerificationRouteView, ExistingJoinRequestHandler;
const Loading = function Loading() {
return <View style={useStyles().flexLoading}>
<ActivityIndicator />
</View>;
};
MemberVerificationRouteView = function MemberVerificationRouteView(props) {
return <MemberVerificationModal {...props} />;
};
ExistingJoinRequestHandler = function ExistingJoinRequestHandler(props) {
let stateFromStores2, c22203_4;
const { guildId, onClose, children } = props;
stateFromStores2 = void 0;
c22203_4 = void 0;
const stateFromStores = useStateFromStores([GuildStore], () => GuildStore.getGuild(guildId));
stateFromStores2 = useStateFromStores([GuildChannelStore], () => stateFromStores != null ? GuildChannelStore.getDefaultChannel(stateFromStores.id)?.id : null, [stateFromStores]);
const initialValue = useInitialValue(useStateFromStores([UserGuildJoinRequestStore], () => UserGuildJoinRequestStore.getRequest(guildId)));
c22203_4 = initialValue;
useEffect(() => {
const applicationStatus = c22203_4?.applicationStatus;
if (GuildJoinRequestApplicationStatuses.SUBMITTED === applicationStatus) {
onClose();
openMemberVerificationPendingAlert(guildId);
} else if (GuildJoinRequestApplicationStatuses.REJECTED === applicationStatus) {
onClose();
openMemberVerificationRejectedAlert({
guildId,
canWithdraw: true
});
}
}, [guildId, initialValue, onClose]);
useEffect(() => {
if (stateFromStores != null && (guildId != null && stateFromStores2 != null)) {
transitionTo(Routes.CHANNEL(guildId, stateFromStores2));
} else if (guildId == null) {
onClose();
}
}, [stateFromStores, guildId, onClose, stateFromStores2]);
const applicationStatus = initialValue?.applicationStatus;
if (GuildJoinRequestApplicationStatuses.SUBMITTED !== applicationStatus && GuildJoinRequestApplicationStatuses.APPROVED !== applicationStatus && GuildJoinRequestApplicationStatuses.REJECTED !== applicationStatus) {
return children;
}
return <Loading />;
};
useStyles = createStyles({
flex: {
flex: 1
},
flexLoading: {
flex: 1,
alignItems: "center",
justifyContent: "center",
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW
}
});
const r48 = makeAuthenticated(function MemberVerificationRouteContainer(props) {
const navigation = props.navigation;
const guildId2 = props.route.params.guildId;
const styles = useStyles();
const callback = useCallback(() => {
const state = navigation.getState();
const { routes, index } = state;
if (routes.length > 1) {
if (routes[index - 1]?.name !== "member-verification") {
navigation.goBack();
} else {
let r26 = index;
while (r26 >= 0) {
const r10 = routes[r26];
const r27 = r26;
if (r10 == null) {
break;
}
if (r10.name !== "member-verification") {
popScreens(index - r27);
break;
}
r26 = r27 - 1;
}
}
} else {
navigateToRootTab({
screen: "messages"
});
}
}, [navigation]);
const safeAreaInsets_native = useSafeAreaInsets_native();
const { left, right } = safeAreaInsets_native;
return guildId2 == null ? <Loading /> : <ExistingJoinRequestHandler guildId={guildId2} onClose={callback}>
<KeyboardAwareView style={[styles.flex, {
marginLeft: left,
marginRight: right
}]}>
<MemberVerificationRouteView guildId={guildId2} onClose={callback} />
</KeyboardAwareView>
</ExistingJoinRequestHandler>;
});
export default r48;
@@ -0,0 +1,44 @@
// Metro module 9152 (f9153).
import { View } from "react-native";
import { createStyles } from "../../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../../_bundle/Module712";
import Alert from "../../../../../components_native/common/Alert";
import { Heading, Text } from "../../../../../design/components/Text/native/Text";
const useStyles = createStyles({
headerImage: {
marginLeft: "auto",
marginRight: "auto",
backgroundColor: Module712.colors.BACKGROUND_MOD_MUTED,
borderRadius: Module712.radii.round,
padding: 12,
marginTop: 8,
marginBottom: 8
},
header: {
marginTop: 8,
marginBottom: 8,
textAlign: "center"
},
subtitle: {
lineHeight: 18,
marginBottom: 8,
textAlign: "center"
},
buttons: {
marginTop: 16,
marginBottom: 8,
gap: 12
}
});
export default function MemberVerificationAlert(props) {
const { header, icon: Icon, subtitle, buttons, ...props2 } = props;
const styles = useStyles();
return <Alert {...props2} noDefaultButtons>
{Icon != null ? <View style={styles.headerImage}>
<Icon size="lg" />
</View> : null}
<Heading style={styles.header} variant="heading-lg/bold" color="mobile-text-heading-primary">{header}</Heading>
{subtitle != null ? <Text style={styles.subtitle} variant="text-sm/medium" color="text-default">{subtitle}</Text> : null}
<View style={styles.buttons}>{buttons}</View>
</Alert>;
};
@@ -0,0 +1,33 @@
// Metro module 9155 (f9156).
import { useCallback } from "react";
import GuildJoinRequestActionCreators from "../../../GuildJoinRequestActionCreators";
import MemberVerificationAlert from "./MemberVerificationAlert";
import { intl, t } from "../../../../../intl/index.native";
import { Button } from "../../../../../design/components/Button/native/Button.native";
export default function MemberVerificationAlertCancelPending(props) {
const { guildId, confirmText: _confirmText, subtitleText: _subtitleText, onClose, ...rest } = props;
let confirmText = props.confirmText;
let subtitleText = props.subtitleText;
const callback = useCallback(() => {
if (onClose != null) {
onClose();
}
GuildJoinRequestActionCreators.removeGuildJoinRequest(guildId);
}, [guildId, onClose]);
const props2 = {
...rest,
header: intl.string(t.KYiN1Q)
};
if (subtitleText == null) {
subtitleText = intl.string(t.nQHxqm);
}
props2.subtitle = subtitleText;
if (confirmText == null) {
confirmText = intl.string(t.OzHPde);
}
props2.buttons = <>
<Button variant="destructive" text={confirmText} onPress={callback} />
<Button text={intl.string(t.bANR0R)} variant="secondary" onPress={onClose} />
</>;
return <MemberVerificationAlert {...props2} />;
};
@@ -0,0 +1,36 @@
// Metro module 9162 (f9163).
import { useCallback } from "react";
import UserGuildJoinRequestStore from "../../../UserGuildJoinRequestStore";
import { useStateFromStores } from "../../../../../_bundle/defaultAreStatesEqual";
import { openMemberVerificationModal } from "../../../MemberVerificationModalActionCreators";
import { openMemberVerificationCancelPendingAlert } from "../../MemberVerificationAlertActionCreators";
import { intl, t } from "../../../../../intl/index.native";
import MemberVerificationAlert from "./MemberVerificationAlert";
import { ListViewIcon } from "../../../../../design/components/Icon/native/redesign/generated/ListViewIcon";
import { Button } from "../../../../../design/components/Button/native/Button.native";
export default function MemberVerificationAlertIncomplete(props) {
const { guildId, onClose, ...props2 } = props;
const stateFromStores = useStateFromStores([UserGuildJoinRequestStore], () => UserGuildJoinRequestStore.getJoinRequestGuild(guildId), [guildId]);
const callback = useCallback(() => {
if (onClose != null) {
onClose();
}
openMemberVerificationModal(guildId);
}, [guildId, onClose]);
const callback2 = useCallback(() => {
if (onClose != null) {
onClose();
}
openMemberVerificationCancelPendingAlert({
guildId,
subtitleText: intl.string(t.fJwWVt),
confirmText: intl.string(t.OQFlFD)
});
}, [guildId, onClose]);
return <MemberVerificationAlert {...props2} icon={ListViewIcon} header={stateFromStores?.name != null ? intl.formatToPlainString(t.f5Jaw7, {
guildName: stateFromStores.name
}) : intl.string(t["0sTyEb"])} buttons={<>
<Button variant="secondary" text={intl.string(t.h3aGmv)} onPress={callback} />
<Button text={intl.string(t.OQFlFD)} variant="destructive" onPress={callback2} />
</>} />;
};
@@ -0,0 +1,22 @@
// Metro module 9151 (f9152).
import { useCallback } from "react";
import { openMemberVerificationCancelPendingAlert } from "../../MemberVerificationAlertActionCreators";
import MemberVerificationAlert from "./MemberVerificationAlert";
import { ClipboardListIcon } from "../../../../../design/components/Icon/native/redesign/generated/ClipboardListIcon";
import { intl, t } from "../../../../../intl/index.native";
import { Button } from "../../../../../design/components/Button/native/Button.native";
export default function MemberVerificationAlertPending(props) {
const { guildId, onClose, ...props2 } = props;
const callback = useCallback(() => {
if (onClose != null) {
onClose();
}
openMemberVerificationCancelPendingAlert({
guildId
});
}, [guildId, onClose]);
return <MemberVerificationAlert {...props2} icon={ClipboardListIcon} header={intl.string(t.zhfXbs)} subtitle={intl.string(t["SRM/e/"])} buttons={<>
<Button variant="secondary" text={intl.string(t.f293OM)} onPress={onClose} />
<Button text={intl.string(t.mqtdmQ)} variant="destructive" onPress={callback} />
</>} />;
};
@@ -0,0 +1,46 @@
// Metro module 9157 (f9158).
import { useCallback } from "react";
import GuildMemberStore from "../../../../../stores/GuildMemberStore";
import UserStore from "../../../../../stores/UserStore";
import UserGuildJoinRequestStore from "../../../UserGuildJoinRequestStore";
import { useCurrentUserGuildJoinRequest } from "../../../hooks/useCurrentUserGuildJoinRequest";
import { useStateFromStores } from "../../../../../_bundle/Module589";
import { useCanReapplyToRejectedMemberVerificationApplication } from "../../../hooks/useCanReapplyToRejectedMemberVerificationApplication";
import GuildJoinRequestActionCreators from "../../../GuildJoinRequestActionCreators";
import { openMemberVerificationModal } from "../../../MemberVerificationModalActionCreators";
import { intl, t } from "../../../../../intl/index.native";
import MemberVerificationAlert from "./MemberVerificationAlert";
import { XSmallIcon } from "../../../../../design/components/Icon/native/redesign/generated/XSmallIcon";
import { Button } from "../../../../../design/components/Button/native/Button.native";
export default function MemberVerificationAlertRejected(props) {
let stateFromStores2;
const { guildId, secondaryButton, onClose, ...props2 } = props;
stateFromStores2 = void 0;
const rejectionReason = useCurrentUserGuildJoinRequest(guildId)?.rejectionReason;
const stateFromStores = useStateFromStores([UserStore], () => UserStore.getCurrentUser()?.id);
const canReapplyToRejectedMemberVerificationApplication = useCanReapplyToRejectedMemberVerificationApplication(guildId);
const { canReapply, isLoading } = canReapplyToRejectedMemberVerificationApplication;
const stateFromStores3 = useStateFromStores([UserGuildJoinRequestStore], () => UserGuildJoinRequestStore.getJoinRequestGuild(guildId), [guildId]);
stateFromStores2 = useStateFromStores([GuildMemberStore], () => stateFromStores != null ? GuildMemberStore.getMember(guildId, stateFromStores) : null, [stateFromStores, guildId]);
const callback = useCallback(async () => {
let c26380_0;
c26380_0 = void 0;
if (stateFromStores2?.isPending) {
await GuildJoinRequestActionCreators.removeGuildJoinRequest(guildId);
} else {
await GuildJoinRequestActionCreators.resetGuildJoinRequest(guildId);
}
if (onClose != null) {
onClose();
}
openMemberVerificationModal(guildId);
}, [guildId, stateFromStores2?.isPending, onClose]);
return <MemberVerificationAlert {...props2} icon={XSmallIcon} header={stateFromStores3?.name != null ? intl.formatToPlainString(t["P+/gzA"], {
guildName: stateFromStores3.name
}) : intl.string(t.gBPcuP)} subtitle={rejectionReason != null ? rejectionReason !== "" ? intl.formatToPlainString(t.fU5PPM, {
rejectionReason
}) : void 0 : void 0} buttons={<>
{canReapply ? <Button loading={isLoading} disabled={isLoading} variant="secondary" text={intl.string(t.rpFCLs)} onPress={callback} /> : isLoading ? <Button loading={isLoading} disabled={isLoading} variant="secondary" text={intl.string(t.rpFCLs)} onPress={callback} /> : null}
{secondaryButton}
</>} />;
};
@@ -0,0 +1,68 @@
// Metro module 9149 (f9150).
import { View } from "react-native";
import AccessibilityStore from "../../../../a11y/AccessibilityStore";
import GuildStore from "../../../../../stores/GuildStore";
import { createStyles } from "../../../../../design/components/Styles/native/createStyles";
import { useStateFromStores } from "../../../../../_bundle/Module589";
import Alert from "../../../../../components_native/common/Alert";
import { intl, t } from "../../../../../intl/index.native";
import LottieAnimationView from "../../../../../components_native/common/LottieAnimationView";
import * as _Module9150 from "../../../../../_bundle/Module9150";
import { Heading, Text } from "../../../../../design/components/Text/native/Text";
const useStyles = createStyles({
alert: {
marginTop: 120
},
header: {
marginTop: 40,
textAlign: "center"
},
text: {
marginVertical: 8,
lineHeight: 18,
textAlign: "center"
},
illustrationContainer: {
position: "absolute",
display: "flex",
flexDirection: "column",
alignItems: "center",
left: 0,
right: 0,
top: -220
},
illustration: {
height: 246,
width: 240
}
});
export default function MemberVerificationAlertSuccess(props) {
const { guildId, handleConfirmAndAck, ...props2 } = props;
let c17037_2 = props2;
const styles = useStyles();
const stateFromStores2 = useStateFromStores([GuildStore], () => GuildStore.getGuild(guildId), [guildId]);
const stateFromStores = useStateFromStores([AccessibilityStore], () => AccessibilityStore.useReducedMotion);
if (stateFromStores2 == null) {
return null;
}
const onConfirm = function onConfirm() {
handleConfirmAndAck();
const onClose = c17037_2.onClose;
if (onClose != null) {
onClose.call(c17037_2);
}
};
return <Alert {...props2} confirmText={intl.string(t.NuzmOA)} style={styles.alert} onCancel={onConfirm} onConfirm={onConfirm}>
<View style={styles.illustrationContainer}>
<LottieAnimationView source={_Module9150} autoPlay={!stateFromStores} style={styles.illustration} />
</View>
<Heading style={styles.header} variant="heading-lg/extrabold" color="mobile-text-heading-primary">
{intl.format(t["7hhNEn"], {
guildName: stateFromStores2.name
})}
</Heading>
<Text style={styles.text} variant="text-sm/medium" color="text-default">
{intl.string(t.nwpqyc)}
</Text>
</Alert>;
};
@@ -0,0 +1,37 @@
// Metro module 9160 (f9161).
import { Image as Image2 } from "react-native";
import { DownloadLinks } from "../../../../../Constants";
import { createStyles } from "../../../../../design/components/Styles/native/createStyles";
import Alert from "../../../../../components_native/common/Alert";
import { intl, t } from "../../../../../intl/index.native";
import Linking from "../../../../../lib/native/Linking";
import Module9161 from "../../../../../_bundle/Module9161";
import { Text } from "../../../../../design/components/Text/native/Text";
const useStyles = createStyles({
headerImage: {
marginLeft: "auto",
marginRight: "auto",
marginTop: 8
},
header: {
marginTop: 24,
textAlign: "center"
},
text: {
marginVertical: 8,
lineHeight: 18,
textAlign: "center"
}
});
export default function MemberVerificationAlertUpdate(props) {
const styles = useStyles();
return <Alert {...props} confirmText={intl.string(t.b8siyY)} cancelText={intl.string(t["ETE/oC"])} onConfirm={() => Linking.openURL(DownloadLinks.IOS)} onCancel={props.onClose}>
<Image2 source={Module9161} style={styles.headerImage} />
<Text style={styles.header} variant="heading-lg/extrabold" color="mobile-text-heading-primary">
{intl.string(t.kkjNHU)}
</Text>
<Text style={styles.text} variant="text-sm/medium" color="text-default">
{intl.string(t.gnkqzQ)}
</Text>
</Alert>;
};
@@ -0,0 +1,18 @@
// Metro module 8343 (f8344).
import { Fonts } from "../../../../../_bundle/Module505";
import { createStyles } from "../../../../../design/components/Styles/native/createStyles";
import TextStyles from "../../../../rebrand/native/TextStyles";
import Module712 from "../../../../../_bundle/Module712";
import { LegacyText } from "../../../../../design/void/native";
const useStyles = createStyles({
fieldHeader: {
...TextStyles(Fonts.DISPLAY_EXTRABOLD, Module712.colors.TEXT_SUBTLE, 12, {
uppercase: true
}),
paddingBottom: 8
}
});
export default function FormHeader(props) {
const { children, ...props2 } = props;
return <LegacyText {...props2} style={[useStyles().fieldHeader, props2.style]}>{children}</LegacyText>;
};
@@ -0,0 +1,14 @@
// Metro module 9170 (f9171).
import { View } from "react-native";
import { createStyles } from "../../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../../_bundle/Module712";
const useStyles = createStyles({
separator: {
borderBottomColor: Module712.colors.BORDER_SUBTLE,
borderBottomWidth: 1,
marginVertical: 12
}
});
export default function FormSeparator(props) {
return <View {...props} style={[useStyles().separator, props.style]} />;
};
@@ -0,0 +1,78 @@
// Metro module 9176 (f9177).
import { View } from "react-native";
import { createStyles } from "../../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../../_bundle/Module712";
import { Text } from "../../../../../design/components/Text/native/Text";
import { CheckmarkLargeIcon } from "../../../../../design/components/Icon/native/redesign/generated/CheckmarkLargeIcon";
import { Button } from "../../../../../design/components/Button/native/Button.native";
import { intl, t } from "../../../../../intl/index.native";
import { UserVerificationFieldPlatforms } from "../../../MemberVerificationTypes";
import EmailVerificationModalActionCreators from "../../../../../actions/native/EmailVerificationModalActionCreators";
import ModalActionCreators from "../../../../../actions/ModalActionCreators";
import { ChangePhoneReason } from "../../../../phone/PhoneActionCreators";
import { EnvelopeIcon } from "../../../../../design/components/Icon/native/redesign/generated/EnvelopeIcon";
import { MobilePhoneIcon } from "../../../../../design/components/Icon/native/redesign/generated/MobilePhoneIcon";
let useStyles;
const BaseIdentityVerificationField = function BaseIdentityVerificationField(props) {
let props2;
const { label, passesVerification, onPress, icon: Icon } = props;
const styles = useStyles();
const r20 = [Icon != null ? <Icon style={styles.icon} /> : null, <Text style={[styles.label]} variant="text-md/medium" color="mobile-text-heading-primary">{label}</Text>, ,];
const r29 = {
style: null,
children: null
};
if (passesVerification) {
r29.style = styles.verifiedContainer;
r29.children = <CheckmarkLargeIcon color="status-positive" />;
props2 = r29;
} else {
r29.style = styles.ctaButton;
r29.children = <Button variant="primary" size="sm" grow text={intl.string(t["13ofGu"])} onPress={onPress} />;
props2 = r29;
}
r20[2] = <View {...props2} />;
return <View style={styles.container}>{r20}</View>;
};
useStyles = createStyles({
container: {
padding: 8,
marginTop: 8,
borderRadius: Module712.radii.sm,
height: 48,
flexDirection: "row",
alignItems: "center",
justifyContent: "space-between",
backgroundColor: Module712.colors.BACKGROUND_SURFACE_HIGH
},
icon: {
marginLeft: 4,
marginRight: 8
},
label: {
flex: 1,
marginLeft: 4,
lineHeight: 20
},
verifiedContainer: {
paddingVertical: 7,
paddingHorizontal: 4,
flexDirection: "row",
alignItems: "center"
},
ctaButton: {
flexGrow: 0,
alignSelf: "center",
paddingHorizontal: 16
}
});
export default function IdentityVerificationField(props) {
const { platform: platform2, passesVerification } = props;
return <BaseIdentityVerificationField label={UserVerificationFieldPlatforms.EMAIL === platform2 ? passesVerification ? intl.string(t.INsLgA) : intl.string(t.c6EUJI) : UserVerificationFieldPlatforms.PHONE === platform2 ? passesVerification ? intl.string(t["xO2XI/"]) : intl.string(t.woMjLV) : intl.string(t.mhv8BM)} icon={UserVerificationFieldPlatforms.EMAIL === platform2 ? EnvelopeIcon : UserVerificationFieldPlatforms.PHONE === platform2 ? MobilePhoneIcon : EnvelopeIcon} passesVerification={passesVerification} onPress={UserVerificationFieldPlatforms.EMAIL === platform2 ? () => {
EmailVerificationModalActionCreators.open();
} : UserVerificationFieldPlatforms.PHONE === platform2 ? () => {
ModalActionCreators.pushLazy(import("../../../../verification/native/components/PhoneVerificationModal"), {
reason: ChangePhoneReason.GUILD_PHONE_REQUIRED
});
} : () => {}} />;
};
@@ -0,0 +1,40 @@
// Metro module 9266 (f9267).
import { useMemo } from "react";
import { View } from "react-native";
import { Fonts } from "../../../../../_bundle/Module505";
import { createStyles } from "../../../../../design/components/Styles/native/createStyles";
import TextStyles from "../../../../rebrand/native/TextStyles";
import Module712 from "../../../../../_bundle/Module712";
import { Text } from "../../../../../design/components/Text/native/Text";
import { TableRadioGroup } from "../../../../../design/components/TableRow/native/TableRadioGroup.native";
import { TableRadioRow } from "../../../../../design/components/TableRow/native/TableRadioRow.native";
const useStyles = createStyles({
container: {
marginVertical: 12,
flexDirection: "column"
},
formHeader: {
...TextStyles(Fonts.DISPLAY_SEMIBOLD, Module712.colors.MOBILE_TEXT_HEADING_PRIMARY, 16, {
uppercase: false
}),
paddingBottom: 16
}
});
export default function MultipleChoiceField(props) {
const { field, onChange: onChange2, hasIcons } = props;
const styles = useStyles();
const { label, choices } = field;
let response = field.response;
const memo = useMemo(() => choices.map((choice, index) => ({
name: choice,
value: index
})), [choices]);
const r32 = [<Text style={styles.formHeader} variant="heading-md/semibold" color="mobile-text-heading-primary">{label}</Text>, ,];
if (response == null) {
response = -1;
}
r32[1] = <TableRadioGroup defaultValue={response} onChange={(event) => onChange2(event)} hasIcons={hasIcons}>
{memo.map((item) => <TableRadioRow key={item.value} label={item.name} value={item.value} />)}
</TableRadioGroup>;
return <View style={styles.container}>{r32}</View>;
};
@@ -0,0 +1,34 @@
// Metro module 9265 (f9266).
import { View } from "react-native";
import { MAX_PARAGRAPH_RESPONSE_LENGTH } from "../../../MemberVerificationConstants";
import { Fonts } from "../../../../../_bundle/Module505";
import { createStyles } from "../../../../../design/components/Styles/native/createStyles";
import TextStyles from "../../../../rebrand/native/TextStyles";
import Module712 from "../../../../../_bundle/Module712";
import { Text } from "../../../../../design/components/Text/native/Text";
import { TextArea } from "../../../../../design/components/TextInput/native/TextArea.native";
import { intl, t } from "../../../../../intl/index.native";
const useStyles = createStyles({
container: {
marginVertical: 12,
flexDirection: "column"
},
formHeader: {
...TextStyles(Fonts.DISPLAY_SEMIBOLD, Module712.colors.MOBILE_TEXT_HEADING_PRIMARY, 16, {
uppercase: false
}),
paddingBottom: 16
}
});
export default function ParagraphField(props) {
const { field, onChange } = props;
const styles = useStyles();
const label = field.label;
let response = field.response;
const r23 = [<Text style={styles.formHeader} variant="heading-md/semibold" color="mobile-text-heading-primary">{label}</Text>, ,];
if (response == null) {
response = "";
}
r23[1] = <TextArea maxLength={MAX_PARAGRAPH_RESPONSE_LENGTH} value={response} placeholder={intl.string(t["Sqn+Wh"])} onChange={onChange} />;
return <View style={styles.container}>{r23}</View>;
};
@@ -0,0 +1,24 @@
// Metro module 9174 (f9175).
import { View } from "react-native";
import { createStyles } from "../../../../../design/components/Styles/native/createStyles";
import TermsFieldList from "./TermsFieldList";
import { TableCheckboxRow } from "../../../../../design/components/TableRow/native/TableCheckboxRow.native";
import { intl, t } from "../../../../../intl/index.native";
const useStyles = createStyles({
container: {
marginVertical: 12,
flexDirection: "column"
}
});
export default function TermsField(props) {
const { field, onChange, rulesChannelId } = props;
const styles = useStyles();
const values = field.values;
let response = field.response;
const r22 = [<TermsFieldList rules={values} rulesChannelId={rulesChannelId} />, ,];
if (response == null) {
response = false;
}
r22[1] = <TableCheckboxRow start end checked={response} label={intl.string(t["2EXfGJ"])} onPress={onChange} />;
return <View style={styles.container}>{r22}</View>;
};
@@ -0,0 +1,71 @@
// Metro module 5180 (f5181).
import * as Module19 from "react";
import { View } from "react-native";
import { createStyles } from "../../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../../_bundle/Module712";
import { Text } from "../../../../../design/components/Text/native/Text";
import MarkupUtils from "../../../../markup/MarkupUtils";
import { intl, t } from "../../../../../intl/index.native";
import { TableRowDivider } from "../../../../../design/components/TableRow/native/TableRowDivider.native";
let useStyles;
const TermsFieldListItem = function TermsFieldListItem(props) {
const { rowNumber, rule, rulesChannelId: rulesChannelId2 } = props;
const styles2 = useStyles();
return <View style={styles2.termsRow}>
<Text style={styles2.termsRowNumber} variant="text-sm/medium" color="text-muted">
{`${rowNumber}.`}
</Text>
<Text style={styles2.termsRowContent} variant="text-md/medium">
{MarkupUtils.parseGuildVerificationFormRule(rule, true, {
channelId: rulesChannelId2
})}
</Text>
</View>;
};
useStyles = createStyles({
termsContainer: {
padding: 16,
flexDirection: "column",
justifyContent: "space-between",
backgroundColor: Module712.colors.CARD_BACKGROUND_DEFAULT
},
firstItem: {
borderTopLeftRadius: Module712.radii.sm,
borderTopRightRadius: Module712.radii.sm
},
lastItem: {
borderBottomLeftRadius: Module712.radii.sm,
borderBottomRightRadius: Module712.radii.sm,
marginBottom: 12
},
termsRow: {
flexDirection: "row"
},
termsRowContent: {
flex: 1,
lineHeight: 20
},
termsRowNumber: {
paddingRight: 8,
width: 20,
height: 20
},
title: {
marginBottom: 16
}
});
export default function TermsFieldList(props) {
const { rules, rulesChannelId } = props;
const styles = useStyles();
return <>
<Text style={styles.title} accessibilityRole="header" variant="heading-md/semibold" color="mobile-text-heading-primary">
{intl.string(t.prJqwT)}
</Text>
{rules.map((a0, index) => <Module19.Fragment key={`term-${a0}-${index}`}>
<View style={[styles.termsContainer, index === 0 ? styles.firstItem : null, index === rules.length - 1 ? styles.lastItem : null]}>
<TermsFieldListItem rule={a0} rowNumber={index + 1} rulesChannelId={rulesChannelId} />
</View>
{index !== rules.length - 1 ? <TableRowDivider /> : null}
</Module19.Fragment>)}
</>;
};
@@ -0,0 +1,34 @@
// Metro module 9264 (f9265).
import { View } from "react-native";
import { MAX_TEXT_RESPONSE_LENGTH } from "../../../MemberVerificationConstants";
import { Fonts } from "../../../../../_bundle/Module505";
import { createStyles } from "../../../../../design/components/Styles/native/createStyles";
import TextStyles from "../../../../rebrand/native/TextStyles";
import Module712 from "../../../../../_bundle/Module712";
import { Text } from "../../../../../design/components/Text/native/Text";
import { TextInput } from "../../../../../design/components/TextInput/native/TextInput.native";
import { intl, t } from "../../../../../intl/index.native";
const useStyles = createStyles({
container: {
marginVertical: 12,
flexDirection: "column"
},
formHeader: {
...TextStyles(Fonts.DISPLAY_SEMIBOLD, Module712.colors.MOBILE_TEXT_HEADING_PRIMARY, 16, {
uppercase: false
}),
paddingBottom: 16
}
});
export default function TextInputField(props) {
const { field, onChange } = props;
const styles = useStyles();
const label = field.label;
let response = field.response;
const r23 = [<Text style={styles.formHeader} variant="heading-md/semibold" color="mobile-text-heading-primary">{label}</Text>, ,];
if (response == null) {
response = "";
}
r23[1] = <TextInput maxLength={MAX_TEXT_RESPONSE_LENGTH} value={response} placeholder={intl.string(t["Sqn+Wh"])} onChange={onChange} />;
return <View style={styles.container}>{r23}</View>;
};
@@ -0,0 +1,25 @@
// Metro module 9175 (f9176).
import { createStyles } from "../../../../../design/components/Styles/native/createStyles";
import { UserVerificationFieldPlatforms } from "../../../MemberVerificationTypes";
import IdentityVerificationField from "./IdentityVerificationField";
import { Text } from "../../../../../design/components/Text/native/Text";
import { intl, t } from "../../../../../intl/index.native";
const useStyles = createStyles({
emailPhoneNote: {
marginTop: 8,
marginBottom: 12
}
});
export default function UserVerification(props) {
const { verification, field } = props;
const styles = useStyles();
if (field.platform == null) {
return null;
}
const platform2 = field.platform;
return <>
{[platform2 === UserVerificationFieldPlatforms.PHONE && <IdentityVerificationField passesVerification={verification[UserVerificationFieldPlatforms.PHONE]} platform={UserVerificationFieldPlatforms.PHONE} />, <IdentityVerificationField passesVerification={verification[UserVerificationFieldPlatforms.EMAIL]} platform={UserVerificationFieldPlatforms.EMAIL} />, <Text style={styles.emailPhoneNote} variant="heading-deprecated-12/medium" color="text-default">
{platform2 === UserVerificationFieldPlatforms.PHONE ? intl.string(t["jMh+TY"]) : intl.string(t.Vgv9ip)}
</Text>]}
</>;
};
@@ -0,0 +1,7 @@
// Metro module 15448 (f15449).
import ActionSheetActionCreators from "../../action_sheet/native/ActionSheetActionCreators";
export default function openJoinRequestActionSheet(a0) {
ActionSheetActionCreators.openLazy(import("./components/JoinRequestActionSheet"), `joinRequestActionSheet${a0.joinRequestId}`, {
joinRequest: a0
});
};
@@ -0,0 +1,214 @@
// Metro module 11726 (f11727).
import { useState, useCallback } from "react";
import ChannelStore from "../../../stores/ChannelStore";
import { Routes } from "../../../Constants";
import ToastActionCreators from "../../toast/native/ToastActionCreators";
import { intl, t } from "../../../intl/index.native";
import safeTransitionTo_native from "../../links/safeTransitionTo.native";
import ActionSheetActionCreators from "../../action_sheet/native/ActionSheetActionCreators";
import GuildJoinRequestActionCreators from "../GuildJoinRequestActionCreators";
import { GuildJoinRequestApplicationStatuses } from "../MemberVerificationTypes";
import { CircleCheckIcon } from "../../../design/components/Icon/native/redesign/generated/CircleCheckIcon";
import Module712 from "../../../_bundle/Module712";
function $mk116287($env) {
return () => <CircleCheckIcon color={Module712.colors.STATUS_POSITIVE_BACKGROUND} secondaryColor={Module712.colors.STATUS_POSITIVE_TEXT} />;
}
export function useJoinRequestButtonActions(a0, a1, a2) {
const joinRequest = a0;
const onDismiss = a2;
const r3 = a0 == null ? {} : a0;
const { guildId, userId, joinRequestId } = r3;
const [state, setState] = useState(false);
const callback = useCallback(() => {
ToastActionCreators.open({
key: "JOIN_REQUEST_ERROR",
content: intl.string(t.R0RpRX)
});
}, []);
const callback2 = useCallback(async () => {
let c27134_2;
let c27134_3 = 0;
let c30435_0;
L25: {
L20: {
L24: {
try {
c30435_0 = void 0;
if (state) {
break L25;
}
if (guildId == null) {
break L25;
}
if (userId == null) {
break L25;
}
if (joinRequestId == null) {
break L25;
}
const channel = ChannelStore.getChannel(a1);
if (channel != null) {
await safeTransitionTo_native(Routes.CHANNEL(null, channel.id), {
openChannel: true,
navigationReplace: false
});
ActionSheetActionCreators.hideActionSheet();
break L24;
}
setState(true);
c27134_3 = 2;
c30435_0 = await GuildJoinRequestActionCreators.createOrEnterJoinRequestInterview(joinRequestId, false);
if (c30435_0 != null) {
await safeTransitionTo_native(Routes.CHANNEL(null, c30435_0), {
openChannel: true,
navigationReplace: false
});
}
c27134_3 = 1;
c27134_3 = 0;
(0, setState)(false);
ActionSheetActionCreators.hideActionSheet();
break L20;
} catch ($e) {
const r33 = $e;
let r7 = r33;
c27134_2 = r33;
let r34 = c27134_3;
if (r34 !== 0) {
while (true) {
if (r34 === 1) {
try {
const r178 = c27134_2;
c27134_3 = 0;
(0, setState)(false);
ActionSheetActionCreators.hideActionSheet();
throw r178;
} catch (r176) {
r7 = r176;
c27134_2 = r176;
r34 = c27134_3;
if (r34 === 0) {
break;
}
}
} else {
try {
c27134_3 = 1;
(0, callback)();
c27134_3 = 0;
(0, setState)(false);
ActionSheetActionCreators.hideActionSheet();
break L20;
} catch (r159) {
r7 = r159;
c27134_2 = r159;
r34 = c27134_3;
if (r34 === 0) {
break;
}
}
}
}
}
throw r7;
}
}
return void 0;
}
return void 0;
}
}, [guildId, joinRequestId, a1, callback, state, userId]);
return {
approveRequest: useCallback(async () => {
let c27135_0, c27135_1, c27135_2;
let c27135_3 = 0;
const r10 = void 0;
L17: {
L16: {
try {
c27135_1 = r10;
c27135_0 = r10;
if (state) {
break L17;
}
if (guildId == null) {
break L17;
}
if (userId == null) {
break L17;
}
if (joinRequestId == null) {
break L17;
}
setState(true);
c27135_3 = 2;
await GuildJoinRequestActionCreators.updateGuildJoinRequest(guildId, userId, joinRequestId, GuildJoinRequestApplicationStatuses.APPROVED);
ToastActionCreators.open({
key: "JOIN_REQUEST_APPROVE",
content: intl.string(t.WXHcq5),
icon: $mk116287(void 0)
});
c27135_3 = 1;
c27135_3 = 0;
(0, setState)(false);
ActionSheetActionCreators.hideActionSheet();
} catch ($e) {
const r33 = $e;
let r7 = r33;
c27135_2 = r33;
let r34 = c27135_3;
if (r34 !== 0) {
while (true) {
if (r34 === 1) {
try {
const r123 = c27135_2;
c27135_3 = 0;
(0, setState)(false);
ActionSheetActionCreators.hideActionSheet();
throw r123;
} catch (r121) {
r7 = r121;
c27135_2 = r121;
r34 = c27135_3;
if (r34 === 0) {
break;
}
}
} else {
try {
c27135_3 = 1;
(0, callback)();
c27135_3 = 0;
(0, setState)(false);
ActionSheetActionCreators.hideActionSheet();
break L16;
} catch (r104) {
r7 = r104;
c27135_2 = r104;
r34 = c27135_3;
if (r34 === 0) {
break;
}
}
}
}
}
throw r7;
}
}
return void 0;
}
}, [guildId, joinRequestId, callback, state, userId]),
rejectRequest: useCallback(() => {
if (joinRequest != null && guildId != null && userId != null && joinRequestId != null) {
ActionSheetActionCreators.openLazy(import("./components/JoinRequestRejectionReasonActionSheet"), `RejectionReason-${joinRequestId}`, {
joinRequest,
onError: callback,
onDismiss
});
}
}, [guildId, joinRequestId, a0, a2, callback, userId]),
submitting: state,
handleOpenInterview: callback2
};
}