adapted sodistorehome frontend offline and config response time from 5 to 10s
This commit is contained in:
parent
7aacddd761
commit
584abe5b53
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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()
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue