Fix hydration patch incorrectly comparing properties

This commit is contained in:
Lucien Greathouse
2019-11-15 15:42:11 -08:00
parent 2467004dc2
commit 3c3359999c
2 changed files with 6 additions and 2 deletions

View File

@@ -5,6 +5,7 @@
local RbxDom = require(script.Parent.Parent.RbxDom)
local t = require(script.Parent.Parent.t)
local Log = require(script.Parent.Parent.Log)
local InstanceMap = require(script.Parent.InstanceMap)
local Types = require(script.Parent.Types)
@@ -302,6 +303,7 @@ function Reconciler:__hydrateInternal(apiInstances, id, instance, hydratePatch)
local decodedValue = self:__decodeApiValue(virtualValue)
if existingValue ~= decodedValue then
Log.warn("Diff! {:?} vs {:?}", existingValue, decodedValue)
changedProperties[propertyName] = virtualValue
end
end

View File

@@ -18,9 +18,11 @@ local function getCanonincalProperty(instance, propertyName)
return false, "unreadable property"
end
local success, err = descriptor:read(instance)
local success, valueOrErr = descriptor:read(instance)
if not success then
local err = valueOrErr
-- If we don't have permission to read a property, we can chalk that up
-- to our database being out of date and the engine being right.
if err.kind == RbxDom.Error.Kind.Roblox and err.extra:find("lacking permission") then
@@ -31,7 +33,7 @@ local function getCanonincalProperty(instance, propertyName)
error(message, 2)
end
return true
return true, valueOrErr
end
return getCanonincalProperty