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) |                 .where(*where) | ||||||
|                 .options( |                 .options( | ||||||
|                     joinedload(models.Notification.actor), |                     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.Notification.outbox_object).options( | ||||||
|                         joinedload( |                         joinedload( | ||||||
|                             models.OutboxObject.outbox_object_attachments |                             models.OutboxObject.outbox_object_attachments | ||||||
|  |  | ||||||
|  | @ -1371,6 +1371,13 @@ async def _handle_move_activity( | ||||||
|     else: |     else: | ||||||
|         logger.info(f"Already following target {new_actor_id}") |         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( | async def _handle_update_activity( | ||||||
|     db_session: AsyncSession, |     db_session: AsyncSession, | ||||||
|  |  | ||||||
|  | @ -537,6 +537,8 @@ class NotificationType(str, enum.Enum): | ||||||
|     FOLLOW_REQUEST_ACCEPTED = "follow_request_accepted" |     FOLLOW_REQUEST_ACCEPTED = "follow_request_accepted" | ||||||
|     FOLLOW_REQUEST_REJECTED = "follow_request_rejected" |     FOLLOW_REQUEST_REJECTED = "follow_request_rejected" | ||||||
| 
 | 
 | ||||||
|  |     MOVE = "move" | ||||||
|  | 
 | ||||||
|     LIKE = "like" |     LIKE = "like" | ||||||
|     UNDO_LIKE = "undo_like" |     UNDO_LIKE = "undo_like" | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -36,6 +36,14 @@ | ||||||
|             {%- elif notif.notification_type.value == "follow_request_rejected" %} |             {%- elif notif.notification_type.value == "follow_request_rejected" %} | ||||||
|                 {{ notif_actor_action(notif, "rejected your follow request") }} |                 {{ notif_actor_action(notif, "rejected your follow request") }} | ||||||
|                 {{ utils.display_actor(notif.actor, actors_metadata) }} |                 {{ 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" %} |             {% elif notif.notification_type.value == "like" %} | ||||||
|                 {{ notif_actor_action(notif, "liked a post", with_icon=True) }} |                 {{ notif_actor_action(notif, "liked a post", with_icon=True) }} | ||||||
|                 {{ utils.display_object(notif.outbox_object) }} |                 {{ utils.display_object(notif.outbox_object) }} | ||||||
|  |  | ||||||
|  | @ -414,3 +414,12 @@ def test_inbox__move_activity( | ||||||
|         ) |         ) | ||||||
|         == 1 |         == 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