import pizza from 'react-pizza'
import React from 'react'
import { css } from '@emotion/css'
import setIntervalCheck from 'interval-check'
import domify from 'domify'
import { isNotIssueReady, isNotReady, useJiraApi, useToken } from '../shared/utils'
import { Tooltip } from 'antd'
let globalDispose = null
export default function swimlaneRender() {
if (globalDispose) {
globalDispose()
}
const handle = () => {
const headers = document.querySelectorAll('.ghx-swimlane [data-issue-key].ghx-swimlane-header')
headers.forEach((header) => {
if (header.querySelector('.jira-extension-swimlane-estimate')) {
return
}
const bandaid = header.querySelector('.ghx-bandaid')
const issueKey = header.getAttribute('data-issue-key')
const dom = domify('')
pizza(() => {
const jiraApi = useJiraApi()
const [story, setStory] = React.useState()
const [assignee, setAssignee] = React.useState()
React.useEffect(() => {
jiraApi?.queryIssue(issueKey).then((res) => {
setStory(res.data?.fields?.customfield_10002)
setAssignee(res.data?.fields?.assignee)
})
}, [jiraApi])
if (!jiraApi || !story) {
return null
}
// assignee
return (
<>
{!!assignee && (
)}
${story}`
}}
/>
>
)
})(dom, {})
header.appendChild(dom)
let marginRight = 14 // base
if (bandaid) {
marginRight += Math.max(0, (bandaid.clientWidth || 0) - marginRight)
}
header.classList.add(css`
display: flex;
align-items: center;
.ghx-heading {
flex: 1;
width: 0;
}
.jira-extension-swimlane-estimate {
padding-left: 5px;
margin-right: ${marginRight}px;
display: flex;
align-items: center;
.aui-avatar {
margin-right: 10px;
}
}
`)
})
}
handle()
const dispose = setIntervalCheck(
null,
() => {
handle()
return false
},
500
)
globalDispose = dispose
}