Füge neue Modelle für Produktion, Inventar und kaufbare Bestände hinzu; aktualisiere bestehende Modelle und Routen

This commit is contained in:
Torsten Schulz
2024-12-23 10:37:43 +01:00
parent 1bb2bd49d5
commit 6f7d97672e
15 changed files with 1143 additions and 44 deletions

View File

@@ -12,6 +12,7 @@ const store = createStore({
language: navigator.language.startsWith('de') ? 'de' : 'en',
menu: JSON.parse(localStorage.getItem('menu')) || [],
socket: null,
daemonSocket: null,
menuNeedsUpdate: false,
},
mutations: {
@@ -50,11 +51,21 @@ const store = createStore({
}
state.socket = null;
},
setDaemonSocket(state, daemonSocket) {
state.daemonSocket = daemonSocket;
},
clearDaemonSocket(state) {
if (state.daemonSocket) {
state.daemonSocket.disconnect();
}
state.daemonSocket = null;
},
},
actions: {
async login({ commit, dispatch }, user) {
await commit('dologin', user);
await dispatch('initializeSocket');
await dispatch('initializeDaemonSocket');
const socket = this.getters.socket;
if (socket) {
socket.emit('setUserId', user.id);
@@ -63,19 +74,89 @@ const store = createStore({
},
logout({ commit }) {
commit('clearSocket');
commit('clearDaemonSocket');
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);
const connectSocket = () => {
const socket = io(import.meta.env.VITE_API_BASE_URL);
socket.on('connect', () => {
console.log('Socket.io connected');
socket.emit('setUserId', state.user.id);
});
socket.on('disconnect', (reason) => {
console.warn('Socket.io disconnected:', reason);
retryConnection(connectSocket);
});
commit('setSocket', socket);
};
const retryConnection = (reconnectFn) => {
setTimeout(() => {
console.log('Retrying Socket.io connection...');
reconnectFn();
}, 1000); // Retry every second
};
connectSocket();
}
},
initializeDaemonSocket({ commit, state }) {
if (state.isLoggedIn && state.user) {
const connectDaemonSocket = () => {
const daemonSocket = new WebSocket(import.meta.env.VITE_DAEMON_SOCKET);
daemonSocket.onopen = () => {
console.log('Daemon WebSocket connected');
const payload = JSON.stringify({
event: 'setUserId',
data: { userId: state.user.id }
});
daemonSocket.send(payload);
};
daemonSocket.onclose = (event) => {
console.warn('Daemon WebSocket disconnected:', event.reason);
retryConnection(connectDaemonSocket);
};
daemonSocket.onerror = (error) => {
console.error('Daemon WebSocket error:', error);
retryConnection(connectDaemonSocket);
};
daemonSocket.addEventListener('message', (event) => {
const message = event.data;
console.log(message);
if (message === "ping") {
console.log("Ping received, sending Pong...");
daemonSocket.send("pong");
} else {
try {
const data = JSON.parse(message);
console.log("Message received:", data);
} catch (error) {
console.error("Error parsing message:", error);
}
}
});
commit('setDaemonSocket', daemonSocket);
};
const retryConnection = (reconnectFn) => {
setTimeout(() => {
console.log('Retrying Daemon WebSocket connection...');
reconnectFn();
}, 1000); // Retry every second
};
connectDaemonSocket();
}
},
setLanguage({ commit }, language) {
@@ -97,6 +178,7 @@ const store = createStore({
language: state => state.language,
menu: state => state.menu,
socket: state => state.socket,
daemonSocket: state => state.daemonSocket,
menuNeedsUpdate: state => state.menuNeedsUpdate,
},
modules: {
@@ -106,6 +188,7 @@ const store = createStore({
if (store.state.isLoggedIn && store.state.user) {
store.dispatch('initializeSocket');
store.dispatch('initializeDaemonSocket');
}
export default store;