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