parent
							
								
									19f327701d
								
							
						
					
					
						commit
						6943c7d2d8
					
				
					 7 changed files with 49 additions and 26 deletions
				
			
		| 
						 | 
					@ -65,6 +65,10 @@ export default (opts: Opts = {}) => ({
 | 
				
			||||||
			return this.isRenote ? this.note.renote : this.note;
 | 
								return this.isRenote ? this.note.renote : this.note;
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							isMyNote(): boolean {
 | 
				
			||||||
 | 
								return this.$store.getters.isSignedIn && (this.$store.state.i.id === this.appearNote.userId);
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		reactionsCount(): number {
 | 
							reactionsCount(): number {
 | 
				
			||||||
			return this.appearNote.reactionCounts
 | 
								return this.appearNote.reactionCounts
 | 
				
			||||||
				? sum(Object.values(this.appearNote.reactionCounts))
 | 
									? sum(Object.values(this.appearNote.reactionCounts))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,16 +1,16 @@
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
<div class="mk-reactions-viewer">
 | 
					<div class="mk-reactions-viewer" :class="{ isMe }">
 | 
				
			||||||
	<template v-if="reactions">
 | 
						<template v-if="reactions">
 | 
				
			||||||
		<span :class="{ reacted: note.myReaction == 'like' }" @click="toggleReaction('like')" v-if="reactions.like" v-particle><mk-reaction-icon reaction="like" ref="like"/><span>{{ reactions.like }}</span></span>
 | 
							<span :class="{ reacted: note.myReaction == 'like' }" @click="toggleReaction('like')" v-if="reactions.like" v-particle="!isMe"><mk-reaction-icon reaction="like" ref="like"/><span>{{ reactions.like }}</span></span>
 | 
				
			||||||
		<span :class="{ reacted: note.myReaction == 'love' }" @click="toggleReaction('love')" v-if="reactions.love" v-particle><mk-reaction-icon reaction="love" ref="love"/><span>{{ reactions.love }}</span></span>
 | 
							<span :class="{ reacted: note.myReaction == 'love' }" @click="toggleReaction('love')" v-if="reactions.love" v-particle="!isMe"><mk-reaction-icon reaction="love" ref="love"/><span>{{ reactions.love }}</span></span>
 | 
				
			||||||
		<span :class="{ reacted: note.myReaction == 'laugh' }" @click="toggleReaction('laugh')" v-if="reactions.laugh" v-particle><mk-reaction-icon reaction="laugh" ref="laugh"/><span>{{ reactions.laugh }}</span></span>
 | 
							<span :class="{ reacted: note.myReaction == 'laugh' }" @click="toggleReaction('laugh')" v-if="reactions.laugh" v-particle="!isMe"><mk-reaction-icon reaction="laugh" ref="laugh"/><span>{{ reactions.laugh }}</span></span>
 | 
				
			||||||
		<span :class="{ reacted: note.myReaction == 'hmm' }" @click="toggleReaction('hmm')" v-if="reactions.hmm" v-particle><mk-reaction-icon reaction="hmm" ref="hmm"/><span>{{ reactions.hmm }}</span></span>
 | 
							<span :class="{ reacted: note.myReaction == 'hmm' }" @click="toggleReaction('hmm')" v-if="reactions.hmm" v-particle="!isMe"><mk-reaction-icon reaction="hmm" ref="hmm"/><span>{{ reactions.hmm }}</span></span>
 | 
				
			||||||
		<span :class="{ reacted: note.myReaction == 'surprise' }" @click="toggleReaction('surprise')" v-if="reactions.surprise" v-particle><mk-reaction-icon reaction="surprise" ref="surprise"/><span>{{ reactions.surprise }}</span></span>
 | 
							<span :class="{ reacted: note.myReaction == 'surprise' }" @click="toggleReaction('surprise')" v-if="reactions.surprise" v-particle="!isMe"><mk-reaction-icon reaction="surprise" ref="surprise"/><span>{{ reactions.surprise }}</span></span>
 | 
				
			||||||
		<span :class="{ reacted: note.myReaction == 'congrats' }" @click="toggleReaction('congrats')" v-if="reactions.congrats" v-particle><mk-reaction-icon reaction="congrats" ref="congrats"/><span>{{ reactions.congrats }}</span></span>
 | 
							<span :class="{ reacted: note.myReaction == 'congrats' }" @click="toggleReaction('congrats')" v-if="reactions.congrats" v-particle="!isMe"><mk-reaction-icon reaction="congrats" ref="congrats"/><span>{{ reactions.congrats }}</span></span>
 | 
				
			||||||
		<span :class="{ reacted: note.myReaction == 'angry' }" @click="toggleReaction('angry')" v-if="reactions.angry" v-particle><mk-reaction-icon reaction="angry" ref="angry"/><span>{{ reactions.angry }}</span></span>
 | 
							<span :class="{ reacted: note.myReaction == 'angry' }" @click="toggleReaction('angry')" v-if="reactions.angry" v-particle="!isMe"><mk-reaction-icon reaction="angry" ref="angry"/><span>{{ reactions.angry }}</span></span>
 | 
				
			||||||
		<span :class="{ reacted: note.myReaction == 'confused' }" @click="toggleReaction('confused')" v-if="reactions.confused" v-particle><mk-reaction-icon reaction="confused" ref="confused"/><span>{{ reactions.confused }}</span></span>
 | 
							<span :class="{ reacted: note.myReaction == 'confused' }" @click="toggleReaction('confused')" v-if="reactions.confused" v-particle="!isMe"><mk-reaction-icon reaction="confused" ref="confused"/><span>{{ reactions.confused }}</span></span>
 | 
				
			||||||
		<span :class="{ reacted: note.myReaction == 'rip' }" @click="toggleReaction('rip')" v-if="reactions.rip" v-particle><mk-reaction-icon reaction="rip" ref="rip"/><span>{{ reactions.rip }}</span></span>
 | 
							<span :class="{ reacted: note.myReaction == 'rip' }" @click="toggleReaction('rip')" v-if="reactions.rip" v-particle="!isMe"><mk-reaction-icon reaction="rip" ref="rip"/><span>{{ reactions.rip }}</span></span>
 | 
				
			||||||
		<span :class="{ reacted: note.myReaction == 'pudding' }" @click="toggleReaction('pudding')" v-if="reactions.pudding" v-particle><mk-reaction-icon reaction="pudding" ref="pudding"/><span>{{ reactions.pudding }}</span></span>
 | 
							<span :class="{ reacted: note.myReaction == 'pudding' }" @click="toggleReaction('pudding')" v-if="reactions.pudding" v-particle="!isMe"><mk-reaction-icon reaction="pudding" ref="pudding"/><span>{{ reactions.pudding }}</span></span>
 | 
				
			||||||
	</template>
 | 
						</template>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
| 
						 | 
					@ -21,10 +21,18 @@ import Icon from './reaction-icon.vue';
 | 
				
			||||||
import * as anime from 'animejs';
 | 
					import * as anime from 'animejs';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default Vue.extend({
 | 
					export default Vue.extend({
 | 
				
			||||||
	props: ['note'],
 | 
						props: {
 | 
				
			||||||
 | 
							note: {
 | 
				
			||||||
 | 
								type: Object,
 | 
				
			||||||
 | 
								required: true
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						},
 | 
				
			||||||
	computed: {
 | 
						computed: {
 | 
				
			||||||
		reactions(): any {
 | 
							reactions(): any {
 | 
				
			||||||
			return this.note.reactionCounts;
 | 
								return this.note.reactionCounts;
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							isMe(): boolean {
 | 
				
			||||||
 | 
								return this.$store.getters.isSignedIn && (this.$store.state.i.id === this.note.userId);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	watch: {
 | 
						watch: {
 | 
				
			||||||
| 
						 | 
					@ -61,6 +69,8 @@ export default Vue.extend({
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
	methods: {
 | 
						methods: {
 | 
				
			||||||
		toggleReaction(reaction: string) {
 | 
							toggleReaction(reaction: string) {
 | 
				
			||||||
 | 
								if (this.isMe) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			const oldReaction = this.note.myReaction;
 | 
								const oldReaction = this.note.myReaction;
 | 
				
			||||||
			if (oldReaction) {
 | 
								if (oldReaction) {
 | 
				
			||||||
				this.$root.api('notes/reactions/delete', {
 | 
									this.$root.api('notes/reactions/delete', {
 | 
				
			||||||
| 
						 | 
					@ -128,6 +138,13 @@ export default Vue.extend({
 | 
				
			||||||
	&:empty
 | 
						&:empty
 | 
				
			||||||
		display none
 | 
							display none
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						&.isMe
 | 
				
			||||||
 | 
							> span
 | 
				
			||||||
 | 
								cursor default !important
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								&:hover
 | 
				
			||||||
 | 
									background var(--reactionViewerButtonBg) !important
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	> span
 | 
						> span
 | 
				
			||||||
		display inline-block
 | 
							display inline-block
 | 
				
			||||||
		height 32px
 | 
							height 32px
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,6 +5,8 @@ export default {
 | 
				
			||||||
		if (vn.context.$store.state.device.reduceMotion) return;
 | 
							if (vn.context.$store.state.device.reduceMotion) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		el.addEventListener('click', () => {
 | 
							el.addEventListener('click', () => {
 | 
				
			||||||
 | 
								if (binding.value === false) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			const rect = el.getBoundingClientRect();
 | 
								const rect = el.getBoundingClientRect();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			const x = rect.left + (el.clientWidth / 2);
 | 
								const x = rect.left + (el.clientWidth / 2);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -76,8 +76,8 @@
 | 
				
			||||||
			<button v-else class="inhibitedButton">
 | 
								<button v-else class="inhibitedButton">
 | 
				
			||||||
				<fa icon="ban"/>
 | 
									<fa icon="ban"/>
 | 
				
			||||||
			</button>
 | 
								</button>
 | 
				
			||||||
			<button class="reactionButton" :class="{ reacted: appearNote.myReaction != null }" @click="react()" ref="reactButton" :title="$t('add-reaction')">
 | 
								<button class="reactionButton" :class="{ reacted: appearNote.myReaction != null }" v-if="!isMyNote" @click="react()" ref="reactButton" :title="$t('add-reaction')">
 | 
				
			||||||
				<fa icon="plus"/><p class="count" v-if="appearNote.reactions_count > 0">{{ appearNote.reactions_count }}</p>
 | 
									<fa icon="plus"/>
 | 
				
			||||||
			</button>
 | 
								</button>
 | 
				
			||||||
			<button @click="menu()" ref="menuButton">
 | 
								<button @click="menu()" ref="menuButton">
 | 
				
			||||||
				<fa icon="ellipsis-h"/>
 | 
									<fa icon="ellipsis-h"/>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -53,8 +53,8 @@
 | 
				
			||||||
				<button v-else class="inhibitedButton">
 | 
									<button v-else class="inhibitedButton">
 | 
				
			||||||
					<fa icon="ban"/>
 | 
										<fa icon="ban"/>
 | 
				
			||||||
				</button>
 | 
									</button>
 | 
				
			||||||
				<button class="reactionButton" :class="{ reacted: appearNote.myReaction != null }" @click="react()" ref="reactButton" :title="$t('add-reaction')">
 | 
									<button class="reactionButton" :class="{ reacted: appearNote.myReaction != null }" v-if="!isMyNote" @click="react()" ref="reactButton" :title="$t('add-reaction')">
 | 
				
			||||||
					<fa icon="plus"/><p class="count" v-if="appearNote.reactions_count > 0">{{ appearNote.reactions_count }}</p>
 | 
										<fa icon="plus"/>
 | 
				
			||||||
				</button>
 | 
									</button>
 | 
				
			||||||
				<button @click="menu()" ref="menuButton">
 | 
									<button @click="menu()" ref="menuButton">
 | 
				
			||||||
					<fa icon="ellipsis-h"/>
 | 
										<fa icon="ellipsis-h"/>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -72,8 +72,8 @@
 | 
				
			||||||
			<button v-else>
 | 
								<button v-else>
 | 
				
			||||||
				<fa icon="ban"/>
 | 
									<fa icon="ban"/>
 | 
				
			||||||
			</button>
 | 
								</button>
 | 
				
			||||||
			<button :class="{ reacted: appearNote.myReaction != null }" @click="react()" ref="reactButton" :title="$t('title')">
 | 
								<button :class="{ reacted: appearNote.myReaction != null }" @click="react()" v-if="!isMyNote" ref="reactButton" :title="$t('title')">
 | 
				
			||||||
				<fa icon="plus"/><p class="count" v-if="appearNote.reactions_count > 0">{{ appearNote.reactions_count }}</p>
 | 
									<fa icon="plus"/>
 | 
				
			||||||
			</button>
 | 
								</button>
 | 
				
			||||||
			<button @click="menu()" ref="menuButton">
 | 
								<button @click="menu()" ref="menuButton">
 | 
				
			||||||
				<fa icon="ellipsis-h"/>
 | 
									<fa icon="ellipsis-h"/>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -49,8 +49,8 @@
 | 
				
			||||||
				<button v-else>
 | 
									<button v-else>
 | 
				
			||||||
					<fa icon="ban"/>
 | 
										<fa icon="ban"/>
 | 
				
			||||||
				</button>
 | 
									</button>
 | 
				
			||||||
				<button :class="{ reacted: appearNote.myReaction != null }" @click="react()" ref="reactButton">
 | 
									<button :class="{ reacted: appearNote.myReaction != null }" @click="react()" v-if="!isMyNote" ref="reactButton">
 | 
				
			||||||
					<fa icon="plus"/><p class="count" v-if="appearNote.reactions_count > 0">{{ appearNote.reactions_count }}</p>
 | 
										<fa icon="plus"/>
 | 
				
			||||||
				</button>
 | 
									</button>
 | 
				
			||||||
				<button class="menu" @click="menu()" ref="menuButton">
 | 
									<button class="menu" @click="menu()" ref="menuButton">
 | 
				
			||||||
					<fa icon="ellipsis-h"/>
 | 
										<fa icon="ellipsis-h"/>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue