diff --git a/src/pages/index.jsx b/src/pages/index.jsx index e891e2f9d..b6a1881ae 100644 --- a/src/pages/index.jsx +++ b/src/pages/index.jsx @@ -99,7 +99,7 @@ function Index({ initialSettings, fallback }) { localStorage.setItem("hash", hashData.hash); } - if (previousHash && previousHash !== hashData.hash) { + if (!initialSettings.isValid || (previousHash && previousHash !== hashData.hash)) { setStale(true); localStorage.setItem("hash", hashData.hash); @@ -111,7 +111,7 @@ function Index({ initialSettings, fallback }) { } } } - }, [hashData]); + }, [hashData, initialSettings]); if (stale) { return ( diff --git a/src/utils/config/config.js b/src/utils/config/config.js index 57a63f7b4..0415cfca5 100644 --- a/src/utils/config/config.js +++ b/src/utils/config/config.js @@ -1,6 +1,6 @@ /* eslint-disable no-console */ import { join } from "path"; -import { existsSync, copyFile, readFileSync } from "fs"; +import { existsSync, copyFile, readFileSync, statSync } from "fs"; import yaml from "js-yaml"; @@ -32,5 +32,18 @@ export function getSettings() { const settingsYaml = join(process.cwd(), "config", "settings.yaml"); const fileContents = readFileSync(settingsYaml, "utf8"); - return yaml.load(fileContents) ?? {}; + + let stats; + try { + stats = statSync(settingsYaml); + } catch (e) { + stats = {}; + } + + const yamlLoaded = yaml.load(fileContents) ?? {}; + + return { + ...yamlLoaded, + isValid: fileContents !== "-\n" && stats.size !== 2 // see https://github.com/benphelps/homepage/pull/609 + }; } \ No newline at end of file