local iconDisplayDuration = 3

---@alias CItemInfo {name: string, icon: number, quantity: number, color: string}

---@param msg string
---@return CItemInfo, string | nil
GetItemInfo = function(msg)
	local itemInfo = { name = "", icon = 134400, quantity = 0, color = "" }
	local name = msg:match("h%[(.+)%]")
	if not name then return itemInfo, "No item name found" end
	local quantity = msg:match("x(%d+)") or 1
	itemInfo.name = name
	itemInfo.quantity = quantity

	if WeakAurasSaved.Cyka.ItemCache[name] then itemInfo.icon = WeakAurasSaved.Cyka.ItemCache[name].icon end
	local color = msg:match("cff(%w%w%w%w%w%w)") or "ffffff"
	itemInfo.color = color

	return itemInfo, nil
end

---@param msg string
---@param allstates allstates
DrawIcon = function(msg, allstates)
	local info, err = GetItemInfo(msg)
	if err then
		print(err)
		return
	end

	local formattedName = "\124cff" .. info.color .. "[" .. info.name .. "]\124r x" .. info.quantity
	allstates[#aura_env.allstates + 1] = {
		show = true,
		changed = true,
		index = GetTime(),
		resort = true,

		icon = info.icon,
		name = formattedName,

		progressType = "timed",
		expirationTime = GetTime() + iconDisplayDuration,
		duration = iconDisplayDuration,
		autoHide = true,
	}
end
