edit_status_modal.js (1824B)
- import PostStatusForm from '../post_status_form/post_status_form.vue'
- import Modal from '../modal/modal.vue'
- import statusPosterService from '../../services/status_poster/status_poster.service.js'
- import get from 'lodash/get'
- const EditStatusModal = {
- components: {
- PostStatusForm,
- Modal
- },
- data () {
- return {
- resettingForm: false
- }
- },
- computed: {
- isLoggedIn () {
- return !!this.$store.state.users.currentUser
- },
- modalActivated () {
- return this.$store.state.editStatus.modalActivated
- },
- isFormVisible () {
- return this.isLoggedIn && !this.resettingForm && this.modalActivated
- },
- params () {
- return this.$store.state.editStatus.params || {}
- }
- },
- watch: {
- params (newVal, oldVal) {
- if (get(newVal, 'statusId') !== get(oldVal, 'statusId')) {
- this.resettingForm = true
- this.$nextTick(() => {
- this.resettingForm = false
- })
- }
- },
- isFormVisible (val) {
- if (val) {
- this.$nextTick(() => this.$el && this.$el.querySelector('textarea').focus())
- }
- }
- },
- methods: {
- doEditStatus ({ status, spoilerText, sensitive, media, contentType, poll }) {
- const params = {
- store: this.$store,
- statusId: this.$store.state.editStatus.params.statusId,
- status,
- spoilerText,
- sensitive,
- poll,
- media,
- contentType
- }
- return statusPosterService.editStatus(params)
- .then((data) => {
- return data
- })
- .catch((err) => {
- console.error('Error editing status', err)
- return {
- error: err.message
- }
- })
- },
- closeModal () {
- this.$store.dispatch('closeEditStatusModal')
- }
- }
- }
- export default EditStatusModal