forgeplus-react/src/forge/Server/List.jsx

96 lines
3.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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">支持HugoJekyllHexo静态网站服务</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;