fix: Retry loading audio attachments

This commit is contained in:
Muhsin
2026-02-27 14:52:12 +04:00
parent 14b4c83dc6
commit 30f23fa70f
3 changed files with 34 additions and 9 deletions
@@ -3,6 +3,7 @@ import { ref } from 'vue';
export const useLoadWithRetry = (config = {}) => {
const maxRetry = config.max_retry || 3;
const backoff = config.backoff || 1000;
const mediaType = config.mediaType || 'image';
const isLoaded = ref(false);
const hasError = ref(false);
@@ -10,19 +11,23 @@ export const useLoadWithRetry = (config = {}) => {
const loadWithRetry = async url => {
const attemptLoad = () => {
return new Promise((resolve, reject) => {
const img = new Image();
img.onload = () => {
const onSuccess = () => {
isLoaded.value = true;
hasError.value = false;
resolve();
};
img.onerror = () => {
reject(new Error('Failed to load image'));
};
img.src = url;
let element;
if (mediaType === 'audio') {
element = new Audio();
element.preload = 'metadata';
element.onloadedmetadata = onSuccess;
} else {
element = new Image();
element.onload = onSuccess;
}
element.onerror = () => reject(new Error('Failed to load resource'));
element.src = url;
});
};