<script>
import { emit, listen } from '@tauri-apps/api/event';
import queue from './lib/queue.js';

const VIEWS = import.meta.glob('./views/*.svelte', {eager: true});

window.emit = emit;
window.queue = queue;

var appState = {
    currentRequest: null,
    pendingRequests: queue(),
    credentialStatus: 'locked',
}
window.appState = appState;


import { invoke } from '@tauri-apps/api/tauri';
window.invoke = invoke;


var currentView = VIEWS['./views/Home.svelte'].default;
window.currentView = currentView;
window.VIEWS = VIEWS;
function navigate(svelteEvent) {
    const moduleName = `./views/${svelteEvent.detail.target}.svelte`;
    currentView = VIEWS[moduleName].default;
}
window.navigate = navigate;

listen('credentials-request', (tauriEvent) => {
    appState.pendingRequests.put(tauriEvent.payload);
    console.log('Received request.');
});
</script>

<svelte:component this={currentView} on:navigate={navigate} bind:appState={appState} />
