2020-10-30 20:34:04 +00:00
|
|
|
// Copyright 2020 Signal Messenger, LLC
|
|
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
2020-08-21 16:28:26 +00:00
|
|
|
import * as React from 'react';
|
|
|
|
|
|
|
|
import { boolean, number } from '@storybook/addon-knobs';
|
|
|
|
|
2021-10-26 19:15:33 +00:00
|
|
|
import type { Props } from './ExpireTimer';
|
|
|
|
import { ExpireTimer } from './ExpireTimer';
|
2020-08-21 16:28:26 +00:00
|
|
|
|
2022-06-07 00:48:02 +00:00
|
|
|
export default {
|
|
|
|
title: 'Components/Conversation/ExpireTimer',
|
|
|
|
};
|
2020-08-21 16:28:26 +00:00
|
|
|
|
|
|
|
const createProps = (overrideProps: Partial<Props> = {}): Props => ({
|
|
|
|
direction: overrideProps.direction || 'outgoing',
|
|
|
|
expirationLength: number(
|
|
|
|
'expirationLength',
|
|
|
|
overrideProps.expirationLength || 30 * 1000
|
|
|
|
),
|
|
|
|
expirationTimestamp: number(
|
|
|
|
'expirationTimestamp',
|
|
|
|
overrideProps.expirationTimestamp || Date.now() + 30 * 1000
|
|
|
|
),
|
|
|
|
withImageNoCaption: boolean(
|
|
|
|
'withImageNoCaption',
|
|
|
|
overrideProps.withImageNoCaption || false
|
|
|
|
),
|
|
|
|
withSticker: boolean('withSticker', overrideProps.withSticker || false),
|
|
|
|
withTapToViewExpired: boolean(
|
|
|
|
'withTapToViewExpired',
|
|
|
|
overrideProps.withTapToViewExpired || false
|
|
|
|
),
|
|
|
|
});
|
|
|
|
|
2022-06-07 00:48:02 +00:00
|
|
|
export const _30Seconds = (): JSX.Element => {
|
2020-08-21 16:28:26 +00:00
|
|
|
const props = createProps();
|
|
|
|
|
|
|
|
return <ExpireTimer {...props} />;
|
2022-06-07 00:48:02 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
_30Seconds.story = {
|
|
|
|
name: '30 seconds',
|
|
|
|
};
|
2020-08-21 16:28:26 +00:00
|
|
|
|
2022-06-07 00:48:02 +00:00
|
|
|
export const _2Minutes = (): JSX.Element => {
|
2020-08-21 16:28:26 +00:00
|
|
|
const twoMinutes = 60 * 1000 * 2;
|
|
|
|
const props = createProps({
|
|
|
|
expirationTimestamp: Date.now() + twoMinutes,
|
|
|
|
expirationLength: twoMinutes,
|
|
|
|
});
|
|
|
|
|
|
|
|
return <ExpireTimer {...props} />;
|
2022-06-07 00:48:02 +00:00
|
|
|
};
|
2020-08-21 16:28:26 +00:00
|
|
|
|
2022-06-07 00:48:02 +00:00
|
|
|
_2Minutes.story = {
|
|
|
|
name: '2 minutes',
|
|
|
|
};
|
|
|
|
|
|
|
|
export const InProgress = (): JSX.Element => {
|
2020-08-21 16:28:26 +00:00
|
|
|
const props = createProps({
|
|
|
|
expirationTimestamp: Date.now() + 15 * 1000,
|
|
|
|
});
|
|
|
|
|
|
|
|
return <ExpireTimer {...props} />;
|
2022-06-07 00:48:02 +00:00
|
|
|
};
|
2020-08-21 16:28:26 +00:00
|
|
|
|
2022-06-07 00:48:02 +00:00
|
|
|
export const Expired = (): JSX.Element => {
|
2020-08-21 16:28:26 +00:00
|
|
|
const props = createProps({
|
|
|
|
expirationTimestamp: Date.now() - 30 * 1000,
|
|
|
|
});
|
|
|
|
|
|
|
|
return <ExpireTimer {...props} />;
|
2022-06-07 00:48:02 +00:00
|
|
|
};
|
2020-08-21 16:28:26 +00:00
|
|
|
|
2022-06-07 00:48:02 +00:00
|
|
|
export const Sticker = (): JSX.Element => {
|
2020-08-21 16:28:26 +00:00
|
|
|
const props = createProps({
|
|
|
|
withSticker: true,
|
|
|
|
});
|
|
|
|
|
|
|
|
return <ExpireTimer {...props} />;
|
2022-06-07 00:48:02 +00:00
|
|
|
};
|
2020-08-21 16:28:26 +00:00
|
|
|
|
2022-06-07 00:48:02 +00:00
|
|
|
export const TapToViewExpired = (): JSX.Element => {
|
2020-08-21 16:28:26 +00:00
|
|
|
const props = createProps({
|
|
|
|
withTapToViewExpired: true,
|
|
|
|
});
|
|
|
|
|
|
|
|
return <ExpireTimer {...props} />;
|
2022-06-07 00:48:02 +00:00
|
|
|
};
|
2020-08-21 16:28:26 +00:00
|
|
|
|
2022-06-07 00:48:02 +00:00
|
|
|
export const ImageNoCaption = (): JSX.Element => {
|
2020-08-21 16:28:26 +00:00
|
|
|
const props = createProps({
|
|
|
|
withImageNoCaption: true,
|
|
|
|
});
|
|
|
|
|
|
|
|
return (
|
|
|
|
<div style={{ backgroundColor: 'darkgreen' }}>
|
|
|
|
<ExpireTimer {...props} />
|
|
|
|
</div>
|
|
|
|
);
|
2022-06-07 00:48:02 +00:00
|
|
|
};
|
2020-08-21 16:28:26 +00:00
|
|
|
|
2022-06-07 00:48:02 +00:00
|
|
|
export const Incoming = (): JSX.Element => {
|
2020-08-21 16:28:26 +00:00
|
|
|
const props = createProps({
|
|
|
|
direction: 'incoming',
|
|
|
|
});
|
|
|
|
|
|
|
|
return (
|
|
|
|
<div style={{ backgroundColor: 'darkgreen' }}>
|
|
|
|
<ExpireTimer {...props} />
|
|
|
|
</div>
|
|
|
|
);
|
2022-06-07 00:48:02 +00:00
|
|
|
};
|
2020-08-21 16:28:26 +00:00
|
|
|
|
2022-06-07 00:48:02 +00:00
|
|
|
export const ExpirationTooFarOut = (): JSX.Element => {
|
2020-08-21 16:28:26 +00:00
|
|
|
const props = createProps({
|
|
|
|
expirationTimestamp: Date.now() + 150 * 1000,
|
|
|
|
});
|
|
|
|
|
|
|
|
return <ExpireTimer {...props} />;
|
2022-06-07 00:48:02 +00:00
|
|
|
};
|