akkoma-fe/src/components/status_popover/status_popover.js

44 lines
1 KiB
JavaScript
Raw Normal View History

import { find } from 'lodash'
const StatusPopover = {
name: 'StatusPopover',
props: [
'statusId'
],
data () {
return {
preview: null,
popperOptions: {
modifiers: {
preventOverflow: { padding: { top: 50 }, boundariesElement: 'viewport' }
}
}
}
},
components: {
Status: () => import('../status/status.vue')
},
methods: {
enter () {
const id = this.statusId
const statuses = this.$store.state.statuses.allStatuses
if (!this.preview) {
// if we have the status somewhere already
this.preview = find(statuses, { id })
// or if we have to fetch it
if (!this.preview) {
this.$store.state.api.backendInteractor.fetchStatus({ id }).then((status) => {
this.preview = status
this.$nextTick(this.$refs.popper.updatePopper)
})
}
} else if (this.preview.id !== id) {
this.preview = find(statuses, 'id')
}
}
}
}
export default StatusPopover