All files / src/web/components NewsletterRowContainerWithGroups.tsx

100% Statements 23/23
50% Branches 1/2
50% Functions 1/2
100% Lines 23/23

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68    1x                                                                               1x 56x 56x 56x 56x 56x 56x 56x 56x 56x 56x 56x 56x 56x   56x 56x 56x 56x 56x 56x   56x   1x  
import { NewsletterGroup, NewsletterWithRelations, Tag } from "@common/types";
import React from "react";
import NewsletterRowPresentation from "./NewsletterRowPresentation";
 
interface NewsletterRowContainerWithGroupsProps {
  newsletter: NewsletterWithRelations;
  isSelected?: boolean;
  onToggleSelect?: (id: string) => void;
  onTagClick: (tag: Tag, e: React.MouseEvent) => void;
  onRemoveFromQueue?: (e: React.MouseEvent, id: string) => void;
  onNewsletterClick?: (newsletter: NewsletterWithRelations) => void;
  onRowClick?: (
    newsletter: NewsletterWithRelations,
    e: React.MouseEvent,
  ) => void;
  onMouseEnter?: (newsletter: NewsletterWithRelations) => void;
  isInReadingQueue: boolean;
  showCheckbox?: boolean;
  showTags?: boolean;
  visibleTags: Set<string>;
  readingQueue: Array<{ newsletter_id: string }>;
  className?: string;
  onToggleLike: () => Promise<void>;
  onToggleArchive: () => Promise<void>;
  onToggleRead: () => Promise<void>;
  onTrash: (id: string) => void;
  onToggleQueue: () => Promise<void>;
  onToggleTagVisibility: (e: React.MouseEvent) => void;
  onUpdateTags: (tagIds: string[]) => void;
  isDeletingNewsletter: boolean;
  loadingStates?: Record<string, string>;
  errorTogglingLike?: Error | null;
  isUpdatingTags?: boolean;
  tagUpdateError?: string | null;
  onDismissTagError?: () => void;
  // Group context
  activeGroupIds?: string[];
  newsletterGroups?: NewsletterGroup[];
  onGroupClick?: (groupId: string) => void;
  'data-testid'?: string;
}
 
const NewsletterRowContainerWithGroups: React.FC<NewsletterRowContainerWithGroupsProps> = (props) => {
  const { newsletter, onToggleSelect, 'data-testid': dataTestId, ...rest } = props;
  const handleToggleSelect = onToggleSelect ? () => onToggleSelect(newsletter.id) : undefined;
  return (
    <div
      data-testid={dataTestId}
      data-props={JSON.stringify({
        newsletter,
        isSelected: props.isSelected,
        showCheckbox: props.showCheckbox,
        showTags: props.showTags,
        visibleTags: props.visibleTags,
        isInReadingQueue: props.isInReadingQueue
      })}
    >
      <NewsletterRowPresentation
        {...rest}
        newsletter={newsletter}
        onToggleSelect={handleToggleSelect}
      />
    </div>
  );
};
 
export default NewsletterRowContainerWithGroups;