Files
bookorbit/server/src/modules/email/dto/update-email-recipient-group.dto.ts
T
neon 3a0c61ffbc fix(server): type the email module and fix narration audio serving
Three defects, found while planning the Android client:

- The email module's providers, preferences, templates, recipient
  groups, tests and send requests had no types in packages/types, so
  every client mirrored them from server code. They are typed now, from
  the JSON the routes return and accept, and the services and DTOs
  declare them. No response changes.
- Narration audio paths were decoded twice: the router decodes the
  wildcard, and the route decoded it again, so a name holding a literal
  % resolved to the wrong entry or none. A path is now decoded once and
  matched to the playlist's hrefs exactly, with an exact entry name
  preferred. Each request also read the whole audio entry into memory;
  it is now streamed, read from its offset when stored and inflated and
  skipped when deflated, with the same headers and Range handling, and
  an open range at or past the end is a 416. Both narration audio
  routes skip response compression, which dropped Content-Length.
- A playlist's section starts left out any clip of unknown length.
  They now use the media:duration each overlay declares when a clip's
  own length is unknown. A seq that interleaves par and seq children
  was reordered by the XML parser's grouping; SMIL is now read in
  document order.
2026-10-15 05:43:23 +00:00

14 lines
369 B
TypeScript

import type { EmailRecipientGroupUpdateRequest } from '@bookorbit/types';
import { IsInt, IsOptional, IsString, MaxLength } from 'class-validator';
export class UpdateEmailRecipientGroupDto implements EmailRecipientGroupUpdateRequest {
@IsOptional()
@IsString()
@MaxLength(255)
name?: string;
@IsOptional()
@IsInt()
defaultTemplateId?: number | null;
}