Skip to content
Snippets Groups Projects
Select Git revision
  • 99dbe2104624ccf52496d4f60485d8caf8c55ffb
  • test default protected
  • master protected
  • feat/custom-css
  • feat/redesign-improvements-10
  • feat/redesign-improvements-8
  • feat/redesign-fixes-3
  • feat/pirstan-changes
  • feat/separate-import-thread
  • feat/dary-improvements
  • features/add-pdf-page
  • features/add-typed-table
  • features/fix-broken-calendar-categories
  • features/add-embed-to-articles
  • features/create-mastodon-feed-block
  • features/add-custom-numbering-for-candidates
  • features/add-timeline
  • features/create-wordcloud-from-article-page
  • features/create-collapsible-extra-legal-info
  • features/extend-hero-banner
  • features/add-link-to-images
21 results

blocks.py

Blame
  • PostsContainer.jsx 2.09 KiB
    import React from "react";
    import pick from "lodash/pick";
    
    import { dislike, like, removeDislike, removeLike } from "actions/posts";
    import PostList from "components/posts/PostList";
    import { PostStore } from "stores";
    
    const PostsContainer = ({ className }) => {
      const { window, items } = PostStore.useState((state) =>
        pick(state, ["window", "items"])
      );
      const showingArchivedOnly = PostStore.useState(
        (state) => state.filters.flags === "archived"
      );
    
      // const onLike = (post) => like.run();
      // const onDislike = (post) => console.log("dislike", post);
    
      /**
       *
       * @param {CF2021.Post} post
       */
      const onLike = (post) => {
        if (post.ranking.myVote === "none") {
          return like.run(post);
        }
        if (post.ranking.myVote === "like") {
          return removeLike.run(post);
        }
      };
    
      /**
       *
       * @param {CF2021.Post} post
       */
      const onDislike = (post) => {
        if (post.ranking.myVote === "none") {
          return dislike.run(post);
        }
        if (post.ranking.myVote === "dislike") {
          return removeDislike.run(post);
        }
      };
    
      const sliceStart = (window.page - 1) * window.perPage;
      const sliceEnd = window.page * window.perPage;
    
      const onHide = (post) => {
        console.log("hide", post);
      };
      const onBanUser = (post) => {
        console.log("banUser", post);
      };
      const onAnnounceProcedureProposal = (post) => {
        console.log("announce", post);
      };
      const onAcceptProcedureProposal = (post) => {
        console.log("accept", post);
      };
      const onRejectProcedureProposal = (post) => {
        console.log("reject", post);
      };
    
      return (
        <PostList
          items={window.items
            .slice(sliceStart, sliceEnd)
            .map((postId) => items[postId])}
          onLike={onLike}
          onDislike={onDislike}
          className={className}
          dimArchived={!showingArchivedOnly}
          displayActions={true}
          onHide={onHide}
          onBanUser={onBanUser}
          onAnnounceProcedureProposal={onAnnounceProcedureProposal}
          onAcceptProcedureProposal={onAcceptProcedureProposal}
          onRejectProcedureProposal={onRejectProcedureProposal}
        />
      );
    };
    
    export default PostsContainer;