determinaSiLaVentaDeEjecucionEsValida static method
Esta funcion es utilizada en los bloc para evitar que se ejecute la misma accion en un tiempo menor al especificado en la ventanaTiempo para evitar envios por ejemplo de post del mismo registro mas de una vez y genere informacion duplicada en la base de datos los parametros son:
keyAcciones el key que se utiliza para hacer referencia a la accion la nomeclatura utilizada es la coleecion y la accion ejmplo ctactePost.stateTimeStampAcciones el mapa que se utiliza en el state del bloc para guardar el ultimo timestamp de la accion se utiliza un mapa por si existen mas de una accion que se quiere controlarventanaTiempoes el tiempo en milisegundos que se quiere controlar si no se especifica se toma por defecto 500 milisegundos un ejemplo de un stateTimeStampAccion:
{
'ctactePost': '20210824121212123',
'qrUsuarioPost': '20210824121212123',
}
si la accion a realizar es valida poruque la ventana de tiempo es la correcta
devuelve el stateTimeStampAccion actualizado si no la respuesta es null
Implementation
static Map<String, String>? determinaSiLaVentaDeEjecucionEsValida(
{required String keyAccion,
required Map<String, String> stateTimeStampAccion,
int ventanaTiempo = 500}) {
final creadoEl = getCreadoEl() ?? '';
final utlimoCreadoEl = stateTimeStampAccion[keyAccion] ?? '';
final diferencia = obtieneDiferenciaEntreTimeStamp(
creadoEl, utlimoCreadoEl, CalculaDiferencia.inMiliseconds);
if (utlimoCreadoEl.isEmpty || diferencia > ventanaTiempo) {
stateTimeStampAccion[keyAccion] = creadoEl;
return stateTimeStampAccion;
}
return null;
}