diff --git a/public/service-worker.js b/public/service-worker.js index 240065b..389157e 100644 --- a/public/service-worker.js +++ b/public/service-worker.js @@ -1,9 +1,9 @@ // public/service-worker.js self.addEventListener("push", (event) => { - console.log(event) + const data = event.data.json(); - console.log(data); + const options = { body: data.body, icon: data.icon, @@ -16,7 +16,7 @@ self.addEventListener("push", (event) => { self.addEventListener('notificationclick', function (event) { // console.log("Notification click event received."); // Сообщение об активации обработчика - console.log("Notification data:", event.notification.data); // Проверка данных уведомления + event.notification.close(); // Закрываем уведомление // console.log(event) diff --git a/src/App.vue b/src/App.vue index ac985e0..b42d761 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,6 +1,7 @@ @@ -25,13 +55,14 @@ import MenuBar from "./components/MenuBar.vue"; import ToolBar from "@/components/ToolBar.vue"; import Button from "primevue/button"; -import {computed, onMounted} from "vue"; +import {computed, onMounted, ref} from "vue"; import {subscribeUserToPush} from "@/services/pushManager"; import apiClient from '@/services/axiosSetup'; import {useUserStore} from "@/stores/userStore"; import {useDrawerStore} from '@/stores/drawerStore' import TransactionForm from "@/components/transactions/TransactionForm.vue"; - +import {useSpaceStore} from "@/stores/spaceStore"; +import Toast from "primevue/toast"; const drawerStore = useDrawerStore(); @@ -65,7 +96,7 @@ const checkSubscribe = async () => { // Пользователь ранее отклонил запрос } } else { - console.log("Notification API is not supported in this browser."); + // You may want to use an alternative method, like alerts or modals } } @@ -73,8 +104,6 @@ const checkSubscribe = async () => { const sendSubscribe = async () => { try { const subscription = await subscribeUserToPush(); - console.log("Push subscription:", subscription); - // Отправка подписки на сервер для хранения await apiClient.post("/subscriptions/subscribe", subscription) } catch (error) { @@ -82,19 +111,24 @@ const sendSubscribe = async () => { } } +const token = ref(localStorage.getItem("token")); const userStore = useUserStore(); const user = computed(() => userStore.user); +const spaceStore = useSpaceStore() + onMounted(async () => { - if (!userStore.user) { + if (!userStore.user && localStorage.getItem("token")) { await userStore.fetchUserProfile(); - + await checkSubscribe(); + await spaceStore.fetchSpaces() } - await checkSubscribe(); + + }); diff --git a/src/components/MenuBar.vue b/src/components/MenuBar.vue index 349dfd0..c088393 100644 --- a/src/components/MenuBar.vue +++ b/src/components/MenuBar.vue @@ -1,38 +1,66 @@ - - diff --git a/src/components/ToolBar.vue b/src/components/ToolBar.vue index ad86dd6..06be9e1 100644 --- a/src/components/ToolBar.vue +++ b/src/components/ToolBar.vue @@ -118,8 +118,7 @@ const openDrawer = (selectedTransactionType = null, selectedCategoryType = null) drawerStore.setTransactionType(selectedTransactionType) drawerStore.setCategoryType('EXPENSE') } - console.log(selectedTransactionType) - console.log(selectedCategoryType) + drawerStore.setVisible( true) } @@ -151,13 +150,7 @@ const items = ref([ } ]) -const onEditClick = () => { - console.log("Edit button clicked"); -}; -const onAddClick = () => { - console.log("Add button clicked"); -}; onMounted(() => { // setTimeout(() => { diff --git a/src/components/analytics/AnalyticsView.vue b/src/components/analytics/AnalyticsView.vue index 1872169..13e03f5 100644 --- a/src/components/analytics/AnalyticsView.vue +++ b/src/components/analytics/AnalyticsView.vue @@ -1,6 +1,6 @@ + diff --git a/src/components/auth/LoginView.vue b/src/components/auth/LoginView.vue index b05c722..b5c38dc 100644 --- a/src/components/auth/LoginView.vue +++ b/src/components/auth/LoginView.vue @@ -1,110 +1,130 @@ + \ No newline at end of file diff --git a/src/components/auth/RegisterView.vue b/src/components/auth/RegisterView.vue new file mode 100644 index 0000000..59291e9 --- /dev/null +++ b/src/components/auth/RegisterView.vue @@ -0,0 +1,120 @@ + + + + + \ No newline at end of file diff --git a/src/components/budgets/BudgetCreationView.vue b/src/components/budgets/BudgetCreationView.vue index 62bc52f..f930746 100644 --- a/src/components/budgets/BudgetCreationView.vue +++ b/src/components/budgets/BudgetCreationView.vue @@ -25,7 +25,7 @@ const dateTo = ref(new Date()) const budget = ref(new Budget()) const create = async () => { - console.log(budget.value) + try { emits("budget-created", budget.value, createRecurrentPayments.value); } catch (e) { diff --git a/src/components/budgets/BudgetList.vue b/src/components/budgets/BudgetList.vue index e76d2a6..9d2a50c 100644 --- a/src/components/budgets/BudgetList.vue +++ b/src/components/budgets/BudgetList.vue @@ -1,6 +1,6 @@ diff --git a/src/components/budgets/BudgetTransactionView.vue b/src/components/budgets/BudgetTransactionView.vue index 0a1759d..48706b4 100644 --- a/src/components/budgets/BudgetTransactionView.vue +++ b/src/components/budgets/BudgetTransactionView.vue @@ -34,7 +34,7 @@ const emits = defineEmits(['open-drawer', 'transaction-checked', 'transaction-up const setIsDoneTrue = async () => { setTimeout(async () => { - console.log("here") + await updateTransactionRequest(props.transaction) emits('transaction-updated') }, 20); @@ -63,7 +63,7 @@ const toggleDrawer = () => { } const transactionUpdate = () => { - console.log("transaction updated") + emits('transaction-updated') } diff --git a/src/components/budgets/BudgetView.vue b/src/components/budgets/BudgetView.vue index 0a4fd81..2e107b2 100644 --- a/src/components/budgets/BudgetView.vue +++ b/src/components/budgets/BudgetView.vue @@ -409,7 +409,7 @@ const leftForUnplanned = ref(0) const budget = ref() const warns = ref<[Warn]>() const checkWarnsExists = computed(() => { - console.log(warns?.value && warns.value.length > 0 ? "true" : "false"); + return warns?.value?.length > 0; }); diff --git a/src/components/budgets/BudgetView2.vue b/src/components/budgets/BudgetView2.vue index 4a0a541..8e99fe5 100644 --- a/src/components/budgets/BudgetView2.vue +++ b/src/components/budgets/BudgetView2.vue @@ -14,21 +14,16 @@ import {Budget, BudgetCategory, Warn} from "@/models/Budget"; import {useRoute} from "vue-router"; import {formatAmount, formatDate, getMonthName, getMonthName2} from "@/utils/utils"; import ProgressBar from "primevue/progressbar"; -import ProgressSpinner from "primevue/progressspinner"; -import BudgetCategoryView from "@/components/budgets/BudgetCategoryView.vue"; import {Transaction} from "@/models/Transaction"; import Toast from "primevue/toast"; -import Button from "primevue/button"; import LoadingView from "@/components/LoadingView.vue"; import ChartDataLabels from 'chartjs-plugin-datalabels'; import {Chart as ChartJS} from 'chart.js/auto'; import SelectButton from "primevue/selectbutton"; import Divider from "primevue/divider"; -import TransactionForm from "@/components/transactions/TransactionForm.vue"; -import Checkbox from "primevue/checkbox"; import {useDrawerStore} from "@/stores/drawerStore"; import {EventBus} from '@/utils/EventBus.ts'; -import {useUserStore} from "@/stores/userStore"; +import {useToast} from "primevue/usetoast"; // Зарегистрируем плагин ChartJS.register(ChartDataLabels); @@ -60,7 +55,7 @@ const leftForUnplanned = ref(0) const budget = ref() const warns = ref<[Warn]>() const checkWarnsExists = computed(() => { - console.log(warns?.value && warns.value.length > 0 ? "true" : "false"); + return warns?.value?.length > 0; }); const categories = ref([]) @@ -384,23 +379,37 @@ const updateLimitOnBackend = async (categoryId, newLimit) => { }); }; - +const toast = useToast(); const budgetInfo = ref(); const fetchBudgetInfo = async (test) => { - loading.value = test ? test : false; - await getBudgetInfo(route.params.id).then((data) => { - budget.value = data - plannedExpenses.value = budget.value?.plannedExpenses - plannedIncomes.value = budget.value?.plannedIncomes - transactions.value = budget.value?.transactions - categories.value = budget.value?.categories - incomeCategories.value = budget.value?.incomeCategories - updateLoading.value = false - } - ) + try { + await getBudgetInfo(route.params.id).then((data) => { + budget.value = data + plannedExpenses.value = budget.value?.plannedExpenses + plannedIncomes.value = budget.value?.plannedIncomes + transactions.value = budget.value?.transactions + categories.value = budget.value?.categories + incomeCategories.value = budget.value?.incomeCategories + updateLoading.value = false + } + ).catch((error) => { + loading.value = false + updateLoading.value = false + + toast.add({ + severity: 'error', + summary: 'Ошибка!', + detail: error.response?.data?.message || 'Ошибка при создании транзакции', + life: 3000 + }); + }) + } catch (error) { + toast.add({severity: 'error', summary: "Ошибка при получении бюджета", detail: error.message, life: 3000}); + } updateLoading.value = false loading.value = false + } @@ -613,7 +622,7 @@ const expandCats = (value: boolean) => { for (const categoryId in incomeCategoriesState) { if (Object.prototype.hasOwnProperty.call(incomeCategoriesState, categoryId)) { incomeCategoriesState[categoryId].isOpened = value; - console.log(`Категория ${categoryId}: isOpened = ${incomeCategoriesState[categoryId].isOpened}`); + } } @@ -621,7 +630,7 @@ const expandCats = (value: boolean) => { for (const categoryId in expenseCategoriesState) { if (Object.prototype.hasOwnProperty.call(expenseCategoriesState, categoryId)) { expenseCategoriesState[categoryId].isOpened = value; - console.log(`Категория ${categoryId}: isOpened = ${expenseCategoriesState[categoryId].isOpened}`); + } } }; @@ -710,29 +719,17 @@ watch([budget, plannedExpenses], () => { calendar.value = result; }, {immediate: true}); -onMounted(async () => { +onMounted(() => { updateLoading.value = true; - try { - await Promise.all([ - fetchBudgetInfo(), - fetchWarns() - // budget.value = await getBudgetInfo(route.params.id), - // fetchPlannedIncomes(), - // fetchPlannedExpenses(), - // fetchBudgetCategories(), - // fetchBudgetTransactions(), - ]); - EventBus.on('transactions-updated', fetchBudgetInfo, true); - } catch (error) { - console.error('Error during fetching data:', error); - } finally { - loading.value = false - } -}); -onUnmounted(async () => { - EventBus.off('transactions-updated', fetchBudgetInfo); + fetchBudgetInfo() + fetchWarns() + EventBus.on('transactions-updated', fetchBudgetInfo, true); }) + + onUnmounted(async () => { + EventBus.off('transactions-updated', fetchBudgetInfo); + }) diff --git a/src/components/settings/recurrent/RecurrentList.vue b/src/components/settings/recurrent/RecurrentList.vue index 77982b0..a069539 100644 --- a/src/components/settings/recurrent/RecurrentList.vue +++ b/src/components/settings/recurrent/RecurrentList.vue @@ -1,14 +1,14 @@