fixes
This commit is contained in:
@@ -580,6 +580,7 @@ const generateEOI = async (retryCount = 0) => {
|
||||
documentId: string | number;
|
||||
clientSigningUrl: string;
|
||||
signingLinks: Record<string, string>;
|
||||
documensoID?: string;
|
||||
}>('/api/email/generate-eoi-document', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
@@ -587,7 +588,9 @@ const generateEOI = async (retryCount = 0) => {
|
||||
},
|
||||
body: {
|
||||
interestId: props.interest.Id.toString()
|
||||
}
|
||||
},
|
||||
// Increase timeout to 60 seconds to handle slow Documenso API calls
|
||||
timeout: 60000
|
||||
});
|
||||
|
||||
if (response.success) {
|
||||
@@ -595,6 +598,13 @@ const generateEOI = async (retryCount = 0) => {
|
||||
? 'EOI already exists - signature links retrieved'
|
||||
: 'EOI generated successfully');
|
||||
|
||||
// Update local state immediately to show UI changes
|
||||
if (response.documensoID) {
|
||||
// Force update the hasGeneratedEOI computed by setting documentExists
|
||||
documentExists.value = true;
|
||||
documentValidated.value = true;
|
||||
}
|
||||
|
||||
emit('eoi-generated', { signingLinks: response.signingLinks });
|
||||
emit('update'); // Trigger parent to refresh data
|
||||
|
||||
@@ -608,15 +618,28 @@ const generateEOI = async (retryCount = 0) => {
|
||||
} catch (error: any) {
|
||||
console.error('Failed to generate EOI:', error);
|
||||
|
||||
// Retry logic
|
||||
if (retryCount < 3) {
|
||||
console.log(`Retrying EOI generation... Attempt ${retryCount + 2}/4`);
|
||||
await new Promise(resolve => setTimeout(resolve, (retryCount + 1) * 1000));
|
||||
// Check if it's a timeout error
|
||||
const isTimeoutError = error.code === 'ECONNABORTED' ||
|
||||
error.message?.includes('timeout') ||
|
||||
error.statusCode === 502 ||
|
||||
error.statusCode === 504;
|
||||
|
||||
// Retry logic with better handling for timeouts
|
||||
if (retryCount < 4 && (isTimeoutError || error.statusCode === 502)) {
|
||||
const waitTime = Math.min((retryCount + 1) * 2000, 8000); // Exponential backoff, max 8 seconds
|
||||
console.log(`Retrying EOI generation due to timeout... Attempt ${retryCount + 2}/5 (waiting ${waitTime}ms)`);
|
||||
toast.info(`Connection timeout. Retrying in ${waitTime/1000} seconds...`);
|
||||
await new Promise(resolve => setTimeout(resolve, waitTime));
|
||||
return generateEOI(retryCount + 1);
|
||||
}
|
||||
|
||||
// Show error message after all retries failed
|
||||
toast.error(error.data?.statusMessage || error.message || 'Failed to generate EOI after multiple attempts');
|
||||
const errorMessage = error.data?.statusMessage || error.message || 'Failed to generate EOI';
|
||||
if (isTimeoutError) {
|
||||
toast.error('The server is taking too long to respond. Please try again in a few moments.');
|
||||
} else {
|
||||
toast.error(errorMessage);
|
||||
}
|
||||
} finally {
|
||||
isGenerating.value = false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user