From 4313b386f093482e9c01041e506f3f599d34b832 Mon Sep 17 00:00:00 2001 From: jadiunr Date: Mon, 11 Sep 2023 06:33:46 +0900 Subject: [PATCH] Add support selectable visibility of repeat --- src/components/retweet_button/retweet_button.js | 15 ++++++++++++--- src/components/retweet_button/retweet_button.vue | 5 +++++ src/modules/statuses.js | 2 +- src/services/api/api.service.js | 4 ++-- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/components/retweet_button/retweet_button.js b/src/components/retweet_button/retweet_button.js index 15542a11..85213240 100644 --- a/src/components/retweet_button/retweet_button.js +++ b/src/components/retweet_button/retweet_button.js @@ -1,4 +1,5 @@ import ConfirmModal from '../confirm_modal/confirm_modal.vue' +import ScopeSelector from '../scope_selector/scope_selector.vue' import { library } from '@fortawesome/fontawesome-svg-core' import { faRetweet } from '@fortawesome/free-solid-svg-icons' @@ -7,12 +8,14 @@ library.add(faRetweet) const RetweetButton = { props: ['status', 'loggedIn', 'visibility'], components: { - ConfirmModal + ConfirmModal, + ScopeSelector }, data () { return { animated: false, - showingConfirmDialog: false + showingConfirmDialog: false, + retweetVisibility: this.$store.state.users.currentUser.default_scope } }, methods: { @@ -25,7 +28,7 @@ const RetweetButton = { }, doRetweet () { if (!this.status.repeated) { - this.$store.dispatch('retweet', { id: this.status.id }) + this.$store.dispatch('retweet', { id: this.status.id, visibility: this.retweetVisibility }) } else { this.$store.dispatch('unretweet', { id: this.status.id }) } @@ -40,6 +43,9 @@ const RetweetButton = { }, hideConfirmDialog () { this.showingConfirmDialog = false + }, + changeVis (visibility) { + this.retweetVisibility = visibility } }, computed: { @@ -54,6 +60,9 @@ const RetweetButton = { }, remoteInteractionLink () { return this.$store.getters.remoteInteractionLink({ statusId: this.status.id }) + }, + userDefaultScope () { + return this.$store.state.users.currentUser.default_scope } } } diff --git a/src/components/retweet_button/retweet_button.vue b/src/components/retweet_button/retweet_button.vue index ae044f23..c7055b28 100644 --- a/src/components/retweet_button/retweet_button.vue +++ b/src/components/retweet_button/retweet_button.vue @@ -49,6 +49,11 @@ @cancelled="hideConfirmDialog" > {{ $t('status.repeat_confirm') }} + diff --git a/src/modules/statuses.js b/src/modules/statuses.js index 1080462c..04623f89 100644 --- a/src/modules/statuses.js +++ b/src/modules/statuses.js @@ -666,7 +666,7 @@ const statuses = { retweet ({ rootState, commit }, status) { // Optimistic retweeting... commit('setRetweeted', { status, value: true }) - rootState.api.backendInteractor.retweet({ id: status.id }) + rootState.api.backendInteractor.retweet({ id: status.id, visibility: status.visibility }) .then(status => commit('setRetweetedConfirm', { status: status.retweeted_status, user: rootState.users.currentUser })) }, unretweet ({ rootState, commit }, status) { diff --git a/src/services/api/api.service.js b/src/services/api/api.service.js index de21ef3b..03e91ba1 100644 --- a/src/services/api/api.service.js +++ b/src/services/api/api.service.js @@ -822,8 +822,8 @@ const unfavorite = ({ id, credentials }) => { .then((data) => parseStatus(data)) } -const retweet = ({ id, credentials }) => { - return promisedRequest({ url: MASTODON_RETWEET_URL(id), method: 'POST', credentials }) +const retweet = ({ id, visibility, credentials }) => { + return promisedRequest({ url: MASTODON_RETWEET_URL(id), method: 'POST', payload: { visibility }, credentials }) .then((data) => parseStatus(data)) }