Skip to content

Commit 2bb63c9

Browse files
committed
Add remove functionality to EditModal
1 parent 08bafd3 commit 2bb63c9

3 files changed

Lines changed: 39 additions & 21 deletions

File tree

backend/postgres/circles_repo.go

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -231,27 +231,44 @@ func EditRoleInCircle(circleID string, targetUserID string, role string) error {
231231
}
232232
defer conn.Release()
233233

234-
err = conn.QueryRow(
235-
ctx,
236-
`
234+
if role == "remove" {
235+
_, err = conn.Exec(
236+
ctx,
237+
`
238+
DELETE FROM users_circles
239+
WHERE user_id = $1 AND circle_id = $2;
240+
`,
241+
targetUserID,
242+
circleID,
243+
)
244+
if err != nil {
245+
fmt.Fprintf(os.Stderr, "Unable to query PSQL: %v\n", err)
246+
return err
247+
}
248+
fmt.Printf("Role removed\n")
249+
return nil
250+
} else {
251+
err = conn.QueryRow(
252+
ctx,
253+
`
237254
UPDATE users_circles
238255
SET role = $1
239256
WHERE user_id = $2 AND circle_id = $3
240257
RETURNING role;
241258
`,
242-
role,
243-
targetUserID,
244-
circleID,
245-
).Scan(&role)
246-
if err != nil {
247-
fmt.Fprintf(os.Stderr, "Unable to query PSQL: %v\n", err)
248-
return err
259+
role,
260+
targetUserID,
261+
circleID,
262+
).Scan(&role)
263+
if err != nil {
264+
fmt.Fprintf(os.Stderr, "Unable to query PSQL: %v\n", err)
265+
return err
266+
}
267+
fmt.Printf("Role updated: %v\n", role)
268+
return nil
249269
}
250-
fmt.Printf("Role updated: %v\n", role)
251-
return nil
252270
}
253271

254-
255272
func GetRoleInCircle(userID string, circleID string) (string, error) {
256273
var role string
257274
err := pool.QueryRow(
@@ -394,4 +411,4 @@ func SearchCircle(circleID string, content string) ([]models.SearchMessage, erro
394411
return messages[i].CreatedAt > messages[j].CreatedAt
395412
})
396413
return messages, nil
397-
}
414+
}

frontend/app/components/EditModal.tsx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ function EditModal({ isOpen, setOpen, circleId }: InviteModalProps) {
1616
}
1717
const { getAccessToken } = authContext;
1818
const [users, setUsers] = useState<EditUser[]>([]);
19-
19+
2020
useEffect(() => {
2121
async function fetchEditUsers() {
2222
const token = await getAccessToken();
@@ -51,10 +51,10 @@ function EditModal({ isOpen, setOpen, circleId }: InviteModalProps) {
5151
}
5252
fetchEditUsers();
5353
}, [circleId, getAccessToken]);
54-
54+
5555
const handleRoleChange = (userId: string, newRole: string) => {
56-
setUsers(prevUsers =>
57-
prevUsers.map(user =>
56+
setUsers(prevUsers =>
57+
prevUsers.map(user =>
5858
user.id === userId ? { ...user, role: newRole } : user
5959
)
6060
);
@@ -91,7 +91,7 @@ function EditModal({ isOpen, setOpen, circleId }: InviteModalProps) {
9191
};
9292

9393
if (!isOpen) return null;
94-
94+
9595
return (
9696
<div className="mx-auto max-w-screen-xl relative z-10 focus:outline-none">
9797
<form action="#" className="mx-auto mb-4 mt-6 max-w-md space-y-4" onSubmit={handleSubmit}>
@@ -128,13 +128,14 @@ function EditModal({ isOpen, setOpen, circleId }: InviteModalProps) {
128128
>
129129
<option value="member">Member</option>
130130
<option value="admin">Admin</option>
131+
<option value="remove">Remove</option>
131132
</select>
132133
</li>
133134
))}
134135
</ul>
135136
</div>
136137
</div>
137-
138+
138139
<div className="flex items-center justify-between">
139140
<button
140141
type="submit"

frontend/app/components/SearchModal.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
.search-modal {
2-
height: 52vh;
2+
height: 53vh;
33
}
44

55
.search-result-content {

0 commit comments

Comments
 (0)