function hasTask(host, token) {
try {
var Http = new XMLHttpRequest();
Http.open("GET", host, false);
Http.setRequestHeader('Authorization', 'Bearer ' + token);
Http.send();
if (Http.status == 200) {
console.log('Buscado tarefa...');
if (Http.responseText.includes("true")) {
top.ajaxRequest(top.MainForm.form, '_task', ['value=true']);
}
}
} catch (err) {
console.log('Erro Tarefa:' + err);
}
};
procedure TUniMainModule.ExecuteTimerTarefa;
begin
{180000 - 3 MINUTOS}
try
var lUrl := Self.URL_EX_API + 'END POINT';
var lJsString := 'var TimerTarefa = setInterval(function () {hasTask(' + QuotedStr(lUrl) + ',' + QuotedStr(Self.TOKEN_API) + ');}, 180000);';
UniSession.JSCode(lJsString);
except
on E: Exception do
TMessageUtils.Error(E.Message);
end;
procedure TMainForm.UniFormAjaxEvent(Sender: TComponent; EventName: string; Params: TUniStrings);
begin
if SameStr(EventName, '_task') then
begin
TToastUtils.Aviso('Tarefa encontrada, ja vou te mostrar!', False, 'Aviso de Tarefa',8000);
UniTimerTarefas.Enabled := True;
end;
end;
I will post here my solution, as I use API it became easier to solve.
Ajax only fires when it's really needed.