Branch

paginatedPatches.ts

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
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
c69df8 Tucker McKnight
import flatPatchesFunc from './flatPatches.js'

let paginatedPatches = null

export default async (repos) => {
  if (paginatedPatches !== null) { return paginatedPatches }

  const flatPatches = await flatPatchesFunc(repos)

  paginatedPatches = []
  const patchesPerPage = 30

  flatPatches.forEach((patch) => {
    const index = paginatedPatches.findIndex((page) => {
      return (
        page.repoName === patch.repoName
        && page.branchName == patch.branchName
        && page.patches.length <= patchesPerPage
      )
    })

    if (index === -1) {
      const pageNumber = paginatedPatches.filter(page => (page.repoName === patch.repoName && page.branchName === patch.branchName)).length + 1
      paginatedPatches.push({
        repoName: patch.repoName,
        branchName: patch.branchName,
        patches: [patch.patch],
        // current page number is one more than "how many items in paginatedPatches already
        // have repoName as their repo name.
        pageNumber,
      })
    }
    else {
      paginatedPatches[index].patches.push(patch.patch)
    }
  })

  return paginatedPatches
}