more fixes

This commit is contained in:
Lokowitz
2025-05-17 20:04:56 +00:00
parent eff812eaa8
commit d9ee40c898
48 changed files with 122 additions and 135 deletions

View File

@@ -14,6 +14,7 @@ export default function AccessPageHeaderAndNav({
hasInvitations
}: AccessPageHeaderAndNavProps) {
const t = useTranslations();
const navItems = [
{
title: t('users'),

View File

@@ -123,7 +123,7 @@ export default function RegenerateInvitationForm({
onRegenerate({
id: invitation.id,
email: invitation.email,
expiresAt: res.data.data.expiresAt ?? "",
expiresAt: res.data.data.expiresAt,
role: invitation.role,
roleId: invitation.roleId
});

View File

@@ -19,6 +19,7 @@ export const dynamic = "force-dynamic";
export default async function InvitationsPage(props: InvitationsPageProps) {
const params = await props.params;
const t = await getTranslations();
const getUser = cache(verifySession);
const user = await getUser();
@@ -72,8 +73,6 @@ export default async function InvitationsPage(props: InvitationsPageProps) {
};
});
const t = await getTranslations();
return (
<>
<SettingsSectionTitle

View File

@@ -222,7 +222,7 @@ export default function UsersTable({ users: u }: UsersTableProps) {
toast({
variant: "default",
title: t('userOrgRemoved'),
description: t('userOrgRemovedDescription', {email: selectedUser.email || ''})
description: t('userOrgRemovedDescription', {email: selectedUser.email})
});
setUsers((prev) =>
@@ -244,7 +244,7 @@ export default function UsersTable({ users: u }: UsersTableProps) {
dialog={
<div className="space-y-4">
<p>
{t('userQuestionOrgRemove', {email: selectedUser?.email || selectedUser?.name || selectedUser?.username || ''})}
{t('userQuestionOrgRemove', {email: selectedUser?.email || selectedUser?.name || selectedUser?.username})}
</p>
<p>

View File

@@ -92,7 +92,8 @@ export default function Page() {
const api = createApiClient({ env });
const { orgId } = useParams();
const router = useRouter();
const t = useTranslations();
const [loadingPage, setLoadingPage] = useState(true);
const [createLoading, setCreateLoading] = useState(false);
const [apiKey, setApiKey] = useState<CreateOrgApiKeyResponse | null>(null);
@@ -114,8 +115,6 @@ export default function Page() {
}
});
const t = useTranslations();
async function onSubmit(data: CreateFormValues) {
setCreateLoading(true);

View File

@@ -60,6 +60,7 @@ export default function GeneralPage() {
const { org } = useOrgContext();
const api = createApiClient(useEnvContext());
const { user } = useUserContext();
const t = useTranslations();
const [loadingDelete, setLoadingDelete] = useState(false);
const [loadingSave, setLoadingSave] = useState(false);
@@ -151,8 +152,6 @@ export default function GeneralPage() {
});
}
const t = useTranslations();
return (
<SettingsContainer>
<ConfirmDeleteDialog

View File

@@ -9,7 +9,6 @@ import {
SelectTrigger,
SelectValue
} from "@/components/ui/select";
import { useTranslations } from "next-intl";
interface DomainOption {
baseDomain: string;
@@ -24,12 +23,10 @@ interface CustomDomainInputProps {
onChange?: (value: string, selectedDomainId: string) => void;
}
const t = useTranslations();
export default function CustomDomainInput({
domainOptions,
selectedDomainId,
placeholder = t('subdomain'),
placeholder = "Subdomain",
value: defaultValue,
onChange
}: CustomDomainInputProps) {

View File

@@ -57,6 +57,7 @@ export default function SetResourcePasswordForm({
onSetPassword
}: SetPasswordFormProps) {
const api = createApiClient(useEnvContext());
const t = useTranslations();
const [loading, setLoading] = useState(false);
@@ -65,8 +66,6 @@ export default function SetResourcePasswordForm({
defaultValues
});
const t = useTranslations();
useEffect(() => {
if (!open) {
return;

View File

@@ -83,6 +83,7 @@ export default function ResourceAuthenticationPage() {
const api = createApiClient({ env });
const router = useRouter();
const t = useTranslations();
const [pageLoading, setPageLoading] = useState(true);
@@ -130,8 +131,6 @@ export default function ResourceAuthenticationPage() {
defaultValues: { emails: [] }
});
const t = useTranslations();
useEffect(() => {
const fetchData = async () => {
try {
@@ -565,8 +564,7 @@ export default function ResourceAuthenticationPage() {
>
<Key />
<span>
Password Protection{" "}
{authInfo.password ? t('enabled') : t('disabled')}
{t('resourcePasswordProtection', {status: authInfo.password? t('enabled') : t('disabled')})}
</span>
</div>
<Button

View File

@@ -927,6 +927,7 @@ function isIPInSubnet(subnet: string, ip: string): boolean {
// Split subnet into IP and mask parts
const [subnetIP, maskBits] = subnet.split("/");
const mask = parseInt(maskBits);
const t = useTranslations();
if (mask < 0 || mask > 32) {
throw new Error(t('subnetMaskErrorInvalid'));
@@ -946,6 +947,8 @@ function isIPInSubnet(subnet: string, ip: string): boolean {
function ipToNumber(ip: string): number {
// Validate IP address format
const parts = ip.split(".");
const t = useTranslations();
if (parts.length !== 4) {
throw new Error(t('ipAddressErrorInvalidFormat'));
}

View File

@@ -88,17 +88,15 @@ type LocalRule = ArrayElement<ListResourceRulesResponse["rules"]> & {
updated?: boolean;
};
const t = useTranslations();
const RuleAction = {
ACCEPT: t('alwaysAllow'),
DROP: t('alwaysDeny')
ACCEPT: "Always Allow",
DROP: "Always Deny"
} as const;
const RuleMatch = {
PATH: t('path'),
PATH: "Path",
IP: "IP",
CIDR: t('ipAddressRange')
CIDR: "IP Range"
} as const;
export default function ResourceRules(props: {
@@ -113,6 +111,7 @@ export default function ResourceRules(props: {
const [pageLoading, setPageLoading] = useState(true);
const [rulesEnabled, setRulesEnabled] = useState(resource.applyRules);
const router = useRouter();
const t = useTranslations();
const addRuleForm = useForm({
resolver: zodResolver(addRuleSchema),

View File

@@ -199,10 +199,10 @@ export default function Page() {
.catch((e) => {
toast({
variant: "destructive",
title: "Error creating resource",
title: t('resourceErrorCreate'),
description: formatAxiosError(
e,
"An error occurred when creating the resource"
t('resourceErrorCreateDescription')
)
});
});
@@ -219,11 +219,11 @@ export default function Page() {
}
}
} catch (e) {
console.error("Error creating resource:", e);
console.error(t('resourceErrorCreateMessage'), e);
toast({
variant: "destructive",
title: "Error creating resource",
description: "An unexpected error occurred"
title: t('resourceErrorCreate'),
description:t('resourceErrorCreateMessageDescription')
});
}

View File

@@ -144,10 +144,10 @@ export default function CreateShareLinkForm({
console.error(e);
toast({
variant: "destructive",
title: "Failed to fetch resources",
title: t('shareErrorFetchResource'),
description: formatAxiosError(
e,
"An error occurred while fetching the resources"
t('shareErrorFetchResourceDescription')
)
});
});
@@ -211,10 +211,10 @@ export default function CreateShareLinkForm({
console.error(e);
toast({
variant: "destructive",
title: "Failed to create share link",
title: t('shareErrorCreate'),
description: formatAxiosError(
e,
"An error occurred while creating the share link"
t('shareErrorCreateDescription')
)
});
});