diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-20 21:08:51 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-02-20 21:08:51 +0300 |
commit | df2eda3f14dccb703bd7054d4ddde7803cb1fe7e (patch) | |
tree | 0200bb0def01cde22da3bc4c9ed0a7b0f91d6b50 /app/assets/javascripts/diffs/store/utils.js | |
parent | b9bac6dbf78a5a7976fba14aaeef96bdeb0da612 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/diffs/store/utils.js')
-rw-r--r-- | app/assets/javascripts/diffs/store/utils.js | 64 |
1 files changed, 53 insertions, 11 deletions
diff --git a/app/assets/javascripts/diffs/store/utils.js b/app/assets/javascripts/diffs/store/utils.js index 80972d2aeb8..29133c814ea 100644 --- a/app/assets/javascripts/diffs/store/utils.js +++ b/app/assets/javascripts/diffs/store/utils.js @@ -13,6 +13,8 @@ import { LINES_TO_BE_RENDERED_DIRECTLY, MAX_LINES_TO_BE_RENDERED, TREE_TYPE, + INLINE_DIFF_VIEW_TYPE, + PARALLEL_DIFF_VIEW_TYPE, } from '../constants'; export function findDiffFile(files, match, matchKey = 'file_hash') { @@ -93,8 +95,7 @@ export function getNoteFormData(params) { export const findIndexInInlineLines = (lines, lineNumbers) => { const { oldLineNumber, newLineNumber } = lineNumbers; - return _.findIndex( - lines, + return lines.findIndex( line => line.old_line === oldLineNumber && line.new_line === newLineNumber, ); }; @@ -102,8 +103,7 @@ export const findIndexInInlineLines = (lines, lineNumbers) => { export const findIndexInParallelLines = (lines, lineNumbers) => { const { oldLineNumber, newLineNumber } = lineNumbers; - return _.findIndex( - lines, + return lines.findIndex( line => line.left && line.right && @@ -112,13 +112,32 @@ export const findIndexInParallelLines = (lines, lineNumbers) => { ); }; +const indexGettersByViewType = { + [INLINE_DIFF_VIEW_TYPE]: findIndexInInlineLines, + [PARALLEL_DIFF_VIEW_TYPE]: findIndexInParallelLines, +}; + +export const getPreviousLineIndex = (diffViewType, file, lineNumbers) => { + const findIndex = indexGettersByViewType[diffViewType]; + const lines = { + [INLINE_DIFF_VIEW_TYPE]: file.highlighted_diff_lines, + [PARALLEL_DIFF_VIEW_TYPE]: file.parallel_diff_lines, + }; + + return findIndex && findIndex(lines[diffViewType], lineNumbers); +}; + export function removeMatchLine(diffFile, lineNumbers, bottom) { const indexForInline = findIndexInInlineLines(diffFile.highlighted_diff_lines, lineNumbers); const indexForParallel = findIndexInParallelLines(diffFile.parallel_diff_lines, lineNumbers); const factor = bottom ? 1 : -1; - diffFile.highlighted_diff_lines.splice(indexForInline + factor, 1); - diffFile.parallel_diff_lines.splice(indexForParallel + factor, 1); + if (indexForInline > -1) { + diffFile.highlighted_diff_lines.splice(indexForInline + factor, 1); + } + if (indexForParallel > -1) { + diffFile.parallel_diff_lines.splice(indexForParallel + factor, 1); + } } export function addLineReferences(lines, lineNumbers, bottom, isExpandDown, nextLineNumbers) { @@ -160,8 +179,8 @@ export function addLineReferences(lines, lineNumbers, bottom, isExpandDown, next return linesWithNumbers; } -export function addContextLines(options) { - const { inlineLines, parallelLines, contextLines, lineNumbers, isExpandDown } = options; +function addParallelContextLines(options) { + const { parallelLines, contextLines, lineNumbers, isExpandDown } = options; const normalizedParallelLines = contextLines.map(line => ({ left: line, right: line, @@ -170,17 +189,40 @@ export function addContextLines(options) { const factor = isExpandDown ? 1 : 0; if (!isExpandDown && options.bottom) { - inlineLines.push(...contextLines); parallelLines.push(...normalizedParallelLines); } else { - const inlineIndex = findIndexInInlineLines(inlineLines, lineNumbers); const parallelIndex = findIndexInParallelLines(parallelLines, lineNumbers); - inlineLines.splice(inlineIndex + factor, 0, ...contextLines); parallelLines.splice(parallelIndex + factor, 0, ...normalizedParallelLines); } } +function addInlineContextLines(options) { + const { inlineLines, contextLines, lineNumbers, isExpandDown } = options; + const factor = isExpandDown ? 1 : 0; + + if (!isExpandDown && options.bottom) { + inlineLines.push(...contextLines); + } else { + const inlineIndex = findIndexInInlineLines(inlineLines, lineNumbers); + + inlineLines.splice(inlineIndex + factor, 0, ...contextLines); + } +} + +export function addContextLines(options) { + const { diffViewType } = options; + const contextLineHandlers = { + [INLINE_DIFF_VIEW_TYPE]: addInlineContextLines, + [PARALLEL_DIFF_VIEW_TYPE]: addParallelContextLines, + }; + const contextLineHandler = contextLineHandlers[diffViewType]; + + if (contextLineHandler) { + contextLineHandler(options); + } +} + /** * Trims the first char of the `richText` property when it's either a space or a diff symbol. * @param {Object} line |