From 28a2f09b6050f2238de4a1302ef25d17f026fe12 Mon Sep 17 00:00:00 2001 From: Jack Date: Tue, 18 Aug 2020 22:56:21 +0100 Subject: [PATCH] now only pulling account data when the user really needs it --- public/js/account.js | 33 ++++++++++++++++------- public/js/db.js | 64 +++++++++++++++++++++++++++++++++----------- 2 files changed, 71 insertions(+), 26 deletions(-) diff --git a/public/js/account.js b/public/js/account.js index e3c07b003..b4e1e0a1d 100644 --- a/public/js/account.js +++ b/public/js/account.js @@ -264,6 +264,9 @@ firebase.auth().onAuthStateChanged(function (user) { ) { config.resultFilters = defaultAccountFilters; } + if ($(".pageLogin").hasClass("active")) { + changePage("account"); + } accountIconLoading(false); updateFilterTags(); updateCommandsTagsList(); @@ -525,7 +528,7 @@ function updateFilterTags() { "hidden" ); } - showActiveFilters(); + // showActiveFilters(); } function toggleFilter(group, filter) { @@ -739,7 +742,7 @@ function showActiveFilters() { $(".pageAccount .group.chart .above").html(chartString); - refreshAccountPage(); + // refreshAccountPage(); } function showChartPreloader() { @@ -1013,10 +1016,19 @@ function loadMoreLines() { } } +function showResultLoadProgress(num, outOf) { + let percent = (num / outOf) * 100; + $(".pageAccount .preloader .loadingBar .bar").css({ width: percent + "%" }); + console.log(percent); + console.log(`${num}/${outOf}`); +} + let totalSecondsFiltered = 0; function refreshAccountPage() { function cont() { + showActiveFilters(); + refreshThemeColorObject(); let chartData = []; @@ -1394,15 +1406,16 @@ function refreshAccountPage() { swapElements($(".pageAccount .preloader"), $(".pageAccount .content"), 250); } - if (dbSnapshot === null) { - // console.log('no db snap'); - // db_getUserResults().then(data => { - // if(!data) return; - // dbSnapshot = data; - // cont(); - // }) + if (dbSnapshot.results === undefined) { + db_getUserResults().then((d) => { + if (d) { + cont(); + } else { + console.log("something went wrong"); + } + }); } else { - // console.log('using db snap'); + console.log("using db snap"); cont(); } } diff --git a/public/js/db.js b/public/js/db.js index 87dc7fdef..419652a91 100644 --- a/public/js/db.js +++ b/public/js/db.js @@ -6,7 +6,7 @@ async function db_getUserSnapshot() { let user = firebase.auth().currentUser; if (user == null) return false; let snap = { - results: [], + results: undefined, personalBests: {}, tags: [], }; @@ -21,21 +21,21 @@ async function db_getUserSnapshot() { // }) // }) try { - await db - .collection(`users/${user.uid}/results/`) - .orderBy("timestamp", "desc") - .get() - .then((data) => { - // console.log('getting data from db!'); - data.docs.forEach((doc) => { - let result = doc.data(); - result.id = doc.id; - snap.results.push(result); - }); - }) - .catch((e) => { - throw e; - }); + // await db + // .collection(`users/${user.uid}/results/`) + // .orderBy("timestamp", "desc") + // .get() + // .then((data) => { + // // console.log('getting data from db!'); + // data.docs.forEach((doc) => { + // let result = doc.data(); + // result.id = doc.id; + // snap.results.push(result); + // }); + // }) + // .catch((e) => { + // throw e; + // }); await db .collection(`users/${user.uid}/tags/`) .get() @@ -79,6 +79,38 @@ async function db_getUserSnapshot() { return dbSnapshot; } +async function db_getUserResults() { + let user = firebase.auth().currentUser; + if (user == null) return false; + if (dbSnapshot.results !== undefined) { + return true; + } else { + try { + return await db + .collection(`users/${user.uid}/results/`) + .orderBy("timestamp", "desc") + .get() + .then((data) => { + dbSnapshot.results = []; + let len = data.docs.length; + data.docs.forEach((doc, index) => { + showResultLoadProgress(index + 1, len); + let result = doc.data(); + result.id = doc.id; + dbSnapshot.results.push(result); + }); + return true; + }) + .catch((e) => { + throw e; + }); + } catch (e) { + console.error(e); + return false; + } + } +} + async function db_getUserHighestWpm( mode, mode2,