feat: simplify replying to badge when it's the same as reblogger

zio/stable
patak 2022-12-29 14:35:28 +01:00
parent 2a4e1bf8f6
commit 28af2f2efc
2 changed files with 10 additions and 4 deletions

View File

@ -70,8 +70,13 @@ 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)
// Collapse ReplyingTo badge if it is a self-reply (thread)
const collapseReplyingTo = $computed(() => (!rebloggedBy || collapseRebloggedBy) && status.inReplyToAccountId === status.account.id) const collapseReplyingTo = $computed(() => (!rebloggedBy || collapseRebloggedBy) && status.inReplyToAccountId === status.account.id)
// Only show avatar in ReplyingTo badge if it was reblogged by the same account
const simplifyReplyingTo = $computed(() => rebloggedBy && rebloggedBy.id === status.inReplyToAccountId)
const isDM = $computed(() => status.visibility === 'direct') const isDM = $computed(() => status.visibility === 'direct')
</script> </script>
@ -99,7 +104,7 @@ const isDM = $computed(() => status.visibility === 'direct')
</div> </div>
<div v-else /> <div v-else />
</slot> </slot>
<StatusReplyingTo v-if="!directReply && !collapseReplyingTo" :status="status" :class="faded ? 'text-secondary-light' : ''" py1 /> <StatusReplyingTo v-if="!directReply && !collapseReplyingTo" :status="status" :simplified="simplifyReplyingTo" :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>

View File

@ -1,9 +1,10 @@
<script setup lang="ts"> <script setup lang="ts">
import type { Status } from 'masto' import type { Status } from 'masto'
const { status, collapsed = false } = defineProps<{ const { status, collapsed = false, simplified = false } = defineProps<{
status: Status status: Status
collapsed: boolean collapsed: boolean
simplified: boolean
}>() }>()
const isSelf = $computed(() => status.inReplyToAccountId === status.account.id) const isSelf = $computed(() => status.inReplyToAccountId === status.account.id)
@ -21,8 +22,8 @@ const account = isSelf ? computed(() => status.account) : useAccountById(status.
<template v-if="account"> <template v-if="account">
<div i-ri:reply-fill :class="collapsed ? '' : 'scale-x-[-1]'" text-secondary-light /> <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" /> <AccountAvatar v-if="simplified" :account="account" :link="false" w-5 h-5 />
<span v-else ws-nowrap>{{ $t('status.someone') }}</span> <AccountInlineInfo v-else :account="account" :link="false" />
</template> </template>
<span v-else-if="!collapsed" ws-nowrap>{{ $t('status.thread') }}</span> <span v-else-if="!collapsed" ws-nowrap>{{ $t('status.thread') }}</span>
</template> </template>