feature/version-badge #40
@@ -42,8 +42,13 @@ function GiteaIcon() {
|
||||
);
|
||||
}
|
||||
|
||||
function AppFooter() {
|
||||
function AppFooter({ version }) {
|
||||
const year = new Date().getFullYear();
|
||||
const sha = version?.shortSha || null;
|
||||
const built = version?.buildTime
|
||||
? new Date(version.buildTime).toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' })
|
||||
: null;
|
||||
|
||||
return (
|
||||
<>
|
||||
<style>{`
|
||||
@@ -53,13 +58,27 @@ function AppFooter() {
|
||||
}
|
||||
`}</style>
|
||||
<footer style={sf.footer}>
|
||||
<span style={sf.copy}>© {year} Jason Stedwell</span>
|
||||
<span style={sf.sep}>·</span>
|
||||
<span style={sf.copy}>© {year} Jason Stedwell</span>
|
||||
<span style={sf.sep}>·</span>
|
||||
<DevTicker />
|
||||
<span style={sf.sep}>·</span>
|
||||
<span style={sf.sep}>·</span>
|
||||
<a href={REPO_URL} target="_blank" rel="noopener noreferrer" style={sf.link}>
|
||||
<GiteaIcon /> cpas
|
||||
</a>
|
||||
{sha && sha !== 'dev' && (
|
||||
<>
|
||||
<span style={sf.sep}>·</span>
|
||||
<a
|
||||
href={`${REPO_URL}/commit/${version.sha}`}
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
style={sf.link}
|
||||
title={built ? `Built ${built}` : 'View commit'}
|
||||
>
|
||||
{sha}
|
||||
</a>
|
||||
</>
|
||||
)}
|
||||
</footer>
|
||||
</>
|
||||
);
|
||||
@@ -129,6 +148,14 @@ const sf = {
|
||||
export default function App() {
|
||||
const [tab, setTab] = useState('dashboard');
|
||||
const [showReadme, setShowReadme] = useState(false);
|
||||
const [version, setVersion] = useState(null);
|
||||
|
||||
useEffect(() => {
|
||||
fetch('/version.json')
|
||||
.then(r => r.ok ? r.json() : null)
|
||||
.then(v => { if (v) setVersion(v); })
|
||||
.catch(() => {});
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<ToastProvider>
|
||||
@@ -156,7 +183,7 @@ export default function App() {
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<AppFooter />
|
||||
<AppFooter version={version} />
|
||||
|
||||
{showReadme && <ReadmeModal onClose={() => setShowReadme(false)} />}
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user