Fix edit post to allow change quote settings

Also hide Quote Settings if native quote post not supported
pull/1274/merge
Lim Chee Aun 2025-09-20 21:47:49 +08:00
rodzic 6278fba62d
commit 0a1503515b
2 zmienionych plików z 106 dodań i 94 usunięć

Wyświetl plik

@ -23,6 +23,7 @@ import showToast from '../utils/show-toast';
import states, { saveStatus } from '../utils/states';
import store from '../utils/store';
import {
getAPIVersions,
getCurrentAccount,
getCurrentAccountNS,
getCurrentInstanceConfiguration,
@ -178,6 +179,8 @@ function Compose({
const prefs = getPreferences();
const supportsNativeQuote = getAPIVersions()?.mastodon >= 7;
const oninputTextarea = () => {
if (!textareaRef.current) return;
textareaRef.current.dispatchEvent(new Event('input'));
@ -595,9 +598,11 @@ function Compose({
scheduledAt,
quoteApprovalPolicy,
},
quoteStatus: {
...quoteStatus,
},
quoteStatus: quoteStatus
? {
...quoteStatus,
}
: null,
};
if (
!deepEqual(backgroundDraft, prevBackgroundDraft.current) &&
@ -1204,18 +1209,23 @@ function Compose({
params.quoted_status_id = quoteStatus.id;
params.quote_approval_policy = quoteApprovalPolicy;
}
if (editStatus && supports('@mastodon/edit-media-attributes')) {
params.media_attributes = mediaAttachments.map(
(attachment) => {
return {
id: attachment.id,
description: attachment.description,
// focus
// thumbnail
};
},
);
} else if (!editStatus) {
if (editStatus) {
if (supportsNativeQuote) {
params.quote_approval_policy = quoteApprovalPolicy;
}
if (supports('@mastodon/edit-media-attributes')) {
params.media_attributes = mediaAttachments.map(
(attachment) => {
return {
id: attachment.id,
description: attachment.description,
// focus
// thumbnail
};
},
);
}
} else {
params.visibility = visibility;
// params.inReplyToId = replyToStatus?.id || undefined;
params.in_reply_to_id = replyToStatus?.id || undefined;
@ -1674,36 +1684,38 @@ function Compose({
hidden={uiState === 'loading'}
/>
)}
<label
class={`toolbar-button ${highlightQuoteApprovalPolicyField ? 'highlight' : ''}`}
>
<Icon icon="quote2" alt="Quote visibility" />
{quoteApprovalPolicy === 'followers' && (
<Icon icon="group" class="insignificant" />
)}
{quoteApprovalPolicy === 'nobody' && (
<Icon icon="block" class="insignificant" />
)}
<select
name="quoteApprovalPolicy"
value={quoteApprovalPolicy}
onChange={(e) => {
setQuoteApprovalPolicy(e.target.value);
}}
disabled={uiState === 'loading'}
dir="auto"
{supportsNativeQuote && (
<label
class={`toolbar-button ${highlightQuoteApprovalPolicyField ? 'highlight' : ''}`}
>
<option value="public" disabled={disableQuotePolicy}>
<Trans>Anyone can quote</Trans>
</option>
<option value="followers" disabled={disableQuotePolicy}>
<Trans>Your followers can quote</Trans>
</option>
<option value="nobody">
<Trans>Only you can quote</Trans>
</option>
</select>
</label>
<Icon icon="quote2" alt="Quote visibility" />
{quoteApprovalPolicy === 'followers' && (
<Icon icon="group" class="insignificant" />
)}
{quoteApprovalPolicy === 'nobody' && (
<Icon icon="block" class="insignificant" />
)}
<select
name="quoteApprovalPolicy"
value={quoteApprovalPolicy}
onChange={(e) => {
setQuoteApprovalPolicy(e.target.value);
}}
disabled={uiState === 'loading'}
dir="auto"
>
<option value="public" disabled={disableQuotePolicy}>
<Trans>Anyone can quote</Trans>
</option>
<option value="followers" disabled={disableQuotePolicy}>
<Trans>Your followers can quote</Trans>
</option>
<option value="nobody">
<Trans>Only you can quote</Trans>
</option>
</select>
</label>
)}
<label
class={`toolbar-button ${highlightVisibilityField ? 'highlight' : ''}`}
title={_(visibilityText[visibility])}

100
src/locales/en.po wygenerowano
Wyświetl plik

@ -91,7 +91,7 @@ msgstr "Go to account page"
#: src/components/account-info.jsx:407
#: src/components/account-info.jsx:740
#: src/components/compose.jsx:1747
#: src/components/compose.jsx:1759
#: src/pages/settings.jsx:328
#: src/utils/visibility-text.jsx:7
msgid "Followers"
@ -251,7 +251,7 @@ msgstr "View post stats"
#: src/components/account-sheet.jsx:38
#: src/components/add-remove-lists-sheet.jsx:45
#: src/components/compose.jsx:924
#: src/components/compose.jsx:929
#: src/components/custom-emojis-modal.jsx:256
#: src/components/drafts.jsx:57
#: src/components/edit-profile-sheet.jsx:87
@ -371,7 +371,7 @@ msgid "Remove"
msgstr ""
#: src/components/compose-poll.jsx:80
#: src/components/compose.jsx:1482
#: src/components/compose.jsx:1492
#: src/components/mention-modal.jsx:220
#: src/components/shortcuts-settings.jsx:715
#: src/pages/list.jsx:388
@ -390,190 +390,190 @@ msgstr ""
msgid "Remove poll"
msgstr ""
#: src/components/compose.jsx:102
#: src/components/compose.jsx:103
msgid "Take photo or video"
msgstr "Take photo or video"
#: src/components/compose.jsx:103
#: src/components/compose.jsx:104
msgid "Add media"
msgstr "Add media"
#: src/components/compose.jsx:104
#: src/components/compose.jsx:105
msgid "Add custom emoji"
msgstr ""
#: src/components/compose.jsx:105
#: src/components/compose.jsx:106
msgid "Add GIF"
msgstr "Add GIF"
#: src/components/compose.jsx:106
#: src/components/compose.jsx:107
msgid "Add poll"
msgstr ""
#: src/components/compose.jsx:107
#: src/components/compose.jsx:108
msgid "Add content warning"
msgstr "Add content warning"
#: src/components/compose.jsx:108
#: src/components/compose.jsx:109
msgid "Schedule post"
msgstr "Schedule post"
#: src/components/compose.jsx:410
#: src/components/compose.jsx:413
msgid "You have unsaved changes. Discard this post?"
msgstr "You have unsaved changes. Discard this post?"
#. placeholder {0}: unsupportedFiles.length
#. placeholder {1}: unsupportedFiles[0].name
#. placeholder {2}: lf.format( unsupportedFiles.map((f) => f.name), )
#: src/components/compose.jsx:653
#: src/components/compose.jsx:658
msgid "{0, plural, one {File {1} is not supported.} other {Files {2} are not supported.}}"
msgstr "{0, plural, one {File {1} is not supported.} other {Files {2} are not supported.}}"
#: src/components/compose.jsx:663
#: src/components/compose.jsx:681
#: src/components/compose.jsx:1878
#: src/components/compose.jsx:668
#: src/components/compose.jsx:686
#: src/components/compose.jsx:1890
#: src/components/file-picker-input.jsx:38
msgid "{maxMediaAttachments, plural, one {You can only attach up to 1 file.} other {You can only attach up to # files.}}"
msgstr ""
#: src/components/compose.jsx:905
#: src/components/compose.jsx:910
msgid "Pop out"
msgstr "Pop out"
#: src/components/compose.jsx:912
#: src/components/compose.jsx:917
msgid "Minimize"
msgstr "Minimize"
#: src/components/compose.jsx:948
#: src/components/compose.jsx:953
msgid "Looks like you closed the parent window."
msgstr "Looks like you closed the parent window."
#: src/components/compose.jsx:955
#: src/components/compose.jsx:960
msgid "Looks like you already have a compose field open in the parent window and currently publishing. Please wait for it to be done and try again later."
msgstr "Looks like you already have a compose field open in the parent window and currently publishing. Please wait for it to be done and try again later."
#: src/components/compose.jsx:960
#: src/components/compose.jsx:965
msgid "Looks like you already have a compose field open in the parent window. Popping in this window will discard the changes you made in the parent window. Continue?"
msgstr "Looks like you already have a compose field open in the parent window. Popping in this window will discard the changes you made in the parent window. Continue?"
#: src/components/compose.jsx:1005
#: src/components/compose.jsx:1010
msgid "Pop in"
msgstr "Pop in"
#. placeholder {0}: replyToStatus.account.acct || replyToStatus.account.username
#. placeholder {1}: rtf.format(-replyToStatusMonthsAgo, 'month')
#: src/components/compose.jsx:1015
#: src/components/compose.jsx:1020
msgid "Replying to @{0}s post (<0>{1}</0>)"
msgstr ""
#. placeholder {0}: replyToStatus.account.acct || replyToStatus.account.username
#: src/components/compose.jsx:1025
#: src/components/compose.jsx:1030
msgid "Replying to @{0}s post"
msgstr ""
#: src/components/compose.jsx:1038
#: src/components/compose.jsx:1043
msgid "Editing source post"
msgstr ""
#: src/components/compose.jsx:1107
#: src/components/compose.jsx:1112
msgid "Poll must have at least 2 options"
msgstr "Poll must have at least 2 options"
#: src/components/compose.jsx:1111
#: src/components/compose.jsx:1116
msgid "Some poll choices are empty"
msgstr "Some poll choices are empty"
#: src/components/compose.jsx:1124
#: src/components/compose.jsx:1129
msgid "Some media have no descriptions. Continue?"
msgstr "Some media have no descriptions. Continue?"
#: src/components/compose.jsx:1176
#: src/components/compose.jsx:1181
msgid "Attachment #{i} failed"
msgstr "Attachment #{i} failed"
#: src/components/compose.jsx:1295
#: src/components/compose.jsx:1305
#: src/components/status.jsx:2190
#: src/components/timeline.jsx:1016
msgid "Content warning"
msgstr ""
#: src/components/compose.jsx:1316
#: src/components/compose.jsx:1459
#: src/components/compose.jsx:1326
#: src/components/compose.jsx:1469
#: src/components/edit-profile-sheet.jsx:323
#: src/components/open-link-sheet.jsx:74
#: src/components/private-note-sheet.jsx:94
msgid "Cancel"
msgstr ""
#: src/components/compose.jsx:1324
#: src/components/compose.jsx:1334
msgid "Post your reply"
msgstr "Post your reply"
#: src/components/compose.jsx:1326
#: src/components/compose.jsx:1336
msgid "Edit your post"
msgstr "Edit your post"
#: src/components/compose.jsx:1328
#: src/components/compose.jsx:1338
msgid "Ask a question"
msgstr "Ask a question"
#: src/components/compose.jsx:1329
#: src/components/compose.jsx:1339
msgid "What are you doing?"
msgstr "What are you doing?"
#: src/components/compose.jsx:1399
#: src/components/compose.jsx:1409
msgid "Mark media as sensitive"
msgstr ""
#: src/components/compose.jsx:1439
#: src/components/compose.jsx:1449
msgid "Posting on <0/>"
msgstr "Posting on <0/>"
#: src/components/compose.jsx:1697
#: src/components/compose.jsx:1708
#: src/pages/settings.jsx:375
msgid "Anyone can quote"
msgstr "Anyone can quote"
#: src/components/compose.jsx:1700
#: src/components/compose.jsx:1711
#: src/pages/settings.jsx:378
msgid "Your followers can quote"
msgstr "Your followers can quote"
#: src/components/compose.jsx:1703
#: src/components/compose.jsx:1714
#: src/pages/settings.jsx:381
msgid "Only you can quote"
msgstr "Only you can quote"
#: src/components/compose.jsx:1735
#: src/components/compose.jsx:1747
#: src/pages/settings.jsx:322
#: src/utils/visibility-text.jsx:4
msgid "Public"
msgstr ""
#: src/components/compose.jsx:1740
#: src/components/compose.jsx:1752
#: src/components/nav-menu.jsx:349
#: src/components/shortcuts-settings.jsx:165
#: src/utils/visibility-text.jsx:5
msgid "Local"
msgstr ""
#: src/components/compose.jsx:1744
#: src/components/compose.jsx:1756
#: src/pages/settings.jsx:325
#: src/utils/visibility-text.jsx:6
msgid "Quiet public"
msgstr "Quiet public"
#: src/components/compose.jsx:1750
#: src/components/compose.jsx:1762
#: src/components/status.jsx:2070
#: src/utils/visibility-text.jsx:8
msgid "Private mention"
msgstr ""
#: src/components/compose.jsx:1802
#: src/components/compose.jsx:1814
msgid "Schedule"
msgstr "Schedule"
#: src/components/compose.jsx:1804
#: src/components/compose.jsx:1816
#: src/components/keyboard-shortcuts-help.jsx:155
#: src/components/status.jsx:1015
#: src/components/status.jsx:1833
@ -582,20 +582,20 @@ msgstr "Schedule"
msgid "Reply"
msgstr ""
#: src/components/compose.jsx:1806
#: src/components/compose.jsx:1818
msgid "Update"
msgstr "Update"
#: src/components/compose.jsx:1807
#: src/components/compose.jsx:1819
msgctxt "Submit button in composer"
msgid "Post"
msgstr "Post"
#: src/components/compose.jsx:1890
#: src/components/compose.jsx:1902
msgid "Downloading GIF…"
msgstr "Downloading GIF…"
#: src/components/compose.jsx:1918
#: src/components/compose.jsx:1930
msgid "Failed to download GIF"
msgstr "Failed to download GIF"