add spaces

This commit is contained in:
xds
2025-02-17 17:57:43 +03:00
parent a530d657d3
commit fe56505629
37 changed files with 1464 additions and 403 deletions

46
src/stores/spaceStore.ts Normal file
View File

@@ -0,0 +1,46 @@
import {defineStore} from "pinia";
import {ref, watch} from "vue";
import {EventBus} from "@/utils/EventBus";
import {getSpaces} from "@/services/spaceService";
import {Space} from "@/models/Space";
export const useSpaceStore = defineStore('space', () => {
const spaces = ref();
const fetchSpaces = async () => {
await getSpaces().then((res) => {
spaces.value = res;
const spaceId = localStorage.getItem("spaceId");
space.value = spaces.value.find((s: Space) => s.id === spaceId) || null;
})
}
const space = ref<Space | null>(null);
const getSpace = async () => {
const spaceId = localStorage.getItem("spaceId");
if (!spaceId) {
return null;
}
if (!spaces.value || spaces.value.length === 0) {
await fetchSpaces();
}
space.value = spaces.value.find((s) => s.id === spaceId) || null;
return space.value;
};
const setSpace = (newSpace: Space | null) => {
if (newSpace != space) {
space.value = newSpace;
localStorage.setItem("spaceId", newSpace.id)
EventBus.emit("spaceChanged", space);
}
}
return {spaces, fetchSpaces, getSpace, space, setSpace};
})

View File

@@ -2,11 +2,13 @@ import {defineStore} from 'pinia';
import {ref} from 'vue';
import apiClient from "@/services/axiosSetup";
import {useRoute, useRouter} from "vue-router";
import {useSpaceStore} from "@/stores/spaceStore";
export const useUserStore = defineStore('user', () => {
const user = ref(null);
const loadingUser = ref(true);
const router = useRouter();
const spaceStore = useSpaceStore();
const route = useRoute();
const settings = ref({"budgetViewVersion": "2", "budgetCalendarOpened": false})
@@ -29,7 +31,7 @@ export const useUserStore = defineStore('user', () => {
}
// Основная функция для логина
async function login( username, password, tg_id=null) {
async function login(username, password, tg_id = null) {
try {
let response;
if (tg_id) {
@@ -45,6 +47,7 @@ export const useUserStore = defineStore('user', () => {
localStorage.setItem('token', token);
apiClient.defaults.headers.common['Authorization'] = `Bearer ${token}`;
await fetchUserProfile();
await spaceStore.fetchSpaces()
await router.push(route.query['back'] ? route.query['back'].toString() : '/');
} catch (error) {
console.error(error);
@@ -52,5 +55,20 @@ export const useUserStore = defineStore('user', () => {
}
};
return {user, loadingUser, fetchUserProfile, login, settings};
async function register(username, password, firstName) {
try {
let response = await apiClient.post('/auth/register', {
username: username,
password: password,
firstName: firstName
})
return response.data
} catch (error) {
// console.error(error);
throw error
}
}
return {user, loadingUser, fetchUserProfile, login, settings, register};
});