Merge commit 'f1a6f4333a75f5bc186334f7f43a26e969cd712d' into glitch-soc/merge-upstream

This commit is contained in:
Claire committed 2025-05-25 14:51:59 +02:00
commit b031f65670
148 files changed
+1524 -1211

No files matched your search

+41 -8
View File
@@ -11,9 +11,12 @@ import {
unblockAccount,
muteAccount,
unmuteAccount,
followAccountSuccess,
} from 'mastodon/actions/accounts';
import { showAlertForError } from 'mastodon/actions/alerts';
import { openModal } from 'mastodon/actions/modal';
import { initMuteModal } from 'mastodon/actions/mutes';
import { apiFollowAccount } from 'mastodon/api/accounts';
import { Avatar } from 'mastodon/components/avatar';
import { Button } from 'mastodon/components/button';
import { FollowersCounter } from 'mastodon/components/counters';
@@ -24,6 +27,7 @@ import { RelativeTimestamp } from 'mastodon/components/relative_timestamp';
import { ShortNumber } from 'mastodon/components/short_number';
import { Skeleton } from 'mastodon/components/skeleton';
import { VerifiedBadge } from 'mastodon/components/verified_badge';
import { me } from 'mastodon/initial_state';
import type { MenuItem } from 'mastodon/models/dropdown_menu';
import { useAppSelector, useAppDispatch } from 'mastodon/store';
@@ -113,14 +117,43 @@ export const Account: React.FC<{
];
} else if (defaultAction !== 'block') {
const handleAddToLists = () => {
dispatch(
openModal({
modalType: 'LIST_ADDER',
modalProps: {
accountId: id,
},
}),
);
const openAddToListModal = () => {
dispatch(
openModal({
modalType: 'LIST_ADDER',
modalProps: {
accountId: id,
},
}),
);
};
if (relationship?.following || relationship?.requested || id === me) {
openAddToListModal();
} else {
dispatch(
openModal({
modalType: 'CONFIRM_FOLLOW_TO_LIST',
modalProps: {
accountId: id,
onConfirm: () => {
apiFollowAccount(id)
.then((relationship) => {
dispatch(
followAccountSuccess({
relationship,
alreadyFollowing: false,
}),
);
openAddToListModal();
})
.catch((err: unknown) => {
dispatch(showAlertForError(err));
});
},
},
}),
);
}
};
arr = [
@@ -44,6 +44,7 @@ const severityMessages = {
const mapStateToProps = state => ({
server: state.getIn(['server', 'server']),
locale: state.getIn(['meta', 'locale']),
extendedDescription: state.getIn(['server', 'extendedDescription']),
domainBlocks: state.getIn(['server', 'domainBlocks']),
});
@@ -91,6 +92,7 @@ class About extends PureComponent {
static propTypes = {
server: ImmutablePropTypes.map,
locale: ImmutablePropTypes.string,
extendedDescription: ImmutablePropTypes.map,
domainBlocks: ImmutablePropTypes.contains({
isLoading: PropTypes.bool,
@@ -114,7 +116,7 @@ class About extends PureComponent {
};
render () {
const { multiColumn, intl, server, extendedDescription, domainBlocks } = this.props;
const { multiColumn, intl, server, extendedDescription, domainBlocks, locale } = this.props;
const isLoading = server.get('isLoading');
return (
@@ -168,12 +170,15 @@ class About extends PureComponent {
<p><FormattedMessage id='about.not_available' defaultMessage='This information has not been made available on this server.' /></p>
) : (
<ol className='rules-list'>
{server.get('rules').map(rule => (
<li key={rule.get('id')}>
<div className='rules-list__text'>{rule.get('text')}</div>
{rule.get('hint').length > 0 && (<div className='rules-list__hint'>{rule.get('hint')}</div>)}
</li>
))}
{server.get('rules').map(rule => {
const text = rule.getIn(['translations', locale, 'text']) || rule.get('text');
const hint = rule.getIn(['translations', locale, 'hint']) || rule.get('hint');
return (
<li key={rule.get('id')}>
<div className='rules-list__text'>{text}</div>
{hint.length > 0 && (<div className='rules-list__hint'>{hint}</div>)}
</li>
)})}
</ol>
))}
</Section>
@@ -12,6 +12,7 @@ import Option from './components/option';
const mapStateToProps = state => ({
rules: state.getIn(['server', 'server', 'rules']),
locale: state.getIn(['meta', 'locale']),
});
class Rules extends PureComponent {
@@ -19,6 +20,7 @@ class Rules extends PureComponent {
static propTypes = {
onNextStep: PropTypes.func.isRequired,
rules: ImmutablePropTypes.list,
locale: PropTypes.string,
selectedRuleIds: ImmutablePropTypes.set.isRequired,
onToggle: PropTypes.func.isRequired,
};
@@ -34,7 +36,7 @@ class Rules extends PureComponent {
};
render () {
const { rules, selectedRuleIds } = this.props;
const { rules, locale, selectedRuleIds } = this.props;
return (
<>
@@ -49,7 +51,7 @@ class Rules extends PureComponent {
value={item.get('id')}
checked={selectedRuleIds.includes(item.get('id'))}
onToggle={this.handleRulesToggle}
label={item.get('text')}
label={item.getIn(['translations', locale, 'text']) || item.get('text')}
multiple
/>
))}
@@ -24,7 +24,9 @@ export const HotkeyIndicator: React.FC<{
enter: [{ opacity: 1 }],
leave: [{ opacity: 0 }],
onRest: (_result, _ctrl, item) => {
onDismiss(item);
if (item) {
onDismiss(item);
}
},
});
@@ -346,8 +346,10 @@ export const Video: React.FC<{
const updateProgress = () => {
nextFrame = requestAnimationFrame(() => {
if (videoRef.current) {
const progress =
videoRef.current.currentTime / videoRef.current.duration;
void api.start({
progress: `${(videoRef.current.currentTime / videoRef.current.duration) * 100}%`,
progress: isNaN(progress) ? '0%' : `${progress * 100}%`,
immediate: reduceMotion,
config: config.stiff,
});
+2 -2
View File
@@ -52,7 +52,7 @@
"account.joined_short": "S'hi va unir",
"account.languages": "Canvia les llengües subscrites",
"account.link_verified_on": "La propietat d'aquest enllaç es va verificar el dia {date}",
"account.locked_info": "L'estat de privadesa del compte està definit com a blocat. El propietari revisa manualment qui pot seguir-lo.",
"account.locked_info": "L'estat de privacitat del compte està definit com a blocat. El propietari revisa manualment qui pot seguir-lo.",
"account.media": "Contingut",
"account.mention": "Menciona @{name}",
"account.moved_to": "{name} ha indicat que el seu nou compte és:",
@@ -727,7 +727,7 @@
"privacy.unlisted.long": "Menys fanfàrries algorísmiques",
"privacy.unlisted.short": "Públic silenciós",
"privacy_policy.last_updated": "Darrera actualització {date}",
"privacy_policy.title": "Política de privadesa",
"privacy_policy.title": "Política de Privacitat",
"recommended": "Recomanat",
"refresh": "Actualitza",
"regeneration_indicator.please_stand_by": "Espereu.",
+6
View File
@@ -28,7 +28,11 @@
"account.edit_profile": "Cuir an phróifíl in eagar",
"account.enable_notifications": "Cuir mé in eol nuair bpostálann @{name}",
"account.endorse": "Cuir ar an phróifíl mar ghné",
"account.familiar_followers_many": "Ina dhiaidh sin ag {name1}, {name2}, agus {othersCount, plural, \n one {duine eile atá aithnid duit} \n two {# duine eile atá aithnid duit} \n few {# dhuine eile atá aithnid duit} \n many {# nduine eile atá aithnid duit} \n other {# duine eile atá aithnid duit}}",
"account.familiar_followers_one": "Ina dhiaidh sin {name1}",
"account.familiar_followers_two": "Ina dhiaidh sin tá {name1} agus {name2}",
"account.featured": "Faoi thrácht",
"account.featured.accounts": "Próifílí",
"account.featured.hashtags": "Haischlibeanna",
"account.featured.posts": "Poist",
"account.featured_tags.last_status_at": "Postáil is déanaí ar {date}",
@@ -405,8 +409,10 @@
"hashtag.counter_by_accounts": "{count, plural, one {{counter} rannpháirtí} two {{counter} rannpháirtí} few {{counter} rannpháirtí} many {{counter} rannpháirtí} other {{counter} rannpháirtí}}",
"hashtag.counter_by_uses": "{count, plural, one {{counter} post} two {{counter} post} few {{counter} post} many {{counter} post} other {{counter} poist}}",
"hashtag.counter_by_uses_today": "{count, plural, one {{counter} post inniu} other {{counter} poist inniu}} inniu",
"hashtag.feature": "Gné ar phróifíl",
"hashtag.follow": "Lean haischlib",
"hashtag.mute": "Balbhaigh #{hashtag}",
"hashtag.unfeature": "Ná cuir le feiceáil ar phróifíl",
"hashtag.unfollow": "Ná lean haischlib",
"hashtags.and_other": "agus {count, plural, one {} two {# níos} few {# níos} many {# níos} other {# níos}}",
"hints.profiles.followers_may_be_missing": "Seans go bhfuil leantóirí don phróifíl seo in easnamh.",
+2 -2
View File
@@ -391,7 +391,7 @@
"footer.privacy_policy": "Política de privacidade",
"footer.source_code": "Ver código fonte",
"footer.status": "Estado",
"footer.terms_of_service": "Termos do servizo",
"footer.terms_of_service": "Condicións do servizo",
"generic.saved": "Gardado",
"getting_started.heading": "Primeiros pasos",
"hashtag.admin_moderation": "Abrir interface de moderación para ##{name}",
@@ -894,7 +894,7 @@
"tabs_bar.home": "Inicio",
"tabs_bar.notifications": "Notificacións",
"terms_of_service.effective_as_of": "Con efecto desde o {date}",
"terms_of_service.title": "Termos do Servizo",
"terms_of_service.title": "Condicións do Servizo",
"terms_of_service.upcoming_changes_on": "Cambios por vir o {date}",
"time_remaining.days": "Remata en {number, plural, one {# día} other {# días}}",
"time_remaining.hours": "Remata en {number, plural, one {# hora} other {# horas}}",
+1
View File
@@ -28,6 +28,7 @@
"account.edit_profile": "Profil szerkesztése",
"account.enable_notifications": "Figyelmeztessen, ha @{name} bejegyzést tesz közzé",
"account.endorse": "Kiemelés a profilodon",
"account.familiar_followers_many": "{name1}, {name2} és még {othersCount, plural, one {egy valaki} other {# valaki}}, akit ismersz",
"account.familiar_followers_one": "{name1} követi",
"account.familiar_followers_two": "{name1} és {name2} követi",
"account.featured": "Kiemelt",
+3
View File
@@ -28,6 +28,9 @@
"account.edit_profile": "Rediger profil",
"account.enable_notifications": "Varsle meg når @{name} skriv innlegg",
"account.endorse": "Vis på profilen",
"account.familiar_followers_many": "Fylgt av {name1}, {name2}, og {othersCount, plural, one {ein annan du kjenner} other {# andre du kjenner}}",
"account.familiar_followers_one": "Fylgt av {name1}",
"account.familiar_followers_two": "Fylgt av {name1} og {name2}",
"account.featured": "Utvald",
"account.featured.accounts": "Profilar",
"account.featured.hashtags": "Emneknaggar",
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M440-800v487L216-537l-56 57 320 320 320-320-56-57-224 224v-487h-80Z"/></svg>

After

Width:  |  Height:  |  Size: 173 B

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M440-800v487L216-537l-56 57 320 320 320-320-56-57-224 224v-487h-80Z"/></svg>

After

Width:  |  Height:  |  Size: 173 B

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M440-160v-487L216-423l-56-57 320-320 320 320-56 57-224-224v487h-80Z"/></svg>

After

Width:  |  Height:  |  Size: 173 B

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M440-160v-487L216-423l-56-57 320-320 320 320-56 57-224-224v487h-80Z"/></svg>

After

Width:  |  Height:  |  Size: 173 B

@@ -1,7 +1,7 @@
@use '../mastodon/functions' as *;
// Dependent colors
$black: #000000;
$black: #000;
$classic-base-color: hsl(240deg, 16%, 19%);
$classic-primary-color: hsl(240deg, 29%, 70%);
@@ -2,7 +2,7 @@
body {
accent-color: #6364ff;
word-break: break-word;
overflow-wrap: anywhere;
margin: 0;
background-color: #f3f2f5;
padding: 0;
@@ -45,7 +45,7 @@ table + p {
.email {
min-width: 280px;
font-family: Inter, 'Lucida Grande', sans-serif;
word-break: break-word;
overflow-wrap: anywhere;
color: #17063b;
background-color: #f3f2f5;
}
+1 -1
View File
@@ -4,5 +4,5 @@
format('woff2-variations');
font-weight: 100 900;
font-style: normal;
mso-generic-font-family: swiss; /* stylelint-disable-line property-no-unknown -- Proprietary property for Outlook on Windows. */
mso-generic-font-family: swiss;
}
@@ -5,8 +5,8 @@
$lighten-multiplier: -1
);
$black: #000000; // Black
$white: #ffffff; // White
$black: #000; // Black
$white: #fff; // White
$blurple-500: #6364ff; // Brand purple
$grey-600: hsl(240deg, 8%, 33%); // Trout
$grey-100: hsl(240deg, 51%, 90%); // Topaz
@@ -2,8 +2,8 @@
@use 'functions' as *;
// Commonly used web colors
$black: #000000; // Black
$white: #ffffff; // White
$black: #000; // Black
$white: #fff; // White
$red-600: #b7253d !default; // Deep Carmine
$red-500: #df405a !default; // Cerise
$blurple-600: #563acc; // Iris
+13 -5
View File
@@ -114,15 +114,14 @@ $content-width: 840px;
a {
font-size: 14px;
display: block;
display: flex;
align-items: center;
gap: 6px;
padding: 15px;
color: $darker-text-color;
text-decoration: none;
transition: all 200ms linear;
transition-property: color, background-color;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
&:hover {
color: $primary-text-color;
@@ -1121,7 +1120,7 @@ a.name-tag,
display: flex;
justify-content: space-between;
margin-bottom: 0;
word-break: break-word;
overflow-wrap: anywhere;
}
&__permissions {
@@ -1144,6 +1143,15 @@ a.name-tag,
}
}
.rule-actions {
display: flex;
flex-direction: column;
a.table-action-link {
padding-inline-start: 0;
}
}
.dashboard__counters.admin-account-counters {
margin-top: 10px;
}
@@ -8385,7 +8385,7 @@ noscript {
}
a {
word-break: break-word;
overflow-wrap: anywhere;
}
}
}
+1 -1
View File
@@ -1156,7 +1156,7 @@ code {
&__type {
color: $darker-text-color;
word-break: break-word;
overflow-wrap: anywhere;
}
}