import 'dart:convert'; import 'package:hive_flutter/hive_flutter.dart'; import 'package:intl/intl.dart'; import '../local/hive_boxes.dart'; /// Lightweight local analytics sink for notification events. class NotificationAnalyticsService { NotificationAnalyticsService._(); static final NotificationAnalyticsService instance = NotificationAnalyticsService._(); Box get _box => Hive.box(HiveBoxes.notificationRuntime); Future track( String event, { Map dimensions = const {}, }) async { final date = DateFormat('yyyy-MM-dd').format(DateTime.now()); final counterKey = 'analytics.$date.$event'; final current = (_box.get(counterKey) as int?) ?? 0; await _box.put(counterKey, current + 1); // Keep a small rolling audit buffer for debug support. final raw = (_box.get('analytics.recent') ?? '[]').toString(); final decoded = json.decode(raw); final list = decoded is List ? decoded : []; list.add({ 'event': event, 'at': DateTime.now().toIso8601String(), 'dimensions': dimensions, }); while (list.length > 100) { list.removeAt(0); } await _box.put('analytics.recent', json.encode(list)); } }