import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; /// Service for managing blocked phone numbers class BlockService { static const String _blockedNumbersKey = 'blocked_numbers'; // Private constructor BlockService._privateConstructor(); // Singleton instance static final BlockService _instance = BlockService._privateConstructor(); // Factory constructor to return the same instance factory BlockService() { return _instance; } /// Block a phone number Future blockNumber(String phoneNumber) async { try { final prefs = await SharedPreferences.getInstance(); final blockedNumbers = prefs.getStringList(_blockedNumbersKey) ?? []; // Don't add if already blocked if (blockedNumbers.contains(phoneNumber)) { return true; } blockedNumbers.add(phoneNumber); return await prefs.setStringList(_blockedNumbersKey, blockedNumbers); } catch (e) { debugPrint('Error blocking number: $e'); return false; } } /// Unblock a phone number Future unblockNumber(String phoneNumber) async { try { final prefs = await SharedPreferences.getInstance(); final blockedNumbers = prefs.getStringList(_blockedNumbersKey) ?? []; if (!blockedNumbers.contains(phoneNumber)) { return true; } blockedNumbers.remove(phoneNumber); return await prefs.setStringList(_blockedNumbersKey, blockedNumbers); } catch (e) { debugPrint('Error unblocking number: $e'); return false; } } /// Check if a number is blocked Future isNumberBlocked(String phoneNumber) async { try { final prefs = await SharedPreferences.getInstance(); final blockedNumbers = prefs.getStringList(_blockedNumbersKey) ?? []; return blockedNumbers.contains(phoneNumber); } catch (e) { debugPrint('Error checking if number is blocked: $e'); return false; } } /// Get all blocked numbers Future> getBlockedNumbers() async { try { final prefs = await SharedPreferences.getInstance(); return prefs.getStringList(_blockedNumbersKey) ?? []; } catch (e) { debugPrint('Error getting blocked numbers: $e'); return []; } } }