Skip to content

Commit

Permalink
ui: change angular routing order for repo paths (PROJQUAY-2325)
Browse files Browse the repository at this point in the history
Unlike Flask, Angular does not use weights to match paths to routes,
so order matters. In order to support repository with "/" in them, we
previously added "*" to the repository name named group, allowing it
to capture subsequent "/". When that's the case, it is important that
to general "catch-all" route comes after the more specific routes (e.g
repo manifest). Otherwise, Angular will just eagerly use the first
route that matches a path, even though it may have "better" match in
subsequent routes.

  e.g - '/api/v1/repository/:namespace/:name*'
      - '/api/v1/repository/:namespace/:name*\/tag/:tag'

      In this case, something like
      /api/v1/repository/devtable/testrepo/tag/testtag would match the
      first route, even though if using a weighted system, the second
      route in most case be a better fit.
  • Loading branch information
kleesc committed Aug 16, 2021
1 parent 5debec5 commit 16d8b3c
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions static/js/quay-routes.module.ts
Expand Up @@ -61,10 +61,6 @@ function provideRoutes($routeProvider: ng.route.IRouteProvider,
// Repo List
.route('/application/', 'app-list')

// Repository View
.route('/repository/:namespace/:name*', 'repo-view')
.route('/repository/:namespace/:name*\/tag/:tag', 'repo-view')

// Image View
.route('/repository/:namespace/:name*\/manifest/:manifest_digest', 'manifest-view')

Expand All @@ -77,6 +73,10 @@ function provideRoutes($routeProvider: ng.route.IRouteProvider,
// Create repository notification
.route('/repository/:namespace/:name*\/create-notification', 'create-repository-notification')

// Repository View
.route('/repository/:namespace/:name*', 'repo-view')
.route('/repository/:namespace/:name*\/tag/:tag', 'repo-view')

// Repo List
.route('/repository/', 'repo-list')

Expand Down

0 comments on commit 16d8b3c

Please sign in to comment.