|
|
|
@@ -1,6 +1,6 @@
|
|
|
|
|
<template>
|
|
|
|
|
<div ref="elRef" class="qglefbjs" :class="notification.type">
|
|
|
|
|
<div class="head">
|
|
|
|
|
<div v-once class="head">
|
|
|
|
|
<MkAvatar v-if="notification.type === 'pollEnded'" class="icon" :user="notification.note.user"/>
|
|
|
|
|
<MkAvatar v-else-if="notification.user" class="icon" :user="notification.user"/>
|
|
|
|
|
<img v-else-if="notification.icon" class="icon" :src="notification.icon" alt=""/>
|
|
|
|
@@ -31,37 +31,39 @@
|
|
|
|
|
<span v-else>{{ notification.header }}</span>
|
|
|
|
|
<MkTime v-if="withTime" :time="notification.createdAt" class="time"/>
|
|
|
|
|
</header>
|
|
|
|
|
<MkA v-if="notification.type === 'reaction'" class="text" :to="notePage(notification.note)" :title="getNoteSummary(notification.note)">
|
|
|
|
|
<i class="ti ti-quote"></i>
|
|
|
|
|
<Mfm :text="getNoteSummary(notification.note)" :plain="true" :nowrap="!full"/>
|
|
|
|
|
<i class="ti ti-quote"></i>
|
|
|
|
|
</MkA>
|
|
|
|
|
<MkA v-if="notification.type === 'renote'" class="text" :to="notePage(notification.note)" :title="getNoteSummary(notification.note.renote)">
|
|
|
|
|
<i class="ti ti-quote"></i>
|
|
|
|
|
<Mfm :text="getNoteSummary(notification.note.renote)" :plain="true" :nowrap="!full"/>
|
|
|
|
|
<i class="ti ti-quote"></i>
|
|
|
|
|
</MkA>
|
|
|
|
|
<MkA v-if="notification.type === 'reply'" class="text" :to="notePage(notification.note)" :title="getNoteSummary(notification.note)">
|
|
|
|
|
<Mfm :text="getNoteSummary(notification.note)" :plain="true" :nowrap="!full"/>
|
|
|
|
|
</MkA>
|
|
|
|
|
<MkA v-if="notification.type === 'mention'" class="text" :to="notePage(notification.note)" :title="getNoteSummary(notification.note)">
|
|
|
|
|
<Mfm :text="getNoteSummary(notification.note)" :plain="true" :nowrap="!full"/>
|
|
|
|
|
</MkA>
|
|
|
|
|
<MkA v-if="notification.type === 'quote'" class="text" :to="notePage(notification.note)" :title="getNoteSummary(notification.note)">
|
|
|
|
|
<Mfm :text="getNoteSummary(notification.note)" :plain="true" :nowrap="!full"/>
|
|
|
|
|
</MkA>
|
|
|
|
|
<MkA v-if="notification.type === 'pollEnded'" class="text" :to="notePage(notification.note)" :title="getNoteSummary(notification.note)">
|
|
|
|
|
<i class="ti ti-quote"></i>
|
|
|
|
|
<Mfm :text="getNoteSummary(notification.note)" :plain="true" :nowrap="!full"/>
|
|
|
|
|
<i class="ti ti-quote"></i>
|
|
|
|
|
</MkA>
|
|
|
|
|
<span v-if="notification.type === 'follow'" class="text" style="opacity: 0.6;">{{ i18n.ts.youGotNewFollower }}<div v-if="full"><MkFollowButton :user="notification.user" :full="true"/></div></span>
|
|
|
|
|
<span v-if="notification.type === 'followRequestAccepted'" class="text" style="opacity: 0.6;">{{ i18n.ts.followRequestAccepted }}</span>
|
|
|
|
|
<span v-if="notification.type === 'receiveFollowRequest'" class="text" style="opacity: 0.6;">{{ i18n.ts.receiveFollowRequest }}<div v-if="full && !followRequestDone"><button class="_textButton" @click="acceptFollowRequest()">{{ i18n.ts.accept }}</button> | <button class="_textButton" @click="rejectFollowRequest()">{{ i18n.ts.reject }}</button></div></span>
|
|
|
|
|
<span v-if="notification.type === 'groupInvited'" class="text" style="opacity: 0.6;">{{ i18n.ts.groupInvited }}: <b>{{ notification.invitation.group.name }}</b><div v-if="full && !groupInviteDone"><button class="_textButton" @click="acceptGroupInvitation()">{{ i18n.ts.accept }}</button> | <button class="_textButton" @click="rejectGroupInvitation()">{{ i18n.ts.reject }}</button></div></span>
|
|
|
|
|
<span v-if="notification.type === 'app'" class="text">
|
|
|
|
|
<Mfm :text="notification.body" :nowrap="!full"/>
|
|
|
|
|
</span>
|
|
|
|
|
<div v-once class="content">
|
|
|
|
|
<MkA v-if="notification.type === 'reaction'" class="text" :to="notePage(notification.note)" :title="getNoteSummary(notification.note)">
|
|
|
|
|
<i class="ti ti-quote"></i>
|
|
|
|
|
<Mfm :text="getNoteSummary(notification.note)" :plain="true" :nowrap="!full"/>
|
|
|
|
|
<i class="ti ti-quote"></i>
|
|
|
|
|
</MkA>
|
|
|
|
|
<MkA v-else-if="notification.type === 'renote'" class="text" :to="notePage(notification.note)" :title="getNoteSummary(notification.note.renote)">
|
|
|
|
|
<i class="ti ti-quote"></i>
|
|
|
|
|
<Mfm :text="getNoteSummary(notification.note.renote)" :plain="true" :nowrap="!full"/>
|
|
|
|
|
<i class="ti ti-quote"></i>
|
|
|
|
|
</MkA>
|
|
|
|
|
<MkA v-else-if="notification.type === 'reply'" class="text" :to="notePage(notification.note)" :title="getNoteSummary(notification.note)">
|
|
|
|
|
<Mfm :text="getNoteSummary(notification.note)" :plain="true" :nowrap="!full"/>
|
|
|
|
|
</MkA>
|
|
|
|
|
<MkA v-else-if="notification.type === 'mention'" class="text" :to="notePage(notification.note)" :title="getNoteSummary(notification.note)">
|
|
|
|
|
<Mfm :text="getNoteSummary(notification.note)" :plain="true" :nowrap="!full"/>
|
|
|
|
|
</MkA>
|
|
|
|
|
<MkA v-else-if="notification.type === 'quote'" class="text" :to="notePage(notification.note)" :title="getNoteSummary(notification.note)">
|
|
|
|
|
<Mfm :text="getNoteSummary(notification.note)" :plain="true" :nowrap="!full"/>
|
|
|
|
|
</MkA>
|
|
|
|
|
<MkA v-else-if="notification.type === 'pollEnded'" class="text" :to="notePage(notification.note)" :title="getNoteSummary(notification.note)">
|
|
|
|
|
<i class="ti ti-quote"></i>
|
|
|
|
|
<Mfm :text="getNoteSummary(notification.note)" :plain="true" :nowrap="!full"/>
|
|
|
|
|
<i class="ti ti-quote"></i>
|
|
|
|
|
</MkA>
|
|
|
|
|
<span v-else-if="notification.type === 'follow'" class="text" style="opacity: 0.6;">{{ i18n.ts.youGotNewFollower }}<div v-if="full"><MkFollowButton :user="notification.user" :full="true"/></div></span>
|
|
|
|
|
<span v-else-if="notification.type === 'followRequestAccepted'" class="text" style="opacity: 0.6;">{{ i18n.ts.followRequestAccepted }}</span>
|
|
|
|
|
<span v-else-if="notification.type === 'receiveFollowRequest'" class="text" style="opacity: 0.6;">{{ i18n.ts.receiveFollowRequest }}<div v-if="full && !followRequestDone"><button class="_textButton" @click="acceptFollowRequest()">{{ i18n.ts.accept }}</button> | <button class="_textButton" @click="rejectFollowRequest()">{{ i18n.ts.reject }}</button></div></span>
|
|
|
|
|
<span v-else-if="notification.type === 'groupInvited'" class="text" style="opacity: 0.6;">{{ i18n.ts.groupInvited }}: <b>{{ notification.invitation.group.name }}</b><div v-if="full && !groupInviteDone"><button class="_textButton" @click="acceptGroupInvitation()">{{ i18n.ts.accept }}</button> | <button class="_textButton" @click="rejectGroupInvitation()">{{ i18n.ts.reject }}</button></div></span>
|
|
|
|
|
<span v-else-if="notification.type === 'app'" class="text">
|
|
|
|
|
<Mfm :text="notification.body" :nowrap="!full"/>
|
|
|
|
|
</span>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
@@ -263,23 +265,25 @@ useTooltip(reactionRef, (showing) => {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
> .text {
|
|
|
|
|
white-space: nowrap;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
|
> .content {
|
|
|
|
|
> .text {
|
|
|
|
|
white-space: nowrap;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
text-overflow: ellipsis;
|
|
|
|
|
|
|
|
|
|
> i {
|
|
|
|
|
vertical-align: super;
|
|
|
|
|
font-size: 50%;
|
|
|
|
|
opacity: 0.5;
|
|
|
|
|
}
|
|
|
|
|
> i {
|
|
|
|
|
vertical-align: super;
|
|
|
|
|
font-size: 50%;
|
|
|
|
|
opacity: 0.5;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
> i:first-child {
|
|
|
|
|
margin-right: 4px;
|
|
|
|
|
}
|
|
|
|
|
> i:first-child {
|
|
|
|
|
margin-right: 4px;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
> i:last-child {
|
|
|
|
|
margin-left: 4px;
|
|
|
|
|
> i:last-child {
|
|
|
|
|
margin-left: 4px;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|