feat: removed last bit of workspace in frontend. Fatality!

This commit is contained in:
=
2025-09-16 00:08:41 +05:30
parent 37a80fa1ac
commit ac80242749
356 changed files with 1788 additions and 1890 deletions
@@ -3,9 +3,9 @@ import { useTranslation } from "react-i18next";
import { useNavigate, useSearch } from "@tanstack/react-router";
import { PageHeader, Tab, TabList, TabPanel, Tabs } from "@app/components/v2";
import { useWorkspace } from "@app/context";
import { useProject } from "@app/context";
import { getProjectBaseURL } from "@app/helpers/project";
import { ProjectType } from "@app/hooks/api/workspace/types";
import { ProjectType } from "@app/hooks/api/projects/types";
import { ProjectAccessControlTabs } from "@app/types/project";
import {
@@ -18,7 +18,7 @@ import {
const Page = () => {
const navigate = useNavigate();
const { currentWorkspace } = useWorkspace();
const { currentProject } = useProject();
const selectedTab = useSearch({
strict: false,
select: (el) => el.selectedTab
@@ -26,15 +26,15 @@ const Page = () => {
const updateSelectedTab = (tab: string) => {
navigate({
to: `${getProjectBaseURL(currentWorkspace.type)}/access-management` as const,
to: `${getProjectBaseURL(currentProject.type)}/access-management` as const,
search: (prev) => ({ ...prev, selectedTab: tab }),
params: {
projectId: currentWorkspace.id
projectId: currentProject.id
}
});
};
const isSecretManager = currentWorkspace.type === ProjectType.SecretManager;
const isSecretManager = currentProject.type === ProjectType.SecretManager;
return (
<div className="container mx-auto flex flex-col justify-between bg-bunker-800 text-white">
@@ -6,7 +6,7 @@ import { z } from "zod";
import { createNotification } from "@app/components/notifications";
import { Button, FilterableSelect, FormControl, Modal, ModalContent } from "@app/components/v2";
import { useOrganization, useWorkspace } from "@app/context";
import { useOrganization, useProject } from "@app/context";
import {
useAddGroupToWorkspace,
useGetOrganizationGroups,
@@ -31,14 +31,14 @@ type Props = {
const Content = ({ popUp, handlePopUpToggle }: Props) => {
const { currentOrg } = useOrganization();
const { currentWorkspace } = useWorkspace();
const { currentProject } = useProject();
const orgId = currentOrg?.id || "";
const { data: groups } = useGetOrganizationGroups(orgId);
const { data: groupMemberships } = useListWorkspaceGroups(currentWorkspace?.id || "");
const { data: groupMemberships } = useListWorkspaceGroups(currentProject?.id || "");
const { data: roles } = useGetProjectRoles(currentWorkspace?.id || "");
const { data: roles } = useGetProjectRoles(currentProject?.id || "");
const { mutateAsync: addGroupToWorkspaceMutateAsync } = useAddGroupToWorkspace();
@@ -64,7 +64,7 @@ const Content = ({ popUp, handlePopUpToggle }: Props) => {
const onFormSubmit = async ({ group, role }: FormData) => {
try {
await addGroupToWorkspaceMutateAsync({
projectId: currentWorkspace?.id || "",
projectId: currentProject?.id || "",
groupId: group.id,
role: role.slug || undefined
});
@@ -24,13 +24,13 @@ import {
Tag,
Tooltip
} from "@app/components/v2";
import { useWorkspace } from "@app/context";
import { useProject } from "@app/context";
import { formatProjectRoleName } from "@app/helpers/roles";
import { usePopUp } from "@app/hooks";
import { useGetProjectRoles, useUpdateGroupWorkspaceRole } from "@app/hooks/api";
import { TGroupMembership } from "@app/hooks/api/groups/types";
import { TProjectRole } from "@app/hooks/api/roles/types";
import { ProjectUserMembershipTemporaryMode } from "@app/hooks/api/workspace/types";
import { ProjectUserMembershipTemporaryMode } from "@app/hooks/api/projects/types";
import { groupBy } from "@app/lib/fn/array";
const temporaryRoleFormSchema = z.object({
@@ -213,7 +213,7 @@ type FormProps = {
};
const GroupRolesForm = ({ projectRoles, roles, groupId, onClose }: FormProps) => {
const { currentWorkspace } = useWorkspace();
const { currentProject } = useProject();
const [searchRoles, setSearchRoles] = useState("");
@@ -255,7 +255,7 @@ const GroupRolesForm = ({ projectRoles, roles, groupId, onClose }: FormProps) =>
try {
await updateGroupWorkspaceRole.mutateAsync({
projectId: currentWorkspace?.id || "",
projectId: currentProject?.id || "",
groupId,
roles: selectedRoles
});
@@ -373,11 +373,11 @@ export const GroupRoles = ({
className,
popperContentProps
}: TMemberRolesProp) => {
const { currentWorkspace } = useWorkspace();
const { currentProject } = useProject();
const { popUp, handlePopUpToggle } = usePopUp(["editRole"] as const);
const { data: projectRoles, isPending: isRolesLoading } = useGetProjectRoles(
currentWorkspace?.id ?? ""
currentProject?.id ?? ""
);
return (
@@ -9,7 +9,7 @@ import {
ProjectPermissionActions,
ProjectPermissionSub,
useSubscription,
useWorkspace
useProject
} from "@app/context";
import { usePopUp } from "@app/hooks";
import { useDeleteGroupFromWorkspace } from "@app/hooks/api";
@@ -19,7 +19,7 @@ import { GroupTable } from "./GroupsTable";
export const GroupsSection = () => {
const { subscription } = useSubscription();
const { currentWorkspace } = useWorkspace();
const { currentProject } = useProject();
const { mutateAsync: deleteMutateAsync } = useDeleteGroupFromWorkspace();
@@ -44,7 +44,7 @@ export const GroupsSection = () => {
try {
await deleteMutateAsync({
groupId,
projectId: currentWorkspace?.id || ""
projectId: currentProject?.id || ""
});
createNotification({
@@ -32,7 +32,7 @@ import {
Tooltip,
Tr
} from "@app/components/v2";
import { ProjectPermissionActions, ProjectPermissionSub, useWorkspace } from "@app/context";
import { ProjectPermissionActions, ProjectPermissionSub, useProject } from "@app/context";
import { getProjectBaseURL } from "@app/helpers/project";
import {
getUserTablePreference,
@@ -61,7 +61,7 @@ enum GroupsOrderBy {
}
export const GroupTable = ({ handlePopUpOpen }: Props) => {
const { currentWorkspace } = useWorkspace();
const { currentProject } = useProject();
const navigate = useNavigate();
const {
@@ -85,7 +85,7 @@ export const GroupTable = ({ handlePopUpOpen }: Props) => {
};
const { data: groupMemberships = [], isPending } = useListWorkspaceGroups(
currentWorkspace?.id || ""
currentProject?.id || ""
);
const filteredGroupMemberships = useMemo(() => {
@@ -159,9 +159,9 @@ export const GroupTable = ({ handlePopUpOpen }: Props) => {
onKeyDown={(evt) => {
if (evt.key === "Enter") {
navigate({
to: `${getProjectBaseURL(currentWorkspace.type)}/groups/$groupId` as const,
to: `${getProjectBaseURL(currentProject.type)}/groups/$groupId` as const,
params: {
projectId: currentWorkspace.id,
projectId: currentProject.id,
groupId: id
}
});
@@ -169,9 +169,9 @@ export const GroupTable = ({ handlePopUpOpen }: Props) => {
}}
onClick={() =>
navigate({
to: `${getProjectBaseURL(currentWorkspace.type)}/groups/$groupId` as const,
to: `${getProjectBaseURL(currentProject.type)}/groups/$groupId` as const,
params: {
projectId: currentWorkspace.id,
projectId: currentProject.id,
groupId: id
}
})
@@ -45,7 +45,7 @@ import {
Tooltip,
Tr
} from "@app/components/v2";
import { ProjectPermissionActions, ProjectPermissionSub, useWorkspace } from "@app/context";
import { ProjectPermissionActions, ProjectPermissionSub, useProject } from "@app/context";
import { getProjectBaseURL } from "@app/helpers/project";
import { formatProjectRoleName } from "@app/helpers/roles";
import {
@@ -57,7 +57,7 @@ import { withProjectPermission } from "@app/hoc";
import { usePagination, useResetPageHelper } from "@app/hooks";
import { useDeleteIdentityFromWorkspace, useGetWorkspaceIdentityMemberships } from "@app/hooks/api";
import { OrderByDirection } from "@app/hooks/api/generic/types";
import { ProjectIdentityOrderBy } from "@app/hooks/api/workspace/types";
import { ProjectIdentityOrderBy } from "@app/hooks/api/projects/types";
import { usePopUp } from "@app/hooks/usePopUp";
import { IdentityModal } from "./components/IdentityModal";
@@ -66,7 +66,7 @@ const MAX_ROLES_TO_BE_SHOWN_IN_TABLE = 2;
export const IdentityTab = withProjectPermission(
() => {
const { currentWorkspace } = useWorkspace();
const { currentProject, projectId } = useProject();
const navigate = useNavigate();
const {
@@ -92,11 +92,9 @@ export const IdentityTab = withProjectPermission(
setUserTablePreference("projectIdentityTable", PreferenceKey.PerPage, newPerPage);
};
const workspaceId = currentWorkspace?.id ?? "";
const { data, isPending, isFetching } = useGetWorkspaceIdentityMemberships(
{
workspaceId: currentWorkspace?.id || "",
projectId,
offset,
limit,
orderDirection,
@@ -126,7 +124,7 @@ export const IdentityTab = withProjectPermission(
try {
await deleteMutateAsync({
identityId,
workspaceId
projectId
});
createNotification({
@@ -261,9 +259,9 @@ export const IdentityTab = withProjectPermission(
onKeyDown={(evt) => {
if (evt.key === "Enter") {
navigate({
to: `${getProjectBaseURL(currentWorkspace.type)}/identities/$identityId` as const,
to: `${getProjectBaseURL(currentProject.type)}/identities/$identityId` as const,
params: {
projectId: currentWorkspace.id,
projectId: currentProject.id,
identityId: id
}
});
@@ -271,9 +269,9 @@ export const IdentityTab = withProjectPermission(
}}
onClick={() =>
navigate({
to: `${getProjectBaseURL(currentWorkspace.type)}/identities/$identityId` as const,
to: `${getProjectBaseURL(currentProject.type)}/identities/$identityId` as const,
params: {
projectId: currentWorkspace.id,
projectId: currentProject.id,
identityId: id
}
})
@@ -14,7 +14,7 @@ import {
ModalContent,
Spinner
} from "@app/components/v2";
import { useOrganization, useWorkspace } from "@app/context";
import { useOrganization, useProject } from "@app/context";
import {
useAddIdentityToWorkspace,
useGetIdentityMembershipOrgs,
@@ -37,10 +37,9 @@ type Props = {
const Content = ({ popUp, handlePopUpToggle }: Props) => {
const { currentOrg } = useOrganization();
const { currentWorkspace } = useWorkspace();
const { projectId } = useProject();
const organizationId = currentOrg?.id || "";
const workspaceId = currentWorkspace?.id || "";
const { data: identityMembershipOrgsData, isPending: isMembershipsLoading } =
useGetIdentityMembershipOrgs({
@@ -49,12 +48,12 @@ const Content = ({ popUp, handlePopUpToggle }: Props) => {
});
const identityMembershipOrgs = identityMembershipOrgsData?.identityMemberships;
const { data: identityMembershipsData } = useGetWorkspaceIdentityMemberships({
workspaceId,
projectId,
limit: 20000 // TODO: this is temp to preserve functionality for larger projects, will optimize in PR referenced above
});
const identityMemberships = identityMembershipsData?.identityMemberships;
const { data: roles, isPending: isRolesLoading } = useGetProjectRoles(workspaceId);
const { data: roles, isPending: isRolesLoading } = useGetProjectRoles(projectId);
const { mutateAsync: addIdentityToWorkspaceMutateAsync } = useAddIdentityToWorkspace();
@@ -80,7 +79,7 @@ const Content = ({ popUp, handlePopUpToggle }: Props) => {
const onFormSubmit = async ({ identity, role }: FormData) => {
try {
await addIdentityToWorkspaceMutateAsync({
workspaceId,
projectId,
identityId: identity.id,
role: role.slug || undefined
});
@@ -22,7 +22,7 @@ import {
OrgPermissionSubjects,
useOrganization,
useOrgPermission,
useWorkspace
useProject
} from "@app/context";
import {
useAddUsersToOrg,
@@ -31,7 +31,7 @@ import {
useGetWorkspaceUsers
} from "@app/hooks/api";
import { ProjectMembershipRole } from "@app/hooks/api/roles/types";
import { ProjectVersion } from "@app/hooks/api/workspace/types";
import { ProjectVersion } from "@app/hooks/api/projects/types";
import { UsePopUpState } from "@app/hooks/usePopUp";
const addMemberFormSchema = z.object({
@@ -57,7 +57,7 @@ type Props = {
export const AddMemberModal = ({ popUp, handlePopUpToggle }: Props) => {
const { t } = useTranslation();
const { currentOrg } = useOrganization();
const { currentWorkspace } = useWorkspace();
const { currentProject } = useProject();
const navigate = useNavigate({ from: "" });
const { permission } = useOrgPermission();
const requesterEmail = useSearch({
@@ -66,12 +66,12 @@ export const AddMemberModal = ({ popUp, handlePopUpToggle }: Props) => {
});
const orgId = currentOrg?.id || "";
const workspaceId = currentWorkspace?.id || "";
const workspaceId = currentProject?.id || "";
const { data: members } = useGetWorkspaceUsers(workspaceId);
const { data: orgUsers } = useGetOrgUsers(orgId);
const { data: roles } = useGetProjectRoles(currentWorkspace?.id || "");
const { data: roles } = useGetProjectRoles(currentProject?.id || "");
const {
control,
@@ -94,7 +94,7 @@ export const AddMemberModal = ({ popUp, handlePopUpToggle }: Props) => {
}, [requesterEmail]);
const onAddMembers = async ({ orgMemberships, projectRoleSlugs }: TAddMemberForm) => {
if (!currentWorkspace) return;
if (!currentProject) return;
if (!currentOrg?.id) return;
const existingMembers = orgMemberships.filter((membership) => !membership.isNewInvitee);
@@ -109,7 +109,7 @@ export const AddMemberModal = ({ popUp, handlePopUpToggle }: Props) => {
if (!selectedMembers) return;
try {
if (currentWorkspace.version === ProjectVersion.V1) {
if (currentProject.version === ProjectVersion.V1) {
createNotification({
type: "error",
text: "Please upgrade your project to invite new members to the project."
@@ -146,8 +146,8 @@ export const AddMemberModal = ({ popUp, handlePopUpToggle }: Props) => {
organizationRoleSlug: ProjectMembershipRole.Member, // only applies to new invites
projects: [
{
slug: currentWorkspace.slug,
id: currentWorkspace.id,
slug: currentProject.slug,
id: currentProject.id,
projectRoleSlug: projectRoleSlugs.map((role) => role.slug)
}
]
@@ -31,12 +31,12 @@ import {
ProjectPermissionSub,
useProjectPermission,
useSubscription,
useWorkspace
useProject
} from "@app/context";
import { useGetProjectRoles, useUpdateUserWorkspaceRole } from "@app/hooks/api";
import { ProjectMembershipRole } from "@app/hooks/api/roles/types";
import { TWorkspaceUser } from "@app/hooks/api/types";
import { ProjectUserMembershipTemporaryMode } from "@app/hooks/api/workspace/types";
import { ProjectUserMembershipTemporaryMode } from "@app/hooks/api/projects/types";
const roleFormSchema = z.object({
roles: z
@@ -64,9 +64,8 @@ type Props = {
};
export const MemberRbacSection = ({ projectMember, onOpenUpgradeModal }: Props) => {
const { subscription } = useSubscription();
const { currentWorkspace } = useWorkspace();
const workspaceId = currentWorkspace?.id || "";
const { data: projectRoles, isPending: isRolesLoading } = useGetProjectRoles(workspaceId);
const { projectId } = useProject();
const { data: projectRoles, isPending: isRolesLoading } = useGetProjectRoles(projectId);
const { permission } = useProjectPermission();
const isMemberEditDisabled = permission.cannot(
ProjectPermissionMemberActions.Edit,
@@ -130,7 +129,7 @@ export const MemberRbacSection = ({ projectMember, onOpenUpgradeModal }: Props)
try {
await updateMembershipRole.mutateAsync({
workspaceId,
projectId,
membershipId: projectMember.id,
roles: sanitizedRoles
});
@@ -1,7 +1,7 @@
import { Link } from "@tanstack/react-router";
import { Alert, AlertDescription } from "@app/components/v2";
import { useWorkspace } from "@app/context";
import { useProject } from "@app/context";
import { getProjectBaseURL } from "@app/helpers/project";
import { TWorkspaceUser } from "@app/hooks/api/types";
@@ -12,7 +12,7 @@ type Props = {
onOpenUpgradeModal: (title: string) => void;
};
export const MemberRoleForm = ({ projectMember, onOpenUpgradeModal }: Props) => {
const { currentWorkspace } = useWorkspace();
const { currentProject } = useProject();
return (
<div>
<MemberRbacSection projectMember={projectMember} onOpenUpgradeModal={onOpenUpgradeModal} />
@@ -22,9 +22,9 @@ export const MemberRoleForm = ({ projectMember, onOpenUpgradeModal }: Props) =>
>
<AlertDescription>
<Link
to={`${getProjectBaseURL(currentWorkspace.type)}/members/$membershipId` as const}
to={`${getProjectBaseURL(currentProject.type)}/members/$membershipId` as const}
params={{
projectId: currentWorkspace.id,
projectId: currentProject.id,
membershipId: projectMember.id
}}
>
@@ -44,7 +44,7 @@ import {
ProjectPermissionMemberActions,
ProjectPermissionSub,
useProjectPermission,
useWorkspace
useProject
} from "@app/context";
import { removeTrailingSlash } from "@app/helpers/string";
import { usePopUp } from "@app/hooks";
@@ -89,7 +89,7 @@ export const SpecificPrivilegeSecretForm = ({
secretPath?: string;
onClose?: () => void;
}) => {
const { currentWorkspace } = useWorkspace();
const { currentProject } = useProject();
const { popUp, handlePopUpOpen, handlePopUpToggle, handlePopUpClose } = usePopUp([
"deletePrivilege",
@@ -129,7 +129,7 @@ export const SpecificPrivilegeSecretForm = ({
temporaryAccess: privilege
}
: {
environmentSlug: currentWorkspace.environments?.[0]?.slug,
environmentSlug: currentProject.environments?.[0]?.slug,
secretPath: initialSecretPath,
read: selectedActions.includes(ProjectPermissionActions.Read),
edit: selectedActions.includes(ProjectPermissionActions.Edit),
@@ -202,7 +202,7 @@ export const SpecificPrivilegeSecretForm = ({
// This is used for requesting access additional privileges, not directly creating a privilege!
const handleRequestAccess = async (data: TSecretPermissionForm) => {
if (!policies) return;
if (!currentWorkspace) {
if (!currentProject) {
createNotification({
type: "error",
text: "No workspace found.",
@@ -253,7 +253,7 @@ export const SpecificPrivilegeSecretForm = ({
...(data.temporaryAccess.isTemporary && {
temporaryRange: data.temporaryAccess.temporaryRange
}),
projectSlug: currentWorkspace.slug,
projectSlug: currentProject.slug,
isTemporary: data.temporaryAccess.isTemporary,
permissions: actions
.filter(({ allowed }) => allowed)
@@ -307,7 +307,7 @@ export const SpecificPrivilegeSecretForm = ({
position="popper"
dropdownContainerClassName="max-w-none"
>
{currentWorkspace?.environments?.map(({ slug, id, name }) => (
{currentProject?.environments?.map(({ slug, id, name }) => (
<SelectItem value={slug} key={id}>
{name}
</SelectItem>
@@ -9,7 +9,7 @@ import {
ProjectPermissionActions,
ProjectPermissionSub,
useOrganization,
useWorkspace
useProject
} from "@app/context";
import { usePopUp } from "@app/hooks";
import { useDeleteUserFromWorkspace } from "@app/hooks/api";
@@ -19,7 +19,7 @@ import { MembersTable } from "./MembersTable";
export const MembersSection = () => {
const { currentOrg } = useOrganization();
const { currentWorkspace } = useWorkspace();
const { currentProject } = useProject();
const { mutateAsync: removeUserFromWorkspace } = useDeleteUserFromWorkspace();
@@ -32,11 +32,11 @@ export const MembersSection = () => {
const handleRemoveUser = async () => {
const username = (popUp?.removeMember?.data as { username: string })?.username;
if (!currentOrg?.id) return;
if (!currentWorkspace?.id) return;
if (!currentProject?.id) return;
try {
await removeUserFromWorkspace({
workspaceId: currentWorkspace.id,
projectId: currentProject.id,
usernames: [username],
orgId: currentOrg.id
});
@@ -44,12 +44,7 @@ import {
Tooltip,
Tr
} from "@app/components/v2";
import {
ProjectPermissionActions,
ProjectPermissionSub,
useUser,
useWorkspace
} from "@app/context";
import { ProjectPermissionActions, ProjectPermissionSub, useUser, useProject } from "@app/context";
import { getProjectBaseURL } from "@app/helpers/project";
import { formatProjectRoleName } from "@app/helpers/roles";
import {
@@ -81,7 +76,7 @@ type Filter = {
};
export const MembersTable = ({ handlePopUpOpen }: Props) => {
const { currentWorkspace } = useWorkspace();
const { currentProject } = useProject();
const { user } = useUser();
const navigate = useNavigate();
const [filter, setFilter] = useState<Filter>({
@@ -90,7 +85,7 @@ export const MembersTable = ({ handlePopUpOpen }: Props) => {
const filterRoles = useMemo(() => filter.roles, [filter.roles]);
const userId = user?.id || "";
const workspaceId = currentWorkspace?.id || "";
const workspaceId = currentProject?.id || "";
const { data: projectRoles } = useGetProjectRoles(workspaceId);
const {
@@ -312,7 +307,7 @@ export const MembersTable = ({ handlePopUpOpen }: Props) => {
onKeyDown={(evt) => {
if (evt.key === "Enter") {
navigate({
to: `${getProjectBaseURL(currentWorkspace.type)}/members/$membershipId`,
to: `${getProjectBaseURL(currentProject.type)}/members/$membershipId`,
params: {
projectId: workspaceId,
membershipId
@@ -322,7 +317,7 @@ export const MembersTable = ({ handlePopUpOpen }: Props) => {
}}
onClick={() =>
navigate({
to: `${getProjectBaseURL(currentWorkspace.type)}/members/$membershipId`,
to: `${getProjectBaseURL(currentProject.type)}/members/$membershipId`,
params: {
projectId: workspaceId,
membershipId
@@ -39,7 +39,7 @@ import {
Tooltip,
Tr
} from "@app/components/v2";
import { ProjectPermissionActions, ProjectPermissionSub, useWorkspace } from "@app/context";
import { ProjectPermissionActions, ProjectPermissionSub, useProject } from "@app/context";
import { getProjectBaseURL } from "@app/helpers/project";
import { isCustomProjectRole } from "@app/helpers/roles";
import {
@@ -67,8 +67,8 @@ export const ProjectRoleList = () => {
"deleteRole",
"duplicateRole"
] as const);
const { currentWorkspace } = useWorkspace();
const projectId = currentWorkspace?.id || "";
const { currentProject } = useProject();
const projectId = currentProject?.id || "";
const { data: roles, isPending: isRolesLoading } = useGetProjectRoles(projectId);
@@ -250,9 +250,9 @@ export const ProjectRoleList = () => {
className="h-10 cursor-pointer transition-colors duration-100 hover:bg-mineshaft-700"
onClick={() =>
navigate({
to: `${getProjectBaseURL(currentWorkspace.type)}/roles/$roleSlug`,
to: `${getProjectBaseURL(currentProject.type)}/roles/$roleSlug`,
params: {
projectId: currentWorkspace.id,
projectId: currentProject.id,
roleSlug: slug
}
})
@@ -292,9 +292,9 @@ export const ProjectRoleList = () => {
onClick={(e) => {
e.stopPropagation();
navigate({
to: `${getProjectBaseURL(currentWorkspace.type)}/roles/$roleSlug`,
to: `${getProjectBaseURL(currentProject.type)}/roles/$roleSlug`,
params: {
projectId: currentWorkspace.id,
projectId: currentProject.id,
roleSlug: slug
}
});
@@ -22,7 +22,7 @@ import {
Select,
SelectItem
} from "@app/components/v2";
import { useWorkspace } from "@app/context";
import { useProject } from "@app/context";
import { useToggle } from "@app/hooks";
import { useCreateServiceToken } from "@app/hooks/api";
import { UsePopUpState } from "@app/hooks/usePopUp";
@@ -70,7 +70,7 @@ type Props = {
const ServiceTokenForm = () => {
const { t } = useTranslation();
const { currentWorkspace } = useWorkspace();
const { currentProject } = useProject();
const {
control,
handleSubmit,
@@ -81,7 +81,7 @@ const ServiceTokenForm = () => {
scopes: [
{
secretPath: "/",
environment: currentWorkspace?.environments?.[0]?.slug
environment: currentProject?.environments?.[0]?.slug
}
]
}
@@ -111,7 +111,7 @@ const ServiceTokenForm = () => {
const onFormSubmit = async ({ name, scopes, expiresIn, permissions }: FormData) => {
try {
if (!currentWorkspace?.id) return;
if (!currentProject?.id) return;
const randomBytes = crypto.randomBytes(16).toString("hex");
@@ -122,7 +122,7 @@ const ServiceTokenForm = () => {
scopes,
expiresIn: Number(expiresIn),
name,
workspaceId: currentWorkspace.id,
workspaceId: currentProject.id,
randomBytes,
permissions: Object.entries(permissions)
.filter(([, permissionsValue]) => permissionsValue)
@@ -172,7 +172,7 @@ const ServiceTokenForm = () => {
<Controller
control={control}
name={`scopes.${index}.environment`}
defaultValue={currentWorkspace?.environments?.[0]?.slug}
defaultValue={currentProject?.environments?.[0]?.slug}
render={({ field: { onChange, ...field }, fieldState: { error } }) => (
<FormControl
className="mb-0"
@@ -186,7 +186,7 @@ const ServiceTokenForm = () => {
onValueChange={(e) => onChange(e)}
className="w-full"
>
{currentWorkspace?.environments.map(({ name, slug }) => (
{currentProject?.environments.map(({ name, slug }) => (
<SelectItem value={slug} key={slug}>
{name}
</SelectItem>
@@ -225,7 +225,7 @@ const ServiceTokenForm = () => {
variant="outline_bg"
onClick={() =>
append({
environment: currentWorkspace?.environments?.[0]?.slug || "",
environment: currentProject?.environments?.[0]?.slug || "",
secretPath: ""
})
}
@@ -334,7 +334,7 @@ const ServiceTokenForm = () => {
export const AddServiceTokenModal = ({ popUp, handlePopUpToggle }: Props) => {
const { t } = useTranslation();
const { currentWorkspace } = useWorkspace();
const { currentProject } = useProject();
return (
<Modal
@@ -346,7 +346,7 @@ export const AddServiceTokenModal = ({ popUp, handlePopUpToggle }: Props) => {
<ModalContent
title={
t("section.token.add-dialog.title", {
target: currentWorkspace?.name
target: currentProject?.name
}) as string
}
subTitle={t("section.token.add-dialog.description") as string}
@@ -33,7 +33,7 @@ import {
Tooltip,
Tr
} from "@app/components/v2";
import { ProjectPermissionActions, ProjectPermissionSub, useWorkspace } from "@app/context";
import { ProjectPermissionActions, ProjectPermissionSub, useProject } from "@app/context";
import {
getUserTablePreference,
PreferenceKey,
@@ -63,9 +63,9 @@ enum TokensOrderBy {
}
export const ServiceTokenTable = ({ handlePopUpOpen }: Props) => {
const { currentWorkspace } = useWorkspace();
const { currentProject } = useProject();
const { data, isPending } = useGetUserWsServiceTokens({
workspaceID: currentWorkspace?.id || ""
workspaceID: currentProject?.id || ""
});
const {