]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/typings/models/account/actor-follow.ts
Cleanup model types
[github/Chocobozzz/PeerTube.git] / server / typings / models / account / actor-follow.ts
index 96c53d857102aac1b38063219e82b0dab95cab39..87050ac63ff7d7d148bf2425cd35d2ebc8d99427 100644 (file)
@@ -1,27 +1,55 @@
 import { ActorFollowModel } from '../../../models/activitypub/actor-follow'
-import { MActor, MActorAccountChannel, MActorChannel, MActorChannelAccount, MActorDefault, MActorHost, MActorUsername } from './actor'
+import {
+  MActor,
+  MActorAccount,
+  MActorAccountChannel,
+  MActorChannel,
+  MActorChannelAccountActor,
+  MActorDefault,
+  MActorHost,
+  MActorUsername
+} from './actor'
 import { PickWith } from '../../utils'
+import { ActorModel } from '@server/models/activitypub/actor'
+
+type Use<K extends keyof ActorFollowModel, M> = PickWith<ActorFollowModel, K, M>
+
+// ############################################################################
 
 export type MActorFollow = Omit<ActorFollowModel, 'ActorFollower' | 'ActorFollowing'>
 
+// ############################################################################
+
+export type MActorFollowFollowingHost = MActorFollow &
+  Use<'ActorFollowing', MActorUsername & MActorHost>
+
+// ############################################################################
+
+// With actors or actors default
+
 export type MActorFollowActors = MActorFollow &
-  PickWith<ActorFollowModel, 'ActorFollower', MActor> &
-  PickWith<ActorFollowModel, 'ActorFollowing', MActor>
+  Use<'ActorFollower', MActor> &
+  Use<'ActorFollowing', MActor>
 
 export type MActorFollowActorsDefault = MActorFollow &
-  PickWith<ActorFollowModel, 'ActorFollower', MActorDefault> &
-  PickWith<ActorFollowModel, 'ActorFollowing', MActorDefault>
-
-export type MActorFollowActorsDefaultSubscription = MActorFollow &
-  PickWith<ActorFollowModel, 'ActorFollower', MActorDefault> &
-  PickWith<ActorFollowModel, 'ActorFollowing', MActorDefault & MActorChannel>
+  Use<'ActorFollower', MActorDefault> &
+  Use<'ActorFollowing', MActorDefault>
 
 export type MActorFollowFull = MActorFollow &
-  PickWith<ActorFollowModel, 'ActorFollower', MActorAccountChannel> &
-  PickWith<ActorFollowModel, 'ActorFollowing', MActorAccountChannel>
+  Use<'ActorFollower', MActorAccountChannel> &
+  Use<'ActorFollowing', MActorAccountChannel>
 
-export type MActorFollowFollowingHost = MActorFollow &
-  PickWith<ActorFollowModel, 'ActorFollowing', MActorUsername & MActorHost>
+// ############################################################################
+
+// For subscriptions
+
+export type MActorFollowActorsDefaultSubscription = MActorFollow &
+  Use<'ActorFollower', MActorDefault> &
+  Use<'ActorFollowing', MActorDefault & MActorChannel>
+
+export type MActorFollowFollowingFullFollowerAccount = MActorFollow &
+  Use<'ActorFollower', MActorAccount> &
+  Use<'ActorFollowing', MActorAccountChannel>
 
 export type MActorFollowSubscriptions = MActorFollow &
-  PickWith<ActorFollowModel, 'ActorFollowing', MActorChannelAccount>
+  Use<'ActorFollowing', MActorChannelAccountActor>