Working on network online offline detection
This commit is contained in:
220
app/index.html
220
app/index.html
@@ -61,6 +61,9 @@
|
||||
<div id="reset1" class="btn btn-warning reset" data-spy="affix" data-offset-top="200">
|
||||
<span class="fas fa-sync"></span> Reset Launcher
|
||||
</div>
|
||||
<div id="network_status1" class="btn btn-success network_status">
|
||||
<span class="fas fa-globe"></span> Network Status
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="launcher_sessions" class="launcher_sessions col"></div> <!-- end location details div -->
|
||||
@@ -121,6 +124,14 @@
|
||||
let event_id = app_config.event_id;
|
||||
let event_location_id = app_config.event_location_id;
|
||||
|
||||
|
||||
// Start of API section
|
||||
|
||||
const api_token_loop_interval = app_config.api_token_loop_interval;
|
||||
let api_update_period = app_config.idb_event_location_check_period;
|
||||
let api_update_datetime = Date.now();
|
||||
let waiting_on_api_token = false;
|
||||
|
||||
const secret_key = app_config.api_secret_key;
|
||||
let api_temporary_token = null;
|
||||
|
||||
@@ -135,12 +146,95 @@
|
||||
axios.defaults.baseURL = api_base_url;
|
||||
axios.defaults.headers.post['Access-Control-Allow-Origin'] = app_config.access_control_allow_origin; // '*';
|
||||
|
||||
api_token_request_async(axios, secret_key).then( function(result) {
|
||||
console.log('Setting temporary API token to axios Authorization header: '+result);
|
||||
axios.defaults.headers.common['Authorization'] = `Token ${result}`;
|
||||
api_temporary_token = result;
|
||||
return result;
|
||||
});
|
||||
// Axios needs to authenticate first
|
||||
let axios_headers_set = false;
|
||||
|
||||
/*if (app_online) {
|
||||
api_token_request_async(axios, secret_key).then( function(result) {
|
||||
console.log('Setting temporary API token to axios Authorization header: '+result);
|
||||
axios.defaults.headers.common['Authorization'] = `Token ${result}`;
|
||||
api_temporary_token = result;
|
||||
return result;
|
||||
});
|
||||
} else {
|
||||
console.log('Currently offline. Can not request temporary API token.');
|
||||
}*/
|
||||
|
||||
let app_online = false;
|
||||
window.addEventListener('online', app.currently_online);
|
||||
window.addEventListener('offline', app.currently_offline);
|
||||
|
||||
let update_event_ui = true;
|
||||
let update_event_location_ui = true;
|
||||
let update_event_session_ui = true;
|
||||
let update_event_presentation_ui = true;
|
||||
let update_event_presenter_ui = true;
|
||||
let update_event_file_ui = true;
|
||||
|
||||
if (window.onLine) {
|
||||
app.currently_online();
|
||||
|
||||
} else {
|
||||
app.currently_offline();
|
||||
|
||||
update_event_ui = true;
|
||||
update_event_location_ui = true;
|
||||
update_event_session_ui = true;
|
||||
update_event_presentation_ui = true;
|
||||
update_event_presenter_ui = true;
|
||||
update_event_file_ui = true;
|
||||
}
|
||||
|
||||
var api_token_loop = setInterval(function() {
|
||||
if (app_online && api_update_datetime < Date.now()) {
|
||||
|
||||
|
||||
let api_temporary_token = api_token_request_async(axios, secret_key)
|
||||
.then(function (result) {
|
||||
if (result) {
|
||||
console.log('Setting temporary API token to axios Authorization header: '+result);
|
||||
axios.defaults.headers.common['Authorization'] = `Token ${result}`;
|
||||
api_temporary_token = result;
|
||||
|
||||
console.log('Axios headers have been set.');
|
||||
axios_headers_set = true;
|
||||
api_update_datetime = Date.now() + api_update_period;
|
||||
} else {
|
||||
console.log('Not online?????????????????????????');
|
||||
console.log(window.onLine);
|
||||
if (window.onLine) {
|
||||
app.currently_online();
|
||||
} else {
|
||||
app.currently_offline();
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log('Something went wrong');
|
||||
console.log(error);
|
||||
});
|
||||
|
||||
|
||||
/*
|
||||
api_token_request_async(axios, secret_key).then( function(result) {
|
||||
console.log('Setting temporary API token to axios Authorization header: '+result);
|
||||
axios.defaults.headers.common['Authorization'] = `Token ${result}`;
|
||||
api_temporary_token = result;
|
||||
|
||||
console.log('Axios headers have been set.');
|
||||
axios_headers_set = true;
|
||||
api_update_datetime = Date.now() + api_update_period;
|
||||
return result;
|
||||
});
|
||||
*/
|
||||
} else if (app_online) {
|
||||
//console.log('Currently online, but not asking for a new temporary token yet.');
|
||||
} else {
|
||||
console.log('Currently offline. Can not request a new temporary API token.');
|
||||
}
|
||||
}, api_token_loop_interval);
|
||||
|
||||
// End of API section
|
||||
|
||||
|
||||
let idb_name = app_config.idb_name;
|
||||
@@ -248,17 +342,16 @@
|
||||
*/
|
||||
|
||||
|
||||
const api_auth_loop_interval = 100; // only runs on start up
|
||||
//const api_auth_loop_interval = 100; // only runs on start up
|
||||
const open_tables_loop_interval = 10; // only runs on start up
|
||||
|
||||
const api_token_update_loop_interval = 120000; // loop forever
|
||||
//const api_token_update_loop_interval = 120000; // loop forever
|
||||
|
||||
const update_idb_loop_interval = 500; // loop forever; update when check datetime has passed
|
||||
const update_idb_loop_interval = app_config.update_idb_loop_interval; // loop forever
|
||||
//const update_render_loop_interval = 10000; // loop forever; only run when the launcher object is safe
|
||||
const check_file_cache_loop_interval = 250; // loop forever; only run after the event_file table has updated
|
||||
const update_render_loop_interval = app_config.update_render_loop_interval; // loop forever
|
||||
|
||||
// Axios needs to authenticate first
|
||||
let axios_headers_set = false;
|
||||
|
||||
// IDB tables need to be opened
|
||||
let idb_tables_opened = false;
|
||||
@@ -290,20 +383,14 @@
|
||||
const host_file_cache_path = app_config.host_file_cache_path; //'file_cache/';
|
||||
//const host_file_cache_check_period = app_config.host_file_cache_check_period; //30000; // 30 seconds
|
||||
|
||||
let idb_tables_have_records = false;
|
||||
const display_session_codes = app_config.display_session_codes;
|
||||
const display_session_badges = app_config.display_session_badges;
|
||||
const display_presentation_codes = app_config.display_presentation_codes; // NOTE: not currently used
|
||||
const display_presentation_badges = app_config.display_presentation_badges;
|
||||
const display_presenter_codes = app_config.display_presenter_codes; // NOTE: not currently used
|
||||
const display_presenter_badges = app_config.display_presenter_badges; // NOTE: not currently used
|
||||
|
||||
var api_auth_loop = setInterval(function() {
|
||||
if (typeof axios.defaults.headers.common['Authorization'] !== 'undefined'
|
||||
&& axios.defaults.headers.common['Authorization'] != null) {
|
||||
console.log('Axios headers have been set.');
|
||||
axios_headers_set = true;
|
||||
//run_update_idb = true;
|
||||
clearInterval(api_auth_loop);
|
||||
} else {
|
||||
axios_headers_set = false;
|
||||
console.log('Waiting for Axios headers to be set.');
|
||||
}
|
||||
}, api_auth_loop_interval);
|
||||
let idb_tables_have_records = false;
|
||||
|
||||
|
||||
var open_tables_loop = setInterval(function() {
|
||||
@@ -323,20 +410,11 @@
|
||||
}, open_tables_loop_interval);
|
||||
|
||||
|
||||
var api_token_update_loop = setInterval(function() {
|
||||
api_token_request_async(axios, secret_key).then( function(result) {
|
||||
console.log('Setting temporary API token to axios Authorization header: '+result);
|
||||
axios.defaults.headers.common['Authorization'] = `Token ${result}`;
|
||||
api_temporary_token = result;
|
||||
return result;
|
||||
});
|
||||
}, api_token_update_loop_interval);
|
||||
|
||||
|
||||
var update_idb_loop = setInterval(async function() {
|
||||
//console.log('FLAG: axios_headers_set='+axios_headers_set);
|
||||
//console.log('FLAG: idb_tables_opened='+idb_tables_opened);
|
||||
if (axios_headers_set && idb_tables_opened) {
|
||||
|
||||
if (app_online && axios_headers_set && idb_tables_opened) {
|
||||
if (idb_event_check_datetime < Date.now()) {
|
||||
console.log('**** *** ** * Time to check events');
|
||||
let v2_account_events = await v2_get_account_events(axios, account_id)
|
||||
@@ -345,7 +423,8 @@
|
||||
tbl_event.setItem(response[i].id.toString(), response[i]);
|
||||
}
|
||||
idb_event_check_datetime = Date.now() + idb_event_check_period;
|
||||
let render_event_records_result = render_event_records(); // NOTE: v2 idb to ui
|
||||
//let render_event_records_result = render_event_records(); // NOTE: v2 idb to ui
|
||||
update_event_ui = true;
|
||||
})
|
||||
.catch(function (error) {
|
||||
console.log('Trying to check events. Something went wrong. Expired token?');
|
||||
@@ -361,7 +440,8 @@
|
||||
tbl_event_location.setItem(v2_event_locations[i].id.toString(), v2_event_locations[i]);
|
||||
}
|
||||
idb_event_location_check_datetime = Date.now() + idb_event_location_check_period;
|
||||
let render_event_location_records_result = render_event_location_records(); // NOTE: v2 idb to ui
|
||||
//let render_event_location_records_result = render_event_location_records(); // NOTE: v2 idb to ui
|
||||
update_event_location_ui = true;
|
||||
}
|
||||
|
||||
if (idb_event_session_check_datetime < Date.now()) {
|
||||
@@ -372,7 +452,8 @@
|
||||
tbl_event_session.setItem(v2_event_sessions[i].id.toString(), v2_event_sessions[i]);
|
||||
}
|
||||
idb_event_session_check_datetime = Date.now() + idb_event_session_check_period;
|
||||
let render_event_session_records_result = render_event_session_records(); // NOTE: v2 idb to ui
|
||||
//let render_event_session_records_result = render_event_session_records(); // NOTE: v2 idb to ui
|
||||
update_event_session_ui = true;
|
||||
}
|
||||
|
||||
if (idb_event_presentation_check_datetime < Date.now()) {
|
||||
@@ -382,7 +463,8 @@
|
||||
tbl_event_presentation.setItem(v2_event_presentations[i].id.toString(), v2_event_presentations[i]);
|
||||
}
|
||||
idb_event_presentation_check_datetime = Date.now() + idb_event_presentation_check_period;
|
||||
let render_event_presentation_records_result = await render_event_presentation_records(); // NOTE: v2 idb to ui
|
||||
//let render_event_presentation_records_result = await render_event_presentation_records(); // NOTE: v2 idb to ui
|
||||
update_event_presentation_ui = true;
|
||||
}
|
||||
|
||||
if (idb_event_presenter_check_datetime < Date.now()) {
|
||||
@@ -393,7 +475,8 @@
|
||||
}
|
||||
idb_event_presenter_check_datetime = Date.now() + idb_event_presenter_check_period;
|
||||
|
||||
let render_event_presenter_records_result = await render_event_presenter_records(); // NOTE: v2 idb to ui
|
||||
//let render_event_presenter_records_result = await render_event_presenter_records(); // NOTE: v2 idb to ui
|
||||
update_event_presenter_ui = true;
|
||||
}
|
||||
|
||||
if (idb_event_file_check_datetime < Date.now()) {
|
||||
@@ -427,21 +510,62 @@
|
||||
run_check_file_cache = true; // Set to true so that the local file cache will be checked against the updated event files
|
||||
idb_event_file_check_datetime = Date.now() + idb_event_file_check_period;
|
||||
|
||||
let render_event_file_records_result = await render_event_file_records(); // NOTE: v2 idb to ui
|
||||
//let render_event_file_records_result = await render_event_file_records(); // NOTE: v2 idb to ui
|
||||
update_event_file_ui = true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
} else if (app_online && idb_tables_opened && !axios_headers_set) {
|
||||
console.log('Online and waiting for the Axios headers to be set.');
|
||||
console.log('Using cached IDB data');
|
||||
/*
|
||||
let render_event_records_result = render_event_records();
|
||||
let render_event_location_records_result = render_event_location_records();
|
||||
let render_event_session_records_result = render_event_session_records();
|
||||
let render_event_presentation_records_result = await render_event_presentation_records();
|
||||
let render_event_presenter_records_result = await render_event_presenter_records();
|
||||
let render_event_file_records_result = await render_event_file_records();
|
||||
*/
|
||||
} else if (app_online && axios_headers_set && !idb_tables_opened) {
|
||||
console.log('Online and Axios headers are set. Waiting for the IDB tables to be opened');
|
||||
} else if (!app_online) {
|
||||
console.log('Waiting to update IDB once online.');
|
||||
console.log('Using cached IDB data');
|
||||
} else {
|
||||
console.log('Waiting for the Axios headers to be set and/or IDB tables opened...');
|
||||
console.log('This should not happen.');
|
||||
}
|
||||
}, update_idb_loop_interval);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*var update_render_loop = setInterval(async function() {
|
||||
}, update_render_loop_interval);*/
|
||||
var update_render_loop = setInterval(async function() {
|
||||
console.log('*** Update Render Loop ***');
|
||||
|
||||
if (update_event_ui) {
|
||||
let render_event_records_result = render_event_records();
|
||||
update_event_ui = false;
|
||||
}
|
||||
if (update_event_location_ui) {
|
||||
let render_event_location_records_result = render_event_location_records();
|
||||
update_event_location_ui = false;
|
||||
}
|
||||
if (update_event_session_ui) {
|
||||
let render_event_session_records_result = render_event_session_records();
|
||||
update_event_session_ui = false;
|
||||
}
|
||||
if (update_event_presentation_ui) {
|
||||
let render_event_presentation_records_result = await render_event_presentation_records();
|
||||
update_event_presentation_ui = false;
|
||||
}
|
||||
if (update_event_presenter_ui) {
|
||||
let render_event_presenter_records_result = await render_event_presenter_records();
|
||||
update_event_presenter_ui = false;
|
||||
}
|
||||
if (update_event_file_ui) {
|
||||
let render_event_file_records_result = await render_event_file_records();
|
||||
update_event_file_ui = false;
|
||||
}
|
||||
|
||||
}, update_render_loop_interval);
|
||||
|
||||
|
||||
var check_file_cache_loop = setInterval(async function() {
|
||||
|
||||
Reference in New Issue
Block a user