diff --git a/crates/ericrfb-frontend/src/main.ts b/crates/ericrfb-frontend/src/main.ts index 6e3efb3..bbc067f 100644 --- a/crates/ericrfb-frontend/src/main.ts +++ b/crates/ericrfb-frontend/src/main.ts @@ -1,5 +1,29 @@ import './style.css' import { showLogin } from './login' +import { mountShell } from './shell' const app = document.getElementById('app')! -showLogin(app) + +// Try to resume a session from stored credentials +const user = sessionStorage.getItem('blekin_user') +const pass = sessionStorage.getItem('blekin_pass') + +if (user && pass) { + app.innerHTML = '

Reconnecting...

' + fetch('/api/login', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ username: user, password: pass }), + }) + .then(r => r.ok ? r.json() : Promise.reject()) + .then(data => { + mountShell(app, { appletId: data.applet_id, port: data.port, boardName: data.board_name }) + }) + .catch(() => { + sessionStorage.removeItem('blekin_user') + sessionStorage.removeItem('blekin_pass') + showLogin(app) + }) +} else { + showLogin(app) +}