mirror of
https://github.com/fosrl/pangolin.git
synced 2026-07-06 20:29:50 +00:00
fix resource context updating problem
This commit is contained in:
@@ -32,7 +32,10 @@ import { useEnvContext } from "@app/hooks/useEnvContext";
|
|||||||
import { toast } from "@app/hooks/useToast";
|
import { toast } from "@app/hooks/useToast";
|
||||||
import { createApiClient, formatAxiosError } from "@app/lib/api";
|
import { createApiClient, formatAxiosError } from "@app/lib/api";
|
||||||
import { finalizeSubdomainSanitize } from "@app/lib/subdomain-utils";
|
import { finalizeSubdomainSanitize } from "@app/lib/subdomain-utils";
|
||||||
import { UpdateResourceResponse } from "@server/routers/resource";
|
import {
|
||||||
|
GetResourceAuthInfoResponse,
|
||||||
|
UpdateResourceResponse
|
||||||
|
} from "@server/routers/resource";
|
||||||
import { AxiosResponse } from "axios";
|
import { AxiosResponse } from "axios";
|
||||||
import { AlertCircle } from "lucide-react";
|
import { AlertCircle } from "lucide-react";
|
||||||
import { useTranslations } from "next-intl";
|
import { useTranslations } from "next-intl";
|
||||||
@@ -441,7 +444,7 @@ function MaintenanceSectionForm({
|
|||||||
export default function GeneralForm() {
|
export default function GeneralForm() {
|
||||||
const params = useParams();
|
const params = useParams();
|
||||||
const { org } = useOrgContext();
|
const { org } = useOrgContext();
|
||||||
const { resource, updateResource } = useResourceContext();
|
const { resource, updateResource, updateAuthInfo } = useResourceContext();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
|
|
||||||
@@ -576,6 +579,18 @@ export default function GeneralForm() {
|
|||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (resourcePolicyId !== undefined) {
|
||||||
|
const authRes = await api
|
||||||
|
.get<AxiosResponse<GetResourceAuthInfoResponse>>(
|
||||||
|
`/resource/${resource.resourceGuid}/auth`
|
||||||
|
)
|
||||||
|
.catch(() => null);
|
||||||
|
|
||||||
|
if (authRes?.status === 200) {
|
||||||
|
updateAuthInfo(authRes.data.data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
toast({
|
toast({
|
||||||
title: t("resourceUpdated"),
|
title: t("resourceUpdated"),
|
||||||
description: t("resourceUpdatedDescription")
|
description: t("resourceUpdatedDescription")
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import { useEnvContext } from "@app/hooks/useEnvContext";
|
|||||||
import { createApiClient, formatAxiosError } from "@app/lib/api";
|
import { createApiClient, formatAxiosError } from "@app/lib/api";
|
||||||
import { getUserDisplayName } from "@app/lib/getUserDisplayName";
|
import { getUserDisplayName } from "@app/lib/getUserDisplayName";
|
||||||
import { resourceQueries } from "@app/lib/queries";
|
import { resourceQueries } from "@app/lib/queries";
|
||||||
|
import ResourceContext from "@app/contexts/resourceContext";
|
||||||
import { useResourcePolicyContext } from "@app/providers/ResourcePolicyProvider";
|
import { useResourcePolicyContext } from "@app/providers/ResourcePolicyProvider";
|
||||||
import { zodResolver } from "@hookform/resolvers/zod";
|
import { zodResolver } from "@hookform/resolvers/zod";
|
||||||
import type { GetResourcePolicyResponse } from "@server/routers/policy";
|
import type { GetResourcePolicyResponse } from "@server/routers/policy";
|
||||||
@@ -33,7 +34,14 @@ import { useQuery } from "@tanstack/react-query";
|
|||||||
import type { AxiosResponse } from "axios";
|
import type { AxiosResponse } from "axios";
|
||||||
import { useTranslations } from "next-intl";
|
import { useTranslations } from "next-intl";
|
||||||
import { useRouter } from "next/navigation";
|
import { useRouter } from "next/navigation";
|
||||||
import { useActionState, useEffect, useMemo, useRef, useState } from "react";
|
import {
|
||||||
|
useActionState,
|
||||||
|
useContext,
|
||||||
|
useEffect,
|
||||||
|
useMemo,
|
||||||
|
useRef,
|
||||||
|
useState
|
||||||
|
} from "react";
|
||||||
import { useForm, useWatch } from "react-hook-form";
|
import { useForm, useWatch } from "react-hook-form";
|
||||||
import { createPolicySchema } from ".";
|
import { createPolicySchema } from ".";
|
||||||
import {
|
import {
|
||||||
@@ -107,6 +115,7 @@ export function PolicyAuthStackSectionEdit({
|
|||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const { policy, updatePolicy } = useResourcePolicyContext();
|
const { policy, updatePolicy } = useResourcePolicyContext();
|
||||||
|
const resourceContext = useContext(ResourceContext);
|
||||||
const api = createApiClient(useEnvContext());
|
const api = createApiClient(useEnvContext());
|
||||||
|
|
||||||
const isResourceOverlay = resourceId !== undefined;
|
const isResourceOverlay = resourceId !== undefined;
|
||||||
@@ -412,6 +421,14 @@ export function PolicyAuthStackSectionEdit({
|
|||||||
|
|
||||||
updatePolicy(policyUpdates);
|
updatePolicy(policyUpdates);
|
||||||
|
|
||||||
|
resourceContext?.updateAuthInfo({
|
||||||
|
sso: payload.sso,
|
||||||
|
whitelist: payload.emailWhitelistEnabled,
|
||||||
|
password: passcodeOnServerRef.current,
|
||||||
|
pincode: pincodeOnServerRef.current,
|
||||||
|
headerAuth: headerAuthOnServerRef.current
|
||||||
|
});
|
||||||
|
|
||||||
toast({
|
toast({
|
||||||
title: t("success"),
|
title: t("success"),
|
||||||
description: t("policyUpdatedSuccess")
|
description: t("policyUpdatedSuccess")
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
import ResourceContext from "@app/contexts/resourceContext";
|
import ResourceContext from "@app/contexts/resourceContext";
|
||||||
import { GetResourceAuthInfoResponse } from "@server/routers/resource";
|
import { GetResourceAuthInfoResponse } from "@server/routers/resource";
|
||||||
import { GetResourceResponse } from "@server/routers/resource/getResource";
|
import { GetResourceResponse } from "@server/routers/resource/getResource";
|
||||||
import { useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import { useTranslations } from "next-intl";
|
import { useTranslations } from "next-intl";
|
||||||
|
|
||||||
interface ResourceProviderProps {
|
interface ResourceProviderProps {
|
||||||
@@ -23,6 +23,11 @@ export function ResourceProvider({
|
|||||||
const [authInfo, setAuthInfo] =
|
const [authInfo, setAuthInfo] =
|
||||||
useState<GetResourceAuthInfoResponse>(serverAuthInfo);
|
useState<GetResourceAuthInfoResponse>(serverAuthInfo);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
setResource(serverResource);
|
||||||
|
setAuthInfo(serverAuthInfo);
|
||||||
|
}, [serverResource, serverAuthInfo]);
|
||||||
|
|
||||||
const t = useTranslations();
|
const t = useTranslations();
|
||||||
|
|
||||||
const updateResource = (updatedResource: Partial<GetResourceResponse>) => {
|
const updateResource = (updatedResource: Partial<GetResourceResponse>) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user