Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | 49x 16x 16x 8x 13x 44x 44x 44x 3x 3x 2x 44x 5x 5x 47x 11x 11x 11x 9x 9x 5x 5x 4x 4x 9x 9x 2x 11x | function getFileReviewsKey(mrPath) { return `${mrPath}-file-reviews`; } export function isFileReviewed(reviews, file) { const fileReviews = reviews[file.file_identifier_hash]; return file?.id && fileReviews?.length ? new Set(fileReviews).has(file.id) : false; } export function reviewStatuses(files, reviews) { return files.reduce((flat, file) => { return { ...flat, [file.id]: isFileReviewed(reviews, file), }; }, {}); } export function getReviewsForMergeRequest(mrPath) { const reviewsForMr = localStorage.getItem(getFileReviewsKey(mrPath)); let reviews = {}; if (reviewsForMr) { try { reviews = JSON.parse(reviewsForMr); } catch (err) { reviews = {}; } } return reviews; } export function setReviewsForMergeRequest(mrPath, reviews) { localStorage.setItem(getFileReviewsKey(mrPath), JSON.stringify(reviews)); return reviews; } export function reviewable(file) { return Boolean(file.id) && Boolean(file.file_identifier_hash); } export function markFileReview(reviews, file, reviewed = true) { const usableReviews = { ...reviews }; const updatedReviews = usableReviews; let fileReviews; if (reviewable(file)) { fileReviews = new Set(usableReviews[file.file_identifier_hash] || []); if (reviewed) { fileReviews.add(file.id); fileReviews.add(`hash:${file.file_hash}`); } else { fileReviews.delete(file.id); fileReviews.delete(`hash:${file.file_hash}`); } updatedReviews[file.file_identifier_hash] = Array.from(fileReviews); if (updatedReviews[file.file_identifier_hash].length === 0) { delete updatedReviews[file.file_identifier_hash]; } } return updatedReviews; } |