feat: notification when followed account creates a new post (#1045)
Co-authored-by: 三咲智子 Kevin Deng <sxzz@sxzz.moe> Fix https://github.com/elk-zone/elk/issues/538zio/stable
parent
341de5ffaa
commit
9b1ac596d3
|
@ -6,6 +6,8 @@ const { account } = defineProps<{
|
||||||
command?: boolean
|
command?: boolean
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
|
const masto = useMasto()
|
||||||
|
|
||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
|
|
||||||
const createdAt = $(useFormattedDateTime(() => account.createdAt, {
|
const createdAt = $(useFormattedDateTime(() => account.createdAt, {
|
||||||
|
@ -14,6 +16,8 @@ const createdAt = $(useFormattedDateTime(() => account.createdAt, {
|
||||||
year: 'numeric',
|
year: 'numeric',
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
const relationship = $(useRelationship(account))
|
||||||
|
|
||||||
const namedFields = ref<mastodon.v1.AccountField[]>([])
|
const namedFields = ref<mastodon.v1.AccountField[]>([])
|
||||||
const iconFields = ref<mastodon.v1.AccountField[]>([])
|
const iconFields = ref<mastodon.v1.AccountField[]>([])
|
||||||
|
|
||||||
|
@ -39,6 +43,21 @@ function previewAvatar() {
|
||||||
}])
|
}])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function toggleNotify() {
|
||||||
|
// @ts-expect-error: Masto.js only recently added this field. Can be removed when Elk updates Masto.js to 5.4.0 or higher.
|
||||||
|
relationship!.notifying = !relationship?.notifying
|
||||||
|
try {
|
||||||
|
// @ts-expect-error: Masto.js only recently added this field. Can be removed when Elk updates Masto.js to 5.4.0 or higher.
|
||||||
|
const newRel = await masto.v1.accounts.follow(account.id, { notify: relationship?.notifying })
|
||||||
|
Object.assign(relationship!, newRel)
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
// TODO error handling
|
||||||
|
// @ts-expect-error: Masto.js only recently added this field. Can be removed when Elk updates Masto.js to 5.4.0 or higher.
|
||||||
|
relationship!.notifying = !relationship?.notifying
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
watchEffect(() => {
|
watchEffect(() => {
|
||||||
const named: mastodon.v1.AccountField[] = []
|
const named: mastodon.v1.AccountField[] = []
|
||||||
const icons: mastodon.v1.AccountField[] = []
|
const icons: mastodon.v1.AccountField[] = []
|
||||||
|
@ -60,6 +79,8 @@ watchEffect(() => {
|
||||||
})
|
})
|
||||||
|
|
||||||
const isSelf = $computed(() => currentUser.value?.account.id === account.id)
|
const isSelf = $computed(() => currentUser.value?.account.id === account.id)
|
||||||
|
// @ts-expect-error: Masto.js only recently added this field. Can be removed when Elk updates Masto.js to 5.4.0 or higher.
|
||||||
|
const isAlertedOnPost = $computed(() => relationship?.notifying)
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
@ -93,11 +114,12 @@ const isSelf = $computed(() => currentUser.value?.account.id === account.id)
|
||||||
>
|
>
|
||||||
{{ $t('settings.profile.appearance.title') }}
|
{{ $t('settings.profile.appearance.title') }}
|
||||||
</NuxtLink>
|
</NuxtLink>
|
||||||
<!-- <button flex gap-1 items-center w-full rounded op75 hover="op100 text-purple" group>
|
<button v-if="!isSelf && relationship?.following" flex gap-1 items-center w-full rounded op75 hover="op100 text-purple" group @click="toggleNotify()">
|
||||||
<div rounded p2 group-hover="bg-rose/10">
|
<div rounded p2 group-hover="bg-rose/10">
|
||||||
<div i-ri:bell-line />
|
<div v-if="isAlertedOnPost" i-ri:bell-fill />
|
||||||
|
<div v-else i-ri-bell-line />
|
||||||
</div>
|
</div>
|
||||||
</button> -->
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="account.note" max-h-100 overflow-y-auto>
|
<div v-if="account.note" max-h-100 overflow-y-auto>
|
||||||
|
|
Loading…
Reference in New Issue