Bug 32030: Fix pinia init

Uncaught Error: [🍍]: getActivePinia was called with no active Pinia. Did you forget to install pinia? const pinia = createPinia() app.use(pinia) This will fail in production.

Signed-off-by: Jonathan Field <jonathan.field@ptfs-europe.com>

Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
This commit is contained in:
Jonathan Druart 2022-10-20 17:29:07 +02:00 committed by Tomas Cohen Arazi
parent f62e6ebbaa
commit 2db6bd8a0c
No known key found for this signature in database
GPG Key ID: 0A272EA1B2F3C15F
24 changed files with 73 additions and 78 deletions

View File

@ -173,22 +173,22 @@
</template>
<script>
import { inject } from 'vue'
import AgreementPeriods from './AgreementPeriods.vue'
import AgreementUserRoles from './AgreementUserRoles.vue'
import AgreementLicenses from './AgreementLicenses.vue'
import AgreementRelationships from './AgreementRelationships.vue'
import AgreementDocuments from './AgreementDocuments.vue'
import { useVendorStore } from "../../stores/vendors"
import { useAVStore } from "../../stores/authorised_values"
import { setMessage, setError, setWarning } from "../../messages"
import { fetchAgreement } from '../../fetch'
import { storeToRefs } from "pinia"
export default {
setup() {
const vendorStore = useVendorStore()
const vendorStore = inject('vendorStore')
const { vendors } = storeToRefs(vendorStore)
const AVStore = useAVStore()
const AVStore = inject('AVStore')
const {
av_agreement_statuses,
av_agreement_closure_reasons,

View File

@ -34,19 +34,18 @@
<script>
import flatPickr from 'vue-flatpickr-component'
import Toolbar from "./AgreementsToolbar.vue"
import { createVNode, render } from 'vue'
import { useVendorStore } from "../../stores/vendors"
import { useAVStore } from "../../stores/authorised_values"
import { inject, createVNode, render } from 'vue'
import { storeToRefs } from "pinia"
import { fetchAgreements } from "../../fetch"
import { useDataTable, build_url } from "../../composables/datatables"
export default {
setup() {
const vendorStore = useVendorStore()
const vendorStore = inject('vendorStore')
const { vendors } = storeToRefs(vendorStore)
const AVStore = useAVStore()
const AVStore = inject('AVStore')
const { get_lib_from_av, map_av_dt_filter } = AVStore
const table_id = "agreement_list"

View File

@ -299,7 +299,7 @@
</template>
<script>
import { useAVStore } from "../../stores/authorised_values"
import { inject } from 'vue'
import { fetchAgreement } from "../../fetch"
export default {
@ -307,7 +307,7 @@ export default {
const format_date = $date
const patron_to_html = $patron_to_html
const AVStore = useAVStore()
const AVStore = inject('AVStore')
const { get_lib_from_av } = AVStore
return {

View File

@ -15,11 +15,11 @@
</template>
<script>
import { inject } from "vue"
import { storeToRefs } from "pinia"
import { useMainStore } from "../../stores/main"
export default {
setup() {
const mainStore = useMainStore()
const mainStore = inject("mainStore")
const { message, error, warning } = storeToRefs(mainStore)
const { removeMessages } = mainStore
return { message, error, warning, removeMessages }
@ -42,4 +42,4 @@ export default {
float: right;
cursor: pointer;
}
</style>
</style>

View File

@ -59,14 +59,13 @@
<script>
import { createVNode, render } from 'vue'
import { useAVStore } from "../../stores/authorised_values"
import { inject, createVNode, render } from 'vue'
import { storeToRefs } from "pinia"
import { useDataTable } from "../../composables/datatables"
export default {
setup() {
const AVStore = useAVStore()
const AVStore = inject('AVStore')
const { av_title_publication_types } = storeToRefs(AVStore)
const { get_lib_from_av, map_av_dt_filter } = AVStore

View File

@ -60,19 +60,17 @@
</template>
<script>
import { createVNode, render } from 'vue'
import { useVendorStore } from "../../stores/vendors"
import { useAVStore } from "../../stores/authorised_values"
import { inject, createVNode, render } from 'vue'
import { storeToRefs } from "pinia"
import { fetchCountLocalPackages } from './../../fetch'
import { useDataTable, build_url_params, build_url } from "../../composables/datatables"
export default {
setup() {
const vendorStore = useVendorStore() // FIXME We only need that for 'manual'
const vendorStore = inject('vendorStore')
const { vendors } = storeToRefs(vendorStore)
const AVStore = useAVStore()
const AVStore = inject('AVStore')
const { av_package_types, av_package_content_types } = storeToRefs(AVStore)
const { get_lib_from_av, map_av_dt_filter } = AVStore

View File

@ -103,16 +103,16 @@
</template>
<script>
import { inject } from 'vue'
import EHoldingsPackageAgreements from "./EHoldingsEBSCOPackageAgreements.vue"
import EHoldingsPackageTitlesList from "./EHoldingsEBSCOPackageTitlesList.vue"
import { useAVStore } from "../../stores/authorised_values"
import { fetchEBSCOPackage, checkError } from "../../fetch"
export default {
setup() {
const format_date = $date
const AVStore = useAVStore()
const AVStore = inject('AVStore')
const { get_lib_from_av } = AVStore
return {

View File

@ -112,8 +112,8 @@
</template>
<script>
import { inject } from 'vue'
import { fetchEBSCOResource } from "../../fetch"
import { useVendorStore } from "../../stores/vendors"
import { storeToRefs } from "pinia"
import { checkError } from '../../fetch.js'
@ -121,7 +121,7 @@ export default {
setup() {
const format_date = $date
const vendorStore = useVendorStore()
const vendorStore = inject('vendorStore')
const { vendors } = storeToRefs(vendorStore)
return {
format_date,

View File

@ -66,19 +66,17 @@
</template>
<script>
import { createVNode, render } from 'vue'
import { useVendorStore } from "../../stores/vendors"
import { useAVStore } from "../../stores/authorised_values"
import { inject, createVNode, render } from 'vue'
import { storeToRefs } from "pinia"
import { fetchCountLocalTitles } from "./../../fetch"
import { useDataTable, build_url_params, build_url } from "../../composables/datatables"
export default {
setup() {
const vendorStore = useVendorStore()
const vendorStore = inject('vendorStore')
const { vendors } = storeToRefs(vendorStore)
const AVStore = useAVStore()
const AVStore = inject('AVStore')
const { av_title_publication_types } = storeToRefs(AVStore)
const { get_lib_from_av } = AVStore

View File

@ -243,12 +243,12 @@
</template>
<script>
import { inject } from 'vue'
import EHoldingsTitlePackagesList from "./EHoldingsEBSCOTitlePackagesList.vue"
import { fetchEBSCOTitle } from "../../fetch"
import { useAVStore } from "../../stores/authorised_values"
export default {
setup() {
const AVStore = useAVStore()
const AVStore = inject('AVStore')
const { get_lib_from_av } = AVStore
return {

View File

@ -6,13 +6,12 @@
<script>
import { createVNode, render } from 'vue'
import { useAVStore } from "../../stores/authorised_values"
import { inject, createVNode, render } from 'vue'
import { useDataTable } from "../../composables/datatables"
export default {
setup() {
const AVStore = useAVStore()
const AVStore = inject('AVStore')
const { get_lib_from_av, map_av_dt_filter } = AVStore
const table_id = "title_list"

View File

@ -85,18 +85,17 @@
</template>
<script>
import { inject } from 'vue'
import EHoldingsPackageAgreements from "./EHoldingsLocalPackageAgreements.vue"
import { useVendorStore } from "../../stores/vendors"
import { useAVStore } from "../../stores/authorised_values"
import { setMessage, setError, setWarning } from "../../messages"
import { fetchLocalPackage, createPackage, editPackage } from '../../fetch'
import { storeToRefs } from "pinia"
export default {
setup() {
const vendorStore = useVendorStore()
const vendorStore = inject('vendorStore')
const { vendors } = storeToRefs(vendorStore)
const AVStore = useAVStore()
const AVStore = inject('AVStore')
const {
av_package_types,
av_package_content_types,

View File

@ -15,19 +15,17 @@
<script>
import Toolbar from "./EHoldingsLocalPackagesToolbar.vue"
import { createVNode, render } from 'vue'
import { useVendorStore } from "../../stores/vendors"
import { useAVStore } from "../../stores/authorised_values"
import { inject, createVNode, render } from 'vue'
import { storeToRefs } from "pinia"
import { fetchLocalPackages } from "../../fetch"
import { useDataTable } from "../../composables/datatables"
export default {
setup() {
const vendorStore = useVendorStore() // FIXME We only need that for 'manual'
const vendorStore = inject('vendorStore')
const { vendors } = storeToRefs(vendorStore)
const AVStore = useAVStore()
const AVStore = inject('AVStore')
const { get_lib_from_av, map_av_dt_filter } = AVStore
const table_id = "package_list"

View File

@ -104,15 +104,15 @@
</template>
<script>
import { inject } from 'vue'
import EHoldingsPackageTitlesList from "./EHoldingsLocalPackageTitlesList.vue"
import { useAVStore } from "../../stores/authorised_values"
import { fetchLocalPackage } from "../../fetch"
export default {
setup() {
const format_date = $date
const AVStore = useAVStore()
const AVStore = inject('AVStore')
const { get_lib_from_av } = AVStore
return {

View File

@ -95,14 +95,14 @@
</template>
<script>
import { inject } from 'vue'
import { fetchLocalResource } from "../../fetch"
import { useVendorStore } from "../../stores/vendors"
import { storeToRefs } from "pinia"
export default {
setup() {
const format_date = $date
const vendorStore = useVendorStore()
const vendorStore = inject('vendorStore')
const { vendors } = storeToRefs(vendorStore)
return {
format_date,

View File

@ -379,8 +379,7 @@
</template>
<script>
import { useVendorStore } from "../../stores/vendors"
import { useAVStore } from "../../stores/authorised_values"
import { inject } from 'vue'
import EHoldingsTitlesFormAddResources from "./EHoldingsLocalTitlesFormAddResources.vue"
import { setMessage, setError, setWarning } from "../../messages"
import { fetchLocalTitle } from '../../fetch'
@ -388,10 +387,10 @@ import { storeToRefs } from "pinia"
export default {
setup() {
const vendorStore = useVendorStore()
const vendorStore = inject('vendorStore')
const { vendors } = storeToRefs(vendorStore)
const AVStore = useAVStore()
const AVStore = inject('AVStore')
const { av_title_publication_types } = storeToRefs(AVStore)
const { get_lib_from_av } = AVStore

View File

@ -92,14 +92,14 @@
</template>
<script>
import { inject } from 'vue'
import flatPickr from 'vue-flatpickr-component'
import { useVendorStore } from "../../stores/vendors"
import { storeToRefs } from "pinia"
import { fetchLocalPackages } from "../../fetch"
export default {
setup() {
const vendorStore = useVendorStore() // FIXME We only need that for 'manual'
const vendorStore = inject('vendorStore')
const { vendors } = storeToRefs(vendorStore)
return { vendors }
},

View File

@ -15,15 +15,14 @@
<script>
import Toolbar from "./EHoldingsLocalTitlesToolbar.vue"
import { createVNode, render } from 'vue'
import { useAVStore } from "../../stores/authorised_values"
import { inject, createVNode, render } from 'vue'
import { storeToRefs } from "pinia"
import { fetchLocalTitles } from "../../fetch"
import { useDataTable } from "../../composables/datatables"
export default {
setup() {
const AVStore = useAVStore()
const AVStore = inject('AVStore')
const { av_title_publication_types } = storeToRefs(AVStore)
const { get_lib_from_av, map_av_dt_filter } = AVStore

View File

@ -256,12 +256,12 @@
</template>
<script>
import { inject } from 'vue'
import EHoldingsTitlePackagesList from "./EHoldingsLocalTitlePackagesList.vue"
import { fetchLocalTitle } from "../../fetch"
import { useAVStore } from "../../stores/authorised_values"
export default {
setup() {
const AVStore = useAVStore()
const AVStore = inject('AVStore')
const { get_lib_from_av } = AVStore
return {

View File

@ -116,17 +116,15 @@
</template>
<script>
import { inject } from 'vue'
import Breadcrumb from "./Breadcrumb.vue"
import Dialog from "./Dialog.vue"
import { useVendorStore } from "../../stores/vendors"
import { useAVStore } from "../../stores/authorised_values"
import { fetchVendors } from "../../fetch"
import "vue-select/dist/vue-select.css";
export default {
setup() {
const vendorStore = useVendorStore()
const AVStore = useAVStore()
const AVStore = inject('AVStore')
AVStore.av_agreement_statuses = agreement_statuses
AVStore.av_agreement_closure_reasons = agreement_closure_reasons
AVStore.av_agreement_renewal_priorities = agreement_renewal_priorities
@ -139,6 +137,8 @@ export default {
AVStore.av_package_content_types = package_content_types
AVStore.av_title_publication_types = title_publication_types
const vendorStore = inject('vendorStore')
return {
vendorStore,
erm_providers,
@ -179,4 +179,4 @@ form .v-select {
border-radius: 4px;
min-width: 30%;
}
</style>
</style>

View File

@ -125,9 +125,8 @@
</template>
<script>
import { inject } from 'vue'
import flatPickr from 'vue-flatpickr-component'
import { useVendorStore } from "../../stores/vendors"
import { useAVStore } from "../../stores/authorised_values"
import { setMessage, setError } from "../../messages"
import { fetchLicense } from '../../fetch'
import { storeToRefs } from "pinia"
@ -135,9 +134,10 @@ import { storeToRefs } from "pinia"
export default {
setup() {
const vendorStore = useVendorStore()
const vendorStore = inject('vendorStore')
const { vendors } = storeToRefs(vendorStore)
const AVStore = useAVStore()
const AVStore = inject('AVStore')
const {
av_license_types,
av_license_statuses,

View File

@ -11,19 +11,17 @@
<script>
import Toolbar from "./LicensesToolbar.vue"
import { createVNode, render } from 'vue'
import { useVendorStore } from "../../stores/vendors"
import { useAVStore } from "../../stores/authorised_values"
import { inject, createVNode, render } from 'vue'
import { storeToRefs } from "pinia"
import { fetchLicenses } from "../../fetch"
import { useDataTable } from "../../composables/datatables"
export default {
setup() {
const vendorStore = useVendorStore()
const vendorStore = inject('vendorStore')
const { vendors } = storeToRefs(vendorStore)
const AVStore = useAVStore()
const AVStore = inject('AVStore')
const { get_lib_from_av, map_av_dt_filter } = AVStore
const table_id = "license_list"

View File

@ -81,14 +81,14 @@
</template>
<script>
import { useAVStore } from "../../stores/authorised_values"
import { inject } from 'vue'
import { fetchLicense } from "../../fetch"
export default {
setup() {
const format_date = $date
const AVStore = useAVStore()
const AVStore = inject('AVStore')
const { get_lib_from_av } = AVStore
return {

View File

@ -22,6 +22,8 @@ import { routes } from "./routes";
const router = createRouter({ history: createWebHistory(), routes });
import { useMainStore } from "./stores/main";
import { useVendorStore } from "./stores/vendors";
import { useAVStore } from "./stores/authorised_values";
import { createI18n } from "vue-i18n";
@ -34,17 +36,24 @@ const languages = { en, "de-DE": de_DE, "es-ES": es_ES, "fr-FR": fr_FR };
const messages = Object.assign(languages);
const i18n = createI18n({ locale: "en", messages });
const pinia = createPinia();
const app = createApp(App);
const rootComponent = app.use(createPinia())
const rootComponent = app
.use(pinia)
.use(router)
.use(i18n)
.component("font-awesome-icon", FontAwesomeIcon)
.component("v-select", vSelect);
app.config.unwrapInjectedRef = true;
app.provide("vendorStore", useVendorStore(pinia));
const mainStore = useMainStore(pinia);
app.provide("mainStore", mainStore);
app.provide("AVStore", useAVStore(pinia));
app.mount("#erm");
const mainStore = useMainStore();
const { removeMessages } = mainStore;
router.beforeEach((to, from) => {
removeMessages(); // This will actually flag the messages as displayed already