add spaces
This commit is contained in:
46
src/stores/spaceStore.ts
Normal file
46
src/stores/spaceStore.ts
Normal 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};
|
||||
|
||||
})
|
||||
@@ -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};
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user