mirror of
				https://github.com/tooot-app/app
				synced 2025-06-05 22:19:13 +02:00 
			
		
		
		
	Use the same subdomain for connect media
Preventing count as cache miss
This commit is contained in:
		| @@ -1,6 +1,6 @@ | |||||||
| { | { | ||||||
|   "name": "tooot", |   "name": "tooot", | ||||||
|   "version": "4.8.6", |   "version": "4.8.7", | ||||||
|   "description": "tooot for Mastodon", |   "description": "tooot for Mastodon", | ||||||
|   "author": "xmflsct <me@xmflsct.com>", |   "author": "xmflsct <me@xmflsct.com>", | ||||||
|   "license": "GPL-3.0-or-later", |   "license": "GPL-3.0-or-later", | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ import { emojis } from '@components/Emojis' | |||||||
| import Icon from '@components/Icon' | import Icon from '@components/Icon' | ||||||
| import CustomText from '@components/Text' | import CustomText from '@components/Text' | ||||||
| import { useAccessibility } from '@utils/accessibility/AccessibilityManager' | 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 { StorageAccount } from '@utils/storage/account' | ||||||
| import { getAccountStorage, setAccountStorage } from '@utils/storage/actions' | import { getAccountStorage, setAccountStorage } from '@utils/storage/actions' | ||||||
| import { StyleConstants } from '@utils/styles/constants' | import { StyleConstants } from '@utils/styles/constants' | ||||||
| @@ -134,7 +134,7 @@ const EmojisList = () => { | |||||||
|                   emoji: emoji.shortcode |                   emoji: emoji.shortcode | ||||||
|                 })} |                 })} | ||||||
|                 accessibilityHint={t('screenCompose:content.root.footer.emojis.accessibilityHint')} |                 accessibilityHint={t('screenCompose:content.root.footer.emojis.accessibilityHint')} | ||||||
|                 source={connectImage({ uri })} |                 source={connectMedia({ uri })} | ||||||
|                 style={{ width: 32, height: 32 }} |                 style={{ width: 32, height: 32 }} | ||||||
|               /> |               /> | ||||||
|             </Pressable> |             </Pressable> | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| import { useAccessibility } from '@utils/accessibility/AccessibilityManager' | 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 { useTheme } from '@utils/styles/ThemeManager' | ||||||
| import React, { useEffect, useState } from 'react' | import React, { useEffect, useState } from 'react' | ||||||
| import { | import { | ||||||
| @@ -93,12 +93,12 @@ const GracefullyImage = ({ | |||||||
|     > |     > | ||||||
|       {uri.preview && !imageLoaded ? ( |       {uri.preview && !imageLoaded ? ( | ||||||
|         <FastImage |         <FastImage | ||||||
|           source={connectImage({ uri: uri.preview })} |           source={connectMedia({ uri: uri.preview })} | ||||||
|           style={[styles.placeholder, { backgroundColor: colors.shimmerDefault }]} |           style={[styles.placeholder, { backgroundColor: colors.shimmerDefault }]} | ||||||
|         /> |         /> | ||||||
|       ) : null} |       ) : null} | ||||||
|       <FastImage |       <FastImage | ||||||
|         source={connectImage(source)} |         source={connectMedia(source)} | ||||||
|         style={[{ flex: 1 }, imageStyle]} |         style={[{ flex: 1 }, imageStyle]} | ||||||
|         onLoad={() => { |         onLoad={() => { | ||||||
|           setImageLoaded(true) |           setImageLoaded(true) | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| import CustomText from '@components/Text' | import CustomText from '@components/Text' | ||||||
| import { useAccessibility } from '@utils/accessibility/AccessibilityManager' | 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 { useGlobalStorage } from '@utils/storage/actions' | ||||||
| import { StyleConstants } from '@utils/styles/constants' | import { StyleConstants } from '@utils/styles/constants' | ||||||
| import { adaptiveScale } from '@utils/styles/scaling' | import { adaptiveScale } from '@utils/styles/scaling' | ||||||
| @@ -78,7 +78,7 @@ const ParseEmojis: React.FC<Props> = ({ | |||||||
|                   <CustomText key={emojiShortcode + i}> |                   <CustomText key={emojiShortcode + i}> | ||||||
|                     {i === 0 ? ' ' : undefined} |                     {i === 0 ? ' ' : undefined} | ||||||
|                     <FastImage |                     <FastImage | ||||||
|                       source={connectImage({ uri: uri.trim() })} |                       source={connectMedia({ uri: uri.trim() })} | ||||||
|                       style={{ |                       style={{ | ||||||
|                         width: adaptedFontsize, |                         width: adaptedFontsize, | ||||||
|                         height: adaptedFontsize, |                         height: adaptedFontsize, | ||||||
|   | |||||||
| @@ -1,6 +1,7 @@ | |||||||
| import Button from '@components/Button' | import Button from '@components/Button' | ||||||
| import GracefullyImage from '@components/GracefullyImage' | import GracefullyImage from '@components/GracefullyImage' | ||||||
| import { Slider } from '@sharcoux/slider' | import { Slider } from '@sharcoux/slider' | ||||||
|  | import { connectMedia } from '@utils/api/helpers/connect' | ||||||
| import { StyleConstants } from '@utils/styles/constants' | import { StyleConstants } from '@utils/styles/constants' | ||||||
| import { useTheme } from '@utils/styles/ThemeManager' | import { useTheme } from '@utils/styles/ThemeManager' | ||||||
| import { Audio } from 'expo-av' | import { Audio } from 'expo-av' | ||||||
| @@ -26,7 +27,7 @@ const AttachmentAudio: React.FC<Props> = ({ total, index, sensitiveShown, audio | |||||||
|   const playAudio = useCallback(async () => { |   const playAudio = useCallback(async () => { | ||||||
|     if (!audioPlayer) { |     if (!audioPlayer) { | ||||||
|       const { sound } = await Audio.Sound.createAsync( |       const { sound } = await Audio.Sound.createAsync( | ||||||
|         { uri: audio.url }, |         connectMedia({ uri: audio.url }) as { uri: string }, | ||||||
|         {}, |         {}, | ||||||
|         // @ts-ignore |         // @ts-ignore | ||||||
|         props => setAudioPosition(props.positionMillis) |         props => setAudioPosition(props.positionMillis) | ||||||
|   | |||||||
| @@ -1,5 +1,6 @@ | |||||||
| import Button from '@components/Button' | import Button from '@components/Button' | ||||||
| import { useAccessibility } from '@utils/accessibility/AccessibilityManager' | import { useAccessibility } from '@utils/accessibility/AccessibilityManager' | ||||||
|  | import { connectMedia } from '@utils/api/helpers/connect' | ||||||
| import { useAccountStorage, useGlobalStorage } from '@utils/storage/actions' | import { useAccountStorage, useGlobalStorage } from '@utils/storage/actions' | ||||||
| import { StyleConstants } from '@utils/styles/constants' | import { StyleConstants } from '@utils/styles/constants' | ||||||
| import { ResizeMode, Video, VideoFullscreenUpdate } from 'expo-av' | import { ResizeMode, Video, VideoFullscreenUpdate } from 'expo-av' | ||||||
| @@ -41,7 +42,7 @@ const AttachmentVideo: React.FC<Props> = ({ | |||||||
|   const playOnPress = async () => { |   const playOnPress = async () => { | ||||||
|     setVideoLoading(true) |     setVideoLoading(true) | ||||||
|     if (!videoLoaded) { |     if (!videoLoaded) { | ||||||
|       await videoPlayer.current?.loadAsync({ uri: video.url }) |       await videoPlayer.current?.loadAsync(connectMedia({ uri: video.url }) as { uri: string }) | ||||||
|     } |     } | ||||||
|     setVideoLoading(false) |     setVideoLoading(false) | ||||||
|  |  | ||||||
| @@ -71,10 +72,10 @@ const AttachmentVideo: React.FC<Props> = ({ | |||||||
|               shouldPlay: reduceMotionEnabled || !shouldAutoplayGifv ? false : true, |               shouldPlay: reduceMotionEnabled || !shouldAutoplayGifv ? false : true, | ||||||
|               isMuted: true, |               isMuted: true, | ||||||
|               isLooping: 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 } |               posterStyle: { resizeMode: ResizeMode.COVER } | ||||||
|             })} |             })} | ||||||
|         useNativeControls={false} |         useNativeControls={false} | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ import RelativeTime from '@components/RelativeTime' | |||||||
| import CustomText from '@components/Text' | import CustomText from '@components/Text' | ||||||
| import { BlurView } from '@react-native-community/blur' | import { BlurView } from '@react-native-community/blur' | ||||||
| import { useAccessibility } from '@utils/accessibility/AccessibilityManager' | 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 { RootStackScreenProps } from '@utils/navigation/navigators' | ||||||
| import { useAnnouncementMutation, useAnnouncementQuery } from '@utils/queryHooks/announcement' | import { useAnnouncementMutation, useAnnouncementQuery } from '@utils/queryHooks/announcement' | ||||||
| import { StyleConstants } from '@utils/styles/constants' | import { StyleConstants } from '@utils/styles/constants' | ||||||
| @@ -140,7 +140,7 @@ const ScreenAnnouncements: React.FC<RootStackScreenProps<'Screen-Announcements'> | |||||||
|               > |               > | ||||||
|                 {reaction.url ? ( |                 {reaction.url ? ( | ||||||
|                   <FastImage |                   <FastImage | ||||||
|                     source={connectImage({ |                     source={connectMedia({ | ||||||
|                       uri: reduceMotionEnabled ? reaction.static_url : reaction.url |                       uri: reduceMotionEnabled ? reaction.static_url : reaction.url | ||||||
|                     })} |                     })} | ||||||
|                     style={{ |                     style={{ | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ import Icon from '@components/Icon' | |||||||
| import { SwipeToActions } from '@components/SwipeToActions' | import { SwipeToActions } from '@components/SwipeToActions' | ||||||
| import CustomText from '@components/Text' | import CustomText from '@components/Text' | ||||||
| import HeaderSharedCreated from '@components/Timeline/Shared/HeaderShared/Created' | import HeaderSharedCreated from '@components/Timeline/Shared/HeaderShared/Created' | ||||||
| import { connectImage } from '@utils/api/helpers/connect' | import { connectMedia } from '@utils/api/helpers/connect' | ||||||
| import apiInstance from '@utils/api/instance' | import apiInstance from '@utils/api/instance' | ||||||
| import { ScreenComposeStackScreenProps } from '@utils/navigation/navigators' | import { ScreenComposeStackScreenProps } from '@utils/navigation/navigators' | ||||||
| import { getAccountStorage, setAccountStorage, useAccountStorage } from '@utils/storage/actions' | import { getAccountStorage, setAccountStorage, useAccountStorage } from '@utils/storage/actions' | ||||||
| @@ -158,7 +158,7 @@ const ComposeDraftsList: React.FC<ScreenComposeStackScreenProps<'Screen-Compose- | |||||||
|                         source={ |                         source={ | ||||||
|                           attachment.local?.thumbnail |                           attachment.local?.thumbnail | ||||||
|                             ? { uri: attachment.local?.thumbnail } |                             ? { uri: attachment.local?.thumbnail } | ||||||
|                             : connectImage({ uri: attachment.remote?.preview_url }) |                             : connectMedia({ uri: attachment.remote?.preview_url }) | ||||||
|                         } |                         } | ||||||
|                       /> |                       /> | ||||||
|                     ))} |                     ))} | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ import { MAX_MEDIA_ATTACHMENTS } from '@components/mediaSelector' | |||||||
| import CustomText from '@components/Text' | import CustomText from '@components/Text' | ||||||
| import { useActionSheet } from '@expo/react-native-action-sheet' | import { useActionSheet } from '@expo/react-native-action-sheet' | ||||||
| import { useNavigation } from '@react-navigation/native' | 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 { featureCheck } from '@utils/helpers/featureCheck' | ||||||
| import { StyleConstants } from '@utils/styles/constants' | import { StyleConstants } from '@utils/styles/constants' | ||||||
| import layoutAnimation from '@utils/styles/layoutAnimation' | import layoutAnimation from '@utils/styles/layoutAnimation' | ||||||
| @@ -109,7 +109,7 @@ const ComposeAttachments: React.FC<Props> = ({ accessibleRefAttachments }) => { | |||||||
|           source={ |           source={ | ||||||
|             item.local?.thumbnail |             item.local?.thumbnail | ||||||
|               ? { uri: item.local?.thumbnail } |               ? { uri: item.local?.thumbnail } | ||||||
|               : connectImage({ uri: item.remote?.preview_url }) |               : connectMedia({ uri: item.remote?.preview_url }) | ||||||
|           } |           } | ||||||
|         /> |         /> | ||||||
|         {item.remote?.meta?.original?.duration ? ( |         {item.remote?.meta?.original?.duration ? ( | ||||||
|   | |||||||
| @@ -74,14 +74,14 @@ const list = [ | |||||||
|   'vq2rz02ayf' |   'vq2rz02ayf' | ||||||
| ] | ] | ||||||
|  |  | ||||||
| export const CONNECT_DOMAIN = () => | export const CONNECT_DOMAIN = (index?: number) => | ||||||
|   mapEnvironment({ |   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', |     candidate: 'connect-candidate.tooot.app', | ||||||
|     development: 'connect-development.tooot.app' |     development: 'connect-development.tooot.app' | ||||||
|   }) |   }) | ||||||
|  |  | ||||||
| export const connectImage = ({ | export const connectMedia = ({ | ||||||
|   uri |   uri | ||||||
| }: { | }: { | ||||||
|   uri?: string |   uri?: string | ||||||
| @@ -89,7 +89,19 @@ export const connectImage = ({ | |||||||
|   if (GLOBAL.connect) { |   if (GLOBAL.connect) { | ||||||
|     if (uri) { |     if (uri) { | ||||||
|       const host = parse(uri).host |       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 { |     } else { | ||||||
|       return { uri } |       return { uri } | ||||||
|     } |     } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user