Add new notification type for Move activities
This commit is contained in:
		
							parent
							
								
									032632c4dc
								
							
						
					
					
						commit
						333fa5dc40
					
				
					 5 changed files with 29 additions and 1 deletions
				
			
		|  | @ -682,7 +682,9 @@ async def get_notifications( | |||
|                 .where(*where) | ||||
|                 .options( | ||||
|                     joinedload(models.Notification.actor), | ||||
|                     joinedload(models.Notification.inbox_object), | ||||
|                     joinedload(models.Notification.inbox_object).options( | ||||
|                         joinedload(models.InboxObject.actor) | ||||
|                     ), | ||||
|                     joinedload(models.Notification.outbox_object).options( | ||||
|                         joinedload( | ||||
|                             models.OutboxObject.outbox_object_attachments | ||||
|  |  | |||
|  | @ -1371,6 +1371,13 @@ async def _handle_move_activity( | |||
|     else: | ||||
|         logger.info(f"Already following target {new_actor_id}") | ||||
| 
 | ||||
|     notif = models.Notification( | ||||
|         notification_type=models.NotificationType.MOVE, | ||||
|         actor_id=new_actor.id, | ||||
|         inbox_object_id=move_activity.id, | ||||
|     ) | ||||
|     db_session.add(notif) | ||||
| 
 | ||||
| 
 | ||||
| async def _handle_update_activity( | ||||
|     db_session: AsyncSession, | ||||
|  |  | |||
|  | @ -537,6 +537,8 @@ class NotificationType(str, enum.Enum): | |||
|     FOLLOW_REQUEST_ACCEPTED = "follow_request_accepted" | ||||
|     FOLLOW_REQUEST_REJECTED = "follow_request_rejected" | ||||
| 
 | ||||
|     MOVE = "move" | ||||
| 
 | ||||
|     LIKE = "like" | ||||
|     UNDO_LIKE = "undo_like" | ||||
| 
 | ||||
|  |  | |||
|  | @ -36,6 +36,14 @@ | |||
|             {%- elif notif.notification_type.value == "follow_request_rejected" %} | ||||
|                 {{ notif_actor_action(notif, "rejected your follow request") }} | ||||
|                 {{ utils.display_actor(notif.actor, actors_metadata) }} | ||||
|             {%- elif notif.notification_type.value == "move" %} | ||||
|                 {# for move notif, the actor is the target and the inbox object the Move activity #} | ||||
|                 <div class="actor-action"> | ||||
|                     <a href="{{ url_for("admin_profile") }}?actor_id={{ notif.inbox_object.actor.ap_id }}"> | ||||
|                         {{ utils.display_tiny_actor_icon(notif.inbox_object.actor) }} {{ notif.inbox_object.actor.display_name | clean_html(notif.inbox_object.actor) | safe }}</a> has moved to | ||||
|                     <span title="{{ notif.created_at.isoformat() }}">{{ notif.created_at | timeago }}</span> | ||||
|                 </div> | ||||
|                 {{ utils.display_actor(notif.actor) }} | ||||
|             {% elif notif.notification_type.value == "like" %} | ||||
|                 {{ notif_actor_action(notif, "liked a post", with_icon=True) }} | ||||
|                 {{ utils.display_object(notif.outbox_object) }} | ||||
|  |  | |||
|  | @ -414,3 +414,12 @@ def test_inbox__move_activity( | |||
|         ) | ||||
|         == 1 | ||||
|     ) | ||||
| 
 | ||||
|     # And a notification was created | ||||
|     notif = db.execute( | ||||
|         select(models.Notification).where( | ||||
|             models.Notification.notification_type == models.NotificationType.MOVE | ||||
|         ) | ||||
|     ).scalar_one() | ||||
|     assert notif.actor.ap_id == new_ra.ap_id | ||||
|     assert notif.inbox_object_id == inbox_activity.id | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue