mirror of https://github.com/wg-easy/wg-easy
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
2.2 KiB
101 lines
2.2 KiB
import API from '@/services/api';
|
|
import { ref, reactive } from 'vue';
|
|
|
|
import { defineStore } from 'pinia';
|
|
|
|
const api = new API();
|
|
|
|
export const useStore = defineStore('store', () => {
|
|
const authenticated = ref(null);
|
|
const authenticating = ref(false);
|
|
const password = ref(null);
|
|
const requiresPassword = ref(null);
|
|
|
|
const clients = ref(null);
|
|
const clientsPersist = reactive({});
|
|
const clientToDelete = ref(null);
|
|
const clientCreateShowModal = ref(null);
|
|
const clientCreateName = ref('');
|
|
const qrcode = ref(null);
|
|
|
|
function login(e) {
|
|
e.preventDefault();
|
|
|
|
if (!password.value) return;
|
|
if (authenticating.value) return;
|
|
|
|
authenticating.value = true;
|
|
api
|
|
.createSession({
|
|
password: password.value,
|
|
})
|
|
.then(async () => {
|
|
const session = await api.getSession();
|
|
authenticated.value = session.authenticated;
|
|
requiresPassword.value = session.requiresPassword;
|
|
// return this.refresh();
|
|
})
|
|
.catch((err) => {
|
|
console.log(err.message || err.toString());
|
|
})
|
|
.finally(() => {
|
|
authenticating.value = false;
|
|
password.value = null;
|
|
});
|
|
}
|
|
|
|
function logout(e) {
|
|
e.preventDefault();
|
|
|
|
api
|
|
.deleteSession()
|
|
.then(() => {
|
|
authenticated.value = false;
|
|
clients.value = null;
|
|
})
|
|
.catch((err) => {
|
|
alert(err.message || err.toString());
|
|
});
|
|
}
|
|
|
|
function createClient() {
|
|
if (!clientCreateName.value) return;
|
|
|
|
api
|
|
.createClient({ name: clientCreateName.value })
|
|
.catch((err) => alert(err.message || err.toString()))
|
|
.finally
|
|
// () => refresh().catch(console.error)
|
|
();
|
|
|
|
clientCreateShowModal.value = null;
|
|
}
|
|
|
|
function deleteClient(client) {
|
|
api
|
|
.deleteClient({ clientId: client.id })
|
|
.catch((err) => alert(err.message || err.toString()))
|
|
.finally
|
|
// () => refresh().catch(console.error)
|
|
();
|
|
|
|
clientToDelete.value = null;
|
|
}
|
|
|
|
return {
|
|
authenticated,
|
|
authenticating,
|
|
password,
|
|
requiresPassword,
|
|
clients,
|
|
clientsPersist,
|
|
clientToDelete,
|
|
clientCreateShowModal,
|
|
clientCreateName,
|
|
qrcode,
|
|
login,
|
|
logout,
|
|
createClient,
|
|
deleteClient,
|
|
};
|
|
});
|
|
|