parent
							
								
									c107333f56
								
							
						
					
					
						commit
						1d814ba0e1
					
				
					 4 changed files with 57 additions and 9 deletions
				
			
		| 
						 | 
				
			
			@ -10,14 +10,15 @@ import i18n from '../../../i18n';
 | 
			
		|||
import { url } from '../../../config';
 | 
			
		||||
import copyToClipboard from '../../../common/scripts/copy-to-clipboard';
 | 
			
		||||
import { concat, intersperse } from '../../../../../prelude/array';
 | 
			
		||||
import { faCopy } from '@fortawesome/free-regular-svg-icons';
 | 
			
		||||
import { faCopy, faEye, faEyeSlash } from '@fortawesome/free-regular-svg-icons';
 | 
			
		||||
 | 
			
		||||
export default Vue.extend({
 | 
			
		||||
	i18n: i18n('common/views/components/note-menu.vue'),
 | 
			
		||||
	props: ['note', 'source'],
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			isFavorited: false
 | 
			
		||||
			isFavorited: false,
 | 
			
		||||
			isWatching: false
 | 
			
		||||
		};
 | 
			
		||||
	},
 | 
			
		||||
	computed: {
 | 
			
		||||
| 
						 | 
				
			
			@ -55,6 +56,15 @@ export default Vue.extend({
 | 
			
		|||
				text: this.$t('favorite'),
 | 
			
		||||
				action: this.favorite
 | 
			
		||||
			},
 | 
			
		||||
			this.note.userId != this.$store.state.i.id ? this.isWatching ? {
 | 
			
		||||
				icon: faEyeSlash,
 | 
			
		||||
				text: this.$t('unwatch'),
 | 
			
		||||
				action: this.unwatch
 | 
			
		||||
			} : {
 | 
			
		||||
				icon: faEye,
 | 
			
		||||
				text: this.$t('watch'),
 | 
			
		||||
				action: this.watch
 | 
			
		||||
			} : undefined,
 | 
			
		||||
			this.note.userId == this.$store.state.i.id ? (this.$store.state.i.pinnedNoteIds || []).includes(this.note.id) ? {
 | 
			
		||||
				icon: 'thumbtack',
 | 
			
		||||
				text: this.$t('unpin'),
 | 
			
		||||
| 
						 | 
				
			
			@ -78,6 +88,7 @@ export default Vue.extend({
 | 
			
		|||
			noteId: this.note.id
 | 
			
		||||
		}).then(state => {
 | 
			
		||||
			this.isFavorited = state.isFavorited;
 | 
			
		||||
			this.isWatching = state.isWatching;
 | 
			
		||||
		});
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -166,6 +177,30 @@ export default Vue.extend({
 | 
			
		|||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		watch() {
 | 
			
		||||
			this.$root.api('notes/watching/create', {
 | 
			
		||||
				noteId: this.note.id
 | 
			
		||||
			}).then(() => {
 | 
			
		||||
				this.$root.dialog({
 | 
			
		||||
					type: 'success',
 | 
			
		||||
					splash: true
 | 
			
		||||
				});
 | 
			
		||||
				this.destroyDom();
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		unwatch() {
 | 
			
		||||
			this.$root.api('notes/watching/delete', {
 | 
			
		||||
				noteId: this.note.id
 | 
			
		||||
			}).then(() => {
 | 
			
		||||
				this.$root.dialog({
 | 
			
		||||
					type: 'success',
 | 
			
		||||
					splash: true
 | 
			
		||||
				});
 | 
			
		||||
				this.destroyDom();
 | 
			
		||||
			});
 | 
			
		||||
		},
 | 
			
		||||
 | 
			
		||||
		closed() {
 | 
			
		||||
			this.$nextTick(() => {
 | 
			
		||||
				this.destroyDom();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
import $ from 'cafy'; import ID, { transform } from '../../../../misc/cafy-id';
 | 
			
		||||
import define from '../../define';
 | 
			
		||||
import Favorite from '../../../../models/favorite';
 | 
			
		||||
import NoteWatching from '../../../../models/note-watching';
 | 
			
		||||
 | 
			
		||||
export const meta = {
 | 
			
		||||
	stability: 'stable',
 | 
			
		||||
| 
						 | 
				
			
			@ -25,14 +26,23 @@ export const meta = {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
export default define(meta, (ps, user) => new Promise(async (res, rej) => {
 | 
			
		||||
	const favorite = await Favorite.count({
 | 
			
		||||
		userId: user._id,
 | 
			
		||||
		noteId: ps.noteId
 | 
			
		||||
	}, {
 | 
			
		||||
		limit: 1
 | 
			
		||||
	});
 | 
			
		||||
	const [favorite, watching] = await Promise.all([
 | 
			
		||||
		Favorite.count({
 | 
			
		||||
			userId: user._id,
 | 
			
		||||
			noteId: ps.noteId
 | 
			
		||||
		}, {
 | 
			
		||||
			limit: 1
 | 
			
		||||
		}),
 | 
			
		||||
		NoteWatching.count({
 | 
			
		||||
			userId: user._id,
 | 
			
		||||
			noteId: ps.noteId
 | 
			
		||||
		}, {
 | 
			
		||||
			limit: 1
 | 
			
		||||
		})
 | 
			
		||||
	]);
 | 
			
		||||
 | 
			
		||||
	res({
 | 
			
		||||
		isFavorited: favorite !== 0
 | 
			
		||||
		isFavorited: favorite !== 0,
 | 
			
		||||
		isWatching: watching !== 0
 | 
			
		||||
	});
 | 
			
		||||
}));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue