Spaces:
Running
Running
fix: Type conversion errors for TrustedMember UUID and created_at column fetching
Browse files
backend/routes/trusted_circle.py
CHANGED
|
@@ -101,13 +101,13 @@ async def get_trusted_members(
|
|
| 101 |
members = db.query(TrustedMember).filter(
|
| 102 |
TrustedMember.user_id == current_user.id,
|
| 103 |
TrustedMember.is_active == True
|
| 104 |
-
).order_by(TrustedMember.
|
| 105 |
|
| 106 |
-
return [{"id": m.id, "email": m.email, "joined_at": m.
|
| 107 |
|
| 108 |
@router.delete("/trusted-circle/{member_id}")
|
| 109 |
async def remove_trusted_member(
|
| 110 |
-
member_id:
|
| 111 |
current_user: User = Depends(get_current_user),
|
| 112 |
db: Session = Depends(get_db)
|
| 113 |
):
|
|
|
|
| 101 |
members = db.query(TrustedMember).filter(
|
| 102 |
TrustedMember.user_id == current_user.id,
|
| 103 |
TrustedMember.is_active == True
|
| 104 |
+
).order_by(TrustedMember.created_at.desc()).all()
|
| 105 |
|
| 106 |
+
return [{"id": m.id, "email": m.email, "joined_at": m.created_at.isoformat()} for m in members]
|
| 107 |
|
| 108 |
@router.delete("/trusted-circle/{member_id}")
|
| 109 |
async def remove_trusted_member(
|
| 110 |
+
member_id: str,
|
| 111 |
current_user: User = Depends(get_current_user),
|
| 112 |
db: Session = Depends(get_db)
|
| 113 |
):
|
frontend/app/settings/page.tsx
CHANGED
|
@@ -12,7 +12,7 @@ export default function SettingsPage() {
|
|
| 12 |
const [isInviting, setIsInviting] = useState(false);
|
| 13 |
const [inviteSuccess, setInviteSuccess] = useState(false);
|
| 14 |
const [inviteError, setInviteError] = useState("");
|
| 15 |
-
const [trustedMembers, setTrustedMembers] = useState<{id:
|
| 16 |
|
| 17 |
const fetchMembers = async () => {
|
| 18 |
try {
|
|
@@ -46,7 +46,7 @@ export default function SettingsPage() {
|
|
| 46 |
}
|
| 47 |
};
|
| 48 |
|
| 49 |
-
const handleRemoveMember = async (id:
|
| 50 |
try {
|
| 51 |
await api.removeTrustedMember(id);
|
| 52 |
fetchMembers();
|
|
|
|
| 12 |
const [isInviting, setIsInviting] = useState(false);
|
| 13 |
const [inviteSuccess, setInviteSuccess] = useState(false);
|
| 14 |
const [inviteError, setInviteError] = useState("");
|
| 15 |
+
const [trustedMembers, setTrustedMembers] = useState<{id: string, email: string}[]>([]);
|
| 16 |
|
| 17 |
const fetchMembers = async () => {
|
| 18 |
try {
|
|
|
|
| 46 |
}
|
| 47 |
};
|
| 48 |
|
| 49 |
+
const handleRemoveMember = async (id: string) => {
|
| 50 |
try {
|
| 51 |
await api.removeTrustedMember(id);
|
| 52 |
fetchMembers();
|
frontend/lib/api.ts
CHANGED
|
@@ -154,9 +154,9 @@ export const api = {
|
|
| 154 |
apiPost<{ success: boolean; message: string }>("/api/trusted-circle/invite", { email }),
|
| 155 |
|
| 156 |
getTrustedMembers: () =>
|
| 157 |
-
apiGet<{ id:
|
| 158 |
|
| 159 |
-
removeTrustedMember: (id:
|
| 160 |
apiDelete<{ success: boolean; message: string }>(`/api/trusted-circle/${id}`),
|
| 161 |
|
| 162 |
broadcastWeeklyReport: () =>
|
|
|
|
| 154 |
apiPost<{ success: boolean; message: string }>("/api/trusted-circle/invite", { email }),
|
| 155 |
|
| 156 |
getTrustedMembers: () =>
|
| 157 |
+
apiGet<{ id: string; email: string; joined_at: string }[]>("/api/trusted-circle"),
|
| 158 |
|
| 159 |
+
removeTrustedMember: (id: string) =>
|
| 160 |
apiDelete<{ success: boolean; message: string }>(`/api/trusted-circle/${id}`),
|
| 161 |
|
| 162 |
broadcastWeeklyReport: () =>
|