diff --git a/src/app/(main)/reports/ReportDeleteButton.tsx b/src/app/(main)/reports/ReportDeleteButton.tsx
index 99e39d71..affd81fd 100644
--- a/src/app/(main)/reports/ReportDeleteButton.tsx
+++ b/src/app/(main)/reports/ReportDeleteButton.tsx
@@ -49,6 +49,7 @@ export function ReportDeleteButton({
error={error}
onConfirm={handleConfirm.bind(null, close)}
onClose={close}
+ buttonLabel={formatMessage(labels.delete)}
/>
)}
diff --git a/src/app/(main)/settings/teams/TeamAddForm.tsx b/src/app/(main)/settings/teams/TeamAddForm.tsx
index 9bcf7840..c0fc7513 100644
--- a/src/app/(main)/settings/teams/TeamAddForm.tsx
+++ b/src/app/(main)/settings/teams/TeamAddForm.tsx
@@ -1,14 +1,13 @@
-import {
- Form,
- FormRow,
- FormInput,
- FormButtons,
- TextField,
- Button,
- SubmitButton,
-} from 'react-basics';
-import { touch } from 'store/modified';
import { useApi, useMessages } from 'components/hooks';
+import {
+ Button,
+ Form,
+ FormButtons,
+ FormInput,
+ FormRow,
+ SubmitButton,
+ TextField,
+} from 'react-basics';
export function TeamAddForm({ onSave, onClose }: { onSave: () => void; onClose: () => void }) {
const { formatMessage, labels } = useMessages();
@@ -20,7 +19,6 @@ export function TeamAddForm({ onSave, onClose }: { onSave: () => void; onClose:
const handleSubmit = async (data: any) => {
mutate(data, {
onSuccess: async () => {
- touch('teams');
onSave?.();
onClose?.();
},
diff --git a/src/app/(main)/settings/teams/TeamLeaveForm.tsx b/src/app/(main)/settings/teams/TeamLeaveForm.tsx
index 466fbab3..a22a9060 100644
--- a/src/app/(main)/settings/teams/TeamLeaveForm.tsx
+++ b/src/app/(main)/settings/teams/TeamLeaveForm.tsx
@@ -24,7 +24,7 @@ export function TeamLeaveForm({
const handleConfirm = async () => {
mutate(null, {
onSuccess: async () => {
- touch('team:members');
+ touch('teams:members');
onSave();
onClose();
},
diff --git a/src/app/(main)/settings/teams/TeamsAddButton.tsx b/src/app/(main)/settings/teams/TeamsAddButton.tsx
index 871cdb76..15f541ea 100644
--- a/src/app/(main)/settings/teams/TeamsAddButton.tsx
+++ b/src/app/(main)/settings/teams/TeamsAddButton.tsx
@@ -1,10 +1,19 @@
-import { Button, Icon, Modal, ModalTrigger, Text } from 'react-basics';
+import { Button, Icon, Modal, ModalTrigger, Text, useToasts } from 'react-basics';
import Icons from 'components/icons';
import { useMessages } from 'components/hooks';
import TeamAddForm from './TeamAddForm';
+import { messages } from 'components/messages';
+import { touch } from 'store/modified';
-export function TeamsAddButton({ onAdd }: { onAdd?: () => void }) {
+export function TeamsAddButton({ onSave }: { onSave?: () => void }) {
const { formatMessage, labels } = useMessages();
+ const { showToast } = useToasts();
+
+ const handleSave = async () => {
+ showToast({ message: formatMessage(messages.saved), variant: 'success' });
+ touch('teams');
+ onSave?.();
+ };
return (
@@ -15,7 +24,7 @@ export function TeamsAddButton({ onAdd }: { onAdd?: () => void }) {
{formatMessage(labels.createTeam)}
- {(close: () => void) => }
+ {(close: () => void) => }
);
diff --git a/src/app/(main)/settings/teams/[teamId]/members/TeamMemberRemoveButton.tsx b/src/app/(main)/settings/teams/[teamId]/members/TeamMemberRemoveButton.tsx
index 0b4ca500..fc51a818 100644
--- a/src/app/(main)/settings/teams/[teamId]/members/TeamMemberRemoveButton.tsx
+++ b/src/app/(main)/settings/teams/[teamId]/members/TeamMemberRemoveButton.tsx
@@ -22,7 +22,7 @@ export function TeamMemberRemoveButton({
const handleRemoveTeamMember = () => {
mutate(null, {
onSuccess: () => {
- touch('team:members');
+ touch('teams:members');
onSave?.();
},
});
diff --git a/src/app/(main)/settings/teams/[teamId]/team/TeamDeleteForm.tsx b/src/app/(main)/settings/teams/[teamId]/team/TeamDeleteForm.tsx
index 33694495..2200cc1e 100644
--- a/src/app/(main)/settings/teams/[teamId]/team/TeamDeleteForm.tsx
+++ b/src/app/(main)/settings/teams/[teamId]/team/TeamDeleteForm.tsx
@@ -16,7 +16,7 @@ export function TeamDeleteForm({
const { labels, formatMessage } = useMessages();
const { del, useMutation } = useApi();
const { mutate, error, isPending } = useMutation({
- mutationFn: (data: any) => del(`/teams/${teamId}`, data),
+ mutationFn: () => del(`/teams/${teamId}`),
});
const handleConfirm = async () => {
diff --git a/src/app/(main)/settings/websites/[websiteId]/WebsiteDeleteForm.tsx b/src/app/(main)/settings/websites/[websiteId]/WebsiteDeleteForm.tsx
index 19755205..077a8f4a 100644
--- a/src/app/(main)/settings/websites/[websiteId]/WebsiteDeleteForm.tsx
+++ b/src/app/(main)/settings/websites/[websiteId]/WebsiteDeleteForm.tsx
@@ -15,7 +15,7 @@ export function WebsiteDeleteForm({
const { formatMessage, labels } = useMessages();
const { del, useMutation } = useApi();
const { mutate, isPending, error } = useMutation({
- mutationFn: (data: any) => del(`/websites/${websiteId}`, data),
+ mutationFn: () => del(`/websites/${websiteId}`),
});
const handleConfirm = async () => {
diff --git a/src/components/hooks/queries/useTeamMembers.ts b/src/components/hooks/queries/useTeamMembers.ts
index 064231d1..d18ada3f 100644
--- a/src/components/hooks/queries/useTeamMembers.ts
+++ b/src/components/hooks/queries/useTeamMembers.ts
@@ -1,11 +1,13 @@
+import useModified from 'store/modified';
import useApi from './useApi';
import useFilterQuery from './useFilterQuery';
export function useTeamMembers(teamId: string) {
const { get } = useApi();
+ const modified = useModified((state: any) => state?.['teams:members']);
return useFilterQuery({
- queryKey: ['teams:users', { teamId }],
+ queryKey: ['teams:members', { teamId, modified }],
queryFn: (params: any) => {
return get(`/teams/${teamId}/users`, params);
},
diff --git a/src/components/hooks/queries/useTeams.ts b/src/components/hooks/queries/useTeams.ts
index 020c9915..3360a6c4 100644
--- a/src/components/hooks/queries/useTeams.ts
+++ b/src/components/hooks/queries/useTeams.ts
@@ -1,13 +1,15 @@
import useApi from './useApi';
import useFilterQuery from './useFilterQuery';
import { useLogin } from 'components/hooks';
+import useModified from 'store/modified';
export function useTeams(userId?: string) {
const { get } = useApi();
const { user } = useLogin();
+ const modified = useModified((state: any) => state?.teams);
return useFilterQuery({
- queryKey: ['teams', { userId: userId || user?.id }],
+ queryKey: ['teams', { userId: userId || user?.id, modified }],
queryFn: (params: any) => {
return get(`/teams`, params);
},
diff --git a/src/components/hooks/queries/useWebsites.ts b/src/components/hooks/queries/useWebsites.ts
index bb3e9a2d..4f16e4d8 100644
--- a/src/components/hooks/queries/useWebsites.ts
+++ b/src/components/hooks/queries/useWebsites.ts
@@ -3,15 +3,13 @@ import { useFilterQuery } from './useFilterQuery';
import { useLogin } from './useLogin';
import useModified from 'store/modified';
-const selector = (state: any) => state?.websites;
-
export function useWebsites(
{ userId, teamId }: { userId?: string; teamId?: string },
params?: { [key: string]: string | number },
) {
const { get } = useApi();
const { user } = useLogin();
- const modified = useModified(selector);
+ const modified = useModified((state: any) => state?.websites);
return useFilterQuery({
queryKey: ['websites', { userId, teamId, modified, ...params }],
diff --git a/src/queries/admin/report.ts b/src/queries/admin/report.ts
index fee0b442..d6b28cc4 100644
--- a/src/queries/admin/report.ts
+++ b/src/queries/admin/report.ts
@@ -1,10 +1,9 @@
import { Prisma, Report } from '@prisma/client';
import prisma from 'lib/prisma';
import { FilterResult, ReportSearchFilter } from 'lib/types';
-import ReportFindUniqueArgs = Prisma.ReportFindUniqueArgs;
import ReportFindManyArgs = Prisma.ReportFindManyArgs;
-async function findReport(criteria: ReportFindUniqueArgs) {
+async function findReport(criteria: Prisma.ReportFindUniqueArgs): Promise {
return prisma.client.report.findUnique(criteria);
}
diff --git a/src/queries/admin/team.ts b/src/queries/admin/team.ts
index e381d5ce..225d57c4 100644
--- a/src/queries/admin/team.ts
+++ b/src/queries/admin/team.ts
@@ -5,8 +5,8 @@ import prisma from 'lib/prisma';
import { FilterResult, TeamSearchFilter } from 'lib/types';
import TeamFindManyArgs = Prisma.TeamFindManyArgs;
-export async function findTeam(criteria: Prisma.TeamFindFirstArgs): Promise {
- return prisma.client.team.findFirst(criteria);
+export async function findTeam(criteria: Prisma.TeamFindUniqueArgs): Promise {
+ return prisma.client.team.findUnique(criteria);
}
export async function getTeam(teamId: string, options: { includeMembers?: boolean } = {}) {
diff --git a/src/queries/admin/teamUser.ts b/src/queries/admin/teamUser.ts
index 83f788de..43785b78 100644
--- a/src/queries/admin/teamUser.ts
+++ b/src/queries/admin/teamUser.ts
@@ -4,6 +4,10 @@ import prisma from 'lib/prisma';
import { FilterResult, TeamUserSearchFilter } from 'lib/types';
import TeamUserFindManyArgs = Prisma.TeamUserFindManyArgs;
+export async function findTeamUser(criteria: Prisma.TeamUserFindUniqueArgs): Promise {
+ return prisma.client.teamUser.findUnique(criteria);
+}
+
export async function getTeamUser(teamId: string, userId: string): Promise {
return prisma.client.teamUser.findFirst({
where: {
@@ -49,21 +53,20 @@ export async function createTeamUser(
});
}
-export async function updateTeamUser(teamUserId: string, data: any): Promise {
- return prisma.client.teamUser.update(
- {
- where: {
- id: teamUserId,
- },
+export async function updateTeamUser(
+ teamUserId: string,
+ data: Prisma.TeamUserUpdateInput,
+): Promise {
+ return prisma.client.teamUser.update({
+ where: {
+ id: teamUserId,
},
data,
- );
+ });
}
-export async function deleteTeamUser(teamId: string, userId: string): Promise {
- const { client } = prisma;
-
- return client.teamUser.deleteMany({
+export async function deleteTeamUser(teamId: string, userId: string): Promise {
+ return prisma.client.teamUser.deleteMany({
where: {
teamId,
userId,
diff --git a/src/queries/admin/user.ts b/src/queries/admin/user.ts
index 0b5fe349..274bb43d 100644
--- a/src/queries/admin/user.ts
+++ b/src/queries/admin/user.ts
@@ -221,7 +221,7 @@ export async function deleteUser(
id: userId,
},
}),
- ]).then(async (data: any) => {
+ ]).then(async data => {
if (cache.enabled) {
const ids = websites.map(a => a.id);
diff --git a/src/queries/admin/website.ts b/src/queries/admin/website.ts
index 53627f22..01d52019 100644
--- a/src/queries/admin/website.ts
+++ b/src/queries/admin/website.ts
@@ -4,7 +4,7 @@ import prisma from 'lib/prisma';
import { FilterResult, WebsiteSearchFilter } from 'lib/types';
import WebsiteFindManyArgs = Prisma.WebsiteFindManyArgs;
-async function findWebsite(criteria: Prisma.WebsiteFindManyArgs): Promise {
+async function findWebsite(criteria: Prisma.WebsiteFindUniqueArgs): Promise {
return prisma.client.website.findUnique(criteria);
}
@@ -106,7 +106,7 @@ export async function createWebsite(
.create({
data,
})
- .then(async (data: { id: any }) => {
+ .then(async data => {
if (cache.enabled) {
await cache.storeWebsite(data);
}