-
Notifications
You must be signed in to change notification settings - Fork 27
/
Copy pathuseCommitsTabBranchSelector.ts
67 lines (59 loc) · 1.6 KB
/
useCommitsTabBranchSelector.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
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
import { useState } from 'react'
import { useParams } from 'react-router-dom'
import { useBranches } from 'services/branches/useBranches'
interface URLParams {
repo: string
owner: string
provider: string
}
export const useCommitsTabBranchSelector = ({
passedBranch,
defaultBranch,
isAllCommits = false,
}: {
passedBranch: string
defaultBranch: string
isAllCommits?: boolean
}) => {
const { repo, owner, provider } = useParams<URLParams>()
const [branchSearchTerm, setBranchSearchTerm] = useState('')
const {
data: branchesData,
isFetching: branchListIsFetching,
hasNextPage: branchListHasNextPage,
fetchNextPage: branchListFetchNextPage,
} = useBranches({
repo,
owner,
provider,
filters: { searchValue: branchSearchTerm },
opts: {
suspense: false,
},
})
const selectedBranch = passedBranch ?? defaultBranch
// Check if the selected branch exists in the branches list
const branchExists = branchesData?.branches?.some(
(branch) => branch?.name === selectedBranch
)
let selection = selectedBranch
if (isAllCommits) {
selection = 'All branches'
} else if (!branchExists) {
selection = 'Select branch'
}
return {
selection,
branchSelectorProps: {
items: branchesData?.branches?.map((branch) => branch?.name) || [],
value: selection,
},
currentBranchSelected: selection,
branchList: branchesData?.branches?.map((branch) => branch?.name) || [],
branchListIsFetching,
branchListHasNextPage,
branchListFetchNextPage,
setBranchSearchTerm,
isSearching: branchSearchTerm !== '',
}
}