storeCookies method

void storeCookies(
  1. String domain,
  2. List<Cookie> cookies
)

Stores cookies from a response for a domain

Implementation

void storeCookies(String domain, List<Cookie> cookies) {
  if (cookies.isEmpty) return;

  // Get existing cookies for this domain
  final existingCookies = getCookies(domain);
  final cookieMap = {for (var cookie in existingCookies) cookie.name: cookie};

  // Update with new cookies
  for (var cookie in cookies) {
    if (cookie.expires != null && cookie.expires!.isBefore(DateTime.now())) {
      // Cookie is expired, remove it
      cookieMap.remove(cookie.name);
    } else {
      // Update or add the cookie
      cookieMap[cookie.name] = cookie;
    }
  }

  // Convert cookies to a serializable format
  final serializedCookies =
      cookieMap.values.map((cookie) {
        return {
          'name': cookie.name,
          'value': cookie.value,
          'domain': cookie.domain,
          'path': cookie.path,
          'expires': cookie.expires?.millisecondsSinceEpoch,
          'httpOnly': cookie.httpOnly,
          'secure': cookie.secure,
        };
      }).toList();

  // Store the cookies
  _prefs?.setString(_cookieKeyPrefix + domain, jsonEncode(serializedCookies));
}