Use the same subdomain for connect media

Preventing count as cache miss
This commit is contained in:
xmflsct 2023-01-31 14:26:43 +01:00
parent 602e010cfc
commit 624c1f172c
10 changed files with 36 additions and 22 deletions

View File

@ -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",

View File

@ -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>

View File

@ -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)

View File

@ -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,

View File

@ -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)

View File

@ -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}

View File

@ -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={{

View File

@ -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 })
} }
/> />
))} ))}

View File

@ -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 ? (

View File

@ -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 }
} }