]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame_incremental - server/types/models/actor/actor-follow.ts
Merge branch 'release/3.2.0' into develop
[github/Chocobozzz/PeerTube.git] / server / types / models / actor / actor-follow.ts
... / ...
CommitLineData
1import { PickWith } from '@shared/core-utils'
2import { ActorFollowModel } from '../../../models/actor/actor-follow'
3import {
4 MActor,
5 MActorChannelAccountActor,
6 MActorDefault,
7 MActorDefaultAccountChannel,
8 MActorDefaultChannelId,
9 MActorFormattable,
10 MActorHost,
11 MActorUsername
12} from './actor'
13
14type Use<K extends keyof ActorFollowModel, M> = PickWith<ActorFollowModel, K, M>
15
16// ############################################################################
17
18export type MActorFollow = Omit<ActorFollowModel, 'ActorFollower' | 'ActorFollowing'>
19
20// ############################################################################
21
22export type MActorFollowFollowingHost =
23 MActorFollow &
24 Use<'ActorFollowing', MActorUsername & MActorHost>
25
26// ############################################################################
27
28// With actors or actors default
29
30export type MActorFollowActors =
31 MActorFollow &
32 Use<'ActorFollower', MActor> &
33 Use<'ActorFollowing', MActor>
34
35export type MActorFollowActorsDefault =
36 MActorFollow &
37 Use<'ActorFollower', MActorDefault> &
38 Use<'ActorFollowing', MActorDefault>
39
40export type MActorFollowFull =
41 MActorFollow &
42 Use<'ActorFollower', MActorDefaultAccountChannel> &
43 Use<'ActorFollowing', MActorDefaultAccountChannel>
44
45// ############################################################################
46
47// For subscriptions
48
49export type MActorFollowActorsDefaultSubscription =
50 MActorFollow &
51 Use<'ActorFollower', MActorDefault> &
52 Use<'ActorFollowing', MActorDefaultChannelId>
53
54export type MActorFollowSubscriptions =
55 MActorFollow &
56 Use<'ActorFollowing', MActorChannelAccountActor>
57
58// ############################################################################
59
60// Format for API or AP object
61
62export type MActorFollowFormattable =
63 Pick<MActorFollow, 'id' | 'score' | 'state' | 'createdAt' | 'updatedAt'> &
64 Use<'ActorFollower', MActorFormattable> &
65 Use<'ActorFollowing', MActorFormattable>