diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 5e6575f2..00000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "javascript.inlayHints.functionLikeReturnTypes.enabled": false -} \ No newline at end of file diff --git a/demo/screenshots/Component-Instance.png b/demo/screenshots/Component-Instance.png new file mode 100644 index 00000000..8b31c0a9 Binary files /dev/null and b/demo/screenshots/Component-Instance.png differ diff --git a/demo/screenshots/Component-MediaSelector.png b/demo/screenshots/Component-MediaSelector.png new file mode 100644 index 00000000..c47692d8 Binary files /dev/null and b/demo/screenshots/Component-MediaSelector.png differ diff --git a/demo/screenshots/Logout-Confirmation.png b/demo/screenshots/Logout-Confirmation.png new file mode 100644 index 00000000..330d6b04 Binary files /dev/null and b/demo/screenshots/Logout-Confirmation.png differ diff --git a/demo/screenshots/Screen-AccountSelection.png b/demo/screenshots/Screen-AccountSelection.png new file mode 100644 index 00000000..14509119 Binary files /dev/null and b/demo/screenshots/Screen-AccountSelection.png differ diff --git a/demo/screenshots/Tab-Local.png b/demo/screenshots/Tab-Local.png new file mode 100644 index 00000000..2ec6d60a Binary files /dev/null and b/demo/screenshots/Tab-Local.png differ diff --git a/demo/screenshots/Tab-Me-List-Edit.png b/demo/screenshots/Tab-Me-List-Edit.png new file mode 100644 index 00000000..02b20608 Binary files /dev/null and b/demo/screenshots/Tab-Me-List-Edit.png differ diff --git a/demo/screenshots/Tab-Me-ListAccounts_Empty.png b/demo/screenshots/Tab-Me-ListAccounts_Empty.png new file mode 100644 index 00000000..024c9e44 Binary files /dev/null and b/demo/screenshots/Tab-Me-ListAccounts_Empty.png differ diff --git a/demo/screenshots/Tab-Me-ListAccounts_Error.png b/demo/screenshots/Tab-Me-ListAccounts_Error.png new file mode 100644 index 00000000..b668b6a0 Binary files /dev/null and b/demo/screenshots/Tab-Me-ListAccounts_Error.png differ diff --git a/demo/screenshots/Tab-Me-List_Delete.png b/demo/screenshots/Tab-Me-List_Delete.png new file mode 100644 index 00000000..324421fd Binary files /dev/null and b/demo/screenshots/Tab-Me-List_Delete.png differ diff --git a/demo/screenshots/Tab-Me-List_Menu.png b/demo/screenshots/Tab-Me-List_Menu.png new file mode 100644 index 00000000..7c4706b0 Binary files /dev/null and b/demo/screenshots/Tab-Me-List_Menu.png differ diff --git a/demo/screenshots/Tab-Me-Profile-Fields.png b/demo/screenshots/Tab-Me-Profile-Fields.png new file mode 100644 index 00000000..d4bf5060 Binary files /dev/null and b/demo/screenshots/Tab-Me-Profile-Fields.png differ diff --git a/demo/screenshots/Tab-Me-Profile.png b/demo/screenshots/Tab-Me-Profile.png new file mode 100644 index 00000000..9690c9d8 Binary files /dev/null and b/demo/screenshots/Tab-Me-Profile.png differ diff --git a/demo/screenshots/Tab-Me-Profile_Feedback.png b/demo/screenshots/Tab-Me-Profile_Feedback.png new file mode 100644 index 00000000..1d965ac4 Binary files /dev/null and b/demo/screenshots/Tab-Me-Profile_Feedback.png differ diff --git a/demo/screenshots/Tab-Me-Push_Bottom.png b/demo/screenshots/Tab-Me-Push_Bottom.png new file mode 100644 index 00000000..de8166d3 Binary files /dev/null and b/demo/screenshots/Tab-Me-Push_Bottom.png differ diff --git a/demo/screenshots/Tab-Me-Push_MissingServerKey.png b/demo/screenshots/Tab-Me-Push_MissingServerKey.png new file mode 100644 index 00000000..60cea2ff Binary files /dev/null and b/demo/screenshots/Tab-Me-Push_MissingServerKey.png differ diff --git a/demo/screenshots/Tab-Me-Push_NotAvailable.png b/demo/screenshots/Tab-Me-Push_NotAvailable.png new file mode 100644 index 00000000..72a8e2f9 Binary files /dev/null and b/demo/screenshots/Tab-Me-Push_NotAvailable.png differ diff --git a/demo/screenshots/Tab-Me-Push_ReEnable.png b/demo/screenshots/Tab-Me-Push_ReEnable.png new file mode 100644 index 00000000..b3b69953 Binary files /dev/null and b/demo/screenshots/Tab-Me-Push_ReEnable.png differ diff --git a/demo/screenshots/Tab-Me-Push_Top.png b/demo/screenshots/Tab-Me-Push_Top.png new file mode 100644 index 00000000..a62fb995 Binary files /dev/null and b/demo/screenshots/Tab-Me-Push_Top.png differ diff --git a/demo/screenshots/Tab-Me-Settings-Appearance.png b/demo/screenshots/Tab-Me-Settings-Appearance.png new file mode 100644 index 00000000..c6723283 Binary files /dev/null and b/demo/screenshots/Tab-Me-Settings-Appearance.png differ diff --git a/demo/screenshots/Tab-Me-Settings-DarkTheme.png b/demo/screenshots/Tab-Me-Settings-DarkTheme.png new file mode 100644 index 00000000..e0f968f9 Binary files /dev/null and b/demo/screenshots/Tab-Me-Settings-DarkTheme.png differ diff --git a/demo/screenshots/Tab-Me-Settings-FontSize.png b/demo/screenshots/Tab-Me-Settings-FontSize.png new file mode 100644 index 00000000..af70d0c9 Binary files /dev/null and b/demo/screenshots/Tab-Me-Settings-FontSize.png differ diff --git a/demo/screenshots/Tab-Me-Settings-OpeningLink.png b/demo/screenshots/Tab-Me-Settings-OpeningLink.png new file mode 100644 index 00000000..d820a1be Binary files /dev/null and b/demo/screenshots/Tab-Me-Settings-OpeningLink.png differ diff --git a/demo/screenshots/Tab-Me-Settings.png b/demo/screenshots/Tab-Me-Settings.png new file mode 100644 index 00000000..efdd60fc Binary files /dev/null and b/demo/screenshots/Tab-Me-Settings.png differ diff --git a/demo/screenshots/Tab-Me-Switch.png b/demo/screenshots/Tab-Me-Switch.png new file mode 100644 index 00000000..0b1129e9 Binary files /dev/null and b/demo/screenshots/Tab-Me-Switch.png differ diff --git a/demo/screenshots/Tab-Me.png b/demo/screenshots/Tab-Me.png new file mode 100644 index 00000000..a601e90c Binary files /dev/null and b/demo/screenshots/Tab-Me.png differ diff --git a/demo/screenshots/Tab-Notifications-Filter.png b/demo/screenshots/Tab-Notifications-Filter.png new file mode 100644 index 00000000..e2f5daaf Binary files /dev/null and b/demo/screenshots/Tab-Notifications-Filter.png differ diff --git a/demo/screenshots/Tab-Notifications.png b/demo/screenshots/Tab-Notifications.png new file mode 100644 index 00000000..53707170 Binary files /dev/null and b/demo/screenshots/Tab-Notifications.png differ diff --git a/demo/screenshots/Tab-Public.png b/demo/screenshots/Tab-Public.png new file mode 100644 index 00000000..e6e3a0f0 Binary files /dev/null and b/demo/screenshots/Tab-Public.png differ diff --git a/demo/screenshots/Tab-Shared-Account.png b/demo/screenshots/Tab-Shared-Account.png new file mode 100644 index 00000000..a39301bf Binary files /dev/null and b/demo/screenshots/Tab-Shared-Account.png differ diff --git a/demo/screenshots/Tab-Shared-AccountInLists.png b/demo/screenshots/Tab-Shared-AccountInLists.png new file mode 100644 index 00000000..623915f6 Binary files /dev/null and b/demo/screenshots/Tab-Shared-AccountInLists.png differ diff --git a/demo/screenshots/Tab-Shared-Attachments.png b/demo/screenshots/Tab-Shared-Attachments.png new file mode 100644 index 00000000..cbc46c80 Binary files /dev/null and b/demo/screenshots/Tab-Shared-Attachments.png differ diff --git a/demo/screenshots/Tab-Shared-Hashtag.png b/demo/screenshots/Tab-Shared-Hashtag.png new file mode 100644 index 00000000..642cac97 Binary files /dev/null and b/demo/screenshots/Tab-Shared-Hashtag.png differ diff --git a/demo/screenshots/Tab-Shared-History.png b/demo/screenshots/Tab-Shared-History.png new file mode 100644 index 00000000..ef9a5ab2 Binary files /dev/null and b/demo/screenshots/Tab-Shared-History.png differ diff --git a/demo/screenshots/Tab-Shared-Search.png b/demo/screenshots/Tab-Shared-Search.png new file mode 100644 index 00000000..9fd18b89 Binary files /dev/null and b/demo/screenshots/Tab-Shared-Search.png differ diff --git a/demo/screenshots/Tab-Shared-Toot.png b/demo/screenshots/Tab-Shared-Toot.png new file mode 100644 index 00000000..148478ea Binary files /dev/null and b/demo/screenshots/Tab-Shared-Toot.png differ diff --git a/demo/statuses.ts b/demo/statuses.ts index 63d5e47a..1da8785c 100644 --- a/demo/statuses.ts +++ b/demo/statuses.ts @@ -1,6 +1,7 @@ -const demoStatuses = [ +const demoStatus: Mastodon.Status[] = [ { id: '1', + uri: 'https://example.com', created_at: new Date().toISOString(), sensitive: false, visibility: 'public', @@ -13,7 +14,6 @@ const demoStatuses = [ bookmarked: false, content: '

Would you like to try out this simple, beautiful and open-source mobile app for Mastodon? 😊

', - reblog: null, application: { name: 'tooot', website: 'https://tooot.app' @@ -23,19 +23,31 @@ const demoStatuses = [ username: 'tooot📱', acct: 'tooot@xmflsct.com', display_name: 'tooot📱', - avatar_static: - 'https://avatars.githubusercontent.com/u/77554750?s=200&v=4' + avatar: 'https://avatars.githubusercontent.com/u/77554750?s=200&v=4', + avatar_static: 'https://avatars.githubusercontent.com/u/77554750?s=200&v=4', + url: '', + header: '', + header_static: '', + locked: false, + discoverable: false, + created_at: new Date().toISOString(), + last_status_at: new Date().toISOString(), + statuses_count: 1, + followers_count: 1, + following_count: 1, + fields: [], + bot: false }, media_attachments: [], poll: { id: '1', - expires_at: new Date().setDate(new Date().getDate() + 5), + expires_at: new Date().setDate(new Date().getDate() + 5).toString(), expired: false, multiple: false, votes_count: 10, - voters_count: null, + voters_count: 2, voted: false, - own_votes: null, + own_votes: undefined, options: [ { title: 'I would love to!', @@ -48,11 +60,15 @@ const demoStatuses = [ ], emojis: [] }, - mentions: [] + mentions: [], + tags: [], + emojis: [], + pinned: false }, { id: '2', - created_at: new Date().setMinutes(new Date().getMinutes() - 2), + uri: 'https://example.com', + created_at: new Date().setMinutes(new Date().getMinutes() - 2).toString(), sensitive: false, spoiler_text: '', visibility: 'public', @@ -65,18 +81,26 @@ const demoStatuses = [ bookmarked: false, content: '

Mastodon is a free and open-source self-hosted social networking service. It allows anyone to host their own server node in the network, and its various separately operated user bases are federated across many different servers. These nodes are referred to as "instances" by Mastodon users.

', - reblog: null, - application: { - name: 'Web', - website: null - }, + application: { name: 'Web' }, account: { id: '1000', username: 'Mastodon', acct: 'mastodon', display_name: 'Mastodon', - avatar_static: - 'https://mastodon.social/apple-touch-icon.png' + avatar: 'https://mastodon.social/apple-touch-icon.png', + avatar_static: 'https://mastodon.social/apple-touch-icon.png', + url: '', + header: '', + header_static: '', + locked: false, + discoverable: false, + created_at: new Date().toISOString(), + last_status_at: new Date().toISOString(), + statuses_count: 1, + followers_count: 1, + following_count: 1, + fields: [], + bot: false }, media_attachments: [], card: { @@ -85,18 +109,31 @@ const demoStatuses = [ description: 'Mastodon is an open source decentralized social network - by the people for the people. Join the federation and take back control of your social media!', type: 'link', - image: - 'https://mastodon.social/apple-touch-icon.png' + image: 'https://mastodon.social/apple-touch-icon.png', + author_name: '', + author_url: '', + provider_name: '', + provider_url: '', + html: '

', + width: 100, + height: 100, + embed_url: 'https://example.com', + blurhash: '' }, - mentions: [] + mentions: [], + tags: [], + emojis: [], + pinned: false }, { id: '3', - created_at: '2021-01-24T09:50:00.901Z', + uri: '', + created_at: new Date().setHours(new Date().getHours() - 1).toString(), + sensitive: false, spoiler_text: '', visibility: 'public', replies_count: 2, - reblogs_count: null, + reblogs_count: 1, favourites_count: 3, favourited: false, reblogged: false, @@ -104,24 +141,38 @@ const demoStatuses = [ bookmarked: true, content: '

These servers are connected as a federated social network, allowing users from different servers to interact with each other seamlessly. Once a Mastodon server knows another Mastodon server, it "federates" with the other Mastodon server. Mastodon is a part of the wider Fediverse, allowing its users to also interact with users on different open platforms that support the same protocol, such as PeerTube and Friendica.

', - reblog: null, - application: { - name: 'Web', - website: null - }, + application: { name: 'Web' }, account: { id: '1001', username: 'Fediverse', acct: 'fediverse', display_name: 'Fediverse', + avatar: + 'https://e7.pngegg.com/pngimages/667/514/png-clipart-mastodon-fediverse-social-media-free-software-logo-social-media-blue-text.png', avatar_static: - 'https://e7.pngegg.com/pngimages/667/514/png-clipart-mastodon-fediverse-social-media-free-software-logo-social-media-blue-text.png' + 'https://e7.pngegg.com/pngimages/667/514/png-clipart-mastodon-fediverse-social-media-free-software-logo-social-media-blue-text.png', + url: '', + header: '', + header_static: '', + locked: false, + discoverable: false, + created_at: new Date().toISOString(), + last_status_at: new Date().toISOString(), + statuses_count: 1, + followers_count: 1, + following_count: 1, + fields: [], + bot: false }, media_attachments: [], - mentions: [] + mentions: [], + tags: [], + emojis: [], + pinned: false }, { id: '4', + uri: 'https://example.com', created_at: '2021-01-24T08:50:00.901Z', sensitive: false, visibility: 'public', @@ -134,7 +185,6 @@ const demoStatuses = [ bookmarked: false, content: '

tooot is an open source, simple mobile client for Mastodon. Focusing on your connections while being able to explore the Fediverse.

', - reblog: null, application: { name: 'tooot', website: 'https://tooot.app' @@ -144,14 +194,30 @@ const demoStatuses = [ username: 'tooot📱', acct: 'tooot@xmflsct.com', display_name: 'tooot📱', - avatar_static: - 'https://avatars.githubusercontent.com/u/77554750?s=200&v=4' + avatar: 'https://avatars.githubusercontent.com/u/77554750?s=200&v=4', + avatar_static: 'https://avatars.githubusercontent.com/u/77554750?s=200&v=4', + url: '', + header: '', + header_static: '', + locked: false, + discoverable: false, + created_at: new Date().toISOString(), + last_status_at: new Date().toISOString(), + statuses_count: 1, + followers_count: 1, + following_count: 1, + fields: [], + bot: false }, media_attachments: [], - mentions: [] + mentions: [], + tags: [], + emojis: [], + pinned: false }, { id: '5', + uri: 'https://example.com', created_at: '2021-01-24T07:50:00.901Z', sensitive: false, visibility: 'public', @@ -164,7 +230,6 @@ const demoStatuses = [ bookmarked: false, content: '

- tooot supports multiple accounts
- tooot supports browsing external instance
- tooot aims to support multiple languages

', - reblog: null, application: { name: 'tooot', website: 'https://tooot.app' @@ -174,12 +239,27 @@ const demoStatuses = [ username: 'tooot📱', acct: 'tooot@xmflsct.com', display_name: 'tooot📱', - avatar_static: - 'https://avatars.githubusercontent.com/u/77554750?s=200&v=4' + avatar: 'https://avatars.githubusercontent.com/u/77554750?s=200&v=4', + avatar_static: 'https://avatars.githubusercontent.com/u/77554750?s=200&v=4', + url: '', + header: '', + header_static: '', + locked: false, + discoverable: false, + created_at: new Date().toISOString(), + last_status_at: new Date().toISOString(), + statuses_count: 1, + followers_count: 1, + following_count: 1, + fields: [], + bot: false }, media_attachments: [], - mentions: [] + mentions: [], + tags: [], + emojis: [], + pinned: false } ] -export default demoStatuses +export default demoStatus diff --git a/src/@types/mastodon.d.ts b/src/@types/mastodon.d.ts index 8b58589b..7fec5552 100644 --- a/src/@types/mastodon.d.ts +++ b/src/@types/mastodon.d.ts @@ -333,24 +333,34 @@ declare namespace Mastodon { url: string } - type Notification = { - // Base - id: string - type: - | 'follow' - | 'follow_request' - | 'mention' - | 'reblog' - | 'favourite' - | 'poll' - | 'status' - | 'update' - created_at: string - account: Account - - // Others - status?: Status - } + type Notification = + | { + // Base + id: string + type: 'favourite' | 'mention' | 'poll' | 'reblog' | 'status' | 'update' + created_at: string + account: Account + status: Status + report: undefined + } + | { + // Base + id: string + type: 'follow' | 'follow_request' | 'admin.sign_up' + created_at: string + account: Account + status: undefined + report: undefined + } + | { + // Base + id: string + type: 'admin.report' + created_at: string + account: Account + status: undefined + report: Report + } type Poll = { // Base @@ -406,6 +416,19 @@ declare namespace Mastodon { note: string } + type Report = { + id: string + action_taken: boolean + action_taken_at?: string + category: 'spam' | 'violation' | 'other' + comment: string + forwarded: boolean + created_at: string + status_ids?: string[] + rule_ids?: string[] + target_account: Account + } + type Results = { accounts?: Account[] statuses?: Status[] diff --git a/src/components/Menu/Row.tsx b/src/components/Menu/Row.tsx index 5100745d..b3b8ca6e 100644 --- a/src/components/Menu/Row.tsx +++ b/src/components/Menu/Row.tsx @@ -86,9 +86,10 @@ const MenuRow: React.FC = ({ > {iconFront && ( diff --git a/src/components/Timeline/Notifications.tsx b/src/components/Timeline/Notifications.tsx index 4d7b69a6..7eff27d1 100644 --- a/src/components/Timeline/Notifications.tsx +++ b/src/components/Timeline/Notifications.tsx @@ -28,18 +28,18 @@ import TimelineHeaderAndroid from './Shared/HeaderAndroid' export interface Props { notification: Mastodon.Notification queryKey: QueryKeyTimeline - highlighted?: boolean } -const TimelineNotifications: React.FC = ({ - notification, - queryKey, - highlighted = false -}) => { +const TimelineNotifications: React.FC = ({ notification, queryKey }) => { const instanceAccount = useSelector(getInstanceAccount, () => true) const status = notification.status?.reblog ? notification.status.reblog : notification.status - const account = notification.status ? notification.status.account : notification.account + const account = + notification.type === 'admin.report' + ? notification.report.target_account + : notification.status + ? notification.status.account + : notification.account const ownAccount = notification.account?.id === instanceAccount?.id const [spoilerExpanded, setSpoilerExpanded] = useState( instanceAccount.preferences['reading:expand:spoilers'] || false @@ -91,7 +91,8 @@ const TimelineNotifications: React.FC = ({ notification.type === 'follow' || notification.type === 'follow_request' || notification.type === 'mention' || - notification.type === 'status' + notification.type === 'status' || + notification.type === 'admin.sign_up' ? 1 : 0.5 }} @@ -102,12 +103,7 @@ const TimelineNotifications: React.FC = ({ {notification.status ? ( - + = ({ status, ownAccount, spoilerHidden, - copiableContent, - highlighted + copiableContent }} > diff --git a/src/components/Timeline/Shared/Actioned.tsx b/src/components/Timeline/Shared/Actioned.tsx index 8d3dcb26..8e73de69 100644 --- a/src/components/Timeline/Shared/Actioned.tsx +++ b/src/components/Timeline/Shared/Actioned.tsx @@ -28,7 +28,12 @@ const TimelineActioned: React.FC = ({ action, isNotification, ...rest }) const iconColor = colors.primaryDefault const content = (content: string) => ( - + ) const onPress = () => navigation.push('Tab-Shared-Account', { account }) @@ -145,6 +150,30 @@ const TimelineActioned: React.FC = ({ action, isNotification, ...rest }) {content(t('shared.actioned.update'))} ) + case 'admin.sign_up': + return ( + <> + + {content(t('shared.actioned.admin.sign_up', { name: `@${account.acct}` }))} + + ) + case 'admin.report': + return ( + <> + + {content(t('shared.actioned.admin.report', { name: `@${account.acct}` }))} + + ) default: return <> } diff --git a/src/components/Timeline/Shared/Attachment.tsx b/src/components/Timeline/Shared/Attachment.tsx index 4ff5ab84..174894cc 100644 --- a/src/components/Timeline/Shared/Attachment.tsx +++ b/src/components/Timeline/Shared/Attachment.tsx @@ -45,6 +45,21 @@ const TimelineAttachment = () => { } const [sensitiveShown, setSensitiveShown] = useState(defaultSensitive()) + // const testHorizontal: Mastodon.Attachment[] = Array(2).fill({ + // id: Math.random().toString(), + // type: 'image', + // url: 'https://images.unsplash.com/photo-1670870764013-f0e36aa376b0?w=1000', + // preview_url: 'https://images.unsplash.com/photo-1543968996-ee822b8176ba?w=300', + // meta: { original: { width: 1000, height: 625 } } + // }) + // const testVertical: Mastodon.Attachment[] = Array(7).fill({ + // id: Math.random().toString(), + // type: 'image', + // url: 'https://images.unsplash.com/photo-1670842587871-326b95acbc8c?w=1000', + // preview_url: 'https://images.unsplash.com/photo-1670833288990-64b2f4ef7290?w=300', + // meta: { original: { width: 987, height: 1480 } } + // }) + // @ts-ignore const imageUrls: RootStackParamList['Screen-ImagesViewer']['imageUrls'] = status.media_attachments .map(attachment => { diff --git a/src/components/Timeline/Shared/Attachment/Audio.tsx b/src/components/Timeline/Shared/Attachment/Audio.tsx index 83ec4f82..9e4cc767 100644 --- a/src/components/Timeline/Shared/Attachment/Audio.tsx +++ b/src/components/Timeline/Shared/Attachment/Audio.tsx @@ -8,7 +8,7 @@ import React, { useCallback, useEffect, useRef, useState } from 'react' import { AppState, AppStateStatus, StyleSheet, View } from 'react-native' import { Blurhash } from 'react-native-blurhash' import AttachmentAltText from './AltText' -import attachmentAspectRatio from './aspectRatio' +import { aspectRatio } from './dimensions' export interface Props { total: number @@ -64,7 +64,7 @@ const AttachmentAudio: React.FC = ({ total, index, sensitiveShown, audio styles.base, { backgroundColor: colors.disabled, - aspectRatio: attachmentAspectRatio({ total, index }) + aspectRatio: aspectRatio({ total, index, ...audio.meta?.original }) } ]} > diff --git a/src/components/Timeline/Shared/Attachment/Image.tsx b/src/components/Timeline/Shared/Attachment/Image.tsx index 814d41b2..1069a36a 100644 --- a/src/components/Timeline/Shared/Attachment/Image.tsx +++ b/src/components/Timeline/Shared/Attachment/Image.tsx @@ -1,9 +1,10 @@ import GracefullyImage from '@components/GracefullyImage' import { StyleConstants } from '@utils/styles/constants' +import { useTheme } from '@utils/styles/ThemeManager' import React from 'react' import { View } from 'react-native' import AttachmentAltText from './AltText' -import attachmentAspectRatio from './aspectRatio' +import { aspectRatio } from './dimensions' export interface Props { total: number @@ -20,6 +21,8 @@ const AttachmentImage = ({ image, navigateToImagesViewer }: Props) => { + const { colors } = useTheme() + return ( - ) diff --git a/src/components/Timeline/Shared/Attachment/Unsupported.tsx b/src/components/Timeline/Shared/Attachment/Unsupported.tsx index f1c7f347..7fa9d89d 100644 --- a/src/components/Timeline/Shared/Attachment/Unsupported.tsx +++ b/src/components/Timeline/Shared/Attachment/Unsupported.tsx @@ -8,7 +8,7 @@ import { useTranslation } from 'react-i18next' import { View } from 'react-native' import { Blurhash } from 'react-native-blurhash' import AttachmentAltText from './AltText' -import attachmentAspectRatio from './aspectRatio' +import { aspectRatio } from './dimensions' export interface Props { total: number @@ -29,7 +29,7 @@ const AttachmentUnsupported: React.FC = ({ total, index, sensitiveShown, padding: StyleConstants.Spacing.XS / 2, justifyContent: 'center', alignItems: 'center', - aspectRatio: attachmentAspectRatio({ total, index }) + aspectRatio: aspectRatio({ total, index, ...attachment.meta?.original }) }} > {attachment.blurhash ? ( diff --git a/src/components/Timeline/Shared/Attachment/Video.tsx b/src/components/Timeline/Shared/Attachment/Video.tsx index b9ce9d98..78e53ac4 100644 --- a/src/components/Timeline/Shared/Attachment/Video.tsx +++ b/src/components/Timeline/Shared/Attachment/Video.tsx @@ -4,10 +4,10 @@ import { ResizeMode, Video, VideoFullscreenUpdate } from 'expo-av' import React, { useRef, useState } from 'react' import { Pressable, View } from 'react-native' import { Blurhash } from 'react-native-blurhash' -import attachmentAspectRatio from './aspectRatio' import AttachmentAltText from './AltText' import { Platform } from 'expo-modules-core' import { useAccessibility } from '@utils/accessibility/AccessibilityManager' +import { aspectRatio } from './dimensions' export interface Props { total: number @@ -49,7 +49,7 @@ const AttachmentVideo: React.FC = ({ flex: 1, flexBasis: '50%', padding: StyleConstants.Spacing.XS / 2, - aspectRatio: attachmentAspectRatio({ total, index }) + aspectRatio: aspectRatio({ total, index, ...video.meta?.original }) }} >