Skip to content

Commit e8b7731

Browse files
authored
Merge pull request #1643 from thunderstore-io/team-settings-cleanup
Team settings cleanup
2 parents 3859fea + 3812a8f commit e8b7731

File tree

4 files changed

+28
-56
lines changed

4 files changed

+28
-56
lines changed

apps/cyberstorm-remix/app/p/components/TeamMembers/TeamMembers.tsx

Lines changed: 0 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -74,31 +74,6 @@ function PackageTeamListItem(props: PackageTeamListItemProps) {
7474
</div>
7575
</div>
7676
);
77-
78-
// TODO: Enable when user page is available
79-
// return (
80-
// <NewLink
81-
// primitiveType="cyberstormLink"
82-
// linkId="User"
83-
// user={teamMember.username}
84-
// rootClasses={styles.item}
85-
// >
86-
// <Avatar username={teamMember.username} src={teamMember.avatar} />
87-
// <div className={styles.itemTitleWrapper}>
88-
// <div className={styles.itemTitle}>
89-
// <span className={styles.itemTitleUsername}>
90-
// {teamMember.username}
91-
// </span>
92-
// {teamMember.role === "owner" ? (
93-
// <NewIcon csMode="inline" noWrapper rootClasses={styles.crown}>
94-
// <FontAwesomeIcon icon={faCrown} />
95-
// </NewIcon>
96-
// ) : null}
97-
// </div>
98-
// <div className={styles.itemDescription}>{teamMember.role}</div>
99-
// </div>
100-
// </NewLink>
101-
// );
10277
}
10378

10479
function compare(a: TeamMember, b: TeamMember) {

apps/cyberstorm-remix/app/settings/teams/team/tabs/Members/MembersTable.tsx

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import {
2424
import { ApiAction } from "@thunderstore/ts-api-react-actions";
2525

2626
import { type OutletContextShape } from "app/root";
27+
import { isTeamOwner } from "cyberstorm/utils/permissions";
2728

2829
const teamMemberColumns = [
2930
{ value: "User", disableSort: false },
@@ -47,8 +48,7 @@ export function MembersTable(props: {
4748
const toast = useToast();
4849

4950
const currentUser = outletContext.currentUser;
50-
const membership = currentUser?.teams_full.find((t) => t.name === teamName);
51-
const isOwner = membership?.role === "owner";
51+
const isOwner = isTeamOwner(teamName, currentUser);
5252

5353
const canManageMember = (username: string) =>
5454
isOwner && currentUser?.username !== username;
@@ -85,20 +85,17 @@ export function MembersTable(props: {
8585
return [
8686
{
8787
value: (
88-
<NewLink
89-
primitiveType="cyberstormLink"
90-
linkId="User"
88+
<div
9189
key={`user_${member.username}_${index}`}
92-
user={member.username}
93-
rootClasses="members__user"
90+
className="members__user"
9491
>
9592
<NewAvatar
9693
src={member.avatar}
9794
username={member.username}
9895
csSize="small"
9996
/>
10097
<span>{member.username}</span>
101-
</NewLink>
98+
</div>
10299
),
103100
sortValue: member.username,
104101
},

apps/cyberstorm-remix/app/settings/teams/team/tabs/ServiceAccounts/ServiceAccountRemoveModal.tsx

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,22 @@
1-
import "./ServiceAccounts.css";
2-
import { NewAlert, NewButton, Modal, NewIcon } from "@thunderstore/cyberstorm";
3-
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
41
import { faTrash } from "@fortawesome/free-solid-svg-icons";
5-
import { useToast } from "@thunderstore/cyberstorm";
6-
import { teamServiceAccountRemove } from "@thunderstore/thunderstore-api";
2+
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
3+
4+
import {
5+
NewAlert,
6+
NewButton,
7+
Modal,
8+
NewIcon,
9+
useToast,
10+
} from "@thunderstore/cyberstorm";
11+
import {
12+
type TeamServiceAccount,
13+
teamServiceAccountRemove,
14+
} from "@thunderstore/thunderstore-api";
715
import { ApiAction } from "@thunderstore/ts-api-react-actions";
8-
import { type OutletContextShape } from "~/root";
9-
import { type TeamServiceAccount } from "@thunderstore/thunderstore-api";
16+
17+
import { type OutletContextShape } from "app/root";
18+
import { isTeamOwner } from "cyberstorm/utils/permissions";
19+
import "./ServiceAccounts.css";
1020

1121
interface ServiceAccountRemoveModalProps {
1222
serviceAccount: TeamServiceAccount;
@@ -23,15 +33,6 @@ export function ServiceAccountRemoveModal({
2333
}: ServiceAccountRemoveModalProps) {
2434
const toast = useToast();
2535

26-
const canDelete = () => {
27-
const teams = outletContext.currentUser?.teams_full || [];
28-
const belongingTeam = teams.find((team) => team.name === teamName);
29-
if (!belongingTeam) {
30-
return false;
31-
}
32-
return belongingTeam.role === "owner";
33-
};
34-
3536
const removeServiceAccountAction = ApiAction({
3637
endpoint: teamServiceAccountRemove,
3738
onSubmitSuccess: () => {
@@ -55,7 +56,7 @@ export function ServiceAccountRemoveModal({
5556
<Modal
5657
titleContent="Confirm service account removal"
5758
trigger={
58-
canDelete() && ( // Only show trigger if user can delete
59+
isTeamOwner(teamName, outletContext.currentUser) && ( // Only show trigger if user can delete
5960
<NewButton csVariant="danger" csSize="xsmall">
6061
<NewIcon csMode="inline" noWrapper>
6162
<FontAwesomeIcon icon={faTrash} />

apps/cyberstorm-remix/app/settings/teams/team/tabs/ServiceAccounts/ServiceAccounts.tsx

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import {
2323

2424
import { type OutletContextShape } from "app/root";
2525
import { makeTeamSettingsTabLoader } from "cyberstorm/utils/dapperClientLoaders";
26+
import { isTeamOwner } from "cyberstorm/utils/permissions";
2627
import { useStrongForm } from "cyberstorm/utils/StrongForm/useStrongForm";
2728
import { ServiceAccountsTable } from "./ServiceAccountsTable";
2829
import "./ServiceAccounts.css";
@@ -84,11 +85,7 @@ function AddServiceAccountForm(props: {
8485
useState("");
8586
const [error, setError] = useState<string | null>(null);
8687

87-
const currentUserTeam = outletContext.currentUser?.teams_full?.find(
88-
(team) => team.name === props.teamName
89-
);
90-
91-
if (currentUserTeam?.role !== "owner") {
88+
if (!isTeamOwner(props.teamName, outletContext.currentUser)) {
9289
return null;
9390
}
9491

@@ -182,7 +179,9 @@ function AddServiceAccountForm(props: {
182179
</NewButton>
183180
}
184181
csSize="small"
185-
titleContent="Add service account"
182+
titleContent={
183+
serviceAccountAdded ? "Service Account Added" : "Add Service Account"
184+
}
186185
>
187186
{serviceAccountAdded ? (
188187
<Modal.Body>

0 commit comments

Comments
 (0)