diff --git a/package.json b/package.json index 291e8772..f8b01446 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tooot", - "version": "4.8.6", + "version": "4.8.7", "description": "tooot for Mastodon", "author": "xmflsct ", "license": "GPL-3.0-or-later", diff --git a/src/components/Emojis/List.tsx b/src/components/Emojis/List.tsx index 6d72be23..1ccf3ed7 100644 --- a/src/components/Emojis/List.tsx +++ b/src/components/Emojis/List.tsx @@ -2,7 +2,7 @@ import { emojis } from '@components/Emojis' import Icon from '@components/Icon' import CustomText from '@components/Text' import { useAccessibility } from '@utils/accessibility/AccessibilityManager' -import { connectImage } from '@utils/api/helpers/connect' +import { connectMedia } from '@utils/api/helpers/connect' import { StorageAccount } from '@utils/storage/account' import { getAccountStorage, setAccountStorage } from '@utils/storage/actions' import { StyleConstants } from '@utils/styles/constants' @@ -134,7 +134,7 @@ const EmojisList = () => { emoji: emoji.shortcode })} accessibilityHint={t('screenCompose:content.root.footer.emojis.accessibilityHint')} - source={connectImage({ uri })} + source={connectMedia({ uri })} style={{ width: 32, height: 32 }} /> diff --git a/src/components/GracefullyImage.tsx b/src/components/GracefullyImage.tsx index 30aec804..2906a135 100644 --- a/src/components/GracefullyImage.tsx +++ b/src/components/GracefullyImage.tsx @@ -1,5 +1,5 @@ import { useAccessibility } from '@utils/accessibility/AccessibilityManager' -import { connectImage } from '@utils/api/helpers/connect' +import { connectMedia } from '@utils/api/helpers/connect' import { useTheme } from '@utils/styles/ThemeManager' import React, { useEffect, useState } from 'react' import { @@ -93,12 +93,12 @@ const GracefullyImage = ({ > {uri.preview && !imageLoaded ? ( ) : null} { setImageLoaded(true) diff --git a/src/components/Parse/Emojis.tsx b/src/components/Parse/Emojis.tsx index 54077298..ec5362ff 100644 --- a/src/components/Parse/Emojis.tsx +++ b/src/components/Parse/Emojis.tsx @@ -1,6 +1,6 @@ import CustomText from '@components/Text' import { useAccessibility } from '@utils/accessibility/AccessibilityManager' -import { connectImage } from '@utils/api/helpers/connect' +import { connectMedia } from '@utils/api/helpers/connect' import { useGlobalStorage } from '@utils/storage/actions' import { StyleConstants } from '@utils/styles/constants' import { adaptiveScale } from '@utils/styles/scaling' @@ -78,7 +78,7 @@ const ParseEmojis: React.FC = ({ {i === 0 ? ' ' : undefined} = ({ total, index, sensitiveShown, audio const playAudio = useCallback(async () => { if (!audioPlayer) { const { sound } = await Audio.Sound.createAsync( - { uri: audio.url }, + connectMedia({ uri: audio.url }) as { uri: string }, {}, // @ts-ignore props => setAudioPosition(props.positionMillis) diff --git a/src/components/Timeline/Shared/Attachment/Video.tsx b/src/components/Timeline/Shared/Attachment/Video.tsx index 69189fd5..e186d5da 100644 --- a/src/components/Timeline/Shared/Attachment/Video.tsx +++ b/src/components/Timeline/Shared/Attachment/Video.tsx @@ -1,5 +1,6 @@ import Button from '@components/Button' import { useAccessibility } from '@utils/accessibility/AccessibilityManager' +import { connectMedia } from '@utils/api/helpers/connect' import { useAccountStorage, useGlobalStorage } from '@utils/storage/actions' import { StyleConstants } from '@utils/styles/constants' import { ResizeMode, Video, VideoFullscreenUpdate } from 'expo-av' @@ -41,7 +42,7 @@ const AttachmentVideo: React.FC = ({ const playOnPress = async () => { setVideoLoading(true) if (!videoLoaded) { - await videoPlayer.current?.loadAsync({ uri: video.url }) + await videoPlayer.current?.loadAsync(connectMedia({ uri: video.url }) as { uri: string }) } setVideoLoading(false) @@ -71,10 +72,10 @@ const AttachmentVideo: React.FC = ({ shouldPlay: reduceMotionEnabled || !shouldAutoplayGifv ? false : true, isMuted: true, isLooping: true, - source: { uri: video.url } + source: connectMedia({ uri: video.url }) as { uri: string } } : { - posterSource: { uri: video.preview_url }, + posterSource: connectMedia({ uri: video.preview_url }), posterStyle: { resizeMode: ResizeMode.COVER } })} useNativeControls={false} diff --git a/src/screens/Announcements.tsx b/src/screens/Announcements.tsx index 9de0806d..70e50c80 100644 --- a/src/screens/Announcements.tsx +++ b/src/screens/Announcements.tsx @@ -6,7 +6,7 @@ import RelativeTime from '@components/RelativeTime' import CustomText from '@components/Text' import { BlurView } from '@react-native-community/blur' import { useAccessibility } from '@utils/accessibility/AccessibilityManager' -import { connectImage } from '@utils/api/helpers/connect' +import { connectMedia } from '@utils/api/helpers/connect' import { RootStackScreenProps } from '@utils/navigation/navigators' import { useAnnouncementMutation, useAnnouncementQuery } from '@utils/queryHooks/announcement' import { StyleConstants } from '@utils/styles/constants' @@ -140,7 +140,7 @@ const ScreenAnnouncements: React.FC > {reaction.url ? ( ))} diff --git a/src/screens/Compose/Root/Footer/Attachments.tsx b/src/screens/Compose/Root/Footer/Attachments.tsx index 4ce53446..a4f8ee9b 100644 --- a/src/screens/Compose/Root/Footer/Attachments.tsx +++ b/src/screens/Compose/Root/Footer/Attachments.tsx @@ -6,7 +6,7 @@ import { MAX_MEDIA_ATTACHMENTS } from '@components/mediaSelector' import CustomText from '@components/Text' import { useActionSheet } from '@expo/react-native-action-sheet' import { useNavigation } from '@react-navigation/native' -import { connectImage } from '@utils/api/helpers/connect' +import { connectMedia } from '@utils/api/helpers/connect' import { featureCheck } from '@utils/helpers/featureCheck' import { StyleConstants } from '@utils/styles/constants' import layoutAnimation from '@utils/styles/layoutAnimation' @@ -109,7 +109,7 @@ const ComposeAttachments: React.FC = ({ accessibleRefAttachments }) => { source={ item.local?.thumbnail ? { uri: item.local?.thumbnail } - : connectImage({ uri: item.remote?.preview_url }) + : connectMedia({ uri: item.remote?.preview_url }) } /> {item.remote?.meta?.original?.duration ? ( diff --git a/src/utils/api/helpers/connect.ts b/src/utils/api/helpers/connect.ts index e2475260..22472c74 100644 --- a/src/utils/api/helpers/connect.ts +++ b/src/utils/api/helpers/connect.ts @@ -74,14 +74,14 @@ const list = [ 'vq2rz02ayf' ] -export const CONNECT_DOMAIN = () => +export const CONNECT_DOMAIN = (index?: number) => mapEnvironment({ - release: `${list[Math.floor(Math.random() * 66)]}.tooot.app`, + release: `${list[index || Math.floor(Math.random() * list.length)]}.tooot.app`, candidate: 'connect-candidate.tooot.app', development: 'connect-development.tooot.app' }) -export const connectImage = ({ +export const connectMedia = ({ uri }: { uri?: string @@ -89,7 +89,19 @@ export const connectImage = ({ if (GLOBAL.connect) { if (uri) { const host = parse(uri).host - return { uri: uri.replace(host, CONNECT_DOMAIN()), headers: { 'x-tooot-domain': host } } + return { + uri: uri.replace( + host, + CONNECT_DOMAIN( + uri + .split('') + .map(i => i.charCodeAt(0)) + .reduce((a, b) => a + b, 0) % + (list.length + 1) + ) + ), + headers: { 'x-tooot-domain': host } + } } else { return { uri } }