improve reliability
This commit is contained in:
parent
8eb7fdd90f
commit
da6f5a3cfc
1 changed files with 21 additions and 30 deletions
|
@ -2122,7 +2122,6 @@ declare global {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
const form = e.target as HTMLFormElement;
|
const form = e.target as HTMLFormElement;
|
||||||
// Get the submit and cancel buttons from the modal-action div
|
|
||||||
const modalAction = document.querySelector(".modal-action");
|
const modalAction = document.querySelector(".modal-action");
|
||||||
const submitButton = modalAction?.querySelector(
|
const submitButton = modalAction?.querySelector(
|
||||||
".btn-primary"
|
".btn-primary"
|
||||||
|
@ -2136,8 +2135,17 @@ declare global {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Store original button content
|
||||||
const originalText = submitButton.innerHTML;
|
const originalText = submitButton.innerHTML;
|
||||||
|
|
||||||
|
// Immediately disable buttons and show loading state
|
||||||
|
submitButton.disabled = true;
|
||||||
|
cancelButton.disabled = true;
|
||||||
|
submitButton.innerHTML = `
|
||||||
|
<span class="loading loading-spinner loading-sm"></span>
|
||||||
|
Saving...
|
||||||
|
`;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const formData = new FormData(form);
|
const formData = new FormData(form);
|
||||||
const eventId = (
|
const eventId = (
|
||||||
|
@ -2147,15 +2155,6 @@ declare global {
|
||||||
// Get files from storage
|
// Get files from storage
|
||||||
const selectedFiles = Array.from(selectedFileStorage.values());
|
const selectedFiles = Array.from(selectedFileStorage.values());
|
||||||
|
|
||||||
// Disable buttons and show loading state
|
|
||||||
submitButton.disabled = true;
|
|
||||||
cancelButton.disabled = true;
|
|
||||||
submitButton.innerHTML = `
|
|
||||||
<div class="flex items-center gap-2">
|
|
||||||
<span class="loading loading-spinner loading-sm"></span>
|
|
||||||
<span>Saving...</span>
|
|
||||||
</div>
|
|
||||||
`;
|
|
||||||
window.showLoading?.();
|
window.showLoading?.();
|
||||||
|
|
||||||
// Prepare event data
|
// Prepare event data
|
||||||
|
@ -2181,10 +2180,8 @@ declare global {
|
||||||
if (eventId) {
|
if (eventId) {
|
||||||
// Update existing event
|
// Update existing event
|
||||||
submitButton.innerHTML = `
|
submitButton.innerHTML = `
|
||||||
<div class="flex items-center gap-2">
|
<span class="loading loading-spinner loading-sm"></span>
|
||||||
<span class="loading loading-spinner loading-sm"></span>
|
Updating event...
|
||||||
<span>Updating event...</span>
|
|
||||||
</div>
|
|
||||||
`;
|
`;
|
||||||
updatedEvent = await update.updateFields(
|
updatedEvent = await update.updateFields(
|
||||||
"events",
|
"events",
|
||||||
|
@ -2195,10 +2192,8 @@ declare global {
|
||||||
// Handle file uploads if any
|
// Handle file uploads if any
|
||||||
if (selectedFiles.length > 0) {
|
if (selectedFiles.length > 0) {
|
||||||
submitButton.innerHTML = `
|
submitButton.innerHTML = `
|
||||||
<div class="flex items-center gap-2">
|
<span class="loading loading-spinner loading-sm"></span>
|
||||||
<span class="loading loading-spinner loading-sm"></span>
|
Uploading files (0/${selectedFiles.length})...
|
||||||
<span>Uploading files (0/${selectedFiles.length})...</span>
|
|
||||||
</div>
|
|
||||||
`;
|
`;
|
||||||
await fileManager.appendFiles(
|
await fileManager.appendFiles(
|
||||||
"events",
|
"events",
|
||||||
|
@ -2216,10 +2211,8 @@ declare global {
|
||||||
} else {
|
} else {
|
||||||
// Create new event
|
// Create new event
|
||||||
submitButton.innerHTML = `
|
submitButton.innerHTML = `
|
||||||
<div class="flex items-center gap-2">
|
<span class="loading loading-spinner loading-sm"></span>
|
||||||
<span class="loading loading-spinner loading-sm"></span>
|
Creating event...
|
||||||
<span>Creating event...</span>
|
|
||||||
</div>
|
|
||||||
`;
|
`;
|
||||||
const pb = auth.getPocketBase();
|
const pb = auth.getPocketBase();
|
||||||
const newEvent = await pb
|
const newEvent = await pb
|
||||||
|
@ -2229,10 +2222,8 @@ declare global {
|
||||||
// Handle file uploads if any
|
// Handle file uploads if any
|
||||||
if (selectedFiles.length > 0) {
|
if (selectedFiles.length > 0) {
|
||||||
submitButton.innerHTML = `
|
submitButton.innerHTML = `
|
||||||
<div class="flex items-center gap-2">
|
<span class="loading loading-spinner loading-sm"></span>
|
||||||
<span class="loading loading-spinner loading-sm"></span>
|
Uploading files (0/${selectedFiles.length})...
|
||||||
<span>Uploading files (0/${selectedFiles.length})...</span>
|
|
||||||
</div>
|
|
||||||
`;
|
`;
|
||||||
await fileManager.uploadFiles(
|
await fileManager.uploadFiles(
|
||||||
"events",
|
"events",
|
||||||
|
@ -2291,10 +2282,10 @@ declare global {
|
||||||
<div class="flex items-center gap-2 text-error">
|
<div class="flex items-center gap-2 text-error">
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 20 20" fill="currentColor">
|
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 20 20" fill="currentColor">
|
||||||
<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z" clip-rule="evenodd"/>
|
<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z" clip-rule="evenodd"/>
|
||||||
</svg>
|
</svg>
|
||||||
<span>Failed</span>
|
<span>Failed</span>
|
||||||
</div>
|
</div>
|
||||||
`;
|
`;
|
||||||
await new Promise((resolve) => setTimeout(resolve, 2000));
|
await new Promise((resolve) => setTimeout(resolve, 2000));
|
||||||
// Show detailed error to user
|
// Show detailed error to user
|
||||||
alert("Failed to save event. Please try again.");
|
alert("Failed to save event. Please try again.");
|
||||||
|
|
Loading…
Reference in a new issue