fix resource context updating problem

This commit is contained in:
miloschwartz
2026-06-09 14:49:57 -07:00
parent cdb43d9658
commit 20a66bba6f
3 changed files with 41 additions and 4 deletions

View File

@@ -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")

View File

@@ -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")

View File

@@ -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>) => {