This commit is contained in:
Henry Jameson 2026-08-04 14:51:28 +03:00
commit 37900bb998
7 changed files with 83 additions and 58 deletions

View file

@ -186,7 +186,11 @@ export default {
return useShoutStore().joined
},
isChats() {
return this.$route.name === 'chat' || this.$route.name === 'chats' || this.$route.name === 'conversation2'
return (
this.$route.name === 'chat' ||
this.$route.name === 'chats' ||
this.$route.name === 'conversation2'
)
},
isListEdit() {
return this.$route.name === 'lists-edit'

View file

@ -43,7 +43,7 @@ const Draft = {
return { statusId: this.draft.refId }
} else if (this.draft.type === 'reply') {
return {
repliedStatus: this.refStatus
repliedStatus: this.refStatus,
}
} else {
return {}

View file

@ -351,17 +351,14 @@ const PostStatusForm = {
return this.newStatus.quote !== null
},
quotable() {
if (
!this.quotingAvailable ||
!this.isReply
) {
if (!this.quotingAvailable || !this.isReply) {
return false
}
if (
this.repliedStatus.visibility === 'public' ||
this.repliedStatus.visibility === 'unlisted' ||
this.repliedStatus.visibility === 'local'
this.repliedStatus.visibility === 'unlisted' ||
this.repliedStatus.visibility === 'local'
) {
return true
} else if (this.repliedStatus.visibility === 'private') {
@ -703,7 +700,6 @@ const PostStatusForm = {
this.previewLoading = false
return
}
const newStatus = this.newStatus
this.previewLoading = true
statusPoster
@ -961,7 +957,8 @@ const PostStatusForm = {
},
// Quote
toggleQuoteForm() { // This is for the "attach quote" button
toggleQuoteForm() {
// This is for the "attach quote" button
if (!this.hasQuote) {
this.newStatus.quote = {}
this.newStatus.quote.thread = false
@ -983,14 +980,13 @@ const PostStatusForm = {
saveDraft() {
if (!this.disableDraft && !this.saveInhibited) {
if (this.safeToSaveDraft) {
return this
.$store
return this.$store
.dispatch('addOrSaveDraft', {
draft: {
type: this.statusType,
refId: this.refId,
...this.newStatus
}
...this.newStatus,
},
})
.then((id) => {
if (this.newStatus.id !== id) {

View file

@ -18,11 +18,11 @@ import {
faChevronDown,
faChevronRight,
faComments,
faList,
faExternalLinkAlt,
faEye,
faEyeSlash,
faHistory,
faList,
faMinus,
faPencil,
faPlus,

View file

@ -4,6 +4,7 @@ import Popover from 'src/components/popover/popover.vue'
import ActionButton from './action_button.vue'
import { useAdminSettingsStore } from 'src/stores/admin_settings.js'
import genRandomSeed from 'src/services/random_seed/random_seed.service.js'
import { library } from '@fortawesome/fontawesome-svg-core'

View file

@ -34,8 +34,7 @@ const global = {
api: {},
users: {},
statuses: {
allStatusesObject: {
},
allStatusesObject: {},
},
},
},

View file

@ -1,8 +1,5 @@
import { vi } from 'vitest'
import { createTestingPinia } from '@pinia/testing'
import { mount } from '@vue/test-utils'
import { setActivePinia } from 'pinia'
import { vi } from 'vitest'
import PostStatusForm from 'src/components/post_status_form/post_status_form.vue'
import { mountOpts } from '../../../fixtures/setup_test'
@ -69,9 +66,12 @@ describe('PostStatusForm', () => {
})
it('Initializes a reply form', () => {
const wrapper = mount(PostStatusForm, replyMountOpts({
repliedStatus: repliedStatus,
}))
const wrapper = mount(
PostStatusForm,
replyMountOpts({
repliedStatus: repliedStatus,
}),
)
useInstanceCapabilitiesStore().quotingAvailable = true
@ -89,9 +89,12 @@ describe('PostStatusForm', () => {
})
it('Copies scope and subject line, disables quoting for locked posts', () => {
const wrapper = mount(PostStatusForm, replyMountOpts({
repliedStatus: repliedStatus2,
}))
const wrapper = mount(
PostStatusForm,
replyMountOpts({
repliedStatus: repliedStatus2,
}),
)
useInstanceCapabilitiesStore().quotingAvailable = true
@ -125,7 +128,7 @@ describe('PostStatusForm', () => {
// ...set our settings...
useMergedConfigStore().mergedConfig = {
...useMergedConfigStore().mergedConfig,
subjectLineBehavior: 'masto'
subjectLineBehavior: 'masto',
}
// ...and only then mount our component
@ -145,11 +148,14 @@ describe('PostStatusForm', () => {
})
it('Sets status to statusText without mentions if mentions line is enabled', () => {
const wrapper = mount(PostStatusForm, replyMountOpts({
repliedStatus: repliedStatus2,
statusText: 'testing',
mentionsLine: true,
}))
const wrapper = mount(
PostStatusForm,
replyMountOpts({
repliedStatus: repliedStatus2,
statusText: 'testing',
mentionsLine: true,
}),
)
expect(wrapper.vm.statusType).to.equal('reply')
expect(wrapper.vm.isReply).to.equal(true)
@ -158,9 +164,12 @@ describe('PostStatusForm', () => {
})
it('Sets mention when asked for it', () => {
const wrapper = mount(PostStatusForm, replyMountOpts({
profileMention: repliedUser,
}))
const wrapper = mount(
PostStatusForm,
replyMountOpts({
profileMention: repliedUser,
}),
)
expect(wrapper.vm.statusType).to.equal('mention')
expect(wrapper.vm.isReply).to.equal(false)
@ -169,9 +178,12 @@ describe('PostStatusForm', () => {
})
it('Initializes quote when reply/quote toggled to quote', () => {
const wrapper = mount(PostStatusForm, replyMountOpts({
repliedStatus: repliedStatus2,
}))
const wrapper = mount(
PostStatusForm,
replyMountOpts({
repliedStatus: repliedStatus2,
}),
)
expect(wrapper.vm.statusType).to.equal('reply')
expect(wrapper.vm.isReply).to.equal(true)
@ -182,9 +194,12 @@ describe('PostStatusForm', () => {
})
it('Resets quote when reply/quote toggled to reply', () => {
const wrapper = mount(PostStatusForm, replyMountOpts({
repliedStatus: repliedStatus2,
}))
const wrapper = mount(
PostStatusForm,
replyMountOpts({
repliedStatus: repliedStatus2,
}),
)
expect(wrapper.vm.statusType).to.equal('reply')
expect(wrapper.vm.isReply).to.equal(true)
@ -196,32 +211,42 @@ describe('PostStatusForm', () => {
})
it('Initializes and reset quote when toggling quote attachment', () => {
const wrapper = mount(PostStatusForm, replyMountOpts({
repliedStatus: repliedStatus2,
}))
const wrapper = mount(
PostStatusForm,
replyMountOpts({
repliedStatus: repliedStatus2,
}),
)
expect(wrapper.vm.statusType).to.equal('reply')
expect(wrapper.vm.isReply).to.equal(true)
wrapper.vm.toggleQuoteForm()
expect(wrapper.vm.newStatus.quote).to.eql({ thread: false, id: null, url: '' })
expect(wrapper.vm.newStatus.quote).to.eql({
thread: false,
id: null,
url: '',
})
wrapper.vm.toggleQuoteForm()
expect(wrapper.vm.newStatus.quote).to.eql(null)
})
it('Status editing', () => {
const wrapper = mount(PostStatusForm, replyMountOpts({
statusId: 'edited',
statusText: 'text',
statusSubject: 'heading',
statusIsSensitive: true,
statusPoll: {},
statusQuote: {},
statusFiles: [],
statusMediaDescriptions: {},
statusVisibility: 'unlisted',
statusContentType: 'text/markdown',
}))
const wrapper = mount(
PostStatusForm,
replyMountOpts({
statusId: 'edited',
statusText: 'text',
statusSubject: 'heading',
statusIsSensitive: true,
statusPoll: {},
statusQuote: {},
statusFiles: [],
statusMediaDescriptions: {},
statusVisibility: 'unlisted',
statusContentType: 'text/markdown',
}),
)
expect(wrapper.vm.statusType).to.equal('edit')
expect(wrapper.vm.isReply).to.equal(false) // edits don't support changing reply-to so it's pretty much ignored