diff options
Diffstat (limited to 'src/components/status')
| -rw-r--r-- | src/components/status/status.js | 25 | ||||
| -rw-r--r-- | src/components/status/status.vue | 21 |
2 files changed, 37 insertions, 9 deletions
diff --git a/src/components/status/status.js b/src/components/status/status.js index 6e82307a..1db074e2 100644 --- a/src/components/status/status.js +++ b/src/components/status/status.js @@ -5,9 +5,11 @@ import DeleteButton from '../delete_button/delete_button.vue' import PostStatusForm from '../post_status_form/post_status_form.vue' import UserCardContent from '../user_card_content/user_card_content.vue' import StillImage from '../still-image/still-image.vue' +import Gallery from '../gallery/gallery.vue' import { filter, find } from 'lodash' import { highlightClass, highlightStyle } from '../../services/user_highlighter/user_highlighter.js' import generateProfileLink from 'src/services/user_profile_link_generator/user_profile_link_generator' +import fileType from 'src/services/file_type/file_type.service' const Status = { name: 'Status', @@ -197,6 +199,24 @@ const Status = { return 'small' } return 'normal' + }, + galleryTypes () { + if (this.attachmentSize === 'hide') { + return [] + } + return this.$store.state.config.playVideosInline + ? ['image'] + : ['image', 'video'] + }, + galleryAttachments () { + return this.status.attachments.filter( + file => fileType.fileMatchesSomeType(this.galleryTypes, file) + ) + }, + nonGalleryAttachments () { + return this.status.attachments.filter( + file => !fileType.fileMatchesSomeType(this.galleryTypes, file) + ) } }, components: { @@ -206,7 +226,8 @@ const Status = { DeleteButton, PostStatusForm, UserCardContent, - StillImage + StillImage, + Gallery }, methods: { visibilityIcon (visibility) { @@ -283,7 +304,7 @@ const Status = { return generateProfileLink(id, name, this.$store.state.instance.restrictedNicknames) }, setMedia () { - const attachments = this.status.attachments + const attachments = this.attachmentSize === 'hide' ? this.status.attachments : this.galleryAttachments return () => this.$store.dispatch('setMedia', attachments) } }, diff --git a/src/components/status/status.vue b/src/components/status/status.vue index d7cab15b..ba3b9a4a 100644 --- a/src/components/status/status.vue +++ b/src/components/status/status.vue @@ -93,16 +93,23 @@ <a v-if="showingMore" href="#" class="status-unhider" @click.prevent="toggleShowMore">Show less</a> </div> - <div v-if='status.attachments && !hideSubjectStatus' class='attachments media-body'> + <div v-if="status.attachments && !hideSubjectStatus" class="attachments media-body"> <attachment + class="non-gallery" + v-for="attachment in nonGalleryAttachments" :size="attachmentSize" - :status-id="status.id" :nsfw="nsfwClickthrough" :attachment="attachment" - :set-media="setMedia()" - v-for="attachment in status.attachments" - :key="attachment.id"> - </attachment> + :allowPlay="true" + :setMedia="setMedia()" + :key="attachment.id" + /> + <gallery + v-if="galleryAttachments.length > 0" + :nsfw="nsfwClickthrough" + :attachments="galleryAttachments" + :setMedia="setMedia()" + /> </div> <div v-if="!noHeading && !noReplyLinks" class='status-actions media-body'> @@ -568,7 +575,7 @@ a.unmute { } } -@media all and (max-width: 960px) { +@media all and (max-width: 800px) { .status-el { .retweet-info { .avatar { |
