Compare commits

..

No commits in common. "1a9d4e4dd58b97f500de4fcdffb93b7ee48cdf1e" and "ee618296cd1c0060ee4898bc03a84242ac6cbfcd" have entirely different histories.

13 changed files with 66 additions and 96 deletions

View file

@ -1 +0,0 @@
Chat view for threads

View file

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

View file

@ -367,6 +367,7 @@ const Chat = {
} }
}, },
async startFetching() { async startFetching() {
console.log(this.statusId, this.chatUserId)
if (!this.isConversation) { if (!this.isConversation) {
try { try {
const { data } = await getOrCreateChat({ const { data } = await getOrCreateChat({

View file

@ -21,9 +21,8 @@
<div class="title"> <div class="title">
<template v-if="isConversation"> <template v-if="isConversation">
<RichContent <RichContent
v-if="messages[0]?.summary_raw_html" v-if="messages[0]?.summary"
:html="messages[0].summary_raw_html" :html="messages[0].summary"
:emoji="messages[0].emojis"
/> />
<template v-else> <template v-else>
{{ $t('timeline.conversation') }} {{ $t('timeline.conversation') }}

View file

@ -11,9 +11,8 @@
> >
<h1 class="title"> <h1 class="title">
<RichContent <RichContent
v-if="conversation[0]?.summary_raw_html" v-if="conversation[0]?.summary"
:html="conversation[0].summary_raw_html" :html="conversation[0].summary"
:emoji="conversation[0].emojis"
/> />
<template v-else> <template v-else>
{{ $t('timeline.conversation') }} {{ $t('timeline.conversation') }}

View file

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

View file

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

View file

@ -200,6 +200,7 @@ const Status = {
) )
}, },
status() { status() {
console.log('s', this.statusoid)
if (this.retweet) { if (this.retweet) {
return this.statusoid.retweeted_status return this.statusoid.retweeted_status
} else { } else {

View file

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

View file

@ -5,8 +5,6 @@ import ActionButton from './action_button.vue'
import { useAdminSettingsStore } from 'src/stores/admin_settings.js' 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' import { library } from '@fortawesome/fontawesome-svg-core'
import { import {
faEnvelope, faEnvelope,
@ -51,11 +49,6 @@ export default {
this.$store.dispatch('fetchDomainMutes') this.$store.dispatch('fetchDomainMutes')
} }
}, },
data() {
return {
randomSeed: genRandomSeed(),
}
},
computed: { computed: {
buttonClass() { buttonClass() {
return [ return [

View file

@ -188,6 +188,7 @@ export const useInterfaceStore = defineStore('interface', {
this.globalNotices = this.globalNotices.filter((n) => n !== notice) this.globalNotices = this.globalNotices.filter((n) => n !== notice)
}, },
setGlobalError({ error, instance, info }) { setGlobalError({ error, instance, info }) {
console.log(info)
switch (info) { switch (info) {
case 'https://vuejs.org/error-reference/#runtime-13': { case 'https://vuejs.org/error-reference/#runtime-13': {
this.globalError = { this.globalError = {
@ -205,6 +206,7 @@ export const useInterfaceStore = defineStore('interface', {
break break
} }
} }
console.log(this.globalError)
}, },
clearGlobalError() { clearGlobalError() {
this.globalError = null this.globalError = null

View file

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

View file

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