@@ -23,7 +23,6 @@ def import!
2323 delete_components
2424 create_components
2525 create_scratch_component
26- create_scratch_assets
2726 delete_removed_media
2827 attach_media_if_needed
2928
@@ -68,20 +67,23 @@ def create_scratch_component
6867 component = components [ 0 ]
6968 return unless component &.fetch ( :extension , nil ) &.casecmp? ( 'sb3' )
7069
71- parsed_content = Sb3Parser . new ( component : component ) . parse . fetch ( :scratch_component ) . fetch ( :content )
72- raise ImportError , 'Scratch project content could not be parsed' if parsed_content . blank?
70+ parsed_content = Sb3Parser . new ( component : component ) . parse
71+ project_content = parsed_content . dig ( :scratch_component , :content )
72+ assets = parsed_content . dig ( :assets ) || [ ]
7373
74- project . scratch_component = ScratchComponent . new ( content : parsed_content )
75- end
74+ raise ImportError , 'Scratch project content could not be parsed' if project_content . blank?
7675
77- def create_scratch_assets
78- return unless project . scratch_project?
76+ project . scratch_component = ScratchComponent . new ( content : project_content )
77+ project . scratch_assets = assets . map { create_scratch_asset ( it ) }
78+ end
7979
80- component = components [ 0 ]
81- return unless component &.fetch ( :extension , nil ) &.casecmp? ( 'sb3' )
80+ def create_scratch_asset ( asset )
81+ filename = asset . dig ( :filename )
82+ io = asset . dig ( :io )
8283
83- parsed_assets = Sb3Parser . new ( component : component ) . parse . fetch ( :assets )
84- ScratchSb3AssetImporter . import_all ( parsed_assets )
84+ asset = ScratchAsset . new ( filename :, uploaded_user_id : nil )
85+ asset . file . attach ( io :, filename :)
86+ asset
8587 end
8688
8789 def delete_removed_media
0 commit comments