WIP: Epiphany Refactor (#85)

This commit is contained in:
Lucien Greathouse
2018-08-26 01:03:53 -07:00
committed by GitHub
parent 80b9b7594b
commit 72bc77f1d5
52 changed files with 1145 additions and 2157 deletions

View File

@@ -11,57 +11,7 @@ function Session.new()
setmetatable(self, Session)
local function createFoldersUntil(location, route)
for i = 1, #route - 1 do
local piece = route[i]
local child = location:FindFirstChild(piece)
if child == nil then
child = Instance.new("Folder")
child.Name = piece
child.Parent = location
end
location = child
end
return location
end
local function reify(instancesById, id)
local object = instancesById[tostring(id)]
local instance = Instance.new(object.className)
instance.Name = object.name
for key, property in pairs(object.properties) do
instance[key] = property.value
end
for _, childId in ipairs(object.children) do
reify(instancesById, childId).Parent = instance
end
return instance
end
local api
local function readAll()
print("Reading all...")
return api:readAll()
:andThen(function(response)
for partitionName, partitionRoute in pairs(api.partitionRoutes) do
local parent = createFoldersUntil(game, partitionRoute)
local rootInstanceId = response.partitionInstances[partitionName]
print("Root for", partitionName, "is", rootInstanceId)
reify(response.instances, rootInstanceId).Parent = parent
end
end)
end
api = ApiContext.new(REMOTE_URL, function(message)
if message.type == "InstanceChanged" then
@@ -73,7 +23,9 @@ function Session.new()
end)
api:connect()
:andThen(readAll)
:andThen(function()
return api:read({api.rootInstanceId})
end)
:andThen(function()
return api:retrieveMessages()
end)