import { ApiProperty } from '@nestjs/swagger';
import { IsOptional, IsString } from 'class-validator';

export type DashboardFeedItemType =
  | 'friend-joined-league'
  | 'friend-joined-team'
  | 'friend-finished-race'
  | 'friend-new-personal-best'
  | 'new-race-scheduled'
  | 'new-result-posted'
  | 'league-highlight';

export class DashboardFeedItemSummaryDTO {
  @ApiProperty()
  @IsString()
  id!: string;

  @ApiProperty({
    enum: [
      'friend-joined-league',
      'friend-joined-team',
      'friend-finished-race',
      'friend-new-personal-best',
      'new-race-scheduled',
      'new-result-posted',
      'league-highlight',
    ],
  })
  type!: DashboardFeedItemType;

  @ApiProperty()
  @IsString()
  headline!: string;

  @ApiProperty({ required: false })
  @IsOptional()
  @IsString()
  body?: string;

  @ApiProperty()
  @IsString()
  timestamp!: string;

  @ApiProperty({ required: false })
  @IsOptional()
  @IsString()
  ctaLabel?: string;

  @ApiProperty({ required: false })
  @IsOptional()
  @IsString()
  ctaHref?: string;
}