adapted sodistorehome frontend offline and config response time from 5 to 10s

This commit is contained in:
Yinyin Liu 2026-03-04 11:23:07 +01:00
parent 7aacddd761
commit 584abe5b53
2 changed files with 10 additions and 10 deletions

View File

@ -112,11 +112,11 @@ function SodioHomeInstallation(props: singleInstallationProps) {
} }
const fetchDataPeriodically = async () => { const fetchDataPeriodically = async () => {
var timeperiodToSearch = 200; var timeperiodToSearch = 350;
let res; let res;
let timestampToFetch; let timestampToFetch;
for (var i = 0; i < timeperiodToSearch; i += 2) { for (var i = 0; i < timeperiodToSearch; i += 30) {
if (!continueFetching.current) { if (!continueFetching.current) {
return false; return false;
} }
@ -184,13 +184,13 @@ function SodioHomeInstallation(props: singleInstallationProps) {
}; };
const fetchDataForOneTime = async () => { const fetchDataForOneTime = async () => {
var timeperiodToSearch = 300; // 5 minutes to cover ~4 upload cycles var timeperiodToSearch = 300; // 5 minutes to cover ~2 upload cycles (150s each)
let res; let res;
let timestampToFetch; let timestampToFetch;
// Search from NOW backward to find the most recent data // Search from NOW backward to find the most recent data
// Step by 10 seconds - balances between finding files quickly and reducing 404s // Step by 50 seconds - data is uploaded every ~150s, so finer steps are wasteful
for (var i = 0; i < timeperiodToSearch; i += 10) { for (var i = 0; i < timeperiodToSearch; i += 50) {
timestampToFetch = UnixTime.now().earlier(TimeSpan.fromSeconds(i)); timestampToFetch = UnixTime.now().earlier(TimeSpan.fromSeconds(i));
try { try {
res = await fetchDataJson(timestampToFetch, s3Credentials, false); res = await fetchDataJson(timestampToFetch, s3Credentials, false);
@ -264,7 +264,7 @@ function SodioHomeInstallation(props: singleInstallationProps) {
const configRefreshInterval = setInterval(() => { const configRefreshInterval = setInterval(() => {
console.log('Refreshing configuration data from S3...'); console.log('Refreshing configuration data from S3...');
fetchDataForOneTime(); fetchDataForOneTime();
}, 15000); // Refresh every 15 seconds }, 60000); // Refresh every 60 seconds (data uploads every ~150s)
return () => { return () => {
continueFetching.current = false; continueFetching.current = false;

View File

@ -143,9 +143,9 @@ function SodistoreHomeConfiguration(props: SodistoreHomeConfigurationProps) {
const submittedAt = pendingConfig.submittedAt || 0; const submittedAt = pendingConfig.submittedAt || 0;
const timeSinceSubmit = Date.now() - submittedAt; const timeSinceSubmit = Date.now() - submittedAt;
// Within 150 seconds of submit: use localStorage (waiting for S3 sync) // Within 300 seconds of submit: use localStorage (waiting for S3 sync)
// This covers two full S3 upload cycles (75 sec × 2) to ensure new file is available // This covers two full S3 upload cycles (150 sec × 2) to ensure new file is available
if (timeSinceSubmit < 150000) { if (timeSinceSubmit < 300000) {
// Check if S3 now matches - if so, sync is complete // Check if S3 now matches - if so, sync is complete
const s3MatchesPending = const s3MatchesPending =
s3Values.controlPermission === pendingConfig.values.controlPermission && s3Values.controlPermission === pendingConfig.values.controlPermission &&
@ -247,7 +247,7 @@ function SodistoreHomeConfiguration(props: SodistoreHomeConfigurationProps) {
setLoading(false); setLoading(false);
// Save submitted values to localStorage for optimistic UI update // Save submitted values to localStorage for optimistic UI update
// This ensures the form shows correct values even before S3 syncs (up to 75 sec delay) // This ensures the form shows correct values even before S3 syncs (up to 150 sec delay)
localStorage.setItem(pendingConfigKey, JSON.stringify({ localStorage.setItem(pendingConfigKey, JSON.stringify({
values: formValues, values: formValues,
submittedAt: Date.now() submittedAt: Date.now()