X-Git-Url: http://these/git/?a=blobdiff_plain;f=src%2Fshared%2Fcomponents%2Fpost%2Fpost-listings.tsx;h=fc77f505a11ff76119bd52658dc4a116bb04603b;hb=afafb777b4be09d70cd8f56f8d236d98ac63ba6e;hp=ab7692da337204befd891f755ff4e6f95d2736cc;hpb=b64f47cfe9084c04a9ec6b8e62ac448f302e2600;p=lemmy-ui.git diff --git a/src/shared/components/post/post-listings.tsx b/src/shared/components/post/post-listings.tsx index ab7692d..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,14 +118,14 @@ export class PostListings extends Component { removeDuplicates(): PostView[] { // Must use a spread to clone the props, because splice will fail below otherwise. - let posts = [...this.props.posts]; + const posts = [...this.props.posts].filter(empty => empty); // A map from post url to list of posts (dupes) - let urlMap = new Map(); + const urlMap = new Map(); // Loop over the posts, find ones with same urls - for (let pv of posts) { - let url = pv.post.url; + for (const pv of posts) { + const url = pv.post.url; if ( !pv.post.deleted && !pv.post.removed && @@ -87,8 +143,8 @@ export class PostListings extends Component { // Sort by oldest // Remove the ones that have no length - for (let e of urlMap.entries()) { - if (e[1].length == 1) { + for (const e of urlMap.entries()) { + if (e[1].length === 1) { urlMap.delete(e[0]); } else { e[1].sort((a, b) => a.post.published.localeCompare(b.post.published)); @@ -96,13 +152,13 @@ export class PostListings extends Component { } for (let i = 0; i < posts.length; i++) { - let pv = posts[i]; - let url = pv.post.url; + const pv = posts[i]; + const url = pv.post.url; if (url) { - let found = urlMap.get(url); + 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