Skip to content

Commit

Permalink
Fix code #3900
Browse files Browse the repository at this point in the history
  • Loading branch information
BenediktMehl committed Jan 31, 2025
1 parent 3f6800c commit bdff91a
Showing 1 changed file with 26 additions and 37 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,9 @@ import { FileSelectionState, FileState } from "../../../model/files/files"
import { createSelectorFactory, defaultMemoize } from "@ngrx/store"
import { filesSelector } from "../../store/files/files.selector"
import { getVisibleFileStates, isDeltaState } from "../../../model/files/files.helper"
import { compareContent } from "../../../util/arrayHelper"

function removeMatch<T>(array: T[], matchIndex: number): T[] {
return [...array.slice(0, matchIndex), ...array.slice(matchIndex + 1)]
}

export function onlyVisibleFilesMatterComparer(fileStates1: FileState[], fileStates2: FileState[]): boolean {
export function _onlyVisibleFilesMatterComparer(fileStates1: FileState[], fileStates2: FileState[]): boolean {
if (fileStates1 === fileStates2) {
return true
}
Expand All @@ -16,55 +13,47 @@ export function onlyVisibleFilesMatterComparer(fileStates1: FileState[], fileSta
return true
}

if (isDeltaState(fileStates1) !== isDeltaState(fileStates2)) {
return false
}

if (isDeltaState(fileStates1) || isDeltaState(fileStates2)) {
const referenceFile1 = fileStates1.find(file => file.selectedAs === FileSelectionState.Reference)
const referenceFile2 = fileStates2.find(file => file.selectedAs === FileSelectionState.Reference)
console.log(referenceFile1, referenceFile2)
if (referenceFile1.file.fileMeta.fileChecksum !== referenceFile2.file.fileMeta.fileChecksum) {
return false
}

const comparisonFile1 = fileStates1.find(file => file.selectedAs === FileSelectionState.Comparison)
const comparisonFile2 = fileStates2.find(file => file.selectedAs === FileSelectionState.Comparison)
console.log(comparisonFile1, comparisonFile2)
if (comparisonFile1.file.fileMeta.fileChecksum !== comparisonFile2.file.fileMeta.fileChecksum) {
return false
}
return true
return compareDeltaState(fileStates1, fileStates2)
}

const visibleFileStates1 = fileStates1
const visibleFileChecksums1 = fileStates1
.filter(file => file.selectedAs === FileSelectionState.Partial)
.map(file => file.file.fileMeta.fileChecksum)
let visibleFileStates2 = fileStates2
const visibleFileChecksum2 = fileStates2
.filter(file => file.selectedAs === FileSelectionState.Partial)
.map(file => file.file.fileMeta.fileChecksum)

if (visibleFileStates1.length !== visibleFileStates2.length) {
if (visibleFileChecksums1.length !== visibleFileChecksum2.length) {
return false
}

function reduceToDetermineIfArraysContainSameContents(previousCallResult: boolean, arrayMember: any): boolean {
if (previousCallResult === false) {
return false
}
return compareContent(visibleFileChecksums1, visibleFileChecksum2)
}

const matchIndex = visibleFileStates2.indexOf(arrayMember)
if (matchIndex >= 0) {
visibleFileStates2 = removeMatch(visibleFileStates2, matchIndex)
return true
}
function compareDeltaState(fileStates1: FileState[], fileStates2: FileState[]): boolean {
if (isDeltaState(fileStates1) !== isDeltaState(fileStates2)) {
return false
}

const referenceFile1 = fileStates1.find(file => file.selectedAs === FileSelectionState.Reference)
const referenceFile2 = fileStates2.find(file => file.selectedAs === FileSelectionState.Reference)
if (referenceFile1.file.fileMeta.fileChecksum !== referenceFile2.file.fileMeta.fileChecksum) {
return false
}

const comparisonFile1 = fileStates1.find(file => file.selectedAs === FileSelectionState.Comparison)
const comparisonFile2 = fileStates2.find(file => file.selectedAs === FileSelectionState.Comparison)
if (
comparisonFile1?.file.fileMeta.fileChecksum !== comparisonFile2?.file.fileMeta.fileChecksum ||
!comparisonFile1 !== !comparisonFile2
) {
return false
}

return visibleFileStates1.reduce(reduceToDetermineIfArraysContainSameContents, true)
return true
}

export const visibleFileStatesSelector = createSelectorFactory(projection =>
defaultMemoize(projection, onlyVisibleFilesMatterComparer, onlyVisibleFilesMatterComparer)
defaultMemoize(projection, _onlyVisibleFilesMatterComparer, _onlyVisibleFilesMatterComparer)
)(filesSelector, getVisibleFileStates)

0 comments on commit bdff91a

Please sign in to comment.