解决页面资源加载过慢问题
This commit is contained in:
@@ -21,7 +21,32 @@ import { gethistory, gethistoryItems, getOAuthList, asyncBatchUploadMaterial, up
|
||||
const { Search } = Input;
|
||||
const { Text } = Typography;
|
||||
|
||||
const usePageAllLoaded = (callback: () => void) => {
|
||||
const executedRef = React.useRef(false);
|
||||
useEffect(() => {
|
||||
if (executedRef.current) return;
|
||||
const handleLoad = () => {
|
||||
if (executedRef.current) return;
|
||||
executedRef.current = true;
|
||||
callback?.();
|
||||
};
|
||||
if (document.readyState === 'complete') {
|
||||
handleLoad();
|
||||
} else {
|
||||
window.addEventListener('load', handleLoad);
|
||||
}
|
||||
return () => {
|
||||
window.removeEventListener('load', handleLoad);
|
||||
};
|
||||
}, [callback]);
|
||||
};
|
||||
|
||||
const GeneratedRecord: React.FC = () => {
|
||||
const [isPageLoaded, setIsPageLoaded] = useState(false);
|
||||
usePageAllLoaded(() => {
|
||||
setIsPageLoaded(true);
|
||||
});
|
||||
|
||||
const [filterType, setFilterType] = useState<'project' | 'creation' | 'hot_opening_replicate' | 'shot_replicate'>('project');
|
||||
const [filterMedia, setFilterMedia] = useState<'video' | 'image'>('video');
|
||||
const [recordlist, setRecordList] = useState<any[]>([]);
|
||||
@@ -745,16 +770,8 @@ const GeneratedRecord: React.FC = () => {
|
||||
if (historySource) {
|
||||
parameters = `${selectedDate}?gen_type=${filterMedia}&history_source=${historySource}&page=${Pagebreak.page}&page_size=${Pagebreak.pageSize}`;
|
||||
}
|
||||
gethistoryItems(parameters).then(async (res: any) => {
|
||||
gethistoryItems(parameters).then((res: any) => {
|
||||
const data = Array.isArray(res) ? res : (res?.items || []);
|
||||
for (const item of data) {
|
||||
if (item.videoUrl && item.videoUrl.trim()) {
|
||||
const dimensions = await getVideoDimensions(item.videoUrl);
|
||||
if (dimensions) {
|
||||
item.imagePx = dimensions;
|
||||
}
|
||||
}
|
||||
}
|
||||
let recordList = [{
|
||||
generatedDate: res.generatedDate,
|
||||
items: data,
|
||||
@@ -766,6 +783,21 @@ const GeneratedRecord: React.FC = () => {
|
||||
} else {
|
||||
setRecordList([]);
|
||||
}
|
||||
if (isPageLoaded) {
|
||||
data.forEach(async (item: any) => {
|
||||
if (item.videoUrl && item.videoUrl.trim()) {
|
||||
const dimensions = await getVideoDimensions(item.videoUrl);
|
||||
if (dimensions) {
|
||||
setRecordList(prev => prev.map(group => ({
|
||||
...group,
|
||||
items: group.items.map((i: any) =>
|
||||
i.id === item.id ? { ...i, imagePx: dimensions } : i
|
||||
),
|
||||
})));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}).catch((err) => {
|
||||
}).finally(() => {
|
||||
setLoading(false);
|
||||
@@ -775,26 +807,34 @@ const GeneratedRecord: React.FC = () => {
|
||||
} finally {
|
||||
}
|
||||
} else {
|
||||
gethistory(parameters).then(async (res: any) => {
|
||||
gethistory(parameters).then((res: any) => {
|
||||
const data = Array.isArray(res) ? res : (res?.groups || []);
|
||||
for (const group of data) {
|
||||
data.forEach(group => {
|
||||
group.page = 1;
|
||||
for (const item of group.items) {
|
||||
if (item.videoUrl && item.videoUrl.trim()) {
|
||||
const dimensions = await getVideoDimensions(item.videoUrl);
|
||||
if (dimensions) {
|
||||
console.log(dimensions);
|
||||
item.imagePx = dimensions;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
if (Pagebreak.page === 1) {
|
||||
setRecordList(data);
|
||||
} else {
|
||||
setRecordList(prev => [...prev, ...data]);
|
||||
}
|
||||
setTotalnumber(res?.totalDays || 0);
|
||||
if (isPageLoaded) {
|
||||
data.forEach(group => {
|
||||
group.items.forEach(async (item: any) => {
|
||||
if (item.videoUrl && item.videoUrl.trim()) {
|
||||
const dimensions = await getVideoDimensions(item.videoUrl);
|
||||
if (dimensions) {
|
||||
setRecordList(prev => prev.map(g => ({
|
||||
...g,
|
||||
items: g.items.map((i: any) =>
|
||||
i.id === item.id ? { ...i, imagePx: dimensions } : i
|
||||
),
|
||||
})));
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}).catch((err) => {
|
||||
if (Pagebreak.page === 1) {
|
||||
setRecordList([]);
|
||||
|
||||
Reference in New Issue
Block a user