blob: a12cd853010546f865557e2278b4882e24ee9c75 [file] [log] [blame]
/**
* @license
* Copyright 2022 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import {EDIT} from '../../api/rest-api';
import {
encodeURL,
getBaseUrl,
getPatchRangeExpression,
} from '../../utils/url-util';
import {ChangeViewState} from './change';
// TODO: Move to change.ts.
export function createEditUrl(
state: Omit<ChangeViewState, 'view' | 'childView'>
): string {
if (state.patchNum === undefined) {
state = {...state, patchNum: EDIT};
}
let range = getPatchRangeExpression(state);
if (range.length) range = '/' + range;
let suffix = `${range}/${encodeURL(state.editView?.path ?? '', true)}`;
suffix += ',edit';
if (state.editView?.lineNum) {
suffix += '#';
suffix += state.editView.lineNum;
}
if (state.repo) {
const encodedProject = encodeURL(state.repo, true);
return `${getBaseUrl()}/c/${encodedProject}/+/${state.changeNum}${suffix}`;
} else {
return `${getBaseUrl()}/c/${state.changeNum}${suffix}`;
}
}