Start implementation of branches, new form element tabledropdown, model improvements

This commit is contained in:
Torsten Schulz
2024-12-06 23:35:28 +01:00
parent 8c15fb7f2b
commit 1bb2bd49d5
57 changed files with 2176 additions and 170 deletions

View File

@@ -7,10 +7,10 @@ import { io } from 'socket.io-client';
const store = createStore({
state: {
isLoggedIn: false,
user: null,
isLoggedIn: localStorage.getItem('isLoggedIn') === 'true',
user: JSON.parse(localStorage.getItem('user')) || null,
language: navigator.language.startsWith('de') ? 'de' : 'en',
menu: [],
menu: JSON.parse(localStorage.getItem('menu')) || [],
socket: null,
menuNeedsUpdate: false,
},
@@ -32,19 +32,22 @@ const store = createStore({
localStorage.removeItem('user');
localStorage.removeItem('menu');
state.menuNeedsUpdate = false;
// await apiClient.get('/api/auth/logout');
},
setLanguage(state, language) {
state.language = language;
},
setMenu(state, menu) {
state.menu = menu;
localStorage.setItem('menu', JSON.stringify(menu));
state.menuNeedsUpdate = false;
},
setSocket(state, socket) {
state.socket = socket;
},
clearSocket(state) {
if (state.socket) {
state.socket.disconnect();
}
state.socket = null;
},
},
@@ -58,17 +61,20 @@ const store = createStore({
}
await dispatch('loadMenu');
},
logout({ commit, state }) {
if (state.socket) {
state.socket.disconnect();
commit('clearSocket');
}
logout({ commit }) {
commit('clearSocket');
commit('dologout');
router.push('/');
},
initializeSocket({ commit, state }) {
if (state.isLoggedIn && state.user) {
const socket = io(import.meta.env.VITE_API_BASE_URL);
socket.on('connect', () => {
socket.emit('setUserId', state.user.id);
});
socket.on('disconnect', (reason) => {
console.warn('WebSocket disconnected:', reason);
});
commit('setSocket', socket);
}
},
@@ -90,12 +96,16 @@ const store = createStore({
user: state => state.user,
language: state => state.language,
menu: state => state.menu,
socket: state => state.socket,
menuNeedsUpdate: state => state.menuNeedsUpdate
socket: state => state.socket,
menuNeedsUpdate: state => state.menuNeedsUpdate,
},
modules: {
dialogs,
},
});
if (store.state.isLoggedIn && store.state.user) {
store.dispatch('initializeSocket');
}
export default store;