Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/components/CategoryModal/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -329,7 +329,7 @@ function CategoryModal(props: Props) {
</ListView>
)}
>
{`Are you sure you want to delete "${categories?.find((item) => item.id === deletingId)?.name || 'this category'}"? This action cannot be undone.`}
{`Deleting "${categories?.find((item) => item.id === deletingId)?.name || 'this category'}" will also delete every report that uses it. This action cannot be undone. Are you sure?`}
</Modal>
)}
</Modal>
Expand Down
9 changes: 7 additions & 2 deletions app/components/EditDeleteActions/index.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import {
type ReactNode,
useCallback,
useState,
} from 'react';
Expand All @@ -24,6 +25,8 @@ export interface Props {
itemTitle: string;
to: keyof RoutesMap;
deleteMode?: 'delete' | 'deactivate';
deleteHeading?: string;
deleteMessage?: ReactNode;
}

const deleteCopy = {
Expand All @@ -48,6 +51,8 @@ function EditDeleteActions(props: Props) {
member,
dashboard,
deleteMode = 'delete',
deleteHeading,
deleteMessage,
} = props;

const copy = deleteCopy[deleteMode];
Expand Down Expand Up @@ -101,7 +106,7 @@ function EditDeleteActions(props: Props) {
</Button>
{showDeleteModal && (
<Modal
heading={copy.heading}
heading={deleteHeading ?? copy.heading}
size="sm"
onClose={handleDeleteCancel}
closeOnEscape
Expand All @@ -123,7 +128,7 @@ function EditDeleteActions(props: Props) {
</ListView>
)}
>
{copy.message(itemTitle || 'this item')}
{deleteMessage ?? copy.message(itemTitle || 'this item')}
</Modal>
)}
</TableActions>
Expand Down
5 changes: 5 additions & 0 deletions app/utils/common.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import {
isNotDefined,
} from '@togglecorp/fujs';
import { nonFieldError } from '@togglecorp/toggle-form';
import type { CombinedError } from 'urql';

import type { AdminAreaLevel } from '#generated/types/graphql';

Expand Down Expand Up @@ -49,6 +50,10 @@ export const statusFilterOptions = [

export const errorMessage = 'Something went wrong. Please try again. ';

export function getErrorMessage(error: CombinedError | undefined) {
return error?.graphQLErrors?.[0]?.message || errorMessage;
}

export function getReadableFileSize(bytes: number | null | undefined): string {
if (!bytes || bytes <= 0) {
return '0 B';
Expand Down
3 changes: 2 additions & 1 deletion app/views/CapacityAndResources/ResourceDashboards/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ import useRegionMap from '#hooks/useRegionMap';
import useRouting from '#hooks/useRouting';
import {
errorMessage,
getErrorMessage,
idSelector,
} from '#utils/common';
import createDragHandleColumn from '#utils/table';
Expand Down Expand Up @@ -134,7 +135,7 @@ function ResourceDashboards() {
}
alert.show('Dashboard deleted successfully', { variant: 'success' });
} else {
alert.show(errorMessage, { variant: 'danger' });
alert.show(getErrorMessage(resp.error), { variant: 'danger' });
}
}).catch(() => {
alert.show(errorMessage, { variant: 'danger' });
Expand Down
3 changes: 2 additions & 1 deletion app/views/CapacityAndResources/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import useFilterState from '#hooks/useFilterState';
import useRouting from '#hooks/useRouting';
import {
errorMessage,
getErrorMessage,
idSelector,
} from '#utils/common';

Expand Down Expand Up @@ -101,7 +102,7 @@ function CapacityAndResourcesList() {
}
alert.show('Resource deleted successfully', { variant: 'success' });
} else {
alert.show(errorMessage, { variant: 'danger' });
alert.show(getErrorMessage(resp.error), { variant: 'danger' });
}
}).catch(() => {
alert.show(errorMessage, { variant: 'danger' });
Expand Down
13 changes: 0 additions & 13 deletions app/views/Documents/DocumentsFilters/index.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import {
Button,
DateInput,
TextInput,
} from '@ifrc-go/ui';
import { type EntriesAsList } from '@togglecorp/toggle-form';
Expand All @@ -19,18 +18,6 @@ function DocumentsFilters({
}: Props) {
return (
<>
<DateInput
name="createdAtGte"
label="Created at start date"
value={value.createdAtGte}
onChange={onChange}
/>
<DateInput
name="createdAtLte"
label="Created at end date"
value={value.createdAtLte}
onChange={onChange}
/>
<TextInput
name="title"
placeholder="Search by title"
Expand Down
68 changes: 58 additions & 10 deletions app/views/Home/index.tsx
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
import {
useCallback,
useMemo,
useState,
} from 'react';
import {
Button,
ConfirmButton,
Container,
ListView,
Modal,
Pager,
SelectInput,
Table,
Expand All @@ -16,6 +18,10 @@ import {
createNumberColumn,
createStringColumn,
} from '@ifrc-go/ui/utils';
import {
isDefined,
isNotDefined,
} from '@togglecorp/fujs';

import {
type HomeExternalDashboardsQuery,
Expand All @@ -30,6 +36,7 @@ import useAlert from '#hooks/useAlert';
import useFilterState from '#hooks/useFilterState';
import {
errorMessage,
getErrorMessage,
idSelector,
keySelector,
labelSelector,
Expand Down Expand Up @@ -62,6 +69,8 @@ function Home() {

const alert = useAlert();

const [removingId, setRemovingId] = useState<string | undefined>();

const [, updateDashboard] = useHomeUpdateExternalDashboardMutation();

const queryVariables = useMemo(() => ({
Expand Down Expand Up @@ -120,27 +129,39 @@ function Home() {
reExecuteQuickLinksQuery();
alert.show('Added to quick links', { variant: 'success' });
} else {
alert.show(errorMessage, { variant: 'danger' });
alert.show(getErrorMessage(resp.error), { variant: 'danger' });
}
}).catch(() => {
alert.show(errorMessage, { variant: 'danger' });
});
}, [updateDashboard, reExecuteMainQuery, reExecuteQuickLinksQuery, alert]);

const handleRemoveFromQuickLinks = useCallback((id: string) => {
updateDashboard({ id, data: { showOnHome: false } }).then((resp) => {
const handleRemoveClick = useCallback((id: string) => {
setRemovingId(id);
}, []);

const handleRemoveCancel = useCallback(() => {
setRemovingId(undefined);
}, []);

const handleRemoveConfirm = useCallback(() => {
if (isNotDefined(removingId)) {
return;
}
setRemovingId(undefined);
updateDashboard({ id: removingId, data: { showOnHome: false } }).then((resp) => {
const result = resp.data?.updateExternalDashboard;
if (result?.ok) {
reExecuteMainQuery();
reExecuteQuickLinksQuery();
alert.show('Removed from quick links', { variant: 'success' });
} else {
alert.show(errorMessage, { variant: 'danger' });
alert.show(getErrorMessage(resp.error), { variant: 'danger' });
}
}).catch(() => {
alert.show(errorMessage, { variant: 'danger' });
});
}, [updateDashboard, reExecuteMainQuery, reExecuteQuickLinksQuery, alert]);
}, [removingId, updateDashboard, reExecuteMainQuery, reExecuteQuickLinksQuery, alert]);

const quickLinksColumns = useMemo(() => [
createNumberColumn<QuickLinksListItem, string | number>(
Expand All @@ -162,17 +183,17 @@ function Home() {
'action',
(item) => ({
children: (
<ConfirmButton
<Button
name={item.id}
onConfirm={handleRemoveFromQuickLinks}
onClick={handleRemoveClick}
styleVariant="action"
>
Remove
</ConfirmButton>
</Button>
),
}),
),
], [handleRemoveFromQuickLinks]);
], [handleRemoveClick]);

const columns = useMemo(() => [
createNumberColumn<HomeListItem, string | number>(
Expand Down Expand Up @@ -277,6 +298,33 @@ function Home() {
pending={dashboardsPending || pageOptionsPending}
/>
</Container>
{isDefined(removingId) && (
<Modal
heading="Remove from quick links?"
size="sm"
onClose={handleRemoveCancel}
closeOnEscape
footerActions={(
<ListView spacing="sm">
<Button
name={undefined}
onClick={handleRemoveCancel}
>
Cancel
</Button>
<Button
name={undefined}
styleVariant="filled"
onClick={handleRemoveConfirm}
>
Remove
</Button>
</ListView>
)}
>
{`Are you sure you want to remove "${quickLinksResults?.find((item) => item.id === removingId)?.title || 'this dashboard'}" from quick links?`}
</Modal>
)}
</Container>
);
}
Expand Down
3 changes: 2 additions & 1 deletion app/views/Links/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ import useUrlSearchState from '#hooks/useUrlSearchState';
import routes from '#root/config/routes';
import {
errorMessage,
getErrorMessage,
idSelector,
} from '#utils/common';

Expand Down Expand Up @@ -116,7 +117,7 @@ function Links() {
reExecuteQuery();
alert.show('Link deleted successfully', { variant: 'success' });
} else {
alert.show(errorMessage, { variant: 'danger' });
alert.show(getErrorMessage(resp.error), { variant: 'danger' });
}
}).catch(() => {
alert.show(errorMessage, { variant: 'danger' });
Expand Down
4 changes: 2 additions & 2 deletions app/views/Login/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ function Login() {
});

if (apiError) {
alert.show('Incorrect username/password', {
alert.show('Incorrect email/password', {
variant: 'danger',
});
return;
Expand Down Expand Up @@ -190,7 +190,7 @@ function Login() {
>
<TextInput
name="email"
label="Email/Username"
label="Email"
value={value.email}
onChange={setFieldValue}
error={error?.email}
Expand Down
3 changes: 2 additions & 1 deletion app/views/OurWorks/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import useRegionMap from '#hooks/useRegionMap';
import useRouting from '#hooks/useRouting';
import {
errorMessage,
getErrorMessage,
idSelector,
} from '#utils/common';
import createDragHandleColumn from '#utils/table';
Expand Down Expand Up @@ -129,7 +130,7 @@ function OurWorks() {
}
alert.show('Dashboard deleted successfully', { variant: 'success' });
} else {
alert.show(errorMessage, { variant: 'danger' });
alert.show(getErrorMessage(resp.error), { variant: 'danger' });
}
}).catch(() => {
alert.show(errorMessage, { variant: 'danger' });
Expand Down
3 changes: 2 additions & 1 deletion app/views/Preparedness/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import useRegionMap from '#hooks/useRegionMap';
import useRouting from '#hooks/useRouting';
import {
errorMessage,
getErrorMessage,
idSelector,
} from '#utils/common';
import createDragHandleColumn from '#utils/table';
Expand Down Expand Up @@ -127,7 +128,7 @@ function PreparednessList() {
}
alert.show('Dashboard deleted successfully', { variant: 'success' });
} else {
alert.show(errorMessage, { variant: 'danger' });
alert.show(getErrorMessage(resp.error), { variant: 'danger' });
}
}).catch(() => {
alert.show(errorMessage, { variant: 'danger' });
Expand Down
3 changes: 2 additions & 1 deletion app/views/Teams/TeamMembers/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ import useRegionMap from '#hooks/useRegionMap';
import useRouting from '#hooks/useRouting';
import {
errorMessage,
getErrorMessage,
idSelector,
} from '#utils/common';

Expand Down Expand Up @@ -110,7 +111,7 @@ function TeamMembers() {
reExecuteQuery();
alert.show('Team member deleted successfully', { variant: 'success' });
} else {
alert.show(errorMessage, { variant: 'danger' });
alert.show(getErrorMessage(resp.error), { variant: 'danger' });
}
}).catch(() => {
alert.show(errorMessage, { variant: 'danger' });
Expand Down
3 changes: 2 additions & 1 deletion app/views/Teams/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import useFilterState from '#hooks/useFilterState';
import useRouting from '#hooks/useRouting';
import {
errorMessage,
getErrorMessage,
idSelector,
} from '#utils/common';

Expand Down Expand Up @@ -97,7 +98,7 @@ function Teams() {
reExecuteQuery();
alert.show('Team deleted successfully', { variant: 'success' });
} else {
alert.show(errorMessage, { variant: 'danger' });
alert.show(getErrorMessage(resp.error), { variant: 'danger' });
}
}).catch(() => {
alert.show(errorMessage, { variant: 'danger' });
Expand Down
3 changes: 2 additions & 1 deletion app/views/Users/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import useRegionMap from '#hooks/useRegionMap';
import useRouting from '#hooks/useRouting';
import {
errorMessage,
getErrorMessage,
idSelector,
} from '#utils/common';

Expand Down Expand Up @@ -138,7 +139,7 @@ function UsersList() {
reExecuteQuery();
alert.show('User deactivated successfully', { variant: 'success' });
} else {
alert.show(errorMessage, { variant: 'danger' });
alert.show(getErrorMessage(resp.error), { variant: 'danger' });
}
}).catch(() => {
alert.show(errorMessage, { variant: 'danger' });
Expand Down
Loading