ActivityPub visibility on send
This commit is contained in:
		
							parent
							
								
									ab701bb93e
								
							
						
					
					
						commit
						f079041827
					
				|  | @ -50,9 +50,21 @@ export default async function renderNote(note: INote, dive = true): Promise<any> | |||
| 		? note.mentionedRemoteUsers.map(x => x.uri) | ||||
| 		: []; | ||||
| 
 | ||||
| 	const cc = ['public', 'home', 'followers'].includes(note.visibility) | ||||
| 		? [`${attributedTo}/followers`].concat(mentions) | ||||
| 		: []; | ||||
| 	let to: string[] = []; | ||||
| 	let cc: string[] = []; | ||||
| 
 | ||||
| 	if (note.visibility == 'public') { | ||||
| 		to = ['https://www.w3.org/ns/activitystreams#Public']; | ||||
| 		cc = [`${attributedTo}/followers`].concat(mentions); | ||||
| 	} else if (note.visibility == 'home') { | ||||
| 		to = [`${attributedTo}/followers`]; | ||||
| 		cc = ['https://www.w3.org/ns/activitystreams#Public'].concat(mentions); | ||||
| 	} else if (note.visibility == 'followers') { | ||||
| 		to = [`${attributedTo}/followers`]; | ||||
| 		cc = mentions; | ||||
| 	} else { | ||||
| 		to = mentions; | ||||
| 	} | ||||
| 
 | ||||
| 	const mentionedUsers = note.mentions ? await User.find({ | ||||
| 		_id: { | ||||
|  | @ -74,7 +86,7 @@ export default async function renderNote(note: INote, dive = true): Promise<any> | |||
| 		summary: note.cw, | ||||
| 		content: toHtml(note), | ||||
| 		published: note.createdAt.toISOString(), | ||||
| 		to: 'https://www.w3.org/ns/activitystreams#Public', | ||||
| 		to, | ||||
| 		cc, | ||||
| 		inReplyTo, | ||||
| 		attachment: (await promisedFiles).map(renderDocument), | ||||
|  |  | |||
|  | @ -19,6 +19,8 @@ export default async (user: ILocalUser) => { | |||
| 		id, | ||||
| 		inbox: `${id}/inbox`, | ||||
| 		outbox: `${id}/outbox`, | ||||
| 		followers: `${id}/followers`, | ||||
| 		following: `${id}/following`, | ||||
| 		sharedInbox: `${config.url}/inbox`, | ||||
| 		url: `${config.url}/@${user.username}`, | ||||
| 		preferredUsername: user.username, | ||||
|  |  | |||
|  | @ -89,6 +89,48 @@ router.get('/users/:user/outbox', async ctx => { | |||
| 	ctx.body = pack(rendered); | ||||
| }); | ||||
| 
 | ||||
| // followers
 | ||||
| router.get('/users/:user/followers', async ctx => { | ||||
| 	const userId = new mongo.ObjectID(ctx.params.user); | ||||
| 
 | ||||
| 	const user = await User.findOne({ | ||||
| 		_id: userId, | ||||
| 		host: null | ||||
| 	}); | ||||
| 
 | ||||
| 	if (user === null) { | ||||
| 		ctx.status = 404; | ||||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: Implement fetch and render
 | ||||
| 
 | ||||
| 	const rendered = renderOrderedCollection(`${config.url}/users/${userId}/followers`, 0, []); | ||||
| 
 | ||||
| 	ctx.body = pack(rendered); | ||||
| }); | ||||
| 
 | ||||
| // following
 | ||||
| router.get('/users/:user/following', async ctx => { | ||||
| 	const userId = new mongo.ObjectID(ctx.params.user); | ||||
| 
 | ||||
| 	const user = await User.findOne({ | ||||
| 		_id: userId, | ||||
| 		host: null | ||||
| 	}); | ||||
| 
 | ||||
| 	if (user === null) { | ||||
| 		ctx.status = 404; | ||||
| 		return; | ||||
| 	} | ||||
| 
 | ||||
| 	// TODO: Implement fetch and render
 | ||||
| 
 | ||||
| 	const rendered = renderOrderedCollection(`${config.url}/users/${userId}/following`, 0, []); | ||||
| 
 | ||||
| 	ctx.body = pack(rendered); | ||||
| }); | ||||
| 
 | ||||
| // publickey
 | ||||
| router.get('/users/:user/publickey', async ctx => { | ||||
| 	const userId = new mongo.ObjectID(ctx.params.user); | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue