{"version":3,"file":"static/chunks/8169-386a1a329eac825f.js","mappings":"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","sources":["webpack://_N_E/../../packages/api/post-service.ts","webpack://_N_E/../../packages/api/user-service.ts","webpack://_N_E/../../packages/utils/context/UserDetailsContext.tsx","webpack://_N_E/../../packages/utils/types/post.ts","webpack://_N_E/"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useMemo } from \"react\";\n\nimport axios, { AxiosRequestConfig } from \"axios\";\n\nimport { COMMENT_LEVELS, LEAF_COMMENTS } from \"utils/helpers/constants\";\nimport {\n CustomerMuteInfo,\n CustomerMuteResults,\n PostTypes,\n BanUserRequest,\n} from \"utils/types/post\";\n\nimport { APIServiceClient } from \"./api-service\";\n\nimport type {\n CommunitiesResult,\n ArticlePostResult,\n PostsResult,\n ReactionRequestBody,\n ReactionResult,\n ReactionsResult,\n SubCategoriesResult,\n TagsResult,\n AppealDetails,\n PaginatedResult,\n} from \"./types/post-service\";\nimport type {\n Post,\n ArticlePost,\n UploadImageType,\n Comments,\n Comment,\n Poll,\n Polls,\n SubCategory,\n CustomerBannedResult,\n UnbannedCommunitiesResult,\n CustomerProfile,\n ModeratorsLogsResult,\n ModerationLogDetail,\n ModeratorPermissions,\n ActiveBan,\n} from \"utils/types/post\";\n\nexport const API_URL = process.env.TPL_POSTS_SERVICE;\n\nexport const cancelTokenSource = axios.CancelToken.source();\n\nlet postServiceClient: PostServiceClient | undefined;\n\n/**\n * The PostServiceClient class creates an Axios instance for making HTTP requests to the\n * Community microservice API, with methods for authentication, profile management, and miscellaneous tasks.\n *\n * TODO: Add types for all data models used in this service.\n * TODO: Replace all uses of \"any\" type.\n */\nclass PostServiceClient extends APIServiceClient {\n constructor(accessToken?: string) {\n super({\n accessToken,\n baseURL: process.env.TPL_POSTS_SERVICE,\n config: { cancelToken: cancelTokenSource.token },\n });\n }\n\n posts() {\n return {\n createPost: async (data: any): Promise =>\n await this.instance.post(\"posts/api/v1/posts/\", data, {\n withCredentials: true,\n }),\n createArticlePost: async (data: any): Promise =>\n await this.instance.post(\"posts/api/v1/post_articles/\", data, {\n withCredentials: true,\n }),\n updatePost: async (data: any, postId: string): Promise =>\n await this.instance.put(`posts/api/v1/posts/${postId}/`, data, {\n withCredentials: true,\n }),\n uploadImageS3: async (data: any): Promise =>\n await this.instance.post(\"s3_content/api/v1/s3_contents/\", data, {\n headers: { \"Content-Type\": \"multipart/form-data\" },\n withCredentials: true,\n }),\n getTagsList: async (): Promise =>\n await this.instance.get(\"tags/api/v1/tags/\", {\n withCredentials: true,\n }),\n getPostById: async (id: string, params?: any): Promise =>\n await this.instance.get(`posts/api/v1/posts/${id}/`, {\n ...(params && { params }),\n withCredentials: true,\n }),\n getPostBySlug: async (slug: string): Promise =>\n await this.instance.get(`posts/api/v1/posts/by_slug/${slug}/`),\n getPosts: async (\n page?: string,\n ordering?: string\n ): Promise => {\n const params = {\n ...(page && { page }),\n ...(ordering && { ordering }),\n state: PostTypes.active,\n };\n const queryString = new URLSearchParams(params).toString();\n\n return await this.instance.get(\n `posts/api/v1/posts/?${queryString || \"\"}`\n );\n },\n getArticlePost: async (articleId: string): Promise =>\n await this.instance.get(\n `posts/api/v1/post_articles/${articleId}/?quiet=true`,\n { withCredentials: true }\n ),\n blockPost: async (data: any, postId: string): Promise =>\n await this.instance.put(`posts/api/v1/blocks/${postId}`, data, {\n withCredentials: true,\n }),\n unblockPost: async (postId: string): Promise =>\n await this.instance.delete(`posts/api/v1/blocks/${postId}`, {\n withCredentials: true,\n }),\n pinPost: async (postId: string): Promise =>\n await this.instance.put(\n `posts/api/v1/pins/${postId}`,\n {},\n {\n withCredentials: true,\n }\n ),\n unpinPost: async (postId: string): Promise =>\n await this.instance.delete(`posts/api/v1/pins/${postId}`, {\n withCredentials: true,\n }),\n markPremiumPost: async (postId: string): Promise =>\n await this.instance.put(\n `posts/api/v1/premium/${postId}`,\n {},\n {\n withCredentials: true,\n }\n ),\n unmarkPremiumPost: async (postId: string): Promise =>\n await this.instance.delete(`posts/api/v1/premium/${postId}`, {\n withCredentials: true,\n }),\n pauseNotifications: async (postId: string): Promise =>\n this.instance.put(`posts/api/v1/pause_notification/${postId}`, null, {\n withCredentials: true,\n }),\n unpauseNotifications: async (postId: string): Promise =>\n this.instance.delete(`posts/api/v1/pause_notification/${postId}`, {\n withCredentials: true,\n }),\n };\n }\n\n comments() {\n return {\n createComment: async (data: any): Promise =>\n await this.instance.post(\"/comments/api/v1/comments/\", data, {\n withCredentials: true,\n }),\n updateComment: async (data: any, commentId: string): Promise =>\n await this.instance.put(\n `/comments/api/v1/comments/${commentId}/`,\n data,\n { withCredentials: true }\n ),\n blockComment: async (data: any, commentId: string): Promise =>\n await this.instance.put(`comments/api/v1/blocks/${commentId}`, data, {\n withCredentials: true,\n }),\n\n unblockComment: async (commentId: string): Promise =>\n await this.instance.delete(`comments/api/v1/blocks/${commentId}`, {\n withCredentials: true,\n }),\n\n getComments: async (postId: string, page: string): Promise =>\n await this.instance.get(`comments/api/v1/comments/`, {\n params: {\n parent_id: postId,\n page: page,\n levels: COMMENT_LEVELS,\n leaf_comments: LEAF_COMMENTS,\n ordering: \"-created_at\",\n nested_ordering: \"-created_at\",\n },\n withCredentials: true,\n }),\n\n getComment: async (\n commentId: string,\n levels?: number,\n pageNumber?: number,\n fields?: string,\n params?: any\n ): Promise =>\n await this.instance.get(`comments/api/v1/comments/${commentId}/`, {\n params: {\n ...(fields && { fields }),\n ...(params && { ...params }),\n page: pageNumber,\n levels: levels || 0,\n leaf_comments: LEAF_COMMENTS,\n ordering: \"-created_at\",\n nested_ordering: \"-created_at\",\n },\n withCredentials: true,\n }),\n pauseNotifications: async (commentId: string): Promise =>\n await this.instance.put(\n `comments/api/v1/pause_notification/${commentId}`,\n null,\n { withCredentials: true }\n ),\n unpauseNotifications: async (commentId: string): Promise =>\n await this.instance.delete(\n `comments/api/v1/pause_notification/${commentId}`,\n { withCredentials: true }\n ),\n };\n }\n\n moderation(accessToken?: string) {\n return {\n getAppealDetails: async (\n moderationDecisionLog: string\n ): Promise =>\n await this.instance.get(\n `moderation/api/v1/appealable_moderation_decision_logs/${moderationDecisionLog}`,\n {\n ...(accessToken\n ? {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n }\n : {\n withCredentials: true,\n }),\n }\n ),\n createAppeal: async (data: any): Promise =>\n await this.instance.post(\"/moderation/api/v1/appeals/\", data, {\n withCredentials: true,\n }),\n\n getModeratorsList: async (communityId: string): Promise =>\n await this.instance.get(\n `communities/api/v1/moderators?community=${communityId}`,\n {\n withCredentials: true,\n }\n ),\n updateModerator: async (data: any, communityId: string): Promise =>\n await this.instance.patch(\n `/communities/api/v1/modifyModeratorsList?community=${communityId}`,\n data,\n {\n withCredentials: true,\n }\n ),\n getModeratorsLogs: async (path: string): Promise =>\n await this.instance.get(path, {\n withCredentials: true,\n }),\n getBanBlockLogDetail: async (id: string): Promise =>\n await this.instance.get(\n `moderation/api/v1/moderation_decision_logs/${id}`,\n {\n withCredentials: true,\n }\n ),\n updateAppeal: async (data: any, appealId: string): Promise =>\n await this.instance.patch(\n `/moderation/api/v1/appeals/${appealId}/`,\n data,\n {\n withCredentials: true,\n }\n ),\n getModeratorPermissions: async (\n community?: string\n ): Promise =>\n await this.instance.get(`communities/api/v1/moderator_permissions`, {\n params: {\n ...(community && { community }),\n moderatable_only: true,\n },\n withCredentials: true,\n }),\n searchUsers: async (\n searchText: string,\n communityId?: string,\n noModerator?: boolean\n ): Promise => {\n return await this.instance.get(\n `/customers/api/v1/customer_usernames?search=${searchText}`,\n {\n withCredentials: true,\n params: {\n search: searchText,\n exclude_self: true,\n ...(communityId && { not_moderator_in_communities: communityId }),\n ...(noModerator && { not_any_moderator: noModerator }),\n },\n }\n );\n },\n };\n }\n\n polls() {\n return {\n createPoll: async (data: any): Promise =>\n await this.instance.post(\"/posts/api/v1/polls/\", data, {\n withCredentials: true,\n }),\n getPollsByPostId: async (postId: string): Promise =>\n await this.instance.get(`/posts/api/v1/polls/`, {\n params: {\n post: postId,\n },\n }),\n editPoll: async (pollId: string, data: any): Promise =>\n await this.instance.put(`/posts/api/v1/polls/${pollId}/`, data, {\n withCredentials: true,\n }),\n createPollVote: async (data: any): Promise =>\n await this.instance.post(\"/posts/api/v1/poll_votes/\", data, {\n withCredentials: true,\n }),\n createPollOption: async (data: any): Promise =>\n await this.instance.post(`/posts/api/v1/poll_options/`, data, {\n withCredentials: true,\n }),\n editPollOption: async (optionId: string, data: any): Promise =>\n await this.instance.put(\n `/posts/api/v1/poll_options/${optionId}/`,\n data,\n { withCredentials: true }\n ),\n deletePollOption: async (optionId: string): Promise =>\n await this.instance.delete(`/posts/api/v1/poll_options/${optionId}/`, {\n withCredentials: true,\n }),\n };\n }\n\n reaction() {\n return {\n getReactions: async (\n ids: string[],\n type: \"post\" | \"comment\" = \"post\",\n config?: AxiosRequestConfig\n ): Promise => {\n return this.instance.get(\"reacts/api/v1/reactions/\", {\n params: {\n object_ids: ids.toString(),\n object_type: type,\n },\n ...config,\n });\n },\n createReaction: async (\n data: ReactionRequestBody\n ): Promise =>\n this.instance.post(\"reacts/api/v1/reactions/\", data, {\n withCredentials: true,\n }),\n changeReaction: async (reactionId: string, data: ReactionRequestBody) =>\n this.instance.put(`reacts/api/v1/reactions/${reactionId}/`, data, {\n withCredentials: true,\n }),\n deleteReaction: async (reactionId: string) =>\n this.instance.delete(`reacts/api/v1/reactions/${reactionId}/`, {\n withCredentials: true,\n }),\n };\n }\n\n community() {\n return {\n getCommunities: async (): Promise =>\n await this.instance.get(\"communities/api/v1/communities/\"),\n getSubCategories: async (\n community: string\n ): Promise =>\n await this.instance.get(\"communities/api/v1/sub_categories\", {\n params: { community },\n withCredentials: false,\n }),\n getSubCategoryById: async (subCategoryId: string): Promise =>\n await this.instance.get(\n `communities/api/v1/sub_categories/${subCategoryId}`\n ),\n getModeratorsHighestPosition: async (): Promise =>\n await this.instance.get(\n `communities/api/v1/highest_moderator_position`,\n { withCredentials: true }\n ),\n getIsCommunityModerator: async (\n customer: string,\n community: string\n ): Promise<{ isModeratorOfCommunity: boolean }> =>\n await this.instance.get(`communities/api/v1/is_moderator?customer`, {\n params: {\n customer,\n community,\n },\n withCredentials: true,\n }),\n banCustomerByModerator: async (\n userId: string,\n banDetails: BanUserRequest\n ): Promise => {\n const { isBlanketBan, endTime, reason, communities } = banDetails;\n\n const banList = [];\n if (isBlanketBan) {\n banList.push({\n community: \"\",\n customer: userId,\n is_blanket_banned: isBlanketBan,\n end_time: endTime,\n reason: reason,\n });\n } else {\n communities.forEach((community) => {\n banList.push({\n community: community,\n customer: userId,\n is_blanket_banned: isBlanketBan,\n end_time: endTime,\n reason: reason,\n });\n });\n }\n\n return await this.instance.post(`moderation/api/v1/bans/`, banList, {\n withCredentials: true,\n });\n },\n unbanCustomerByModerator: async (id: string) =>\n await this.instance.delete(`/moderation/api/v1/bans/${id}/`, {\n withCredentials: true,\n }),\n getCustomerBanStatus: async (\n customerId: string,\n communityId?: string | null\n ): Promise =>\n await this.instance.get(\n `moderation/api/v1/bans/?customer=${customerId}`,\n {\n params: {\n community: communityId,\n },\n withCredentials: true,\n }\n ),\n getUnbannedCommunities: async (\n customerId: string,\n moderateOnly: boolean\n ): Promise =>\n await this.instance.get(\n `moderation/api/v1/not_banned_communities?customer=${customerId}&moderatable_only=${moderateOnly}`,\n {\n withCredentials: true,\n }\n ),\n muteCustomer: async (customerId: string): Promise =>\n await this.instance.post(\n `customers/api/v1/customer_relations/`,\n {\n related_customer: customerId,\n relation_type: \"muted\",\n },\n {\n withCredentials: true,\n }\n ),\n unmuteCustomer: async (customerId: string): Promise =>\n await this.instance.delete(\n `customers/api/v1/customer_relations/${customerId}/?relation_type=muted`,\n {\n withCredentials: true,\n }\n ),\n getMuteStatus: async (\n customerIds: Array\n ): Promise => {\n const mutedIdString = customerIds.join(\",\");\n\n const customerMuteResults = await this.instance.get<\n CustomerMuteResults,\n CustomerMuteResults\n >(`/customers/api/v1/customer_relations/`, {\n withCredentials: true,\n params: {\n related_customers: mutedIdString,\n relation_type: \"muted\",\n },\n });\n\n return Promise.resolve(customerMuteResults?.results);\n },\n };\n }\n}\n\nconst createPostServiceClient = () => {\n return new PostServiceClient();\n};\n\nexport const getPostService = (accessToken?: string) => {\n if (accessToken) {\n return new PostServiceClient(accessToken);\n }\n\n const _postServiceClient = postServiceClient ?? createPostServiceClient();\n\n if (!postServiceClient) postServiceClient = _postServiceClient;\n\n return _postServiceClient;\n};\n\n/**\n * It creates a PostService Client instance and returns it\n */\nexport const usePostService = () => {\n const store = useMemo(() => getPostService(), []);\n return store;\n};\n\nexport type {\n CommunitiesResult,\n PostsResult,\n SubCategoriesResult,\n TagsResult,\n PaginatedResult,\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { useMemo } from \"react\";\n\nimport axios, { AxiosRequestConfig } from \"axios\";\n\nimport { APIServiceClient } from \"./api-service\";\n\nimport type {\n ContactFormRequestBody,\n ContactFormType,\n CustomerShortProfile,\n ForgotPasswordRequestBody,\n LoginRequestBody,\n RegisterRequestBody,\n ResetPasswordRequestBody,\n SocialAuthRequestBody,\n SocialAuthType,\n Team,\n // UserGroup,\n // UserGroupWithPermissions,\n UserSettings,\n} from \"./types/user-service\";\nimport type { User } from \"next-auth\";\nimport type { JWT } from \"next-auth/jwt\";\nimport type { UserAccountProps, UserModelInterface } from \"utils/types/account\";\n\nexport const cancelTokenSource = axios.CancelToken.source();\n\nlet userServiceClient: UserServiceClient | undefined;\n\n/**\n * The UserServiceClient class creates an Axios instance for making HTTP requests to the\n * User microservice API, with methods for authentication, profile management, and miscellaneous tasks.\n *\n * TODO: Add types for all data models used in this service.\n * TODO: Replace all uses of \"any\" type.\n */\nclass UserServiceClient extends APIServiceClient {\n constructor(accessToken?: string, disableKeysToCamel?: boolean) {\n super({\n accessToken,\n baseURL: process.env.TPL_USERS_SERVICE,\n disabledKeysToCamel: disableKeysToCamel,\n config: { cancelToken: cancelTokenSource.token },\n });\n }\n\n auth() {\n return {\n login: async (\n data: LoginRequestBody,\n detectedIP: string\n ): Promise =>\n await this.instance.post(\"auth/login/\", data, {\n headers: {\n ...(detectedIP &&\n detectedIP !== \"::1\" && { \"client-ip\": detectedIP }),\n },\n }),\n register: async (\n data: RegisterRequestBody,\n detectedIP: string\n ): Promise =>\n await this.instance.post(\"auth/register/\", data, {\n headers: {\n ...(detectedIP &&\n detectedIP !== \"::1\" && { \"client-ip\": detectedIP }),\n },\n }),\n sendSocialAuthToken: async (\n data: SocialAuthRequestBody,\n social: SocialAuthType,\n detectedIP: string\n ): Promise =>\n await this.instance.post(`social_auth/${social}/`, data, {\n headers: {\n ...(detectedIP &&\n detectedIP !== \"::1\" && { \"client-ip\": detectedIP }),\n },\n }),\n forgotPassword: async (data: ForgotPasswordRequestBody) =>\n await this.instance.post(\"auth/password_reset/\", data),\n resetPassword: async (data: ResetPasswordRequestBody) =>\n await this.instance.post(\"auth/password_reset/confirm/\", data),\n refreshAccessToken: async (\n refreshToken: string\n ): Promise<{ access: string }> =>\n await this.instance.post(\"auth/token/refresh/\", {\n refresh: refreshToken,\n }),\n markRegisterationComplete: async () =>\n await this.instance.post(\"auth/registration-complete/\", null, {\n withCredentials: true,\n }),\n logout: async (refreshToken: string, accessToken: string): Promise =>\n await this.instance.post(\n \"auth/logout/\",\n { refresh: refreshToken },\n {\n /**\n * Passing authoization token manually as NextAuth session\n * has ended, so this.getToken() does not return token\n */\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n }\n ),\n communityEvent: async () =>\n await this.instance.post(\"auth/customer-community-event/ \", null, {\n withCredentials: true,\n }),\n sendCustomJoinInfo: async (data) =>\n await this.instance.put(\"auth/custom-join-registration/ \", data, {\n withCredentials: true,\n }),\n };\n }\n\n profile(accessToken?: string) {\n return {\n getUser: async (\n config?: AxiosRequestConfig\n ): Promise =>\n this.getUserModel(\n await this.instance.get(\"auth/customer-profile/\", {\n ...(accessToken\n ? {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n }\n : {\n withCredentials: true,\n }),\n ...config,\n })\n ),\n updateUser: async (data: any): Promise =>\n await this.instance.put(\"auth/customer-profile/\", data, {\n headers: { \"Content-Type\": \"multipart/form-data\" },\n withCredentials: true,\n }),\n generateSmsToken: async (data: any) =>\n await this.instance.post(\"auth/password_reset/sms-token/\", data, {\n withCredentials: true,\n }),\n generateEmailToken: async ({\n email,\n isStudent = false,\n }: {\n email: string;\n isStudent?: boolean;\n }) =>\n await this.instance.post(\n \"auth/password_reset/email-token/\",\n {\n email,\n is_student: isStudent,\n },\n {\n withCredentials: true,\n }\n ),\n verifyEmail: async (data: any) =>\n await this.instance.post(\"auth/password_reset/email-confirm/\", data, {\n withCredentials: true,\n }),\n verifySms: async (data: any) =>\n await this.instance.post(\"auth/password_reset/sms-confirm/\", data, {\n withCredentials: true,\n }),\n changePassword: async (data: any) =>\n await this.instance.patch(\"auth/change-password/\", data, {\n withCredentials: true,\n }),\n sendReferralCode: async (data: any) =>\n await this.instance.put(\"auth/customer-referral/\", data, {\n withCredentials: true,\n }),\n setUserTeam: async (data: any) =>\n await this.instance.put(\"auth/team/\", data, {\n withCredentials: true,\n }),\n removeUserAvatar: async (): Promise =>\n await this.instance.delete(\"auth/customer-profile/\", {\n withCredentials: true,\n }),\n verifyUserName: async (\n username: string\n ): Promise<{ available: boolean }> =>\n await this.instance.get(`auth/verify-username/${username}/`, {\n withCredentials: true,\n }),\n getProfilesByIds: async (\n ids: string[]\n ): Promise => {\n const params = new URLSearchParams();\n ids.forEach((id: string) => params.append(\"id\", id));\n\n return await this.instance.get(`/auth/customer-profiles/`, {\n params: params,\n });\n },\n searchUsersProfiles: async (\n searchText: string,\n excludeSelf: boolean\n ): Promise => {\n return await this.instance.get(`/auth/customer-profiles/`, {\n withCredentials: true,\n params: {\n search: searchText,\n exclude_self: excludeSelf,\n },\n });\n },\n followUser: async (userId: string): Promise<[]> => {\n return await this.instance.post(\n `/auth/customer-follower/`,\n {\n following: userId,\n },\n {\n withCredentials: true,\n }\n );\n },\n unfollowUser: async (customerId: string): Promise<[]> => {\n return await this.instance.delete(\n `/auth/customer-follower/${customerId}`,\n {\n withCredentials: true,\n }\n );\n },\n getFollowers: async (): Promise> => {\n return await this.instance.get(`/auth/customer-follower/`, {\n withCredentials: true,\n });\n },\n };\n }\n\n settings(accessToken?: string) {\n return {\n get: async (config?: AxiosRequestConfig): Promise =>\n await this.instance.get(\"auth/customer-settings/\", {\n ...(accessToken\n ? {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n },\n }\n : {\n withCredentials: true,\n }),\n ...config,\n }),\n update: async (data: any): Promise =>\n await this.instance.put(\"auth/customer-settings/\", data, {\n withCredentials: true,\n }),\n };\n }\n\n // permissions(accessToken?: string) {\n // return {\n // getUserPermissions: async (\n // config?: AxiosRequestConfig\n // ): Promise =>\n // this.getUserGroupWithPermissionsModel(\n // await this.instance.get(\"auth/user-group/\", {\n // ...(accessToken\n // ? {\n // headers: {\n // Authorization: `Bearer ${accessToken}`,\n // },\n // }\n // : {\n // withCredentials: true,\n // }),\n // ...config,\n // })\n // ),\n // };\n // }\n\n postInteraction() {\n return {\n get: async (endpoint: string): Promise =>\n this.instance.get(endpoint, { withCredentials: true }),\n setPostInteraction: async (data: any) =>\n await this.instance.post(\"/strapi/post-interaction\", data, {\n withCredentials: true,\n }),\n };\n }\n\n misc() {\n return {\n fetchTeamList: async (): Promise =>\n await this.instance.get(\"auth/teams/\"),\n submitContactForm: async (\n data: ContactFormRequestBody,\n form: ContactFormType\n ) =>\n await this.instance.post(\n `${form === \"contactUs\" ? \"contact_us/\" : \"work_with_us/\"}`,\n { ...data, company: data.company ?? null }\n ),\n verifyCustomJoinCode: async (\n data\n ): Promise<{\n isCustomer: boolean;\n isStudent: boolean;\n productId: boolean;\n subscriptionStatus: boolean;\n isValidCoupon: boolean;\n }> => await this.instance.post(`auth/custom-join-verification`, data),\n fetchWriterUserName: async (\n email: string\n ): Promise<{ username: string }> =>\n await this.instance.get(`auth/other-profile-email/${email}/`, {\n withCredentials: true,\n }),\n };\n }\n\n getUserModel(userData: UserAccountProps): UserModelInterface {\n return {\n ...userData,\n\n userType: {\n isStudent: userData?.type?.type === \"student\",\n isCustomer: userData?.type?.type === \"customer\",\n },\n };\n }\n\n // getUserGroupWithPermissionsModel(\n // userGroupsData: UserGroup[]\n // ): UserGroupWithPermissions {\n // return {\n // ...userGroupsData[0],\n\n // permissions: userGroupsData.reduce(\n // (permissionsAccumulator, userGroupData) =>\n // userGroupData.subFeatures.reduce(\n // (accumulator, subFeature) => ({\n // ...accumulator,\n // [subFeature.permissionSlug]: true,\n // }),\n // permissionsAccumulator\n // ),\n // {}\n // ),\n // };\n // }\n}\n\nexport const getUserService = (\n accessToken?: string,\n disabledKeysToCamel?: boolean\n) => {\n if (accessToken || disabledKeysToCamel) {\n return new UserServiceClient(accessToken, disabledKeysToCamel);\n }\n\n const _userServiceClient = userServiceClient ?? new UserServiceClient();\n\n if (!userServiceClient) userServiceClient = _userServiceClient;\n\n return _userServiceClient;\n};\n\n/**\n * It creates a UserService Client instance and returns it\n */\nexport const useUserService = () => {\n const store = useMemo(() => getUserService(), []);\n return store;\n};\n","import {\n createContext,\n PropsWithChildren,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\n\nimport reduce from \"lodash/reduce\";\nimport { useSession } from \"next-auth/react\";\nimport useSWRImmutable from \"swr/immutable\";\n\nimport { getPostService } from \"api/post-service\";\nimport { getUserService } from \"api/user-service\";\nimport { identifyUser } from \"lib/segment\";\nimport { useStripeSubscription } from \"utils/hooks/stripe/useStripeSubscription\";\n\nimport { useTeamsContext } from \"./TeamsContext\";\nimport {\n UserPermission,\n type UserModelInterface,\n type UserSettings,\n} from \"../types/account\";\n\nimport type { HighestModerationPosition } from \"api/types/post-service\";\n// import type {\n// UserGroup,\n// UserGroupWithPermissions,\n// } from \"api/types/user-service\";\n\ninterface UserContextProps {\n userDetails: UserModelInterface;\n userStatus: \"authenticated\" | \"loading\" | \"unauthenticated\";\n followers: { [key: string]: boolean };\n userSettings: UserSettings;\n storeUserSettings: (data: Partial) => void;\n storeUserDetails: (data: Partial) => void;\n userPermissions: UserPermission[];\n storeUserPermissions: (data: UserPermission[]) => void;\n // userGroupWithPermissions: UserGroupWithPermissions;\n // storeUserGroupWithPermissions: (\n // data: Partial\n // ) => void;\n updateUserDetails: () => Promise;\n // updateUserGroupWithPermissions: () => Promise;\n updateUserPermissions: () => Promise<{ permissions: UserPermission[] }>;\n updateHighestModeratorPosition: () => Promise;\n updateFollowers: () => Promise>;\n highestModeratorPosition: { position: string; loading: boolean };\n userHasPermission: (permission: UserPermission) => boolean;\n updateUserSettings: () => Promise;\n}\n\n// Creating the user context\nexport const UserContext = createContext(\n null as UserContextProps\n);\n\nexport const UserContextProvider = ({ children }: PropsWithChildren) => {\n const { status, data: session } = useSession();\n const { getTeamByKey } = useTeamsContext();\n\n const userServiceFetcher = useCallback(\n ({\n url,\n disableKeysToCamel,\n }: {\n url: string;\n disableKeysToCamel?: boolean;\n }): Promise =>\n getUserService(null, disableKeysToCamel).getWithToken(\n url,\n session?.accessToken\n ),\n [session?.accessToken]\n );\n\n const communityServiceFetcher = useCallback(\n ({ url }: { url: string }): Promise =>\n getPostService().getWithToken(url, session?.accessToken),\n [session?.accessToken]\n );\n\n const {\n data: details,\n isLoading: loadingDetails,\n mutate: refetchDetails,\n } = useSWRImmutable(\n session?.user?.id\n ? { url: \"/auth/customer-profile/\", userId: session?.user?.id }\n : null,\n (key) =>\n userServiceFetcher(key).then(\n getUserService().getUserModel\n )\n );\n\n const {\n data: permissionsData,\n isLoading: loadingPermissions,\n mutate: refetchPermissions,\n } = useSWRImmutable(\n // session?.user?.id\n // ? {\n // url: \"/auth/user-group/\",\n // userId: session?.user?.id,\n // userGroup: details?.groups?.[0]?.id,\n // }\n // : null,\n // (key) =>\n // userServiceFetcher(key).then(\n // getUserService().getUserGroupWithPermissionsModel\n // )\n session?.user?.id\n ? {\n url: \"/auth/user-permissions\",\n }\n : null,\n (key) => userServiceFetcher<{ permissions: UserPermission[] }>(key)\n );\n\n const {\n data: moderatorPosition,\n isLoading: moderatorPositionLoading,\n mutate: updateHighestModeratorPosition,\n } = useSWRImmutable(\n session?.user?.id\n ? {\n url: \"/communities/api/v1/highest_moderator_position\",\n userId: session?.user?.id,\n }\n : null,\n (key) => communityServiceFetcher(key)\n );\n\n const { data: followerIds, mutate: updateFollowers } = useSWRImmutable(\n // session?.user?.id\n // ? { url: \"/auth/customer-follower/\", userId: session?.user?.id }\n // : null,\n null,\n (key) => userServiceFetcher>(key)\n );\n\n const { data: settings, mutate: refetchUserSettings } = useSWRImmutable(\n // session?.user?.id\n // ? { url: \"/auth/customer-settings/\", userId: session?.user?.id }\n // : null,\n null,\n (key) =>\n userServiceFetcher({ ...key, disableKeysToCamel: true })\n );\n\n const followers = useMemo(\n () => reduce(followerIds, (acc, id) => ({ ...acc, [id]: true }), {}),\n [followerIds]\n );\n\n const highestModeratorPosition = useMemo(\n () => ({\n position: moderatorPosition?.highestModeratorPosition,\n loading: moderatorPositionLoading,\n }),\n [moderatorPosition?.highestModeratorPosition]\n );\n\n const userId = useMemo(\n () => details?.id || session?.user?.id,\n [details, session?.user]\n );\n\n const teamId = useMemo(\n () =>\n details?.customerTeams?.[0]?.team ||\n (session?.user?.customerTeam\n ? getTeamByKey(session?.user?.customerTeam, \"shortName\")?.id\n : null),\n [details, session?.user]\n );\n\n const [userDetails, setUserDetails] = useState(null);\n // const [userGroupWithPermissions, setUserGroupWithPermissions] =\n // useState(null);\n const [userPermissions, setUserPermissions] =\n useState(null);\n const [userSettings, setUserSettings] = useState(null);\n\n const userStatus = useMemo(\n () =>\n status === \"unauthenticated\"\n ? status\n : loadingDetails ||\n loadingPermissions ||\n !userDetails ||\n // !userGroupWithPermissions\n !userPermissions\n ? \"loading\"\n : \"authenticated\",\n [\n status,\n loadingDetails,\n loadingPermissions,\n userDetails,\n // userGroupWithPermissions,\n userPermissions,\n ]\n );\n\n const storeUserDetails = useCallback(\n (data: Partial) => {\n if (status === \"unauthenticated\" || !data) {\n setUserDetails(null);\n } else {\n setUserDetails(\n (details) => ({ ...details, ...data } as UserModelInterface)\n );\n\n userId && identifyUser(userId, data);\n }\n },\n [status]\n );\n\n // const storeUserGroupWithPermissions = useCallback(\n // (data: Partial) => {\n // if (status === \"unauthenticated\" || !data) {\n // setUserGroupWithPermissions(null);\n // } else {\n // setUserGroupWithPermissions(\n // (details) => ({ ...details, ...data } as UserGroupWithPermissions)\n // );\n\n // userId && identifyUser(userId, { subscription: data.group.name });\n // }\n // },\n // [status]\n // );\n\n const storeUserPermissions = useCallback(\n (data: UserPermission[]) => {\n if (status === \"unauthenticated\" || !data) {\n setUserPermissions(null);\n } else {\n setUserPermissions(data);\n\n userId &&\n identifyUser(userId, {\n subscription: userDetails?.customerSubscriptions[0]?.name ?? \"Free\",\n });\n }\n },\n [status]\n );\n\n const storeUserSettings = useCallback(\n (data: Partial) => {\n if (status === \"unauthenticated\") setUserSettings(null);\n data\n ? setUserSettings(\n (settings) => ({ ...settings, ...data } as UserSettings)\n )\n : setUserSettings(null);\n },\n [status]\n );\n\n // const userHasPermission = useCallback(\n // (permission: UserPermission) =>\n // userGroupWithPermissions?.permissions &&\n // permission in userGroupWithPermissions.permissions &&\n // userGroupWithPermissions.permissions[permission] === true,\n // [userGroupWithPermissions]\n // );\n const userHasPermission = useCallback(\n (permission: UserPermission) =>\n userPermissions?.some((p) => p === permission),\n [userPermissions]\n );\n\n useEffect(() => {\n if (details) storeUserDetails(details);\n }, [details]);\n\n useEffect(() => {\n if (settings) storeUserSettings(settings);\n }, [settings]);\n\n // useEffect(() => {\n // if (permissions) storeUserGroupWithPermissions(permissions);\n // }, [permissions]);\n\n useEffect(() => {\n if (permissionsData) storeUserPermissions(permissionsData.permissions);\n }, [permissionsData]);\n\n useEffect(() => {\n if (status === \"unauthenticated\") {\n storeUserDetails(null);\n // storeUserGroupWithPermissions(null);\n storeUserPermissions(null);\n }\n }, [status]);\n\n // const { subscription } = useStripeSubscription(details?.stripeCustomerId);\n\n // useEffect(() => {\n // if (\n // subscription.isFetched &&\n // subscription.data\n // // && details?.customerSubscriptions?.[0]?.status?.status === \"Free Account\"\n // ) {\n // refetchDetails();\n // }\n // }, [subscription]);\n\n const updateUserDetails = () => refetchDetails();\n // const updateUserGroupWithPermissions = () => refetchPermissions();\n const updateUserPermissions = () => refetchPermissions();\n\n const updateUserSettings = () => refetchUserSettings();\n\n return (\n \n {children}\n \n );\n};\n\n// Make useUserContext Hook to easily use our context throughout the application\nexport const useUserContext = () => {\n const result = useContext(UserContext);\n if (!result) {\n throw new Error(\"Context used outside of its Provider!\");\n }\n\n return result;\n};\n","import type { SerializedEditorState } from \"lexical\";\n\nexport interface UploadImageType {\n createdAt: string;\n id: string;\n objectId: string;\n objectType: string;\n s3File: string;\n updatedAt: string;\n}\n\nexport interface Content {\n body: Body;\n}\n\nexport interface PostConfig {\n isPinned?: boolean;\n isPremium?: boolean;\n isNotificationPaused?: boolean;\n}\n\nexport interface Body {\n editorJson: SerializedEditorState;\n htmlString: string;\n}\n\nexport interface Score {\n contentId: string;\n contentType: string;\n createdAt: string;\n id: string;\n reactScore: number;\n replyScore: number;\n score: number;\n updatedAt: string;\n}\n\nexport interface Post {\n id: string;\n title: string;\n slug: string;\n content: Content;\n config: PostConfig;\n customer: string;\n subCategory: string;\n state: string;\n createdAt: string;\n updatedAt: string;\n lastActivityAt: string;\n tags: Tag[];\n score: Score;\n}\n\nexport interface CustomerPost extends Omit {\n customer?: CustomerShortProfile;\n reactions?: PostReactions;\n}\n\nexport interface ArticlePost {\n articleId: string;\n post: Post;\n community: string;\n}\n\nexport interface CustomerShortProfile {\n avatar: string;\n id: string;\n username: string;\n createdAt?: string;\n status?: \"premium\" | \"deleted\" | \"muted\";\n}\n\nexport interface Tag {\n id: string;\n name: string;\n}\n\nexport interface Community {\n id: string;\n name: string;\n slug: string;\n organization: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface SubCategory {\n id: string;\n name: string;\n slug: string;\n community: string;\n type: SubCategoryType;\n createdAt: string;\n updatedAt: string;\n moderatorOnly: boolean;\n}\n\nexport enum SubCategoryType {\n normal = \"normal\",\n fixedTitle = \"fixed_title\",\n}\n\nexport enum PostTypes {\n draft = \"draft\",\n active = \"active\",\n blocked = \"blocked\",\n}\n\nexport enum ImageUploadTypes {\n post = \"post\",\n comment = \"commment\",\n}\n\nexport enum CommentParent {\n comment = \"comment\",\n post = \"post\",\n}\n\nexport interface ChildrenComments {\n count: number;\n results: Comment[];\n}\nexport interface Comment {\n id: string;\n state: PostTypes;\n content: Body;\n parentType: CommentParent;\n parentId: string;\n rootype: string;\n rootId: string;\n customer: string;\n customerName?: string;\n commentDay?: string;\n isHidden?: boolean;\n profilePicture?: string;\n createdAt: string;\n updatedAt: string;\n isDeleted: boolean;\n score: Score;\n childrenComments: ChildrenComments;\n config: { isNotificationPaused?: boolean };\n}\n\nexport interface CustomerComment\n extends Omit {\n customer?: CustomerShortProfile;\n reactions?: PostReactions;\n childrenComments: CustomerChildrenComments;\n}\n\nexport interface CustomerChildrenComments\n extends Omit {\n results: CustomerComment[];\n}\n\nexport interface Comments {\n count: number;\n next: string;\n previous: string | null;\n results: Comment[];\n}\n\nexport interface PostReactions {\n objectId: string;\n objectType: string;\n reactions: Reaction[];\n}\n\nexport interface Reaction {\n name: string;\n count: number;\n youReacted: string;\n}\n\nexport interface ReactionDetail {\n id: string;\n emoji: string;\n objectType: \"post\" | \"comment\";\n objectId: string;\n customer: string;\n createdAt: string;\n updatedAt: string;\n customerProfile: CustomerShortProfile;\n}\n\nexport interface ReactionDetails {\n count: number;\n next: string;\n previous: string | null;\n results: ReactionDetail[];\n}\n\nexport enum PostOrder {\n latest = \"-last_activity_at\",\n popular = \"score\",\n new = \"-created_at\",\n relevant = \"relevant\",\n}\n\nexport enum PostOrderOptions {\n \"score\" = \"Popular\",\n \"-created_at\" = \"New for you\",\n \"-last_activity_at\" = \"Latest\",\n \"relevant\" = \"Most Relevant\",\n}\n\nexport interface PollOption {\n createdAt: string;\n id: string;\n option: Record;\n optionText: string;\n poll: string;\n updatedAt: string;\n voteCount: number;\n youVoted: null | boolean;\n}\n\ninterface PollContent {\n body: Body;\n question: string;\n}\nexport interface Poll {\n id: string;\n content: PollContent;\n post: string;\n endPollDatetime: null | string;\n isPollClosed: boolean;\n options: PollOption[];\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface Polls {\n count: number;\n next: string;\n previous: string | null;\n results: Poll[];\n}\n\nexport interface CustomerBannedResult {\n community: string;\n customer: string;\n isBlanketBanned: boolean;\n endTime: string | null;\n reason: string;\n id: string;\n}\n\nexport interface CustomerModeratorResult {\n isModeratorOfCommunity: boolean;\n}\n\nexport interface UnbannedCommunitiesResult {\n unbannedCommunities: string[];\n isBlanketBanned: boolean;\n}\n\nexport interface ModeratorPermissions {\n canAccessModerationPanel: boolean;\n canAccessModerationPanelOfCommunity: boolean;\n canBanOrUnbanInCommunity: boolean;\n canBlanketBanOrUnban: boolean;\n canBlockOrUnblockInCommunity: boolean;\n canPostInModeratorOnlySubcategory: boolean;\n canPinOrUnpinInCommunity: boolean;\n canEditOwnPostInCommunity: boolean;\n canMarkOrUnmarkPostAsPremium: boolean;\n}\n\nexport interface ModeratorPermissionsResult {\n [key: string]: ModeratorPermissions;\n}\n\nexport interface CustomerProfile {\n id: string;\n email: string;\n username: string;\n organization: string;\n createdAt: string;\n}\n\nexport interface ModeratorsResult {\n count: number;\n next: string;\n previous: string | null;\n results: Moderator[];\n}\n\nexport interface Customer {\n id: string;\n email: string;\n username: string;\n organization: string;\n createdAt: string;\n}\n\nexport interface Moderator {\n community: string;\n type: string;\n updatedAt: string;\n customer: Customer;\n}\n\nexport interface ModeratorLog {\n id: string;\n type: string;\n community: string;\n affectedCustomer: Pick;\n moderator: Pick;\n appealState: string;\n createdAt: string;\n}\n\nexport interface ModeratorsLogsResult {\n count: number;\n next: string;\n previous: string | null;\n results: ModeratorLog[];\n}\n\ninterface AppealContent {\n id: string;\n defense: string;\n state: string;\n}\n\ninterface Violations {\n bans: number;\n blocks: number;\n total: number;\n}\n\nexport interface ModerationLogDetail {\n id: string;\n type: string;\n reason: string;\n affectedCustomer: Pick;\n community: string;\n affectedObjectType?: string;\n affectedObjectId?: string;\n isBlanketBanned?: boolean;\n endTime: string;\n duration: string;\n moderator: Pick;\n createdAt: string;\n numberOfViolations: Violations;\n appeal: AppealContent;\n}\n\nexport interface BanUserRequest {\n reason: string;\n isBlanketBan: boolean;\n endTime: string;\n communities: string[];\n customer?: CustomerShortProfile;\n}\n\nexport interface ModerationCustomerProfile {\n id: string;\n username: string;\n email: string;\n}\n\nexport interface BanOrBlockModerationLog {\n id: string;\n type: string;\n appealState: string;\n appealId: string;\n affectedCustomer: Pick;\n moderator: Pick;\n createdAt: \"2023-10-17T10:46:45.992247Z\";\n}\n\nexport interface ModerationPost {\n id: string;\n slug: string;\n title: string;\n communityId: string;\n customer: ModerationCustomerProfile;\n moderationDecisionLog: BanOrBlockModerationLog;\n subCategory: Pick;\n state: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface ModerationComment {\n id: string;\n customer: ModerationCustomerProfile;\n state: string;\n rootObjectData: {\n slug: string;\n subCategory: Pick;\n };\n isDeleted: false;\n parentType: string;\n parentId: string;\n rootType: string;\n rootId: string;\n moderationDecisionLog: BanOrBlockModerationLog;\n createdAt: string;\n updatedAt: string;\n communityId: string;\n}\n\nexport interface ActiveBan {\n id: string;\n community: string;\n customer: Pick;\n isBlanketBanned: boolean;\n endTime: string;\n moderationDecisionLog: BanOrBlockModerationLog;\n}\n\nexport enum ModeratorPosition {\n SUPER_MODERATOR = \"super_moderator\",\n COMMUNITY_ADMIN = \"community_admin\",\n COMMUNITY_MODERATOR = \"community_moderator\",\n}\n\nexport type AppealAffectedPost = Omit<\n ModerationPost,\n \"moderationDecisionLog\" | \"customer\" | \"communityId\"\n>;\n\nexport type AppealAffectedComment = Omit<\n ModerationComment,\n \"moderationDecisionLog\" | \"customer\" | \"communityId\"\n>;\n\nexport interface AppealLog {\n id: string;\n type: string;\n community: string;\n isBlanketBanned?: boolean;\n endTime: string;\n duration: string;\n affectedCustomer: Pick;\n affectedObjectType?: string;\n affectedObjectId?: string;\n affectedContent: AppealAffectedPost | AppealAffectedComment;\n moderator: Pick;\n createdAt: string;\n}\n\nexport interface Appeal {\n id: string;\n moderationDecisionLog: AppealLog;\n customer: string;\n state: string;\n defense: string;\n addressalReason: string;\n addressedAt: string;\n createdAt: string;\n}\n\nexport interface CustomerMuteInfo {\n relatedCustomer: string;\n relationType: string;\n}\n\nexport interface CustomerMuteResults {\n count: number;\n next: string | null;\n previous: string | null;\n results: CustomerMuteInfo[];\n}\n\nexport enum FallbackUsername {\n premium = \"PremiumUser\",\n deleted = \"DeletedUser\",\n}\n\nexport type PostListDensity = \"compact\" | \"expanded\";\n"],"names":["postServiceClient","cancelTokenSource","axios","CancelToken","source","PostServiceClient","APIServiceClient","posts","createPost","data","instance","post","withCredentials","createArticlePost","updatePost","postId","put","concat","uploadImageS3","headers","getTagsList","get","getPostById","id","params","getPostBySlug","slug","getPosts","page","ordering","state","PostTypes","active","queryString","URLSearchParams","toString","getArticlePost","articleId","blockPost","unblockPost","delete","pinPost","unpinPost","markPremiumPost","unmarkPremiumPost","pauseNotifications","unpauseNotifications","comments","createComment","updateComment","commentId","blockComment","unblockComment","getComments","parent_id","levels","COMMENT_LEVELS","leaf_comments","LEAF_COMMENTS","nested_ordering","getComment","pageNumber","fields","moderation","accessToken","getAppealDetails","moderationDecisionLog","Authorization","createAppeal","getModeratorsList","communityId","updateModerator","patch","getModeratorsLogs","path","getBanBlockLogDetail","updateAppeal","appealId","getModeratorPermissions","community","moderatable_only","searchUsers","searchText","noModerator","search","exclude_self","not_moderator_in_communities","not_any_moderator","polls","createPoll","getPollsByPostId","editPoll","pollId","createPollVote","createPollOption","editPollOption","optionId","deletePollOption","reaction","getReactions","ids","type","config","_this","object_ids","object_type","createReaction","changeReaction","reactionId","deleteReaction","getCommunities","getSubCategories","getSubCategoryById","subCategoryId","getModeratorsHighestPosition","getIsCommunityModerator","customer","banCustomerByModerator","userId","banDetails","isBlanketBan","endTime","reason","communities","banList","push","is_blanket_banned","end_time","forEach","unbanCustomerByModerator","getCustomerBanStatus","customerId","getUnbannedCommunities","moderateOnly","muteCustomer","related_customer","relation_type","unmuteCustomer","getMuteStatus","customerIds","mutedIdString","join","customerMuteResults","related_customers","Promise","resolve","results","constructor","baseURL","process","cancelToken","token","createPostServiceClient","getPostService","_postServiceClient","userServiceClient","UserServiceClient","auth","login","detectedIP","register","sendSocialAuthToken","social","forgotPassword","resetPassword","refreshAccessToken","refreshToken","refresh","markRegisterationComplete","logout","communityEvent","sendCustomJoinInfo","profile","getUser","getUserModel","updateUser","generateSmsToken","generateEmailToken","param","email","isStudent","is_student","verifyEmail","verifySms","changePassword","sendReferralCode","setUserTeam","removeUserAvatar","verifyUserName","username","getProfilesByIds","append","searchUsersProfiles","excludeSelf","followUser","following","unfollowUser","getFollowers","settings","update","postInteraction","endpoint","setPostInteraction","misc","fetchTeamList","submitContactForm","form","company","verifyCustomJoinCode","fetchWriterUserName","userData","userType","isCustomer","disableKeysToCamel","disabledKeysToCamel","getUserService","_userServiceClient","useUserService","store","useMemo","UserContext","createContext","UserContextProvider","session","children","status","useSession","getTeamByKey","useTeamsContext","userServiceFetcher","useCallback","url","getWithToken","communityServiceFetcher","details","isLoading","loadingDetails","mutate","refetchDetails","useSWRImmutable","user","key","then","permissionsData","loadingPermissions","refetchPermissions","moderatorPosition","moderatorPositionLoading","updateHighestModeratorPosition","followerIds","updateFollowers","refetchUserSettings","followers","reduce","acc","highestModeratorPosition","position","loading","customerTeams","team","customerTeam","userDetails","setUserDetails","useState","userPermissions","setUserPermissions","userSettings","setUserSettings","userStatus","storeUserDetails","identifyUser","storeUserPermissions","subscription","customerSubscriptions","name","storeUserSettings","userHasPermission","some","p","permission","useEffect","permissions","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","Provider","value","updateUserDetails","updateUserPermissions","updateUserSettings","useUserContext","result","useContext","SubCategoryType","ImageUploadTypes","CommentParent","PostOrder","PostOrderOptions","ModeratorPosition","FallbackUsername"],"sourceRoot":""}