this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Add "Copy post text" menu

+183 -150
+64 -43
src/components/status.jsx
··· 1105 1105 </MenuItem> 1106 1106 </> 1107 1107 )} 1108 + {(isSizeLarge || 1109 + (!mediaFirst && 1110 + (enableTranslate || !language || differentLanguage))) && ( 1111 + <MenuDivider /> 1112 + )} 1108 1113 {!mediaFirst && (enableTranslate || !language || differentLanguage) && ( 1109 - <> 1110 - <MenuDivider /> 1111 - <div class={supportsTTS ? 'menu-horizontal' : ''}> 1112 - {enableTranslate ? ( 1113 - <MenuItem 1114 - disabled={forceTranslate} 1115 - onClick={() => setForceTranslate(true)} 1116 - > 1117 - <Icon icon="translate" /> 1118 - <span> 1119 - <Trans>Translate</Trans> 1120 - </span> 1121 - </MenuItem> 1122 - ) : ( 1123 - <MenuLink 1124 - to={`${instance ? `/${instance}` : ''}/s/${id}?translate=1`} 1125 - > 1126 - <Icon icon="translate" /> 1127 - <span> 1128 - <Trans>Translate</Trans> 1129 - </span> 1130 - </MenuLink> 1131 - )} 1132 - {supportsTTS && ( 1133 - <MenuItem 1134 - onClick={() => { 1135 - try { 1136 - const postText = getPostText(status); 1137 - if (postText) { 1138 - speak(postText, language); 1139 - } 1140 - } catch (error) { 1141 - console.error('Failed to speak text:', error); 1114 + <div class={supportsTTS ? 'menu-horizontal' : ''}> 1115 + {enableTranslate ? ( 1116 + <MenuItem 1117 + disabled={forceTranslate} 1118 + onClick={() => setForceTranslate(true)} 1119 + > 1120 + <Icon icon="translate" /> 1121 + <span> 1122 + <Trans>Translate</Trans> 1123 + </span> 1124 + </MenuItem> 1125 + ) : ( 1126 + <MenuLink 1127 + to={`${instance ? `/${instance}` : ''}/s/${id}?translate=1`} 1128 + > 1129 + <Icon icon="translate" /> 1130 + <span> 1131 + <Trans>Translate</Trans> 1132 + </span> 1133 + </MenuLink> 1134 + )} 1135 + {supportsTTS && ( 1136 + <MenuItem 1137 + onClick={() => { 1138 + try { 1139 + const postText = getPostText(status); 1140 + if (postText) { 1141 + speak(postText, language); 1142 1142 } 1143 - }} 1144 - > 1145 - <Icon icon="speak" /> 1146 - <span> 1147 - <Trans>Speak</Trans> 1148 - </span> 1149 - </MenuItem> 1150 - )} 1151 - </div> 1152 - </> 1143 + } catch (error) { 1144 + console.error('Failed to speak text:', error); 1145 + } 1146 + }} 1147 + > 1148 + <Icon icon="speak" /> 1149 + <span> 1150 + <Trans>Speak</Trans> 1151 + </span> 1152 + </MenuItem> 1153 + )} 1154 + </div> 1155 + )} 1156 + {isSizeLarge && ( 1157 + <MenuItem 1158 + onClick={() => { 1159 + try { 1160 + const postText = getPostText(status); 1161 + navigator.clipboard.writeText(postText); 1162 + showToast(t`Post text copied`); 1163 + } catch (e) { 1164 + console.error(e); 1165 + showToast(t`Unable to copy post text`); 1166 + } 1167 + }} 1168 + > 1169 + <Icon icon="clipboard" /> 1170 + <span> 1171 + <Trans>Copy post text</Trans> 1172 + </span> 1173 + </MenuItem> 1153 1174 )} 1154 1175 {((!isSizeLarge && sameInstance) || 1155 1176 enableTranslate ||
+119 -107
src/locales/en.po
··· 111 111 #: src/components/compose.jsx:2772 112 112 #: src/components/media-alt-modal.jsx:46 113 113 #: src/components/media-modal.jsx:358 114 - #: src/components/status.jsx:1775 115 - #: src/components/status.jsx:1792 116 - #: src/components/status.jsx:1917 117 - #: src/components/status.jsx:2535 118 - #: src/components/status.jsx:2538 114 + #: src/components/status.jsx:1796 115 + #: src/components/status.jsx:1813 116 + #: src/components/status.jsx:1938 117 + #: src/components/status.jsx:2556 118 + #: src/components/status.jsx:2559 119 119 #: src/pages/account-statuses.jsx:523 120 120 #: src/pages/accounts.jsx:110 121 121 #: src/pages/hashtag.jsx:200 ··· 203 203 msgstr "" 204 204 205 205 #: src/components/account-info.jsx:926 206 - #: src/components/status.jsx:2319 206 + #: src/components/status.jsx:2340 207 207 #: src/pages/catchup.jsx:72 208 208 #: src/pages/catchup.jsx:1442 209 209 #: src/pages/catchup.jsx:2057 ··· 300 300 msgstr "" 301 301 302 302 #: src/components/account-info.jsx:1384 303 - #: src/components/status.jsx:1215 303 + #: src/components/status.jsx:1236 304 304 msgid "Link copied" 305 305 msgstr "" 306 306 307 307 #: src/components/account-info.jsx:1387 308 - #: src/components/status.jsx:1218 308 + #: src/components/status.jsx:1239 309 309 msgid "Unable to copy link" 310 310 msgstr "" 311 311 312 312 #: src/components/account-info.jsx:1393 313 313 #: src/components/shortcuts-settings.jsx:1059 314 - #: src/components/status.jsx:1224 315 - #: src/components/status.jsx:3306 314 + #: src/components/status.jsx:1245 315 + #: src/components/status.jsx:3327 316 316 msgid "Copy" 317 317 msgstr "" 318 318 319 319 #: src/components/account-info.jsx:1408 320 320 #: src/components/shortcuts-settings.jsx:1077 321 - #: src/components/status.jsx:1240 321 + #: src/components/status.jsx:1261 322 322 msgid "Sharing doesn't seem to work." 323 323 msgstr "" 324 324 325 325 #: src/components/account-info.jsx:1414 326 - #: src/components/status.jsx:1246 326 + #: src/components/status.jsx:1267 327 327 msgid "Share…" 328 328 msgstr "" 329 329 ··· 437 437 #: src/components/shortcuts-settings.jsx:230 438 438 #: src/components/shortcuts-settings.jsx:583 439 439 #: src/components/shortcuts-settings.jsx:783 440 - #: src/components/status.jsx:3030 441 - #: src/components/status.jsx:3270 442 - #: src/components/status.jsx:3779 440 + #: src/components/status.jsx:3051 441 + #: src/components/status.jsx:3291 442 + #: src/components/status.jsx:3800 443 443 #: src/pages/accounts.jsx:37 444 444 #: src/pages/catchup.jsx:1578 445 445 #: src/pages/filters.jsx:225 ··· 680 680 msgstr "Attachment #{i} failed" 681 681 682 682 #: src/components/compose.jsx:1211 683 - #: src/components/status.jsx:2105 683 + #: src/components/status.jsx:2126 684 684 #: src/components/timeline.jsx:993 685 685 msgid "Content warning" 686 686 msgstr "" ··· 716 716 717 717 #: src/components/compose.jsx:1278 718 718 #: src/components/status.jsx:100 719 - #: src/components/status.jsx:1981 719 + #: src/components/status.jsx:2002 720 720 msgid "Private mention" 721 721 msgstr "" 722 722 ··· 754 754 #: src/components/compose.jsx:1664 755 755 #: src/components/keyboard-shortcuts-help.jsx:154 756 756 #: src/components/status.jsx:1008 757 - #: src/components/status.jsx:1755 758 - #: src/components/status.jsx:1756 759 - #: src/components/status.jsx:2439 757 + #: src/components/status.jsx:1776 758 + #: src/components/status.jsx:1777 759 + #: src/components/status.jsx:2460 760 760 msgid "Reply" 761 761 msgstr "" 762 762 ··· 978 978 979 979 #: src/components/drafts.jsx:128 980 980 #: src/components/list-add-edit.jsx:186 981 - #: src/components/status.jsx:1390 981 + #: src/components/status.jsx:1411 982 982 #: src/pages/filters.jsx:603 983 983 #: src/pages/scheduled-posts.jsx:367 984 984 msgid "Delete…" ··· 1188 1188 1189 1189 #: src/components/keyboard-shortcuts-help.jsx:175 1190 1190 #: src/components/status.jsx:1016 1191 - #: src/components/status.jsx:2466 1192 - #: src/components/status.jsx:2489 1193 - #: src/components/status.jsx:2490 1191 + #: src/components/status.jsx:2487 1192 + #: src/components/status.jsx:2510 1193 + #: src/components/status.jsx:2511 1194 1194 msgid "Boost" 1195 1195 msgstr "" 1196 1196 ··· 1200 1200 1201 1201 #: src/components/keyboard-shortcuts-help.jsx:183 1202 1202 #: src/components/status.jsx:1079 1203 - #: src/components/status.jsx:2514 1204 - #: src/components/status.jsx:2515 1203 + #: src/components/status.jsx:2535 1204 + #: src/components/status.jsx:2536 1205 1205 msgid "Bookmark" 1206 1206 msgstr "" 1207 1207 ··· 1260 1260 msgstr "" 1261 1261 1262 1262 #: src/components/media-alt-modal.jsx:58 1263 - #: src/components/status.jsx:1119 1264 - #: src/components/status.jsx:1128 1263 + #: src/components/status.jsx:1122 1264 + #: src/components/status.jsx:1131 1265 1265 #: src/components/translation-block.jsx:215 1266 1266 msgid "Translate" 1267 1267 msgstr "" 1268 1268 1269 1269 #: src/components/media-alt-modal.jsx:69 1270 - #: src/components/status.jsx:1147 1270 + #: src/components/status.jsx:1150 1271 1271 msgid "Speak" 1272 1272 msgstr "" 1273 1273 ··· 1304 1304 msgstr "" 1305 1305 1306 1306 #: src/components/media-post.jsx:134 1307 - #: src/components/status.jsx:3609 1308 - #: src/components/status.jsx:3705 1309 - #: src/components/status.jsx:3783 1307 + #: src/components/status.jsx:3630 1308 + #: src/components/status.jsx:3726 1309 + #: src/components/status.jsx:3804 1310 1310 #: src/components/timeline.jsx:982 1311 1311 #: src/pages/catchup.jsx:76 1312 1312 #: src/pages/catchup.jsx:1876 ··· 1947 1947 msgstr "" 1948 1948 1949 1949 #: src/components/shortcuts-settings.jsx:379 1950 - #: src/components/status.jsx:1352 1950 + #: src/components/status.jsx:1373 1951 1951 #: src/pages/list.jsx:171 1952 1952 msgid "Edit" 1953 1953 msgstr "" ··· 2185 2185 2186 2186 #: src/components/status.jsx:1016 2187 2187 #: src/components/status.jsx:1056 2188 - #: src/components/status.jsx:2466 2189 - #: src/components/status.jsx:2489 2188 + #: src/components/status.jsx:2487 2189 + #: src/components/status.jsx:2510 2190 2190 msgid "Unboost" 2191 2191 msgstr "" 2192 2192 2193 2193 #: src/components/status.jsx:1032 2194 - #: src/components/status.jsx:2481 2194 + #: src/components/status.jsx:2502 2195 2195 msgid "Quote" 2196 2196 msgstr "" 2197 2197 2198 2198 #. placeholder {0}: username || acct 2199 2199 #: src/components/status.jsx:1044 2200 - #: src/components/status.jsx:1480 2200 + #: src/components/status.jsx:1501 2201 2201 msgid "Unboosted @{0}'s post" 2202 2202 msgstr "Unboosted @{0}'s post" 2203 2203 2204 2204 #. placeholder {0}: username || acct 2205 2205 #: src/components/status.jsx:1045 2206 - #: src/components/status.jsx:1481 2206 + #: src/components/status.jsx:1502 2207 2207 msgid "Boosted @{0}'s post" 2208 2208 msgstr "Boosted @{0}'s post" 2209 2209 ··· 2212 2212 msgstr "" 2213 2213 2214 2214 #: src/components/status.jsx:1069 2215 - #: src/components/status.jsx:1765 2216 - #: src/components/status.jsx:2502 2215 + #: src/components/status.jsx:1786 2216 + #: src/components/status.jsx:2523 2217 2217 msgid "Unlike" 2218 2218 msgstr "" 2219 2219 2220 2220 #: src/components/status.jsx:1070 2221 - #: src/components/status.jsx:1765 2222 - #: src/components/status.jsx:1766 2223 - #: src/components/status.jsx:2502 2224 - #: src/components/status.jsx:2503 2221 + #: src/components/status.jsx:1786 2222 + #: src/components/status.jsx:1787 2223 + #: src/components/status.jsx:2523 2224 + #: src/components/status.jsx:2524 2225 2225 msgid "Like" 2226 2226 msgstr "" 2227 2227 2228 2228 #: src/components/status.jsx:1079 2229 - #: src/components/status.jsx:2514 2229 + #: src/components/status.jsx:2535 2230 2230 msgid "Unbookmark" 2231 2231 msgstr "" 2232 2232 2233 + #: src/components/status.jsx:1162 2234 + msgid "Post text copied" 2235 + msgstr "Post text copied" 2236 + 2237 + #: src/components/status.jsx:1165 2238 + msgid "Unable to copy post text" 2239 + msgstr "Unable to copy post text" 2240 + 2241 + #: src/components/status.jsx:1171 2242 + msgid "Copy post text" 2243 + msgstr "Copy post text" 2244 + 2233 2245 #. placeholder {0}: username || acct 2234 - #: src/components/status.jsx:1168 2246 + #: src/components/status.jsx:1189 2235 2247 msgid "View post by <0>@{0}</0>" 2236 2248 msgstr "" 2237 2249 2238 - #: src/components/status.jsx:1189 2250 + #: src/components/status.jsx:1210 2239 2251 msgid "Show Edit History" 2240 2252 msgstr "" 2241 2253 2242 - #: src/components/status.jsx:1192 2254 + #: src/components/status.jsx:1213 2243 2255 msgid "Edited: {editedDateText}" 2244 2256 msgstr "" 2245 2257 2246 - #: src/components/status.jsx:1259 2247 - #: src/components/status.jsx:3275 2258 + #: src/components/status.jsx:1280 2259 + #: src/components/status.jsx:3296 2248 2260 msgid "Embed post" 2249 2261 msgstr "" 2250 2262 2251 - #: src/components/status.jsx:1273 2263 + #: src/components/status.jsx:1294 2252 2264 msgid "Conversation unmuted" 2253 2265 msgstr "" 2254 2266 2255 - #: src/components/status.jsx:1273 2267 + #: src/components/status.jsx:1294 2256 2268 msgid "Conversation muted" 2257 2269 msgstr "" 2258 2270 2259 - #: src/components/status.jsx:1279 2271 + #: src/components/status.jsx:1300 2260 2272 msgid "Unable to unmute conversation" 2261 2273 msgstr "" 2262 2274 2263 - #: src/components/status.jsx:1280 2275 + #: src/components/status.jsx:1301 2264 2276 msgid "Unable to mute conversation" 2265 2277 msgstr "" 2266 2278 2267 - #: src/components/status.jsx:1289 2279 + #: src/components/status.jsx:1310 2268 2280 msgid "Unmute conversation" 2269 2281 msgstr "" 2270 2282 2271 - #: src/components/status.jsx:1296 2283 + #: src/components/status.jsx:1317 2272 2284 msgid "Mute conversation" 2273 2285 msgstr "" 2274 2286 2275 - #: src/components/status.jsx:1312 2287 + #: src/components/status.jsx:1333 2276 2288 msgid "Post unpinned from profile" 2277 2289 msgstr "" 2278 2290 2279 - #: src/components/status.jsx:1313 2291 + #: src/components/status.jsx:1334 2280 2292 msgid "Post pinned to profile" 2281 2293 msgstr "" 2282 2294 2283 - #: src/components/status.jsx:1318 2295 + #: src/components/status.jsx:1339 2284 2296 msgid "Unable to unpin post" 2285 2297 msgstr "" 2286 2298 2287 - #: src/components/status.jsx:1318 2299 + #: src/components/status.jsx:1339 2288 2300 msgid "Unable to pin post" 2289 2301 msgstr "" 2290 2302 2291 - #: src/components/status.jsx:1327 2303 + #: src/components/status.jsx:1348 2292 2304 msgid "Unpin from profile" 2293 2305 msgstr "" 2294 2306 2295 - #: src/components/status.jsx:1334 2307 + #: src/components/status.jsx:1355 2296 2308 msgid "Pin to profile" 2297 2309 msgstr "" 2298 2310 2299 - #: src/components/status.jsx:1363 2311 + #: src/components/status.jsx:1384 2300 2312 msgid "Delete this post?" 2301 2313 msgstr "" 2302 2314 2303 - #: src/components/status.jsx:1379 2315 + #: src/components/status.jsx:1400 2304 2316 msgid "Post deleted" 2305 2317 msgstr "" 2306 2318 2307 - #: src/components/status.jsx:1382 2319 + #: src/components/status.jsx:1403 2308 2320 msgid "Unable to delete post" 2309 2321 msgstr "" 2310 2322 2311 - #: src/components/status.jsx:1410 2323 + #: src/components/status.jsx:1431 2312 2324 msgid "Report post…" 2313 2325 msgstr "" 2314 2326 2315 - #: src/components/status.jsx:1766 2316 - #: src/components/status.jsx:1802 2317 - #: src/components/status.jsx:2503 2327 + #: src/components/status.jsx:1787 2328 + #: src/components/status.jsx:1823 2329 + #: src/components/status.jsx:2524 2318 2330 msgid "Liked" 2319 2331 msgstr "" 2320 2332 2321 - #: src/components/status.jsx:1799 2322 - #: src/components/status.jsx:2490 2333 + #: src/components/status.jsx:1820 2334 + #: src/components/status.jsx:2511 2323 2335 msgid "Boosted" 2324 2336 msgstr "" 2325 2337 2326 - #: src/components/status.jsx:1809 2327 - #: src/components/status.jsx:2515 2338 + #: src/components/status.jsx:1830 2339 + #: src/components/status.jsx:2536 2328 2340 msgid "Bookmarked" 2329 2341 msgstr "" 2330 2342 2331 - #: src/components/status.jsx:1813 2343 + #: src/components/status.jsx:1834 2332 2344 msgid "Pinned" 2333 2345 msgstr "" 2334 2346 2335 - #: src/components/status.jsx:1859 2336 - #: src/components/status.jsx:2327 2347 + #: src/components/status.jsx:1880 2348 + #: src/components/status.jsx:2348 2337 2349 msgid "Deleted" 2338 2350 msgstr "" 2339 2351 2340 - #: src/components/status.jsx:1900 2352 + #: src/components/status.jsx:1921 2341 2353 msgid "{repliesCount, plural, one {# reply} other {# replies}}" 2342 2354 msgstr "" 2343 2355 2344 2356 #. placeholder {0}: snapStates.statusThreadNumber[sKey] ? ` ${snapStates.statusThreadNumber[sKey]}/X` : '' 2345 - #: src/components/status.jsx:1990 2357 + #: src/components/status.jsx:2011 2346 2358 msgid "Thread{0}" 2347 2359 msgstr "" 2348 2360 2349 - #: src/components/status.jsx:2068 2350 - #: src/components/status.jsx:2130 2351 - #: src/components/status.jsx:2223 2361 + #: src/components/status.jsx:2089 2362 + #: src/components/status.jsx:2151 2363 + #: src/components/status.jsx:2244 2352 2364 msgid "Show less" 2353 2365 msgstr "" 2354 2366 2355 - #: src/components/status.jsx:2068 2356 - #: src/components/status.jsx:2130 2367 + #: src/components/status.jsx:2089 2368 + #: src/components/status.jsx:2151 2357 2369 msgid "Show content" 2358 2370 msgstr "" 2359 2371 2360 2372 #. placeholder {0}: filterInfo.titlesStr 2361 2373 #. placeholder {0}: filterInfo?.titlesStr 2362 - #: src/components/status.jsx:2219 2374 + #: src/components/status.jsx:2240 2363 2375 #: src/pages/catchup.jsx:1875 2364 2376 msgid "Filtered: {0}" 2365 2377 msgstr "Filtered: {0}" 2366 2378 2367 - #: src/components/status.jsx:2223 2379 + #: src/components/status.jsx:2244 2368 2380 msgid "Show media" 2369 2381 msgstr "" 2370 2382 2371 - #: src/components/status.jsx:2363 2383 + #: src/components/status.jsx:2384 2372 2384 msgid "Edited" 2373 2385 msgstr "" 2374 2386 2375 - #: src/components/status.jsx:2440 2387 + #: src/components/status.jsx:2461 2376 2388 msgid "Comments" 2377 2389 msgstr "" 2378 2390 2379 2391 #. More from [Author] 2380 - #: src/components/status.jsx:2733 2392 + #: src/components/status.jsx:2754 2381 2393 msgid "More from <0/>" 2382 2394 msgstr "More from <0/>" 2383 2395 2384 - #: src/components/status.jsx:3035 2396 + #: src/components/status.jsx:3056 2385 2397 msgid "Edit History" 2386 2398 msgstr "" 2387 2399 2388 - #: src/components/status.jsx:3039 2400 + #: src/components/status.jsx:3060 2389 2401 msgid "Failed to load history" 2390 2402 msgstr "" 2391 2403 2392 - #: src/components/status.jsx:3044 2404 + #: src/components/status.jsx:3065 2393 2405 #: src/pages/annual-report.jsx:45 2394 2406 msgid "Loading…" 2395 2407 msgstr "" 2396 2408 2397 - #: src/components/status.jsx:3280 2409 + #: src/components/status.jsx:3301 2398 2410 msgid "HTML Code" 2399 2411 msgstr "" 2400 2412 2401 - #: src/components/status.jsx:3297 2413 + #: src/components/status.jsx:3318 2402 2414 msgid "HTML code copied" 2403 2415 msgstr "" 2404 2416 2405 - #: src/components/status.jsx:3300 2417 + #: src/components/status.jsx:3321 2406 2418 msgid "Unable to copy HTML code" 2407 2419 msgstr "" 2408 2420 2409 - #: src/components/status.jsx:3312 2421 + #: src/components/status.jsx:3333 2410 2422 msgid "Media attachments:" 2411 2423 msgstr "" 2412 2424 2413 - #: src/components/status.jsx:3334 2425 + #: src/components/status.jsx:3355 2414 2426 msgid "Account Emojis:" 2415 2427 msgstr "" 2416 2428 2417 - #: src/components/status.jsx:3365 2418 - #: src/components/status.jsx:3410 2429 + #: src/components/status.jsx:3386 2430 + #: src/components/status.jsx:3431 2419 2431 msgid "static URL" 2420 2432 msgstr "" 2421 2433 2422 - #: src/components/status.jsx:3379 2434 + #: src/components/status.jsx:3400 2423 2435 msgid "Emojis:" 2424 2436 msgstr "" 2425 2437 2426 - #: src/components/status.jsx:3424 2438 + #: src/components/status.jsx:3445 2427 2439 msgid "Notes:" 2428 2440 msgstr "" 2429 2441 2430 - #: src/components/status.jsx:3428 2442 + #: src/components/status.jsx:3449 2431 2443 msgid "This is static, unstyled and scriptless. You may need to apply your own styles and edit as needed." 2432 2444 msgstr "" 2433 2445 2434 - #: src/components/status.jsx:3434 2446 + #: src/components/status.jsx:3455 2435 2447 msgid "Polls are not interactive, becomes a list with vote counts." 2436 2448 msgstr "" 2437 2449 2438 - #: src/components/status.jsx:3439 2450 + #: src/components/status.jsx:3460 2439 2451 msgid "Media attachments can be images, videos, audios or any file types." 2440 2452 msgstr "" 2441 2453 2442 - #: src/components/status.jsx:3445 2454 + #: src/components/status.jsx:3466 2443 2455 msgid "Post could be edited or deleted later." 2444 2456 msgstr "" 2445 2457 2446 - #: src/components/status.jsx:3451 2458 + #: src/components/status.jsx:3472 2447 2459 msgid "Preview" 2448 2460 msgstr "" 2449 2461 2450 - #: src/components/status.jsx:3460 2462 + #: src/components/status.jsx:3481 2451 2463 msgid "Note: This preview is lightly styled." 2452 2464 msgstr "" 2453 2465 2454 2466 #. [Name] [Visibility icon] boosted 2455 - #: src/components/status.jsx:3713 2467 + #: src/components/status.jsx:3734 2456 2468 msgid "<0/> <1/> boosted" 2457 2469 msgstr "" 2458 2470