import { AdserverConfig } from "../adserver/adserverConfig"; import { emptyOrganisationData, Organisation } from "./organisation"; import { Person } from "../user/person"; import { ItuneCategory } from "./ituneCategory"; import { Annotations } from "."; /** * Season settings for emissions */ export enum SeasonMode { /** This emission doesn't have seasons */ NO_SEASON = 'NO_SEASON', /** This emission has seasons and episodes are ordered by date */ SEASON_WITHOUT_PODCAST_NUMBERING = 'SEASON_WITHOUT_PODCAST_NUMBERING', /** This emission has seasons and episodes are ordered manually */ SEASON_WITH_PODCAST_NUMBERING = 'SEASON_WITH_PODCAST_NUMBERING' } /** * An emission */ export interface Emission { imageUrl?: string; annotations?: Annotations & { /** Subtitle of the emission */ subtitle?: string; /** Default animators (ids separated by commas) for newly created podcasts */ podcastDefaultAnimators?: string; /** Default description for newly created podcasts */ podcastDefaultDescription?: string; }; beneficiaries: string[]; description: string; emissionId: number; iabIds?: Array; lastPodcastDate?: string; monetisable: string; name: string; orga: Organisation; rubriqueIds: Array; score?: number; publisher?: Person; copyright?: string; optItunesCategories?: Array; adConfigs?: { [key: string]: AdserverConfig }; urlFeed?: string; limits?: { podcastMaxAge?: number; podcastMaxCount?: number; }; createdByUserId?: string; privateRssType?:string; /** * Indicates that this emission and its episode are visible. * *Default: true* */ visible?: boolean; /** An optional list of tags */ tags?: string[]; /** The ids of groups this emission belongs to */ groupIds?: Array /** Seasons configuration */ seasonMode: SeasonMode; /** Seasons defined on emission */ seasons?: Array; /** Indicates that the emission has explicit content */ explicit?: boolean; } export function emptyEmissionData(orga?: Organisation): Emission { return { emissionId: 0, name: "", description: "", imageUrl: "", iabIds: undefined, orga: orga ?? emptyOrganisationData(), beneficiaries: [], rubriqueIds: [], monetisable: "UNDEFINED", limits: {}, seasonMode: SeasonMode.NO_SEASON }; }