local addonName, addon = ...

addon.pullActive = false
addon.pullToken = 0

function addon:StartPull()
    local seconds = 10
    if CompactUtilityPanelDB and CompactUtilityPanelDB.pullCountdown then
        seconds = tonumber(CompactUtilityPanelDB.pullCountdown) or 10
    end

    C_PartyInfo.DoCountdown(seconds)

    self.pullActive = true

    -- Token erhoehen und einfangen: der verzoegerte Reset unten prueft ihn,
    -- bevor er den Button zuruecksetzt. So verhindern wir, dass ein alter
    -- Timer (von einem inzwischen manuell gestoppten oder neu gestarteten
    -- Pull) faelschlich den Button eines spaeteren Pulls zuruecksetzt.
    self.pullToken = (self.pullToken or 0) + 1
    local token = self.pullToken

    if self.pullButton and self.pullButton.text then
        self.pullButton.text:SetText("STOP")
    end

    C_Timer.After(seconds, function()
        if addon.pullActive and addon.pullToken == token then
            addon:StopPull()
        end
    end)
end

function addon:StopPull()
    C_PartyInfo.DoCountdown(0)

    self.pullActive = false

    -- Token auch hier erhoehen, damit ein noch laufender Timer aus
    -- StartPull() (z.B. bei manuellem Abbruch vor Ablauf) nichts mehr tut.
    self.pullToken = (self.pullToken or 0) + 1

    if self.pullButton and self.pullButton.text then
        self.pullButton.text:SetText("PULL")
    end
end
