actor-follow.ts 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import { ActorFollowModel } from '../../../models/activitypub/actor-follow'
  2. import {
  3. MActor,
  4. MActorChannelAccountActor,
  5. MActorDefault,
  6. MActorDefaultAccountChannel,
  7. MActorFormattable,
  8. MActorHost,
  9. MActorUsername
  10. } from './actor'
  11. import { PickWith } from '../../utils'
  12. import { ActorModel } from '@server/models/activitypub/actor'
  13. import { MChannelDefault } from '../video/video-channels'
  14. type Use<K extends keyof ActorFollowModel, M> = PickWith<ActorFollowModel, K, M>
  15. // ############################################################################
  16. export type MActorFollow = Omit<ActorFollowModel, 'ActorFollower' | 'ActorFollowing'>
  17. // ############################################################################
  18. export type MActorFollowFollowingHost = MActorFollow &
  19. Use<'ActorFollowing', MActorUsername & MActorHost>
  20. // ############################################################################
  21. // With actors or actors default
  22. export type MActorFollowActors = MActorFollow &
  23. Use<'ActorFollower', MActor> &
  24. Use<'ActorFollowing', MActor>
  25. export type MActorFollowActorsDefault = MActorFollow &
  26. Use<'ActorFollower', MActorDefault> &
  27. Use<'ActorFollowing', MActorDefault>
  28. export type MActorFollowFull = MActorFollow &
  29. Use<'ActorFollower', MActorDefaultAccountChannel> &
  30. Use<'ActorFollowing', MActorDefaultAccountChannel>
  31. // ############################################################################
  32. // For subscriptions
  33. type SubscriptionFollowing = MActorDefault &
  34. PickWith<ActorModel, 'VideoChannel', MChannelDefault>
  35. export type MActorFollowActorsDefaultSubscription = MActorFollow &
  36. Use<'ActorFollower', MActorDefault> &
  37. Use<'ActorFollowing', SubscriptionFollowing>
  38. export type MActorFollowSubscriptions = MActorFollow &
  39. Use<'ActorFollowing', MActorChannelAccountActor>
  40. // ############################################################################
  41. // Format for API or AP object
  42. export type MActorFollowFormattable = Pick<MActorFollow, 'id' | 'score' | 'state' | 'createdAt' | 'updatedAt'> &
  43. Use<'ActorFollower', MActorFormattable> &
  44. Use<'ActorFollowing', MActorFormattable>