Release Wondering wapiti (#231)
* [FIX] the reply content type is missing (#214)
* [ADD] Custom emoji installation documentation (#213)
* [CH] Move custom emoji doc in customization doc
* Revert "[CH] Disable server statuses streaming when on small devices as it can disturb user navigation (#128)"
This reverts commit 4a1515472b
as it causes issues on home timeline
* [ADD] Add option to disable quote RT (#220)
* [FIX] Fix double message entry when no chats (#221)
* [CH] Remove settings password options when using ldap (#222)
* [ADD] Add an icon to describe privacy (#223)
* [FIX] Fix wrong default privacy after first compose modal (#229)
* [FIX] Fix Quoted status CW not being forwarded nor hidden (#230)
* Fix i18n issues
* bump version
---------
Co-authored-by: SevicheCC <91365763+Sevichecc@users.noreply.github.com>
Co-authored-by: нездалисько <105280814+uandreew@users.noreply.github.com>
Co-authored-by: clovis <clovis@synapse-medicine.com>
This commit is contained in:
parent
a684ec9e32
commit
9cf92b9ed4
|
@ -53,11 +53,15 @@ const SidebarNavigation = () => {
|
|||
});
|
||||
}
|
||||
|
||||
menu.push({
|
||||
to: '/messages',
|
||||
text: intl.formatMessage(messages.direct),
|
||||
icon: require('@tabler/icons/mail.svg'),
|
||||
});
|
||||
// we only want to add this option is it's not already shown
|
||||
// so only when chats are supported
|
||||
if (features.chats) {
|
||||
menu.push({
|
||||
to: '/messages',
|
||||
text: intl.formatMessage(messages.direct),
|
||||
icon: require('@tabler/icons/mail.svg'),
|
||||
});
|
||||
}
|
||||
|
||||
if (features.bookmarks) {
|
||||
menu.push({
|
||||
|
@ -75,7 +79,7 @@ const SidebarNavigation = () => {
|
|||
});
|
||||
}
|
||||
|
||||
if(features.profileDirectory) {
|
||||
if (features.profileDirectory) {
|
||||
menu.push({
|
||||
to: '/directory',
|
||||
text: intl.formatMessage(messages.directory),
|
||||
|
@ -131,7 +135,7 @@ const SidebarNavigation = () => {
|
|||
<SidebarNavigationLink
|
||||
to='/messages'
|
||||
icon={require('@tabler/icons/mail.svg')}
|
||||
text={<FormattedMessage id='navigation.direct_messages' defaultMessage='Messages' />}
|
||||
text={<FormattedMessage id='column.direct' defaultMessage='Direct messages' />}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import classNames from 'classnames';
|
||||
import { List as ImmutableList } from 'immutable';
|
||||
import React from 'react';
|
||||
import React, { useMemo } from 'react';
|
||||
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
|
||||
import { useHistory } from 'react-router-dom';
|
||||
|
||||
|
@ -109,6 +109,8 @@ const StatusActionBar: React.FC<IStatusActionBar> = ({
|
|||
const isStaff = account ? account.staff : false;
|
||||
const isAdmin = account ? account.admin : false;
|
||||
|
||||
const quotePosts = useMemo(() => features.quotePosts && soapboxConfig.quotePosts, [features, soapboxConfig]);
|
||||
|
||||
if (!status) {
|
||||
return null;
|
||||
}
|
||||
|
@ -601,7 +603,7 @@ const StatusActionBar: React.FC<IStatusActionBar> = ({
|
|||
text={withLabels ? intl.formatMessage(messages.reply) : undefined}
|
||||
/>
|
||||
|
||||
{(features.quotePosts && me) ? (
|
||||
{(quotePosts && me) ? (
|
||||
<DropdownMenuContainer
|
||||
items={reblogMenu}
|
||||
disabled={!publicStatus}
|
||||
|
|
|
@ -11,7 +11,7 @@ import { toggleStatusHidden } from 'soapbox/actions/statuses';
|
|||
import Icon from 'soapbox/components/icon';
|
||||
import AccountContainer from 'soapbox/containers/account_container';
|
||||
import QuotedStatus from 'soapbox/features/status/containers/quoted_status_container';
|
||||
import { useAppDispatch, useSettings } from 'soapbox/hooks';
|
||||
import { useAppDispatch, useSettings, useLogo } from 'soapbox/hooks';
|
||||
import { defaultMediaVisibility, textForScreenReader, getActualStatus } from 'soapbox/utils/status';
|
||||
|
||||
import StatusActionBar from './status-action-bar';
|
||||
|
@ -79,6 +79,8 @@ const Status: React.FC<IStatus> = (props) => {
|
|||
|
||||
const actualStatus = getActualStatus(status);
|
||||
|
||||
const logo = useLogo();
|
||||
|
||||
// Track height changes we know about to compensate scrolling.
|
||||
useEffect(() => {
|
||||
didShowCard.current = Boolean(!muted && !hidden && status?.card);
|
||||
|
@ -207,61 +209,6 @@ const Status: React.FC<IStatus> = (props) => {
|
|||
);
|
||||
}
|
||||
|
||||
if (status.reblog && typeof status.reblog === 'object') {
|
||||
const displayNameHtml = { __html: String(status.getIn(['account', 'display_name_html'])) };
|
||||
|
||||
reblogElement = (
|
||||
<NavLink
|
||||
to={`/@${status.getIn(['account', 'acct'])}`}
|
||||
onClick={(event) => event.stopPropagation()}
|
||||
className='hidden sm:flex items-center text-gray-700 dark:text-gray-600 text-xs font-medium space-x-1 hover:underline'
|
||||
>
|
||||
<Icon src={require('@tabler/icons/repeat.svg')} className='text-green-600' />
|
||||
|
||||
<HStack alignItems='center'>
|
||||
<FormattedMessage
|
||||
id='status.reblogged_by'
|
||||
defaultMessage='{name} reposted'
|
||||
values={{
|
||||
name: <bdi className='max-w-[100px] truncate pr-1'>
|
||||
<strong className='text-gray-800 dark:text-gray-200' dangerouslySetInnerHTML={displayNameHtml} />
|
||||
</bdi>,
|
||||
}}
|
||||
/>
|
||||
</HStack>
|
||||
</NavLink>
|
||||
);
|
||||
|
||||
reblogElementMobile = (
|
||||
<div className='pb-5 -mt-2 sm:hidden truncate'>
|
||||
<NavLink
|
||||
to={`/@${status.getIn(['account', 'acct'])}`}
|
||||
onClick={(event) => event.stopPropagation()}
|
||||
className='flex items-center text-gray-700 dark:text-gray-600 text-xs font-medium space-x-1 hover:underline'
|
||||
>
|
||||
<Icon src={require('@tabler/icons/repeat.svg')} className='text-green-600' />
|
||||
|
||||
<span>
|
||||
<FormattedMessage
|
||||
id='status.reblogged_by'
|
||||
defaultMessage='{name} reposted'
|
||||
values={{
|
||||
name: <bdi>
|
||||
<strong className='text-gray-800 dark:text-gray-200' dangerouslySetInnerHTML={displayNameHtml} />
|
||||
</bdi>,
|
||||
}}
|
||||
/>
|
||||
</span>
|
||||
</NavLink>
|
||||
</div>
|
||||
);
|
||||
|
||||
rebloggedByText = intl.formatMessage(
|
||||
messages.reblogged_by,
|
||||
{ name: String(status.getIn(['account', 'acct'])) },
|
||||
);
|
||||
}
|
||||
|
||||
let quote;
|
||||
|
||||
if (actualStatus.quote) {
|
||||
|
@ -299,7 +246,10 @@ const Status: React.FC<IStatus> = (props) => {
|
|||
className={classNames('status cursor-pointer', { focusable })}
|
||||
tabIndex={focusable && !muted ? 0 : undefined}
|
||||
data-featured={featured ? 'true' : null}
|
||||
aria-label={textForScreenReader(intl, actualStatus, rebloggedByText)}
|
||||
aria-label={textForScreenReader(intl, actualStatus, intl.formatMessage(
|
||||
messages.reblogged_by,
|
||||
{ name: String(status.getIn(['account', 'acct'])) },
|
||||
))}
|
||||
ref={node}
|
||||
onClick={() => history.push(statusUrl)}
|
||||
role='link'
|
||||
|
@ -324,22 +274,61 @@ const Status: React.FC<IStatus> = (props) => {
|
|||
})}
|
||||
data-id={status.id}
|
||||
>
|
||||
{reblogElementMobile}
|
||||
|
||||
<div className='mb-4'>
|
||||
<AccountContainer
|
||||
key={String(actualStatus.getIn(['account', 'id']))}
|
||||
id={String(actualStatus.getIn(['account', 'id']))}
|
||||
timestamp={actualStatus.created_at}
|
||||
timestampUrl={statusUrl}
|
||||
action={reblogElement}
|
||||
hideActions={!reblogElement}
|
||||
showEdit={!!actualStatus.edited_at}
|
||||
showProfileHoverCard={hoverable}
|
||||
withLinkToProfile={hoverable}
|
||||
/>
|
||||
<div className='flex mb-3'>
|
||||
<div className='grow'>
|
||||
{
|
||||
status.reblog && typeof status.reblog === 'object' && (
|
||||
<NavLink
|
||||
to={`/@${status.getIn(['account', 'acct'])}`}
|
||||
onClick={(event) => event.stopPropagation()}
|
||||
className='flex items-center mb-3 text-gray-700 dark:text-gray-600 text-xs font-medium space-x-1 hover:underline'
|
||||
>
|
||||
<Icon src={require('@tabler/icons/repeat.svg')} className='text-green-600' />
|
||||
|
||||
<HStack alignItems='center'>
|
||||
<FormattedMessage
|
||||
id='status.reblogged_by'
|
||||
defaultMessage='{name} reposted'
|
||||
values={{
|
||||
name: <bdi className='max-w-[100px] truncate pr-1'>
|
||||
<strong className='text-gray-800 dark:text-gray-200' dangerouslySetInnerHTML={{ __html: String(status.getIn(['account', 'display_name_html'])) }} />
|
||||
</bdi>,
|
||||
}}
|
||||
/>
|
||||
</HStack>
|
||||
</NavLink>
|
||||
)
|
||||
}
|
||||
<AccountContainer
|
||||
key={String(actualStatus.getIn(['account', 'id']))}
|
||||
id={String(actualStatus.getIn(['account', 'id']))}
|
||||
timestamp={actualStatus.created_at}
|
||||
timestampUrl={statusUrl}
|
||||
hideActions
|
||||
showEdit={!!actualStatus.edited_at}
|
||||
showProfileHoverCard={hoverable}
|
||||
withLinkToProfile={hoverable}
|
||||
/>
|
||||
</div>
|
||||
{
|
||||
actualStatus.visibility === 'public' && <Icon aria-hidden src={require('@tabler/icons/world.svg')} className='h-5 w-5 shrink-0 text-gray-400 dark:text-gray-600' />
|
||||
}
|
||||
{
|
||||
actualStatus.visibility === 'unlisted' && <Icon aria-hidden src={require('@tabler/icons/eye-off.svg')} className='h-5 w-5 shrink-0 text-gray-400 dark:text-gray-600' />
|
||||
}
|
||||
{
|
||||
actualStatus.visibility === 'local' && <Icon aria-hidden src={logo} className='h-5 w-5 shrink-0 text-gray-400 dark:text-gray-600' />
|
||||
}
|
||||
{
|
||||
actualStatus.visibility === 'private' && <Icon aria-hidden src={require('@tabler/icons/lock.svg')} className='h-5 w-5 shrink-0 text-gray-400 dark:text-gray-600' />
|
||||
}
|
||||
{
|
||||
actualStatus.visibility === 'direct' && <Icon aria-hidden src={require('@tabler/icons/mail.svg')} className='h-5 w-5 shrink-0 text-gray-400 dark:text-gray-600' />
|
||||
}
|
||||
</div>
|
||||
|
||||
|
||||
<div className='status__content-wrapper'>
|
||||
{!group && actualStatus.group && (
|
||||
<div className='status__meta'>
|
||||
|
@ -368,7 +357,7 @@ const Status: React.FC<IStatus> = (props) => {
|
|||
onToggleVisibility={handleToggleMediaVisibility}
|
||||
/>
|
||||
|
||||
{quote}
|
||||
{!actualStatus.hidden && quote}
|
||||
|
||||
{!hideActionBar && (
|
||||
<div className='pt-4'>
|
||||
|
|
|
@ -6,10 +6,11 @@ import { expandCommunityTimeline } from 'soapbox/actions/timelines';
|
|||
import PullToRefresh from 'soapbox/components/pull-to-refresh';
|
||||
import { Column } from 'soapbox/components/ui';
|
||||
import { useAppDispatch, useSettings } from 'soapbox/hooks';
|
||||
import { isMobile } from 'soapbox/is_mobile';
|
||||
|
||||
import Timeline from '../ui/components/timeline';
|
||||
|
||||
import ColumnSettings from './containers/column_settings_container';
|
||||
|
||||
const messages = defineMessages({
|
||||
title: { id: 'column.community', defaultMessage: 'Local timeline' },
|
||||
});
|
||||
|
@ -33,13 +34,11 @@ const CommunityTimeline = () => {
|
|||
|
||||
useEffect(() => {
|
||||
dispatch(expandCommunityTimeline({ onlyMedia } as any));
|
||||
if (!isMobile(window.innerWidth)) {
|
||||
const disconnect = dispatch(connectCommunityStream({ onlyMedia } as any));
|
||||
const disconnect = dispatch(connectCommunityStream({ onlyMedia } as any));
|
||||
|
||||
return () => {
|
||||
disconnect();
|
||||
};
|
||||
}
|
||||
return () => {
|
||||
disconnect();
|
||||
};
|
||||
}, [onlyMedia]);
|
||||
|
||||
return (
|
||||
|
|
|
@ -12,6 +12,7 @@ import AutosuggestInput from 'soapbox/components/autosuggest_input';
|
|||
import AutosuggestTextarea from 'soapbox/components/autosuggest_textarea';
|
||||
import Icon from 'soapbox/components/icon';
|
||||
import { Button, Stack } from 'soapbox/components/ui';
|
||||
import SvgIcon from 'soapbox/components/ui/icon/svg-icon';
|
||||
import { isMobile } from 'soapbox/is_mobile';
|
||||
|
||||
import EmojiPickerDropdown from '../../../containers/emoji_picker_dropdown_container';
|
||||
|
@ -31,6 +32,8 @@ import UploadButtonContainer from '../containers/upload_button_container';
|
|||
import WarningContainer from '../containers/warning_container';
|
||||
import { countableText } from '../util/counter';
|
||||
|
||||
|
||||
|
||||
import TextCharacterCounter from './text_character_counter';
|
||||
import VisualCharacterCounter from './visual_character_counter';
|
||||
|
||||
|
@ -45,8 +48,10 @@ const messages = defineMessages({
|
|||
message: { id: 'compose_form.message', defaultMessage: 'Message' },
|
||||
schedule: { id: 'compose_form.schedule', defaultMessage: 'Schedule' },
|
||||
saveChanges: { id: 'compose_form.save_changes', defaultMessage: 'Save changes' },
|
||||
marked: { id: 'compose_form.spoiler.marked', defaultMessage: 'Text is hidden behind warning' },
|
||||
});
|
||||
|
||||
|
||||
export default @withRouter
|
||||
class ComposeForm extends ImmutablePureComponent {
|
||||
|
||||
|
@ -85,10 +90,12 @@ class ComposeForm extends ImmutablePureComponent {
|
|||
clickableAreaRef: PropTypes.object,
|
||||
scheduledAt: PropTypes.instanceOf(Date),
|
||||
features: PropTypes.object.isRequired,
|
||||
spoilerForced: PropTypes.bool,
|
||||
};
|
||||
|
||||
static defaultProps = {
|
||||
showSearch: false,
|
||||
spoilerForced: false,
|
||||
};
|
||||
|
||||
handleChange = (e) => {
|
||||
|
@ -256,7 +263,7 @@ class ComposeForm extends ImmutablePureComponent {
|
|||
}
|
||||
|
||||
render() {
|
||||
const { intl, onPaste, showSearch, anyMedia, shouldCondense, autoFocus, isModalOpen, maxTootChars, scheduledStatusCount, features } = this.props;
|
||||
const { intl, onPaste, showSearch, anyMedia, shouldCondense, autoFocus, isModalOpen, maxTootChars, scheduledStatusCount, features, spoilerForced } = this.props;
|
||||
const condensed = shouldCondense && !this.state.composeFocused && this.isEmpty() && !this.props.isUploading;
|
||||
const disabled = this.props.isSubmitting;
|
||||
const text = [this.props.spoilerText, countableText(this.props.text)].join('');
|
||||
|
@ -327,7 +334,7 @@ class ComposeForm extends ImmutablePureComponent {
|
|||
value={this.props.spoilerText}
|
||||
onChange={this.handleChangeSpoilerText}
|
||||
onKeyDown={this.handleKeyDown}
|
||||
disabled={!this.props.spoiler}
|
||||
disabled={this.props.spoilerForced || !this.props.spoiler}
|
||||
ref={this.setSpoilerText}
|
||||
suggestions={this.props.suggestions}
|
||||
onSuggestionsFetchRequested={this.onSuggestionsFetchRequested}
|
||||
|
@ -380,7 +387,13 @@ class ComposeForm extends ImmutablePureComponent {
|
|||
{features.polls && <PollButtonContainer />}
|
||||
{features.privacyScopes && <PrivacyDropdownContainer />}
|
||||
{features.scheduledStatuses && <ScheduleButtonContainer />}
|
||||
{features.spoilers && <SpoilerButtonContainer />}
|
||||
{features.spoilers && (
|
||||
spoilerForced ? <SvgIcon
|
||||
className={classNames('cursor-not-allowed text-primary-600 hover:text-primary-500 dark:text-primary-400 dark:hover:text-primary-300')}
|
||||
src={require('@tabler/icons/alert-triangle.svg')}
|
||||
title={intl.formatMessage(messages.marked)}
|
||||
/> : <SpoilerButtonContainer />
|
||||
)}
|
||||
{features.richText && <MarkdownButtonContainer />}
|
||||
</div>
|
||||
|
||||
|
|
|
@ -166,7 +166,7 @@ const PrivacyDropdown: React.FC<IPrivacyDropdown> = ({
|
|||
|
||||
const options = [
|
||||
{ icon: require('@tabler/icons/world.svg'), value: 'public', text: intl.formatMessage(messages.public_short), meta: intl.formatMessage(messages.public_long) },
|
||||
{ icon: require('@tabler/icons/lock-open.svg'), value: 'unlisted', text: intl.formatMessage(messages.unlisted_short), meta: intl.formatMessage(messages.unlisted_long) },
|
||||
{ icon: require('@tabler/icons/eye-off.svg'), value: 'unlisted', text: intl.formatMessage(messages.unlisted_short), meta: intl.formatMessage(messages.unlisted_long) },
|
||||
...(features.localOnlyPrivacy ? [{ icon: logo, value: 'local', text: intl.formatMessage(messages.local_short), meta: intl.formatMessage(messages.local_long) }] : []),
|
||||
{ icon: require('@tabler/icons/lock.svg'), value: 'private', text: intl.formatMessage(messages.private_short), meta: intl.formatMessage(messages.private_long) },
|
||||
{ icon: require('@tabler/icons/mail.svg'), value: 'direct', text: intl.formatMessage(messages.direct_short), meta: intl.formatMessage(messages.direct_long) },
|
||||
|
|
|
@ -13,6 +13,7 @@ import {
|
|||
} from 'soapbox/actions/compose';
|
||||
import { getFeatures } from 'soapbox/utils/features';
|
||||
|
||||
|
||||
import ComposeForm from '../components/compose_form';
|
||||
|
||||
const mapStateToProps = state => {
|
||||
|
@ -23,6 +24,7 @@ const mapStateToProps = state => {
|
|||
suggestions: state.getIn(['compose', 'suggestions']),
|
||||
spoiler: state.getIn(['compose', 'spoiler']),
|
||||
spoilerText: state.getIn(['compose', 'spoiler_text']),
|
||||
spoilerForced: state.getIn(['compose', 'spoiler_forced']),
|
||||
privacy: state.getIn(['compose', 'privacy']),
|
||||
focusDate: state.getIn(['compose', 'focusDate']),
|
||||
caretPosition: state.getIn(['compose', 'caretPosition']),
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React, { useEffect } from 'react';
|
||||
import React, { useEffect, useRef } from 'react';
|
||||
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
|
@ -21,6 +21,9 @@ const HomeTimeline: React.FC = () => {
|
|||
const dispatch = useAppDispatch();
|
||||
const features = useFeatures();
|
||||
|
||||
const polling = useRef<NodeJS.Timer | null>(null);
|
||||
|
||||
const isPartial = useAppSelector(state => state.timelines.get('home')?.isPartial === true);
|
||||
const currentAccountId = useAppSelector(state => state.timelines.get('home')?.feedAccountId as string | undefined);
|
||||
const siteTitle = useAppSelector(state => state.instance.title);
|
||||
const currentAccountRelationship = useAppSelector(state => currentAccountId ? state.relationships.get(currentAccountId) : null);
|
||||
|
@ -29,10 +32,37 @@ const HomeTimeline: React.FC = () => {
|
|||
dispatch(expandHomeTimeline({ maxId, accountId: currentAccountId }));
|
||||
};
|
||||
|
||||
// Mastodon generates the feed in Redis, and can return a partial timeline
|
||||
// (HTTP 206) for new users. Poll until we get a full page of results.
|
||||
const checkIfReloadNeeded = () => {
|
||||
if (isPartial) {
|
||||
polling.current = setInterval(() => {
|
||||
dispatch(expandHomeTimeline());
|
||||
}, 3000);
|
||||
} else {
|
||||
stopPolling();
|
||||
}
|
||||
};
|
||||
|
||||
const stopPolling = () => {
|
||||
if (polling.current) {
|
||||
clearInterval(polling.current);
|
||||
polling.current = null;
|
||||
}
|
||||
};
|
||||
|
||||
const handleRefresh = () => {
|
||||
return dispatch(expandHomeTimeline({ maxId: null, accountId: currentAccountId }));
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
checkIfReloadNeeded();
|
||||
|
||||
return () => {
|
||||
stopPolling();
|
||||
};
|
||||
}, [isPartial]);
|
||||
|
||||
useEffect(() => {
|
||||
// Check to see if we still follow the user that is selected in the Feed Carousel.
|
||||
if (currentAccountId) {
|
||||
|
|
|
@ -31,7 +31,7 @@ const Privacy = ({ onNext } : { onNext : () => void}) => {
|
|||
</div>
|
||||
<div className='flex-grow-1 w-1/2'>
|
||||
<h4 className='items-center text-xl font-bold'>
|
||||
<Icon className='inline-block text-primary-500 align-middle mr-1 w-6 h-6' src={require('@tabler/icons/lock-open.svg')} />
|
||||
<Icon className='inline-block text-primary-500 align-middle mr-1 w-6 h-6' src={require('@tabler/icons/eye-off.svg')} />
|
||||
<span className='align-middle'>
|
||||
<FormattedMessage id='onboarding.privacy.unlisted-title' defaultMessage='Unlisted' />
|
||||
</span>
|
||||
|
|
|
@ -8,7 +8,6 @@ import { expandPublicTimeline, expandBubbleTimeline } from 'soapbox/actions/time
|
|||
import PullToRefresh from 'soapbox/components/pull-to-refresh';
|
||||
import { Button, Column, Text } from 'soapbox/components/ui';
|
||||
import { useAppDispatch, useAppSelector, useSettings, useFeatures, useOwnAccount } from 'soapbox/hooks';
|
||||
import { isMobile } from 'soapbox/is_mobile';
|
||||
|
||||
import PinnedHostsPicker from '../remote_timeline/components/pinned_hosts_picker';
|
||||
import Timeline from '../ui/components/timeline';
|
||||
|
@ -40,7 +39,7 @@ const CommunityTimeline = () => {
|
|||
}, [dispatch]);
|
||||
|
||||
const handleLoadMore = React.useCallback((maxId: string) => {
|
||||
if (!bubbleTimeline) {
|
||||
if(!bubbleTimeline) {
|
||||
dispatch(expandPublicTimeline({ maxId, onlyMedia }));
|
||||
} else {
|
||||
dispatch(expandBubbleTimeline({ maxId, onlyMedia }));
|
||||
|
@ -48,7 +47,7 @@ const CommunityTimeline = () => {
|
|||
}, [bubbleTimeline, dispatch, onlyMedia]);
|
||||
|
||||
const handleRefresh = React.useCallback(() => {
|
||||
if (!bubbleTimeline) {
|
||||
if(!bubbleTimeline) {
|
||||
return dispatch(expandPublicTimeline({ onlyMedia } as any));
|
||||
} else {
|
||||
return dispatch(expandBubbleTimeline({ onlyMedia } as any));
|
||||
|
@ -56,15 +55,13 @@ const CommunityTimeline = () => {
|
|||
}, [bubbleTimeline, dispatch, onlyMedia]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!bubbleTimeline) {
|
||||
if(!bubbleTimeline) {
|
||||
dispatch(expandPublicTimeline({ onlyMedia } as any));
|
||||
if (!isMobile(window.innerWidth)) {
|
||||
const disconnect = dispatch(connectPublicStream({ onlyMedia }));
|
||||
const disconnect = dispatch(connectPublicStream({ onlyMedia }));
|
||||
|
||||
return () => {
|
||||
disconnect();
|
||||
};
|
||||
}
|
||||
return () => {
|
||||
disconnect();
|
||||
};
|
||||
} else {
|
||||
dispatch(expandBubbleTimeline({ onlyMedia } as any));
|
||||
// bubble timeline doesnt have streaming for now
|
||||
|
@ -75,37 +72,37 @@ const CommunityTimeline = () => {
|
|||
<Column label={intl.formatMessage(messages.title)} transparent withHeader={false}>
|
||||
<PinnedHostsPicker />
|
||||
{showExplanationBox && <div className='mb-4'>
|
||||
<Text size='lg' weight='bold' className='mb-2'>
|
||||
<FormattedMessage id='fediverse_tab.explanation_box.title' defaultMessage='What is the Fediverse?' />
|
||||
</Text>
|
||||
<FormattedMessage
|
||||
id='fediverse_tab.explanation_box.explanation'
|
||||
defaultMessage='{site_title} is part of the Fediverse, a social network made up of thousands of independent social media sites (aka "servers"). The posts you see here are from 3rd-party servers. You have the freedom to engage with them, or to block any server you don't like. Pay attention to the full username after the second @ symbol to know which server a post is from. To see only {site_title} posts, visit {local}.'
|
||||
values={{
|
||||
site_title: siteTitle,
|
||||
local: (
|
||||
<Link to='/timeline/local'>
|
||||
<FormattedMessage
|
||||
id='empty_column.home.local_tab'
|
||||
defaultMessage='the {site_title} tab'
|
||||
values={{ site_title: siteTitle }}
|
||||
/>
|
||||
</Link>
|
||||
),
|
||||
}}
|
||||
/>
|
||||
{
|
||||
bubbleTimeline && (
|
||||
<p className='mt-2'>
|
||||
<FormattedMessage id='fediverse_tab.explanation_box.bubble' defaultMessage='This timeline shows you all the statuses published on a selection of other instances curated by your moderators.' />
|
||||
</p>
|
||||
)
|
||||
}
|
||||
<div className='text-right'>
|
||||
<Button theme='link' onClick={dismissExplanationBox}>
|
||||
<FormattedMessage id='fediverse_tab.explanation_box.dismiss' defaultMessage="Don\'t show again" />
|
||||
</Button>
|
||||
</div>
|
||||
<Text size="lg" weight="bold" className="mb-2">
|
||||
<FormattedMessage id='fediverse_tab.explanation_box.title' defaultMessage='What is the Fediverse?' />
|
||||
</Text>
|
||||
<FormattedMessage
|
||||
id='fediverse_tab.explanation_box.explanation'
|
||||
defaultMessage='{site_title} is part of the Fediverse, a social network made up of thousands of independent social media sites (aka "servers"). The posts you see here are from 3rd-party servers. You have the freedom to engage with them, or to block any server you don't like. Pay attention to the full username after the second @ symbol to know which server a post is from. To see only {site_title} posts, visit {local}.'
|
||||
values={{
|
||||
site_title: siteTitle,
|
||||
local: (
|
||||
<Link to='/timeline/local'>
|
||||
<FormattedMessage
|
||||
id='empty_column.home.local_tab'
|
||||
defaultMessage='the {site_title} tab'
|
||||
values={{ site_title: siteTitle }}
|
||||
/>
|
||||
</Link>
|
||||
),
|
||||
}}
|
||||
/>
|
||||
{
|
||||
bubbleTimeline && (
|
||||
<p className='mt-2'>
|
||||
<FormattedMessage id='fediverse_tab.explanation_box.bubble' defaultMessage='This timeline shows you all the statuses published on a selection of other instances curated by your moderators.' />
|
||||
</p>
|
||||
)
|
||||
}
|
||||
<div className="text-right">
|
||||
<Button theme="link" onClick={dismissExplanationBox}>
|
||||
<FormattedMessage id='fediverse_tab.explanation_box.dismiss' defaultMessage="Don\'t show again" />
|
||||
</Button>
|
||||
</div>
|
||||
</div>}
|
||||
<PullToRefresh onRefresh={handleRefresh}>
|
||||
<Timeline
|
||||
|
|
|
@ -7,6 +7,7 @@ import { fetchMfa } from 'soapbox/actions/mfa';
|
|||
import List, { ListItem } from 'soapbox/components/list';
|
||||
import { Card, CardBody, CardHeader, CardTitle, Column } from 'soapbox/components/ui';
|
||||
import { useAppSelector, useOwnAccount } from 'soapbox/hooks';
|
||||
import { ConfigDB } from 'soapbox/utils/config_db';
|
||||
import { getFeatures } from 'soapbox/utils/features';
|
||||
|
||||
import Preferences from '../preferences';
|
||||
|
@ -41,6 +42,7 @@ const Settings = () => {
|
|||
const intl = useIntl();
|
||||
|
||||
const mfa = useAppSelector((state) => state.security.get('mfa'));
|
||||
const configuration = useAppSelector((state) => state.admin.get('configs'));
|
||||
const features = useAppSelector((state) => getFeatures(state.instance));
|
||||
const account = useOwnAccount();
|
||||
|
||||
|
@ -59,6 +61,7 @@ const Settings = () => {
|
|||
const navigateToFilters = () => history.push('/filters');
|
||||
|
||||
const isMfaEnabled = mfa.getIn(['settings', 'totp']);
|
||||
const isLdapEnabled = React.useMemo(() => ConfigDB.find(configuration, ':pleroma', ':ldap')?.get('value').find((e) => e.get('tuple').get(0) === ':enabled')?.getIn(['tuple', 1]), [configuration]);
|
||||
|
||||
useEffect(() => {
|
||||
dispatch(fetchMfa());
|
||||
|
@ -111,7 +114,11 @@ const Settings = () => {
|
|||
{features.security && (
|
||||
<>
|
||||
<ListItem label={intl.formatMessage(messages.changeEmail)} onClick={navigateToChangeEmail} />
|
||||
<ListItem label={intl.formatMessage(messages.changePassword)} onClick={navigateToChangePassword} />
|
||||
{
|
||||
!isLdapEnabled && (
|
||||
<ListItem label={intl.formatMessage(messages.changePassword)} onClick={navigateToChangePassword} />
|
||||
)
|
||||
}
|
||||
<ListItem label={intl.formatMessage(messages.configureMfa)} onClick={navigateToMfa}>
|
||||
{isMfaEnabled ?
|
||||
intl.formatMessage(messages.mfaEnabled) :
|
||||
|
|
|
@ -44,6 +44,7 @@ const messages = defineMessages({
|
|||
verifiedCanEditNameLabel: { id: 'soapbox_config.verified_can_edit_name_label', defaultMessage: 'Allow verified users to edit their own display name.' },
|
||||
displayFqnLabel: { id: 'soapbox_config.display_fqn_label', defaultMessage: 'Display domain (eg @user@domain) for local accounts.' },
|
||||
greentextLabel: { id: 'soapbox_config.greentext_label', defaultMessage: 'Enable greentext support' },
|
||||
quoteRT: { id: 'soapbox_config.quote_rt', defaultMessage: 'Enable Quote RT' },
|
||||
promoPanelIconsLink: { id: 'soapbox_config.hints.promo_panel_icons.link', defaultMessage: 'Soapbox Icons List' },
|
||||
authenticatedProfileLabel: { id: 'soapbox_config.authenticated_profile_label', defaultMessage: 'Profiles require authentication' },
|
||||
authenticatedProfileHint: { id: 'soapbox_config.authenticated_profile_hint', defaultMessage: 'Users must be logged-in to view replies and media on user profiles.' },
|
||||
|
@ -262,6 +263,13 @@ const SoapboxConfig: React.FC = () => {
|
|||
/>
|
||||
</ListItem>
|
||||
|
||||
<ListItem label={intl.formatMessage(messages.quoteRT)}>
|
||||
<Toggle
|
||||
checked={soapbox.quotePosts === true}
|
||||
onChange={handleChange(['quotePosts'], (e) => e.target.checked)}
|
||||
/>
|
||||
</ListItem>
|
||||
|
||||
<ListItem
|
||||
label={intl.formatMessage(messages.authenticatedProfileLabel)}
|
||||
hint={intl.formatMessage(messages.authenticatedProfileHint)}
|
||||
|
|
|
@ -116,9 +116,7 @@ const ProfileDropdown: React.FC<IProfileDropdown> = ({ account, children }) => {
|
|||
{menuItem.toggle}
|
||||
</div>
|
||||
);
|
||||
} else if (!menuItem.text) {
|
||||
return <MenuDivider key={idx} />;
|
||||
} else {
|
||||
} else if (menuItem.text) {
|
||||
const Comp: any = menuItem.action ? MenuItem : MenuLink;
|
||||
const itemProps = menuItem.action ? { onSelect: menuItem.action } : { to: menuItem.to, as: Link };
|
||||
|
||||
|
|
|
@ -35,6 +35,7 @@ import HomePage from 'soapbox/pages/home_page';
|
|||
import ProfilePage from 'soapbox/pages/profile_page';
|
||||
import StatusPage from 'soapbox/pages/status_page';
|
||||
import { getAccessToken, getVapidKey } from 'soapbox/utils/auth';
|
||||
import { ConfigDB } from 'soapbox/utils/config_db';
|
||||
import { isStandalone } from 'soapbox/utils/state';
|
||||
// import GroupSidebarPanel from '../groups/sidebar_panel';
|
||||
|
||||
|
@ -116,6 +117,7 @@ import {
|
|||
} from './util/async-components';
|
||||
import { WrappedRoute } from './util/react_router_helpers';
|
||||
|
||||
|
||||
// Dummy import, to make sure that <Status /> ends up in the application bundle.
|
||||
// Without this it ends up in ~8 very commonly used bundles.
|
||||
import 'soapbox/components/status';
|
||||
|
@ -161,6 +163,8 @@ const SwitchingColumnsArea: React.FC = ({ children }) => {
|
|||
const features = useFeatures();
|
||||
const { search } = useLocation();
|
||||
|
||||
const configuration = useAppSelector((state) => state.admin.get('configs'));
|
||||
const isLdapEnabled = React.useMemo(() => ConfigDB.find(configuration, ':pleroma', ':ldap')?.get('value').find((e) => e.get('tuple').get(0) === ':enabled')?.getIn(['tuple', 1]), [configuration]);
|
||||
const { authenticatedProfile, cryptoAddresses } = useSoapboxConfig();
|
||||
const hasCrypto = cryptoAddresses.size > 0;
|
||||
|
||||
|
@ -282,7 +286,11 @@ const SwitchingColumnsArea: React.FC = ({ children }) => {
|
|||
{features.accountAliases && <WrappedRoute path='/settings/aliases' page={DefaultPage} component={Aliases} content={children} />}
|
||||
{features.accountMoving && <WrappedRoute path='/settings/migration' page={DefaultPage} component={Migration} content={children} />}
|
||||
<WrappedRoute path='/settings/email' page={DefaultPage} component={EditEmail} content={children} />
|
||||
<WrappedRoute path='/settings/password' page={DefaultPage} component={EditPassword} content={children} />
|
||||
{
|
||||
!isLdapEnabled && (
|
||||
<WrappedRoute path='/settings/password' page={DefaultPage} component={EditPassword} content={children} />
|
||||
)
|
||||
}
|
||||
<WrappedRoute path='/settings/account' page={DefaultPage} component={DeleteAccount} content={children} />
|
||||
<WrappedRoute path='/settings/media_display' page={DefaultPage} component={MediaDisplay} content={children} />
|
||||
<WrappedRoute path='/settings/mfa' page={DefaultPage} component={MfaForm} exact />
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -531,7 +531,7 @@
|
|||
"federation_restrictions.not_disclosed_message": "{siteTitle} does not disclose federation restrictions through the API.",
|
||||
"fediverse_tab.explanation_box.bubble": "This timeline shows you all the statuses published on a selection of other instances curated by your moderators.",
|
||||
"fediverse_tab.explanation_box.dismiss": "Don't show again",
|
||||
"fediverse_tab.explanation_box.explanation": "{site_title} forma part del Fediverse, una xarxa social formada per milers de servidors independents. Els missatges que veus aquí són de servidors de tercers. Tens la llibertat de interectuar amb ells, o de bloquejar qualsevol servidor que no vulguis veure. Per saber a quin servidor es troba una publicació fixat en el domini després del segon @ al nom d'usuari. Per veure només les publicacions de {site.title}, visita {local}.",
|
||||
"fediverse_tab.explanation_box.explanation": "{site_title} is part of the Fediverse, a social network made up of thousands of independent social media sites (aka \"servers\"). The posts you see here are from 3rd-party servers. You have the freedom to engage with them, or to block any server you don't like. Pay attention to the full username after the second @ symbol to know which server a post is from. To see only {site_title} posts, visit {local}.",
|
||||
"fediverse_tab.explanation_box.title": "Què és el Fediverse?",
|
||||
"feed_suggestions.heading": "Suggested profiles",
|
||||
"feed_suggestions.view_all": "View all",
|
||||
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icona",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Etiqueta",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edita les dades de configuració directament. Els canvis fets directament al fitxer JSON substituiran els camps de formulari de més amunt. Fes clic a Desa per aplicar els canvis.",
|
||||
"soapbox_config.raw_json_label": "Avançat: Edita les dades JSON en brut",
|
||||
"soapbox_config.save": "Desa",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Ikona",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Štítek",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Upravte data nastavení přímo. Změny udělané přímo do JSON přepíše předchozí formulář. Zmáčkněte Uložit pro aplikaci změn.",
|
||||
"soapbox_config.raw_json_label": "Pokročilé: Upravit JSON data",
|
||||
"soapbox_config.save": "Uložit",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Speichern",
|
||||
|
|
|
@ -748,6 +748,10 @@
|
|||
"defaultMessage": "Profile directory",
|
||||
"id": "navigation_bar.profile_directory"
|
||||
},
|
||||
{
|
||||
"defaultMessage": "Dashboard",
|
||||
"id": "tabs_bar.dashboard"
|
||||
},
|
||||
{
|
||||
"defaultMessage": "Switch accounts",
|
||||
"id": "profile_dropdown.switch_account"
|
||||
|
@ -809,10 +813,6 @@
|
|||
"defaultMessage": "Chats",
|
||||
"id": "tabs_bar.chats"
|
||||
},
|
||||
{
|
||||
"defaultMessage": "Messages",
|
||||
"id": "navigation.direct_messages"
|
||||
},
|
||||
{
|
||||
"defaultMessage": "Home",
|
||||
"id": "tabs_bar.home"
|
||||
|
@ -2351,6 +2351,10 @@
|
|||
"defaultMessage": "Save changes",
|
||||
"id": "compose_form.save_changes"
|
||||
},
|
||||
{
|
||||
"defaultMessage": "Text is hidden behind warning",
|
||||
"id": "compose_form.spoiler.marked"
|
||||
},
|
||||
{
|
||||
"defaultMessage": "You have scheduled posts. {click_here} to see them.",
|
||||
"id": "compose_form.scheduled_statuses.message"
|
||||
|
@ -5148,6 +5152,10 @@
|
|||
"defaultMessage": "Enable greentext support",
|
||||
"id": "soapbox_config.greentext_label"
|
||||
},
|
||||
{
|
||||
"defaultMessage": "Enable Quote RT",
|
||||
"id": "soapbox_config.quote_rt"
|
||||
},
|
||||
{
|
||||
"defaultMessage": "Soapbox Icons List",
|
||||
"id": "soapbox_config.hints.promo_panel_icons.link"
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "𐑲𐑒𐑪𐑯",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "𐑧𐑛𐑦𐑑 𐑞 𐑕𐑧𐑑𐑦𐑙𐑟 𐑛𐑱𐑑𐑩 𐑛𐑦𐑮𐑧𐑒𐑑𐑤𐑦. 𐑗𐑱𐑯𐑡𐑩𐑟 𐑥𐑱𐑛 𐑛𐑦𐑮𐑧𐑒𐑑𐑤𐑦 𐑑 𐑞 JSON 𐑓𐑲𐑤 𐑢𐑦𐑤 𐑴𐑝𐑼𐑮𐑲𐑛 𐑞 𐑓𐑹𐑥 𐑓𐑰𐑤𐑛𐑟 𐑩𐑚𐑳𐑝. 𐑒𐑤𐑦𐑒 𐑕𐑱𐑝 𐑑 𐑩𐑐𐑤𐑲 𐑘𐑹 𐑗𐑱𐑯𐑡𐑩𐑟.",
|
||||
"soapbox_config.raw_json_label": "𐑩𐑛𐑝𐑭𐑯𐑕𐑑: 𐑧𐑛𐑦𐑑 raw JSON 𐑛𐑱𐑑𐑩",
|
||||
"soapbox_config.save": "𐑕𐑱𐑝",
|
||||
|
@ -1133,7 +1134,7 @@
|
|||
"time_remaining.minutes": "{number, plural, one {# minute} other {# minutes}} 𐑤𐑧𐑓𐑑",
|
||||
"time_remaining.moments": "𐑥𐑴𐑥𐑩𐑯𐑑𐑕 remaining",
|
||||
"time_remaining.seconds": "{number, plural, one {# second} other {# seconds}} 𐑤𐑧𐑓𐑑",
|
||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people} 𐑑𐑷𐑒𐑦𐑙",
|
||||
"trends.count_by_accounts": "{count} {rawCount, plural, one {person} other {people}} talking",
|
||||
"trends.title": "𐑑𐑮𐑧𐑯𐑛𐑟",
|
||||
"ui.beforeunload": "𐑘𐑹 𐑛𐑮𐑭𐑓𐑑 𐑢𐑦𐑤 𐑚𐑰 𐑤𐑪𐑕𐑑 𐑦𐑓 𐑿 𐑤𐑰𐑝.",
|
||||
"unauthorized_modal.text": "𐑿 𐑯𐑰𐑛 𐑑 𐑚𐑰 𐑤𐑪𐑜𐑛 𐑦𐑯 𐑑 𐑛𐑵 𐑞𐑨𐑑.",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -862,8 +862,8 @@
|
|||
"privacy.public.short": "Public",
|
||||
"privacy.unlisted.long": "Ne pas afficher dans les fils publics",
|
||||
"privacy.unlisted.short": "Non listé",
|
||||
"profile_dropdown.add_account": "Add an existing account",
|
||||
"profile_dropdown.logout": "Log out @{acct}",
|
||||
"profile_dropdown.add_account": "Ajouter un compte existant",
|
||||
"profile_dropdown.logout": "Se déconnecter",
|
||||
"profile_dropdown.switch_account": "Switch accounts",
|
||||
"profile_dropdown.theme": "Thème",
|
||||
"profile_fields_panel.title": "À propos",
|
||||
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Activer les citations (Quote RT)",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Avancé: Editer le fichier JSON",
|
||||
"soapbox_config.save": "Enregistrer",
|
||||
|
@ -1071,7 +1072,7 @@
|
|||
"status.open": "Déplier ce statut",
|
||||
"status.pin": "Épingler sur le profil",
|
||||
"status.pinned": "Statut épinglé",
|
||||
"status.quote": "Quote post",
|
||||
"status.quote": "Citer",
|
||||
"status.reactions.cry": "Sad",
|
||||
"status.reactions.empty": "No one has reacted to this post yet. When someone does, they will show up here.",
|
||||
"status.reactions.heart": "Love",
|
||||
|
@ -1082,7 +1083,7 @@
|
|||
"status.read_more": "En savoir plus",
|
||||
"status.reblog": "Partager",
|
||||
"status.reblog_private": "Booster vers l’audience originale",
|
||||
"status.reblogged_by": "{name} a partagé :",
|
||||
"status.reblogged_by": "{name} a partagé",
|
||||
"status.reblogs.empty": "Personne n’a encore partagé ce statut. Lorsque quelqu’un le fera, il apparaîtra ici.",
|
||||
"status.redraft": "Effacer et ré-écrire",
|
||||
"status.remove_account_from_group": "Remove account from group",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -309,7 +309,7 @@
|
|||
"compose_form.save_changes": "Save changes",
|
||||
"compose_form.schedule": "לתזמן",
|
||||
"compose_form.scheduled_statuses.click_here": "לחץ כאן",
|
||||
"compose_form.scheduled_statuses.message": "יש לך פוסטים מתוזמנים. {לחץ_כאן} כדי לראות אותם.",
|
||||
"compose_form.scheduled_statuses.message": "יש לך פוסטים מתוזמנים. כדי לראות אותם.",
|
||||
"compose_form.sensitive.hide": "סמן מדיה כרגישה",
|
||||
"compose_form.sensitive.marked": "מדיה מסומנת כרגישה",
|
||||
"compose_form.sensitive.unmarked": "מדיה לא מסומנת כרגישה",
|
||||
|
@ -863,7 +863,7 @@
|
|||
"privacy.unlisted.long": "לא יופיע בפידים הציבוריים המשותפים",
|
||||
"privacy.unlisted.short": "לא לפיד הכללי",
|
||||
"profile_dropdown.add_account": "הוסף חשבון קיים",
|
||||
"profile_dropdown.logout": "התנתק מ-{account}",
|
||||
"profile_dropdown.logout": "התנתק מ",
|
||||
"profile_dropdown.switch_account": "Switch accounts",
|
||||
"profile_dropdown.theme": "Theme",
|
||||
"profile_fields_panel.title": "Profile fields",
|
||||
|
@ -914,8 +914,8 @@
|
|||
"remote_instance.federation_panel.no_restrictions_message": "{siteTitle} לא הטיל הגבלות על {host}.",
|
||||
"remote_instance.federation_panel.restricted_message": "{siteTitle} חוסם את כל הפעילויות של {host}.",
|
||||
"remote_instance.federation_panel.some_restrictions_message": "{siteTitle} הטיל כמה הגבלות על {host}.",
|
||||
"remote_instance.pin_host": "הצמד {מארח}",
|
||||
"remote_instance.unpin_host": "בטל הצמדה של {מארח}",
|
||||
"remote_instance.pin_host": "הצמד",
|
||||
"remote_instance.unpin_host": "בטל הצמדה של",
|
||||
"remote_interaction.account_placeholder": "הזן את username@domain שממנו ברצונך לפעול",
|
||||
"remote_interaction.divider": "או",
|
||||
"remote_interaction.favourite": "המשך לסמן לייק",
|
||||
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "סמל",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "תווית",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "ערוך את נתוני ההגדרות ישירות. שינויים שנעשו ישירות בקובץ JSON יעקפו את שדות הטופס שלמעלה. לחץ על שמור כדי להחיל את השינויים שלך.",
|
||||
"soapbox_config.raw_json_label": "מתקדם: ערוך נתוני JSON גולמיים",
|
||||
"soapbox_config.save": "שמור",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -142,7 +142,7 @@
|
|||
"admin_nav.reports": "Kærur",
|
||||
"age_verification.fail": "You must be {ageMinimum, plural, one {# year} other {# years}} old or older.",
|
||||
"age_verification.header": "Enter your birth date",
|
||||
"alert.unexpected.body": "Afsakaðu truflunina. Ef vandamálið heldur áfram skaltu láta hjálparliðið vita. Þú getur líka {clear_cookies} en þetta mun skrá þig út.",
|
||||
"alert.unexpected.body": "Afsakaðu truflunina. Ef vandamálið heldur áfram skaltu láta hjálparliðið vita. Þú getur líka en þetta mun skrá þig út.",
|
||||
"alert.unexpected.browser": "Vafri",
|
||||
"alert.unexpected.clear_cookies": "hreinsað vafrakökur og vafragögn",
|
||||
"alert.unexpected.links.help": "Hjálparmiðstöð",
|
||||
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Salva",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "保存",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -444,7 +444,7 @@
|
|||
"edit_profile.hints.header": "PNG, GIF lub JPG. Zostanie zmniejszony do {size}",
|
||||
"edit_profile.hints.hide_network": "To, kogo obserwujesz i kto Cię obserwuje nie będzie wyświetlane na Twoim profilu",
|
||||
"edit_profile.hints.locked": "Wymaga ręcznego zatwierdzania obserwacji",
|
||||
"edit_profile.hints.meta_fields": "Możesz ustawić {count, plural, one {# niestandardowe pole} few {# niestandardowe pola} many {# niestandardowych pól} wyświetlanych na Twoim profilu.",
|
||||
"edit_profile.hints.meta_fields": "You can have up to {count, plural, one {# custom field} other {# custom fields}} displayed on your profile.",
|
||||
"edit_profile.hints.stranger_notifications": "Wyświetlaj tylko powiadomienia od osób, które obserwujesz",
|
||||
"edit_profile.save": "Zapisz",
|
||||
"edit_profile.success": "Zapisano profil!",
|
||||
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Ikona",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Podpis",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "Adres URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edytuj ustawienia bezpośrednio. Zmiany dokonane w pliku JSON zastąpią powyższe ustawienia. Naciśnij Zapisz, aby zastosować zmiany.",
|
||||
"soapbox_config.raw_json_label": "Zaawansowane: Edytuj surowe dane JSON",
|
||||
"soapbox_config.save": "Zapisz",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Ícone",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Descrição",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edita os dados das definições diretamente. Alterações são feitas diretamente no ficheiro JSON que substituirão os campos do formulário acima. Clica Guardar para aplicar as alterações.",
|
||||
"soapbox_config.raw_json_label": "Avançado: Editar dados JSON diretamente",
|
||||
"soapbox_config.save": "Guardar",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -687,7 +687,7 @@
|
|||
"migration.fields.acct.label": "Обробка нового облікового запису",
|
||||
"migration.fields.acct.placeholder": "username@domain",
|
||||
"migration.fields.confirm_password.label": "Поточний пароль",
|
||||
"migration.hint": "Це призведе до переміщення ваших підписників до нового облікового запису. Ніякі інші дані не будуть переміщені. Щоб виконати міграцію, спочатку потрібно {посилання} на ваш новий акаунт.",
|
||||
"migration.hint": "Це призведе до переміщення ваших підписників до нового облікового запису. Ніякі інші дані не будуть переміщені. Щоб виконати міграцію, спочатку потрібно на ваш новий акаунт.",
|
||||
"migration.hint.link": "створити псевдонім облікового запису",
|
||||
"migration.move_account.fail": "Міграції облікового запису не відбулося.",
|
||||
"migration.move_account.success": "Обліковий запис успішно перенесено.",
|
||||
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Іконка",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Лейбл",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Відредагуйте дані налаштувань безпосередньо. Зміни, внесені безпосередньо в JSON-файл, замінять поля форми вище. Натисніть 'Зберегти', щоб застосувати зміни.",
|
||||
"soapbox_config.raw_json_label": "Розширений: Редагування необроблених даних JSON",
|
||||
"soapbox_config.save": "Зберігти",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "图标",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "标签",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "直接编辑JSON数据。将覆盖此页所有设定。单击以应用更改。",
|
||||
"soapbox_config.raw_json_label": "高级:编辑JSON数据",
|
||||
"soapbox_config.save": "保存更改",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -1036,6 +1036,7 @@
|
|||
"soapbox_config.promo_panel.meta_fields.icon_placeholder": "Icon",
|
||||
"soapbox_config.promo_panel.meta_fields.label_placeholder": "Label",
|
||||
"soapbox_config.promo_panel.meta_fields.url_placeholder": "URL",
|
||||
"soapbox_config.quote_rt": "Enable Quote RT",
|
||||
"soapbox_config.raw_json_hint": "Edit the settings data directly. Changes made directly to the JSON file will override the form fields above. Click Save to apply your changes.",
|
||||
"soapbox_config.raw_json_label": "Advanced: Edit raw JSON data",
|
||||
"soapbox_config.save": "Save",
|
||||
|
|
|
@ -99,6 +99,7 @@ export const SoapboxConfigRecord = ImmutableRecord({
|
|||
gdpr: false,
|
||||
gdprUrl: '',
|
||||
greentext: false,
|
||||
quotePosts: true,
|
||||
promoPanel: PromoPanelRecord(),
|
||||
navlinks: ImmutableMap({
|
||||
homeFooter: ImmutableList<FooterItem>(),
|
||||
|
|
|
@ -19,7 +19,7 @@ import { normalizePoll } from 'soapbox/normalizers/poll';
|
|||
import type { ReducerAccount } from 'soapbox/reducers/accounts';
|
||||
import type { Account, Attachment, Card, Emoji, Mention, Poll, EmbeddedEntity } from 'soapbox/types/entities';
|
||||
|
||||
export type StatusVisibility = 'public' | 'unlisted' | 'private' | 'direct';
|
||||
export type StatusVisibility = 'public' | 'unlisted' | 'local' | 'private' | 'direct';
|
||||
|
||||
// https://docs.joinmastodon.org/entities/status/
|
||||
export const StatusRecord = ImmutableRecord({
|
||||
|
|
|
@ -101,6 +101,7 @@ export const ReducerRecord = ImmutableRecord({
|
|||
sensitive: false,
|
||||
spoiler: false,
|
||||
spoiler_text: '',
|
||||
spoiler_forced: false,
|
||||
suggestions: ImmutableList(),
|
||||
suggestion_token: null as string | null,
|
||||
tagHistory: ImmutableList<string>(),
|
||||
|
@ -143,7 +144,9 @@ export const statusToMentionsAccountIdsArray = (status: StatusEntity, account: A
|
|||
function clearAll(state: State) {
|
||||
return ReducerRecord({
|
||||
content_type: state.default_content_type,
|
||||
default_content_type: state.default_content_type,
|
||||
privacy: state.default_privacy,
|
||||
default_privacy: state.default_privacy,
|
||||
idempotencyKey: uuid(),
|
||||
});
|
||||
}
|
||||
|
@ -359,8 +362,9 @@ export default function compose(state = ReducerRecord({ idempotencyKey: uuid(),
|
|||
map.set('caretPosition', null);
|
||||
map.set('idempotencyKey', uuid());
|
||||
map.set('content_type', state.default_content_type);
|
||||
map.set('spoiler', false);
|
||||
map.set('spoiler_text', '');
|
||||
map.set('spoiler', !!action.status.getIn(['pleroma', 'spoiler_text', 'text/plain']));
|
||||
map.set('spoiler_forced', !!action.status.getIn(['pleroma', 'spoiler_text', 'text/plain']));
|
||||
map.set('spoiler_text', action.status.getIn(['pleroma', 'spoiler_text', 'text/plain']) || '');
|
||||
});
|
||||
case COMPOSE_SUBMIT_REQUEST:
|
||||
return state.set('is_submitting', true);
|
||||
|
|
|
@ -31,6 +31,7 @@ The instance logo must be a valid svg file. It will be shown in pages using the
|
|||
If you want the logo to match your color settings, you will need to update it so every `fill` or `stroke` property that you want to change use the special value `currentColor`
|
||||
https://css-tricks.com/currentcolor/
|
||||
|
||||
|
||||
## About pages
|
||||
|
||||
It is possible to create arbitrary HTML pages under `/about/:page` on your website.
|
||||
|
@ -44,3 +45,31 @@ If you create a file called `index.html`, it will be treated as the root (availa
|
|||
|
||||
For convenience, Mangane ships with sample files under `instance/about.example`.
|
||||
Simply rename that directory to `about` and start editing!
|
||||
|
||||
## How to add new emojis to a reaction on a status?
|
||||
|
||||
1. We clone the Mangane repository to our computer/server and then open the file **app/soapbox/locales/defaultMessages.json**
|
||||
In it, we look for the field `"defaultMessage": "Love","`.
|
||||
After it, we indent to write code for our emoji (to make the translation work).
|
||||
![](https://telegra.ph/file/2aac2c64934dae56f8357.png)
|
||||
In my case, I translated the emoji "Okay" and named its ID as "status.reactions.okay".
|
||||
|
||||
2. Now we go to **app/soapbox/components/status-action-bar.tsx** and search for `_reactionHeart: { id: 'status.reactions.heart', defaultMessage: 'Love' },` After that, we simply duplicate its code, replacing "heart" and "love" with the name and description of our emoji. For example, we replace `status.reactions.heart" with "status.reactions.okay` and replace `defaultMessage: 'Love'` with `defaultMessage: 'I'm okay'` (default language is English).
|
||||
![enter image description here](https://telegra.ph/file/583bc89b8aa9af7dc24d0.png)
|
||||
|
||||
3. After this step, we go to the file with our localization and add new translation lines. In my case, it's Ukrainian localization, so the file **app/soapbox/locales/uk.json**
|
||||
|
||||
![enter image description here](https://telegra.ph/file/22af87c7465d0ca430479.png)
|
||||
|
||||
4. "Now that we have finished with the localization, we go to the configuration file of Mangane(Soapbox), which is located at app/soapbox/normalizers/soapbox/soapbox_config.ts, and look for `❤️,` in it.
|
||||
We can add our newly created emoji in a similar manner. For example, we can add our "Okay" emoji by adding the following line to the config file: `'👌',`
|
||||
This will add the "Okay" emoji to the list of available reactions in the app."
|
||||
![enter image description here](https://telegra.ph/file/e22708475171d322b6f23.png)
|
||||
|
||||
5. In this file, we are almost done. Now, we go to the last file, which is **app/soapbox/utils/emoji_reacts.ts**. We can add our newly created emoji in the same way as we did in soapbox_config.ts and we are done.
|
||||
![enter image description here](https://telegra.ph/file/f3913bff911e18fe1c345.png)
|
||||
|
||||
Now, we need to build Mangane and install it on our instance. After installation, the new reactions will appear when we click the 'Refresh' button on the website.
|
||||
|
||||
If you want to see how I did it in my repository, you can check it out at the following [link.](https://github.com/ua-thinking/ak.noleron.com/commit/2d20b259f95b0a895d376a43890d523c189d0781)
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "mangane-fe",
|
||||
"version": "hyperactive-sloth",
|
||||
"version": "wondering-wapiti",
|
||||
"displayName": "Mangane",
|
||||
"description": "Devanture pour https://bdx.town",
|
||||
"homepage": "https://bdx.town",
|
||||
|
|
Loading…
Reference in a new issue