forked from Gitlink/forgeplus-react
96 lines
3.9 KiB
JavaScript
96 lines
3.9 KiB
JavaScript
import React,{useState , useEffect} from 'react';
|
||
import { Link } from 'react-router-dom';
|
||
import AgreementModal from './agreementModal';
|
||
|
||
function Main(props){
|
||
const [ visible , setVisible ] = useState(false);
|
||
const { owner , projectsId } = props.match.params;
|
||
const [ has_trace_user , setHas_trace_user ] = useState(false);
|
||
|
||
const { current_user , resetUserInfo, projectDetail, showNotification, isDeveloper, isManager, isReporter } = props;
|
||
|
||
useEffect(()=>{
|
||
// 更新网页标题
|
||
if(projectDetail){
|
||
const { author, name} = projectDetail;
|
||
document.title = `服务-${author.name}/${name}`;
|
||
}
|
||
}, [projectDetail])
|
||
|
||
useEffect(()=>{
|
||
if(current_user && !current_user.login){
|
||
// 未登录用户访问会跳转到代码库主页,此处不用处理
|
||
// props.history.push(`/login?go_page=/${owner}/${projectsId}/service`);
|
||
}else{
|
||
setHas_trace_user(current_user.has_trace_user);
|
||
}
|
||
},[current_user])
|
||
|
||
function onOk(){
|
||
setVisible(false);
|
||
resetUserInfo && resetUserInfo();
|
||
props.history.push(`/${owner}/${projectsId}/service/codeanalysis`);
|
||
}
|
||
|
||
function openDetail(){
|
||
if(projectDetail && projectDetail.forked_from_project_id){
|
||
showNotification("fork仓库暂不支持代码溯源服务,敬请谅解。");
|
||
}else if(!has_trace_user){
|
||
setVisible(true);
|
||
}else{
|
||
props.history.push(`/${owner}/${projectsId}/service/codeanalysis`);
|
||
}
|
||
}
|
||
return(
|
||
<div>
|
||
<AgreementModal visible={visible} onCancel={()=>setVisible(false)} onOk={onOk}/>
|
||
<ul className="serverlist">
|
||
<li>
|
||
<span className="servername">
|
||
<img src={require('./img/logo.png')} alt=""/>
|
||
<a onClick={openDetail}>重睛鸟代码溯源</a>
|
||
</span>
|
||
<p className="task-hide-2 serverdesc">支持软件源代码的溯源分析、自主度评估、开源漏洞检测、开源许可证合规性分析等</p>
|
||
<span className="serverbtn">
|
||
<a onClick={openDetail} className="btnhover">查看详情</a>
|
||
</span>
|
||
</li>
|
||
{
|
||
// 镜像项目隐藏服务
|
||
projectDetail && parseInt(projectDetail.type) !== 2 && <li>
|
||
<div className="servername" style={{marginBottom: '8px'}}>
|
||
<img src={require('./img/logo3.png')} alt="" style={{width: '24px'}}/>
|
||
<Link to={`/${owner}/${projectsId}/service/reposyncer`}>Reposyncer仓库同步</Link>
|
||
</div>
|
||
<p className="task-hide-2 serverdesc">支持不同开源托管平台自动同步推送/拉取相关代码,实现多平台项目同步开发功能</p>
|
||
<span className="serverbtn">
|
||
<Link to={`/${owner}/${projectsId}/service/reposyncer`} className="btnhover">查看详情</Link>
|
||
</span>
|
||
</li>
|
||
}
|
||
{/* 是站点仓库则显示,否则隐藏 */}
|
||
{projectDetail && projectDetail.web_site && projectDetail.author.type === "User" && <li>
|
||
<span className="servername">
|
||
<img src={require('./img/logo.png')} alt=""/>
|
||
<a onClick={openDetail}>个人建站服务</a>
|
||
</span>
|
||
<p className="task-hide-2 serverdesc">支持Hugo、Jekyll、Hexo静态网站服务</p>
|
||
<span className="serverbtn">
|
||
<Link to={`/${owner}/${projectsId}/service/pages`} className="btnhover">查看详情</Link>
|
||
</span>
|
||
</li>}
|
||
<li>
|
||
<span className="servername">
|
||
<img src={require('./img/logo4.png')} alt=""/>
|
||
<a onClick={openDetail} style={{marginLeft:"-8px"}}>开源软件健康度量服务</a>
|
||
</span>
|
||
<p className="task-hide-2 serverdesc">支持项目健康度量分析一键生成,协助维护项目健康生态</p>
|
||
<span className="serverbtn">
|
||
<Link to={`/${owner}/${projectsId}/service/measurement`} className="btnhover">查看详情</Link>
|
||
</span>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
)
|
||
}
|
||
export default Main; |