From ce12fc2b67a15e34c0a91d7743d451012ad88ffb Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 19 Jun 2021 23:07:08 +0900 Subject: [PATCH] refactor --- src/api.ts | 2 +- src/{endpoints.ts => api.types.ts} | 0 src/index.ts | 2 +- src/streaming.ts | 85 +----------------------------- src/streaming.types.ts | 82 ++++++++++++++++++++++++++++ 5 files changed, 85 insertions(+), 86 deletions(-) rename src/{endpoints.ts => api.types.ts} (100%) create mode 100644 src/streaming.types.ts diff --git a/src/api.ts b/src/api.ts index d97db087b..45ca2e9b5 100644 --- a/src/api.ts +++ b/src/api.ts @@ -1,4 +1,4 @@ -import { Endpoints } from './endpoints'; +import { Endpoints } from './api.types'; const MK_API_ERROR = Symbol(); diff --git a/src/endpoints.ts b/src/api.types.ts similarity index 100% rename from src/endpoints.ts rename to src/api.types.ts diff --git a/src/index.ts b/src/index.ts index b5f5a5629..8370d786b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,4 +1,4 @@ -import { Endpoints } from './endpoints'; +import { Endpoints } from './api.types'; import Stream from './streaming'; import { Acct } from './acct'; diff --git a/src/streaming.ts b/src/streaming.ts index cc1b9a887..f3efdd972 100644 --- a/src/streaming.ts +++ b/src/streaming.ts @@ -3,7 +3,7 @@ import { EventEmitter } from 'eventemitter3'; import ReconnectingWebsocket from 'reconnecting-websocket'; import { stringify } from 'querystring'; import { markRaw } from '@vue/reactivity'; -import { DriveFile, MeDetailed, MessagingMessage, Note, Notification, PageEvent, User } from './entities'; +import { ChannelDef, NoteUpdatedEvent } from './streaming.types'; function urlQuery(obj: {}): string { return stringify(Object.entries(obj) @@ -11,89 +11,6 @@ function urlQuery(obj: {}): string { .reduce((a, [k, v]) => (a[k] = v, a), {} as Record)); } -type FIXME = any; - -type ChannelDef = { - main: { - events: { - notification: (payload: Notification) => void; - mention: (payload: Note) => void; - reply: (payload: Note) => void; - renote: (payload: Note) => void; - follow: (payload: User) => void; // 自分が他人をフォローしたとき - followed: (payload: User) => void; // 他人が自分をフォローしたとき - unfollow: (payload: User) => void; // 自分が他人をフォロー解除したとき - meUpdated: (payload: MeDetailed) => void; - pageEvent: (payload: PageEvent) => void; - urlUploadFinished: (payload: { marker: string; file: DriveFile; }) => void; - readAllNotifications: () => void; - unreadNotification: () => void; - unreadMention: () => void; - readAllUnreadMentions: () => void; - unreadSpecifiedNote: () => void; - readAllUnreadSpecifiedNotes: () => void; - readAllMessagingMessages: () => void; - unreadMessagingMessage: () => void; - readAllAntennas: () => void; - unreadAntenna: () => void; - readAllAnnouncements: () => void; - readAllChannels: () => void; - unreadChannel: () => void; - myTokenRegenerated: () => void; - }; - }; - homeTimeline: { - events: { - note: (payload: Note) => void; - }; - }; - localTimeline: { - events: { - note: (payload: Note) => void; - }; - }; - hybridTimeline: { - events: { - note: (payload: Note) => void; - }; - }; - globalTimeline: { - events: { - note: (payload: Note) => void; - }; - }; - messaging: { - events: { - message: (payload: MessagingMessage) => void; - deleted: (payload: MessagingMessage['id']) => void; - read: (payload: MessagingMessage['id'][]) => void; - typers: (payload: User[]) => void; - }; - }; -}; - -type NoteUpdatedEvent = { - id: Note['id']; - type: 'reacted'; - body: { - reaction: string; - userId: User['id']; - }; -} | { - id: Note['id']; - type: 'deleted'; - body: { - deletedAt: string; - }; -} | { - id: Note['id']; - type: 'pollVoted'; - body: { - choice: number; - userId: User['id']; - }; -}; - type StreamEvents = { _connected_: void; _disconnected_: void; diff --git a/src/streaming.types.ts b/src/streaming.types.ts new file mode 100644 index 000000000..153d6b633 --- /dev/null +++ b/src/streaming.types.ts @@ -0,0 +1,82 @@ +import { DriveFile, MeDetailed, MessagingMessage, Note, Notification, PageEvent, User } from './entities'; + +export type ChannelDef = { + main: { + events: { + notification: (payload: Notification) => void; + mention: (payload: Note) => void; + reply: (payload: Note) => void; + renote: (payload: Note) => void; + follow: (payload: User) => void; // 自分が他人をフォローしたとき + followed: (payload: User) => void; // 他人が自分をフォローしたとき + unfollow: (payload: User) => void; // 自分が他人をフォロー解除したとき + meUpdated: (payload: MeDetailed) => void; + pageEvent: (payload: PageEvent) => void; + urlUploadFinished: (payload: { marker: string; file: DriveFile; }) => void; + readAllNotifications: () => void; + unreadNotification: () => void; + unreadMention: () => void; + readAllUnreadMentions: () => void; + unreadSpecifiedNote: () => void; + readAllUnreadSpecifiedNotes: () => void; + readAllMessagingMessages: () => void; + unreadMessagingMessage: () => void; + readAllAntennas: () => void; + unreadAntenna: () => void; + readAllAnnouncements: () => void; + readAllChannels: () => void; + unreadChannel: () => void; + myTokenRegenerated: () => void; + }; + }; + homeTimeline: { + events: { + note: (payload: Note) => void; + }; + }; + localTimeline: { + events: { + note: (payload: Note) => void; + }; + }; + hybridTimeline: { + events: { + note: (payload: Note) => void; + }; + }; + globalTimeline: { + events: { + note: (payload: Note) => void; + }; + }; + messaging: { + events: { + message: (payload: MessagingMessage) => void; + deleted: (payload: MessagingMessage['id']) => void; + read: (payload: MessagingMessage['id'][]) => void; + typers: (payload: User[]) => void; + }; + }; +}; + +export type NoteUpdatedEvent = { + id: Note['id']; + type: 'reacted'; + body: { + reaction: string; + userId: User['id']; + }; +} | { + id: Note['id']; + type: 'deleted'; + body: { + deletedAt: string; + }; +} | { + id: Note['id']; + type: 'pollVoted'; + body: { + choice: number; + userId: User['id']; + }; +};