From 57f592fed50747f3c97718a2761e17bafe6c8698 Mon Sep 17 00:00:00 2001 From: Renaud Chaput Date: Tue, 26 Sep 2023 11:25:01 +0200 Subject: [PATCH] Add Typescript types for some API objects (#26602) --- app/javascript/mastodon/api_types/accounts.ts | 45 +++++++++++++++++++ .../mastodon/api_types/custom_emoji.ts | 8 ++++ .../mastodon/api_types/relationships.ts | 18 ++++++++ app/serializers/rest/account_serializer.rb | 2 + .../rest/custom_emoji_serializer.rb | 2 + .../rest/relationship_serializer.rb | 2 + 6 files changed, 77 insertions(+) create mode 100644 app/javascript/mastodon/api_types/accounts.ts create mode 100644 app/javascript/mastodon/api_types/custom_emoji.ts create mode 100644 app/javascript/mastodon/api_types/relationships.ts diff --git a/app/javascript/mastodon/api_types/accounts.ts b/app/javascript/mastodon/api_types/accounts.ts new file mode 100644 index 0000000000..9d740c96de --- /dev/null +++ b/app/javascript/mastodon/api_types/accounts.ts @@ -0,0 +1,45 @@ +import type { ApiCustomEmojiJSON } from './custom_emoji'; + +export interface ApiAccountFieldJSON { + name: string; + value: string; + verified_at: string | null; +} + +export interface ApiAccountRoleJSON { + color: string; + id: string; + name: string; +} + +// See app/serializers/rest/account_serializer.rb +export interface ApiAccountJSON { + acct: string; + avatar: string; + avatar_static: string; + bot: boolean; + created_at: string; + discoverable: boolean; + display_name: string; + emojis: ApiCustomEmojiJSON[]; + fields: ApiAccountFieldJSON[]; + followers_count: number; + following_count: number; + group: boolean; + header: string; + header_static: string; + id: string; + last_status_at: string; + locked: boolean; + noindex: boolean; + note: string; + roles: ApiAccountJSON[]; + statuses_count: number; + uri: string; + url: string; + username: string; + moved?: ApiAccountJSON; + suspended?: boolean; + limited?: boolean; + memorial?: boolean; +} diff --git a/app/javascript/mastodon/api_types/custom_emoji.ts b/app/javascript/mastodon/api_types/custom_emoji.ts new file mode 100644 index 0000000000..05144d6f68 --- /dev/null +++ b/app/javascript/mastodon/api_types/custom_emoji.ts @@ -0,0 +1,8 @@ +// See app/serializers/rest/account_serializer.rb +export interface ApiCustomEmojiJSON { + shortcode: string; + static_url: string; + url: string; + category?: string; + visible_in_picker: boolean; +} diff --git a/app/javascript/mastodon/api_types/relationships.ts b/app/javascript/mastodon/api_types/relationships.ts new file mode 100644 index 0000000000..9f26a0ce9b --- /dev/null +++ b/app/javascript/mastodon/api_types/relationships.ts @@ -0,0 +1,18 @@ +// See app/serializers/rest/relationship_serializer.rb +export interface ApiRelationshipJSON { + blocked_by: boolean; + blocking: boolean; + domain_blocking: boolean; + endorsed: boolean; + followed_by: boolean; + following: boolean; + id: string; + languages: string[] | null; + muting_notifications: boolean; + muting: boolean; + note: string; + notifying: boolean; + requested_by: boolean; + requested: boolean; + showing_reblogs: boolean; +} diff --git a/app/serializers/rest/account_serializer.rb b/app/serializers/rest/account_serializer.rb index 310cf1b1e4..435ae36b74 100644 --- a/app/serializers/rest/account_serializer.rb +++ b/app/serializers/rest/account_serializer.rb @@ -4,6 +4,8 @@ class REST::AccountSerializer < ActiveModel::Serializer include RoutingHelper include FormattingHelper + # Please update `app/javascript/mastodon/api_types/accounts.ts` when making changes to the attributes + attributes :id, :username, :acct, :display_name, :locked, :bot, :discoverable, :group, :created_at, :note, :url, :uri, :avatar, :avatar_static, :header, :header_static, :followers_count, :following_count, :statuses_count, :last_status_at diff --git a/app/serializers/rest/custom_emoji_serializer.rb b/app/serializers/rest/custom_emoji_serializer.rb index aff58e4d94..33da69da53 100644 --- a/app/serializers/rest/custom_emoji_serializer.rb +++ b/app/serializers/rest/custom_emoji_serializer.rb @@ -3,6 +3,8 @@ class REST::CustomEmojiSerializer < ActiveModel::Serializer include RoutingHelper + # Please update `app/javascript/mastodon/api_types/custom_emoji.ts` when making changes to the attributes + attributes :shortcode, :url, :static_url, :visible_in_picker attribute :category, if: :category_loaded? diff --git a/app/serializers/rest/relationship_serializer.rb b/app/serializers/rest/relationship_serializer.rb index b533874012..4d7ed75935 100644 --- a/app/serializers/rest/relationship_serializer.rb +++ b/app/serializers/rest/relationship_serializer.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class REST::RelationshipSerializer < ActiveModel::Serializer + # Please update `app/javascript/mastodon/api_types/relationships.ts` when making changes to the attributes + attributes :id, :following, :showing_reblogs, :notifying, :languages, :followed_by, :blocking, :blocked_by, :muting, :muting_notifications, :requested, :requested_by, :domain_blocking, :endorsed, :note