Files
rojo/plugin/src/init.server.lua
Lucien Greathouse e6c2f1c15d Cleaned up and polished session flow
- Sessions can now be restarted if they error
- Terminology is much easier to follow in the plugin
- More change cases are handled correctly
2019-01-03 15:23:23 -08:00

77 lines
1.9 KiB
Lua

if not plugin then
return
end
local Session = require(script.Session)
local Config = require(script.Config)
local Version = require(script.Version)
local Logging = require(script.Logging)
local DevSettings = require(script.DevSettings)
local function showUpgradeMessage(lastVersion)
local message = (
"Rojo detected an upgrade from version %s to version %s." ..
"\nMake sure you have also upgraded your server!" ..
"\n\nRojo plugin version %s is intended for use with server version %s."
):format(
Version.display(lastVersion), Version.display(Config.version),
Version.display(Config.version), Config.expectedServerVersionString
)
Logging.info(message)
end
--[[
Check if the user is using a newer version of Rojo than last time. If they
are, show them a reminder to make sure they check their server version.
]]
local function checkUpgrade()
-- When developing Rojo, there's no use in doing version checks
if DevSettings:isEnabled() then
return
end
local lastVersion = plugin:GetSetting("LastRojoVersion")
if lastVersion then
local wasUpgraded = Version.compare(Config.version, lastVersion) == 1
if wasUpgraded then
showUpgradeMessage(lastVersion)
end
end
plugin:SetSetting("LastRojoVersion", Config.version)
end
local function main()
local displayedVersion = DevSettings:isEnabled()
and Config.codename
or Version.display(Config.version)
Logging.trace("Rojo %s initialized", displayedVersion)
local toolbar = plugin:CreateToolbar("Rojo " .. displayedVersion)
local currentSession
-- TODO: More robust session tracking to handle errors
-- TODO: Icon!
toolbar:CreateButton("Connect", "Connect to Rojo Session", "")
.Click:Connect(function()
checkUpgrade()
if currentSession ~= nil then
Logging.warn("A session is already running!")
return
end
Logging.info("Started new session.")
currentSession = Session.new(function()
Logging.info("Session terminated.")
currentSession = nil
end)
end)
end
main()