diff --git a/packages/api/src/controllers/cloud.js b/packages/api/src/controllers/cloud.js index a4b6a20ea..80db29e16 100644 --- a/packages/api/src/controllers/cloud.js +++ b/packages/api/src/controllers/cloud.js @@ -29,8 +29,8 @@ module.exports = { }, refreshPublicFiles_meta: true, - async refreshPublicFiles() { - await refreshPublicFiles(); + async refreshPublicFiles({ isRefresh }) { + await refreshPublicFiles(isRefresh); return { status: 'ok', }; diff --git a/packages/api/src/utility/cloudIntf.js b/packages/api/src/utility/cloudIntf.js index d3b06231e..a12980bf6 100644 --- a/packages/api/src/utility/cloudIntf.js +++ b/packages/api/src/utility/cloudIntf.js @@ -143,9 +143,7 @@ async function getCloudSigninHeaders(holder = null) { return null; } -let cloudFilesWereUpdated = false; - -async function updateCloudFiles() { +async function updateCloudFiles(isRefresh) { let lastCloudFilesTags; try { lastCloudFilesTags = await fs.readFile(path.join(datadir(), 'cloud-files-tags.txt'), 'utf-8'); @@ -163,7 +161,7 @@ async function updateCloudFiles() { const resp = await axios.default.get( `${DBGATE_CLOUD_URL}/public-cloud-updates?lastCheckedTm=${lastCheckedTm}&tags=${tags}&isRefresh=${ - cloudFilesWereUpdated ? 1 : 0 + isRefresh ? 1 : 0 }`, { headers: { @@ -172,7 +170,6 @@ async function updateCloudFiles() { }, } ); - cloudFilesWereUpdated = true; logger.info(`Downloaded ${resp.data.length} cloud files`); @@ -194,7 +191,7 @@ async function updateCloudFiles() { } async function startCloudFiles() { - refreshPublicFiles(); + loadCloudFiles(); } async function getPublicCloudFiles() { @@ -213,12 +210,12 @@ async function getPublicFileData(path) { return resp.data; } -async function refreshPublicFiles() { +async function refreshPublicFiles(isRefresh) { if (!cloudFiles) { await loadCloudFiles(); } try { - await updateCloudFiles(); + await updateCloudFiles(isRefresh); } catch (err) { logger.error(extractErrorLogData(err), 'Error updating cloud files'); } diff --git a/packages/web/src/App.svelte b/packages/web/src/App.svelte index a0787efa0..e5acac607 100644 --- a/packages/web/src/App.svelte +++ b/packages/web/src/App.svelte @@ -14,7 +14,12 @@ // import { shouldWaitForElectronInitialize } from './utility/getElectron'; import { subscribeConnectionPingers } from './utility/connectionsPinger'; import { subscribePermissionCompiler } from './utility/hasPermission'; - import { apiCall, installNewCloudTokenListener, installNewVolatileConnectionListener } from './utility/api'; + import { + apiCall, + installNewCloudTokenListener, + installNewVolatileConnectionListener, + refreshPublicCloudFiles, + } from './utility/api'; import { getConfig, getSettings, getUsedApps } from './utility/metadataLoaders'; import AppTitleProvider from './utility/AppTitleProvider.svelte'; import getElectron from './utility/getElectron'; @@ -55,6 +60,8 @@ initializeAppUpdates(); } + refreshPublicCloudFiles(); + loadedApi = loadedApiValue; if (!loadedApi) { diff --git a/packages/web/src/utility/api.ts b/packages/web/src/utility/api.ts index 29cfb5c2e..8b80c794a 100644 --- a/packages/web/src/utility/api.ts +++ b/packages/web/src/utility/api.ts @@ -300,6 +300,15 @@ export function getAuthCategory(config) { return 'token'; } +export function refreshPublicCloudFiles() { + if (sessionStorage.getItem('publicCloudFilesLoaded')) { + return; + } + + apiCall('cloud/refresh-public-files'); + sessionStorage.setItem('publicCloudFilesLoaded', 'true'); +} + function enableApiLog() { apiLogging = true; console.log('API loggin enabled'); diff --git a/packages/web/src/widgets/PublicCloudWidget.svelte b/packages/web/src/widgets/PublicCloudWidget.svelte index cf7ad8716..e0383c94a 100644 --- a/packages/web/src/widgets/PublicCloudWidget.svelte +++ b/packages/web/src/widgets/PublicCloudWidget.svelte @@ -23,7 +23,7 @@ const publicFiles = usePublicCloudFiles(); async function handleRefreshPublic() { - await apiCall('cloud/refresh-public-files'); + await apiCall('cloud/refresh-public-files?isRefresh=1'); }