diff --git a/src/components/Timeline/Shared/Actioned.tsx b/src/components/Timeline/Shared/Actioned.tsx
index 122b1fae..47b59a9f 100644
--- a/src/components/Timeline/Shared/Actioned.tsx
+++ b/src/components/Timeline/Shared/Actioned.tsx
@@ -144,19 +144,23 @@ const TimelineActioned = React.memo(
}
}, [])
- return
+ return (
+
+ )
},
() => true
)
const styles = StyleSheet.create({
- actioned: {
- flexDirection: 'row',
- alignItems: 'center',
- marginBottom: StyleConstants.Spacing.S,
- paddingLeft: StyleConstants.Avatar.M - StyleConstants.Font.Size.S,
- paddingRight: StyleConstants.Spacing.Global.PagePadding
- },
icon: {
marginRight: StyleConstants.Spacing.S
}
diff --git a/src/components/Timeline/Shared/Actions.tsx b/src/components/Timeline/Shared/Actions.tsx
index b36b691a..336a5217 100644
--- a/src/components/Timeline/Shared/Actions.tsx
+++ b/src/components/Timeline/Shared/Actions.tsx
@@ -2,6 +2,8 @@ import analytics from '@components/analytics'
import Icon from '@components/Icon'
import { displayMessage } from '@components/Message'
import { useNavigation } from '@react-navigation/native'
+import { StackNavigationProp } from '@react-navigation/stack'
+import { RootStackParamList } from '@utils/navigation/navigators'
import {
MutationVarsTimelineUpdateStatusProperty,
QueryKeyTimeline,
@@ -31,7 +33,7 @@ const TimelineActions: React.FC = ({
accts,
reblog
}) => {
- const navigation = useNavigation()
+ const navigation = useNavigation>()
const { t } = useTranslation('componentTimeline')
const { colors, theme } = useTheme()
const iconColor = colors.secondary
diff --git a/src/components/Timeline/Shared/Avatar.tsx b/src/components/Timeline/Shared/Avatar.tsx
index c4bd9701..739e622f 100644
--- a/src/components/Timeline/Shared/Avatar.tsx
+++ b/src/components/Timeline/Shared/Avatar.tsx
@@ -50,8 +50,7 @@ const TimelineAvatar = React.memo(
}}
/>
)
- },
- () => true
+ }
)
export default TimelineAvatar
diff --git a/src/components/Timeline/Shared/Card.tsx b/src/components/Timeline/Shared/Card.tsx
index a2c9dedc..f26a6d8c 100644
--- a/src/components/Timeline/Shared/Card.tsx
+++ b/src/components/Timeline/Shared/Card.tsx
@@ -8,65 +8,62 @@ import React from 'react'
import { Pressable, StyleSheet, Text, View } from 'react-native'
export interface Props {
- card: Mastodon.Card
+ card: Pick<
+ Mastodon.Card,
+ 'url' | 'image' | 'blurhash' | 'title' | 'description'
+ >
}
-const TimelineCard = React.memo(
- ({ card }: Props) => {
- const { colors } = useTheme()
- const navigation = useNavigation()
+const TimelineCard = React.memo(({ card }: Props) => {
+ const { colors } = useTheme()
+ const navigation = useNavigation()
- return (
- {
- analytics('timeline_shared_card_press')
- await openLink(card.url, navigation)
- }}
- testID='base'
- >
- {card.image ? (
-
- ) : null}
-
-
- {card.title}
-
- {card.description ? (
-
- {card.description}
-
- ) : null}
+ return (
+ {
+ analytics('timeline_shared_card_press')
+ await openLink(card.url, navigation)
+ }}
+ testID='base'
+ >
+ {card.image ? (
+
+ ) : null}
+
+
+ {card.title}
+
+ {card.description ? (
- {card.url}
+ {card.description}
-
-
- )
- },
- () => true
-)
+ ) : null}
+
+ {card.url}
+
+
+
+ )
+})
const styles = StyleSheet.create({
card: {
diff --git a/src/components/Timeline/Shared/Content.tsx b/src/components/Timeline/Shared/Content.tsx
index 31c1ccbb..6648d1c2 100644
--- a/src/components/Timeline/Shared/Content.tsx
+++ b/src/components/Timeline/Shared/Content.tsx
@@ -5,10 +5,10 @@ import { useTranslation } from 'react-i18next'
import { useSelector } from 'react-redux'
export interface Props {
- status: Pick & {
- mentions?: Mastodon.Status['mentions']
- tags?: Mastodon.Status['tags']
- }
+ status: Pick<
+ Mastodon.Status,
+ 'content' | 'spoiler_text' | 'emojis' | 'mentions' | 'tags'
+ >
numberOfLines?: number
highlighted?: boolean
disableDetails?: boolean
@@ -72,7 +72,9 @@ const TimelineContent = React.memo(
>
)
},
- (prev, next) => prev.status.content === next.status.content
+ (prev, next) =>
+ prev.status.content === next.status.content &&
+ prev.status.spoiler_text === next.status.spoiler_text
)
export default TimelineContent
diff --git a/src/components/Timeline/Shared/Feedback.tsx b/src/components/Timeline/Shared/Feedback.tsx
index 6aae7492..022b4bed 100644
--- a/src/components/Timeline/Shared/Feedback.tsx
+++ b/src/components/Timeline/Shared/Feedback.tsx
@@ -10,7 +10,10 @@ import { useTranslation } from 'react-i18next'
import { StyleSheet, Text, View } from 'react-native'
export interface Props {
- status: Mastodon.Status
+ status: Pick<
+ Mastodon.Status,
+ 'id' | 'edited_at' | 'reblogs_count' | 'favourites_count'
+ >
highlighted: boolean
}
@@ -125,6 +128,7 @@ const TimelineFeedback = React.memo(
)
},
(prev, next) =>
+ prev.status.edited_at === next.status.edited_at &&
prev.status.reblogs_count === next.status.reblogs_count &&
prev.status.favourites_count === next.status.favourites_count
)
diff --git a/src/components/Timeline/Shared/HeaderShared/Created.tsx b/src/components/Timeline/Shared/HeaderShared/Created.tsx
index e6de55fa..8755c9c1 100644
--- a/src/components/Timeline/Shared/HeaderShared/Created.tsx
+++ b/src/components/Timeline/Shared/HeaderShared/Created.tsx
@@ -37,7 +37,7 @@ const HeaderSharedCreated = React.memo(
>
)
},
- () => true
+ (prev, next) => prev.edited_at === next.edited_at
)
export default HeaderSharedCreated
diff --git a/src/components/Timeline/Shared/Translate.tsx b/src/components/Timeline/Shared/Translate.tsx
index feddae0f..1fa609a0 100644
--- a/src/components/Timeline/Shared/Translate.tsx
+++ b/src/components/Timeline/Shared/Translate.tsx
@@ -7,13 +7,16 @@ import { useTheme } from '@utils/styles/ThemeManager'
import * as Localization from 'expo-localization'
import React, { useState } from 'react'
import { useTranslation } from 'react-i18next'
-import { Pressable, StyleSheet, Text } from 'react-native'
+import { Pressable, Text } from 'react-native'
import { Circle } from 'react-native-animated-spinkit'
import { useSelector } from 'react-redux'
export interface Props {
highlighted: boolean
- status: Mastodon.Status
+ status: Pick<
+ Mastodon.Status,
+ 'language' | 'spoiler_text' | 'content' | 'emojis'
+ >
}
const TimelineTranslate = React.memo(
@@ -60,7 +63,12 @@ const TimelineTranslate = React.memo(
return (
<>
{
if (enabled) {
if (!isSuccess) {
@@ -128,15 +136,10 @@ const TimelineTranslate = React.memo(
>
)
},
- () => true
+ (prev, next) =>
+ prev.status.language === next.status.language &&
+ prev.status.content === next.status.content &&
+ prev.status.spoiler_text === next.status.spoiler_text
)
-const styles = StyleSheet.create({
- button: {
- flexDirection: 'row',
- alignItems: 'center',
- paddingVertical: StyleConstants.Spacing.S
- }
-})
-
export default TimelineTranslate