HEX
Server: LiteSpeed
System: Linux houston.panomity.com 6.8.0-100-generic #100-Ubuntu SMP PREEMPT_DYNAMIC Tue Jan 13 16:40:06 UTC 2026 x86_64
User: nudepix (1011)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //proc/self/root/tmp/voice2image_check_frontend/gallery-actions.js
(() => {
  const deletingIds = new Set();

  const parseError = async (response) => {
    const fallback = "Bild konnte nicht gelöscht werden.";
    try {
      const data = await response.json();
      return data.detail || fallback;
    } catch {
      return fallback;
    }
  };

  const deleteImage = async (imageId, button) => {
    const gallery = window.voice2imageGallery;
    if (!gallery || deletingIds.has(imageId)) return;

    const item = gallery.findItem(imageId);
    if (!item) return;

    deletingIds.add(imageId);
    button.disabled = true;
    button.setAttribute("aria-busy", "true");
    gallery.setStatus("Lösche Bild...", "busy");

    try {
      const response = await fetch(`/api/history/${encodeURIComponent(imageId)}`, {
        method: "DELETE",
      });

      if (!response.ok) {
        throw new Error(await parseError(response));
      }

      gallery.removeItem(imageId);
      gallery.setStatus("Bild gelöscht", "idle");
    } catch (err) {
      console.error(err);
      gallery.setStatus("Löschen fehlgeschlagen", "idle");
      alert(err.message || "Bild konnte nicht gelöscht werden.");
    } finally {
      deletingIds.delete(imageId);
      button.disabled = false;
      button.removeAttribute("aria-busy");
    }
  };

  document.addEventListener("click", (event) => {
    const button = event.target.closest("[data-delete-image-id]");
    if (!button) return;

    event.preventDefault();
    event.stopPropagation();
    deleteImage(button.dataset.deleteImageId, button);
  });
})();