query_preserver.js 489 B

12345678910111213141516171819
  1. /**
  2. * This middleware preserve some global query parameters during the navigation,
  3. * like the theme color or the parent organization
  4. */
  5. const PRESERVE = ['parent', 'theme', 'view']
  6. export default function ({ from, route, redirect }) {
  7. let redirected = false
  8. for (const param in from.query) {
  9. if (PRESERVE.includes(param) && !(param in route.query)) {
  10. route.query[param] = from.query[param]
  11. redirected = true
  12. }
  13. }
  14. if (redirected) {
  15. redirect(route)
  16. }
  17. }