From a18b25d16c7ff4e5233cc6ca45511ba42b12f55f Mon Sep 17 00:00:00 2001 From: Samuel Newman Date: Tue, 20 May 2025 18:49:20 +0300 Subject: [Live] Add warning if link is missing image (#8393) --- src/components/live/EditLiveDialog.tsx | 102 ++------------------------------- 1 file changed, 5 insertions(+), 97 deletions(-) (limited to 'src/components/live/EditLiveDialog.tsx') diff --git a/src/components/live/EditLiveDialog.tsx b/src/components/live/EditLiveDialog.tsx index 36c292cb5..cdffb3286 100644 --- a/src/components/live/EditLiveDialog.tsx +++ b/src/components/live/EditLiveDialog.tsx @@ -1,6 +1,5 @@ import {useMemo, useState} from 'react' import {View} from 'react-native' -import {Image} from 'expo-image' import { type AppBskyActorDefs, AppBskyActorStatus, @@ -8,28 +7,23 @@ import { } from '@atproto/api' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' -import {useQuery} from '@tanstack/react-query' import {differenceInMinutes} from 'date-fns' -import {getLinkMeta} from '#/lib/link-meta/link-meta' import {cleanError} from '#/lib/strings/errors' -import {toNiceDomain} from '#/lib/strings/url-helpers' import {definitelyUrl} from '#/lib/strings/url-helpers' -import {useAgent} from '#/state/session' import {useTickEveryMinute} from '#/state/shell' -import {LoadingPlaceholder} from '#/view/com/util/LoadingPlaceholder' import {atoms as a, platform, useTheme, web} from '#/alf' import {Admonition} from '#/components/Admonition' import {Button, ButtonIcon, ButtonText} from '#/components/Button' import * as Dialog from '#/components/Dialog' import * as TextField from '#/components/forms/TextField' -import {CircleX_Stroke2_Corner0_Rounded as CircleXIcon} from '#/components/icons/CircleX' import {Clock_Stroke2_Corner0_Rounded as ClockIcon} from '#/components/icons/Clock' -import {Globe_Stroke2_Corner0_Rounded as GlobeIcon} from '#/components/icons/Globe' import {Warning_Stroke2_Corner0_Rounded as WarningIcon} from '#/components/icons/Warning' import {Loader} from '#/components/Loader' import {Text} from '#/components/Typography' +import {LinkPreview} from './LinkPreview' import { + useLiveLinkMetaQuery, useRemoveLiveStatusMutation, useUpsertLiveStatusMutation, } from './queries' @@ -62,10 +56,9 @@ function DialogInner({ const control = Dialog.useDialogContext() const {_, i18n} = useLingui() const t = useTheme() - const agent = useAgent() + const [liveLink, setLiveLink] = useState(embed.external.uri) const [liveLinkError, setLiveLinkError] = useState('') - const [imageLoadError, setImageLoadError] = useState(false) const tick = useTickEveryMinute() const liveLinkUrl = definitelyUrl(liveLink) @@ -78,14 +71,7 @@ function DialogInner({ isSuccess: hasValidLinkMeta, isLoading: linkMetaLoading, error: linkMetaError, - } = useQuery({ - enabled: !!debouncedUrl, - queryKey: ['link-meta', debouncedUrl], - queryFn: async () => { - if (!debouncedUrl) return null - return getLinkMeta(agent, debouncedUrl) - }, - }) + } = useLiveLinkMetaQuery(debouncedUrl) const record = useMemo(() => { if (!AppBskyActorStatus.isRecord(status.record)) return null @@ -208,85 +194,7 @@ function DialogInner({ )} - {(linkMeta || linkMetaLoading) && ( - - {(!linkMeta || linkMeta.image) && ( - - {linkMeta?.image && ( - setImageLoadError(false)} - onError={() => setImageLoadError(true)} - /> - )} - {linkMeta && imageLoadError && ( - - )} - - )} - - {linkMeta ? ( - <> - - {linkMeta.title || linkMeta.url} - - - - - {toNiceDomain(linkMeta.url)} - - - - ) : ( - <> - - - - )} - - - )} + {goLiveError && ( -- cgit 1.4.1