import 'dart:async'; import 'package:yumi/shared/business_logic/models/res/sc_room_rocket_api_res.dart'; import 'package:yumi/shared/data_sources/sources/repositories/sc_room_repository_imp.dart'; class SCRoomRocketRewardPopupAck { static final Set _shownRecordIds = {}; static List filterUnshownRecords( List records, ) { return records .where((record) { final id = record.id.trim(); return id.isEmpty || !_shownRecordIds.contains(id); }) .toList(growable: false); } static List recordIds(List records) { final ids = []; final seen = {}; for (final record in records) { final id = record.id.trim(); if (id.isEmpty || !seen.add(id)) { continue; } ids.add(id); } return ids; } static void markShownAndAck(List records) { final ids = recordIds(records); if (ids.isEmpty) { return; } _shownRecordIds.addAll(ids); unawaited( SCChatRoomRepository() .ackRoomRocketRewardPopups(ids) .catchError((_) => false), ); } }