summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAya Morisawa <AyaMorisawa4869@gmail.com>2018-11-09 22:35:33 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2018-11-09 22:35:33 +0900
commit9f32713093592ba793cb2347ba08f57032cd4c3a (patch)
tree8adcc64c4373aaa586a03e1db6f9d26d810cbcc1 /src
parent10.46.1 (diff)
downloadmisskey-9f32713093592ba793cb2347ba08f57032cd4c3a.tar.gz
misskey-9f32713093592ba793cb2347ba08f57032cd4c3a.tar.bz2
misskey-9f32713093592ba793cb2347ba08f57032cd4c3a.zip
Eliminate mutable variable to construct menu items (#3183)
Diffstat (limited to 'src')
-rw-r--r--src/client/app/common/views/components/note-menu.vue115
1 files changed, 50 insertions, 65 deletions
diff --git a/src/client/app/common/views/components/note-menu.vue b/src/client/app/common/views/components/note-menu.vue
index 1b4ae8e125..ad761b9391 100644
--- a/src/client/app/common/views/components/note-menu.vue
+++ b/src/client/app/common/views/components/note-menu.vue
@@ -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() {