Skip to content

Commit 65ec3b4

Browse files
committedOct 14, 2022
[router] Add tabs persistance
1 parent b273299 commit 65ec3b4

File tree

6 files changed

+48
-21
lines changed

6 files changed

+48
-21
lines changed
 

‎package-lock.json

+25-7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@
1212
"core-js": "^3.8.3",
1313
"register-service-worker": "^1.7.2",
1414
"vue": "^2.6.14",
15-
"vuex": "^3.6.2"
15+
"vuex": "^3.6.2",
16+
"vuex-persist": "^3.1.3"
1617
},
1718
"devDependencies": {
1819
"@fontsource/inter": "^4.5.11",

‎src/App.vue

+8-5
Original file line numberDiff line numberDiff line change
@@ -35,20 +35,23 @@ export default Vue.extend({
3535
const tabNumber = Number(this.$route.params.tab)
3636
const isValidTabNumber = tabNumber >= 1 && tabNumber <= this.$store.state.tabs.length
3737
if (!isValidTabNumber) {
38-
this.$router.push('/1')
38+
this.$router.push(`/1/${this.$store.state.tabs[0].path}`)
3939
}
4040
},
4141
deep: true,
4242
immediate: true,
4343
},
4444
'$route.path': {
4545
handler () {
46+
const tabNumber = Number(this.$route.params.tab)
4647
const line = this.$route.params.line
4748
const stop = this.$route.params.stop
48-
this.$store.commit('setTab', {
49-
idx: Number(this.$route.params.tab) - 1,
50-
tab: { line, stop },
51-
})
49+
if (tabNumber && !isNaN(tabNumber)) {
50+
this.$store.commit('setTab', {
51+
idx: tabNumber - 1,
52+
tab: { line, stop },
53+
})
54+
}
5255
},
5356
deep: true,
5457
immediate: true,

‎src/main.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import Vue from 'vue'
22
import VueRouter from 'vue-router'
33
import Vuex from 'vuex'
4+
import VuexPersistence from 'vuex-persist'
45
import './registerServiceWorker'
56
import App from './App.vue'
67

@@ -9,7 +10,7 @@ Vue.use(VueRouter)
910
Vue.use(Vuex)
1011

1112
const routes = [
12-
{ path: '/', redirect: '/1' },
13+
{ path: '/', component: App },
1314
{ path: '/:tab', component: App },
1415
{ path: '/:tab/:line', component: App },
1516
{ path: '/:tab/:line/:stop', component: App },
@@ -49,6 +50,7 @@ const store = new Vuex.Store({
4950
state.tabs = newTabs
5051
},
5152
},
53+
plugins: [new VuexPersistence().plugin],
5254
})
5355

5456
new Vue({

‎src/pages/TabPage/New.vue

-5
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,6 @@ import { getLinesByCategory } from '@/utils/localstore/lines'
2222
export default Vue.extend({
2323
name: 'TabPageNew',
2424
components: { LineIcon },
25-
methods: {
26-
redirectToHome () {
27-
this.$router.push('/1')
28-
},
29-
},
3025
computed: {
3126
linesByCategory () {
3227
return getLinesByCategory()

‎yarn.lock

+10-2
Original file line numberDiff line numberDiff line change
@@ -4389,7 +4389,7 @@
43894389
"flatted" "^3.1.0"
43904390
"rimraf" "^3.0.2"
43914391

4392-
"flatted@^3.1.0":
4392+
"flatted@^3.0.5", "flatted@^3.1.0":
43934393
"integrity" "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ=="
43944394
"resolved" "https://registry.npmmirror.com/flatted/-/flatted-3.2.6.tgz"
43954395
"version" "3.2.6"
@@ -8490,7 +8490,15 @@
84908490
"@vue/compiler-sfc" "2.7.8"
84918491
"csstype" "^3.1.0"
84928492

8493-
"vuex@^3.6.2":
8493+
"vuex-persist@^3.1.3":
8494+
"integrity" "sha512-QWOpP4SxmJDC5Y1+0+Yl/F4n7z27syd1St/oP+IYCGe0X0GFio0Zan6kngZFufdIhJm+5dFGDo3VG5kdkCGeRQ=="
8495+
"resolved" "https://registry.npmjs.org/vuex-persist/-/vuex-persist-3.1.3.tgz"
8496+
"version" "3.1.3"
8497+
dependencies:
8498+
"deepmerge" "^4.2.2"
8499+
"flatted" "^3.0.5"
8500+
8501+
"vuex@^3.6.2", "vuex@>=2.5":
84948502
"integrity" "sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw=="
84958503
"resolved" "https://registry.npmjs.org/vuex/-/vuex-3.6.2.tgz"
84968504
"version" "3.6.2"

0 commit comments

Comments
 (0)
Please sign in to comment.