From d3c06045995f33c697d93b2e3719029f473c26f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marcin=20miko=C5=82ajczak?= Date: Thu, 4 Apr 2024 11:02:15 +0200 Subject: [PATCH] Add optional indicator for attachments without description MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: marcin mikołajczak --- src/components/upload.tsx | 20 ++++++++++++++++++-- src/locales/en.json | 2 ++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/components/upload.tsx b/src/components/upload.tsx index 8308950cc..e83dd4d49 100644 --- a/src/components/upload.tsx +++ b/src/components/upload.tsx @@ -10,14 +10,14 @@ import zoomInIcon from '@tabler/icons/outline/zoom-in.svg'; import clsx from 'clsx'; import { List as ImmutableList } from 'immutable'; import React, { useState } from 'react'; -import { defineMessages, useIntl } from 'react-intl'; +import { FormattedMessage, defineMessages, useIntl } from 'react-intl'; import { spring } from 'react-motion'; import { openModal } from 'soapbox/actions/modals'; import Blurhash from 'soapbox/components/blurhash'; import { HStack, Icon, IconButton } from 'soapbox/components/ui'; import Motion from 'soapbox/features/ui/util/optional-motion'; -import { useAppDispatch } from 'soapbox/hooks'; +import { useAppDispatch, useSettings } from 'soapbox/hooks'; import { Attachment } from 'soapbox/types/entities'; export const MIMETYPE_ICONS: Record = { @@ -58,6 +58,7 @@ const messages = defineMessages({ description: { id: 'upload_form.description', defaultMessage: 'Describe for the visually impaired' }, delete: { id: 'upload_form.undo', defaultMessage: 'Delete' }, preview: { id: 'upload_form.preview', defaultMessage: 'Preview' }, + descriptionMissingTitle: { id: 'upload_form.description_missing.title', defaultMessage: 'This attachment doesn\'t have a description' }, }); interface IUpload { @@ -80,6 +81,8 @@ const Upload: React.FC = ({ const intl = useIntl(); const dispatch = useAppDispatch(); + const { missingDescriptionModal } = useSettings(); + const [hovered, setHovered] = useState(false); const [focused, setFocused] = useState(false); const [dirtyDescription, setDirtyDescription] = useState(null); @@ -200,6 +203,19 @@ const Upload: React.FC = ({ )} + {missingDescriptionModal && !description && ( + + + + + )} +
{mediaType === 'video' && (