Skip to content

Commit

Permalink
chore(Home): Avoid firing API requests when a custom Home is used
Browse files Browse the repository at this point in the history
  • Loading branch information
Vitor-Avila committed Jul 4, 2024
1 parent a31f6e6 commit 2cfc414
Showing 1 changed file with 81 additions and 92 deletions.
173 changes: 81 additions & 92 deletions superset-frontend/src/pages/Home/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -217,100 +217,89 @@ function Welcome({ user, addDangerToast }: WelcomeProps) {
];
}, []);

if (!WelcomeTopExtension && !WelcomeMainExtension) {
useEffect(() => {
if (!otherTabFilters) {
return;
}
const activeTab = getItem(LocalStorageKeys.HomepageActivityFilter, null);
setActiveState(
collapseState.length > 0 ? collapseState : DEFAULT_TAB_ARR,
useEffect(() => {
if (!otherTabFilters || (WelcomeTopExtension && WelcomeMainExtension)) {
return;
}
const activeTab = getItem(LocalStorageKeys.HomepageActivityFilter, null);
setActiveState(collapseState.length > 0 ? collapseState : DEFAULT_TAB_ARR);
getRecentActivityObjs(user.userId!, recent, addDangerToast, otherTabFilters)
.then(res => {
const data: ActivityData | null = {};
data[TableTab.Other] = res.other;
if (res.viewed) {
const filtered = reject(res.viewed, ['item_url', null]).map(r => r);
data[TableTab.Viewed] = filtered;
if (!activeTab && data[TableTab.Viewed]) {
setActiveChild(TableTab.Viewed);
} else if (!activeTab && !data[TableTab.Viewed]) {
setActiveChild(TableTab.Created);
} else setActiveChild(activeTab || TableTab.Created);
} else if (!activeTab) setActiveChild(TableTab.Created);
else setActiveChild(activeTab);
setActivityData(activityData => ({ ...activityData, ...data }));
})
.catch(
createErrorHandler((errMsg: unknown) => {
setActivityData(activityData => ({
...activityData,
[TableTab.Viewed]: [],
}));
addDangerToast(
t('There was an issue fetching your recent activity: %s', errMsg),
);
}),
);
getRecentActivityObjs(
user.userId!,
recent,
addDangerToast,
otherTabFilters,
)
.then(res => {
const data: ActivityData | null = {};
data[TableTab.Other] = res.other;
if (res.viewed) {
const filtered = reject(res.viewed, ['item_url', null]).map(r => r);
data[TableTab.Viewed] = filtered;
if (!activeTab && data[TableTab.Viewed]) {
setActiveChild(TableTab.Viewed);
} else if (!activeTab && !data[TableTab.Viewed]) {
setActiveChild(TableTab.Created);
} else setActiveChild(activeTab || TableTab.Created);
} else if (!activeTab) setActiveChild(TableTab.Created);
else setActiveChild(activeTab);
setActivityData(activityData => ({ ...activityData, ...data }));
})
.catch(
createErrorHandler((errMsg: unknown) => {
setActivityData(activityData => ({
...activityData,
[TableTab.Viewed]: [],
}));
addDangerToast(
t('There was an issue fetching your recent activity: %s', errMsg),
);
}),
);

// Sets other activity data in parallel with recents api call
const ownSavedQueryFilters = [
{
col: 'created_by',
opr: 'rel_o_m',
value: `${id}`,
},
];
Promise.all([
getUserOwnedObjects(id, 'dashboard')
.then(r => {
setDashboardData(r);
return Promise.resolve();
})
.catch((err: unknown) => {
setDashboardData([]);
addDangerToast(
t('There was an issue fetching your dashboards: %s', err),
);
return Promise.resolve();
}),
getUserOwnedObjects(id, 'chart')
.then(r => {
setChartData(r);
return Promise.resolve();
})
.catch((err: unknown) => {
setChartData([]);
addDangerToast(
t('There was an issue fetching your chart: %s', err),
);
return Promise.resolve();
}),
canReadSavedQueries
? getUserOwnedObjects(id, 'saved_query', ownSavedQueryFilters)
.then(r => {
setQueryData(r);
return Promise.resolve();
})
.catch((err: unknown) => {
setQueryData([]);
addDangerToast(
t('There was an issue fetching your saved queries: %s', err),
);
return Promise.resolve();
})
: Promise.resolve(),
]).then(() => {
setIsFetchingActivityData(false);
});
}, [otherTabFilters]);
}
// Sets other activity data in parallel with recents api call
const ownSavedQueryFilters = [
{
col: 'created_by',
opr: 'rel_o_m',
value: `${id}`,
},
];
Promise.all([
getUserOwnedObjects(id, 'dashboard')
.then(r => {
setDashboardData(r);
return Promise.resolve();
})
.catch((err: unknown) => {
setDashboardData([]);
addDangerToast(
t('There was an issue fetching your dashboards: %s', err),
);
return Promise.resolve();
}),
getUserOwnedObjects(id, 'chart')
.then(r => {
setChartData(r);
return Promise.resolve();
})
.catch((err: unknown) => {
setChartData([]);
addDangerToast(t('There was an issue fetching your chart: %s', err));
return Promise.resolve();
}),
canReadSavedQueries
? getUserOwnedObjects(id, 'saved_query', ownSavedQueryFilters)
.then(r => {
setQueryData(r);
return Promise.resolve();
})
.catch((err: unknown) => {
setQueryData([]);
addDangerToast(
t('There was an issue fetching your saved queries: %s', err),
);
return Promise.resolve();
})
: Promise.resolve(),
]).then(() => {
setIsFetchingActivityData(false);
});
}, [otherTabFilters]);

const handleToggle = () => {
setChecked(!checked);
Expand Down

0 comments on commit 2cfc414

Please sign in to comment.