mirror of
https://github.com/tooot-app/app
synced 2025-06-05 22:19:13 +02:00
@ -28,7 +28,7 @@ const TimelineActions: React.FC = () => {
|
||||
const navigationState = useNavState()
|
||||
const navigation = useNavigation<StackNavigationProp<RootStackParamList>>()
|
||||
const { t } = useTranslation(['common', 'componentTimeline'])
|
||||
const { colors, theme } = useTheme()
|
||||
const { colors } = useTheme()
|
||||
const iconColor = colors.secondary
|
||||
|
||||
const queryClient = useQueryClient()
|
||||
@ -56,7 +56,6 @@ const TimelineActions: React.FC = () => {
|
||||
onError: (err: any, params) => {
|
||||
const correctParam = params as MutationVarsTimelineUpdateStatusProperty
|
||||
displayMessage({
|
||||
theme,
|
||||
type: 'error',
|
||||
message: t('common:message.error.message', {
|
||||
function: t(
|
||||
|
@ -10,8 +10,7 @@ import * as DropdownMenu from 'zeego/dropdown-menu'
|
||||
import StatusContext from './Context'
|
||||
|
||||
const TimelineHeaderAndroid: React.FC = () => {
|
||||
const { queryKey, status, disableDetails, disableOnPress, rawContent } =
|
||||
useContext(StatusContext)
|
||||
const { queryKey, status, disableDetails, disableOnPress, rawContent } = useContext(StatusContext)
|
||||
|
||||
if (Platform.OS !== 'android' || !status || disableDetails || disableOnPress) return null
|
||||
|
||||
@ -52,16 +51,48 @@ const TimelineHeaderAndroid: React.FC = () => {
|
||||
</DropdownMenu.Trigger>
|
||||
|
||||
<DropdownMenu.Content>
|
||||
{[mShare, mAccount, mStatus].map((type, i) => (
|
||||
{[mShare, mAccount, mStatus].map((menu, i) => (
|
||||
<Fragment key={i}>
|
||||
{type.map((mGroup, index) => (
|
||||
{menu.map((group, index) => (
|
||||
<DropdownMenu.Group key={index}>
|
||||
{mGroup.map(menu => (
|
||||
<DropdownMenu.Item key={menu.key} {...menu.item}>
|
||||
<DropdownMenu.ItemTitle children={menu.title} />
|
||||
<DropdownMenu.ItemIcon ios={{ name: menu.icon }} />
|
||||
</DropdownMenu.Item>
|
||||
))}
|
||||
{group.map(item => {
|
||||
switch (item.type) {
|
||||
case 'item':
|
||||
return (
|
||||
<DropdownMenu.Item key={item.key} {...item.props}>
|
||||
<DropdownMenu.ItemTitle children={item.title} />
|
||||
{item.icon ? (
|
||||
<DropdownMenu.ItemIcon ios={{ name: item.icon }} />
|
||||
) : null}
|
||||
</DropdownMenu.Item>
|
||||
)
|
||||
case 'sub':
|
||||
return (
|
||||
// @ts-ignore
|
||||
<DropdownMenu.Sub key={item.key}>
|
||||
<DropdownMenu.SubTrigger
|
||||
key={item.trigger.key}
|
||||
{...item.trigger.props}
|
||||
>
|
||||
<DropdownMenu.ItemTitle children={item.trigger.title} />
|
||||
{item.trigger.icon ? (
|
||||
<DropdownMenu.ItemIcon ios={{ name: item.trigger.icon }} />
|
||||
) : null}
|
||||
</DropdownMenu.SubTrigger>
|
||||
<DropdownMenu.SubContent>
|
||||
{item.items.map(sub => (
|
||||
<DropdownMenu.Item key={sub.key} {...sub.props}>
|
||||
<DropdownMenu.ItemTitle children={sub.title} />
|
||||
{sub.icon ? (
|
||||
<DropdownMenu.ItemIcon ios={{ name: sub.icon }} />
|
||||
) : null}
|
||||
</DropdownMenu.Item>
|
||||
))}
|
||||
</DropdownMenu.SubContent>
|
||||
</DropdownMenu.Sub>
|
||||
)
|
||||
}
|
||||
})}
|
||||
</DropdownMenu.Group>
|
||||
))}
|
||||
</Fragment>
|
||||
|
@ -17,8 +17,7 @@ import HeaderSharedReplies from './HeaderShared/Replies'
|
||||
import HeaderSharedVisibility from './HeaderShared/Visibility'
|
||||
|
||||
const TimelineHeaderDefault: React.FC = () => {
|
||||
const { queryKey, status, disableDetails, rawContent, isRemote } =
|
||||
useContext(StatusContext)
|
||||
const { queryKey, status, disableDetails, rawContent, isRemote } = useContext(StatusContext)
|
||||
if (!status) return null
|
||||
|
||||
const { colors } = useTheme()
|
||||
@ -88,16 +87,48 @@ const TimelineHeaderDefault: React.FC = () => {
|
||||
</DropdownMenu.Trigger>
|
||||
|
||||
<DropdownMenu.Content>
|
||||
{[mShare, mAccount, mStatus].map((type, i) => (
|
||||
{[mShare, mAccount, mStatus].map((menu, i) => (
|
||||
<Fragment key={i}>
|
||||
{type.map((mGroup, index) => (
|
||||
{menu.map((group, index) => (
|
||||
<DropdownMenu.Group key={index}>
|
||||
{mGroup.map(menu => (
|
||||
<DropdownMenu.Item key={menu.key} {...menu.item}>
|
||||
<DropdownMenu.ItemTitle children={menu.title} />
|
||||
<DropdownMenu.ItemIcon ios={{ name: menu.icon }} />
|
||||
</DropdownMenu.Item>
|
||||
))}
|
||||
{group.map(item => {
|
||||
switch (item.type) {
|
||||
case 'item':
|
||||
return (
|
||||
<DropdownMenu.Item key={item.key} {...item.props}>
|
||||
<DropdownMenu.ItemTitle children={item.title} />
|
||||
{item.icon ? (
|
||||
<DropdownMenu.ItemIcon ios={{ name: item.icon }} />
|
||||
) : null}
|
||||
</DropdownMenu.Item>
|
||||
)
|
||||
case 'sub':
|
||||
return (
|
||||
// @ts-ignore
|
||||
<DropdownMenu.Sub key={item}>
|
||||
<DropdownMenu.SubTrigger
|
||||
key={item.trigger.key}
|
||||
{...item.trigger.props}
|
||||
>
|
||||
<DropdownMenu.ItemTitle children={item.trigger.title} />
|
||||
{item.trigger.icon ? (
|
||||
<DropdownMenu.ItemIcon ios={{ name: item.trigger.icon }} />
|
||||
) : null}
|
||||
</DropdownMenu.SubTrigger>
|
||||
<DropdownMenu.SubContent>
|
||||
{item.items.map(sub => (
|
||||
<DropdownMenu.Item key={sub.key} {...sub.props}>
|
||||
<DropdownMenu.ItemTitle children={sub.title} />
|
||||
{sub.icon ? (
|
||||
<DropdownMenu.ItemIcon ios={{ name: sub.icon }} />
|
||||
) : null}
|
||||
</DropdownMenu.Item>
|
||||
))}
|
||||
</DropdownMenu.SubContent>
|
||||
</DropdownMenu.Sub>
|
||||
)
|
||||
}
|
||||
})}
|
||||
</DropdownMenu.Group>
|
||||
))}
|
||||
</Fragment>
|
||||
|
@ -88,16 +88,50 @@ const TimelineHeaderNotification: React.FC<Props> = ({ notification }) => {
|
||||
</DropdownMenu.Trigger>
|
||||
|
||||
<DropdownMenu.Content>
|
||||
{[mShare, mStatus, mAccount, mInstance].map((type, i) => (
|
||||
{[mShare, mStatus, mAccount, mInstance].map((menu, i) => (
|
||||
<Fragment key={i}>
|
||||
{type.map((mGroup, index) => (
|
||||
{menu.map((group, index) => (
|
||||
<DropdownMenu.Group key={index}>
|
||||
{mGroup.map(menu => (
|
||||
<DropdownMenu.Item key={menu.key} {...menu.item}>
|
||||
<DropdownMenu.ItemTitle children={menu.title} />
|
||||
<DropdownMenu.ItemIcon ios={{ name: menu.icon }} />
|
||||
</DropdownMenu.Item>
|
||||
))}
|
||||
{group.map(item => {
|
||||
switch (item.type) {
|
||||
case 'item':
|
||||
return (
|
||||
<DropdownMenu.Item key={item.key} {...item.props}>
|
||||
<DropdownMenu.ItemTitle children={item.title} />
|
||||
{item.icon ? (
|
||||
<DropdownMenu.ItemIcon ios={{ name: item.icon }} />
|
||||
) : null}
|
||||
</DropdownMenu.Item>
|
||||
)
|
||||
case 'sub':
|
||||
return (
|
||||
// @ts-ignore
|
||||
<DropdownMenu.Sub key={item.key}>
|
||||
<DropdownMenu.SubTrigger
|
||||
key={item.trigger.key}
|
||||
{...item.trigger.props}
|
||||
>
|
||||
<DropdownMenu.ItemTitle children={item.trigger.title} />
|
||||
{item.trigger.icon ? (
|
||||
<DropdownMenu.ItemIcon
|
||||
ios={{ name: item.trigger.icon }}
|
||||
/>
|
||||
) : null}
|
||||
</DropdownMenu.SubTrigger>
|
||||
<DropdownMenu.SubContent>
|
||||
{item.items.map(sub => (
|
||||
<DropdownMenu.Item key={sub.key} {...sub.props}>
|
||||
<DropdownMenu.ItemTitle children={sub.title} />
|
||||
{sub.icon ? (
|
||||
<DropdownMenu.ItemIcon ios={{ name: sub.icon }} />
|
||||
) : null}
|
||||
</DropdownMenu.Item>
|
||||
))}
|
||||
</DropdownMenu.SubContent>
|
||||
</DropdownMenu.Sub>
|
||||
)
|
||||
}
|
||||
})}
|
||||
</DropdownMenu.Group>
|
||||
))}
|
||||
</Fragment>
|
||||
|
Reference in New Issue
Block a user