refactor: add silent mode to fetchData to prevent loading state UI flickers during background updates

This commit is contained in:
pradeepkumar
2026-04-04 21:02:08 +05:30
parent 1494bae703
commit 1c3014123f

View File

@@ -76,8 +76,8 @@ export default function SectionDetailPage() {
isRequired: false, isRequired: false,
}); });
const fetchData = useCallback(async () => { const fetchData = useCallback(async (silent = false) => {
setIsLoading(true); if (!silent) setIsLoading(true);
setError(''); setError('');
try { try {
const [sectionData, fieldsData, agentTypesData] = await Promise.all([ const [sectionData, fieldsData, agentTypesData] = await Promise.all([
@@ -171,7 +171,7 @@ export default function SectionDetailPage() {
try { try {
await profileFieldsService.create(fieldForm); await profileFieldsService.create(fieldForm);
closeFieldModal(); closeFieldModal();
fetchData(); fetchData(true);
} catch (err) { } catch (err) {
setModalError(getErrorMessage(err)); setModalError(getErrorMessage(err));
} finally { } finally {
@@ -192,7 +192,7 @@ export default function SectionDetailPage() {
} }
await profileFieldsService.update(selectedField.id, updatePayload); await profileFieldsService.update(selectedField.id, updatePayload);
closeFieldModal(); closeFieldModal();
fetchData(); fetchData(true);
} catch (err) { } catch (err) {
setModalError(getErrorMessage(err)); setModalError(getErrorMessage(err));
} finally { } finally {
@@ -207,7 +207,7 @@ export default function SectionDetailPage() {
try { try {
await profileFieldsService.delete(selectedField.id); await profileFieldsService.delete(selectedField.id);
closeFieldModal(); closeFieldModal();
fetchData(); fetchData(true);
} catch (err) { } catch (err) {
setModalError(getErrorMessage(err)); setModalError(getErrorMessage(err));
} finally { } finally {
@@ -274,7 +274,7 @@ export default function SectionDetailPage() {
const toggleFieldStatus = async (field: ProfileField) => { const toggleFieldStatus = async (field: ProfileField) => {
try { try {
await profileFieldsService.update(field.id, { isActive: !field.isActive }); await profileFieldsService.update(field.id, { isActive: !field.isActive });
fetchData(); fetchData(true);
} catch (err) { } catch (err) {
setError(getErrorMessage(err)); setError(getErrorMessage(err));
} }
@@ -316,7 +316,7 @@ export default function SectionDetailPage() {
isRequired: assignForm.isRequired, isRequired: assignForm.isRequired,
}); });
closeAssignModal(); closeAssignModal();
fetchData(); fetchData(true);
} catch (err) { } catch (err) {
setModalError(getErrorMessage(err)); setModalError(getErrorMessage(err));
} finally { } finally {
@@ -331,7 +331,7 @@ export default function SectionDetailPage() {
try { try {
await profileSectionsService.assignToAgentType(sectionId, assignForm); await profileSectionsService.assignToAgentType(sectionId, assignForm);
closeAssignModal(); closeAssignModal();
fetchData(); fetchData(true);
} catch (err) { } catch (err) {
setModalError(getErrorMessage(err)); setModalError(getErrorMessage(err));
} finally { } finally {
@@ -343,7 +343,7 @@ export default function SectionDetailPage() {
if (!confirm('Remove this section from the agent type?')) return; if (!confirm('Remove this section from the agent type?')) return;
try { try {
await profileSectionsService.removeFromAgentType(sectionId, agentTypeId); await profileSectionsService.removeFromAgentType(sectionId, agentTypeId);
fetchData(); fetchData(true);
} catch (err) { } catch (err) {
setError(getErrorMessage(err)); setError(getErrorMessage(err));
} }
@@ -352,7 +352,7 @@ export default function SectionDetailPage() {
const handleToggleGlobal = async (newIsGlobal: boolean) => { const handleToggleGlobal = async (newIsGlobal: boolean) => {
try { try {
await profileSectionsService.update(sectionId, { isGlobal: newIsGlobal }); await profileSectionsService.update(sectionId, { isGlobal: newIsGlobal });
fetchData(); fetchData(true);
} catch (err) { } catch (err) {
setError(getErrorMessage(err)); setError(getErrorMessage(err));
} }