| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- export type ContentCardTemplate = 'minimal' | 'story' | 'focus'
- export type ContentCardCtaType = 'detail' | 'photo' | 'audio' | 'quiz'
- export interface ContentCardQuizConfig {
- bonusScore: number
- countdownSeconds: number
- minValue: number
- maxValue: number
- allowSubtraction: boolean
- }
- export interface ContentCardCtaConfig {
- type: ContentCardCtaType
- label: string
- quiz: ContentCardQuizConfig | null
- }
- export interface ContentCardCtaConfigOverride {
- type?: ContentCardCtaType
- label?: string
- bonusScore?: number
- countdownSeconds?: number
- minValue?: number
- maxValue?: number
- allowSubtraction?: boolean
- }
- export interface ContentCardActionViewModel {
- key: string
- type: ContentCardCtaType
- label: string
- }
- export const DEFAULT_CONTENT_CARD_QUIZ_CONFIG: ContentCardQuizConfig = {
- bonusScore: 1,
- countdownSeconds: 10,
- minValue: 10,
- maxValue: 999,
- allowSubtraction: true,
- }
- export function buildDefaultContentCardCtaLabel(type: ContentCardCtaType): string {
- if (type === 'detail') {
- return '查看详情'
- }
- if (type === 'photo') {
- return '拍照打卡'
- }
- if (type === 'audio') {
- return '语音留言'
- }
- return '答题加分'
- }
- export function buildDefaultContentCardQuizConfig(
- override?: ContentCardCtaConfigOverride | null,
- ): ContentCardQuizConfig {
- const minValue = Number(override && override.minValue)
- const maxValue = Number(override && override.maxValue)
- return {
- bonusScore: Number.isFinite(Number(override && override.bonusScore))
- ? Math.max(1, Math.round(Number(override && override.bonusScore)))
- : DEFAULT_CONTENT_CARD_QUIZ_CONFIG.bonusScore,
- countdownSeconds: Number.isFinite(Number(override && override.countdownSeconds))
- ? Math.max(5, Math.round(Number(override && override.countdownSeconds)))
- : DEFAULT_CONTENT_CARD_QUIZ_CONFIG.countdownSeconds,
- minValue: Number.isFinite(minValue)
- ? Math.max(10, Math.round(minValue))
- : DEFAULT_CONTENT_CARD_QUIZ_CONFIG.minValue,
- maxValue: Number.isFinite(maxValue)
- ? Math.max(
- Number.isFinite(minValue) ? Math.max(10, Math.round(minValue)) : DEFAULT_CONTENT_CARD_QUIZ_CONFIG.minValue,
- Math.round(maxValue),
- )
- : DEFAULT_CONTENT_CARD_QUIZ_CONFIG.maxValue,
- allowSubtraction: override && typeof override.allowSubtraction === 'boolean'
- ? override.allowSubtraction
- : DEFAULT_CONTENT_CARD_QUIZ_CONFIG.allowSubtraction,
- }
- }
- export function resolveContentCardCtaConfig(
- override: ContentCardCtaConfigOverride | null | undefined,
- ): ContentCardCtaConfig | null {
- const type = override && override.type
- if (type !== 'detail' && type !== 'photo' && type !== 'audio' && type !== 'quiz') {
- return null
- }
- return {
- type,
- label: override && override.label ? override.label : buildDefaultContentCardCtaLabel(type),
- quiz: type === 'quiz' ? buildDefaultContentCardQuizConfig(override) : null,
- }
- }
|