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
18 changes: 14 additions & 4 deletions apps/web/src/hooks/use-join-requests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { useCapabilities } from "@/hooks/use-capability";
import { KEYS } from "@/lib/query-keys";
import { useStudioTools } from "@/lib/studio-tools";
import { useProjectContext } from "@/sdk";
import { useT } from "@/i18n/use-t.ts";
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { toast } from "sonner";

Expand Down Expand Up @@ -38,6 +39,7 @@ export function useJoinRequestActions() {
const { org, locator } = useProjectContext();
const studio = useStudioTools();
const queryClient = useQueryClient();
const t = useT();

const invalidate = () => {
queryClient.invalidateQueries({
Expand All @@ -51,21 +53,29 @@ export function useJoinRequestActions() {
studio.call("ORGANIZATION_JOIN_REQUEST_APPROVE", { requestId }),
onSuccess: () => {
invalidate();
toast.success("Request approved");
toast.success(t("settings.joinRequestsSection.approved"));
},
onError: (err) =>
toast.error(err instanceof Error ? err.message : "Failed to approve"),
toast.error(
err instanceof Error
? err.message
: t("settings.joinRequestsSection.approveFailed"),
),
});

const deny = useMutation({
mutationFn: (requestId: string) =>
studio.call("ORGANIZATION_JOIN_REQUEST_DENY", { requestId }),
onSuccess: () => {
invalidate();
toast.success("Request denied");
toast.success(t("settings.joinRequestsSection.denied"));
},
onError: (err) =>
toast.error(err instanceof Error ? err.message : "Failed to deny"),
toast.error(
err instanceof Error
? err.message
: t("settings.joinRequestsSection.denyFailed"),
),
});

return { approve, deny };
Expand Down
4 changes: 4 additions & 0 deletions apps/web/src/i18n/en/settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -433,7 +433,11 @@ export const settings = {
"settings.editProviderDialog.saving": "Saving...",
"settings.editProviderDialog.showApiKey": "Show API key",
"settings.joinRequestsSection.approve": "Approve",
"settings.joinRequestsSection.approveFailed": "Failed to approve",
"settings.joinRequestsSection.approved": "Request approved",
"settings.joinRequestsSection.deny": "Deny",
"settings.joinRequestsSection.denied": "Request denied",
"settings.joinRequestsSection.denyFailed": "Failed to deny",
"settings.joinRequestsSection.description":
"People who requested to join via a domain in approval mode.",
"settings.joinRequestsSection.title": "Join requests",
Expand Down
4 changes: 4 additions & 0 deletions apps/web/src/i18n/pt-br/settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -448,7 +448,11 @@ export const settings = {
"settings.editProviderDialog.saving": "Salvando...",
"settings.editProviderDialog.showApiKey": "Mostrar chave de API",
"settings.joinRequestsSection.approve": "Aprovar",
"settings.joinRequestsSection.approveFailed": "Falha ao aprovar",
"settings.joinRequestsSection.approved": "Solicita\u00e7\u00e3o aprovada",
"settings.joinRequestsSection.deny": "Recusar",
"settings.joinRequestsSection.denied": "Solicita\u00e7\u00e3o recusada",
"settings.joinRequestsSection.denyFailed": "Falha ao recusar",
"settings.joinRequestsSection.description":
"Pessoas que solicitaram entrada por um dom\u00ednio em modo de aprova\u00e7\u00e3o.",
"settings.joinRequestsSection.title": "Solicita\u00e7\u00f5es de entrada",
Expand Down
Loading