unoffical wafrn mirror wafrn.net
atproto social-network activitypub
at angular21 39 lines 1.5 kB view raw
1import { object } from 'underscore' 2import { Follows, User } from '../../models/index.js' 3import { completeEnvironment } from '../backendOptions.js' 4import { activityPubObject } from '../../interfaces/fediverse/activityPubObject.js' 5import { postPetitionSigned } from './postPetitionSigned.js' 6 7async function acceptRemoteFollow(userId: string, remoteUserId: string) { 8 const localUser = await User.findByPk(userId) 9 const remoteUser = await User.findByPk(remoteUserId) 10 const followToBeAccepted = await Follows.findOne({ 11 where: { 12 followedId: userId, 13 followerId: remoteUserId 14 } 15 }) 16 17 if (localUser && remoteUser && followToBeAccepted) { 18 const apObj: activityPubObject = { 19 '@context': 'https://www.w3.org/ns/activitystreams', 20 actor: completeEnvironment.frontendUrl + '/fediverse/blog/' + localUser.url.toLowerCase(), 21 id: `${completeEnvironment.frontendUrl}/fediverse/accept/${encodeURIComponent( 22 followToBeAccepted.remoteFollowId 23 )}`, 24 type: 'Accept', 25 object: { 26 actor: remoteUser.remoteId, 27 id: followToBeAccepted.remoteFollowId, 28 object: completeEnvironment.frontendUrl + '/fediverse/blog/' + localUser.url.toLowerCase(), 29 type: 'Follow' 30 } 31 } 32 const response = await postPetitionSigned(apObj, localUser, remoteUser.remoteInbox) 33 followToBeAccepted.accepted = true 34 await followToBeAccepted.save() 35 return response 36 } 37} 38 39export { acceptRemoteFollow }