// Copyright 2021 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only import * as React from 'react'; import { action } from '@storybook/addon-actions'; import { setupI18n } from '../../util/setupI18n'; import enMessages from '../../../_locales/en/messages.json'; import { CallMode } from '../../types/Calling'; import { generateAci } from '../../types/ServiceId'; import { CallingNotification, type PropsType } from './CallingNotification'; import { getDefaultConversation, getDefaultGroup, } from '../../test-both/helpers/getDefaultConversation'; import type { CallStatus } from '../../types/CallDisposition'; import { CallType, CallDirection, GroupCallStatus, DirectCallStatus, } from '../../types/CallDisposition'; import type { ConversationType } from '../../state/ducks/conversations'; import { CallExternalState } from '../../util/callingNotification'; const i18n = setupI18n('en', enMessages); export default { title: 'Components/Conversation/CallingNotification', }; const getCommonProps = (options: { mode: CallMode; type?: CallType; direction?: CallDirection; status?: CallStatus; callCreator?: ConversationType | null; callExternalState?: CallExternalState; }): PropsType => { const { mode, type = mode === CallMode.Group ? CallType.Group : CallType.Audio, direction = CallDirection.Outgoing, status = mode === CallMode.Group ? GroupCallStatus.GenericGroupCall : DirectCallStatus.Pending, callCreator = getDefaultConversation({ serviceId: generateAci(), isMe: direction === CallDirection.Outgoing, }), callExternalState = CallExternalState.Active, } = options; const conversation = mode === CallMode.Group ? getDefaultGroup() : getDefaultConversation(); return { conversationId: conversation.id, i18n, isNextItemCallingNotification: false, returnToActiveCall: action('returnToActiveCall'), startCallingLobby: action('startCallingLobby'), callHistory: { callId: '123', peerId: conversation.id, ringerId: callCreator?.serviceId ?? null, mode, type, direction, timestamp: Date.now(), status, }, callCreator, callExternalState, maxDevices: mode === CallMode.Group ? 15 : 0, deviceCount: // eslint-disable-next-line no-nested-ternary mode === CallMode.Group ? callExternalState === CallExternalState.Full ? 15 : 13 : Infinity, }; }; /* */ export function AcceptedIncomingAudioCall(): JSX.Element { return ( ); } export function AcceptedIncomingVideoCall(): JSX.Element { return ( ); } export function DeclinedIncomingAudioCall(): JSX.Element { return ( ); } export function DeclinedIncomingVideoCall(): JSX.Element { return ( ); } export function AcceptedOutgoingAudioCall(): JSX.Element { return ( ); } export function AcceptedOutgoingVideoCall(): JSX.Element { return ( ); } export function DeclinedOutgoingAudioCall(): JSX.Element { return ( ); } export function DeclinedOutgoingVideoCall(): JSX.Element { return ( ); } export function TwoIncomingDirectCallsBackToBack(): JSX.Element { return ( <> ); } TwoIncomingDirectCallsBackToBack.story = { name: 'Two incoming direct calls back-to-back', }; export function TwoOutgoingDirectCallsBackToBack(): JSX.Element { return ( <> ); } TwoOutgoingDirectCallsBackToBack.story = { name: 'Two outgoing direct calls back-to-back', }; export function GroupCallByUnknown(): JSX.Element { return ( ); } export function GroupCallByYou(): JSX.Element { return ( ); } export function GroupCallBySomeone(): JSX.Element { return ( ); } export function GroupCallStartedBySomeoneWithALongName(): JSX.Element { return ( ); } GroupCallStartedBySomeoneWithALongName.story = { name: 'Group call: started by someone with a long name', }; export function GroupCallActiveCallFull(): JSX.Element { return ( ); } GroupCallActiveCallFull.story = { name: 'Group call: active, call full', }; export function GroupCallEnded(): JSX.Element { return ( ); } GroupCallEnded.story = { name: 'Group call: ended', };