From eabab437a76e3a96191360e0db0a9caeb8a4317c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marcin=20miko=C5=82ajczak?= Date: Mon, 5 Sep 2022 18:32:35 +0200 Subject: [PATCH] Normalize event information MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: marcin mikołajczak --- app/soapbox/normalizers/status.ts | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/soapbox/normalizers/status.ts b/app/soapbox/normalizers/status.ts index 4788758d3..ff0ebfe83 100644 --- a/app/soapbox/normalizers/status.ts +++ b/app/soapbox/normalizers/status.ts @@ -21,6 +21,19 @@ import type { Account, Attachment, Card, Emoji, Mention, Poll, EmbeddedEntity } 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 | null, + join_state: null as EventJoinState | null, +}); + // https://docs.joinmastodon.org/entities/status/ export const StatusRecord = ImmutableRecord({ account: null as EmbeddedEntity, @@ -55,6 +68,7 @@ export const StatusRecord = ImmutableRecord({ uri: '', url: '', visibility: 'public' as StatusVisibility, + event: null as ReturnType | null, // Internal fields contentHtml: '', @@ -149,6 +163,15 @@ const fixFiltered = (status: ImmutableMap) => { status.delete('filtered'); }; +// Normalize event +const normalizeEvent = (status: ImmutableMap) => { + if (status.getIn(['pleroma', 'event'])) { + return status.set('event', EventRecord(status.getIn(['pleroma', 'event']) as ImmutableMap)); + } else { + return status.set('event', null); + } +}; + export const normalizeStatus = (status: Record) => { return StatusRecord( ImmutableMap(fromJS(status)).withMutations(status => { @@ -161,6 +184,7 @@ export const normalizeStatus = (status: Record) => { addSelfMention(status); fixQuote(status); fixFiltered(status); + normalizeEvent(status); }), ); };