feat: collpase self thread when possible
parent
3922db012f
commit
2a4e1bf8f6
|
@ -70,6 +70,7 @@ const isFiltered = $computed(() => filterPhrase && (props.context ? filter?.cont
|
||||||
const avatarOnAvatar = $(computedEager(() => useFeatureFlags().experimentalAvatarOnAvatar))
|
const avatarOnAvatar = $(computedEager(() => useFeatureFlags().experimentalAvatarOnAvatar))
|
||||||
const collapseRebloggedBy = $computed(() => rebloggedBy?.id === status.account.id)
|
const collapseRebloggedBy = $computed(() => rebloggedBy?.id === status.account.id)
|
||||||
const showRebloggedByAvatarOnAvatar = $computed(() => rebloggedBy && avatarOnAvatar && rebloggedBy.id !== status.account.id)
|
const showRebloggedByAvatarOnAvatar = $computed(() => rebloggedBy && avatarOnAvatar && rebloggedBy.id !== status.account.id)
|
||||||
|
const collapseReplyingTo = $computed(() => (!rebloggedBy || collapseRebloggedBy) && status.inReplyToAccountId === status.account.id)
|
||||||
|
|
||||||
const isDM = $computed(() => status.visibility === 'direct')
|
const isDM = $computed(() => status.visibility === 'direct')
|
||||||
</script>
|
</script>
|
||||||
|
@ -98,7 +99,7 @@ const isDM = $computed(() => status.visibility === 'direct')
|
||||||
</div>
|
</div>
|
||||||
<div v-else />
|
<div v-else />
|
||||||
</slot>
|
</slot>
|
||||||
<StatusReplyingTo v-if="!directReply" :status="status" :class="faded ? 'text-secondary-light' : ''" py1 />
|
<StatusReplyingTo v-if="!directReply && !collapseReplyingTo" :status="status" :class="faded ? 'text-secondary-light' : ''" py1 />
|
||||||
</div>
|
</div>
|
||||||
<div flex gap-3 :class="{ 'text-secondary': faded }">
|
<div flex gap-3 :class="{ 'text-secondary': faded }">
|
||||||
<div relative>
|
<div relative>
|
||||||
|
@ -122,6 +123,9 @@ const isDM = $computed(() => status.visibility === 'direct')
|
||||||
<AccountHoverWrapper :account="status.account">
|
<AccountHoverWrapper :account="status.account">
|
||||||
<StatusAccountDetails :account="status.account" />
|
<StatusAccountDetails :account="status.account" />
|
||||||
</AccountHoverWrapper>
|
</AccountHoverWrapper>
|
||||||
|
<div v-if="!directReply && collapseReplyingTo" flex="~" pl-1 items-center justify-center>
|
||||||
|
<StatusReplyingTo :collapsed="true" :status="status" :class="faded ? 'text-secondary-light' : ''" />
|
||||||
|
</div>
|
||||||
<div flex-auto />
|
<div flex-auto />
|
||||||
<div v-if="!isZenMode" text-sm text-secondary flex="~ row nowrap" hover:underline>
|
<div v-if="!isZenMode" text-sm text-secondary flex="~ row nowrap" hover:underline>
|
||||||
<AccountBotIndicator v-if="status.account.bot" mr-2 />
|
<AccountBotIndicator v-if="status.account.bot" mr-2 />
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import type { Status } from 'masto'
|
import type { Status } from 'masto'
|
||||||
|
|
||||||
const { status } = defineProps<{
|
const { status, collapsed = false } = defineProps<{
|
||||||
status: Status
|
status: Status
|
||||||
|
collapsed: boolean
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const isSelf = $computed(() => status.inReplyToAccountId === status.account.id)
|
const isSelf = $computed(() => status.inReplyToAccountId === status.account.id)
|
||||||
|
@ -17,12 +18,14 @@ const account = isSelf ? computed(() => status.account) : useAccountById(status.
|
||||||
:to="getStatusInReplyToRoute(status)"
|
:to="getStatusInReplyToRoute(status)"
|
||||||
:title="account ? `Replying to ${getDisplayName(account)}` : 'Replying to someone'"
|
:title="account ? `Replying to ${getDisplayName(account)}` : 'Replying to someone'"
|
||||||
>
|
>
|
||||||
<div i-ri:reply-fill class="scale-x-[-1]" text-secondary-light />
|
<template v-if="account">
|
||||||
|
<div i-ri:reply-fill :class="collapsed ? '' : 'scale-x-[-1]'" text-secondary-light />
|
||||||
<template v-if="!isSelf">
|
<template v-if="!isSelf">
|
||||||
<AccountInlineInfo v-if="account" :account="account" :link="false" />
|
<AccountInlineInfo v-if="account" :account="account" :link="false" />
|
||||||
<span v-else ws-nowrap>{{ $t('status.someone') }}</span>
|
<span v-else ws-nowrap>{{ $t('status.someone') }}</span>
|
||||||
</template>
|
</template>
|
||||||
<span v-else ws-nowrap>{{ $t('status.thread') }}</span>
|
<span v-else-if="!collapsed" ws-nowrap>{{ $t('status.thread') }}</span>
|
||||||
|
</template>
|
||||||
<div i-ph:chats-fill text-primary text-lg />
|
<div i-ph:chats-fill text-primary text-lg />
|
||||||
</NuxtLink>
|
</NuxtLink>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue