X-Git-Url: http://these/git/?a=blobdiff_plain;f=src%2Fshared%2Fcomponents%2Fcommunity%2Fcommunity.tsx;h=b0787ecd9aa40278ba695a0b9c1ba12a129a5fd7;hb=afafb777b4be09d70cd8f56f8d236d98ac63ba6e;hp=c00380ab2db9ff1b1258cadde8bd0f25a6d2efb8;hpb=a48c20a772c40e519f64863e3d7edb2985f2a31c;p=lemmy-ui.git diff --git a/src/shared/components/community/community.tsx b/src/shared/components/community/community.tsx index c00380a..b0787ec 100644 --- a/src/shared/components/community/community.tsx +++ b/src/shared/components/community/community.tsx @@ -62,6 +62,7 @@ import { LockPost, MarkCommentReplyAsRead, MarkPersonMentionAsRead, + MarkPostAsRead, PostResponse, PurgeComment, PurgeCommunity, @@ -195,6 +196,7 @@ export class Community extends Component< this.handleSavePost = this.handleSavePost.bind(this); this.handlePurgePost = this.handlePurgePost.bind(this); this.handleFeaturePost = this.handleFeaturePost.bind(this); + this.handleMarkPostAsRead = this.handleMarkPostAsRead.bind(this); this.mainContentRef = createRef(); // Only fetch the data if coming from another route if (FirstLoadService.isFirstLoad) { @@ -290,7 +292,7 @@ export class Community extends Component< get documentTitle(): string { const cRes = this.state.communityRes; - return cRes.state == "success" + return cRes.state === "success" ? `${cRes.data.community_view.community.title} - ${this.isoData.site_res.site_view.site.name}` : ""; } @@ -312,6 +314,7 @@ export class Community extends Component< @@ -430,6 +433,7 @@ export class Community extends Component< onAddAdmin={this.handleAddAdmin} onTransferCommunity={this.handleTransferCommunity} onFeaturePost={this.handleFeaturePost} + onMarkPostAsRead={this.handleMarkPostAsRead} /> ); } @@ -447,7 +451,7 @@ export class Community extends Component< nodes={commentsToFlatNodes(this.state.commentsRes.data.comments)} viewType={CommentViewType.Flat} finished={this.state.finished} - noIndent + isTopLevel showContext enableDownvotes={enableDownvotes(site_res)} moderators={communityRes.moderators} @@ -569,7 +573,7 @@ export class Community extends Component< }; this.props.history.push( - `/c/${this.props.match.params.name}${getQueryString(queryParams)}` + `/c/${this.props.match.params.name}${getQueryString(queryParams)}`, ); await this.fetchData(); @@ -625,11 +629,11 @@ export class Community extends Component< this.updateCommunity(followCommunityRes); // Update myUserInfo - if (followCommunityRes.state == "success") { + if (followCommunityRes.state === "success") { const communityId = followCommunityRes.data.community_view.community.id; const mui = UserService.Instance.myUserInfo; if (mui) { - mui.follows = mui.follows.filter(i => i.community.id != communityId); + mui.follows = mui.follows.filter(i => i.community.id !== communityId); } } } @@ -656,10 +660,10 @@ export class Community extends Component< async handleBlockCommunity(form: BlockCommunity) { const blockCommunityRes = await HttpService.client.blockCommunity(form); - if (blockCommunityRes.state == "success") { + if (blockCommunityRes.state === "success") { updateCommunityBlock(blockCommunityRes.data); this.setState(s => { - if (s.communityRes.state == "success") { + if (s.communityRes.state === "success") { s.communityRes.data.community_view.blocked = blockCommunityRes.data.blocked; } @@ -669,7 +673,7 @@ export class Community extends Component< async handleBlockPerson(form: BlockPerson) { const blockPersonRes = await HttpService.client.blockPerson(form); - if (blockPersonRes.state == "success") { + if (blockPersonRes.state === "success") { updatePersonBlock(blockPersonRes.data); } } @@ -752,14 +756,14 @@ export class Community extends Component< async handleCommentReport(form: CreateCommentReport) { const reportRes = await HttpService.client.createCommentReport(form); - if (reportRes.state == "success") { + if (reportRes.state === "success") { toast(I18NextService.i18n.t("report_created")); } } async handlePostReport(form: CreatePostReport) { const reportRes = await HttpService.client.createPostReport(form); - if (reportRes.state == "success") { + if (reportRes.state === "success") { toast(I18NextService.i18n.t("report_created")); } } @@ -777,14 +781,14 @@ export class Community extends Component< async handleAddAdmin(form: AddAdmin) { const addAdminRes = await HttpService.client.addAdmin(form); - if (addAdminRes.state == "success") { + if (addAdminRes.state === "success") { this.setState(s => ((s.siteRes.admins = addAdminRes.data.admins), s)); } } async handleTransferCommunity(form: TransferCommunity) { const transferCommunityRes = await HttpService.client.transferCommunity( - form + form, ); toast(I18NextService.i18n.t("transfer_community")); this.updateCommunityFull(transferCommunityRes); @@ -800,6 +804,11 @@ export class Community extends Component< await HttpService.client.markPersonMentionAsRead(form); } + async handleMarkPostAsRead(form: MarkPostAsRead) { + const res = await HttpService.client.markPostAsRead(form); + this.findAndUpdatePost(res); + } + async handleBanFromCommunity(form: BanFromCommunity) { const banRes = await HttpService.client.banFromCommunity(form); this.updateBanFromCommunity(banRes); @@ -812,20 +821,20 @@ export class Community extends Component< updateBanFromCommunity(banRes: RequestState) { // Maybe not necessary - if (banRes.state == "success") { + if (banRes.state === "success") { this.setState(s => { - if (s.postsRes.state == "success") { + if (s.postsRes.state === "success") { s.postsRes.data.posts - .filter(c => c.creator.id == banRes.data.person_view.person.id) + .filter(c => c.creator.id === banRes.data.person_view.person.id) .forEach( - c => (c.creator_banned_from_community = banRes.data.banned) + c => (c.creator_banned_from_community = banRes.data.banned), ); } - if (s.commentsRes.state == "success") { + if (s.commentsRes.state === "success") { s.commentsRes.data.comments - .filter(c => c.creator.id == banRes.data.person_view.person.id) + .filter(c => c.creator.id === banRes.data.person_view.person.id) .forEach( - c => (c.creator_banned_from_community = banRes.data.banned) + c => (c.creator_banned_from_community = banRes.data.banned), ); } return s; @@ -835,16 +844,16 @@ export class Community extends Component< updateBan(banRes: RequestState) { // Maybe not necessary - if (banRes.state == "success") { + if (banRes.state === "success") { this.setState(s => { - if (s.postsRes.state == "success") { + if (s.postsRes.state === "success") { s.postsRes.data.posts - .filter(c => c.creator.id == banRes.data.person_view.person.id) + .filter(c => c.creator.id === banRes.data.person_view.person.id) .forEach(c => (c.creator.banned = banRes.data.banned)); } - if (s.commentsRes.state == "success") { + if (s.commentsRes.state === "success") { s.commentsRes.data.comments - .filter(c => c.creator.id == banRes.data.person_view.person.id) + .filter(c => c.creator.id === banRes.data.person_view.person.id) .forEach(c => (c.creator.banned = banRes.data.banned)); } return s; @@ -854,7 +863,7 @@ export class Community extends Component< updateCommunity(res: RequestState) { this.setState(s => { - if (s.communityRes.state == "success" && res.state == "success") { + if (s.communityRes.state === "success" && res.state === "success") { s.communityRes.data.community_view = res.data.community_view; s.communityRes.data.discussion_languages = res.data.discussion_languages; @@ -865,7 +874,7 @@ export class Community extends Component< updateCommunityFull(res: RequestState) { this.setState(s => { - if (s.communityRes.state == "success" && res.state == "success") { + if (s.communityRes.state === "success" && res.state === "success") { s.communityRes.data.community_view = res.data.community_view; s.communityRes.data.moderators = res.data.moderators; } @@ -874,7 +883,7 @@ export class Community extends Component< } purgeItem(purgeRes: RequestState) { - if (purgeRes.state == "success") { + if (purgeRes.state === "success") { toast(I18NextService.i18n.t("purge_success")); this.context.router.history.push(`/`); } @@ -882,10 +891,10 @@ export class Community extends Component< findAndUpdateComment(res: RequestState) { this.setState(s => { - if (s.commentsRes.state == "success" && res.state == "success") { + if (s.commentsRes.state === "success" && res.state === "success") { s.commentsRes.data.comments = editComment( res.data.comment_view, - s.commentsRes.data.comments + s.commentsRes.data.comments, ); s.finished.set(res.data.comment_view.comment.id, true); } @@ -895,13 +904,13 @@ export class Community extends Component< createAndUpdateComments(res: RequestState) { this.setState(s => { - if (s.commentsRes.state == "success" && res.state == "success") { + if (s.commentsRes.state === "success" && res.state === "success") { s.commentsRes.data.comments.unshift(res.data.comment_view); // Set finished for the parent s.finished.set( getCommentParentId(res.data.comment_view.comment) ?? 0, - true + true, ); } return s; @@ -910,10 +919,10 @@ export class Community extends Component< findAndUpdateCommentReply(res: RequestState) { this.setState(s => { - if (s.commentsRes.state == "success" && res.state == "success") { + if (s.commentsRes.state === "success" && res.state === "success") { s.commentsRes.data.comments = editWith( res.data.comment_reply_view, - s.commentsRes.data.comments + s.commentsRes.data.comments, ); } return s; @@ -922,10 +931,10 @@ export class Community extends Component< findAndUpdatePost(res: RequestState) { this.setState(s => { - if (s.postsRes.state == "success" && res.state == "success") { + if (s.postsRes.state === "success" && res.state === "success") { s.postsRes.data.posts = editPost( res.data.post_view, - s.postsRes.data.posts + s.postsRes.data.posts, ); } return s; @@ -935,7 +944,7 @@ export class Community extends Component< updateModerators(res: RequestState) { // Update the moderators this.setState(s => { - if (s.communityRes.state == "success" && res.state == "success") { + if (s.communityRes.state === "success" && res.state === "success") { s.communityRes.data.moderators = res.data.moderators; } return s;