79 lines
2.3 KiB
Dart
79 lines
2.3 KiB
Dart
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<bool> 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<bool> 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<bool> 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<List<String>> getBlockedNumbers() async {
|
|
try {
|
|
final prefs = await SharedPreferences.getInstance();
|
|
return prefs.getStringList(_blockedNumbersKey) ?? [];
|
|
} catch (e) {
|
|
debugPrint('Error getting blocked numbers: $e');
|
|
return [];
|
|
}
|
|
}
|
|
}
|