import 'package:flutter_secure_storage/flutter_secure_storage.dart';

/// Guarda, por bolão, o último código de convite gerado **neste device**.
///
/// Existe porque o servidor guarda o token hasheado de propósito (vazamento do
/// banco não deve dar acesso a bolão nenhum) e portanto **não consegue devolver
/// o código depois**. Sem esta cópia local, a única forma de mostrar o convite
/// de novo seria gerar outro — e gerar revoga o anterior, quebrando o link que
/// o admin já mandou no grupo só porque ele abriu a tela para conferir.
class ConviteStore {
  ConviteStore([FlutterSecureStorage? storage])
    : _storage = storage ?? const FlutterSecureStorage();

  final FlutterSecureStorage _storage;

  String _chave(String poolId) => 'bolao.convite.$poolId';

  Future<void> salvar(String poolId, String token) =>
      _storage.write(key: _chave(poolId), value: token);

  Future<String?> ler(String poolId) => _storage.read(key: _chave(poolId));

  Future<void> limpar(String poolId) => _storage.delete(key: _chave(poolId));
}
