From 02bce9821a35f16bc2c715ce8a6c246e582daf56 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Sat, 28 Sep 2024 07:31:55 +0200 Subject: [PATCH 01/14] Add content_type selector to the compose box --- src/components/ICONS.jsx | 5 ++++ src/components/compose.jsx | 37 +++++++++++++++++++++++++++++ src/utils/content-types-icon-map.js | 7 ++++++ src/utils/supports.js | 1 + 4 files changed, 50 insertions(+) create mode 100644 src/utils/content-types-icon-map.js diff --git a/src/components/ICONS.jsx b/src/components/ICONS.jsx index cac8190bf7..aa4b55488f 100644 --- a/src/components/ICONS.jsx +++ b/src/components/ICONS.jsx @@ -174,4 +174,9 @@ export const ICONS = { 'heart-break': () => import('@iconify-icons/mingcute/heart-crack-line'), 'user-x': () => import('@iconify-icons/mingcute/user-x-line'), minimize: () => import('@iconify-icons/mingcute/arrows-down-line'), + 'font': () => import('@iconify-icons/mingcute/font-line'), + 'brackets-angle': () => import('@iconify-icons/mingcute/brackets-angle-line'), + 'asterisk': () => import('@iconify-icons/mingcute/asterisk-line'), + 'brackets': () => import('@iconify-icons/mingcute/brackets-line'), + 'currency-dollar-2': () => import('@iconify-icons/mingcute/currency-dollar-2-line'), }; diff --git a/src/components/compose.jsx b/src/components/compose.jsx index ea7574aff8..63f8248cb4 100644 --- a/src/components/compose.jsx +++ b/src/components/compose.jsx @@ -51,6 +51,7 @@ import { import supports from '../utils/supports'; import useCloseWatcher from '../utils/useCloseWatcher'; import useInterval from '../utils/useInterval'; +import contentTypesIconMap from '../utils/content-types-icon-map.js'; import visibilityIconsMap from '../utils/visibility-icons-map'; import AccountBlock from './account-block'; @@ -248,6 +249,7 @@ function Compose({ const textareaRef = useRef(); const spoilerTextRef = useRef(); const [visibility, setVisibility] = useState('public'); + const [contentType, setContentType] = useState('text/plain'); const [sensitive, setSensitive] = useState(false); const [language, setLanguage] = useState( store.session.get('currentLanguage') || DEFAULT_LANG, @@ -1064,6 +1066,9 @@ function Compose({ // params.inReplyToId = replyToStatus?.id || undefined; params.in_reply_to_id = replyToStatus?.id || undefined; } + if (supports('@akkoma/post-content-type')) { + params.content_type = contentType; + } params = removeNullUndefined(params); console.log('POST', params); @@ -1150,6 +1155,38 @@ function Compose({ /> {' '} + {supports('@akkoma/post-content-type') && ( + <> + {' '} + + )} {' '} {supports('@akkoma/post-content-type') && ( <> - {' '} - {( - supports('@akkoma/post-content-type') | supports('@pleroma/post-content-type') - ) && ( + {supports('@akkoma/post-content-type') | + supports('@pleroma/post-content-type') && ( <> {' '} - {supports('@akkoma/post-content-type') | - supports('@pleroma/post-content-type') && ( - <> - {' '} + {' '} - <> - {' '} - + {' '} {' '} - {' '} + + + {' '} + + )} {' '} From 307b5e0a335cd87a966a74fae32b8f45292bc7e2 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Fri, 11 Oct 2024 05:22:08 +0200 Subject: [PATCH 11/14] PO files updated again --- src/locales/en.po | 138 +++++++++++++++++++++++----------------------- 1 file changed, 69 insertions(+), 69 deletions(-) diff --git a/src/locales/en.po b/src/locales/en.po index 887bcd50a7..a203c35806 100644 --- a/src/locales/en.po +++ b/src/locales/en.po @@ -105,7 +105,7 @@ msgstr "" #: src/components/account-info.jsx:427 #: src/components/account-info.jsx:1115 -#: src/components/compose.jsx:2506 +#: src/components/compose.jsx:2508 #: src/components/media-alt-modal.jsx:45 #: src/components/media-modal.jsx:283 #: src/components/status.jsx:1703 @@ -401,10 +401,10 @@ msgstr "" #: src/components/account-info.jsx:2089 #: src/components/account-sheet.jsx:37 #: src/components/compose.jsx:808 -#: src/components/compose.jsx:2462 -#: src/components/compose.jsx:2935 -#: src/components/compose.jsx:3143 -#: src/components/compose.jsx:3373 +#: src/components/compose.jsx:2464 +#: src/components/compose.jsx:2937 +#: src/components/compose.jsx:3145 +#: src/components/compose.jsx:3375 #: src/components/drafts.jsx:58 #: src/components/embed-modal.jsx:12 #: src/components/generic-accounts.jsx:142 @@ -567,8 +567,8 @@ msgstr "" #: src/components/compose.jsx:625 #: src/components/compose.jsx:641 -#: src/components/compose.jsx:1380 -#: src/components/compose.jsx:1641 +#: src/components/compose.jsx:1382 +#: src/components/compose.jsx:1643 msgid "{maxMediaAttachments, plural, one {You can only attach up to 1 file.} other {You can only attach up to # files.}}" msgstr "" @@ -634,62 +634,62 @@ msgstr "" msgid "Content warning or sensitive media" msgstr "" -#: src/components/compose.jsx:1213 +#: src/components/compose.jsx:1215 #: src/components/status.jsx:93 #: src/pages/settings.jsx:304 msgid "Public" msgstr "" -#: src/components/compose.jsx:1218 +#: src/components/compose.jsx:1220 #: src/components/nav-menu.jsx:386 #: src/components/shortcuts-settings.jsx:162 #: src/components/status.jsx:94 msgid "Local" msgstr "" -#: src/components/compose.jsx:1222 +#: src/components/compose.jsx:1224 #: src/components/status.jsx:95 #: src/pages/settings.jsx:307 msgid "Unlisted" msgstr "" -#: src/components/compose.jsx:1225 +#: src/components/compose.jsx:1227 #: src/components/status.jsx:96 #: src/pages/settings.jsx:310 msgid "Followers only" msgstr "" -#: src/components/compose.jsx:1228 +#: src/components/compose.jsx:1230 #: src/components/status.jsx:97 #: src/components/status.jsx:1907 msgid "Private mention" msgstr "" -#: src/components/compose.jsx:1237 +#: src/components/compose.jsx:1239 msgid "Post your reply" msgstr "" -#: src/components/compose.jsx:1239 +#: src/components/compose.jsx:1241 msgid "Edit your post" msgstr "" -#: src/components/compose.jsx:1240 +#: src/components/compose.jsx:1242 msgid "What are you doing?" msgstr "" -#: src/components/compose.jsx:1318 +#: src/components/compose.jsx:1320 msgid "Mark media as sensitive" msgstr "" -#: src/components/compose.jsx:1416 +#: src/components/compose.jsx:1418 msgid "Add poll" msgstr "" -#: src/components/compose.jsx:1438 +#: src/components/compose.jsx:1440 msgid "Add custom emoji" msgstr "" -#: src/components/compose.jsx:1522 +#: src/components/compose.jsx:1524 #: src/components/keyboard-shortcuts-help.jsx:143 #: src/components/status.jsx:895 #: src/components/status.jsx:1683 @@ -698,195 +698,195 @@ msgstr "" msgid "Reply" msgstr "" -#: src/components/compose.jsx:1524 +#: src/components/compose.jsx:1526 msgid "Update" msgstr "" -#: src/components/compose.jsx:1525 +#: src/components/compose.jsx:1527 msgctxt "Submit button in composer" msgid "Post" msgstr "" -#: src/components/compose.jsx:1653 +#: src/components/compose.jsx:1655 msgid "Downloading GIF…" msgstr "" -#: src/components/compose.jsx:1681 +#: src/components/compose.jsx:1683 msgid "Failed to download GIF" msgstr "" -#: src/components/compose.jsx:1793 -#: src/components/compose.jsx:1870 +#: src/components/compose.jsx:1795 +#: src/components/compose.jsx:1872 #: src/components/nav-menu.jsx:287 msgid "More…" msgstr "" -#: src/components/compose.jsx:2275 +#: src/components/compose.jsx:2277 msgid "Uploaded" msgstr "" -#: src/components/compose.jsx:2288 +#: src/components/compose.jsx:2290 msgid "Image description" msgstr "" -#: src/components/compose.jsx:2289 +#: src/components/compose.jsx:2291 msgid "Video description" msgstr "" -#: src/components/compose.jsx:2290 +#: src/components/compose.jsx:2292 msgid "Audio description" msgstr "" -#: src/components/compose.jsx:2326 -#: src/components/compose.jsx:2346 +#: src/components/compose.jsx:2328 +#: src/components/compose.jsx:2348 msgid "File size too large. Uploading might encounter issues. Try reduce the file size from {0} to {1} or lower." msgstr "" -#: src/components/compose.jsx:2338 -#: src/components/compose.jsx:2358 +#: src/components/compose.jsx:2340 +#: src/components/compose.jsx:2360 msgid "Dimension too large. Uploading might encounter issues. Try reduce dimension from {0}×{1}px to {2}×{3}px." msgstr "" -#: src/components/compose.jsx:2366 +#: src/components/compose.jsx:2368 msgid "Frame rate too high. Uploading might encounter issues." msgstr "" -#: src/components/compose.jsx:2426 -#: src/components/compose.jsx:2676 +#: src/components/compose.jsx:2428 +#: src/components/compose.jsx:2678 #: src/components/shortcuts-settings.jsx:723 #: src/pages/catchup.jsx:1074 #: src/pages/filters.jsx:412 msgid "Remove" msgstr "" -#: src/components/compose.jsx:2443 +#: src/components/compose.jsx:2445 #: src/compose.jsx:83 msgid "Error" msgstr "" -#: src/components/compose.jsx:2468 +#: src/components/compose.jsx:2470 msgid "Edit image description" msgstr "" -#: src/components/compose.jsx:2469 +#: src/components/compose.jsx:2471 msgid "Edit video description" msgstr "" -#: src/components/compose.jsx:2470 +#: src/components/compose.jsx:2472 msgid "Edit audio description" msgstr "" -#: src/components/compose.jsx:2515 -#: src/components/compose.jsx:2564 +#: src/components/compose.jsx:2517 +#: src/components/compose.jsx:2566 msgid "Generating description. Please wait…" msgstr "" -#: src/components/compose.jsx:2535 +#: src/components/compose.jsx:2537 msgid "Failed to generate description: {0}" msgstr "" -#: src/components/compose.jsx:2536 +#: src/components/compose.jsx:2538 msgid "Failed to generate description" msgstr "" -#: src/components/compose.jsx:2548 -#: src/components/compose.jsx:2554 -#: src/components/compose.jsx:2600 +#: src/components/compose.jsx:2550 +#: src/components/compose.jsx:2556 +#: src/components/compose.jsx:2602 msgid "Generate description…" msgstr "" -#: src/components/compose.jsx:2587 +#: src/components/compose.jsx:2589 msgid "Failed to generate description{0}" msgstr "" -#: src/components/compose.jsx:2602 +#: src/components/compose.jsx:2604 msgid "({0}) <0>— experimental" msgstr "" -#: src/components/compose.jsx:2621 +#: src/components/compose.jsx:2623 msgid "Done" msgstr "" -#: src/components/compose.jsx:2657 +#: src/components/compose.jsx:2659 msgid "Choice {0}" msgstr "" -#: src/components/compose.jsx:2704 +#: src/components/compose.jsx:2706 msgid "Multiple choices" msgstr "" -#: src/components/compose.jsx:2707 +#: src/components/compose.jsx:2709 msgid "Duration" msgstr "" -#: src/components/compose.jsx:2738 +#: src/components/compose.jsx:2740 msgid "Remove poll" msgstr "" -#: src/components/compose.jsx:2952 +#: src/components/compose.jsx:2954 msgid "Search accounts" msgstr "" -#: src/components/compose.jsx:2993 +#: src/components/compose.jsx:2995 #: src/components/shortcuts-settings.jsx:712 #: src/pages/list.jsx:359 msgid "Add" msgstr "" -#: src/components/compose.jsx:3006 +#: src/components/compose.jsx:3008 #: src/components/generic-accounts.jsx:227 msgid "Error loading accounts" msgstr "" -#: src/components/compose.jsx:3149 +#: src/components/compose.jsx:3151 msgid "Custom emojis" msgstr "" -#: src/components/compose.jsx:3169 +#: src/components/compose.jsx:3171 msgid "Search emoji" msgstr "" -#: src/components/compose.jsx:3200 +#: src/components/compose.jsx:3202 msgid "Error loading custom emojis" msgstr "" -#: src/components/compose.jsx:3211 +#: src/components/compose.jsx:3213 msgid "Recently used" msgstr "" -#: src/components/compose.jsx:3212 +#: src/components/compose.jsx:3214 msgid "Others" msgstr "" -#: src/components/compose.jsx:3250 +#: src/components/compose.jsx:3252 msgid "{0} more…" msgstr "" -#: src/components/compose.jsx:3388 +#: src/components/compose.jsx:3390 msgid "Search GIFs" msgstr "" -#: src/components/compose.jsx:3403 +#: src/components/compose.jsx:3405 msgid "Powered by GIPHY" msgstr "" -#: src/components/compose.jsx:3411 +#: src/components/compose.jsx:3413 msgid "Type to search GIFs" msgstr "" -#: src/components/compose.jsx:3509 +#: src/components/compose.jsx:3511 #: src/components/media-modal.jsx:387 #: src/components/timeline.jsx:889 msgid "Previous" msgstr "" -#: src/components/compose.jsx:3527 +#: src/components/compose.jsx:3529 #: src/components/media-modal.jsx:406 #: src/components/timeline.jsx:906 msgid "Next" msgstr "" -#: src/components/compose.jsx:3544 +#: src/components/compose.jsx:3546 msgid "Error loading GIFs" msgstr "" From 3ef323cda1e0a12091fc5629d89d090e0cf3d1a4 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Sat, 12 Oct 2024 08:45:37 +0200 Subject: [PATCH 12/14] Fix Pleroma / Akkoma compatibility --- src/components/compose.jsx | 53 +++++++++++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 12 deletions(-) diff --git a/src/components/compose.jsx b/src/components/compose.jsx index 76eb3885e2..909eb82543 100644 --- a/src/components/compose.jsx +++ b/src/components/compose.jsx @@ -611,15 +611,31 @@ function Compose({ const handleItems = (e) => { const { items } = e.clipboardData || e.dataTransfer; const files = []; + const unsupportedFiles = []; for (let i = 0; i < items.length; i++) { const item = items[i]; if (item.kind === 'file') { const file = item.getAsFile(); - if (file && supportedMediaMimeTypes.includes(file.type)) { + if ( + supportedMediaMimeTypes !== undefined && + !supportedMediaMimeTypes.includes(file.type) + ) { + unsupportedFiles.push(file); + } else { files.push(file); } } } + if (unsupportedFiles.length > 0) { + alert( + plural(unsupportedFiles.length, { + one: `File ${unsupportedFiles[0].name} is not supported.`, + other: `Files ${lf.format( + unsupportedFiles.map((f) => f.name), + )} are not supported.`, + }), + ); + } if (files.length > 0 && mediaAttachments.length >= maxMediaAttachments) { alert( plural(maxMediaAttachments, { @@ -634,16 +650,19 @@ function Compose({ e.preventDefault(); e.stopPropagation(); // Auto-cut-off files to avoid exceeding maxMediaAttachments - const max = maxMediaAttachments - mediaAttachments.length; - const allowedFiles = files.slice(0, max); - if (allowedFiles.length <= 0) { - alert( - plural(maxMediaAttachments, { - one: 'You can only attach up to 1 file.', - other: 'You can only attach up to # files.', - }), - ); - return; + let allowedFiles = files; + if (maxMediaAttachments !== undefined) { + const max = maxMediaAttachments - mediaAttachments.length; + allowedFiles = allowedFiles.slice(0, max); + if (allowedFiles.length <= 0) { + alert( + plural(maxMediaAttachments, { + one: 'You can only attach up to 1 file.', + other: 'You can only attach up to # files.', + }), + ); + return; + } } const mediaFiles = allowedFiles.map((file) => ({ file, @@ -1072,6 +1091,10 @@ function Compose({ ); } else if (!editStatus) { params.visibility = visibility; + if (params.visibility === 'list') { + const list_id = prompt('Target list ID?'); + params.visibility = `list:${list_id}`; + } // params.inReplyToId = replyToStatus?.id || undefined; params.in_reply_to_id = replyToStatus?.id || undefined; } @@ -1226,6 +1249,12 @@ function Compose({ + {(supports('@pleroma/list-visibility-post') || + supports('@akkoma/list-visibility-post')) && ( + + )} @@ -1445,7 +1474,7 @@ function Compose({ class="toolbar-button gif-picker-button" disabled={ uiState === 'loading' || - mediaAttachments.length >= maxMediaAttachments || + (maxMediaAttachments !== undefined && mediaAttachments.length >= maxMediaAttachments) || !!poll } onClick={() => { From 4638b85cc4e8b2555a2ff05faddf0becaae1ce85 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Mon, 14 Oct 2024 00:43:44 +0200 Subject: [PATCH 13/14] Make patch compatible with #735 --- src/components/compose.jsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/components/compose.jsx b/src/components/compose.jsx index 909eb82543..b56790bab9 100644 --- a/src/components/compose.jsx +++ b/src/components/compose.jsx @@ -238,7 +238,7 @@ function Compose({ charactersReservedPerUrl, } = {}, mediaAttachments: { - supportedMimeTypes: supportedMediaMimeTypes = [], + supportedMimeTypes: supportedMediaMimeTypes = undefined, imageSizeLimit, imageMatrixLimit, videoSizeLimit, @@ -1474,7 +1474,8 @@ function Compose({ class="toolbar-button gif-picker-button" disabled={ uiState === 'loading' || - (maxMediaAttachments !== undefined && mediaAttachments.length >= maxMediaAttachments) || + (maxMediaAttachments !== undefined && + mediaAttachments.length >= maxMediaAttachments) || !!poll } onClick={() => { From f5a3b9c4bb8f76442cf5c64a3e2fae4fa27f30ce Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Thu, 2 Jan 2025 17:00:41 +0100 Subject: [PATCH 14/14] Run prettier (again) --- src/components/compose.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/compose.jsx b/src/components/compose.jsx index dc14994afa..8376b13649 100644 --- a/src/components/compose.jsx +++ b/src/components/compose.jsx @@ -1,5 +1,6 @@ import './compose.css'; import '@github/text-expander-element'; + import { msg, plural, t } from '@lingui/core/macro'; import { Trans, useLingui } from '@lingui/react/macro'; import { MenuItem } from '@szhsin/react-menu';