Eliminate mutable variable to construct menu items (#3183)
This commit is contained in:
		
							parent
							
								
									380f9bb975
								
							
						
					
					
						commit
						9f32713093
					
				|  | @ -10,84 +10,69 @@ import i18n from '../../../i18n'; | |||
| import { url } from '../../../config'; | ||||
| import copyToClipboard from '../../../common/scripts/copy-to-clipboard'; | ||||
| import Ok from './ok.vue'; | ||||
| import { concat, intersperse } from '../../../../../prelude/array'; | ||||
| 
 | ||||
| export default Vue.extend({ | ||||
| 	i18n: i18n('common/views/components/note-menu.vue'), | ||||
| 	props: ['note', 'source', 'compact'], | ||||
| 	computed: { | ||||
| 		items() { | ||||
| 			const items = [{ | ||||
| 				icon: 'info-circle', | ||||
| 				text: this.$t('detail'), | ||||
| 				action: this.detail | ||||
| 			}, { | ||||
| 				icon: 'link', | ||||
| 				text: this.$t('copy-link'), | ||||
| 				action: this.copyLink | ||||
| 			}]; | ||||
| 
 | ||||
| 			if (this.note.uri) { | ||||
| 				items.push({ | ||||
| 					icon: 'external-link-square-alt', | ||||
| 					text: this.$t('remote'), | ||||
| 					action: () => { | ||||
| 						window.open(this.note.uri, '_blank'); | ||||
| 					} | ||||
| 				}); | ||||
| 			} | ||||
| 
 | ||||
| 			items.push(null); | ||||
| 
 | ||||
| 			if (this.note.isFavorited) { | ||||
| 				items.push({ | ||||
| 					icon: 'star', | ||||
| 					text: this.$t('unfavorite'), | ||||
| 					action: this.unfavorite | ||||
| 				}); | ||||
| 			} else { | ||||
| 				items.push({ | ||||
| 					icon: 'star', | ||||
| 					text: this.$t('favorite'), | ||||
| 					action: this.favorite | ||||
| 				}); | ||||
| 			} | ||||
| 
 | ||||
| 			if (this.note.userId == this.$store.state.i.id) { | ||||
| 				if ((this.$store.state.i.pinnedNoteIds || []).includes(this.note.id)) { | ||||
| 					items.push({ | ||||
| 						icon: 'thumbtack', | ||||
| 						text: this.$t('unpin'), | ||||
| 						action: this.unpin | ||||
| 					}); | ||||
| 				} else { | ||||
| 					items.push({ | ||||
| 						icon: 'thumbtack', | ||||
| 						text: this.$t('pin'), | ||||
| 						action: this.pin | ||||
| 					}); | ||||
| 				} | ||||
| 			} | ||||
| 
 | ||||
| 			if (this.note.userId == this.$store.state.i.id || this.$store.state.i.isAdmin) { | ||||
| 				items.push(null); | ||||
| 				items.push({ | ||||
| 					icon: ['far', 'trash-alt'], | ||||
| 					text: this.$t('delete'), | ||||
| 					action: this.del | ||||
| 				}); | ||||
| 			} | ||||
| 
 | ||||
| 			return items; | ||||
| 		items(): any[] { | ||||
| 			return concat(intersperse([null], [ | ||||
| 				[ | ||||
| 					[{ | ||||
| 						icon: 'info-circle', | ||||
| 						text: this.$t('detail'), | ||||
| 						action: this.detail | ||||
| 					}], [{ | ||||
| 						icon: 'link', | ||||
| 						text: this.$t('copy-link'), | ||||
| 						action: this.copyLink | ||||
| 					}], this.note.uri ? [{ | ||||
| 						icon: 'external-link-square-alt', | ||||
| 						text: this.$t('remote'), | ||||
| 						action: () => { | ||||
| 							window.open(this.note.uri, '_blank'); | ||||
| 						} | ||||
| 					}] : [] | ||||
| 				], | ||||
| 				[ | ||||
| 					this.note.isFavorited ? [{ | ||||
| 						icon: 'star', | ||||
| 						text: this.$t('unfavorite'), | ||||
| 						action: this.unfavorite | ||||
| 					}] : [{ | ||||
| 						icon: 'star', | ||||
| 						text: this.$t('favorite'), | ||||
| 						action: this.favorite | ||||
| 					}], this.note.userId == this.$store.state.i.id ? [ | ||||
| 						(this.$store.state.i.pinnedNoteIds || []).includes(this.note.id) ? [{ | ||||
| 							icon: 'thumbtack', | ||||
| 							text: this.$t('unpin'), | ||||
| 							action: this.unpin | ||||
| 						}] : [{ | ||||
| 							icon: 'thumbtack', | ||||
| 							text: this.$t('pin'), | ||||
| 							action: this.pin | ||||
| 						}] | ||||
| 					] : [] | ||||
| 				], [ | ||||
| 					this.note.userId == this.$store.state.i.id || this.$store.state.i.isAdmin ? [{ | ||||
| 						icon: ['far', 'trash-alt'], | ||||
| 						text: this.$t('delete'), | ||||
| 						action: this.del | ||||
| 					}] : [] | ||||
| 				] | ||||
| 			].map(concat).filter(x => x.length > 0))); | ||||
| 		} | ||||
| 	}, | ||||
| 
 | ||||
| 	methods: { | ||||
| 		detail() { | ||||
| 			this.$router.push(`/notes/${ this.note.id }`); | ||||
| 			this.$router.push(`/notes/${this.note.id}`); | ||||
| 		}, | ||||
| 
 | ||||
| 		copyLink() { | ||||
| 			copyToClipboard(`${url}/notes/${ this.note.id }`); | ||||
| 			copyToClipboard(`${url}/notes/${this.note.id}`); | ||||
| 		}, | ||||
| 
 | ||||
| 		pin() { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue