signal-desktop/ts/components/conversation/ExpireTimer.stories.tsx

102 lines
2.4 KiB
TypeScript
Raw Normal View History

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 type { Meta } from '@storybook/react';
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',
} satisfies Meta<Props>;
2020-08-21 16:28:26 +00:00
const createProps = (overrideProps: Partial<Props> = {}): Props => ({
direction: overrideProps.direction || 'outgoing',
expirationLength: overrideProps.expirationLength || 30 * 1000,
expirationTimestamp:
overrideProps.expirationTimestamp || Date.now() + 30 * 1000,
withImageNoCaption: overrideProps.withImageNoCaption || false,
withSticker: overrideProps.withSticker || false,
withTapToViewExpired: overrideProps.withTapToViewExpired || false,
2020-08-21 16:28:26 +00:00
});
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
};
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-11-18 00:45:19 +00:00
export function InProgress(): JSX.Element {
2020-08-21 16:28:26 +00:00
const props = createProps({
expirationTimestamp: Date.now() + 15 * 1000,
});
return <ExpireTimer {...props} />;
2022-11-18 00:45:19 +00:00
}
2020-08-21 16:28:26 +00:00
2022-11-18 00:45:19 +00:00
export function Expired(): JSX.Element {
2020-08-21 16:28:26 +00:00
const props = createProps({
expirationTimestamp: Date.now() - 30 * 1000,
});
return <ExpireTimer {...props} />;
2022-11-18 00:45:19 +00:00
}
2020-08-21 16:28:26 +00:00
2022-11-18 00:45:19 +00:00
export function Sticker(): JSX.Element {
2020-08-21 16:28:26 +00:00
const props = createProps({
withSticker: true,
});
return <ExpireTimer {...props} />;
2022-11-18 00:45:19 +00:00
}
2020-08-21 16:28:26 +00:00
2022-11-18 00:45:19 +00:00
export function TapToViewExpired(): JSX.Element {
2020-08-21 16:28:26 +00:00
const props = createProps({
withTapToViewExpired: true,
});
return <ExpireTimer {...props} />;
2022-11-18 00:45:19 +00:00
}
2020-08-21 16:28:26 +00:00
2022-11-18 00:45:19 +00:00
export function 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-11-18 00:45:19 +00:00
}
2020-08-21 16:28:26 +00:00
2022-11-18 00:45:19 +00:00
export function 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-11-18 00:45:19 +00:00
}
2020-08-21 16:28:26 +00:00
2022-11-18 00:45:19 +00:00
export function ExpirationTooFarOut(): JSX.Element {
2020-08-21 16:28:26 +00:00
const props = createProps({
expirationTimestamp: Date.now() + 150 * 1000,
});
return <ExpireTimer {...props} />;
2022-11-18 00:45:19 +00:00
}