fix: use rpc-backed lookup for member removal

This commit is contained in:
Lukas Müllner 2026-03-05 11:19:41 +01:00
parent 943f08e92b
commit d03e276ddf

View file

@ -374,24 +374,22 @@ class CollectionService {
throw Exception('Collection owner cannot be removed.'); throw Exception('Collection owner cannot be removed.');
} }
final targetMembership = await supabase final members = await getMembers(collectionId);
.from('collection_members') final targetMembership = members.where((member) => member.userId == memberUserId);
.select('id, role')
.eq('collection_id', collectionId)
.eq('user_id', memberUserId)
.maybeSingle();
if (targetMembership == null) { if (targetMembership.isEmpty) {
throw Exception('Member not found in this collection.'); throw Exception('Member not found in this collection.');
} }
if (targetMembership['role'] == 'owner') { final target = targetMembership.first;
if (target.role == 'owner') {
throw Exception('Collection owner cannot be removed.'); throw Exception('Collection owner cannot be removed.');
} }
final deleted = await supabase final deleted = await supabase
.from('collection_members') .from('collection_members')
.delete() .delete()
.eq('id', targetMembership['id'] as String) .eq('collection_id', collectionId)
.eq('user_id', memberUserId)
.select('id'); .select('id');
if (deleted.isEmpty) { if (deleted.isEmpty) {