Repository tree view should use a relative path, not a full URL
As our documentation in https://docs.gitlab.com/ee/development/fe_guide/frontend_faq.html#5-should-i-use-a-full-url-ie-gongitlab_url-or-a-full-path-ie-gonrelative_url_root-when-referencing-backend-endpoints says, we should be using relative paths, not URLs as much as possible. This affects issues such as #21319.
I noticed the repository tree view doesn't adhere to this. It looks like this is due to our GraphQL endpoints. In https://gitlab.com/gitlab-org/gitlab/blob/051b354b1837402c6708b667b3394095d4de72e7/app/graphql/types/tree/tree_entry_type.rb#L15, we use webUrl
, which is defined as the full URL: https://gitlab.com/gitlab-org/gitlab/blob/051b354b1837402c6708b667b3394095d4de72e7/app/graphql/types/tree/tree_entry_type.rb#L15. We appear to use webUrl
in a lot of places.
Should we introduce a new webPath
and use that instead?
Second of all, do we have any way of enforcing this pattern?
In app/presenters
, we have these selections:
$ git grep _url app/presenters | grep project_
app/presenters/blob_presenter.rb: Gitlab::Routing.url_helpers.project_blob_url(blob.repository.project, File.join(blob.commit_id, blob.path))
app/presenters/projects/prometheus/alert_presenter.rb: metrics_project_environment_url(project, environment)
app/presenters/projects/prometheus/alert_presenter.rb: metrics_project_environments_url(project)
app/presenters/projects/prometheus/alert_presenter.rb: project_issues_url(project, label_name: INCIDENT_LABEL_NAME)
app/presenters/projects/prometheus/alert_presenter.rb: metrics_dashboard_project_prometheus_alert_url(
app/presenters/projects/prometheus/alert_presenter.rb: metrics_dashboard_project_environment_url(
app/presenters/release_presenter.rb: project_release_url(project, release)
app/presenters/release_presenter.rb: project_merge_requests_url(project, params_for_issues_and_mrs)
app/presenters/release_presenter.rb: project_issues_url(project, params_for_issues_and_mrs)
app/presenters/release_presenter.rb: edit_project_release_url(project, release)
app/presenters/releases/evidence_presenter.rb: project_evidence_url(project, release, evidence, format: :json)
app/presenters/tree_entry_presenter.rb: Gitlab::Routing.url_helpers.project_tree_url(tree.repository.project, File.join(tree.commit_id, tree.path))