]>
Commit | Line | Data |
---|---|---|
453e83ea | 1 | import { ActorFollowModel } from '../../../models/activitypub/actor-follow' |
0283eaac C |
2 | import { |
3 | MActor, | |
4 | MActorAccount, | |
5 | MActorAccountChannel, | |
0283eaac C |
6 | MActorChannelAccountActor, |
7 | MActorDefault, | |
1ca9f7c3 | 8 | MActorFormattable, |
0283eaac C |
9 | MActorHost, |
10 | MActorUsername | |
11 | } from './actor' | |
453e83ea | 12 | import { PickWith } from '../../utils' |
0283eaac | 13 | import { ActorModel } from '@server/models/activitypub/actor' |
1ca9f7c3 | 14 | import { MChannelDefault } from '@server/typings/models' |
0283eaac C |
15 | |
16 | type Use<K extends keyof ActorFollowModel, M> = PickWith<ActorFollowModel, K, M> | |
17 | ||
18 | // ############################################################################ | |
453e83ea C |
19 | |
20 | export type MActorFollow = Omit<ActorFollowModel, 'ActorFollower' | 'ActorFollowing'> | |
21 | ||
0283eaac C |
22 | // ############################################################################ |
23 | ||
24 | export type MActorFollowFollowingHost = MActorFollow & | |
25 | Use<'ActorFollowing', MActorUsername & MActorHost> | |
26 | ||
27 | // ############################################################################ | |
28 | ||
29 | // With actors or actors default | |
30 | ||
453e83ea | 31 | export type MActorFollowActors = MActorFollow & |
0283eaac C |
32 | Use<'ActorFollower', MActor> & |
33 | Use<'ActorFollowing', MActor> | |
453e83ea C |
34 | |
35 | export type MActorFollowActorsDefault = MActorFollow & | |
0283eaac C |
36 | Use<'ActorFollower', MActorDefault> & |
37 | Use<'ActorFollowing', MActorDefault> | |
453e83ea C |
38 | |
39 | export type MActorFollowFull = MActorFollow & | |
0283eaac C |
40 | Use<'ActorFollower', MActorAccountChannel> & |
41 | Use<'ActorFollowing', MActorAccountChannel> | |
453e83ea | 42 | |
0283eaac C |
43 | // ############################################################################ |
44 | ||
45 | // For subscriptions | |
46 | ||
1ca9f7c3 C |
47 | type SubscriptionFollowing = MActorDefault & |
48 | PickWith<ActorModel, 'VideoChannel', MChannelDefault> | |
49 | ||
0283eaac C |
50 | export type MActorFollowActorsDefaultSubscription = MActorFollow & |
51 | Use<'ActorFollower', MActorDefault> & | |
1ca9f7c3 | 52 | Use<'ActorFollowing', SubscriptionFollowing> |
0283eaac C |
53 | |
54 | export type MActorFollowFollowingFullFollowerAccount = MActorFollow & | |
55 | Use<'ActorFollower', MActorAccount> & | |
56 | Use<'ActorFollowing', MActorAccountChannel> | |
453e83ea C |
57 | |
58 | export type MActorFollowSubscriptions = MActorFollow & | |
0283eaac | 59 | Use<'ActorFollowing', MActorChannelAccountActor> |
1ca9f7c3 C |
60 | |
61 | // ############################################################################ | |
62 | ||
63 | // Format for API or AP object | |
64 | ||
65 | export type MActorFollowFormattable = Pick<MActorFollow, 'id' | 'score' | 'state' | 'createdAt' | 'updatedAt'> & | |
66 | Use<'ActorFollower', MActorFormattable> & | |
67 | Use<'ActorFollowing', MActorFormattable> |