diff --git a/src/composables/pagination.js b/src/composables/pagination.js
index cd6ace4..cce2948 100644
--- a/src/composables/pagination.js
+++ b/src/composables/pagination.js
@@ -1,20 +1,23 @@
import {ref} from "vue";
-// TODO: predelat na usePagination() composable!
+export const usePagination = () => {
+ const paginationLimit = ref(10);
+ const paginationOffset = ref(0);
+ const filters = ref({});
+ const loadPage = ({fetchFunc, appendItems}) => {
+ return fetchFunc({
+ ...filters.value,
+ limit: paginationLimit.value,
+ offset: paginationOffset.value,
+ appendItems
+ }).then(() => {
+ paginationOffset.value += paginationLimit.value;
+ })
+ }
-export const paginationLimit = ref(10);
-export const paginationOffset = ref(0);
-export const filters = ref({});
-
-export const loadPage = ({fetchFunc, appendItems}) => {
- return fetchFunc({
- ...filters.value,
- limit: paginationLimit.value,
- offset: paginationOffset.value,
- appendItems
- }).then(() => {
- paginationOffset.value += paginationLimit.value;
- })
+ return {
+ paginationOffset, paginationLimit, filters, loadPage
+ }
}
diff --git a/src/pages/profile/aircraft/AircraftDetailPage.vue b/src/pages/profile/aircraft/AircraftDetailPage.vue
index c94cc5f..14843ed 100644
--- a/src/pages/profile/aircraft/AircraftDetailPage.vue
+++ b/src/pages/profile/aircraft/AircraftDetailPage.vue
@@ -16,7 +16,7 @@ import {useLoggedUserStore} from "stores/LoggedUser";
import {useFlightsStore} from "stores/Flights";
import {toggleVisibility} from "src/composables/form/formHandling";
import ContentCardEditButton from "components/ContentCardEditButton.vue";
-import {filters, loadPage, paginationLimit} from "src/composables/pagination";
+import {usePagination} from "src/composables/pagination";
import BasicInfoBanner from "components/banners/BasicInfoBanner.vue";
import FlightsListSkeleton from "components/flights/skeletons/FlightsListSkeleton.vue";
import CopyLinkButton from "components/inputs/CopyLinkButton.vue";
@@ -53,6 +53,7 @@ const togglePublicVisibility = (variables) => toggleVisibility({
$q, store: useAircraftsStore(), object: aircraft.value, variables
});
+const {filters, loadPage, paginationLimit} = usePagination();
filters.value = {aircraftId: aircraftId};
const loadNextFlightsPage = (appendItems) => loadPage({
fetchFunc: useFlightsStore().fetch,
diff --git a/src/pages/profile/aircraft/AircraftsPage.vue b/src/pages/profile/aircraft/AircraftsPage.vue
index da064e4..d888d48 100644
--- a/src/pages/profile/aircraft/AircraftsPage.vue
+++ b/src/pages/profile/aircraft/AircraftsPage.vue
@@ -6,13 +6,11 @@ import BasicInfoBanner from "components/banners/BasicInfoBanner.vue";
import {useAircraftsStore} from "stores/Aircrafts";
import {storeToRefs} from "pinia";
import {useAppStore} from "stores/App";
-import FlightsList from "components/flights/FlightsList.vue";
-import {ref} from "vue";
-import {useFlightsStore} from "stores/Flights";
-import {loadPage, paginationLimit} from "src/composables/pagination";
+import {usePagination} from "src/composables/pagination";
useAppStore().setPageTitle("Letadla");
+const {filters, loadPage, paginationLimit} = usePagination();
const loadNextAircraftsPage = (appendItems) => loadPage({
fetchFunc: useAircraftsStore().fetch, appendItems
});
diff --git a/src/pages/profile/copilot/CopilotDetailPage.vue b/src/pages/profile/copilot/CopilotDetailPage.vue
index 3655668..09e8ebd 100644
--- a/src/pages/profile/copilot/CopilotDetailPage.vue
+++ b/src/pages/profile/copilot/CopilotDetailPage.vue
@@ -1,6 +1,5 @@
diff --git a/src/pages/profile/event/EventDetailPage.vue b/src/pages/profile/event/EventDetailPage.vue
index 36d64bb..29aa121 100644
--- a/src/pages/profile/event/EventDetailPage.vue
+++ b/src/pages/profile/event/EventDetailPage.vue
@@ -7,7 +7,7 @@ import FAB from "components/FAB.vue";
import FlightsList from "components/flights/FlightsList.vue";
import {useEventsStore} from "stores/Events";
import {storeToRefs} from "pinia";
-import {filters, loadPage, paginationLimit} from "src/composables/pagination";
+import {usePagination} from "src/composables/pagination";
import {useFlightsStore} from "stores/Flights";
import PublishButton from "components/inputs/PublishButton.vue";
import {useLoggedUserStore} from "stores/LoggedUser";
@@ -37,6 +37,7 @@ const togglePublicVisibility = (variables) => toggleVisibility({
const {isQueryRunning, event} = storeToRefs(useEventsStore());
+const {filters, loadPage, paginationLimit} = usePagination();
filters.value = {eventId: eventId}
const loadNextFlightsPage = (appendItems) => loadPage({
fetchFunc: useFlightsStore().fetch, appendItems
diff --git a/src/pages/profile/flight/FlightsPage.vue b/src/pages/profile/flight/FlightsPage.vue
index 299fa85..98d8ac8 100644
--- a/src/pages/profile/flight/FlightsPage.vue
+++ b/src/pages/profile/flight/FlightsPage.vue
@@ -6,11 +6,13 @@ import {useAppStore} from "stores/App";
import BasicInfoBanner from "components/banners/BasicInfoBanner.vue";
import {useFlightsStore} from "stores/Flights";
import {storeToRefs} from "pinia";
-import {loadPage, paginationLimit} from "src/composables/pagination";
+import {usePagination} from "src/composables/pagination";
import {onMounted} from "vue";
useAppStore().setPageTitle("Moje lety");
+const {loadPage, paginationLimit} = usePagination();
+
const loadNextPage = (appendItems) => loadPage({
fetchFunc: useFlightsStore().fetch, appendItems
});
diff --git a/src/pages/profile/poi/PointOfInterestDetailPage.vue b/src/pages/profile/poi/PointOfInterestDetailPage.vue
index c0374c9..d020090 100644
--- a/src/pages/profile/poi/PointOfInterestDetailPage.vue
+++ b/src/pages/profile/poi/PointOfInterestDetailPage.vue
@@ -1,5 +1,5 @@
@@ -20,8 +23,8 @@ import PhotoGallery from "components/photos/PhotoGallery.vue";
import {useMeta} from "quasar";
import {metaData} from "src/composables/meta";
import PhotoGallerySkeleton from "components/photos/skeletons/PhotoGallerySkeleton.vue";
-import {filters, loadPage, paginationLimit} from "src/composables/pagination";
import BasicInfoBanner from "components/banners/BasicInfoBanner.vue";
+import {usePagination} from "src/composables/pagination";
const props = defineProps({
pilot: {
@@ -48,7 +51,7 @@ useMeta(() => metaData({
image: copilot.value.titleImage?.url
}));
-
+const {filters, loadPage, paginationLimit} = usePagination();
filters.value = {copilotId: copilot.value.id};
const loadNextFlightsPage = (appendItems) => loadPage({
fetchFunc: useFlightsStore().fetchPublic, appendItems
diff --git a/src/pages/public/pilotProfile/EventDetailPage.vue b/src/pages/public/pilotProfile/EventDetailPage.vue
index 339de67..ad6867d 100644
--- a/src/pages/public/pilotProfile/EventDetailPage.vue
+++ b/src/pages/public/pilotProfile/EventDetailPage.vue
@@ -13,7 +13,7 @@ import {useAppStore} from "stores/App";
import EventDetailSkeleton from "components/event/skeletons/EventDetailSkeleton.vue";
import FlightsList from "components/flights/FlightsList.vue";
import {storeToRefs} from "pinia";
-import {filters, loadPage, paginationLimit} from "src/composables/pagination";
+import {usePagination} from "src/composables/pagination";
import {useFlightsStore} from "stores/Flights";
import FlightsListSkeleton from "components/flights/skeletons/FlightsListSkeleton.vue";
import {useMeta} from "quasar";
@@ -42,6 +42,7 @@ useMeta(() => metaData({
description: event.value.description
}))
+const {filters, loadPage, paginationLimit} = usePagination();
filters.value = {username: props.pilot.publicUsername, eventId: event.value.id};
const loadNextFlightsPage = (appendItems) => loadPage({
fetchFunc: useFlightsStore().fetchPublic, appendItems
diff --git a/src/pages/public/pilotProfile/FlightsListPage.vue b/src/pages/public/pilotProfile/FlightsListPage.vue
index f1e58bc..8b37883 100644
--- a/src/pages/public/pilotProfile/FlightsListPage.vue
+++ b/src/pages/public/pilotProfile/FlightsListPage.vue
@@ -7,7 +7,7 @@ import {useFlightsStore} from "stores/Flights";
import {storeToRefs} from "pinia";
import {commonKeywords, metaData} from "src/composables/meta";
import {useMeta} from "quasar";
-import {filters, loadPage, paginationLimit} from "src/composables/pagination";
+import {usePagination} from "src/composables/pagination";
const props = defineProps({
pilot: {
@@ -29,6 +29,7 @@ useAppStore().setBreadcrumbs([
{label: `@${props.pilot.publicUsername}`},
])
+const {filters, loadPage, paginationLimit} = usePagination();
filters.value = {username: props.pilot.publicUsername};
const loadNextFlightsPage = (appendItems) => loadPage({
fetchFunc: useFlightsStore().fetchPublic,
diff --git a/src/pages/public/poi/PointOfInterestDetailPage.vue b/src/pages/public/poi/PointOfInterestDetailPage.vue
index 59a71da..607a7a5 100644
--- a/src/pages/public/poi/PointOfInterestDetailPage.vue
+++ b/src/pages/public/poi/PointOfInterestDetailPage.vue
@@ -23,7 +23,7 @@ import FlightsListSkeleton from "components/flights/skeletons/FlightsListSkeleto
import BasicInfoBanner from "components/banners/BasicInfoBanner.vue";
import {onMounted} from "vue";
import PhotoGallerySkeleton from "components/photos/skeletons/PhotoGallerySkeleton.vue";
-import {filters, loadPage, paginationLimit} from "src/composables/pagination";
+import {usePagination} from "src/composables/pagination";
const {pointOfInterest, isQueryRunning} = storeToRefs(usePointsOfInterestStore());
const {photos, isQueryRunning: arePhotosLoading} = storeToRefs(usePhotosStore());
@@ -41,6 +41,7 @@ useAppStore().setBreadcrumbs([
{label: pointOfInterest.value.name}
]);
+const {filters, loadPage, paginationLimit} = usePagination();
filters.value = {pointOfInterestId: pointOfInterest.value.id};
const loadNextFlightsPage = (appendItems) => loadPage({
fetchFunc: useFlightsStore().fetchPublic,
diff --git a/src/pages/public/poi/PointsOfInterestPage.vue b/src/pages/public/poi/PointsOfInterestPage.vue
index bfc2c1e..163aa28 100644
--- a/src/pages/public/poi/PointsOfInterestPage.vue
+++ b/src/pages/public/poi/PointsOfInterestPage.vue
@@ -6,7 +6,7 @@ import POIList from "components/poi/POIList.vue";
import {useAppStore} from "stores/App";
import {useMeta} from "quasar";
import {metaData} from "src/composables/meta";
-import {filters, loadPage, paginationLimit, paginationOffset} from "src/composables/pagination";
+import {usePagination} from "src/composables/pagination";
import ListFilters from "components/ListFilters.vue";
useAppStore().setPageTitle("Místa");
@@ -18,6 +18,7 @@ useMeta(() => metaData({
title: "Místa"
}))
+const {filters, loadPage, paginationOffset, paginationLimit} = usePagination();
const loadNextPage = (appendItems) => loadPage({
fetchFunc: usePointsOfInterestStore().fetchPublic, appendItems
});
diff --git a/src/stores/App.js b/src/stores/App.js
index b5e7818..f610e7b 100644
--- a/src/stores/App.js
+++ b/src/stores/App.js
@@ -1,6 +1,5 @@
import {defineStore} from 'pinia'
import {ref} from "vue";
-import {filters, paginationLimit, paginationOffset} from "src/composables/pagination";
export const useAppStore = defineStore('App', () => {
const pageTitle = ref(null);
@@ -11,11 +10,6 @@ export const useAppStore = defineStore('App', () => {
pageTitle.value = null;
// appStatus.value = 200; // tohle dela problem pri renderu 404 na serveru
breadcrumbs.value = null;
-
- // reset strankovani po prechodu na strankach
- paginationLimit.value = 10;
- paginationOffset.value = 0;
- filters.value = {};
};
const setPageTitle = (value) => {