pl-fe: Move compose event form to a separate page
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
This commit is contained in:
parent
071c46e09a
commit
f7414a2470
81 changed files with 410 additions and 408 deletions
|
@ -1,7 +1,6 @@
|
|||
import { defineMessages } from 'react-intl';
|
||||
|
||||
import { getClient } from 'pl-fe/api';
|
||||
import { useModalsStore } from 'pl-fe/stores/modals';
|
||||
import toast from 'pl-fe/toast';
|
||||
|
||||
import { importEntities } from './importer';
|
||||
|
@ -131,7 +130,6 @@ const submitEvent = ({
|
|||
? getClient(state).events.createEvent(params)
|
||||
: getClient(state).events.editEvent(statusId, params)
|
||||
).then((data) => {
|
||||
useModalsStore.getState().closeModal('COMPOSE_EVENT');
|
||||
dispatch(importEntities({ statuses: [data] }));
|
||||
dispatch(submitEventSuccess(data));
|
||||
toast.success(
|
||||
|
@ -141,6 +139,8 @@ const submitEvent = ({
|
|||
actionLink: `/@${data.account.acct}/events/${data.id}`,
|
||||
},
|
||||
);
|
||||
|
||||
return data;
|
||||
}).catch((error) => {
|
||||
dispatch(submitEventFail(error));
|
||||
});
|
||||
|
@ -446,9 +446,7 @@ interface EventFormSetAction {
|
|||
text: string;
|
||||
}
|
||||
|
||||
const editEvent = (statusId: string) => (dispatch: AppDispatch, getState: () => RootState) => {
|
||||
const status = getState().statuses.get(statusId)!;
|
||||
|
||||
const initEventEdit = (statusId: string) => (dispatch: AppDispatch, getState: () => RootState) => {
|
||||
dispatch({ type: STATUS_FETCH_SOURCE_REQUEST, statusId });
|
||||
|
||||
return getClient(getState()).statuses.getStatusSource(statusId).then(response => {
|
||||
|
@ -458,11 +456,7 @@ const editEvent = (statusId: string) => (dispatch: AppDispatch, getState: () =>
|
|||
composeId: `compose-event-modal-${statusId}`,
|
||||
text: response.text,
|
||||
});
|
||||
useModalsStore.getState().openModal('COMPOSE_EVENT', {
|
||||
status,
|
||||
statusText: response.text,
|
||||
location: response.location || undefined,
|
||||
});
|
||||
return response;
|
||||
}).catch(error => {
|
||||
dispatch({ type: STATUS_FETCH_SOURCE_FAIL, statusId, error });
|
||||
});
|
||||
|
@ -592,7 +586,7 @@ export {
|
|||
rejectEventParticipationRequestFail,
|
||||
fetchEventIcs,
|
||||
cancelEventCompose,
|
||||
editEvent,
|
||||
initEventEdit,
|
||||
fetchRecentEvents,
|
||||
fetchJoinedEvents,
|
||||
type EventsAction,
|
||||
|
|
|
@ -42,7 +42,7 @@ const EventPreview: React.FC<IEventPreview> = ({ status, className, hideAction,
|
|||
<Button
|
||||
size='sm'
|
||||
theme={floatingAction ? 'secondary' : 'primary'}
|
||||
to={`/@${account.acct}/events/${status.id}`}
|
||||
to={`/@${account.acct}/events/${status.id}/edit`}
|
||||
>
|
||||
<FormattedMessage id='event.manage' defaultMessage='Manage' />
|
||||
</Button>
|
||||
|
|
|
@ -26,14 +26,6 @@ const checkComposeContent = (compose?: ReturnType<typeof ReducerCompose>) =>
|
|||
compose.poll !== null,
|
||||
].some(check => check === true);
|
||||
|
||||
// const checkEventComposeContent = (compose?: ReturnType<typeof ReducerComposeEvent>) =>
|
||||
// !!compose && [
|
||||
// compose.name.length > 0,
|
||||
// compose.status.length > 0,
|
||||
// compose.location !== null,
|
||||
// compose.banner !== null,
|
||||
// ].some(check => check === true);
|
||||
|
||||
interface IModalRoot {
|
||||
onCancel?: () => void;
|
||||
onClose: (type?: ModalType) => void;
|
||||
|
@ -69,7 +61,6 @@ const ModalRoot: React.FC<IModalRoot> = ({ children, onCancel, onClose, type })
|
|||
dispatch((_, getState) => {
|
||||
const compose = getState().compose.get('compose-modal');
|
||||
const hasComposeContent = checkComposeContent(compose);
|
||||
// const hasEventComposeContent = checkEventComposeContent(getState().compose_event);
|
||||
|
||||
if (hasComposeContent && type === 'COMPOSE') {
|
||||
const isEditing = compose!.id !== null;
|
||||
|
@ -95,26 +86,7 @@ const ModalRoot: React.FC<IModalRoot> = ({ children, onCancel, onClose, type })
|
|||
dispatch(cancelReplyCompose());
|
||||
},
|
||||
});
|
||||
// TODO: restore this functionality
|
||||
// } else if (hasEventComposeContent && type === 'COMPOSE_EVENT') {
|
||||
// const isEditing = getState().compose_event.id !== null;
|
||||
// openModal('CONFIRM', {
|
||||
// heading: isEditing
|
||||
// ? <FormattedMessage id='confirmations.cancel_event_editing.heading' defaultMessage='Cancel event editing' />
|
||||
// : <FormattedMessage id='confirmations.delete_event.heading' defaultMessage='Delete event' />,
|
||||
// message: isEditing
|
||||
// ? <FormattedMessage id='confirmations.cancel_event_editing.message' defaultMessage='Are you sure you want to cancel editing this event? All changes will be lost.' />
|
||||
// : <FormattedMessage id='confirmations.delete_event.message' defaultMessage='Are you sure you want to delete this event?' />,
|
||||
// confirm: intl.formatMessage(isEditing ? messages.cancelEditing : messages.confirm),
|
||||
// onConfirm: () => {
|
||||
// onClose('COMPOSE_EVENT');
|
||||
// dispatch(cancelEventCompose());
|
||||
// },
|
||||
// onCancel: () => {
|
||||
// onClose('CONFIRM');
|
||||
// },
|
||||
// });
|
||||
} else if ((hasComposeContent/* || hasEventComposeContent */) && type === 'CONFIRM') {
|
||||
} else if (hasComposeContent && type === 'CONFIRM') {
|
||||
onClose('CONFIRM');
|
||||
} else {
|
||||
onClose();
|
||||
|
|
|
@ -7,7 +7,6 @@ import { createSelector } from 'reselect';
|
|||
import { blockAccount } from 'pl-fe/actions/accounts';
|
||||
import { directCompose, mentionCompose, quoteCompose, replyCompose } from 'pl-fe/actions/compose';
|
||||
import { emojiReact, unEmojiReact } from 'pl-fe/actions/emoji-reacts';
|
||||
import { editEvent } from 'pl-fe/actions/events';
|
||||
import { toggleBookmark, toggleDislike, toggleFavourite, togglePin, toggleReblog } from 'pl-fe/actions/interactions';
|
||||
import { deleteStatusModal, toggleStatusSensitivityModal } from 'pl-fe/actions/moderation';
|
||||
import { initMuteModal } from 'pl-fe/actions/mutes';
|
||||
|
@ -648,7 +647,7 @@ const MenuButton: React.FC<IMenuButton> = ({
|
|||
};
|
||||
|
||||
const handleEditClick: React.EventHandler<React.MouseEvent> = () => {
|
||||
if (status.event) dispatch(editEvent(status.id));
|
||||
if (status.event) history.push(`/@${status.account.acct}/events/${status.id}/edit`);
|
||||
else dispatch(editStatus(status.id));
|
||||
};
|
||||
|
||||
|
|
67
packages/pl-fe/src/features/compose-event/index.tsx
Normal file
67
packages/pl-fe/src/features/compose-event/index.tsx
Normal file
|
@ -0,0 +1,67 @@
|
|||
import React, { useEffect, useState } from 'react';
|
||||
import { defineMessages, useIntl } from 'react-intl';
|
||||
|
||||
import { cancelEventCompose } from 'pl-fe/actions/events';
|
||||
import Column from 'pl-fe/components/ui/column';
|
||||
import Stack from 'pl-fe/components/ui/stack';
|
||||
import Tabs from 'pl-fe/components/ui/tabs';
|
||||
import { useAppDispatch } from 'pl-fe/hooks/use-app-dispatch';
|
||||
|
||||
import { EditEvent } from './tabs/edit-event';
|
||||
import { ManagePendingParticipants } from './tabs/manage-pending-participants';
|
||||
|
||||
const messages = defineMessages({
|
||||
manageEvent: { id: 'navigation_bar.manage_event', defaultMessage: 'Manage event' },
|
||||
createEvent: { id: 'navigation_bar.create_event', defaultMessage: 'Create new event' },
|
||||
edit: { id: 'compose_event.tabs.edit', defaultMessage: 'Edit details' },
|
||||
pending: { id: 'compose_event.tabs.pending', defaultMessage: 'Manage requests' },
|
||||
});
|
||||
|
||||
type RouteParams = {
|
||||
statusId?: string;
|
||||
};
|
||||
|
||||
interface IComposeEvent {
|
||||
params: RouteParams;
|
||||
}
|
||||
|
||||
const ComposeEvent: React.FC<IComposeEvent> = ({ params }) => {
|
||||
const intl = useIntl();
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const statusId = params.statusId || null;
|
||||
|
||||
const [tab, setTab] = useState<'edit' | 'pending'>('edit');
|
||||
|
||||
useEffect(() => () => {
|
||||
dispatch(cancelEventCompose());
|
||||
}, [statusId]);
|
||||
|
||||
const renderTabs = () => {
|
||||
const items = [
|
||||
{
|
||||
text: intl.formatMessage(messages.edit),
|
||||
action: () => setTab('edit'),
|
||||
name: 'edit',
|
||||
},
|
||||
{
|
||||
text: intl.formatMessage(messages.pending),
|
||||
action: () => setTab('pending'),
|
||||
name: 'pending',
|
||||
},
|
||||
];
|
||||
|
||||
return <Tabs items={items} activeItem={tab} />;
|
||||
};
|
||||
|
||||
return (
|
||||
<Column label={intl.formatMessage(statusId ? messages.manageEvent : messages.createEvent)}>
|
||||
<Stack space={2}>
|
||||
{statusId && renderTabs()}
|
||||
{tab === 'edit' ? <EditEvent statusId={statusId} /> : <ManagePendingParticipants statusId={statusId!} />}
|
||||
</Stack>
|
||||
</Column>
|
||||
);
|
||||
};
|
||||
|
||||
export { ComposeEvent as default };
|
|
@ -1,42 +1,38 @@
|
|||
import React, { useEffect, useState } from 'react';
|
||||
import React, { useCallback, useEffect, useState } from 'react';
|
||||
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
|
||||
import { useHistory } from 'react-router-dom';
|
||||
|
||||
import { resetCompose } from 'pl-fe/actions/compose';
|
||||
import {
|
||||
submitEvent,
|
||||
fetchEventParticipationRequests,
|
||||
rejectEventParticipationRequest,
|
||||
authorizeEventParticipationRequest,
|
||||
cancelEventCompose,
|
||||
initEventEdit,
|
||||
submitEvent,
|
||||
} from 'pl-fe/actions/events';
|
||||
import { uploadFile } from 'pl-fe/actions/media';
|
||||
import { fetchStatus } from 'pl-fe/actions/statuses';
|
||||
import { ADDRESS_ICONS } from 'pl-fe/components/autosuggest-location';
|
||||
import LocationSearch from 'pl-fe/components/location-search';
|
||||
import Button from 'pl-fe/components/ui/button';
|
||||
import Form from 'pl-fe/components/ui/form';
|
||||
import FormActions from 'pl-fe/components/ui/form-actions';
|
||||
import FormGroup from 'pl-fe/components/ui/form-group';
|
||||
import HStack from 'pl-fe/components/ui/hstack';
|
||||
import Icon from 'pl-fe/components/ui/icon';
|
||||
import IconButton from 'pl-fe/components/ui/icon-button';
|
||||
import Input from 'pl-fe/components/ui/input';
|
||||
import Modal from 'pl-fe/components/ui/modal';
|
||||
import Spinner from 'pl-fe/components/ui/spinner';
|
||||
import Stack from 'pl-fe/components/ui/stack';
|
||||
import Tabs from 'pl-fe/components/ui/tabs';
|
||||
import Text from 'pl-fe/components/ui/text';
|
||||
import Toggle from 'pl-fe/components/ui/toggle';
|
||||
import AccountContainer from 'pl-fe/containers/account-container';
|
||||
import { isCurrentOrFutureDate } from 'pl-fe/features/compose/components/schedule-form';
|
||||
import { ComposeEditor, DatePicker } from 'pl-fe/features/ui/util/async-components';
|
||||
import { useAppDispatch } from 'pl-fe/hooks/use-app-dispatch';
|
||||
import { useAppSelector } from 'pl-fe/hooks/use-app-selector';
|
||||
import { useModalsStore } from 'pl-fe/stores/modals';
|
||||
import { makeGetStatus } from 'pl-fe/selectors';
|
||||
import toast from 'pl-fe/toast';
|
||||
|
||||
import UploadButton from './upload-button';
|
||||
import UploadButton from '../components/upload-button';
|
||||
|
||||
import type { BaseModalProps } from '../../modal-root';
|
||||
import type { Location } from 'pl-api';
|
||||
import type { MinifiedStatus } from 'pl-fe/reducers/statuses';
|
||||
|
||||
const messages = defineMessages({
|
||||
eventNamePlaceholder: { id: 'compose_event.fields.name_placeholder', defaultMessage: 'Name' },
|
||||
|
@ -44,86 +40,32 @@ const messages = defineMessages({
|
|||
eventStartTimePlaceholder: { id: 'compose_event.fields.start_time_placeholder', defaultMessage: 'Event begins on…' },
|
||||
eventEndTimePlaceholder: { id: 'compose_event.fields.end_time_placeholder', defaultMessage: 'Event ends on…' },
|
||||
resetLocation: { id: 'compose_event.reset_location', defaultMessage: 'Reset location' },
|
||||
edit: { id: 'compose_event.tabs.edit', defaultMessage: 'Edit details' },
|
||||
pending: { id: 'compose_event.tabs.pending', defaultMessage: 'Manage requests' },
|
||||
authorize: { id: 'compose_event.participation_requests.authorize', defaultMessage: 'Authorize' },
|
||||
reject: { id: 'compose_event.participation_requests.reject', defaultMessage: 'Reject' },
|
||||
confirm: { id: 'confirmations.delete.confirm', defaultMessage: 'Delete' },
|
||||
cancelEditing: { id: 'confirmations.cancel_editing.confirm', defaultMessage: 'Cancel editing' },
|
||||
eventFetchFail: { id: 'compose_event.fetch_fail', defaultMessage: 'Failed to fetch edited event information' },
|
||||
});
|
||||
|
||||
interface IAccount {
|
||||
eventId: string;
|
||||
id: string;
|
||||
participationMessage: string | null;
|
||||
interface IEditEvent {
|
||||
statusId: string | null;
|
||||
}
|
||||
|
||||
const Account: React.FC<IAccount> = ({ eventId, id, participationMessage }) => {
|
||||
const EditEvent: React.FC<IEditEvent> = ({ statusId }) => {
|
||||
const intl = useIntl();
|
||||
const dispatch = useAppDispatch();
|
||||
const history = useHistory();
|
||||
|
||||
const handleAuthorize = () => {
|
||||
dispatch(authorizeEventParticipationRequest(eventId, id));
|
||||
};
|
||||
|
||||
const handleReject = () => {
|
||||
dispatch(rejectEventParticipationRequest(eventId, id));
|
||||
};
|
||||
|
||||
return (
|
||||
<AccountContainer
|
||||
id={id}
|
||||
note={participationMessage || undefined}
|
||||
action={
|
||||
<HStack space={2}>
|
||||
<Button
|
||||
theme='secondary'
|
||||
size='sm'
|
||||
text={intl.formatMessage(messages.authorize)}
|
||||
onClick={handleAuthorize}
|
||||
/>
|
||||
<Button
|
||||
theme='danger'
|
||||
size='sm'
|
||||
text={intl.formatMessage(messages.reject)}
|
||||
onClick={handleReject}
|
||||
/>
|
||||
</HStack>
|
||||
}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
interface ComposeEventModalProps {
|
||||
status?: MinifiedStatus;
|
||||
statusText?: string;
|
||||
location?: Location;
|
||||
}
|
||||
|
||||
const ComposeEventModal: React.FC<BaseModalProps & ComposeEventModalProps> = ({
|
||||
onClose,
|
||||
status,
|
||||
statusText,
|
||||
location: sourceLocation,
|
||||
}) => {
|
||||
const intl = useIntl();
|
||||
const dispatch = useAppDispatch();
|
||||
const { openModal } = useModalsStore();
|
||||
|
||||
const [tab, setTab] = useState<'edit' | 'pending'>('edit');
|
||||
const getStatus = useCallback(makeGetStatus(), []);
|
||||
const status = useAppSelector((state) => statusId ? getStatus(state, { id: statusId }) : undefined);
|
||||
|
||||
const [name, setName] = useState(status?.event?.name || '');
|
||||
const [text, setText] = useState(statusText || '');
|
||||
const [text, setText] = useState('');
|
||||
const [startTime, setStartTime] = useState(status?.event?.start_time ? new Date(status.event.start_time) : new Date());
|
||||
const [endTime, setEndTime] = useState(status?.event?.end_time ? new Date(status.event.end_time) : null);
|
||||
const [approvalRequired, setApprovalRequired] = useState(status?.event?.join_mode !== 'free');
|
||||
const [banner, setBanner] = useState(status?.event?.banner || null);
|
||||
const [location, setLocation] = useState(sourceLocation || null);
|
||||
const [location, setLocation] = useState<Location | null>(null);
|
||||
|
||||
const [isSubmitting, setIsSubmitting] = useState(false);
|
||||
const [isDisabled, setIsDisabled] = useState(!!statusId);
|
||||
const [isUploading, setIsUploading] = useState(false);
|
||||
|
||||
const statusId = status?.id || null;
|
||||
const composeId = statusId ? `compose-event-modal-${statusId}` : 'compose-event-modal';
|
||||
|
||||
const onChangeName: React.ChangeEventHandler<HTMLInputElement> = ({ target }) => {
|
||||
|
@ -163,26 +105,6 @@ const ComposeEventModal: React.FC<BaseModalProps & ComposeEventModalProps> = ({
|
|||
});
|
||||
};
|
||||
|
||||
const onClickClose = () => {
|
||||
if (name.length || text.length || location || banner) {
|
||||
openModal('CONFIRM', {
|
||||
heading: statusId
|
||||
? <FormattedMessage id='confirmations.cancel_event_editing.heading' defaultMessage='Cancel event editing' />
|
||||
: <FormattedMessage id='confirmations.delete_event.heading' defaultMessage='Delete event' />,
|
||||
message: statusId
|
||||
? <FormattedMessage id='confirmations.cancel_event_editing.message' defaultMessage='Are you sure you want to cancel editing this event? All changes will be lost.' />
|
||||
: <FormattedMessage id='confirmations.delete_event.message' defaultMessage='Are you sure you want to delete this event?' />,
|
||||
confirm: intl.formatMessage(messages.confirm),
|
||||
onConfirm: () => {
|
||||
onClose('COMPOSE_EVENT');
|
||||
dispatch(cancelEventCompose());
|
||||
},
|
||||
});
|
||||
} else {
|
||||
onClose('COMPOSE_EVENT');
|
||||
}
|
||||
};
|
||||
|
||||
const handleFiles = (files: FileList) => {
|
||||
setIsUploading(true);
|
||||
|
||||
|
@ -202,7 +124,7 @@ const ComposeEventModal: React.FC<BaseModalProps & ComposeEventModalProps> = ({
|
|||
};
|
||||
|
||||
const handleSubmit = () => {
|
||||
setIsSubmitting(true);
|
||||
setIsDisabled(true);
|
||||
|
||||
dispatch(submitEvent({
|
||||
statusId,
|
||||
|
@ -213,19 +135,38 @@ const ComposeEventModal: React.FC<BaseModalProps & ComposeEventModalProps> = ({
|
|||
endTime,
|
||||
joinMode: approvalRequired ? 'restricted' : 'free',
|
||||
location,
|
||||
})).then(() => {
|
||||
setIsSubmitting(false);
|
||||
})).then((status) => {
|
||||
if (status) history.push(`/@${status.account.acct}/events/${status.id}`);
|
||||
dispatch(resetCompose(composeId));
|
||||
}).catch(() => {
|
||||
setIsSubmitting(false);
|
||||
});
|
||||
};
|
||||
|
||||
const accounts = useAppSelector((state) => state.user_lists.event_participation_requests.get(statusId!)?.items);
|
||||
|
||||
useEffect(() => {
|
||||
if (statusId) dispatch(fetchEventParticipationRequests(statusId));
|
||||
}, []);
|
||||
if (statusId) {
|
||||
Promise.all([dispatch(initEventEdit(statusId)), dispatch(fetchStatus(statusId))])
|
||||
.then(([source, status]) => {
|
||||
if (!source || !status) throw new Error();
|
||||
|
||||
setText(source.text);
|
||||
setLocation(source.location);
|
||||
|
||||
setName(status?.event?.name || '');
|
||||
setStartTime(status?.event?.start_time ? new Date(status.event.start_time) : new Date());
|
||||
setEndTime(status?.event?.end_time ? new Date(status.event.end_time) : null);
|
||||
setApprovalRequired(status?.event?.join_mode !== 'free');
|
||||
setBanner(status?.media_attachments[0] || null);
|
||||
|
||||
setIsDisabled(false);
|
||||
}).catch(() => {
|
||||
toast.error(messages.eventFetchFail);
|
||||
});
|
||||
}
|
||||
|
||||
return () => {
|
||||
dispatch(cancelEventCompose());
|
||||
};
|
||||
}, [statusId]);
|
||||
|
||||
const renderLocation = () => location && (
|
||||
<HStack className='h-[38px] text-gray-700 dark:text-gray-500' alignItems='center' space={2}>
|
||||
|
@ -238,26 +179,8 @@ const ComposeEventModal: React.FC<BaseModalProps & ComposeEventModalProps> = ({
|
|||
</HStack>
|
||||
);
|
||||
|
||||
const renderTabs = () => {
|
||||
const items = [
|
||||
{
|
||||
text: intl.formatMessage(messages.edit),
|
||||
action: () => setTab('edit'),
|
||||
name: 'edit',
|
||||
},
|
||||
{
|
||||
text: intl.formatMessage(messages.pending),
|
||||
action: () => setTab('pending'),
|
||||
name: 'pending',
|
||||
},
|
||||
];
|
||||
|
||||
return <Tabs items={items} activeItem={tab} />;
|
||||
};
|
||||
|
||||
let body;
|
||||
if (tab === 'edit') body = (
|
||||
<Form>
|
||||
return (
|
||||
<Form onSubmit={handleSubmit}>
|
||||
<FormGroup
|
||||
labelText={<FormattedMessage id='compose_event.fields.banner_label' defaultMessage='Event banner' />}
|
||||
hintText={<FormattedMessage id='compose_event.fields.banner_hint' defaultMessage='PNG, GIF or JPG. Landscape format is preferred.' />}
|
||||
|
@ -287,6 +210,7 @@ const ComposeEventModal: React.FC<BaseModalProps & ComposeEventModalProps> = ({
|
|||
labelText={<FormattedMessage id='compose_event.fields.description_label' defaultMessage='Event description' />}
|
||||
>
|
||||
<ComposeEditor
|
||||
key={String(isDisabled)}
|
||||
className='block w-full rounded-md border border-gray-400 bg-white px-3 py-2 text-base text-gray-900 ring-1 placeholder:text-gray-600 focus-within:border-primary-500 focus-within:ring-primary-500 black:bg-black dark:border-gray-800 dark:bg-gray-900 dark:text-gray-100 dark:ring-gray-800 dark:placeholder:text-gray-600 dark:focus-within:border-primary-500 dark:focus-within:ring-primary-500 sm:text-sm'
|
||||
placeholderClassName='pt-2'
|
||||
composeId={composeId}
|
||||
|
@ -354,38 +278,15 @@ const ComposeEventModal: React.FC<BaseModalProps & ComposeEventModalProps> = ({
|
|||
</Text>
|
||||
</HStack>
|
||||
)}
|
||||
<FormActions>
|
||||
<Button disabled={isDisabled} theme='primary' type='submit'>
|
||||
{statusId
|
||||
? <FormattedMessage id='compose_event.update' defaultMessage='Update' />
|
||||
: <FormattedMessage id='compose_event.create' defaultMessage='Create' />}
|
||||
</Button>
|
||||
</FormActions>
|
||||
</Form>
|
||||
);
|
||||
else body = accounts ? (
|
||||
<Stack space={3}>
|
||||
{accounts.size > 0 ? (
|
||||
accounts.map(({ account, participation_message }) =>
|
||||
<Account key={account} eventId={statusId!} id={account} participationMessage={participation_message} />,
|
||||
)
|
||||
) : (
|
||||
<FormattedMessage id='empty_column.event_participant_requests' defaultMessage='There are no pending event participation requests.' />
|
||||
)}
|
||||
</Stack>
|
||||
) : <Spinner />;
|
||||
|
||||
return (
|
||||
<Modal
|
||||
title={statusId
|
||||
? <FormattedMessage id='navigation_bar.compose_event' defaultMessage='Manage event' />
|
||||
: <FormattedMessage id='navigation_bar.create_event' defaultMessage='Create new event' />}
|
||||
confirmationAction={tab === 'edit' ? handleSubmit : undefined}
|
||||
confirmationText={statusId
|
||||
? <FormattedMessage id='compose_event.update' defaultMessage='Update' />
|
||||
: <FormattedMessage id='compose_event.create' defaultMessage='Create' />}
|
||||
confirmationDisabled={isSubmitting}
|
||||
onClose={onClickClose}
|
||||
>
|
||||
<Stack space={2}>
|
||||
{statusId && renderTabs()}
|
||||
{body}
|
||||
</Stack>
|
||||
</Modal>
|
||||
);
|
||||
};
|
||||
|
||||
export { ComposeEventModal as default, type ComposeEventModalProps };
|
||||
export { EditEvent };
|
|
@ -0,0 +1,98 @@
|
|||
import React, { useEffect } from 'react';
|
||||
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
|
||||
|
||||
import {
|
||||
fetchEventParticipationRequests,
|
||||
rejectEventParticipationRequest,
|
||||
authorizeEventParticipationRequest,
|
||||
cancelEventCompose,
|
||||
} from 'pl-fe/actions/events';
|
||||
import ScrollableList from 'pl-fe/components/scrollable-list';
|
||||
import Button from 'pl-fe/components/ui/button';
|
||||
import HStack from 'pl-fe/components/ui/hstack';
|
||||
import Spinner from 'pl-fe/components/ui/spinner';
|
||||
import Stack from 'pl-fe/components/ui/stack';
|
||||
import AccountContainer from 'pl-fe/containers/account-container';
|
||||
import { useAppDispatch } from 'pl-fe/hooks/use-app-dispatch';
|
||||
import { useAppSelector } from 'pl-fe/hooks/use-app-selector';
|
||||
|
||||
const messages = defineMessages({
|
||||
authorize: { id: 'compose_event.participation_requests.authorize', defaultMessage: 'Authorize' },
|
||||
reject: { id: 'compose_event.participation_requests.reject', defaultMessage: 'Reject' },
|
||||
});
|
||||
|
||||
interface IAccount {
|
||||
eventId: string;
|
||||
id: string;
|
||||
participationMessage: string | null;
|
||||
}
|
||||
|
||||
const Account: React.FC<IAccount> = ({ eventId, id, participationMessage }) => {
|
||||
const intl = useIntl();
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const handleAuthorize = () => {
|
||||
dispatch(authorizeEventParticipationRequest(eventId, id));
|
||||
};
|
||||
|
||||
const handleReject = () => {
|
||||
dispatch(rejectEventParticipationRequest(eventId, id));
|
||||
};
|
||||
|
||||
return (
|
||||
<AccountContainer
|
||||
id={id}
|
||||
note={participationMessage || undefined}
|
||||
action={
|
||||
<HStack space={2}>
|
||||
<Button
|
||||
theme='secondary'
|
||||
size='sm'
|
||||
text={intl.formatMessage(messages.authorize)}
|
||||
onClick={handleAuthorize}
|
||||
/>
|
||||
<Button
|
||||
theme='danger'
|
||||
size='sm'
|
||||
text={intl.formatMessage(messages.reject)}
|
||||
onClick={handleReject}
|
||||
/>
|
||||
</HStack>
|
||||
}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
interface IManagePendingParticipants {
|
||||
statusId: string;
|
||||
}
|
||||
|
||||
const ManagePendingParticipants: React.FC<IManagePendingParticipants> = ({ statusId }) => {
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const accounts = useAppSelector((state) => state.user_lists.event_participation_requests.get(statusId!)?.items);
|
||||
|
||||
useEffect(() => {
|
||||
if (statusId) dispatch(fetchEventParticipationRequests(statusId));
|
||||
|
||||
return () => {
|
||||
dispatch(cancelEventCompose());
|
||||
};
|
||||
}, [statusId]);
|
||||
|
||||
return accounts ? (
|
||||
<Stack space={3}>
|
||||
<ScrollableList
|
||||
isLoading={!accounts}
|
||||
showLoading={!accounts}
|
||||
emptyMessage={<FormattedMessage id='empty_column.event_participant_requests' defaultMessage='There are no pending event participation requests.' />}
|
||||
>
|
||||
{accounts.map(({ account, participation_message }) =>
|
||||
<Account key={account} eventId={statusId!} id={account} participationMessage={participation_message} />,
|
||||
)}
|
||||
</ScrollableList>
|
||||
</Stack>
|
||||
) : <Spinner />;
|
||||
};
|
||||
|
||||
export { ManagePendingParticipants };
|
|
@ -4,7 +4,7 @@ import { Link, useHistory } from 'react-router-dom';
|
|||
|
||||
import { blockAccount } from 'pl-fe/actions/accounts';
|
||||
import { directCompose, mentionCompose, quoteCompose } from 'pl-fe/actions/compose';
|
||||
import { editEvent, fetchEventIcs } from 'pl-fe/actions/events';
|
||||
import { fetchEventIcs } from 'pl-fe/actions/events';
|
||||
import { toggleBookmark, togglePin, toggleReblog } from 'pl-fe/actions/interactions';
|
||||
import { deleteStatusModal, toggleStatusSensitivityModal } from 'pl-fe/actions/moderation';
|
||||
import { initMuteModal } from 'pl-fe/actions/mutes';
|
||||
|
@ -347,12 +347,6 @@ const EventHeader: React.FC<IEventHeader> = ({ status }) => {
|
|||
return menu;
|
||||
};
|
||||
|
||||
const handleManageClick: React.MouseEventHandler = e => {
|
||||
e.stopPropagation();
|
||||
|
||||
dispatch(editEvent(status.id));
|
||||
};
|
||||
|
||||
const handleParticipantsClick: React.MouseEventHandler = e => {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
|
@ -396,7 +390,7 @@ const EventHeader: React.FC<IEventHeader> = ({ status }) => {
|
|||
<Button
|
||||
size='sm'
|
||||
theme='secondary'
|
||||
onClick={handleManageClick}
|
||||
to={`/@${account.acct}/events/${status.id}/edit`}
|
||||
>
|
||||
<FormattedMessage id='event.manage' defaultMessage='Manage' />
|
||||
</Button>
|
||||
|
|
|
@ -8,7 +8,6 @@ import Column from 'pl-fe/components/ui/column';
|
|||
import HStack from 'pl-fe/components/ui/hstack';
|
||||
import { useAppDispatch } from 'pl-fe/hooks/use-app-dispatch';
|
||||
import { useAppSelector } from 'pl-fe/hooks/use-app-selector';
|
||||
import { useModalsStore } from 'pl-fe/stores/modals';
|
||||
|
||||
import EventCarousel from './components/event-carousel';
|
||||
|
||||
|
@ -19,7 +18,6 @@ const messages = defineMessages({
|
|||
const Events = () => {
|
||||
const intl = useIntl();
|
||||
|
||||
const { openModal } = useModalsStore();
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
const recentEvents = useAppSelector((state) => state.status_lists.get('recent_events')!.items);
|
||||
|
@ -27,10 +25,6 @@ const Events = () => {
|
|||
const joinedEvents = useAppSelector((state) => state.status_lists.get('joined_events')!.items);
|
||||
const joinedEventsLoading = useAppSelector((state) => state.status_lists.get('joined_events')!.isLoading);
|
||||
|
||||
const onComposeEvent = () => {
|
||||
openModal('COMPOSE_EVENT');
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
dispatch(fetchRecentEvents());
|
||||
dispatch(fetchJoinedEvents());
|
||||
|
@ -40,12 +34,7 @@ const Events = () => {
|
|||
<Column label={intl.formatMessage(messages.title)}>
|
||||
<HStack className='mb-2' space={2} justifyContent='between'>
|
||||
<CardTitle title={<FormattedMessage id='events.recent_events' defaultMessage='Recent events' />} />
|
||||
<Button
|
||||
className='ml-auto xl:hidden'
|
||||
theme='primary'
|
||||
size='sm'
|
||||
onClick={onComposeEvent}
|
||||
>
|
||||
<Button className='ml-auto xl:hidden' theme='primary' size='sm' to='/events/new'>
|
||||
<FormattedMessage id='events.create_event' defaultMessage='Create event' />
|
||||
</Button>
|
||||
</HStack>
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import React, { Suspense, lazy } from 'react';
|
||||
|
||||
import { cancelReplyCompose } from 'pl-fe/actions/compose';
|
||||
import { cancelEventCompose } from 'pl-fe/actions/events';
|
||||
import Base from 'pl-fe/components/modal-root';
|
||||
import { useAppDispatch } from 'pl-fe/hooks/use-app-dispatch';
|
||||
import { useModalsStore } from 'pl-fe/stores/modals';
|
||||
|
@ -16,7 +15,6 @@ const MODAL_COMPONENTS = {
|
|||
COMPARE_HISTORY: lazy(() => import('pl-fe/features/ui/components/modals/compare-history-modal')),
|
||||
COMPONENT: lazy(() => import('pl-fe/features/ui/components/modals/component-modal')),
|
||||
COMPOSE: lazy(() => import('pl-fe/features/ui/components/modals/compose-modal')),
|
||||
COMPOSE_EVENT: lazy(() => import('pl-fe/features/ui/components/modals/compose-event-modal')),
|
||||
CONFIRM: lazy(() => import('pl-fe/features/ui/components/modals/confirmation-modal')),
|
||||
CREATE_GROUP: lazy(() => import('pl-fe/features/ui/components/modals/manage-group-modal')),
|
||||
CRYPTO_DONATE: lazy(() => import('pl-fe/features/ui/components/modals/crypto-donate-modal')),
|
||||
|
@ -69,9 +67,6 @@ const ModalRoot: React.FC = () => {
|
|||
case 'COMPOSE':
|
||||
dispatch(cancelReplyCompose());
|
||||
break;
|
||||
case 'COMPOSE_EVENT':
|
||||
dispatch(cancelEventCompose());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -4,37 +4,28 @@ import { FormattedMessage } from 'react-intl';
|
|||
import Button from 'pl-fe/components/ui/button';
|
||||
import Stack from 'pl-fe/components/ui/stack';
|
||||
import Text from 'pl-fe/components/ui/text';
|
||||
import { useModalsStore } from 'pl-fe/stores/modals';
|
||||
|
||||
const NewEventPanel = () => {
|
||||
const { openModal } = useModalsStore();
|
||||
const NewEventPanel = () => (
|
||||
<Stack space={2}>
|
||||
<Stack>
|
||||
<Text size='lg' weight='bold'>
|
||||
<FormattedMessage id='new_event_panel.title' defaultMessage='Create New Event' />
|
||||
</Text>
|
||||
|
||||
const createEvent = () => {
|
||||
openModal('COMPOSE_EVENT');
|
||||
};
|
||||
|
||||
return (
|
||||
<Stack space={2}>
|
||||
<Stack>
|
||||
<Text size='lg' weight='bold'>
|
||||
<FormattedMessage id='new_event_panel.title' defaultMessage='Create New Event' />
|
||||
</Text>
|
||||
|
||||
<Text theme='muted' size='sm'>
|
||||
<FormattedMessage id='new_event_panel.subtitle' defaultMessage="Can't find what you're looking for? Schedule your own event." />
|
||||
</Text>
|
||||
</Stack>
|
||||
|
||||
<Button
|
||||
icon={require('@tabler/icons/outline/calendar-event.svg')}
|
||||
onClick={createEvent}
|
||||
theme='secondary'
|
||||
block
|
||||
>
|
||||
<FormattedMessage id='new_event_panel.action' defaultMessage='Create event' />
|
||||
</Button>
|
||||
<Text theme='muted' size='sm'>
|
||||
<FormattedMessage id='new_event_panel.subtitle' defaultMessage="Can't find what you're looking for? Schedule your own event." />
|
||||
</Text>
|
||||
</Stack>
|
||||
);
|
||||
};
|
||||
|
||||
<Button
|
||||
icon={require('@tabler/icons/outline/calendar-event.svg')}
|
||||
theme='secondary'
|
||||
block
|
||||
to='/events/new'
|
||||
>
|
||||
<FormattedMessage id='new_event_panel.action' defaultMessage='Create event' />
|
||||
</Button>
|
||||
</Stack>
|
||||
);
|
||||
|
||||
export { NewEventPanel as default };
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import clsx from 'clsx';
|
||||
import React, { Suspense, lazy, useEffect, useRef } from 'react';
|
||||
import { Switch, useHistory, useLocation, Redirect } from 'react-router-dom';
|
||||
import { Redirect, Switch, useHistory, useLocation } from 'react-router-dom';
|
||||
|
||||
import { fetchFollowRequests } from 'pl-fe/actions/accounts';
|
||||
import { fetchReports, fetchUsers, fetchConfig } from 'pl-fe/actions/admin';
|
||||
import { fetchConfig, fetchReports, fetchUsers } from 'pl-fe/actions/admin';
|
||||
import { fetchCustomEmojis } from 'pl-fe/actions/custom-emojis';
|
||||
import { fetchDraftStatuses } from 'pl-fe/actions/draft-statuses';
|
||||
import { fetchFilters } from 'pl-fe/actions/filters';
|
||||
|
@ -47,98 +47,99 @@ import { isStandalone } from 'pl-fe/utils/state';
|
|||
|
||||
import BackgroundShapes from './components/background-shapes';
|
||||
import {
|
||||
Status,
|
||||
CommunityTimeline,
|
||||
PublicTimeline,
|
||||
RemoteTimeline,
|
||||
AccountTimeline,
|
||||
AboutPage,
|
||||
AccountGallery,
|
||||
HomeTimeline,
|
||||
Followers,
|
||||
Following,
|
||||
Conversations,
|
||||
HashtagTimeline,
|
||||
Notifications,
|
||||
FollowRequests,
|
||||
GenericNotFound,
|
||||
FavouritedStatuses,
|
||||
Blocks,
|
||||
DomainBlocks,
|
||||
Mutes,
|
||||
Filters,
|
||||
EditFilter,
|
||||
PinnedStatuses,
|
||||
Search,
|
||||
ListTimeline,
|
||||
Lists,
|
||||
Bookmarks,
|
||||
Settings,
|
||||
EditProfile,
|
||||
EditEmail,
|
||||
EditPassword,
|
||||
DeleteAccount,
|
||||
PlFeConfig,
|
||||
ExportData,
|
||||
ImportData,
|
||||
AccountHoverCard,
|
||||
AccountTimeline,
|
||||
Aliases,
|
||||
Announcements,
|
||||
AuthTokenList,
|
||||
Backups,
|
||||
MfaForm,
|
||||
Blocks,
|
||||
BookmarkFolders,
|
||||
Bookmarks,
|
||||
BubbleTimeline,
|
||||
ChatIndex,
|
||||
ChatWidget,
|
||||
ServerInfo,
|
||||
Dashboard,
|
||||
ModerationLog,
|
||||
CryptoDonate,
|
||||
ScheduledStatuses,
|
||||
UserIndex,
|
||||
FederationRestrictions,
|
||||
Aliases,
|
||||
Migration,
|
||||
FollowRecommendations,
|
||||
Directory,
|
||||
SidebarMenu,
|
||||
AccountHoverCard,
|
||||
StatusHoverCard,
|
||||
Share,
|
||||
NewStatus,
|
||||
IntentionalError,
|
||||
Developers,
|
||||
CreateApp,
|
||||
SettingsStore,
|
||||
TestTimeline,
|
||||
LogoutPage,
|
||||
AuthTokenList,
|
||||
ThemeEditor,
|
||||
Quotes,
|
||||
ServiceWorkerInfo,
|
||||
EventInformation,
|
||||
EventDiscussion,
|
||||
Events,
|
||||
GroupGallery,
|
||||
Groups,
|
||||
GroupMembers,
|
||||
GroupTimeline,
|
||||
ManageGroup,
|
||||
GroupBlockedMembers,
|
||||
GroupMembershipRequests,
|
||||
Announcements,
|
||||
EditGroup,
|
||||
FollowedTags,
|
||||
AboutPage,
|
||||
RegistrationPage,
|
||||
LoginPage,
|
||||
PasswordReset,
|
||||
RegisterInvite,
|
||||
ExternalLogin,
|
||||
LandingTimeline,
|
||||
BookmarkFolders,
|
||||
Domains,
|
||||
Relays,
|
||||
Rules,
|
||||
DraftStatuses,
|
||||
Circle,
|
||||
BubbleTimeline,
|
||||
CommunityTimeline,
|
||||
ComposeEvent,
|
||||
Conversations,
|
||||
CreateApp,
|
||||
CryptoDonate,
|
||||
Dashboard,
|
||||
DeleteAccount,
|
||||
Developers,
|
||||
Directory,
|
||||
DomainBlocks,
|
||||
Domains,
|
||||
DraftStatuses,
|
||||
EditEmail,
|
||||
EditFilter,
|
||||
EditGroup,
|
||||
EditPassword,
|
||||
EditProfile,
|
||||
EventDiscussion,
|
||||
EventInformation,
|
||||
Events,
|
||||
ExportData,
|
||||
ExternalLogin,
|
||||
FavouritedStatuses,
|
||||
FederationRestrictions,
|
||||
Filters,
|
||||
FollowRecommendations,
|
||||
FollowRequests,
|
||||
FollowedTags,
|
||||
Followers,
|
||||
Following,
|
||||
GenericNotFound,
|
||||
GroupBlockedMembers,
|
||||
GroupGallery,
|
||||
GroupMembers,
|
||||
GroupMembershipRequests,
|
||||
GroupTimeline,
|
||||
Groups,
|
||||
HashtagTimeline,
|
||||
HomeTimeline,
|
||||
ImportData,
|
||||
IntentionalError,
|
||||
InteractionPolicies,
|
||||
InteractionRequests,
|
||||
LandingTimeline,
|
||||
ListTimeline,
|
||||
Lists,
|
||||
LoginPage,
|
||||
LogoutPage,
|
||||
ManageGroup,
|
||||
MfaForm,
|
||||
Migration,
|
||||
ModerationLog,
|
||||
Mutes,
|
||||
NewStatus,
|
||||
Notifications,
|
||||
PasswordReset,
|
||||
PinnedStatuses,
|
||||
PlFeConfig,
|
||||
PublicTimeline,
|
||||
Quotes,
|
||||
RegisterInvite,
|
||||
RegistrationPage,
|
||||
Relays,
|
||||
RemoteTimeline,
|
||||
Rules,
|
||||
ScheduledStatuses,
|
||||
Search,
|
||||
ServerInfo,
|
||||
ServiceWorkerInfo,
|
||||
Settings,
|
||||
SettingsStore,
|
||||
Share,
|
||||
SidebarMenu,
|
||||
Status,
|
||||
StatusHoverCard,
|
||||
TestTimeline,
|
||||
ThemeEditor,
|
||||
UserIndex,
|
||||
} from './util/async-components';
|
||||
import GlobalHotkeys from './util/global-hotkeys';
|
||||
import { WrappedRoute } from './util/react-router-helpers';
|
||||
|
@ -241,6 +242,7 @@ const SwitchingColumnsArea: React.FC<ISwitchingColumnsArea> = ({ children }) =>
|
|||
<WrappedRoute path='/search' layout={SearchLayout} component={Search} content={children} publicRoute />
|
||||
{features.suggestions && <WrappedRoute path='/suggestions' publicRoute layout={DefaultLayout} component={FollowRecommendations} content={children} />}
|
||||
{features.profileDirectory && <WrappedRoute path='/directory' publicRoute layout={DefaultLayout} component={Directory} content={children} />}
|
||||
{features.events && <WrappedRoute path='/events/new' layout={EventsLayout} component={ComposeEvent} content={children} />}
|
||||
{features.events && <WrappedRoute path='/events' layout={EventsLayout} component={Events} content={children} />}
|
||||
|
||||
{features.chats && <WrappedRoute path='/chats' exact layout={ChatsLayout} component={ChatIndex} content={children} />}
|
||||
|
@ -268,6 +270,7 @@ const SwitchingColumnsArea: React.FC<ISwitchingColumnsArea> = ({ children }) =>
|
|||
<WrappedRoute path='/@:username/posts/:statusId' publicRoute exact layout={StatusLayout} component={Status} content={children} />
|
||||
<WrappedRoute path='/@:username/posts/:statusId/quotes' publicRoute layout={StatusLayout} component={Quotes} content={children} />
|
||||
{features.events && <WrappedRoute path='/@:username/events/:statusId' publicRoute exact layout={EventLayout} component={EventInformation} content={children} />}
|
||||
{features.events && <WrappedRoute path='/@:username/events/:statusId/edit' publicRoute exact layout={EventsLayout} component={ComposeEvent} content={children} />}
|
||||
{features.events && <WrappedRoute path='/@:username/events/:statusId/discussion' publicRoute exact layout={EventLayout} component={EventDiscussion} content={children} />}
|
||||
<Redirect from='/@:username/:statusId' to='/@:username/posts/:statusId' />
|
||||
<WrappedRoute path='/posts/:statusId' publicRoute exact layout={DefaultLayout} component={Status} content={children} />
|
||||
|
|
|
@ -16,6 +16,7 @@ export const ChatIndex = lazy(() => import('pl-fe/features/chats'));
|
|||
export const Circle = lazy(() => import('pl-fe/features/circle'));
|
||||
export const CommunityTimeline = lazy(() => import('pl-fe/features/community-timeline'));
|
||||
export const ComposeEditor = lazy(() => import('pl-fe/features/compose/editor'));
|
||||
export const ComposeEvent = lazy(() => import('pl-fe/features/compose-event'));
|
||||
export const Conversations = lazy(() => import('pl-fe/features/conversations'));
|
||||
export const CreateApp = lazy(() => import('pl-fe/features/developers/apps/create'));
|
||||
export const CryptoDonate = lazy(() => import('pl-fe/features/crypto-donate'));
|
||||
|
|
|
@ -1197,7 +1197,7 @@
|
|||
"navigation_bar.compose": "انشاء منشور",
|
||||
"navigation_bar.compose_direct": "رسالة خاصة",
|
||||
"navigation_bar.compose_edit": "تحرير المنشور",
|
||||
"navigation_bar.compose_event": "إدارة الحدث",
|
||||
"navigation_bar.manage_event": "إدارة الحدث",
|
||||
"navigation_bar.compose_group": "النشر في المجموعة",
|
||||
"navigation_bar.compose_group_reply": "الرد في المجموعة",
|
||||
"navigation_bar.compose_quote": "اقتباس المنشور",
|
||||
|
|
|
@ -1092,7 +1092,7 @@
|
|||
"navigation_bar.compose": "Compose new post",
|
||||
"navigation_bar.compose_direct": "",
|
||||
"navigation_bar.compose_edit": "",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1091,7 +1091,7 @@
|
|||
"navigation_bar.compose": "Compose new post",
|
||||
"navigation_bar.compose_direct": "",
|
||||
"navigation_bar.compose_edit": "",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1092,7 +1092,7 @@
|
|||
"navigation_bar.compose": "নতুন টুট লিখুন",
|
||||
"navigation_bar.compose_direct": "",
|
||||
"navigation_bar.compose_edit": "",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1089,7 +1089,7 @@
|
|||
"navigation_bar.compose": "Compose new post",
|
||||
"navigation_bar.compose_direct": "",
|
||||
"navigation_bar.compose_edit": "",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1109,7 +1109,7 @@
|
|||
"navigation_bar.compose": "",
|
||||
"navigation_bar.compose_direct": "",
|
||||
"navigation_bar.compose_edit": "",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1094,7 +1094,7 @@
|
|||
"navigation_bar.compose": "Redacta nou toot",
|
||||
"navigation_bar.compose_direct": "",
|
||||
"navigation_bar.compose_edit": "",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1092,7 +1092,7 @@
|
|||
"navigation_bar.compose": "Scrive un novu statutu",
|
||||
"navigation_bar.compose_direct": "",
|
||||
"navigation_bar.compose_edit": "",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1097,7 +1097,7 @@
|
|||
"navigation_bar.compose": "Vytvořit nový příspěvek",
|
||||
"navigation_bar.compose_direct": "",
|
||||
"navigation_bar.compose_edit": "",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1101,7 +1101,7 @@
|
|||
"navigation_bar.compose": "Ysgrifennu neges",
|
||||
"navigation_bar.compose_direct": "Neges breifat",
|
||||
"navigation_bar.compose_edit": "Golygu'r neges",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1092,7 +1092,7 @@
|
|||
"navigation_bar.compose": "Skriv nyt trut",
|
||||
"navigation_bar.compose_direct": "",
|
||||
"navigation_bar.compose_edit": "",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1141,7 +1141,7 @@
|
|||
"navigation_bar.compose": "Neuen Beitrag verfassen",
|
||||
"navigation_bar.compose_direct": "Direktnachricht",
|
||||
"navigation_bar.compose_edit": "Beitrag bearbeiten",
|
||||
"navigation_bar.compose_event": "Veranstaltung verwalten",
|
||||
"navigation_bar.manage_event": "Veranstaltung verwalten",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Beitrag zitieren",
|
||||
|
|
|
@ -1108,7 +1108,7 @@
|
|||
"navigation_bar.compose": "Γράψε νέο τουτ",
|
||||
"navigation_bar.compose_direct": "Direct message",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1108,7 +1108,7 @@
|
|||
"navigation_bar.compose": "𐑒𐑩𐑥𐑐𐑴𐑟 𐑯𐑿 𐑐𐑴𐑕𐑑",
|
||||
"navigation_bar.compose_direct": "𐑛𐑦𐑮𐑧𐑒𐑑 𐑥𐑧𐑕𐑦𐑡",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1089,7 +1089,7 @@
|
|||
"navigation_bar.compose": "Compose a post",
|
||||
"navigation_bar.compose_direct": "Direct message",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "Manage event",
|
||||
"navigation_bar.manage_event": "Manage event",
|
||||
"navigation_bar.compose_group": "Compose to group",
|
||||
"navigation_bar.compose_group_reply": "Reply to group post",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1092,7 +1092,7 @@
|
|||
"navigation_bar.compose": "Skribi novan mesaĝon",
|
||||
"navigation_bar.compose_direct": "",
|
||||
"navigation_bar.compose_edit": "",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1113,7 +1113,7 @@
|
|||
"navigation_bar.compose": "Redactar un nuevo toot",
|
||||
"navigation_bar.compose_direct": "",
|
||||
"navigation_bar.compose_edit": "",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1200,7 +1200,7 @@
|
|||
"navigation_bar.compose": "Escribir un nuevo toot",
|
||||
"navigation_bar.compose_direct": "Direct message",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "Administrar evento",
|
||||
"navigation_bar.manage_event": "Administrar evento",
|
||||
"navigation_bar.compose_group": "Redactar para grupo",
|
||||
"navigation_bar.compose_group_reply": "Responder al mensaje del grupo",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1092,7 +1092,7 @@
|
|||
"navigation_bar.compose": "Koosta uus tuut",
|
||||
"navigation_bar.compose_direct": "",
|
||||
"navigation_bar.compose_edit": "",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1092,7 +1092,7 @@
|
|||
"navigation_bar.compose": "Idatzi toot berria",
|
||||
"navigation_bar.compose_direct": "",
|
||||
"navigation_bar.compose_edit": "",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1108,7 +1108,7 @@
|
|||
"navigation_bar.compose": "نوشتن بوق تازه",
|
||||
"navigation_bar.compose_direct": "Direct message",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1092,7 +1092,7 @@
|
|||
"navigation_bar.compose": "Kirjoita uusi tuuttaus",
|
||||
"navigation_bar.compose_direct": "",
|
||||
"navigation_bar.compose_edit": "",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1137,7 +1137,7 @@
|
|||
"navigation_bar.compose": "Rédiger un nouveau toot",
|
||||
"navigation_bar.compose_direct": "Direct message",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "Gérer l’évènement",
|
||||
"navigation_bar.manage_event": "Gérer l’évènement",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1108,7 +1108,7 @@
|
|||
"navigation_bar.compose": "Compose new post",
|
||||
"navigation_bar.compose_direct": "Direct message",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1092,7 +1092,7 @@
|
|||
"navigation_bar.compose": "Escribir novo toot",
|
||||
"navigation_bar.compose_direct": "",
|
||||
"navigation_bar.compose_edit": "",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1166,7 +1166,7 @@
|
|||
"navigation_bar.compose": "כתוב פוסט חדש",
|
||||
"navigation_bar.compose_direct": "הודעה ישירה",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1108,7 +1108,7 @@
|
|||
"navigation_bar.compose": "Compose new post",
|
||||
"navigation_bar.compose_direct": "Direct message",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1131,7 +1131,7 @@
|
|||
"navigation_bar.compose": "Sastavite novu objavu",
|
||||
"navigation_bar.compose_direct": "Izravna poruka",
|
||||
"navigation_bar.compose_edit": "Uredi objavu",
|
||||
"navigation_bar.compose_event": "Upravljanje događajem",
|
||||
"navigation_bar.manage_event": "Upravljanje događajem",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Citiraj objavu",
|
||||
|
|
|
@ -1108,7 +1108,7 @@
|
|||
"navigation_bar.compose": "Új tülk írása",
|
||||
"navigation_bar.compose_direct": "Direct message",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1089,7 +1089,7 @@
|
|||
"navigation_bar.compose": "Compose new post",
|
||||
"navigation_bar.compose_direct": "",
|
||||
"navigation_bar.compose_edit": "",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1197,7 +1197,7 @@
|
|||
"navigation_bar.compose": "Tulis toot baru",
|
||||
"navigation_bar.compose_direct": "Pesan Langsung",
|
||||
"navigation_bar.compose_edit": "Edit postingan",
|
||||
"navigation_bar.compose_event": "Kelola acara",
|
||||
"navigation_bar.manage_event": "Kelola acara",
|
||||
"navigation_bar.compose_group": "Menulis ke grup",
|
||||
"navigation_bar.compose_group_reply": "Membalas kiriman grup",
|
||||
"navigation_bar.compose_quote": "Postingan quote",
|
||||
|
|
|
@ -1108,7 +1108,7 @@
|
|||
"navigation_bar.compose": "Compose new post",
|
||||
"navigation_bar.compose_direct": "Direct message",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1108,7 +1108,7 @@
|
|||
"navigation_bar.compose": "Semja nýja færslu",
|
||||
"navigation_bar.compose_direct": "Bein skilaboð",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1200,7 +1200,7 @@
|
|||
"navigation_bar.compose": "Pubblica qualcosa",
|
||||
"navigation_bar.compose_direct": "Comunica privatamente",
|
||||
"navigation_bar.compose_edit": "Salva modifiche",
|
||||
"navigation_bar.compose_event": "Gestione evento",
|
||||
"navigation_bar.manage_event": "Gestione evento",
|
||||
"navigation_bar.compose_group": "Scrivi nel gruppo",
|
||||
"navigation_bar.compose_group_reply": "Rispondi alla pubblicazione nel gruppo",
|
||||
"navigation_bar.compose_quote": "Citazione",
|
||||
|
|
|
@ -1183,7 +1183,7 @@
|
|||
"navigation_bar.compose": "投稿の新規作成",
|
||||
"navigation_bar.compose_direct": "ダイレクトメッセージ",
|
||||
"navigation_bar.compose_edit": "投稿を編集",
|
||||
"navigation_bar.compose_event": "イベントを管理する",
|
||||
"navigation_bar.manage_event": "イベントを管理する",
|
||||
"navigation_bar.compose_group": "グループに投稿する",
|
||||
"navigation_bar.compose_group_reply": "グループの投稿に返信",
|
||||
"navigation_bar.compose_quote": "投稿を引用",
|
||||
|
|
|
@ -1083,7 +1083,7 @@
|
|||
"navigation_bar.compose": "",
|
||||
"navigation_bar.compose_direct": "",
|
||||
"navigation_bar.compose_edit": "",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1091,7 +1091,7 @@
|
|||
"navigation_bar.compose": "Compose new post",
|
||||
"navigation_bar.compose_direct": "",
|
||||
"navigation_bar.compose_edit": "",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1108,7 +1108,7 @@
|
|||
"navigation_bar.compose": "Жаңа жазба бастау",
|
||||
"navigation_bar.compose_direct": "Direct message",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1108,7 +1108,7 @@
|
|||
"navigation_bar.compose": "새 툿 작성",
|
||||
"navigation_bar.compose_direct": "Direct message",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1108,7 +1108,7 @@
|
|||
"navigation_bar.compose": "Compose new post",
|
||||
"navigation_bar.compose_direct": "Direct message",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1108,7 +1108,7 @@
|
|||
"navigation_bar.compose": "Compose new post",
|
||||
"navigation_bar.compose_direct": "Direct message",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1108,7 +1108,7 @@
|
|||
"navigation_bar.compose": "Compose new post",
|
||||
"navigation_bar.compose_direct": "Direct message",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1108,7 +1108,7 @@
|
|||
"navigation_bar.compose": "Compose new post",
|
||||
"navigation_bar.compose_direct": "Direct message",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1092,7 +1092,7 @@
|
|||
"navigation_bar.compose": "Nieuw toot schrijven",
|
||||
"navigation_bar.compose_direct": "",
|
||||
"navigation_bar.compose_edit": "",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1108,7 +1108,7 @@
|
|||
"navigation_bar.compose": "Compose new post",
|
||||
"navigation_bar.compose_direct": "Direct message",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1166,7 +1166,7 @@
|
|||
"navigation_bar.compose": "Compose new post",
|
||||
"navigation_bar.compose_direct": "Direktemeldinger",
|
||||
"navigation_bar.compose_edit": "Rediger innlegg",
|
||||
"navigation_bar.compose_event": "Administrere arrangement",
|
||||
"navigation_bar.manage_event": "Administrere arrangement",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Siter innlegg",
|
||||
|
|
|
@ -1108,7 +1108,7 @@
|
|||
"navigation_bar.compose": "Escriure un nòu tut",
|
||||
"navigation_bar.compose_direct": "Direct message",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1083,7 +1083,7 @@
|
|||
"navigation_bar.compose": "Utwórz nowy wpis",
|
||||
"navigation_bar.compose_direct": "Wiadomość bezpośrednia",
|
||||
"navigation_bar.compose_edit": "Edytuj wpis",
|
||||
"navigation_bar.compose_event": "Zarządzaj wydarzeniem",
|
||||
"navigation_bar.manage_event": "Zarządzaj wydarzeniem",
|
||||
"navigation_bar.compose_group": "Utwórz wpis w grupie",
|
||||
"navigation_bar.compose_group_reply": "Odpowiedz na wpis w grupie",
|
||||
"navigation_bar.compose_quote": "Cytuj wpis",
|
||||
|
|
|
@ -1108,7 +1108,7 @@
|
|||
"navigation_bar.compose": "Compor um novo toot",
|
||||
"navigation_bar.compose_direct": "Direct message",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1108,7 +1108,7 @@
|
|||
"navigation_bar.compose": "Escrever uma nova publicação",
|
||||
"navigation_bar.compose_direct": "Direct message",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1108,7 +1108,7 @@
|
|||
"navigation_bar.compose": "Compune o nouă postare",
|
||||
"navigation_bar.compose_direct": "Direct message",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1197,7 +1197,7 @@
|
|||
"navigation_bar.compose": "Создать новый статус",
|
||||
"navigation_bar.compose_direct": "Direct message",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "Управление мероприятием",
|
||||
"navigation_bar.manage_event": "Управление мероприятием",
|
||||
"navigation_bar.compose_group": "Написать в группу",
|
||||
"navigation_bar.compose_group_reply": "Ответ на пост группы",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1108,7 +1108,7 @@
|
|||
"navigation_bar.compose": "Napíš nový príspevok",
|
||||
"navigation_bar.compose_direct": "Direct message",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1092,7 +1092,7 @@
|
|||
"navigation_bar.compose": "Sestavi nov tut",
|
||||
"navigation_bar.compose_direct": "",
|
||||
"navigation_bar.compose_edit": "",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1092,7 +1092,7 @@
|
|||
"navigation_bar.compose": "Hartoni mesazh të ri",
|
||||
"navigation_bar.compose_direct": "",
|
||||
"navigation_bar.compose_edit": "",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1108,7 +1108,7 @@
|
|||
"navigation_bar.compose": "Compose new post",
|
||||
"navigation_bar.compose_direct": "Direct message",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1108,7 +1108,7 @@
|
|||
"navigation_bar.compose": "Саставите нову трубу",
|
||||
"navigation_bar.compose_direct": "Direct message",
|
||||
"navigation_bar.compose_edit": "Edit post",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "Quote post",
|
||||
|
|
|
@ -1092,7 +1092,7 @@
|
|||
"navigation_bar.compose": "Författa ny toot",
|
||||
"navigation_bar.compose_direct": "",
|
||||
"navigation_bar.compose_edit": "",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1092,7 +1092,7 @@
|
|||
"navigation_bar.compose": "புதியவற்றை எழுதுக toot",
|
||||
"navigation_bar.compose_direct": "",
|
||||
"navigation_bar.compose_edit": "",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1092,7 +1092,7 @@
|
|||
"navigation_bar.compose": "కొత్త టూట్ను రాయండి",
|
||||
"navigation_bar.compose_direct": "",
|
||||
"navigation_bar.compose_edit": "",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1092,7 +1092,7 @@
|
|||
"navigation_bar.compose": "เขียนโพสต์ใหม่",
|
||||
"navigation_bar.compose_direct": "",
|
||||
"navigation_bar.compose_edit": "",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1196,7 +1196,7 @@
|
|||
"navigation_bar.compose": "Bir gönderi oluşturun",
|
||||
"navigation_bar.compose_direct": "Özel mesaj",
|
||||
"navigation_bar.compose_edit": "Gönderiyi düzenle",
|
||||
"navigation_bar.compose_event": "Etkinliği yönet",
|
||||
"navigation_bar.manage_event": "Etkinliği yönet",
|
||||
"navigation_bar.compose_group": "Guruba içerik oluştur",
|
||||
"navigation_bar.compose_group_reply": "Grup gönderisine yanıt ver",
|
||||
"navigation_bar.compose_quote": "Gönderiyi alıntıla",
|
||||
|
|
|
@ -1092,7 +1092,7 @@
|
|||
"navigation_bar.compose": "Написати новий дмух",
|
||||
"navigation_bar.compose_direct": "",
|
||||
"navigation_bar.compose_edit": "",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "",
|
||||
|
|
|
@ -1197,7 +1197,7 @@
|
|||
"navigation_bar.compose": "撰写新帖",
|
||||
"navigation_bar.compose_direct": "撰写私信",
|
||||
"navigation_bar.compose_edit": "编辑帖文",
|
||||
"navigation_bar.compose_event": "管理活动",
|
||||
"navigation_bar.manage_event": "管理活动",
|
||||
"navigation_bar.compose_group": "撰写至群组",
|
||||
"navigation_bar.compose_group_reply": "回复群组帖文",
|
||||
"navigation_bar.compose_quote": "引用帖文",
|
||||
|
|
|
@ -1107,7 +1107,7 @@
|
|||
"navigation_bar.compose": "撰寫新帖文",
|
||||
"navigation_bar.compose_direct": "發送私人訊息",
|
||||
"navigation_bar.compose_edit": "編輯帖文",
|
||||
"navigation_bar.compose_event": "",
|
||||
"navigation_bar.manage_event": "",
|
||||
"navigation_bar.compose_group": "",
|
||||
"navigation_bar.compose_group_reply": "",
|
||||
"navigation_bar.compose_quote": "引用帖文",
|
||||
|
|
|
@ -1197,7 +1197,7 @@
|
|||
"navigation_bar.compose": "撰寫新貼文",
|
||||
"navigation_bar.compose_direct": "發送私人訊息",
|
||||
"navigation_bar.compose_edit": "編輯貼文",
|
||||
"navigation_bar.compose_event": "管理活動",
|
||||
"navigation_bar.manage_event": "管理活動",
|
||||
"navigation_bar.compose_group": "發文到群組",
|
||||
"navigation_bar.compose_group_reply": "回覆群組貼文",
|
||||
"navigation_bar.compose_quote": "引用貼文",
|
||||
|
|
|
@ -7,7 +7,6 @@ import type { AccountModerationModalProps } from 'pl-fe/features/ui/components/m
|
|||
import type { BoostModalProps } from 'pl-fe/features/ui/components/modals/boost-modal';
|
||||
import type { CompareHistoryModalProps } from 'pl-fe/features/ui/components/modals/compare-history-modal';
|
||||
import type { ComponentModalProps } from 'pl-fe/features/ui/components/modals/component-modal';
|
||||
import type { ComposeEventModalProps } from 'pl-fe/features/ui/components/modals/compose-event-modal';
|
||||
import type { ComposeModalProps } from 'pl-fe/features/ui/components/modals/compose-modal';
|
||||
import type { ConfirmationModalProps } from 'pl-fe/features/ui/components/modals/confirmation-modal';
|
||||
import type { DislikesModalProps } from 'pl-fe/features/ui/components/modals/dislikes-modal';
|
||||
|
@ -44,7 +43,6 @@ type OpenModalProps =
|
|||
| [type: 'COMPARE_HISTORY', props: CompareHistoryModalProps]
|
||||
| [type: 'COMPONENT', props: ComponentModalProps]
|
||||
| [type: 'COMPOSE', props?: ComposeModalProps]
|
||||
| [type: 'COMPOSE_EVENT', props?: ComposeEventModalProps]
|
||||
| [type: 'CONFIRM', props: ConfirmationModalProps]
|
||||
| [type: 'CRYPTO_DONATE', props: ICryptoAddress]
|
||||
| [type: 'DISLIKES', props: DislikesModalProps]
|
||||
|
|
Loading…
Reference in a new issue