Skip to content

Commit

Permalink
Remove user from group
Browse files Browse the repository at this point in the history
  • Loading branch information
biancaisc committed Feb 2, 2025
1 parent 02986b4 commit 0a223aa
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 0 deletions.
23 changes: 23 additions & 0 deletions CollectifyFrontend/app/groups/groupmembers.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,14 @@ import {
ApplicationProvider,
Avatar,
Spinner,
Button,
} from '@ui-kitten/components';
import { StyleSheet } from 'react-native';
import * as eva from '@eva-design/eva';
import { getGroupMembers } from '../../services/groupService';
import { getProfile } from '../../services/authService';
import { useLocalSearchParams } from 'expo-router';
import { deleteMemberFromGroup } from '../../services/groupService'; // Import the delete function

type UserProfile = {
id: string;
Expand Down Expand Up @@ -64,6 +66,18 @@ export default function GroupMembersScreen() {
fetchMembers();
}, [groupId, currentUserId]);

// Handle member deletion
const handleDeleteMember = async (memberId: string) => {
try {
await deleteMemberFromGroup(groupId as string, memberId);
// Update the UI after successful deletion
setGroupMembers((prevMembers) => prevMembers.filter((member) => member.id !== memberId));
alert('Member removed successfully.');
} catch (error) {
alert('Failed to remove member.');
}
};

if (error) {
return (
<ApplicationProvider {...eva} theme={eva.light}>
Expand Down Expand Up @@ -101,6 +115,15 @@ export default function GroupMembersScreen() {
accessoryLeft={() => (
<Avatar source={{ uri: item.avatarPath ?? '' }} size="medium" />
)}
accessoryRight={() => (
<Button
status="danger"
size="small"
onPress={() => handleDeleteMember(item.id)} // Call delete when pressed
>
Delete
</Button>
)}
style={styles.listItem}
/>
)}
Expand Down
29 changes: 29 additions & 0 deletions CollectifyFrontend/services/groupService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -176,4 +176,33 @@ export const getGroupMembers = async (groupId: string) => {
console.error('Error fetching the group members:', error);
throw error;
}
};

export const deleteMemberFromGroup = async (groupId: string, memberId: string) => {
try {
const accessToken = await SecureStore.getItemAsync('accessToken');

if (!accessToken) {
throw new Error('Access token is missing. Please log in.');
}

const response = await api.delete('/api/groups/remove_member', {
data: {
groupId: groupId,
memberId: memberId,
},
headers: {
Authorization: `Bearer ${accessToken}`,
},
});

return response.data;
} catch (error) {
if (axios.isAxiosError(error)) {
console.error('Error deleting the member', error.response?.data || error.message);
} else {
console.error('An unknown error occurred:', error);
}
throw error;
}
};

0 comments on commit 0a223aa

Please sign in to comment.