Merge branch 'cheeaun:main' into width-columns-css-fix

This commit is contained in:
Nathan Sparrow 2024-11-10 12:14:03 -04:00 committed by GitHub
commit f53ecc37d3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
20 changed files with 508 additions and 343 deletions

View file

@ -1395,6 +1395,11 @@ a[href^='http'][rel*='nofollow']:visited:not(:has(div)) {
user-select: none;
width: 100%;
gap: 16px;
--accent-gradient: var(--accent-gradient-light);
@media (prefers-color-scheme: dark) {
--accent-gradient: var(--accent-gradient-dark);
}
background-image: linear-gradient(to var(--forward), var(--accent-gradient));
}
.carousel::-webkit-scrollbar {
display: none;
@ -1409,7 +1414,10 @@ a[href^='http'][rel*='nofollow']:visited:not(:has(div)) {
width: 100%;
height: 100vh;
height: 100dvh;
background-color: var(--accent-alpha-color);
background-color: var(--accent-light-color);
@media (prefers-color-scheme: dark) {
background-color: var(--accent-dark-color);
}
/* background-image: radial-gradient(
closest-side,
var(--accent-color) 10%,

View file

@ -210,6 +210,12 @@ const isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent);
if (isIOS) {
document.addEventListener('visibilitychange', () => {
if (document.visibilityState === 'visible') {
// Don't reset theme color if media modal is showing
// Media modal will set its own theme color based on the media's color
const showingMediaModal =
document.getElementsByClassName('media-modal-container').length > 0;
if (showingMediaModal) return;
const theme = store.local.get('theme');
let $meta;
if (theme) {

View file

@ -14,6 +14,7 @@ import { oklab2rgb, rgb2oklab } from '../utils/color-utils';
import isRTL from '../utils/is-rtl';
import showToast from '../utils/show-toast';
import states from '../utils/states';
import store from '../utils/store';
import Icon from './icon';
import Link from './link';
@ -115,39 +116,95 @@ function MediaModal({
return () => clearTimeout(timer);
}, []);
const mediaAccentColors = useMemo(() => {
const mediaOklabColors = useMemo(() => {
return mediaAttachments?.map((media) => {
const { blurhash } = media;
if (blurhash) {
const averageColor = getBlurHashAverageColor(blurhash);
const labAverageColor = rgb2oklab(averageColor);
return oklab2rgb([0.6, labAverageColor[1], labAverageColor[2]]);
return rgb2oklab(averageColor);
}
return null;
});
}, [mediaAttachments]);
const mediaAccentGradient = useMemo(() => {
// const mediaAccentColors = useMemo(() => {
// return mediaOklabColors?.map((labAverageColor) => {
// if (labAverageColor) {
// return oklab2rgb([0.6, labAverageColor[1], labAverageColor[2]]);
// }
// return null;
// });
// }, [mediaOklabColors]);
const mediaAccentColors = useMemo(() => {
return mediaOklabColors?.map((labAverageColor) => {
if (labAverageColor) {
return {
light: oklab2rgb([0.95, labAverageColor[1], labAverageColor[2]]),
dark: oklab2rgb([0.25, labAverageColor[1], labAverageColor[2]]),
default: oklab2rgb([0.6, labAverageColor[1], labAverageColor[2]]),
};
}
return {};
});
});
// const mediaAccentGradient = useMemo(() => {
// const gap = 5;
// const range = 100 / mediaAccentColors.length;
// return (
// mediaAccentColors
// ?.map((color, i) => {
// const start = i * range + gap;
// const end = (i + 1) * range - gap;
// if (color) {
// return `
// rgba(${color?.join(',')}, 0.4) ${start}%,
// rgba(${color?.join(',')}, 0.4) ${end}%
// `;
// }
// return `
// transparent ${start}%,
// transparent ${end}%
// `;
// })
// ?.join(', ') || 'transparent'
// );
// }, [mediaAccentColors]);
const mediaAccentGradients = useMemo(() => {
const gap = 5;
const range = 100 / mediaAccentColors.length;
return (
mediaAccentColors
?.map((color, i) => {
const start = i * range + gap;
const end = (i + 1) * range - gap;
if (color) {
return `
rgba(${color?.join(',')}, 0.4) ${start}%,
rgba(${color?.join(',')}, 0.4) ${end}%
`;
}
const colors = mediaAccentColors.map((color, i) => {
const start = i * range + gap;
const end = (i + 1) * range - gap;
if (color?.light && color?.dark) {
return {
light: `
rgb(${color.light?.join(',')}) ${start}%,
rgb(${color.light?.join(',')}) ${end}%
`,
dark: `
rgb(${color.dark?.join(',')}) ${start}%,
rgb(${color.dark?.join(',')}) ${end}%
`,
};
}
return `
transparent ${start}%,
transparent ${end}%
`;
})
?.join(', ') || 'transparent'
);
return {
light: `
transparent ${start}%,
transparent ${end}%
`,
dark: `
transparent ${start}%,
transparent ${end}%
`,
};
});
const lightGradient = colors.map((color) => color.light).join(', ');
const darkGradient = colors.map((color) => color.dark).join(', ');
return {
light: lightGradient,
dark: darkGradient,
};
}, [mediaAccentColors]);
let toastRef = useRef(null);
@ -157,6 +214,46 @@ function MediaModal({
};
}, []);
useLayoutEffect(() => {
const currentColor = mediaAccentColors[currentIndex];
let $meta;
let metaColor;
if (currentColor) {
const theme = store.local.get('theme');
if (theme) {
const mediaColor = `rgb(${currentColor[theme].join(',')})`;
console.log({ mediaColor });
$meta = document.querySelector(
`meta[name="theme-color"][data-theme-setting="manual"]`,
);
if ($meta) {
metaColor = $meta.content;
$meta.content = mediaColor;
}
} else {
const colorScheme = window.matchMedia('(prefers-color-scheme: dark)')
.matches
? 'dark'
: 'light';
const mediaColor = `rgb(${currentColor[colorScheme].join(',')})`;
console.log({ mediaColor });
$meta = document.querySelector(
`meta[name="theme-color"][media*="${colorScheme}"]`,
);
if ($meta) {
metaColor = $meta.content;
$meta.content = mediaColor;
}
}
}
return () => {
// Reset meta color
if ($meta && metaColor) {
$meta.content = metaColor;
}
};
}, [currentIndex, mediaAccentColors]);
return (
<div
class={`media-modal-container media-modal-count-${mediaAttachments?.length}`}
@ -179,8 +276,10 @@ function MediaModal({
mediaAttachments.length > 1
? {
backgroundAttachment: 'local',
backgroundImage: `linear-gradient(
to ${isRTL() ? 'left' : 'right'}, ${mediaAccentGradient})`,
'--accent-gradient-light': mediaAccentGradients?.light,
'--accent-gradient-dark': mediaAccentGradients?.dark,
// backgroundImage: `linear-gradient(
// to ${isRTL() ? 'left' : 'right'}, ${mediaAccentGradient})`,
}
: {}
}
@ -194,8 +293,14 @@ function MediaModal({
style={
accentColor
? {
'--accent-color': `rgb(${accentColor?.join(',')})`,
'--accent-alpha-color': `rgba(${accentColor?.join(
'--accent-color': `rgb(${accentColor.default.join(',')})`,
'--accent-light-color': `rgb(${accentColor.light?.join(
',',
)})`,
'--accent-dark-color': `rgb(${accentColor.dark?.join(
',',
)})`,
'--accent-alpha-color': `rgba(${accentColor.default.join(
',',
)}, 0.4)`,
}

View file

@ -135,7 +135,7 @@
"code": "ru-RU",
"nativeName": "русский",
"name": "Russian",
"completion": 99
"completion": 100
},
{
"code": "th-TH",

28
src/locales/ca-ES.po generated
View file

@ -8,7 +8,7 @@ msgstr ""
"Language: ca\n"
"Project-Id-Version: phanpy\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-11-03 07:11\n"
"PO-Revision-Date: 2024-11-04 21:10\n"
"Last-Translator: \n"
"Language-Team: Catalan\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@ -111,7 +111,7 @@ msgstr "Publicacions"
#: src/components/account-info.jsx:1118
#: src/components/compose.jsx:2488
#: src/components/media-alt-modal.jsx:45
#: src/components/media-modal.jsx:283
#: src/components/media-modal.jsx:336
#: src/components/status.jsx:1721
#: src/components/status.jsx:1738
#: src/components/status.jsx:1862
@ -415,7 +415,7 @@ msgstr "Segueix"
#: src/components/keyboard-shortcuts-help.jsx:39
#: src/components/list-add-edit.jsx:33
#: src/components/media-alt-modal.jsx:33
#: src/components/media-modal.jsx:247
#: src/components/media-modal.jsx:300
#: src/components/notification-service.jsx:156
#: src/components/report-modal.jsx:75
#: src/components/shortcuts-settings.jsx:230
@ -863,13 +863,13 @@ msgid "Type to search GIFs"
msgstr "Escriviu per cercar un GIF"
#: src/components/compose.jsx:3491
#: src/components/media-modal.jsx:387
#: src/components/media-modal.jsx:440
#: src/components/timeline.jsx:889
msgid "Previous"
msgstr "Anterior"
#: src/components/compose.jsx:3509
#: src/components/media-modal.jsx:406
#: src/components/media-modal.jsx:459
#: src/components/timeline.jsx:906
msgid "Next"
msgstr "Següent"
@ -1052,11 +1052,11 @@ msgstr "<0>1</0> a <1>9</1>"
#: src/components/keyboard-shortcuts-help.jsx:117
msgid "Focus next column in multi-column mode"
msgstr ""
msgstr "Centra la columna següent en mode de múltiples columnes"
#: src/components/keyboard-shortcuts-help.jsx:121
msgid "Focus previous column in multi-column mode"
msgstr ""
msgstr "Centra la columna anterior en mode de múltiples columnes"
#: src/components/keyboard-shortcuts-help.jsx:125
msgid "Compose new post"
@ -1190,27 +1190,27 @@ msgstr "Tradueix"
msgid "Speak"
msgstr "Pronuncia"
#: src/components/media-modal.jsx:294
#: src/components/media-modal.jsx:347
msgid "Open original media in new window"
msgstr "Obre el fitxer original en una finestra nova"
#: src/components/media-modal.jsx:298
#: src/components/media-modal.jsx:351
msgid "Open original media"
msgstr "Obre el fitxer original"
#: src/components/media-modal.jsx:314
#: src/components/media-modal.jsx:367
msgid "Attempting to describe image. Please wait…"
msgstr "Intentant descriure la imatge. Si us plau, espereu…"
#: src/components/media-modal.jsx:329
#: src/components/media-modal.jsx:382
msgid "Failed to describe image"
msgstr "No s'ha pogut descriure la imatge"
#: src/components/media-modal.jsx:339
#: src/components/media-modal.jsx:392
msgid "Describe image…"
msgstr "Descriu la imatge…"
#: src/components/media-modal.jsx:362
#: src/components/media-modal.jsx:415
msgid "View post"
msgstr "Mostra la publicació"
@ -2726,7 +2726,7 @@ msgstr "Densitat"
#. js-lingui-explicit-id
#: src/pages/catchup.jsx:1471
msgid "group.filter"
msgstr ""
msgstr "Filtra"
#: src/pages/catchup.jsx:1486
msgid "Authors"

162
src/locales/en.po generated
View file

@ -106,7 +106,7 @@ msgstr ""
#: src/components/account-info.jsx:1118
#: src/components/compose.jsx:2488
#: src/components/media-alt-modal.jsx:45
#: src/components/media-modal.jsx:283
#: src/components/media-modal.jsx:388
#: src/components/status.jsx:1721
#: src/components/status.jsx:1738
#: src/components/status.jsx:1862
@ -193,7 +193,7 @@ msgstr ""
#: src/pages/catchup.jsx:72
#: src/pages/catchup.jsx:1447
#: src/pages/catchup.jsx:2068
#: src/pages/settings.jsx:1110
#: src/pages/settings.jsx:1145
msgid "Boosts"
msgstr ""
@ -410,7 +410,7 @@ msgstr ""
#: src/components/keyboard-shortcuts-help.jsx:39
#: src/components/list-add-edit.jsx:33
#: src/components/media-alt-modal.jsx:33
#: src/components/media-modal.jsx:247
#: src/components/media-modal.jsx:352
#: src/components/notification-service.jsx:156
#: src/components/report-modal.jsx:75
#: src/components/shortcuts-settings.jsx:230
@ -425,7 +425,7 @@ msgstr ""
#: src/pages/list.jsx:274
#: src/pages/notifications.jsx:868
#: src/pages/notifications.jsx:1082
#: src/pages/settings.jsx:76
#: src/pages/settings.jsx:77
#: src/pages/status.jsx:1299
msgid "Close"
msgstr ""
@ -619,7 +619,7 @@ msgstr ""
#: src/components/compose.jsx:1191
#: src/components/status.jsx:93
#: src/pages/settings.jsx:304
#: src/pages/settings.jsx:305
msgid "Public"
msgstr ""
@ -632,13 +632,13 @@ msgstr ""
#: src/components/compose.jsx:1200
#: src/components/status.jsx:95
#: src/pages/settings.jsx:307
#: src/pages/settings.jsx:308
msgid "Unlisted"
msgstr ""
#: src/components/compose.jsx:1203
#: src/components/status.jsx:96
#: src/pages/settings.jsx:310
#: src/pages/settings.jsx:311
msgid "Followers only"
msgstr ""
@ -858,13 +858,13 @@ msgid "Type to search GIFs"
msgstr ""
#: src/components/compose.jsx:3491
#: src/components/media-modal.jsx:387
#: src/components/media-modal.jsx:492
#: src/components/timeline.jsx:889
msgid "Previous"
msgstr ""
#: src/components/compose.jsx:3509
#: src/components/media-modal.jsx:406
#: src/components/media-modal.jsx:511
#: src/components/timeline.jsx:906
msgid "Next"
msgstr ""
@ -874,7 +874,7 @@ msgid "Error loading GIFs"
msgstr ""
#: src/components/drafts.jsx:63
#: src/pages/settings.jsx:691
#: src/pages/settings.jsx:692
msgid "Unsent drafts"
msgstr ""
@ -1185,27 +1185,27 @@ msgstr ""
msgid "Speak"
msgstr ""
#: src/components/media-modal.jsx:294
#: src/components/media-modal.jsx:399
msgid "Open original media in new window"
msgstr ""
#: src/components/media-modal.jsx:298
#: src/components/media-modal.jsx:403
msgid "Open original media"
msgstr ""
#: src/components/media-modal.jsx:314
#: src/components/media-modal.jsx:419
msgid "Attempting to describe image. Please wait…"
msgstr ""
#: src/components/media-modal.jsx:329
#: src/components/media-modal.jsx:434
msgid "Failed to describe image"
msgstr ""
#: src/components/media-modal.jsx:339
#: src/components/media-modal.jsx:444
msgid "Describe image…"
msgstr ""
#: src/components/media-modal.jsx:362
#: src/components/media-modal.jsx:467
msgid "View post"
msgstr ""
@ -1270,7 +1270,7 @@ msgstr ""
#: src/pages/home.jsx:224
#: src/pages/mentions.jsx:20
#: src/pages/mentions.jsx:167
#: src/pages/settings.jsx:1102
#: src/pages/settings.jsx:1137
#: src/pages/trending.jsx:381
msgid "Mentions"
msgstr ""
@ -1325,7 +1325,7 @@ msgstr ""
#: src/pages/catchup.jsx:2062
#: src/pages/favourites.jsx:11
#: src/pages/favourites.jsx:23
#: src/pages/settings.jsx:1106
#: src/pages/settings.jsx:1141
msgid "Likes"
msgstr ""
@ -2317,7 +2317,7 @@ msgid "<0/> <1/> boosted"
msgstr ""
#: src/components/timeline.jsx:453
#: src/pages/settings.jsx:1130
#: src/pages/settings.jsx:1165
msgid "New posts"
msgstr ""
@ -3169,7 +3169,7 @@ msgid "{0, plural, one {Announcement} other {Announcements}}"
msgstr ""
#: src/pages/notifications.jsx:614
#: src/pages/settings.jsx:1118
#: src/pages/settings.jsx:1153
msgid "Follow requests"
msgstr ""
@ -3340,240 +3340,240 @@ msgstr ""
msgid "Enter your search term or paste a URL above to get started."
msgstr ""
#: src/pages/settings.jsx:81
#: src/pages/settings.jsx:82
msgid "Settings"
msgstr ""
#: src/pages/settings.jsx:90
#: src/pages/settings.jsx:91
msgid "Appearance"
msgstr ""
#: src/pages/settings.jsx:166
#: src/pages/settings.jsx:167
msgid "Light"
msgstr ""
#: src/pages/settings.jsx:177
#: src/pages/settings.jsx:178
msgid "Dark"
msgstr ""
#: src/pages/settings.jsx:190
#: src/pages/settings.jsx:191
msgid "Auto"
msgstr ""
#: src/pages/settings.jsx:200
#: src/pages/settings.jsx:201
msgid "Text size"
msgstr ""
#. Preview of one character, in smallest size
#. Preview of one character, in largest size
#: src/pages/settings.jsx:205
#: src/pages/settings.jsx:230
#: src/pages/settings.jsx:206
#: src/pages/settings.jsx:231
msgid "A"
msgstr ""
#: src/pages/settings.jsx:244
#: src/pages/settings.jsx:245
msgid "Display language"
msgstr ""
#: src/pages/settings.jsx:253
#: src/pages/settings.jsx:254
msgid "Volunteer translations"
msgstr "Volunteer translations"
#: src/pages/settings.jsx:264
#: src/pages/settings.jsx:265
msgid "Posting"
msgstr ""
#: src/pages/settings.jsx:271
#: src/pages/settings.jsx:272
msgid "Default visibility"
msgstr ""
#: src/pages/settings.jsx:272
#: src/pages/settings.jsx:318
#: src/pages/settings.jsx:273
#: src/pages/settings.jsx:319
msgid "Synced"
msgstr ""
#: src/pages/settings.jsx:297
#: src/pages/settings.jsx:298
msgid "Failed to update posting privacy"
msgstr ""
#: src/pages/settings.jsx:320
#: src/pages/settings.jsx:321
msgid "Synced to your instance server's settings. <0>Go to your instance ({instance}) for more settings.</0>"
msgstr ""
#: src/pages/settings.jsx:335
#: src/pages/settings.jsx:336
msgid "Experiments"
msgstr ""
#: src/pages/settings.jsx:348
#: src/pages/settings.jsx:349
msgid "Auto refresh timeline posts"
msgstr ""
#: src/pages/settings.jsx:360
#: src/pages/settings.jsx:361
msgid "Boosts carousel"
msgstr ""
#: src/pages/settings.jsx:376
#: src/pages/settings.jsx:377
msgid "Post translation"
msgstr ""
#: src/pages/settings.jsx:387
#: src/pages/settings.jsx:388
msgid "Translate to"
msgstr ""
#: src/pages/settings.jsx:398
#: src/pages/settings.jsx:399
msgid "System language ({systemTargetLanguageText})"
msgstr ""
#: src/pages/settings.jsx:424
#: src/pages/settings.jsx:425
msgid "{0, plural, =0 {Hide \"Translate\" button for:} other {Hide \"Translate\" button for (#):}}"
msgstr ""
#: src/pages/settings.jsx:478
#: src/pages/settings.jsx:479
msgid "Note: This feature uses external translation services, powered by <0>Lingva API</0> & <1>Lingva Translate</1>."
msgstr ""
#: src/pages/settings.jsx:512
#: src/pages/settings.jsx:513
msgid "Auto inline translation"
msgstr ""
#: src/pages/settings.jsx:516
#: src/pages/settings.jsx:517
msgid "Automatically show translation for posts in timeline. Only works for <0>short</0> posts without content warning, media and poll."
msgstr ""
#: src/pages/settings.jsx:536
#: src/pages/settings.jsx:537
msgid "GIF Picker for composer"
msgstr ""
#: src/pages/settings.jsx:540
#: src/pages/settings.jsx:541
msgid "Note: This feature uses external GIF search service, powered by <0>GIPHY</0>. G-rated (suitable for viewing by all ages), tracking parameters are stripped, referrer information is omitted from requests, but search queries and IP address information will still reach their servers."
msgstr ""
#: src/pages/settings.jsx:569
#: src/pages/settings.jsx:570
msgid "Image description generator"
msgstr ""
#: src/pages/settings.jsx:574
#: src/pages/settings.jsx:575
msgid "Only for new images while composing new posts."
msgstr ""
#: src/pages/settings.jsx:581
#: src/pages/settings.jsx:582
msgid "Note: This feature uses external AI service, powered by <0>img-alt-api</0>. May not work well. Only for images and in English."
msgstr ""
#: src/pages/settings.jsx:607
#: src/pages/settings.jsx:608
msgid "Server-side grouped notifications"
msgstr ""
#: src/pages/settings.jsx:611
#: src/pages/settings.jsx:612
msgid "Alpha-stage feature. Potentially improved grouping window but basic grouping logic."
msgstr ""
#: src/pages/settings.jsx:632
#: src/pages/settings.jsx:633
msgid "\"Cloud\" import/export for shortcuts settings"
msgstr ""
#: src/pages/settings.jsx:637
#: src/pages/settings.jsx:638
msgid "⚠️⚠️⚠️ Very experimental.<0/>Stored in your own profiles notes. Profile (private) notes are mainly used for other profiles, and hidden for own profile."
msgstr ""
#: src/pages/settings.jsx:648
#: src/pages/settings.jsx:649
msgid "Note: This feature uses currently-logged-in instance server API."
msgstr ""
#: src/pages/settings.jsx:665
#: src/pages/settings.jsx:666
msgid "Cloak mode <0>(<1>Text</1> → <2>████</2>)</0>"
msgstr ""
#: src/pages/settings.jsx:674
#: src/pages/settings.jsx:675
msgid "Replace text as blocks, useful when taking screenshots, for privacy reasons."
msgstr ""
#: src/pages/settings.jsx:699
#: src/pages/settings.jsx:700
msgid "About"
msgstr ""
#: src/pages/settings.jsx:738
#: src/pages/settings.jsx:739
msgid "<0>Built</0> by <1>@cheeaun</1>"
msgstr ""
#: src/pages/settings.jsx:767
#: src/pages/settings.jsx:768
msgid "Sponsor"
msgstr ""
#: src/pages/settings.jsx:775
#: src/pages/settings.jsx:776
msgid "Donate"
msgstr ""
#: src/pages/settings.jsx:783
#: src/pages/settings.jsx:784
msgid "Privacy Policy"
msgstr ""
#: src/pages/settings.jsx:790
#: src/pages/settings.jsx:791
msgid "<0>Site:</0> {0}"
msgstr ""
#: src/pages/settings.jsx:797
#: src/pages/settings.jsx:798
msgid "<0>Version:</0> <1/> {0}"
msgstr ""
#: src/pages/settings.jsx:812
#: src/pages/settings.jsx:813
msgid "Version string copied"
msgstr ""
#: src/pages/settings.jsx:815
#: src/pages/settings.jsx:816
msgid "Unable to copy version string"
msgstr ""
#: src/pages/settings.jsx:1015
#: src/pages/settings.jsx:1020
#: src/pages/settings.jsx:1050
#: src/pages/settings.jsx:1055
msgid "Failed to update subscription. Please try again."
msgstr ""
#: src/pages/settings.jsx:1026
#: src/pages/settings.jsx:1061
msgid "Failed to remove subscription. Please try again."
msgstr ""
#: src/pages/settings.jsx:1033
#: src/pages/settings.jsx:1068
msgid "Push Notifications (beta)"
msgstr ""
#: src/pages/settings.jsx:1055
#: src/pages/settings.jsx:1090
msgid "Push notifications are blocked. Please enable them in your browser settings."
msgstr ""
#: src/pages/settings.jsx:1064
#: src/pages/settings.jsx:1099
msgid "Allow from <0>{0}</0>"
msgstr ""
#: src/pages/settings.jsx:1073
#: src/pages/settings.jsx:1108
msgid "anyone"
msgstr ""
#: src/pages/settings.jsx:1077
#: src/pages/settings.jsx:1112
msgid "people I follow"
msgstr ""
#: src/pages/settings.jsx:1081
#: src/pages/settings.jsx:1116
msgid "followers"
msgstr ""
#: src/pages/settings.jsx:1114
#: src/pages/settings.jsx:1149
msgid "Follows"
msgstr ""
#: src/pages/settings.jsx:1122
#: src/pages/settings.jsx:1157
msgid "Polls"
msgstr ""
#: src/pages/settings.jsx:1126
#: src/pages/settings.jsx:1161
msgid "Post edits"
msgstr ""
#: src/pages/settings.jsx:1147
#: src/pages/settings.jsx:1182
msgid "Push permission was not granted since your last login. You'll need to <0><1>log in</1> again to grant push permission</0>."
msgstr ""
#: src/pages/settings.jsx:1163
#: src/pages/settings.jsx:1198
msgid "NOTE: Push notifications only work for <0>one account</0>."
msgstr ""

4
src/locales/eo-UY.po generated
View file

@ -8,7 +8,7 @@ msgstr ""
"Language: eo\n"
"Project-Id-Version: phanpy\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-11-03 07:11\n"
"PO-Revision-Date: 2024-11-03 13:10\n"
"Last-Translator: \n"
"Language-Team: Esperanto\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@ -2725,7 +2725,7 @@ msgstr "Denseco"
#. js-lingui-explicit-id
#: src/pages/catchup.jsx:1471
msgid "group.filter"
msgstr ""
msgstr "Filtri"
#: src/pages/catchup.jsx:1486
msgid "Authors"

4
src/locales/es-ES.po generated
View file

@ -8,7 +8,7 @@ msgstr ""
"Language: es\n"
"Project-Id-Version: phanpy\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-11-03 07:10\n"
"PO-Revision-Date: 2024-11-03 13:10\n"
"Last-Translator: \n"
"Language-Team: Spanish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@ -2725,7 +2725,7 @@ msgstr "Densidad"
#. js-lingui-explicit-id
#: src/pages/catchup.jsx:1471
msgid "group.filter"
msgstr ""
msgstr "Filtrar"
#: src/pages/catchup.jsx:1486
msgid "Authors"

4
src/locales/eu-ES.po generated
View file

@ -8,7 +8,7 @@ msgstr ""
"Language: eu\n"
"Project-Id-Version: phanpy\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-11-03 07:11\n"
"PO-Revision-Date: 2024-11-03 19:18\n"
"Last-Translator: \n"
"Language-Team: Basque\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@ -2725,7 +2725,7 @@ msgstr "Dentsitatea"
#. js-lingui-explicit-id
#: src/pages/catchup.jsx:1471
msgid "group.filter"
msgstr ""
msgstr "Iragazi"
#: src/pages/catchup.jsx:1486
msgid "Authors"

4
src/locales/fi-FI.po generated
View file

@ -8,7 +8,7 @@ msgstr ""
"Language: fi\n"
"Project-Id-Version: phanpy\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-11-03 07:11\n"
"PO-Revision-Date: 2024-11-03 12:10\n"
"Last-Translator: \n"
"Language-Team: Finnish\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@ -2725,7 +2725,7 @@ msgstr "Tiheys"
#. js-lingui-explicit-id
#: src/pages/catchup.jsx:1471
msgid "group.filter"
msgstr ""
msgstr "Ryhmä"
#: src/pages/catchup.jsx:1486
msgid "Authors"

166
src/locales/ko-KR.po generated
View file

@ -8,7 +8,7 @@ msgstr ""
"Language: ko\n"
"Project-Id-Version: phanpy\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-11-03 07:11\n"
"PO-Revision-Date: 2024-11-07 06:50\n"
"Last-Translator: \n"
"Language-Team: Korean\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@ -111,7 +111,7 @@ msgstr "게시물"
#: src/components/account-info.jsx:1118
#: src/components/compose.jsx:2488
#: src/components/media-alt-modal.jsx:45
#: src/components/media-modal.jsx:283
#: src/components/media-modal.jsx:388
#: src/components/status.jsx:1721
#: src/components/status.jsx:1738
#: src/components/status.jsx:1862
@ -198,7 +198,7 @@ msgstr "댓글"
#: src/pages/catchup.jsx:72
#: src/pages/catchup.jsx:1447
#: src/pages/catchup.jsx:2068
#: src/pages/settings.jsx:1110
#: src/pages/settings.jsx:1140
msgid "Boosts"
msgstr "부스트"
@ -338,7 +338,7 @@ msgstr "@{username} 님이 팔로워에서 빠짐"
#: src/components/account-info.jsx:1477
msgid "Remove follower…"
msgstr "그만 팔로하기…"
msgstr "팔로워에서 빼기…"
#: src/components/account-info.jsx:1488
msgid "Block <0>@{username}</0>?"
@ -415,7 +415,7 @@ msgstr "팔로"
#: src/components/keyboard-shortcuts-help.jsx:39
#: src/components/list-add-edit.jsx:33
#: src/components/media-alt-modal.jsx:33
#: src/components/media-modal.jsx:247
#: src/components/media-modal.jsx:352
#: src/components/notification-service.jsx:156
#: src/components/report-modal.jsx:75
#: src/components/shortcuts-settings.jsx:230
@ -430,7 +430,7 @@ msgstr "팔로"
#: src/pages/list.jsx:274
#: src/pages/notifications.jsx:868
#: src/pages/notifications.jsx:1082
#: src/pages/settings.jsx:76
#: src/pages/settings.jsx:77
#: src/pages/status.jsx:1299
msgid "Close"
msgstr "닫기"
@ -624,7 +624,7 @@ msgstr "열람 주의 및 민감한 매체"
#: src/components/compose.jsx:1191
#: src/components/status.jsx:93
#: src/pages/settings.jsx:304
#: src/pages/settings.jsx:305
msgid "Public"
msgstr "공개"
@ -637,13 +637,13 @@ msgstr "로컬"
#: src/components/compose.jsx:1200
#: src/components/status.jsx:95
#: src/pages/settings.jsx:307
#: src/pages/settings.jsx:308
msgid "Unlisted"
msgstr "조용히 공개"
#: src/components/compose.jsx:1203
#: src/components/status.jsx:96
#: src/pages/settings.jsx:310
#: src/pages/settings.jsx:311
msgid "Followers only"
msgstr "팔로워만"
@ -863,13 +863,13 @@ msgid "Type to search GIFs"
msgstr "움짤을 검색하려면 입력하세요"
#: src/components/compose.jsx:3491
#: src/components/media-modal.jsx:387
#: src/components/media-modal.jsx:492
#: src/components/timeline.jsx:889
msgid "Previous"
msgstr "이전"
#: src/components/compose.jsx:3509
#: src/components/media-modal.jsx:406
#: src/components/media-modal.jsx:511
#: src/components/timeline.jsx:906
msgid "Next"
msgstr "다음"
@ -879,7 +879,7 @@ msgid "Error loading GIFs"
msgstr "GIF 불러오기 오류"
#: src/components/drafts.jsx:63
#: src/pages/settings.jsx:691
#: src/pages/settings.jsx:692
msgid "Unsent drafts"
msgstr "올리지 않은 초고"
@ -1190,27 +1190,27 @@ msgstr "번역"
msgid "Speak"
msgstr "말하기"
#: src/components/media-modal.jsx:294
#: src/components/media-modal.jsx:399
msgid "Open original media in new window"
msgstr "원본 매체 새 창에서 열기"
#: src/components/media-modal.jsx:298
#: src/components/media-modal.jsx:403
msgid "Open original media"
msgstr "원본 매체 열기"
#: src/components/media-modal.jsx:314
#: src/components/media-modal.jsx:419
msgid "Attempting to describe image. Please wait…"
msgstr "이미지 설명을 생성중입니다. 잠시 기다려 주세요…"
#: src/components/media-modal.jsx:329
#: src/components/media-modal.jsx:434
msgid "Failed to describe image"
msgstr "이미지 설명 생성 실패"
#: src/components/media-modal.jsx:339
#: src/components/media-modal.jsx:444
msgid "Describe image…"
msgstr "이미지 설명…"
#: src/components/media-modal.jsx:362
#: src/components/media-modal.jsx:467
msgid "View post"
msgstr "게시물 보기"
@ -1275,7 +1275,7 @@ msgstr "따라잡기"
#: src/pages/home.jsx:224
#: src/pages/mentions.jsx:20
#: src/pages/mentions.jsx:167
#: src/pages/settings.jsx:1102
#: src/pages/settings.jsx:1132
#: src/pages/trending.jsx:381
msgid "Mentions"
msgstr "언급"
@ -1330,7 +1330,7 @@ msgstr "책갈피"
#: src/pages/catchup.jsx:2062
#: src/pages/favourites.jsx:11
#: src/pages/favourites.jsx:23
#: src/pages/settings.jsx:1106
#: src/pages/settings.jsx:1136
msgid "Likes"
msgstr "좋아요"
@ -2322,7 +2322,7 @@ msgid "<0/> <1/> boosted"
msgstr "<0/> <1/> 님이 부스트 함"
#: src/components/timeline.jsx:453
#: src/pages/settings.jsx:1130
#: src/pages/settings.jsx:1160
msgid "New posts"
msgstr "새 게시물"
@ -3174,7 +3174,7 @@ msgid "{0, plural, one {Announcement} other {Announcements}}"
msgstr "{0, plural, other {공지}}"
#: src/pages/notifications.jsx:614
#: src/pages/settings.jsx:1118
#: src/pages/settings.jsx:1148
msgid "Follow requests"
msgstr "팔로 요청"
@ -3345,240 +3345,240 @@ msgstr "아무 게시물도 찾을 수 없습니다."
msgid "Enter your search term or paste a URL above to get started."
msgstr "시작하려면 위 검색창에 검색어를 입력하거나 URL을 붙여 넣으세요."
#: src/pages/settings.jsx:81
#: src/pages/settings.jsx:82
msgid "Settings"
msgstr "설정"
#: src/pages/settings.jsx:90
#: src/pages/settings.jsx:91
msgid "Appearance"
msgstr "외관"
#: src/pages/settings.jsx:166
#: src/pages/settings.jsx:167
msgid "Light"
msgstr "밝게"
#: src/pages/settings.jsx:177
#: src/pages/settings.jsx:178
msgid "Dark"
msgstr "어둡게"
#: src/pages/settings.jsx:190
#: src/pages/settings.jsx:191
msgid "Auto"
msgstr "자동"
#: src/pages/settings.jsx:200
#: src/pages/settings.jsx:201
msgid "Text size"
msgstr "글자 크기"
#. Preview of one character, in smallest size
#. Preview of one character, in largest size
#: src/pages/settings.jsx:205
#: src/pages/settings.jsx:230
#: src/pages/settings.jsx:206
#: src/pages/settings.jsx:231
msgid "A"
msgstr "글"
#: src/pages/settings.jsx:244
#: src/pages/settings.jsx:245
msgid "Display language"
msgstr "표시 언어"
#: src/pages/settings.jsx:253
#: src/pages/settings.jsx:254
msgid "Volunteer translations"
msgstr "번역 참여하기"
#: src/pages/settings.jsx:264
#: src/pages/settings.jsx:265
msgid "Posting"
msgstr "게시"
#: src/pages/settings.jsx:271
#: src/pages/settings.jsx:272
msgid "Default visibility"
msgstr "기본 공개 범위"
#: src/pages/settings.jsx:272
#: src/pages/settings.jsx:318
#: src/pages/settings.jsx:273
#: src/pages/settings.jsx:319
msgid "Synced"
msgstr "동기화 됨"
#: src/pages/settings.jsx:297
#: src/pages/settings.jsx:298
msgid "Failed to update posting privacy"
msgstr "게시물 공개 범위 수정 실패"
#: src/pages/settings.jsx:320
#: src/pages/settings.jsx:321
msgid "Synced to your instance server's settings. <0>Go to your instance ({instance}) for more settings.</0>"
msgstr "인스턴스 서버의 설정과 동기화 됩니다. <0>쓰고 있는 인스턴스({instance})에서 더 많은 설정이 가능합니다.</0>"
#: src/pages/settings.jsx:335
#: src/pages/settings.jsx:336
msgid "Experiments"
msgstr "시범 기능"
#: src/pages/settings.jsx:348
#: src/pages/settings.jsx:349
msgid "Auto refresh timeline posts"
msgstr "타임라인 게시물 알아서 새로 고침"
#: src/pages/settings.jsx:360
#: src/pages/settings.jsx:361
msgid "Boosts carousel"
msgstr "부스트 캐러셀"
#: src/pages/settings.jsx:376
#: src/pages/settings.jsx:377
msgid "Post translation"
msgstr "게시물 번역"
#: src/pages/settings.jsx:387
#: src/pages/settings.jsx:388
msgid "Translate to"
msgstr "다음 언어로 번역:"
#: src/pages/settings.jsx:398
#: src/pages/settings.jsx:399
msgid "System language ({systemTargetLanguageText})"
msgstr "시스템 언어 ({systemTargetLanguageText})"
#: src/pages/settings.jsx:424
#: src/pages/settings.jsx:425
msgid "{0, plural, =0 {Hide \"Translate\" button for:} other {Hide \"Translate\" button for (#):}}"
msgstr "{0, plural, =0 {다음 언어에 대해 “번역” 버튼 가리기:} other {다음 #개 언어에 대해 “번역” 버튼 가리기:}}"
#: src/pages/settings.jsx:478
#: src/pages/settings.jsx:479
msgid "Note: This feature uses external translation services, powered by <0>Lingva API</0> & <1>Lingva Translate</1>."
msgstr "참고: 이 기능은 외부 번역 서비스인 <0>Lingva API</0> & <1>Lingva Translate</1>를 이용합니다."
#: src/pages/settings.jsx:512
#: src/pages/settings.jsx:513
msgid "Auto inline translation"
msgstr "자동 번역"
#: src/pages/settings.jsx:516
#: src/pages/settings.jsx:517
msgid "Automatically show translation for posts in timeline. Only works for <0>short</0> posts without content warning, media and poll."
msgstr "타임라인에서 게시물에 번역을 자동으로 보여줍니다. 열람 주의나 매체, 설문 조사가 없는 <0>짧은</0> 게시물에만 적용 됩니다."
#: src/pages/settings.jsx:536
#: src/pages/settings.jsx:537
msgid "GIF Picker for composer"
msgstr "글쓰기 창에서 움짤 고르기"
#: src/pages/settings.jsx:540
#: src/pages/settings.jsx:541
msgid "Note: This feature uses external GIF search service, powered by <0>GIPHY</0>. G-rated (suitable for viewing by all ages), tracking parameters are stripped, referrer information is omitted from requests, but search queries and IP address information will still reach their servers."
msgstr "이 기능은 외부 움짤 검색 서비스인 <0>GIPHY</0>를 이용합니다. 전체관람가 움짤만 제공되며, 추적 매개변수는 제거되고 리퍼러 정보는 요청에서 생략되지만, 그럼에도 검색어와 IP 주소 정보는 해당 서비스에 전달 됩니다."
#: src/pages/settings.jsx:569
#: src/pages/settings.jsx:570
msgid "Image description generator"
msgstr "이미지 설명 자동 생성기"
#: src/pages/settings.jsx:574
#: src/pages/settings.jsx:575
msgid "Only for new images while composing new posts."
msgstr "새 게시물을 쓸 때 새로운 이미지에만 적용 됩니다."
#: src/pages/settings.jsx:581
#: src/pages/settings.jsx:582
msgid "Note: This feature uses external AI service, powered by <0>img-alt-api</0>. May not work well. Only for images and in English."
msgstr "참고: 이 기능은 외부 인공지능 서비스인 <0>img-alt-api</0>를 이용합니다. 잘 동작하지 않을 수 있으며, 이미지에만 적용 가능하고 영어만 지원합니다."
#: src/pages/settings.jsx:607
#: src/pages/settings.jsx:608
msgid "Server-side grouped notifications"
msgstr "서버측에서 알림 묶기"
#: src/pages/settings.jsx:611
#: src/pages/settings.jsx:612
msgid "Alpha-stage feature. Potentially improved grouping window but basic grouping logic."
msgstr "알파 단계 기능입니다. 묶음의 크기가 커질 수도 있지만, 묶는 규칙은 기초적입니다."
#: src/pages/settings.jsx:632
#: src/pages/settings.jsx:633
msgid "\"Cloud\" import/export for shortcuts settings"
msgstr "바로 가기 설정을 위해 \"클라우드\" 가져오기/내보내기"
#: src/pages/settings.jsx:637
#: src/pages/settings.jsx:638
msgid "⚠️⚠️⚠️ Very experimental.<0/>Stored in your own profiles notes. Profile (private) notes are mainly used for other profiles, and hidden for own profile."
msgstr ""
#: src/pages/settings.jsx:648
#: src/pages/settings.jsx:649
msgid "Note: This feature uses currently-logged-in instance server API."
msgstr "알림: 이 기능은 현재 로그인한 인스턴스 서버 API를 사용합니다."
#: src/pages/settings.jsx:665
#: src/pages/settings.jsx:666
msgid "Cloak mode <0>(<1>Text</1> → <2>████</2>)</0>"
msgstr "가리기 모드 <0>(<1>글자들</1> → <2>███</2>)</0>"
#: src/pages/settings.jsx:674
#: src/pages/settings.jsx:675
msgid "Replace text as blocks, useful when taking screenshots, for privacy reasons."
msgstr "글자를 모두 네모로 바꿔서 개인정보 염려 없이 스크린숏을 캡처할 수 있게 합니다."
#: src/pages/settings.jsx:699
#: src/pages/settings.jsx:700
msgid "About"
msgstr "정보"
#: src/pages/settings.jsx:738
#: src/pages/settings.jsx:739
msgid "<0>Built</0> by <1>@cheeaun</1>"
msgstr "<1>@cheeaun</1>이 <0>만듦</0>"
#: src/pages/settings.jsx:767
#: src/pages/settings.jsx:768
msgid "Sponsor"
msgstr "후원자"
#: src/pages/settings.jsx:775
#: src/pages/settings.jsx:776
msgid "Donate"
msgstr "기부"
#: src/pages/settings.jsx:783
#: src/pages/settings.jsx:784
msgid "Privacy Policy"
msgstr "개인 정보 보호 정책"
#: src/pages/settings.jsx:790
#: src/pages/settings.jsx:791
msgid "<0>Site:</0> {0}"
msgstr "<0>사이트:</0> {0}"
#: src/pages/settings.jsx:797
#: src/pages/settings.jsx:798
msgid "<0>Version:</0> <1/> {0}"
msgstr "<0>버전:</0> <1/> {0}"
#: src/pages/settings.jsx:812
#: src/pages/settings.jsx:813
msgid "Version string copied"
msgstr "버전 번호 복사 됨"
#: src/pages/settings.jsx:815
#: src/pages/settings.jsx:816
msgid "Unable to copy version string"
msgstr "버전 번호를 복사할 수 없음"
#: src/pages/settings.jsx:1015
#: src/pages/settings.jsx:1020
#: src/pages/settings.jsx:1045
#: src/pages/settings.jsx:1050
msgid "Failed to update subscription. Please try again."
msgstr "구독을 갱신하는 데 실패했습니다. 다시 시도해 보세요."
#: src/pages/settings.jsx:1026
#: src/pages/settings.jsx:1056
msgid "Failed to remove subscription. Please try again."
msgstr "구독을 삭제하는 데 실패했습니다. 다시 시도하세요."
#: src/pages/settings.jsx:1033
#: src/pages/settings.jsx:1063
msgid "Push Notifications (beta)"
msgstr "푸시 알림 (베타)"
#: src/pages/settings.jsx:1055
#: src/pages/settings.jsx:1085
msgid "Push notifications are blocked. Please enable them in your browser settings."
msgstr "푸시 알림이 차단되었습니다. 브라우저 설정에서 푸시 알림을 활성화하세요."
#: src/pages/settings.jsx:1064
#: src/pages/settings.jsx:1094
msgid "Allow from <0>{0}</0>"
msgstr "<0>{0}</0>에게서 알림 받기"
#: src/pages/settings.jsx:1073
#: src/pages/settings.jsx:1103
msgid "anyone"
msgstr "모두"
#: src/pages/settings.jsx:1077
#: src/pages/settings.jsx:1107
msgid "people I follow"
msgstr "내가 팔로하는 사람들"
#: src/pages/settings.jsx:1081
#: src/pages/settings.jsx:1111
msgid "followers"
msgstr "팔로워"
#: src/pages/settings.jsx:1114
#: src/pages/settings.jsx:1144
msgid "Follows"
msgstr "팔로"
#: src/pages/settings.jsx:1122
#: src/pages/settings.jsx:1152
msgid "Polls"
msgstr "설문 조사"
#: src/pages/settings.jsx:1126
#: src/pages/settings.jsx:1156
msgid "Post edits"
msgstr "게시물 수정"
#: src/pages/settings.jsx:1147
#: src/pages/settings.jsx:1177
msgid "Push permission was not granted since your last login. You'll need to <0><1>log in</1> again to grant push permission</0>."
msgstr "마지막 로그인 이후 푸시 권한이 부여되지 않았습니다. <0>푸시 권한을 다시 얻으려면<1>로그인</1>을</0>해야합니다."
#: src/pages/settings.jsx:1163
#: src/pages/settings.jsx:1193
msgid "NOTE: Push notifications only work for <0>one account</0>."
msgstr "주의: 푸시 알림은 <0>단 하나의 계정</0>에만 작동합니다."

14
src/locales/lt-LT.po generated
View file

@ -8,7 +8,7 @@ msgstr ""
"Language: lt\n"
"Project-Id-Version: phanpy\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-11-03 07:11\n"
"PO-Revision-Date: 2024-11-04 09:07\n"
"Last-Translator: \n"
"Language-Team: Lithuanian\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && (n%100>19 || n%100<11) ? 0 : (n%10>=2 && n%10<=9) && (n%100>19 || n%100<11) ? 1 : n%1!=0 ? 2: 3);\n"
@ -97,7 +97,7 @@ msgstr "Sekėjai"
#: src/components/account-info.jsx:742
#: src/components/account-info.jsx:759
msgid "following.stats"
msgstr "Sekimai"
msgstr "sekimai"
#: src/components/account-info.jsx:419
#: src/components/account-info.jsx:776
@ -1052,11 +1052,11 @@ msgstr "<0>1</0> iki <1>9</1>"
#: src/components/keyboard-shortcuts-help.jsx:117
msgid "Focus next column in multi-column mode"
msgstr ""
msgstr "Fokusuoti sekantį stulpelį daugiastulpelių režime"
#: src/components/keyboard-shortcuts-help.jsx:121
msgid "Focus previous column in multi-column mode"
msgstr ""
msgstr "Fokusuoti ankstesnį stulpelį daugiastulpelių režime"
#: src/components/keyboard-shortcuts-help.jsx:125
msgid "Compose new post"
@ -1262,7 +1262,7 @@ msgstr "Yra naujas naujinimas…"
#: src/pages/following.jsx:22
#: src/pages/following.jsx:141
msgid "following.title"
msgstr ""
msgstr "Sekimai"
#: src/components/nav-menu.jsx:200
#: src/pages/catchup.jsx:871
@ -2669,11 +2669,11 @@ msgstr "Pašalinti šį pasivijimą?"
#: src/pages/catchup.jsx:1065
msgid "Removing Catch-up {0}"
msgstr ""
msgstr "Pašalinima {0} pasivijimas"
#: src/pages/catchup.jsx:1069
msgid "Catch-up {0} removed"
msgstr ""
msgstr "Pašalintas {0} pasivijimas"
#: src/pages/catchup.jsx:1083
msgid "Note: Only max 3 will be stored. The rest will be automatically removed."

24
src/locales/pt-BR.po generated
View file

@ -8,7 +8,7 @@ msgstr ""
"Language: pt\n"
"Project-Id-Version: phanpy\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-11-03 07:11\n"
"PO-Revision-Date: 2024-11-05 20:31\n"
"Last-Translator: \n"
"Language-Team: Portuguese, Brazilian\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@ -111,7 +111,7 @@ msgstr "Publicações"
#: src/components/account-info.jsx:1118
#: src/components/compose.jsx:2488
#: src/components/media-alt-modal.jsx:45
#: src/components/media-modal.jsx:283
#: src/components/media-modal.jsx:336
#: src/components/status.jsx:1721
#: src/components/status.jsx:1738
#: src/components/status.jsx:1862
@ -415,7 +415,7 @@ msgstr "Seguir"
#: src/components/keyboard-shortcuts-help.jsx:39
#: src/components/list-add-edit.jsx:33
#: src/components/media-alt-modal.jsx:33
#: src/components/media-modal.jsx:247
#: src/components/media-modal.jsx:300
#: src/components/notification-service.jsx:156
#: src/components/report-modal.jsx:75
#: src/components/shortcuts-settings.jsx:230
@ -863,13 +863,13 @@ msgid "Type to search GIFs"
msgstr "Escreva para pesquisar GIFs"
#: src/components/compose.jsx:3491
#: src/components/media-modal.jsx:387
#: src/components/media-modal.jsx:440
#: src/components/timeline.jsx:889
msgid "Previous"
msgstr "Anterior"
#: src/components/compose.jsx:3509
#: src/components/media-modal.jsx:406
#: src/components/media-modal.jsx:459
#: src/components/timeline.jsx:906
msgid "Next"
msgstr "Seguinte"
@ -1190,27 +1190,27 @@ msgstr "Traduzir"
msgid "Speak"
msgstr "Falar"
#: src/components/media-modal.jsx:294
#: src/components/media-modal.jsx:347
msgid "Open original media in new window"
msgstr "Abrir mídia original em nova janela"
#: src/components/media-modal.jsx:298
#: src/components/media-modal.jsx:351
msgid "Open original media"
msgstr "Abrir mídia original"
#: src/components/media-modal.jsx:314
#: src/components/media-modal.jsx:367
msgid "Attempting to describe image. Please wait…"
msgstr "Tentando descrever imagem. Por favor, espere…"
#: src/components/media-modal.jsx:329
#: src/components/media-modal.jsx:382
msgid "Failed to describe image"
msgstr "Houve um erro ao descrever imagem"
#: src/components/media-modal.jsx:339
#: src/components/media-modal.jsx:392
msgid "Describe image…"
msgstr "Descrever imagem…"
#: src/components/media-modal.jsx:362
#: src/components/media-modal.jsx:415
msgid "View post"
msgstr "Ver publicação"
@ -2726,7 +2726,7 @@ msgstr "Densidade"
#. js-lingui-explicit-id
#: src/pages/catchup.jsx:1471
msgid "group.filter"
msgstr ""
msgstr "Filtrar"
#: src/pages/catchup.jsx:1486
msgid "Authors"

24
src/locales/pt-PT.po generated
View file

@ -8,7 +8,7 @@ msgstr ""
"Language: pt\n"
"Project-Id-Version: phanpy\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-11-03 07:11\n"
"PO-Revision-Date: 2024-11-05 20:31\n"
"Last-Translator: \n"
"Language-Team: Portuguese\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
@ -111,7 +111,7 @@ msgstr "Publicações"
#: src/components/account-info.jsx:1118
#: src/components/compose.jsx:2488
#: src/components/media-alt-modal.jsx:45
#: src/components/media-modal.jsx:283
#: src/components/media-modal.jsx:336
#: src/components/status.jsx:1721
#: src/components/status.jsx:1738
#: src/components/status.jsx:1862
@ -415,7 +415,7 @@ msgstr "Seguir"
#: src/components/keyboard-shortcuts-help.jsx:39
#: src/components/list-add-edit.jsx:33
#: src/components/media-alt-modal.jsx:33
#: src/components/media-modal.jsx:247
#: src/components/media-modal.jsx:300
#: src/components/notification-service.jsx:156
#: src/components/report-modal.jsx:75
#: src/components/shortcuts-settings.jsx:230
@ -863,13 +863,13 @@ msgid "Type to search GIFs"
msgstr "Digite para buscar GIFs"
#: src/components/compose.jsx:3491
#: src/components/media-modal.jsx:387
#: src/components/media-modal.jsx:440
#: src/components/timeline.jsx:889
msgid "Previous"
msgstr "Anterior"
#: src/components/compose.jsx:3509
#: src/components/media-modal.jsx:406
#: src/components/media-modal.jsx:459
#: src/components/timeline.jsx:906
msgid "Next"
msgstr "Seguinte"
@ -1190,27 +1190,27 @@ msgstr "Traduzir"
msgid "Speak"
msgstr "Falar"
#: src/components/media-modal.jsx:294
#: src/components/media-modal.jsx:347
msgid "Open original media in new window"
msgstr "Abrir media original em nova janela"
#: src/components/media-modal.jsx:298
#: src/components/media-modal.jsx:351
msgid "Open original media"
msgstr "Abrir media original"
#: src/components/media-modal.jsx:314
#: src/components/media-modal.jsx:367
msgid "Attempting to describe image. Please wait…"
msgstr "A tentar descrever imagem. Por favor, espere…"
#: src/components/media-modal.jsx:329
#: src/components/media-modal.jsx:382
msgid "Failed to describe image"
msgstr "Falhou ao descrever imagem"
#: src/components/media-modal.jsx:339
#: src/components/media-modal.jsx:392
msgid "Describe image…"
msgstr "Descrever imagem…"
#: src/components/media-modal.jsx:362
#: src/components/media-modal.jsx:415
msgid "View post"
msgstr "Ver publicação"
@ -2726,7 +2726,7 @@ msgstr "Densidade"
#. js-lingui-explicit-id
#: src/pages/catchup.jsx:1471
msgid "group.filter"
msgstr ""
msgstr "Filtrar"
#: src/pages/catchup.jsx:1486
msgid "Authors"

10
src/locales/ru-RU.po generated
View file

@ -8,7 +8,7 @@ msgstr ""
"Language: ru\n"
"Project-Id-Version: phanpy\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-11-03 07:11\n"
"PO-Revision-Date: 2024-11-03 08:19\n"
"Last-Translator: \n"
"Language-Team: Russian\n"
"Plural-Forms: nplurals=4; plural=((n%10==1 && n%100!=11) ? 0 : ((n%10 >= 2 && n%10 <=4 && (n%100 < 12 || n%100 > 14)) ? 1 : ((n%10 == 0 || (n%10 >= 5 && n%10 <=9)) || (n%100 >= 11 && n%100 <= 14)) ? 2 : 3));\n"
@ -1052,11 +1052,11 @@ msgstr "<0>1</0> по <1>9</1>"
#: src/components/keyboard-shortcuts-help.jsx:117
msgid "Focus next column in multi-column mode"
msgstr ""
msgstr "Перейти к следующему столбцу в многоколонном режиме"
#: src/components/keyboard-shortcuts-help.jsx:121
msgid "Focus previous column in multi-column mode"
msgstr ""
msgstr "Перейти к предыдущему столбцу в многоколонном режиме"
#: src/components/keyboard-shortcuts-help.jsx:125
msgid "Compose new post"
@ -2669,11 +2669,11 @@ msgstr "Удалить этот catch-up?"
#: src/pages/catchup.jsx:1065
msgid "Removing Catch-up {0}"
msgstr ""
msgstr "Убираем Catch-up {0}"
#: src/pages/catchup.jsx:1069
msgid "Catch-up {0} removed"
msgstr ""
msgstr "Catch-up {0} убран"
#: src/pages/catchup.jsx:1083
msgid "Note: Only max 3 will be stored. The rest will be automatically removed."

172
src/locales/th-TH.po generated
View file

@ -8,7 +8,7 @@ msgstr ""
"Language: th\n"
"Project-Id-Version: phanpy\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-11-03 07:11\n"
"PO-Revision-Date: 2024-11-10 08:09\n"
"Last-Translator: \n"
"Language-Team: Thai\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@ -24,7 +24,7 @@ msgstr "ล็อค"
#: src/components/account-block.jsx:141
msgid "Posts: {0}"
msgstr ""
msgstr "โพสต์: {0}"
#: src/components/account-block.jsx:146
msgid "Last posted: {0}"
@ -33,7 +33,7 @@ msgstr "โพสต์สุดท้าย: {0}"
#: src/components/account-block.jsx:161
#: src/components/account-info.jsx:634
msgid "Automated"
msgstr ""
msgstr "อัตโนมัติ"
#: src/components/account-block.jsx:168
#: src/components/account-info.jsx:639
@ -43,7 +43,7 @@ msgstr "กลุ่ม"
#: src/components/account-block.jsx:178
msgid "Mutual"
msgstr ""
msgstr "ร่วมกัน"
#: src/components/account-block.jsx:182
#: src/components/account-info.jsx:1680
@ -62,7 +62,7 @@ msgstr "ติดตามคุณ"
#: src/components/account-block.jsx:198
msgid "{followersCount, plural, one {# follower} other {# followers}}"
msgstr ""
msgstr "{followersCount, plural, other {# ผู้ติดตาม}}"
#: src/components/account-block.jsx:207
#: src/components/account-info.jsx:680
@ -111,7 +111,7 @@ msgstr "โพสต์"
#: src/components/account-info.jsx:1118
#: src/components/compose.jsx:2488
#: src/components/media-alt-modal.jsx:45
#: src/components/media-modal.jsx:283
#: src/components/media-modal.jsx:388
#: src/components/status.jsx:1721
#: src/components/status.jsx:1738
#: src/components/status.jsx:1862
@ -198,7 +198,7 @@ msgstr ""
#: src/pages/catchup.jsx:72
#: src/pages/catchup.jsx:1447
#: src/pages/catchup.jsx:2068
#: src/pages/settings.jsx:1110
#: src/pages/settings.jsx:1145
msgid "Boosts"
msgstr ""
@ -415,7 +415,7 @@ msgstr ""
#: src/components/keyboard-shortcuts-help.jsx:39
#: src/components/list-add-edit.jsx:33
#: src/components/media-alt-modal.jsx:33
#: src/components/media-modal.jsx:247
#: src/components/media-modal.jsx:352
#: src/components/notification-service.jsx:156
#: src/components/report-modal.jsx:75
#: src/components/shortcuts-settings.jsx:230
@ -430,7 +430,7 @@ msgstr ""
#: src/pages/list.jsx:274
#: src/pages/notifications.jsx:868
#: src/pages/notifications.jsx:1082
#: src/pages/settings.jsx:76
#: src/pages/settings.jsx:77
#: src/pages/status.jsx:1299
msgid "Close"
msgstr ""
@ -624,7 +624,7 @@ msgstr ""
#: src/components/compose.jsx:1191
#: src/components/status.jsx:93
#: src/pages/settings.jsx:304
#: src/pages/settings.jsx:305
msgid "Public"
msgstr ""
@ -637,13 +637,13 @@ msgstr ""
#: src/components/compose.jsx:1200
#: src/components/status.jsx:95
#: src/pages/settings.jsx:307
#: src/pages/settings.jsx:308
msgid "Unlisted"
msgstr ""
#: src/components/compose.jsx:1203
#: src/components/status.jsx:96
#: src/pages/settings.jsx:310
#: src/pages/settings.jsx:311
msgid "Followers only"
msgstr ""
@ -863,13 +863,13 @@ msgid "Type to search GIFs"
msgstr ""
#: src/components/compose.jsx:3491
#: src/components/media-modal.jsx:387
#: src/components/media-modal.jsx:492
#: src/components/timeline.jsx:889
msgid "Previous"
msgstr ""
#: src/components/compose.jsx:3509
#: src/components/media-modal.jsx:406
#: src/components/media-modal.jsx:511
#: src/components/timeline.jsx:906
msgid "Next"
msgstr ""
@ -879,7 +879,7 @@ msgid "Error loading GIFs"
msgstr ""
#: src/components/drafts.jsx:63
#: src/pages/settings.jsx:691
#: src/pages/settings.jsx:692
msgid "Unsent drafts"
msgstr ""
@ -1190,27 +1190,27 @@ msgstr ""
msgid "Speak"
msgstr ""
#: src/components/media-modal.jsx:294
#: src/components/media-modal.jsx:399
msgid "Open original media in new window"
msgstr ""
#: src/components/media-modal.jsx:298
#: src/components/media-modal.jsx:403
msgid "Open original media"
msgstr ""
#: src/components/media-modal.jsx:314
#: src/components/media-modal.jsx:419
msgid "Attempting to describe image. Please wait…"
msgstr ""
#: src/components/media-modal.jsx:329
#: src/components/media-modal.jsx:434
msgid "Failed to describe image"
msgstr ""
#: src/components/media-modal.jsx:339
#: src/components/media-modal.jsx:444
msgid "Describe image…"
msgstr ""
#: src/components/media-modal.jsx:362
#: src/components/media-modal.jsx:467
msgid "View post"
msgstr ""
@ -1275,7 +1275,7 @@ msgstr ""
#: src/pages/home.jsx:224
#: src/pages/mentions.jsx:20
#: src/pages/mentions.jsx:167
#: src/pages/settings.jsx:1102
#: src/pages/settings.jsx:1137
#: src/pages/trending.jsx:381
msgid "Mentions"
msgstr ""
@ -1330,7 +1330,7 @@ msgstr ""
#: src/pages/catchup.jsx:2062
#: src/pages/favourites.jsx:11
#: src/pages/favourites.jsx:23
#: src/pages/settings.jsx:1106
#: src/pages/settings.jsx:1141
msgid "Likes"
msgstr ""
@ -2322,7 +2322,7 @@ msgid "<0/> <1/> boosted"
msgstr ""
#: src/components/timeline.jsx:453
#: src/pages/settings.jsx:1130
#: src/pages/settings.jsx:1165
msgid "New posts"
msgstr ""
@ -3174,7 +3174,7 @@ msgid "{0, plural, one {Announcement} other {Announcements}}"
msgstr ""
#: src/pages/notifications.jsx:614
#: src/pages/settings.jsx:1118
#: src/pages/settings.jsx:1153
msgid "Follow requests"
msgstr ""
@ -3345,240 +3345,240 @@ msgstr ""
msgid "Enter your search term or paste a URL above to get started."
msgstr ""
#: src/pages/settings.jsx:81
#: src/pages/settings.jsx:82
msgid "Settings"
msgstr ""
#: src/pages/settings.jsx:90
#: src/pages/settings.jsx:91
msgid "Appearance"
msgstr ""
#: src/pages/settings.jsx:166
#: src/pages/settings.jsx:167
msgid "Light"
msgstr ""
#: src/pages/settings.jsx:177
#: src/pages/settings.jsx:178
msgid "Dark"
msgstr ""
#: src/pages/settings.jsx:190
#: src/pages/settings.jsx:191
msgid "Auto"
msgstr ""
#: src/pages/settings.jsx:200
#: src/pages/settings.jsx:201
msgid "Text size"
msgstr ""
#. Preview of one character, in smallest size
#. Preview of one character, in largest size
#: src/pages/settings.jsx:205
#: src/pages/settings.jsx:230
#: src/pages/settings.jsx:206
#: src/pages/settings.jsx:231
msgid "A"
msgstr ""
#: src/pages/settings.jsx:244
#: src/pages/settings.jsx:245
msgid "Display language"
msgstr ""
#: src/pages/settings.jsx:253
#: src/pages/settings.jsx:254
msgid "Volunteer translations"
msgstr ""
#: src/pages/settings.jsx:264
#: src/pages/settings.jsx:265
msgid "Posting"
msgstr ""
#: src/pages/settings.jsx:271
#: src/pages/settings.jsx:272
msgid "Default visibility"
msgstr ""
#: src/pages/settings.jsx:272
#: src/pages/settings.jsx:318
#: src/pages/settings.jsx:273
#: src/pages/settings.jsx:319
msgid "Synced"
msgstr ""
#: src/pages/settings.jsx:297
#: src/pages/settings.jsx:298
msgid "Failed to update posting privacy"
msgstr ""
#: src/pages/settings.jsx:320
#: src/pages/settings.jsx:321
msgid "Synced to your instance server's settings. <0>Go to your instance ({instance}) for more settings.</0>"
msgstr ""
#: src/pages/settings.jsx:335
#: src/pages/settings.jsx:336
msgid "Experiments"
msgstr ""
#: src/pages/settings.jsx:348
#: src/pages/settings.jsx:349
msgid "Auto refresh timeline posts"
msgstr ""
#: src/pages/settings.jsx:360
#: src/pages/settings.jsx:361
msgid "Boosts carousel"
msgstr ""
#: src/pages/settings.jsx:376
#: src/pages/settings.jsx:377
msgid "Post translation"
msgstr ""
#: src/pages/settings.jsx:387
#: src/pages/settings.jsx:388
msgid "Translate to"
msgstr ""
#: src/pages/settings.jsx:398
#: src/pages/settings.jsx:399
msgid "System language ({systemTargetLanguageText})"
msgstr ""
#: src/pages/settings.jsx:424
#: src/pages/settings.jsx:425
msgid "{0, plural, =0 {Hide \"Translate\" button for:} other {Hide \"Translate\" button for (#):}}"
msgstr ""
#: src/pages/settings.jsx:478
#: src/pages/settings.jsx:479
msgid "Note: This feature uses external translation services, powered by <0>Lingva API</0> & <1>Lingva Translate</1>."
msgstr ""
#: src/pages/settings.jsx:512
#: src/pages/settings.jsx:513
msgid "Auto inline translation"
msgstr ""
#: src/pages/settings.jsx:516
#: src/pages/settings.jsx:517
msgid "Automatically show translation for posts in timeline. Only works for <0>short</0> posts without content warning, media and poll."
msgstr ""
#: src/pages/settings.jsx:536
#: src/pages/settings.jsx:537
msgid "GIF Picker for composer"
msgstr ""
#: src/pages/settings.jsx:540
#: src/pages/settings.jsx:541
msgid "Note: This feature uses external GIF search service, powered by <0>GIPHY</0>. G-rated (suitable for viewing by all ages), tracking parameters are stripped, referrer information is omitted from requests, but search queries and IP address information will still reach their servers."
msgstr ""
#: src/pages/settings.jsx:569
#: src/pages/settings.jsx:570
msgid "Image description generator"
msgstr ""
#: src/pages/settings.jsx:574
#: src/pages/settings.jsx:575
msgid "Only for new images while composing new posts."
msgstr ""
#: src/pages/settings.jsx:581
#: src/pages/settings.jsx:582
msgid "Note: This feature uses external AI service, powered by <0>img-alt-api</0>. May not work well. Only for images and in English."
msgstr ""
#: src/pages/settings.jsx:607
#: src/pages/settings.jsx:608
msgid "Server-side grouped notifications"
msgstr ""
#: src/pages/settings.jsx:611
#: src/pages/settings.jsx:612
msgid "Alpha-stage feature. Potentially improved grouping window but basic grouping logic."
msgstr ""
#: src/pages/settings.jsx:632
#: src/pages/settings.jsx:633
msgid "\"Cloud\" import/export for shortcuts settings"
msgstr ""
#: src/pages/settings.jsx:637
#: src/pages/settings.jsx:638
msgid "⚠️⚠️⚠️ Very experimental.<0/>Stored in your own profiles notes. Profile (private) notes are mainly used for other profiles, and hidden for own profile."
msgstr ""
#: src/pages/settings.jsx:648
#: src/pages/settings.jsx:649
msgid "Note: This feature uses currently-logged-in instance server API."
msgstr ""
#: src/pages/settings.jsx:665
#: src/pages/settings.jsx:666
msgid "Cloak mode <0>(<1>Text</1> → <2>████</2>)</0>"
msgstr ""
#: src/pages/settings.jsx:674
#: src/pages/settings.jsx:675
msgid "Replace text as blocks, useful when taking screenshots, for privacy reasons."
msgstr ""
#: src/pages/settings.jsx:699
#: src/pages/settings.jsx:700
msgid "About"
msgstr ""
#: src/pages/settings.jsx:738
#: src/pages/settings.jsx:739
msgid "<0>Built</0> by <1>@cheeaun</1>"
msgstr ""
#: src/pages/settings.jsx:767
#: src/pages/settings.jsx:768
msgid "Sponsor"
msgstr ""
#: src/pages/settings.jsx:775
#: src/pages/settings.jsx:776
msgid "Donate"
msgstr ""
#: src/pages/settings.jsx:783
#: src/pages/settings.jsx:784
msgid "Privacy Policy"
msgstr ""
#: src/pages/settings.jsx:790
#: src/pages/settings.jsx:791
msgid "<0>Site:</0> {0}"
msgstr ""
#: src/pages/settings.jsx:797
#: src/pages/settings.jsx:798
msgid "<0>Version:</0> <1/> {0}"
msgstr ""
#: src/pages/settings.jsx:812
#: src/pages/settings.jsx:813
msgid "Version string copied"
msgstr ""
#: src/pages/settings.jsx:815
#: src/pages/settings.jsx:816
msgid "Unable to copy version string"
msgstr ""
#: src/pages/settings.jsx:1015
#: src/pages/settings.jsx:1020
#: src/pages/settings.jsx:1050
#: src/pages/settings.jsx:1055
msgid "Failed to update subscription. Please try again."
msgstr ""
#: src/pages/settings.jsx:1026
#: src/pages/settings.jsx:1061
msgid "Failed to remove subscription. Please try again."
msgstr ""
#: src/pages/settings.jsx:1033
#: src/pages/settings.jsx:1068
msgid "Push Notifications (beta)"
msgstr ""
#: src/pages/settings.jsx:1055
#: src/pages/settings.jsx:1090
msgid "Push notifications are blocked. Please enable them in your browser settings."
msgstr ""
#: src/pages/settings.jsx:1064
#: src/pages/settings.jsx:1099
msgid "Allow from <0>{0}</0>"
msgstr ""
#: src/pages/settings.jsx:1073
#: src/pages/settings.jsx:1108
msgid "anyone"
msgstr ""
#: src/pages/settings.jsx:1077
#: src/pages/settings.jsx:1112
msgid "people I follow"
msgstr ""
#: src/pages/settings.jsx:1081
#: src/pages/settings.jsx:1116
msgid "followers"
msgstr ""
#: src/pages/settings.jsx:1114
#: src/pages/settings.jsx:1149
msgid "Follows"
msgstr ""
#: src/pages/settings.jsx:1122
#: src/pages/settings.jsx:1157
msgid "Polls"
msgstr ""
#: src/pages/settings.jsx:1126
#: src/pages/settings.jsx:1161
msgid "Post edits"
msgstr ""
#: src/pages/settings.jsx:1147
#: src/pages/settings.jsx:1182
msgid "Push permission was not granted since your last login. You'll need to <0><1>log in</1> again to grant push permission</0>."
msgstr ""
#: src/pages/settings.jsx:1163
#: src/pages/settings.jsx:1198
msgid "NOTE: Push notifications only work for <0>one account</0>."
msgstr ""

6
src/locales/zh-CN.po generated
View file

@ -8,7 +8,7 @@ msgstr ""
"Language: zh\n"
"Project-Id-Version: phanpy\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-11-03 07:11\n"
"PO-Revision-Date: 2024-11-03 09:32\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
"Plural-Forms: nplurals=1; plural=0;\n"
@ -2725,7 +2725,7 @@ msgstr "内容"
#. js-lingui-explicit-id
#: src/pages/catchup.jsx:1471
msgid "group.filter"
msgstr ""
msgstr "分组"
#: src/pages/catchup.jsx:1486
msgid "Authors"
@ -2765,7 +2765,7 @@ msgstr "嘟文按信息密度或深度排序。较短的嘟文“更轻”,而
#: src/pages/catchup.jsx:1610
msgid "Group: Authors"
msgstr "排序: 作者"
msgstr "分组: 作者"
#: src/pages/catchup.jsx:1613
msgid "Posts are grouped by authors, sorted by posts count per author."

View file

@ -561,6 +561,11 @@
display: flex;
align-items: center;
gap: 4px;
small {
flex: 1;
min-width: 0;
}
}
}

View file

@ -14,6 +14,7 @@ import targetLanguages from '../data/lingva-target-languages';
import { api } from '../utils/api';
import getTranslateTargetLanguage from '../utils/get-translate-target-language';
import localeCode2Text from '../utils/localeCode2Text';
import prettyBytes from '../utils/pretty-bytes';
import {
initSubscription,
isPushSupported,
@ -856,6 +857,13 @@ function Settings({ onClose }) {
>
Show keys count
</button>{' '}
<button
type="button"
class="plain2 small"
onClick={async () => alert(await getCachesSize())}
>
Show cache size
</button>{' '}
<button
type="button"
class="plain2 small"
@ -902,6 +910,33 @@ async function getCachesKeys() {
return total;
}
async function getCachesSize() {
const keys = await caches.keys();
let total = {};
let TOTAL = 0;
for (const key of keys) {
const cache = await caches.open(key);
const k = await cache.keys();
for (const item of k) {
try {
const response = await cache.match(item);
const blob = await response.blob();
total[key] = (total[key] || 0) + blob.size;
TOTAL += blob.size;
} catch (e) {
alert('Failed to get cache size for ' + item);
alert(e);
}
}
}
return {
...Object.fromEntries(
Object.entries(total).map(([k, v]) => [k, prettyBytes(v)]),
),
TOTAL: prettyBytes(TOTAL),
};
}
function clearCacheKey(key) {
return caches.delete(key);
}

View file

@ -9,6 +9,10 @@ const notificationTypeKeys = {
poll: ['status'],
update: ['status'],
};
const GROUP_TYPES = ['favourite', 'reblog', 'follow'];
const groupable = (type) => GROUP_TYPES.includes(type);
export function fixNotifications(notifications) {
return notifications.filter((notification) => {
const { type, id, createdAt } = notification;
@ -85,8 +89,8 @@ export function groupNotifications2(groupNotifications) {
} = gn;
const date = createdAt ? new Date(createdAt).toLocaleDateString() : '';
let virtualType = type;
const sameCount =
notificationsCount > 0 && notificationsCount === sampleAccounts?.length;
// const sameCount =
notificationsCount > 0 && notificationsCount === sampleAccounts?.length;
// if (sameCount && (type === 'favourite' || type === 'reblog')) {
if (type === 'favourite' || type === 'reblog') {
virtualType = 'favourite+reblog';
@ -94,7 +98,9 @@ export function groupNotifications2(groupNotifications) {
// const key = `${status?.id}-${virtualType}-${date}-${sameCount ? 1 : 0}`;
const key = `${status?.id}-${virtualType}-${date}`;
const mappedNotification = notificationsMap[key];
if (mappedNotification) {
if (!groupable(type)) {
newGroupNotifications1.push(gn);
} else if (mappedNotification) {
// Merge sampleAccounts + merge _types
sampleAccounts.forEach((a) => {
const mappedAccount = mappedNotification.sampleAccounts.find(
@ -199,7 +205,7 @@ export default function groupNotifications(notifications) {
}
const key = `${status?.id}-${virtualType}-${date}`;
const mappedNotification = notificationsMap[key];
if (virtualType === 'follow_request') {
if (!groupable(type)) {
cleanNotifications[j++] = notification;
} else if (mappedNotification?.account) {
const mappedAccount = mappedNotification._accounts.find(