refactor: add silent mode to fetchData to prevent loading state UI flickers during background updates
This commit is contained in:
@@ -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));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user