Skip to content

Commit

Permalink
DRY: move merging of options into a route into a function
Browse files Browse the repository at this point in the history
  • Loading branch information
dschmidt committed Oct 7, 2022
1 parent 987cd3b commit e686245
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 32 deletions.
21 changes: 5 additions & 16 deletions packages/web-app-preview/src/App.vue
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ import AppTopBar from 'web-pkg/src/components/AppTopBar.vue'
import { loadPreview } from 'web-pkg/src/helpers'
import { configurationManager } from 'web-pkg/src/configuration'
import { unref } from '@vue/composition-api'
import { createFileRouteOptions } from 'web-pkg/src/helpers/router'
import { createFileRouteOptions, mergeFileRouteOptions } from 'web-pkg/src/helpers/router'
export default defineComponent({
name: 'Preview',
Expand Down Expand Up @@ -264,22 +264,11 @@ export default defineComponent({
// update route and url
updateLocalHistory() {
const routeOptions = createFileRouteOptions(
unref(this.currentFileContext.space),
this.activeFilteredFile
const routeOptions = mergeFileRouteOptions(
this.$route,
createFileRouteOptions(unref(this.currentFileContext.space), this.activeFilteredFile)
)
Object.assign(this.$route, {
params: {
...this.$route.params,
...routeOptions.params
},
query: {
...this.$route.query,
...routeOptions.query
}
})
history.pushState({}, document.title, this.$router.resolve(this.$route).href)
history.pushState({}, document.title, this.$router.resolve(routeOptions).href)
},
loadMedium() {
Expand Down
24 changes: 8 additions & 16 deletions packages/web-pkg/src/composables/router/useFileRouteReplace.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { useRouter } from './useRouter'
import { useConfigurationManager } from '../configuration'
import { Resource, SpaceResource } from 'web-client/src/helpers'
import { createFileRouteOptions } from '../../helpers/router'
import { createFileRouteOptions, mergeFileRouteOptions } from '../../helpers/router'
import Router from 'vue-router'
import { ConfigurationManager } from '../../configuration'

Expand Down Expand Up @@ -32,21 +32,13 @@ export const useFileRouteReplace = (options: FileRouteReplaceOptions = {}) => {
return false
}

const routeOptions = createFileRouteOptions(space, resource, {
configurationManager
})
const oldRoute = router.currentRoute
const newRoute = Object.assign({}, oldRoute, {
params: {
...oldRoute.params,
...routeOptions.params
},
query: {
...oldRoute.query,
...routeOptions.query
}
})
router.replace(newRoute)
const routeOptions = mergeFileRouteOptions(
router.currentRoute,
createFileRouteOptions(space, resource, {
configurationManager
})
)
router.replace(routeOptions)
return true
}

Expand Down
17 changes: 17 additions & 0 deletions packages/web-pkg/src/helpers/router/routeOptions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { isShareSpaceResource, Resource, SpaceResource } from 'web-client/src/he
import { configurationManager, ConfigurationManager } from '../../configuration'
import { LocationParams, LocationQuery } from '../../composables'
import { isUndefined } from 'lodash-es'
import { Route } from 'vue-router'

/**
* Creates route options for routing into a file location:
Expand Down Expand Up @@ -32,3 +33,19 @@ export const createFileRouteOptions = (
}
}
}

export const mergeFileRouteOptions = (
originalRoute: Route,
routeOptions: { params: LocationParams; query: LocationQuery }
): Route => {
return Object.assign({}, originalRoute, {
params: {
...originalRoute.params,
...routeOptions.params
},
query: {
...originalRoute.query,
...routeOptions.query
}
})
}

0 comments on commit e686245

Please sign in to comment.