import {TouchableOpacityProps} from 'react-native';
import {Comment} from '@interfaces/comments';
import {Reaction} from '@interfaces/reaction';
import {Article} from '@modules/article/interfaces';
import {Post, FullPost} from '@modules/post/interfaces';
import {Acknowledgement} from '@modules/acknowledgement/interfaces';

import {PostReactionsProps} from './components/PostReactions';

export type Paragraph = {userId: number; text: string};

export interface PostBodyProps extends Omit<PostReactionsProps, 'post'> {
  onPress?: TouchableOpacityProps['onPress'];
  isOwner?: boolean;
  croppedBody: string;
  canInteract?: boolean;
  truncatedHtml: {htmlTruncated: string; isTruncated: boolean};
  bodySizeLimit?: boolean;
  normalBodyLimit: number;
  collapsedByDefault?: boolean;
  showCollapsedMedia?: boolean;
  textShown?: boolean;
  post: Post | FullPost | Comment | Article | Acknowledgement;
  toggleNumberOfLines?: () => void;
  displayLastComment?: boolean;
  isPinned?: boolean;
  canManagePosts?: boolean;
  navigateToEditScreen: () => void;
  goBackOnDelete?: boolean;
  onTagPress: (userId: number) => void;
  showComments?: boolean;
  showReactions?: boolean;
  onPressComment?: () => void;
  onReactionPickerPress?: (reaction: string) => void;
  onCommentReactionPress?: (params: {
    postId: number;
    commentId: number;
    reactions: Reaction[];
    reaction: string;
  }) => void;
  isArchived?: boolean;
}
