This repository was archived by the owner on Apr 26, 2024. It is now read-only.
  
  
  
  
  
Description
If a room upgrade is performed on a space then the type field from the content will be lost.
We seem to pull across the m.federate content:
  
  
    
        
          |  | # Get old room's create event | 
        
          |  | old_room_create_event = await self.store.get_create_event_for_room(old_room_id) | 
        
          |  |  | 
        
          |  | # Check if the create event specified a non-federatable room | 
        
          |  | if not old_room_create_event.content.get("m.federate", True): | 
        
          |  | # If so, mark the new room as non-federatable as well | 
        
          |  | creation_content["m.federate"] = False | 
    
   
 
But I wonder if we should start with the old event's content and then splat room_version and predecessor on top of it?
The spec is a bit vague, but seems to imply we shouldn't even be copying m.federate:
Creates a replacement room with a m.room.create event containing a predecessor field and the applicable room_version.
We also will want to copy the m.space.child and m.space.parent events from the space. It is unclear what we would do with the m.space.parent events in rooms that point to the space.
This might need an MSC for discussion, or might just be an implementation detail.