X-Git-Url: http://these/git/?a=blobdiff_plain;f=src%2Fshared%2Fcomponents%2Fpost%2Fpost-listings.tsx;h=fc77f505a11ff76119bd52658dc4a116bb04603b;hb=afafb777b4be09d70cd8f56f8d236d98ac63ba6e;hp=3e82c89583a2baebae03ddf639b0d53516d46c12;hpb=8181e4a1ce98f216839a6044580c978807ac71e9;p=lemmy-ui.git diff --git a/src/shared/components/post/post-listings.tsx b/src/shared/components/post/post-listings.tsx index 3e82c89..fc77f50 100644 --- a/src/shared/components/post/post-listings.tsx +++ b/src/shared/components/post/post-listings.tsx @@ -1,8 +1,28 @@ import { Component } from "inferno"; import { T } from "inferno-i18next-dess"; import { Link } from "inferno-router"; -import { Language, PostView } from "lemmy-js-client"; -import { i18n } from "../../i18next"; +import { + AddAdmin, + AddModToCommunity, + BanFromCommunity, + BanPerson, + BlockPerson, + CreatePostLike, + CreatePostReport, + DeletePost, + EditPost, + FeaturePost, + Language, + LockPost, + MarkPostAsRead, + PostView, + PurgePerson, + PurgePost, + RemovePost, + SavePost, + TransferCommunity, +} from "lemmy-js-client"; +import { I18NextService } from "../../services"; import { PostListing } from "./post-listing"; interface PostListingsProps { @@ -13,6 +33,24 @@ interface PostListingsProps { removeDuplicates?: boolean; enableDownvotes?: boolean; enableNsfw?: boolean; + viewOnly?: boolean; + onPostEdit(form: EditPost): void; + onPostVote(form: CreatePostLike): void; + onPostReport(form: CreatePostReport): void; + onBlockPerson(form: BlockPerson): void; + onLockPost(form: LockPost): void; + onDeletePost(form: DeletePost): void; + onRemovePost(form: RemovePost): void; + onSavePost(form: SavePost): void; + onFeaturePost(form: FeaturePost): void; + onPurgePerson(form: PurgePerson): void; + onPurgePost(form: PurgePost): void; + onBanPersonFromCommunity(form: BanFromCommunity): void; + onBanPerson(form: BanPerson): void; + onAddModToCommunity(form: AddModToCommunity): void; + onAddAdmin(form: AddAdmin): void; + onTransferCommunity(form: TransferCommunity): void; + onMarkPostAsRead(form: MarkPostAsRead): void; } export class PostListings extends Component { @@ -30,25 +68,43 @@ export class PostListings extends Component { render() { return ( -
+
{this.posts.length > 0 ? ( - this.posts.map(post_view => ( + this.posts.map((post_view, idx) => ( <> -
+ {idx + 1 !== this.posts.length &&
} )) ) : ( <> -
{i18n.t("no_posts")}
+
{I18NextService.i18n.t("no_posts")}
{this.props.showCommunity && ( ## @@ -62,7 +118,7 @@ export class PostListings extends Component { removeDuplicates(): PostView[] { // Must use a spread to clone the props, because splice will fail below otherwise. - const posts = [...this.props.posts]; + const posts = [...this.props.posts].filter(empty => empty); // A map from post url to list of posts (dupes) const urlMap = new Map(); @@ -88,7 +144,7 @@ export class PostListings extends Component { // Sort by oldest // Remove the ones that have no length for (const e of urlMap.entries()) { - if (e[1].length == 1) { + if (e[1].length === 1) { urlMap.delete(e[0]); } else { e[1].sort((a, b) => a.post.published.localeCompare(b.post.published)); @@ -102,7 +158,7 @@ export class PostListings extends Component { const found = urlMap.get(url); if (found) { // If its the oldest, add - if (pv.post.id == found[0].post.id) { + if (pv.post.id === found[0].post.id) { this.duplicatesMap.set(pv.post.id, found.slice(1)); } // Otherwise, delete it