local DiscordLink
do
  local _class_0
  local _base_0 = {
    name = "DiscordLink",
    variableVersion = 1,
    defaults = {
      InviteCodes = { }
    },
    InitializeSavedVariables = function(self)
      self.savedVariables = ZO_SavedVars:NewAccountWide(self.name .. "Vars", self.variableVersion, nil, self.defaults)
      if not self.savedVariables.InviteCode then
        return
      end
      table.insert(self.savedVariables.InviteCodes, self.savedVariables.InviteCode)
      self.savedVariables.InviteCode = nil
    end,
    CreateCommands = function(self)
      for k, v in pairs(self.savedVariables.InviteCodes) do
        local _continue_0 = false
        repeat
          if v == nil or v == "" then
            _continue_0 = true
            break
          end
          SLASH_COMMANDS["/d" .. k] = function()
            return StartChatInput("https://discord.gg/" .. v)
          end
          _continue_0 = true
        until true
        if not _continue_0 then
          break
        end
      end
      SLASH_COMMANDS["/discord"] = function()
        if self.savedVariables.InviteCodes[1] == nil or self.savedVariables.InviteCodes[1] == "" then
          return d("Add an invite code to your addon settings first")
        end
        return SLASH_COMMANDS["/d1"]()
      end
    end,
    Initialize = function(self)
      self:CreateCommands()
      local LAM = LibAddonMenu2
      local panelName = self.name .. "Panel"
      local panelData = {
        type = "panel",
        name = "Discord Link",
        author = "@Jarva [EU]",
        registerForDefaults = true
      }
      local panel = LAM:RegisterAddonPanel(panelName, panelData)
      local optionsData = { }
      for i = 1, 5 do
        table.insert(optionsData, {
          type = "editbox",
          name = "Invite Code " .. i,
          getFunc = function()
            return self.savedVariables.InviteCodes[i]
          end,
          setFunc = function(value)
            self.savedVariables.InviteCodes[i] = value
            return self:CreateCommands()
          end
        })
      end
      return LAM:RegisterOptionControls(panelName, optionsData)
    end,
    onAddonLoaded = function(_, addonName)
      if addonName == DiscordLink.name then
        EVENT_MANAGER:UnregisterForEvent(DiscordLink.name, EVENT_ADD_ON_LOADED)
        DiscordLink:InitializeSavedVariables()
        return DiscordLink:Initialize()
      end
    end
  }
  _base_0.__index = _base_0
  _class_0 = setmetatable({
    __init = function() end,
    __base = _base_0,
    __name = "DiscordLink"
  }, {
    __index = _base_0,
    __call = function(cls, ...)
      local _self_0 = setmetatable({}, _base_0)
      cls.__init(_self_0, ...)
      return _self_0
    end
  })
  _base_0.__class = _class_0
  DiscordLink = _class_0
end
return EVENT_MANAGER:RegisterForEvent(DiscordLink.name, EVENT_ADD_ON_LOADED, DiscordLink.onAddonLoaded)