Normalize event information
Signed-off-by: marcin mikołajczak <git@mkljczk.pl>
This commit is contained in:
parent
df39036129
commit
eabab437a7
|
@ -21,6 +21,19 @@ import type { Account, Attachment, Card, Emoji, Mention, Poll, EmbeddedEntity }
|
||||||
|
|
||||||
export type StatusVisibility = 'public' | 'unlisted' | 'private' | 'direct' | 'self';
|
export type StatusVisibility = 'public' | 'unlisted' | 'private' | 'direct' | 'self';
|
||||||
|
|
||||||
|
export type EventJoinMode = 'free' | 'restricted' | 'invite';
|
||||||
|
export type EventJoinState = 'pending' | 'reject' | 'accept';
|
||||||
|
|
||||||
|
export const EventRecord = ImmutableRecord({
|
||||||
|
name: '',
|
||||||
|
start_time: null as string | null,
|
||||||
|
end_time: null as string | null,
|
||||||
|
join_mode: null as EventJoinMode | null,
|
||||||
|
participants_count: 0,
|
||||||
|
location: null as ImmutableMap<string, any> | null,
|
||||||
|
join_state: null as EventJoinState | null,
|
||||||
|
});
|
||||||
|
|
||||||
// https://docs.joinmastodon.org/entities/status/
|
// https://docs.joinmastodon.org/entities/status/
|
||||||
export const StatusRecord = ImmutableRecord({
|
export const StatusRecord = ImmutableRecord({
|
||||||
account: null as EmbeddedEntity<Account | ReducerAccount>,
|
account: null as EmbeddedEntity<Account | ReducerAccount>,
|
||||||
|
@ -55,6 +68,7 @@ export const StatusRecord = ImmutableRecord({
|
||||||
uri: '',
|
uri: '',
|
||||||
url: '',
|
url: '',
|
||||||
visibility: 'public' as StatusVisibility,
|
visibility: 'public' as StatusVisibility,
|
||||||
|
event: null as ReturnType<typeof EventRecord> | null,
|
||||||
|
|
||||||
// Internal fields
|
// Internal fields
|
||||||
contentHtml: '',
|
contentHtml: '',
|
||||||
|
@ -149,6 +163,15 @@ const fixFiltered = (status: ImmutableMap<string, any>) => {
|
||||||
status.delete('filtered');
|
status.delete('filtered');
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Normalize event
|
||||||
|
const normalizeEvent = (status: ImmutableMap<string, any>) => {
|
||||||
|
if (status.getIn(['pleroma', 'event'])) {
|
||||||
|
return status.set('event', EventRecord(status.getIn(['pleroma', 'event']) as ImmutableMap<string, any>));
|
||||||
|
} else {
|
||||||
|
return status.set('event', null);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
export const normalizeStatus = (status: Record<string, any>) => {
|
export const normalizeStatus = (status: Record<string, any>) => {
|
||||||
return StatusRecord(
|
return StatusRecord(
|
||||||
ImmutableMap(fromJS(status)).withMutations(status => {
|
ImmutableMap(fromJS(status)).withMutations(status => {
|
||||||
|
@ -161,6 +184,7 @@ export const normalizeStatus = (status: Record<string, any>) => {
|
||||||
addSelfMention(status);
|
addSelfMention(status);
|
||||||
fixQuote(status);
|
fixQuote(status);
|
||||||
fixFiltered(status);
|
fixFiltered(status);
|
||||||
|
normalizeEvent(status);
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue