mirror of
https://git.kescher.at/CatCatNya/catstodon.git
synced 2024-11-26 10:11:37 +01:00
[Glitch] Add API types for status and related objects
Port e47a3d00fe
to glitch-soc
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
This commit is contained in:
parent
297c8c37b1
commit
c316852a65
4 changed files with 141 additions and 1 deletions
|
@ -0,0 +1,22 @@
|
||||||
|
// See app/serializers/rest/media_attachment_serializer.rb
|
||||||
|
|
||||||
|
export type MediaAttachmentType =
|
||||||
|
| 'image'
|
||||||
|
| 'gifv'
|
||||||
|
| 'video'
|
||||||
|
| 'unknown'
|
||||||
|
| 'audio';
|
||||||
|
|
||||||
|
export interface ApiMediaAttachmentJSON {
|
||||||
|
id: string;
|
||||||
|
type: MediaAttachmentType;
|
||||||
|
url: string;
|
||||||
|
preview_url: string;
|
||||||
|
remoteUrl: string;
|
||||||
|
preview_remote_url: string;
|
||||||
|
text_url: string;
|
||||||
|
// TODO: how to define this?
|
||||||
|
meta: unknown;
|
||||||
|
description?: string;
|
||||||
|
blurhash: string;
|
||||||
|
}
|
23
app/javascript/flavours/glitch/api_types/polls.ts
Normal file
23
app/javascript/flavours/glitch/api_types/polls.ts
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
import type { ApiCustomEmojiJSON } from './custom_emoji';
|
||||||
|
|
||||||
|
// See app/serializers/rest/poll_serializer.rb
|
||||||
|
|
||||||
|
export interface ApiPollOptionJSON {
|
||||||
|
title: string;
|
||||||
|
votes_count: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ApiPollJSON {
|
||||||
|
id: string;
|
||||||
|
expires_at: string;
|
||||||
|
expired: boolean;
|
||||||
|
multiple: boolean;
|
||||||
|
votes_count: number;
|
||||||
|
voters_count: number;
|
||||||
|
|
||||||
|
options: ApiPollOptionJSON[];
|
||||||
|
emojis: ApiCustomEmojiJSON[];
|
||||||
|
|
||||||
|
voted: boolean;
|
||||||
|
own_votes: number[];
|
||||||
|
}
|
95
app/javascript/flavours/glitch/api_types/statuses.ts
Normal file
95
app/javascript/flavours/glitch/api_types/statuses.ts
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
// See app/serializers/rest/status_serializer.rb
|
||||||
|
|
||||||
|
import type { ApiAccountJSON } from './accounts';
|
||||||
|
import type { ApiCustomEmojiJSON } from './custom_emoji';
|
||||||
|
import type { ApiMediaAttachmentJSON } from './media_attachments';
|
||||||
|
import type { ApiPollJSON } from './polls';
|
||||||
|
|
||||||
|
// See app/modals/status.rb
|
||||||
|
export type StatusVisibility =
|
||||||
|
| 'public'
|
||||||
|
| 'unlisted'
|
||||||
|
| 'private'
|
||||||
|
// | 'limited' // This is never exposed to the API (they become `private`)
|
||||||
|
| 'direct';
|
||||||
|
|
||||||
|
export interface ApiStatusApplicationJSON {
|
||||||
|
name: string;
|
||||||
|
website: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ApiTagJSON {
|
||||||
|
name: string;
|
||||||
|
url: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ApiMentionJSON {
|
||||||
|
id: string;
|
||||||
|
username: string;
|
||||||
|
url: string;
|
||||||
|
acct: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ApiPreviewCardJSON {
|
||||||
|
url: string;
|
||||||
|
title: string;
|
||||||
|
description: string;
|
||||||
|
language: string;
|
||||||
|
type: string;
|
||||||
|
author_name: string;
|
||||||
|
author_url: string;
|
||||||
|
provider_name: string;
|
||||||
|
provider_url: string;
|
||||||
|
html: string;
|
||||||
|
width: number;
|
||||||
|
height: number;
|
||||||
|
image: string;
|
||||||
|
image_description: string;
|
||||||
|
embed_url: string;
|
||||||
|
blurhash: string;
|
||||||
|
published_at: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ApiStatusJSON {
|
||||||
|
id: string;
|
||||||
|
created_at: string;
|
||||||
|
in_reply_to_id?: string;
|
||||||
|
in_reply_to_account_id?: string;
|
||||||
|
sensitive: boolean;
|
||||||
|
spoiler_text?: string;
|
||||||
|
visibility: StatusVisibility;
|
||||||
|
language: string;
|
||||||
|
uri: string;
|
||||||
|
url: string;
|
||||||
|
replies_count: number;
|
||||||
|
reblogs_count: number;
|
||||||
|
favorites_count: number;
|
||||||
|
edited_at?: string;
|
||||||
|
|
||||||
|
favorited?: boolean;
|
||||||
|
reblogged?: boolean;
|
||||||
|
muted?: boolean;
|
||||||
|
bookmarked?: boolean;
|
||||||
|
pinned?: boolean;
|
||||||
|
|
||||||
|
// filtered: FilterResult[]
|
||||||
|
filtered: unknown; // TODO
|
||||||
|
content?: string;
|
||||||
|
text?: string;
|
||||||
|
|
||||||
|
reblog?: ApiStatusJSON;
|
||||||
|
application?: ApiStatusApplicationJSON;
|
||||||
|
account: ApiAccountJSON;
|
||||||
|
media_attachments: ApiMediaAttachmentJSON[];
|
||||||
|
mentions: ApiMentionJSON[];
|
||||||
|
|
||||||
|
tags: ApiTagJSON[];
|
||||||
|
emojis: ApiCustomEmojiJSON[];
|
||||||
|
|
||||||
|
card?: ApiPreviewCardJSON;
|
||||||
|
poll?: ApiPollJSON;
|
||||||
|
|
||||||
|
// glitch-soc additions
|
||||||
|
local_only?: boolean;
|
||||||
|
content_type?: string;
|
||||||
|
}
|
|
@ -1,4 +1,4 @@
|
||||||
export type StatusVisibility = 'public' | 'unlisted' | 'private' | 'direct';
|
export type { StatusVisibility } from 'flavours/glitch/api_types/statuses';
|
||||||
|
|
||||||
// Temporary until we type it correctly
|
// Temporary until we type it correctly
|
||||||
export type Status = Immutable.Map<string, unknown>;
|
export type Status = Immutable.Map<string, unknown>;
|
||||||
|
|
Loading…
Reference in a new issue