client: display move notification

This commit is contained in:
Johann150 2022-11-20 20:06:03 +01:00
parent 5ad18c8626
commit 72b8489ae7
Signed by: Johann150
GPG key ID: 9EE6577A2A06F8F1
4 changed files with 22 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -15,6 +15,7 @@
<i v-else-if="notification.type === 'quote'" class="fas fa-quote-left"></i>
<i v-else-if="notification.type === 'pollVote'" class="fas fa-poll-h"></i>
<i v-else-if="notification.type === 'pollEnded'" class="fas fa-poll-h"></i>
<i v-else-if="notification.type === 'move'" class="fas fa-suitcase"></i>
<!-- notification.reaction null になることはまずないがここでoptional chaining使うと一部ブラウザで刺さるので念の為 -->
<MkEmoji
v-else-if="notification.type === 'reaction'"
@ -86,6 +87,10 @@
<button class="_textButton" @click="rejectGroupInvitation()">{{ i18n.ts.reject }}</button>
</div>
</span>
<span v-if="notification.type === 'move'" class="text" style="opacity: 0.6;">
{{ i18n.ts.moved }}
<div v-if="full"><MkFollowButton :user="notification.moveTarget" :full="true"/></div>
</span>
<span v-if="notification.type === 'app'" class="text">
<Mfm :text="notification.body" :nowrap="!full"/>
</span>

View file

@ -217,6 +217,20 @@ async function composeNotification<K extends keyof pushNotificationDataMap>(data
],
}];
case 'move':
return [t('_notification.moved', { name: getUserName(data.body.user) }), {
body: getUserName(data.body.moveTarget),
icon: data.body.moveTarget.avatarUrl,
badge: iconUrl('suitcase'),
data,
action: [
{
action: 'accept',
title: t('follow'),
},
],
}];
case 'app':
return [data.body.header || data.body.body, {
body: data.body.header && data.body.body,

View file

@ -96,6 +96,9 @@ self.addEventListener('notificationclick', <K extends keyof pushNotificationData
case 'groupInvited':
await swos.api('users/groups/invitations/accept', id, { invitationId: data.body.invitation.id });
break;
case 'move':
await swos.api('following/create', id, { userId: data.body.moveTarget.id });
break;
}
break;
case 'reject':