From da45c42b6f1ebf0646b3327c9a4a39cd46ecb8d6 Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Tue, 18 Feb 2025 09:45:46 -0600 Subject: [APP-1049] show label expiration in frontend (#7738) * Add support for label exp to LabelsOnMeDialog * Add exp to PostAlerts, align with LabelsOnMe UI * Bump weight * Improve translations * Expiry should round up * Add a little visual alignment hack --- .../moderation/ModerationDetailsDialog.tsx | 103 ++++++++++++++++----- 1 file changed, 78 insertions(+), 25 deletions(-) (limited to 'src/components/moderation/ModerationDetailsDialog.tsx') diff --git a/src/components/moderation/ModerationDetailsDialog.tsx b/src/components/moderation/ModerationDetailsDialog.tsx index bdbb2daa5..658ef48d1 100644 --- a/src/components/moderation/ModerationDetailsDialog.tsx +++ b/src/components/moderation/ModerationDetailsDialog.tsx @@ -3,14 +3,14 @@ import {ModerationCause} from '@atproto/api' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' +import {useGetTimeAgo} from '#/lib/hooks/useTimeAgo' import {useModerationCauseDescription} from '#/lib/moderation/useModerationCauseDescription' import {makeProfileLink} from '#/lib/routes/links' import {listUriToHref} from '#/lib/strings/url-helpers' import {isNative} from '#/platform/detection' import {useSession} from '#/state/session' -import {atoms as a, useTheme} from '#/alf' +import {atoms as a, useGutters, useTheme} from '#/alf' import * as Dialog from '#/components/Dialog' -import {Divider} from '#/components/Divider' import {InlineLinkText} from '#/components/Link' import {AppModerationCause} from '#/components/Pills' import {Text} from '#/components/Typography' @@ -38,9 +38,11 @@ function ModerationDetailsDialogInner({ control: Dialog.DialogOuterProps['control'] }) { const t = useTheme() + const xGutters = useGutters([0, 'base']) const {_} = useLingui() const desc = useModerationCauseDescription(modcause) const {currentAccount} = useSession() + const timeDiff = useGetTimeAgo({future: true}) let name let description @@ -128,37 +130,88 @@ function ModerationDetailsDialogInner({ description = '' } + const sourceName = + desc.source || desc.sourceDisplayName || _(msg`an unknown labeler`) + return ( - - - {name} - - - {description} - + + + + {name} + + + {description} + + {modcause?.type === 'label' && ( - - + {modcause.source.type === 'user' ? ( - + This label was applied by the author. ) : ( <> - - - This label was applied by{' '} - control.close()} - style={a.text_md}> - {desc.source || _(msg`an unknown labeler`)} - - . - - + + + + Source:{' '} + control.close()}> + {sourceName} + + + + {modcause.label.exp && ( + + + + Expires in {timeDiff(Date.now(), modcause.label.exp)} + + + + )} + )} -- cgit 1.4.1