feat: withdraw follow request

closes #2179
closes #2162
zio/stable
三咲智子 Kevin Deng 2023-07-03 02:09:30 +08:00
parent d5856b83c6
commit d52755a153
No known key found for this signature in database
GPG Key ID: 69992F2250DFD93E
2 changed files with 19 additions and 6 deletions

View File

@ -71,7 +71,6 @@ const buttonStyle = $computed(() => {
<button <button
v-if="enable" v-if="enable"
gap-1 items-center group gap-1 items-center group
:disabled="relationship?.requested"
border-1 border-1
rounded-full flex="~ gap2 center" font-500 min-w-30 h-fit px3 py1 rounded-full flex="~ gap2 center" font-500 min-w-30 h-fit px3 py1
:class="buttonStyle" :class="buttonStyle"
@ -91,11 +90,12 @@ const buttonStyle = $computed(() => {
<span hidden elk-group-hover="inline">{{ $t('account.unfollow') }}</span> <span hidden elk-group-hover="inline">{{ $t('account.unfollow') }}</span>
</template> </template>
<template v-else-if="relationship?.requested"> <template v-else-if="relationship?.requested">
<span>{{ $t('account.follow_requested') }}</span> <span elk-group-hover="hidden">{{ $t('account.follow_requested') }}</span>
<span hidden elk-group-hover="inline">Withdraw follow request</span>
</template> </template>
<template v-else-if="relationship ? relationship.followedBy : context === 'followedBy'"> <template v-else-if="relationship ? relationship.followedBy : context === 'followedBy'">
<span elk-group-hover="hidden">{{ $t('account.follows_you') }}</span> <span elk-group-hover="hidden">{{ $t('account.follows_you') }}</span>
<span hidden elk-group-hover="inline">{{ $t('account.follow_back') }}</span> <span hidden elk-group-hover="inline">{{ account.locked ? $t('account.request_follow') : $t('account.follow_back') }}</span>
</template> </template>
<template v-else> <template v-else>
<span>{{ account.locked ? $t('account.request_follow') : $t('account.follow') }}</span> <span>{{ account.locked ? $t('account.request_follow') : $t('account.follow') }}</span>

View File

@ -36,7 +36,9 @@ export async function toggleFollowAccount(relationship: mastodon.v1.Relationship
const { client } = $(useMasto()) const { client } = $(useMasto())
const i18n = useNuxtApp().$i18n const i18n = useNuxtApp().$i18n
if (relationship!.following) { const unfollow = relationship!.following || relationship!.requested
if (unfollow) {
if (await openConfirmDialog({ if (await openConfirmDialog({
title: i18n.t('confirm.unfollow.title'), title: i18n.t('confirm.unfollow.title'),
confirm: i18n.t('confirm.unfollow.confirm'), confirm: i18n.t('confirm.unfollow.confirm'),
@ -44,8 +46,19 @@ export async function toggleFollowAccount(relationship: mastodon.v1.Relationship
}) !== 'confirm') }) !== 'confirm')
return return
} }
relationship!.following = !relationship!.following
relationship = await client.v1.accounts[relationship!.following ? 'follow' : 'unfollow'](account.id) if (unfollow) {
relationship!.following = false
relationship!.requested = false
}
else if (account.locked) {
relationship!.requested = true
}
else {
relationship!.following = true
}
relationship = await client.v1.accounts[unfollow ? 'unfollow' : 'follow'](account.id)
} }
export async function toggleMuteAccount(relationship: mastodon.v1.Relationship, account: mastodon.v1.Account) { export async function toggleMuteAccount(relationship: mastodon.v1.Relationship, account: mastodon.v1.Account) {