Skip to content

Commit

Permalink
ui: change angular routing order for repo paths (PROJQUAY-2325) (quay…
Browse files Browse the repository at this point in the history
…#872)

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 17, 2021
1 parent 83bb402 commit d1f80d2
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*\/tag/:tag', 'repo-view')
.route('/repository/:namespace/:name*', 'repo-view')

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

Expand Down

0 comments on commit d1f80d2

Please sign in to comment.