diff --git a/src/components/compose.jsx b/src/components/compose.jsx index 82bced94..3ed12273 100644 --- a/src/components/compose.jsx +++ b/src/components/compose.jsx @@ -9,6 +9,7 @@ import { useHotkeys } from 'react-hotkeys-hook'; import stringLength from 'string-length'; import { uid } from 'uid/single'; import useResizeObserver from 'use-resize-observer'; +import { useSnapshot } from 'valtio'; import supportedLanguages from '../data/status-supported-languages'; import { api, getPreferences } from '../utils/api'; @@ -382,6 +383,14 @@ function Compose({ } }, [draftStatus, editStatus, replyToStatus]); + // focus textarea when state.composerState.minimized turns false + const snapStates = useSnapshot(states); + useEffect(() => { + if (!snapStates.composerState.minimized) { + focusTextarea(); + } + }, [snapStates.composerState.minimized]); + const formRef = useRef(); const beforeUnloadCopy = t`You have unsaved changes. Discard this post?`; diff --git a/src/locales/en.po b/src/locales/en.po index d929f699..c350a599 100644 --- a/src/locales/en.po +++ b/src/locales/en.po @@ -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:1695 +#: src/components/compose.jsx:1704 #: src/pages/settings.jsx:324 #: 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:888 +#: src/components/compose.jsx:897 #: src/components/custom-emojis-modal.jsx:234 #: src/components/drafts.jsx:57 #: src/components/edit-profile-sheet.jsx:87 @@ -370,7 +370,7 @@ msgid "Remove" msgstr "" #: src/components/compose-poll.jsx:80 -#: src/components/compose.jsx:1424 +#: src/components/compose.jsx:1433 #: src/components/mention-modal.jsx:220 #: src/components/shortcuts-settings.jsx:715 #: src/pages/list.jsx:388 @@ -389,174 +389,174 @@ msgstr "" msgid "Remove poll" msgstr "" -#: src/components/compose.jsx:101 +#: src/components/compose.jsx:102 msgid "Take photo or video" msgstr "Take photo or video" -#: src/components/compose.jsx:102 +#: src/components/compose.jsx:103 msgid "Add media" msgstr "Add media" -#: src/components/compose.jsx:103 +#: src/components/compose.jsx:104 msgid "Add custom emoji" msgstr "" -#: src/components/compose.jsx:104 +#: src/components/compose.jsx:105 msgid "Add GIF" msgstr "Add GIF" -#: src/components/compose.jsx:105 +#: src/components/compose.jsx:106 msgid "Add poll" msgstr "" -#: src/components/compose.jsx:106 +#: src/components/compose.jsx:107 msgid "Add content warning" msgstr "Add content warning" -#: src/components/compose.jsx:107 +#: src/components/compose.jsx:108 msgid "Schedule post" msgstr "Schedule post" -#: src/components/compose.jsx:387 +#: src/components/compose.jsx:396 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:626 +#: src/components/compose.jsx:635 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:636 -#: src/components/compose.jsx:654 -#: src/components/compose.jsx:1780 +#: src/components/compose.jsx:645 +#: src/components/compose.jsx:663 +#: src/components/compose.jsx:1789 #: 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:869 +#: src/components/compose.jsx:878 msgid "Pop out" msgstr "Pop out" -#: src/components/compose.jsx:876 +#: src/components/compose.jsx:885 msgid "Minimize" msgstr "Minimize" -#: src/components/compose.jsx:912 +#: src/components/compose.jsx:921 msgid "Looks like you closed the parent window." msgstr "Looks like you closed the parent window." -#: src/components/compose.jsx:919 +#: src/components/compose.jsx:928 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:924 +#: src/components/compose.jsx:933 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:968 +#: src/components/compose.jsx:977 msgid "Pop in" msgstr "Pop in" #. placeholder {0}: replyToStatus.account.acct || replyToStatus.account.username #. placeholder {1}: rtf.format(-replyToStatusMonthsAgo, 'month') -#: src/components/compose.jsx:978 +#: src/components/compose.jsx:987 msgid "Replying to @{0}’s post (<0>{1})" msgstr "" #. placeholder {0}: replyToStatus.account.acct || replyToStatus.account.username -#: src/components/compose.jsx:988 +#: src/components/compose.jsx:997 msgid "Replying to @{0}’s post" msgstr "" -#: src/components/compose.jsx:1001 +#: src/components/compose.jsx:1010 msgid "Editing source post" msgstr "" -#: src/components/compose.jsx:1069 +#: src/components/compose.jsx:1078 msgid "Poll must have at least 2 options" msgstr "Poll must have at least 2 options" -#: src/components/compose.jsx:1073 +#: src/components/compose.jsx:1082 msgid "Some poll choices are empty" msgstr "Some poll choices are empty" -#: src/components/compose.jsx:1086 +#: src/components/compose.jsx:1095 msgid "Some media have no descriptions. Continue?" msgstr "Some media have no descriptions. Continue?" -#: src/components/compose.jsx:1138 +#: src/components/compose.jsx:1147 msgid "Attachment #{i} failed" msgstr "Attachment #{i} failed" -#: src/components/compose.jsx:1247 +#: src/components/compose.jsx:1256 #: src/components/status.jsx:2096 #: src/components/timeline.jsx:1015 msgid "Content warning" msgstr "" -#: src/components/compose.jsx:1268 -#: src/components/compose.jsx:1401 +#: src/components/compose.jsx:1277 +#: src/components/compose.jsx:1410 #: src/components/edit-profile-sheet.jsx:323 #: src/components/private-note-sheet.jsx:94 msgid "Cancel" msgstr "" -#: src/components/compose.jsx:1276 +#: src/components/compose.jsx:1285 msgid "Post your reply" msgstr "Post your reply" -#: src/components/compose.jsx:1278 +#: src/components/compose.jsx:1287 msgid "Edit your post" msgstr "Edit your post" -#: src/components/compose.jsx:1280 +#: src/components/compose.jsx:1289 msgid "Ask a question" msgstr "Ask a question" -#: src/components/compose.jsx:1281 +#: src/components/compose.jsx:1290 msgid "What are you doing?" msgstr "What are you doing?" -#: src/components/compose.jsx:1351 +#: src/components/compose.jsx:1360 msgid "Mark media as sensitive" msgstr "" -#: src/components/compose.jsx:1381 +#: src/components/compose.jsx:1390 msgid "Posting on <0/>" msgstr "Posting on <0/>" -#: src/components/compose.jsx:1683 +#: src/components/compose.jsx:1692 #: src/pages/settings.jsx:318 #: src/utils/visibility-text.jsx:4 msgid "Public" msgstr "" -#: src/components/compose.jsx:1688 +#: src/components/compose.jsx:1697 #: 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:1692 +#: src/components/compose.jsx:1701 #: src/pages/settings.jsx:321 #: src/utils/visibility-text.jsx:6 msgid "Quiet public" msgstr "Quiet public" -#: src/components/compose.jsx:1698 +#: src/components/compose.jsx:1707 #: src/components/status.jsx:1976 #: src/utils/visibility-text.jsx:8 msgid "Private mention" msgstr "" -#: src/components/compose.jsx:1704 +#: src/components/compose.jsx:1713 msgid "Schedule" msgstr "Schedule" -#: src/components/compose.jsx:1706 +#: src/components/compose.jsx:1715 #: src/components/keyboard-shortcuts-help.jsx:155 #: src/components/status.jsx:958 #: src/components/status.jsx:1744 @@ -565,20 +565,20 @@ msgstr "Schedule" msgid "Reply" msgstr "" -#: src/components/compose.jsx:1708 +#: src/components/compose.jsx:1717 msgid "Update" msgstr "Update" -#: src/components/compose.jsx:1709 +#: src/components/compose.jsx:1718 msgctxt "Submit button in composer" msgid "Post" msgstr "Post" -#: src/components/compose.jsx:1792 +#: src/components/compose.jsx:1801 msgid "Downloading GIF…" msgstr "Downloading GIF…" -#: src/components/compose.jsx:1820 +#: src/components/compose.jsx:1829 msgid "Failed to download GIF" msgstr "Failed to download GIF"