1
0
Fork 0
mirror of https://gitlab.com/bramw/baserow.git synced 2025-04-07 14:25:37 +00:00

Merge branch '3434-fix-query-pararms-open-page' into 'develop'

fix: update page parameters when URL query string changes

Closes 

See merge request 
This commit is contained in:
Evren Ozkan 2025-03-03 14:40:26 +00:00
commit d664710948
3 changed files with 45 additions and 1 deletions
changelog/entries/unreleased/bug
web-frontend/modules/builder

View file

@ -0,0 +1,7 @@
{
"type": "bug",
"message": "[Builder] Fix updating of page parameters when URL query parameters change.",
"issue_number": 3434,
"bullet_points": [],
"created_at": "2025-02-19"
}

View file

@ -313,10 +313,18 @@ export class PageParameterDataProviderType extends DataProviderType {
const validators = queryParamNames.includes(name)
? QUERY_PARAM_TYPE_VALIDATION_FUNCTIONS
: PAGE_PARAM_TYPE_VALIDATION_FUNCTIONS
let value
try {
value = validators[type](pageParamsValue[name])
} catch {
// Skip setting the parameter if the user-provided value
// doesn't pass our parameter `type` validation.
return null
}
return this.app.store.dispatch('pageParameter/setParameter', {
page,
name,
value: validators[type](pageParamsValue[name]),
value,
})
})
)

View file

@ -27,6 +27,7 @@ import {
userSourceCookieTokenName,
setToken,
} from '@baserow/modules/core/utils/auth'
import { QUERY_PARAM_TYPE_VALIDATION_FUNCTIONS } from '@baserow/modules/builder/enums'
const logOffAndReturnToLogin = async ({ builder, store, redirect }) => {
await store.dispatch('userSourceUser/logoff', {
@ -341,6 +342,34 @@ export default {
},
},
watch: {
'$route.query': {
immediate: true,
deep: true,
handler(newQuery) {
// when query string changed due to user action,
// update the page's query parameters in the store
Promise.all(
this.currentPage.query_params.map(({ name, type }) => {
if (!newQuery[name]) return null
let value
try {
value = QUERY_PARAM_TYPE_VALIDATION_FUNCTIONS[type](
newQuery[name]
)
} catch {
// Skip setting the parameter if the user-provided value
// doesn't pass our parameter `type` validation.
return null
}
return this.$store.dispatch('pageParameter/setParameter', {
page: this.currentPage,
name,
value,
})
})
)
},
},
dispatchContext: {
deep: true,
/**