From bff81c6b2b34ca855ea6b1cc00bea00638a796d0 Mon Sep 17 00:00:00 2001 From: notfire Date: Wed, 26 Feb 2025 08:58:51 -0500 Subject: [PATCH] add more options for confirming visibility --- .../post_status_form/post_status_form.js | 18 ++++++------ .../settings_modal/tabs/general_tab.vue | 29 +++++++++++++++++-- src/i18n/en.json | 9 ++++-- src/modules/config.js | 6 +++- src/modules/instance.js | 6 +++- 5 files changed, 53 insertions(+), 15 deletions(-) diff --git a/src/components/post_status_form/post_status_form.js b/src/components/post_status_form/post_status_form.js index 7cf65211..853775ed 100644 --- a/src/components/post_status_form/post_status_form.js +++ b/src/components/post_status_form/post_status_form.js @@ -790,16 +790,16 @@ const PostStatusForm = { this.postStatus(finEvent, finNewStatus, finOpts) }, handlePost (event, newStatus, opts = {}) { - if (this.mergedConfig.modalOnPubPost) { - if (newStatus.visibility === "public" || newStatus.visibility === "unlisted" || newStatus.visibility === "local") { - finEvent = event - finNewStatus = newStatus - finOpts = opts + if ((newStatus.visibility === "direct" && this.mergedConfig.modalOnDirectPost) + || (newStatus.visibility === "private" && this.mergedConfig.modalOnPrivatePost) + || (newStatus.visibility === "unlisted" && this.mergedConfig.modalOnUnlistedPost) + || (newStatus.visibility === "public" && this.mergedConfig.modalOnPublicPost) + || (newStatus.visibility === "local" && this.mergedConfig.modalOnLocalPost)) { + finEvent = event + finNewStatus = newStatus + finOpts = opts - this.showingPostConfirmDialog = true - } else { - this.postStatus(event, newStatus, opts = {}) - } + this.showingPostConfirmDialog = true } else { this.postStatus(event, newStatus, opts = {}) } diff --git a/src/components/settings_modal/tabs/general_tab.vue b/src/components/settings_modal/tabs/general_tab.vue index 4b33ec63..46392eb5 100644 --- a/src/components/settings_modal/tabs/general_tab.vue +++ b/src/components/settings_modal/tabs/general_tab.vue @@ -320,9 +320,34 @@ {{ $t('settings.confirm_dialogs_deny_follow') }} + + +
  • + {{ $t('settings.confirm_visibility_dialogs') }} + diff --git a/src/i18n/en.json b/src/i18n/en.json index 7b75fff5..c85d450e 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -395,7 +395,7 @@ "media_not_sensitive_warning": "You have a Content Warning, but the attachments are not marked as sensitive!", "new_status": "New post", "post": "Post", - "post_confirm": "Are you sure you want to post this publicly?", + "post_confirm": "Are you sure you want to post this?", "post_confirm_accept_button": "Yes, post", "post_confirm_cancel_button": "No, cancel", "post_confirm_title": "Confirm post visibility", @@ -516,7 +516,12 @@ "confirm_dialogs_delete": "Deleting a post", "confirm_dialogs_deny_follow": "Rejecting a follow request", "confirm_dialogs_mute": "Muting someone", - "confirm_dialogs_public_post": "Posting unlisted or publicly", + "confirm_visibility_dialogs": "Visibility confirmations:", + "confirm_visibility_dialogs_direct_post": "Posting with \"direct\" visibility", + "confirm_visibility_dialogs_private_post": "Posting with \"private\" visibility", + "confirm_visibility_dialogs_unlisted_post": "Posting with \"unlisted\" visibility", + "confirm_visibility_dialogs_public_post": "Posting with \"public\" visibility", + "confirm_visibility_dialogs_local_post": "Posting with \"local\" visibility", "confirm_dialogs_repeat": "Boosting a post", "confirm_dialogs_unfollow": "Unfollowing someone", "confirm_new_password": "Confirm new password", diff --git a/src/modules/config.js b/src/modules/config.js index d18ee447..4dee4468 100644 --- a/src/modules/config.js +++ b/src/modules/config.js @@ -90,7 +90,11 @@ export const defaultState = { modalOnLogout: undefined, // instance default modalOnApproveFollow: undefined, // instance default modalOnDenyFollow: undefined, // instance default - modalOnPubPost: undefined, // instance default + modalOnDirectPost: undefined, // instance default + modalOnPrivatePost: undefined, // instance default + modalOnUnlistedPost: undefined, // instance default + modalOnPublicPost: undefined, // instance default + modalOnLocalPost: undefined, // instance default playVideosInModal: false, useOneClickNsfw: false, useContainFit: true, diff --git a/src/modules/instance.js b/src/modules/instance.js index d33932bf..e75882b2 100644 --- a/src/modules/instance.js +++ b/src/modules/instance.js @@ -47,7 +47,11 @@ const defaultState = { modalOnLogout: true, modalOnApproveFollow: false, modalOnDenyFollow: false, - modalOnPubPost: false, + modalOnDirectPost: false, + modalOnPrivatePost: false, + modalOnUnlistedPost: false, + modalOnPublicPost: false, + modalOnLocalPost: false, loginMethod: 'password', logo: '/static/logo.svg', logoMargin: '.2em',