diff --git a/lua/bladw_announcement/client/admin_menu/cl_menu.lua b/lua/bladw_announcement/client/admin_menu/cl_menu.lua index 6da8559..3992c3f 100644 --- a/lua/bladw_announcement/client/admin_menu/cl_menu.lua +++ b/lua/bladw_announcement/client/admin_menu/cl_menu.lua @@ -124,7 +124,11 @@ local function OpenAAdminMenu() local len = EntryLen(msgEntry) local over = len > maxLen - if over then + -- retour du serveur (ex : annonce déjà en cours) sinon le warning de dépassement + if frame.sendFeedback and (frame.sendFeedbackUntil or 0) > SysTime() then + DrawWarning(0, h * 0.5 - 8, 16) + draw.SimpleText(frame.sendFeedback, "bladw_text_Medium", 24, h * 0.5, COL_WARN, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) + elseif over then DrawWarning(0, h * 0.5 - 8, 16) draw.SimpleText("Trop de caractères", "bladw_text_Medium", 24, h * 0.5, COL_RED, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER) end @@ -177,15 +181,30 @@ local function OpenAAdminMenu() return end + -- on envoie mais on NE ferme PAS : c'est la réponse serveur qui fermera si c'est publié, + -- comme ça si c'est refusé l'admin garde son texte net.Start("bladWSendAnnouncement") net.WriteString(selectedPreset) net.WriteString(titleEntry:GetValue()) net.WriteString(msgEntry:GetValue()) net.SendToServer() - - frame:Remove() end end +-- réponse du serveur après un envoi : publié -> on ferme, refusé -> on garde le menu + on dit pourquoi +net.Receive("bladWAnnouncementResult", function() + local ok = net.ReadBool() + local left = net.ReadUInt(8) + + if not IsValid(BladW_AdminMenu) then return end + + if ok then + BladW_AdminMenu:Remove() + else + BladW_AdminMenu.sendFeedback = left > 0 and ("Annonce déjà en cours (" .. left .. "s)") or "Envoi impossible" + BladW_AdminMenu.sendFeedbackUntil = SysTime() + 5 + end +end) + return OpenAAdminMenu