Skip to content

Commit

Permalink
Handle strings and instances in patch removes for visualizer (rojo-rb…
Browse files Browse the repository at this point in the history
…x#713)

When an object is deleted in a patch, it is either represented with an
ID or an Instance. On initial sync, removals are instances since the map
does not contain those instances. Later removals of managed objects use
an ID. The patch visualizer only handled instances, so this fixes that.

Closes rojo-rbx#710.
  • Loading branch information
boatbomber authored Jul 8, 2023
1 parent 7a799ea commit 1f01776
Showing 1 changed file with 9 additions and 1 deletion.
10 changes: 9 additions & 1 deletion plugin/src/App/Components/PatchVisualizer/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ local Packages = Rojo.Packages
local Roact = require(Packages.Roact)
local Log = require(Packages.Log)

local Types = require(Plugin.Types)
local PatchSet = require(Plugin.PatchSet)
local decodeValue = require(Plugin.Reconciler.decodeValue)
local getProperty = require(Plugin.Reconciler.getProperty)
Expand Down Expand Up @@ -240,7 +241,14 @@ function PatchVisualizer:buildTree(patch, instanceMap)
})
end

for _, instance in patch.removed do
for _, idOrInstance in patch.removed do
local instance = if Types.RbxId(idOrInstance) then instanceMap.fromIds[idOrInstance] else idOrInstance
if not instance then
-- If we're viewing a past patch, the instance is already removed
-- and we therefore cannot get the tree for it anymore
continue
end

-- Gather ancestors from existing DOM
-- (note that they may have no ID if they're being removed as unknown)
local ancestry = {}
Expand Down

0 comments on commit 1f01776

Please sign in to comment.