diff --git a/changelog.d/chat_vew.add b/changelog.d/chat_vew.add
new file mode 100644
index 000000000..7e649d454
--- /dev/null
+++ b/changelog.d/chat_vew.add
@@ -0,0 +1 @@
+Chat view for threads
diff --git a/src/App.js b/src/App.js
index f3f3872bf..4ce6f1abc 100644
--- a/src/App.js
+++ b/src/App.js
@@ -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'
diff --git a/src/components/chat_view/chat_view.js b/src/components/chat_view/chat_view.js
index 33485aebe..f48b75c65 100644
--- a/src/components/chat_view/chat_view.js
+++ b/src/components/chat_view/chat_view.js
@@ -367,7 +367,6 @@ const Chat = {
}
},
async startFetching() {
- console.log(this.statusId, this.chatUserId)
if (!this.isConversation) {
try {
const { data } = await getOrCreateChat({
diff --git a/src/components/chat_view/chat_view.vue b/src/components/chat_view/chat_view.vue
index 146d7d043..e6bef0f84 100644
--- a/src/components/chat_view/chat_view.vue
+++ b/src/components/chat_view/chat_view.vue
@@ -21,8 +21,9 @@
{{ $t('timeline.conversation') }}
diff --git a/src/components/conversation/conversation.vue b/src/components/conversation/conversation.vue
index 945be9749..170ab41d6 100644
--- a/src/components/conversation/conversation.vue
+++ b/src/components/conversation/conversation.vue
@@ -11,8 +11,9 @@
>
{{ $t('timeline.conversation') }}
diff --git a/src/components/draft/draft.js b/src/components/draft/draft.js
index b048782f1..49e186eae 100644
--- a/src/components/draft/draft.js
+++ b/src/components/draft/draft.js
@@ -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 {}
diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js
index 162540c08..02a70e388 100644
--- a/src/components/post_status_form/post_status_form.js
+++ b/src/components/post_status_form/post_status_form.js
@@ -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) {
diff --git a/src/components/status/status.js b/src/components/status/status.js
index b87acc3d7..fb37a7faf 100644
--- a/src/components/status/status.js
+++ b/src/components/status/status.js
@@ -200,7 +200,6 @@ const Status = {
)
},
status() {
- console.log('s', this.statusoid)
if (this.retweet) {
return this.statusoid.retweeted_status
} else {
diff --git a/src/components/status_action_buttons/action_button.js b/src/components/status_action_buttons/action_button.js
index edc969b5b..2434820db 100644
--- a/src/components/status_action_buttons/action_button.js
+++ b/src/components/status_action_buttons/action_button.js
@@ -18,11 +18,11 @@ import {
faChevronDown,
faChevronRight,
faComments,
- faList,
faExternalLinkAlt,
faEye,
faEyeSlash,
faHistory,
+ faList,
faMinus,
faPencil,
faPlus,
diff --git a/src/components/status_action_buttons/action_button_container.js b/src/components/status_action_buttons/action_button_container.js
index fa4a529c6..d031bd6e9 100644
--- a/src/components/status_action_buttons/action_button_container.js
+++ b/src/components/status_action_buttons/action_button_container.js
@@ -5,6 +5,8 @@ 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'
import {
faEnvelope,
@@ -49,6 +51,11 @@ export default {
this.$store.dispatch('fetchDomainMutes')
}
},
+ data() {
+ return {
+ randomSeed: genRandomSeed(),
+ }
+ },
computed: {
buttonClass() {
return [
diff --git a/src/stores/interface.js b/src/stores/interface.js
index 48d7cb061..275d6893d 100644
--- a/src/stores/interface.js
+++ b/src/stores/interface.js
@@ -188,7 +188,6 @@ export const useInterfaceStore = defineStore('interface', {
this.globalNotices = this.globalNotices.filter((n) => n !== notice)
},
setGlobalError({ error, instance, info }) {
- console.log(info)
switch (info) {
case 'https://vuejs.org/error-reference/#runtime-13': {
this.globalError = {
@@ -206,7 +205,6 @@ export const useInterfaceStore = defineStore('interface', {
break
}
}
- console.log(this.globalError)
},
clearGlobalError() {
this.globalError = null
diff --git a/test/unit/specs/components/chat_view.spec.js b/test/unit/specs/components/chat_view.spec.js
index 59b46908b..c308e4fbc 100644
--- a/test/unit/specs/components/chat_view.spec.js
+++ b/test/unit/specs/components/chat_view.spec.js
@@ -34,8 +34,7 @@ const global = {
api: {},
users: {},
statuses: {
- allStatusesObject: {
- },
+ allStatusesObject: {},
},
},
},
diff --git a/test/unit/specs/components/post_status_form.spec.js b/test/unit/specs/components/post_status_form.spec.js
index 0f8a07677..03c0ec8b9 100644
--- a/test/unit/specs/components/post_status_form.spec.js
+++ b/test/unit/specs/components/post_status_form.spec.js
@@ -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