feat(validation): record independent discovery votes during catalog adds

- Add vote tracking when users add an existing global car entry
- Guard against duplicate votes by checking user_id + hw_id first
- Keep new-discovery flow voting unchanged while extending repeated-add validation
- Align scanner business flow with TPB community verification model
This commit is contained in:
Lukas Müllner 2026-03-04 10:48:24 +01:00
parent 99da5cf1ca
commit d4883c1d32

View file

@ -340,6 +340,7 @@ class ScanTabState extends State<ScanTab> {
if (addConfirmed == true) {
await _addToCollection(collection.id, hwId);
await _ensureValidationVote(hwId);
if (!mounted) return false;
showGlobalSnackBar('$hwId added to "${collection.name}"! 🎉');
}
@ -410,6 +411,23 @@ class ScanTabState extends State<ScanTab> {
'user_id': supabase.auth.currentUser!.id,
});
}
Future<void> _ensureValidationVote(String hwId) async {
final userId = supabase.auth.currentUser!.id;
final existingVote = await supabase
.from('car_votes')
.select('id')
.eq('hw_id', hwId)
.eq('user_id', userId)
.maybeSingle();
if (existingVote != null) return;
await supabase.from('car_votes').insert({
'hw_id': hwId,
'user_id': userId,
});
}
}
class _FoundCarSheet extends StatelessWidget {