diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/components/dialogs/GifSelect.tsx | 9 | ||||
-rw-r--r-- | src/state/queries/tenor.ts | 13 |
2 files changed, 18 insertions, 4 deletions
diff --git a/src/components/dialogs/GifSelect.tsx b/src/components/dialogs/GifSelect.tsx index 8ced355e4..e18fdf2db 100644 --- a/src/components/dialogs/GifSelect.tsx +++ b/src/components/dialogs/GifSelect.tsx @@ -5,7 +5,7 @@ import React, { useRef, useState, } from 'react' -import {TextInput, View} from 'react-native' +import {type TextInput, View} from 'react-native' import {useWindowDimensions} from 'react-native' import {Image} from 'expo-image' import {msg, Trans} from '@lingui/macro' @@ -15,13 +15,14 @@ import {logEvent} from '#/lib/statsig/statsig' import {cleanError} from '#/lib/strings/errors' import {isWeb} from '#/platform/detection' import { - Gif, + type Gif, + tenorUrlToBskyGifUrl, useFeaturedGifsQuery, useGifSearchQuery, } from '#/state/queries/tenor' import {ErrorScreen} from '#/view/com/util/error/ErrorScreen' import {ErrorBoundary} from '#/view/com/util/ErrorBoundary' -import {ListMethods} from '#/view/com/util/List' +import {type ListMethods} from '#/view/com/util/List' import {atoms as a, ios, native, useBreakpoints, useTheme, web} from '#/alf' import {Button, ButtonIcon, ButtonText} from '#/components/Button' import * as Dialog from '#/components/Dialog' @@ -316,7 +317,7 @@ export function GifPreview({ t.atoms.bg_contrast_25, ]} source={{ - uri: gif.media_formats.tinygif.url, + uri: tenorUrlToBskyGifUrl(gif.media_formats.tinygif.url), }} contentFit="cover" accessibilityLabel={gif.title} diff --git a/src/state/queries/tenor.ts b/src/state/queries/tenor.ts index 80c57479e..3379d5dfb 100644 --- a/src/state/queries/tenor.ts +++ b/src/state/queries/tenor.ts @@ -3,6 +3,7 @@ import {getLocales} from 'expo-localization' import {keepPreviousData, useInfiniteQuery} from '@tanstack/react-query' import {GIF_FEATURED, GIF_SEARCH} from '#/lib/constants' +import {logger} from '#/logger' export const RQKEY_ROOT = 'gif-service' export const RQKEY_FEATURED = [RQKEY_ROOT, 'featured'] @@ -86,6 +87,18 @@ function createTenorApi<Input extends object>( } } +export function tenorUrlToBskyGifUrl(tenorUrl: string) { + let url + try { + url = new URL(tenorUrl) + } catch (e) { + logger.debug('invalid url passed to tenorUrlToBskyGifUrl()') + return '' + } + url.hostname = 't.gifs.bsky.app' + return url.href +} + export type Gif = { /** * A Unix timestamp that represents when this post was created. |