Added more cache checks.

This commit is contained in:
Mike Cao 2023-10-08 00:15:29 -07:00
parent ef9f8ed816
commit 83fb358355
9 changed files with 22 additions and 18 deletions

View File

@ -5,14 +5,10 @@ import useFilterQuery from 'components/hooks/useFilterQuery';
import DataTable from 'components/common/DataTable'; import DataTable from 'components/common/DataTable';
import useCache from 'store/cache'; import useCache from 'store/cache';
function useReports() { export default function ReportsDataTable() {
const { get } = useApi(); const { get } = useApi();
const modified = useCache(state => state?.reports); const modified = useCache(state => state?.reports);
return useFilterQuery(['reports', modified], params => get(`/reports`, params)); const queryResult = useFilterQuery(['reports', { modified }], params => get(`/reports`, params));
}
export default function ReportsDataTable() {
const queryResult = useReports();
return ( return (
<DataTable queryResult={queryResult}> <DataTable queryResult={queryResult}>

View File

@ -21,7 +21,7 @@ export function TeamJoinForm({ onSave, onClose }) {
const handleSubmit = async data => { const handleSubmit = async data => {
mutate(data, { mutate(data, {
onSuccess: async () => { onSuccess: async () => {
setValue('teams', Date.now()); setValue('teams:members', Date.now());
onSave?.(); onSave?.();
onClose?.(); onClose?.();
}, },

View File

@ -7,7 +7,7 @@ import useCache from 'store/cache';
export function TeamsDataTable() { export function TeamsDataTable() {
const { get } = useApi(); const { get } = useApi();
const modified = useCache(state => state?.websites); const modified = useCache(state => state?.teams);
const queryResult = useFilterQuery(['teams', { modified }], params => { const queryResult = useFilterQuery(['teams', { modified }], params => {
return get(`/teams`, { return get(`/teams`, {
...params, ...params,

View File

@ -1,6 +1,7 @@
import useApi from 'components/hooks/useApi'; import useApi from 'components/hooks/useApi';
import useMessages from 'components/hooks/useMessages'; import useMessages from 'components/hooks/useMessages';
import { Icon, Icons, LoadingButton, Text } from 'react-basics'; import { Icon, Icons, LoadingButton, Text } from 'react-basics';
import { setValue } from 'store/cache';
export function TeamMemberRemoveButton({ teamId, userId, disabled, onSave }) { export function TeamMemberRemoveButton({ teamId, userId, disabled, onSave }) {
const { formatMessage, labels } = useMessages(); const { formatMessage, labels } = useMessages();
@ -12,7 +13,8 @@ export function TeamMemberRemoveButton({ teamId, userId, disabled, onSave }) {
{}, {},
{ {
onSuccess: () => { onSuccess: () => {
onSave(); setValue('team:members', Date.now());
onSave?.();
}, },
}, },
); );

View File

@ -2,11 +2,13 @@ import useApi from 'components/hooks/useApi';
import TeamMembersTable from './TeamMembersTable'; import TeamMembersTable from './TeamMembersTable';
import useFilterQuery from 'components/hooks/useFilterQuery'; import useFilterQuery from 'components/hooks/useFilterQuery';
import DataTable from 'components/common/DataTable'; import DataTable from 'components/common/DataTable';
import useCache from 'store/cache';
export function TeamMembers({ teamId, readOnly }) { export function TeamMembers({ teamId, readOnly }) {
const { get } = useApi(); const { get } = useApi();
const modified = useCache(state => state?.['team:members']);
const queryResult = useFilterQuery( const queryResult = useFilterQuery(
['team:users', teamId], ['team:members', { teamId, modified }],
params => { params => {
return get(`/teams/${teamId}/users`, { return get(`/teams/${teamId}/users`, {
...params, ...params,

View File

@ -4,7 +4,7 @@ import useUser from 'components/hooks/useUser';
import { ROLES } from 'lib/constants'; import { ROLES } from 'lib/constants';
import TeamMemberRemoveButton from './TeamMemberRemoveButton'; import TeamMemberRemoveButton from './TeamMemberRemoveButton';
export function TeamMembersTable({ data = [], teamId, readOnly, onChange }) { export function TeamMembersTable({ data = [], teamId, readOnly }) {
const { formatMessage, labels } = useMessages(); const { formatMessage, labels } = useMessages();
const { user } = useUser(); const { user } = useUser();
@ -24,9 +24,7 @@ export function TeamMembersTable({ data = [], teamId, readOnly, onChange }) {
return ( return (
!readOnly && !readOnly &&
row?.teamUser?.[0]?.role !== ROLES.teamOwner && row?.teamUser?.[0]?.role !== ROLES.teamOwner &&
user?.id !== row?.id && ( user?.id !== row?.id && <TeamMemberRemoveButton teamId={teamId} userId={row.id} />
<TeamMemberRemoveButton teamId={teamId} userId={row.id} onSave={onChange} />
)
); );
}} }}
</GridColumn> </GridColumn>

View File

@ -4,6 +4,7 @@ import { Button, Form, FormButtons, GridColumn, Loading, SubmitButton, Toggle }
import useMessages from 'components/hooks/useMessages'; import useMessages from 'components/hooks/useMessages';
import WebsitesDataTable from '../../websites/WebsitesDataTable'; import WebsitesDataTable from '../../websites/WebsitesDataTable';
import Empty from 'components/common/Empty'; import Empty from 'components/common/Empty';
import { setValue } from 'store/cache';
export function TeamWebsiteAddForm({ teamId, onSave, onClose }) { export function TeamWebsiteAddForm({ teamId, onSave, onClose }) {
const { formatMessage, labels } = useMessages(); const { formatMessage, labels } = useMessages();
@ -18,8 +19,9 @@ export function TeamWebsiteAddForm({ teamId, onSave, onClose }) {
{ websiteIds: selected }, { websiteIds: selected },
{ {
onSuccess: async () => { onSuccess: async () => {
onSave(); setValue('team:websites', Date.now());
onClose(); onSave?.();
onClose?.();
}, },
}, },
); );

View File

@ -6,13 +6,15 @@ import useMessages from 'components/hooks/useMessages';
import useUser from 'components/hooks/useUser'; import useUser from 'components/hooks/useUser';
import useFilterQuery from 'components/hooks/useFilterQuery'; import useFilterQuery from 'components/hooks/useFilterQuery';
import DataTable from 'components/common/DataTable'; import DataTable from 'components/common/DataTable';
import useCache from 'store/cache';
export function TeamWebsites({ teamId }) { export function TeamWebsites({ teamId }) {
const { formatMessage, labels, messages } = useMessages(); const { formatMessage, labels, messages } = useMessages();
const { user } = useUser(); const { user } = useUser();
const { get } = useApi(); const { get } = useApi();
const modified = useCache(state => state?.['team:websites']);
const queryResult = useFilterQuery( const queryResult = useFilterQuery(
['team:websites', teamId], ['team:websites', { teamId, modified }],
params => { params => {
return get(`/teams/${teamId}/websites`, { return get(`/teams/${teamId}/websites`, {
...params, ...params,

View File

@ -4,10 +4,12 @@ import useFilterQuery from 'components/hooks/useFilterQuery';
import DataTable from 'components/common/DataTable'; import DataTable from 'components/common/DataTable';
import UsersTable from './UsersTable'; import UsersTable from './UsersTable';
import UsersHeader from './UsersHeader'; import UsersHeader from './UsersHeader';
import useCache from 'store/cache';
export function UsersDataTable() { export function UsersDataTable() {
const { get } = useApi(); const { get } = useApi();
const queryResult = useFilterQuery(['users'], params => { const modified = useCache(state => state?.users);
const queryResult = useFilterQuery(['users', { modified }], params => {
return get(`/users`, { return get(`/users`, {
...params, ...params,
}); });