manu-sapiens's picture
copy of omnitool_latest - should be working
b39afbe
raw
history blame
2.12 kB
/**
* Copyright (c) 2023 MERCENARIES.AI PTE. LTD.
* All rights reserved.
*/
import './styles/main.scss';
import { createClient, AuthService } from 'omni-client-services';
import { OmnitoolClient } from './client';
import { loginComponent, doLogin, isLogin } from './components/Login.js';
import Alpine from 'alpinejs';
import { omnilog } from 'omni-shared';
window.Alpine = Alpine;
const client = (window.client = createClient('vite-frontend', { logger: { level: 11 } }, OmnitoolClient));
// register the authentication service
client.use(
AuthService,
{
id: 'auth',
host: '',
authUrl: '/api/v1/auth/login',
logoutUrl: '/api/v1/auth/logout',
userUrl: '/api/v1/auth/user'
},
'service'
);
document.addEventListener('alpine:init', () => {
omnilog.status_start('Alpine Init');
Alpine.store('toasts', {
counter: 0,
list: {},
isJobRunning: false,
createToast(message, jobId, type = 'info', timer = 2000) {
omnilog.info('createToast', message, jobId, type, timer);
this.list[jobId] = {
id: this.counter++,
message,
type,
visible: true
};
if (timer > 0) {
setTimeout(() => {
this.destroyToast(jobId);
}, timer);
}
},
destroyToast(jobId) {
if (this.list[jobId]) {
this.list[jobId].visible = false;
}
}
});
Alpine.data('login', () => ({
currentUser: null,
isSubmitting: false,
isLogin() {
return isLogin(this.currentUser);
},
loginComponent,
async tryLogin(payload) {
const { username, password, newUser } = payload;
try {
const user = await doLogin({ username, password, newUser });
if (user) {
this.currentUser = user;
}
} catch (e) {
if (this.isSubmitting) {
Alpine.store('toasts').createToast(e.message, 'login', 'error');
this.isSubmitting = false;
}
}
},
async init() {
// Attempt autoLogin
await this.tryLogin({ username: null, password: null, newUser: false });
}
}));
});
Alpine.start();