// Automatic FlutterFlow imports
import '/backend/schema/structs/index.dart';
import '/flutter_flow/flutter_flow_theme.dart';
import '/flutter_flow/flutter_flow_util.dart';
import 'index.dart'; // Imports other custom actions
import '/flutter_flow/custom_functions.dart'; // Imports custom functions
import 'package:flutter/material.dart';
// Begin custom action code
// DO NOT REMOVE OR MODIFY THE CODE ABOVE!

import 'dart:async';
import 'package:http/http.dart' as http;

/// Kijkt of de server bereikbaar is en zet App State `geenVerbinding`.
/// Geeft true terug als de verbinding in orde is.
///
/// Bewust een HEAD-request op de site-root: die levert 0 bytes body op en
/// antwoordt in ongeveer 60 ms, dus dit is verwaarloosbaar naast de gewone
/// data-calls. We kijken alleen of de server antwoordt, niet wat hij zegt.
Future<bool> checkVerbinding() async {
  final basis = FFAppState().apiBaseUrl.trim().isEmpty
      ? 'https://uitgaanskrant.com'
      : FFAppState().apiBaseUrl.trim();

  bool bereikbaar;
  try {
    final response = await http
        .head(Uri.parse(basis))
        .timeout(const Duration(seconds: 6));
    // Elke echte HTTP-reactie betekent dat we de server hebben bereikt.
    // Alleen een 5xx rekenen we als 'niet bruikbaar'.
    bereikbaar = response.statusCode < 500;
  } catch (_) {
    // Geen netwerk, DNS-fout, timeout, certificaatfout: allemaal 'geen verbinding'.
    bereikbaar = false;
  }

  final nieuweWaarde = !bereikbaar;
  if (FFAppState().geenVerbinding != nieuweWaarde) {
    // update() roept notifyListeners() aan; zonder dat merkt de banner niets.
    FFAppState().update(() {
      FFAppState().geenVerbinding = nieuweWaarde;
    });
  }

  return bereikbaar;
}
