forked from rojo-rbx/rojo
Skip confirming patches that only contain a datamodel name change (#688)
Closes #672. Skips the user confirmation if the patch contains only a datamodel name change. I decided to build generic PatchSet utility functions in case we need to use similar logic in the future, in addition to maintaining clear division of duties. The app code shouldn't be too dependent upon patch internal structure when we can avoid it. --------- Co-authored-by: Kenneth Loeffler <kenloef@gmail.com>
This commit is contained in:
@@ -295,9 +295,28 @@ function App:startSession()
|
||||
|
||||
serveSession:setConfirmCallback(function(instanceMap, patch, serverInfo)
|
||||
if PatchSet.isEmpty(patch) then
|
||||
Log.trace("Accepting patch without confirmation because it is empty")
|
||||
return "Accept"
|
||||
end
|
||||
|
||||
-- The datamodel name gets overwritten by Studio, making confirmation of it intrusive
|
||||
-- and unnecessary. This special case allows it to be accepted without confirmation.
|
||||
if
|
||||
PatchSet.hasAdditions(patch) == false
|
||||
and PatchSet.hasRemoves(patch) == false
|
||||
and PatchSet.containsOnlyInstance(patch, instanceMap, game)
|
||||
then
|
||||
local datamodelUpdates = PatchSet.getUpdateForInstance(patch, instanceMap, game)
|
||||
if
|
||||
datamodelUpdates ~= nil
|
||||
and next(datamodelUpdates.changedProperties) == nil
|
||||
and datamodelUpdates.changedClassName == nil
|
||||
then
|
||||
Log.trace("Accepting patch without confirmation because it only contains a datamodel name change")
|
||||
return "Accept"
|
||||
end
|
||||
end
|
||||
|
||||
self:setState({
|
||||
appStatus = AppStatus.Confirming,
|
||||
confirmData = {
|
||||
|
||||
Reference in New Issue
Block a user