diff --git a/package-lock.json b/package-lock.json index f06817d5..d4c65896 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,13 +23,13 @@ "line-awesome": "^1.3.0", "moment": "^2.29.4", "moment-timezone": "^0.5.43", + "pinia": "^2.1.3", "register-service-worker": "^1.7.2", "skeleton-elements": "^4.0.1", "swiper": "^9.3.2", "ua-parser-js": "^1.0.35", "vue": "^3.3.4", - "vue-i18n": "^9.2.2", - "vuex": "^4.1.0" + "vue-i18n": "^9.2.2" }, "devDependencies": { "@vitejs/plugin-vue": "^4.2.0", @@ -5634,6 +5634,56 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pinia": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.3.tgz", + "integrity": "sha512-XNA/z/ye4P5rU1pieVmh0g/hSuDO98/a5UC8oSP0DNdvt6YtetJNHTrXwpwsQuflkGT34qKxAEcp7lSxXNjf/A==", + "dependencies": { + "@vue/devtools-api": "^6.5.0", + "vue-demi": ">=0.14.5" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "@vue/composition-api": "^1.4.0", + "typescript": ">=4.4.4", + "vue": "^2.6.14 || ^3.3.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/pinia/node_modules/vue-demi": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.5.tgz", + "integrity": "sha512-o9NUVpl/YlsGJ7t+xuqJKx8EBGf1quRhCiT6D/J0pfwmk9zUwYkC7yrF4SZCe6fETvSM3UNL2edcbYrSyc4QHA==", + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, "node_modules/postcss": { "version": "8.4.23", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", @@ -7238,17 +7288,6 @@ "vue": "^3.0.0" } }, - "node_modules/vuex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz", - "integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==", - "dependencies": { - "@vue/devtools-api": "^6.0.0-beta.11" - }, - "peerDependencies": { - "vue": "^3.2.0" - } - }, "node_modules/webidl-conversions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", diff --git a/package.json b/package.json index 7359e116..89123f38 100644 --- a/package.json +++ b/package.json @@ -32,13 +32,13 @@ "line-awesome": "^1.3.0", "moment": "^2.29.4", "moment-timezone": "^0.5.43", + "pinia": "^2.1.3", "register-service-worker": "^1.7.2", "skeleton-elements": "^4.0.1", "swiper": "^9.3.2", "ua-parser-js": "^1.0.35", "vue": "^3.3.4", - "vue-i18n": "^9.2.2", - "vuex": "^4.1.0" + "vue-i18n": "^9.2.2" }, "devDependencies": { "@vitejs/plugin-vue": "^4.2.0", diff --git a/src/MobileApp.vue b/src/MobileApp.vue index 2dbf7008..33446dd3 100644 --- a/src/MobileApp.vue +++ b/src/MobileApp.vue @@ -9,6 +9,12 @@ import { f7ready } from 'framework7-vue'; import routes from './router/mobile.js'; +import { mapStores } from 'pinia'; +import { useTokensStore } from '@/stores/token.js'; +import { useExchangeRatesStore } from '@/stores/exchangeRates.js'; + +import { isModalShowing } from '@/lib/ui.mobile.js'; + export default { data() { const self = this; @@ -81,13 +87,16 @@ export default { hasBackdrop: undefined } }, + computed: { + ...mapStores(useTokensStore, useExchangeRatesStore), + }, created() { const self = this; if (self.$user.isUserLogined()) { if (!self.$settings.isEnableApplicationLock()) { // refresh token if user is logined - self.$store.dispatch('refreshTokenAndRevokeOldToken').then(response => { + self.tokensStore.refreshTokenAndRevokeOldToken().then(response => { if (response.user && response.user.language) { self.$locale.setLanguage(response.user.language); } @@ -95,7 +104,7 @@ export default { // auto refresh exchange rates data if (self.$settings.isAutoUpdateExchangeRatesData()) { - self.$store.dispatch('getLatestExchangeRates', { silent: true, force: false }); + self.exchangeRatesStore.getLatestExchangeRates({ silent: true, force: false }); } } } @@ -117,7 +126,7 @@ export default { f7.on('sheetClose', (event) => this.onBackdropChanged(event)); f7.on('pageBeforeOut', () => { - if (this.$ui.isModalShowing()) { + if (isModalShowing()) { f7.actions.close('.actions-modal.modal-in', false); f7.dialog.close('.dialog.modal-in', false); f7.popover.close('.popover.modal-in', false); diff --git a/src/components/mobile/DateRangeSelectionSheet.vue b/src/components/mobile/DateRangeSelectionSheet.vue index e8b087a5..1b0d87d1 100644 --- a/src/components/mobile/DateRangeSelectionSheet.vue +++ b/src/components/mobile/DateRangeSelectionSheet.vue @@ -48,6 +48,25 @@