performFullCheck method
Kiểm tra toàn diện trước khi call API (CHẬM - dùng cho lần đầu) ⚠️ CHỈ dùng khi cần kiểm tra đầy đủ (login, first load, manual refresh)
Implementation
Future<InternetCheckResult> performFullCheck({
double minimumSpeedKBps = 100.0,
bool checkSpeed = true,
}) async {
// 1. ✅ Kiểm tra connectivity (version 7.0.0)
final connectivityResults = await checkConnectivity();
if (!hasActiveConnection(connectivityResults)) {
return InternetCheckResult(
isValid: false,
message:
'Không có kết nối internet. Vui lòng kiểm tra WiFi hoặc dữ liệu di động.',
errorType: InternetErrorType.noConnection,
connectionType: 'Không có kết nối',
);
}
// 2. Kiểm tra internet thực sự có hoạt động không
final hasInternet = await hasInternetConnection();
if (!hasInternet) {
return InternetCheckResult(
isValid: false,
message:
'Không thể kết nối đến máy chủ. Vui lòng kiểm tra kết nối internet.',
errorType: InternetErrorType.noInternet,
connectionType: getConnectionType(connectivityResults),
);
}
// 3. Kiểm tra VPN
final isVPN = await isUsingVPN();
// 4. Kiểm tra tốc độ (nếu yêu cầu)
if (checkSpeed) {
final speed = await checkInternetSpeed();
if (speed == null) {
return InternetCheckResult(
isValid: false,
message: 'Không thể kiểm tra tốc độ internet. Vui lòng thử lại.',
errorType: InternetErrorType.speedTestFailed,
isUsingVPN: isVPN,
connectionType: getConnectionType(connectivityResults),
);
}
if (speed < minimumSpeedKBps) {
return InternetCheckResult(
isValid: false,
message:
'Kết nối internet quá chậm (${speed.toStringAsFixed(1)} KB/s). Tốc độ tối thiểu: ${minimumSpeedKBps.toStringAsFixed(0)} KB/s.',
errorType: InternetErrorType.slowConnection,
speed: speed,
isUsingVPN: isVPN,
connectionType: getConnectionType(connectivityResults),
);
}
}
// 5. Tất cả OK
return InternetCheckResult(
isValid: true,
message: 'Kết nối internet ổn định',
errorType: InternetErrorType.none,
isUsingVPN: isVPN,
connectionType: getConnectionType(connectivityResults),
);
}