send-follow.ts 1022 B

1234567891011121314151617181920212223242526272829303132333435
  1. import { Transaction } from 'sequelize'
  2. import { ActivityFollow } from '../../../../shared/models/activitypub'
  3. import { logger } from '../../../helpers/logger'
  4. import { MActor, MActorFollowActors } from '../../../types/models'
  5. import { unicastTo } from './utils'
  6. function sendFollow (actorFollow: MActorFollowActors, t: Transaction) {
  7. const me = actorFollow.ActorFollower
  8. const following = actorFollow.ActorFollowing
  9. // Same server as ours
  10. if (!following.serverId) return
  11. logger.info('Creating job to send follow request to %s.', following.url)
  12. const data = buildFollowActivity(actorFollow.url, me, following)
  13. t.afterCommit(() => unicastTo(data, me, following.inboxUrl))
  14. }
  15. function buildFollowActivity (url: string, byActor: MActor, targetActor: MActor): ActivityFollow {
  16. return {
  17. type: 'Follow',
  18. id: url,
  19. actor: byActor.url,
  20. object: targetActor.url
  21. }
  22. }
  23. // ---------------------------------------------------------------------------
  24. export {
  25. sendFollow,
  26. buildFollowActivity
  27. }