From ca80fb41d8855d078bd4d9d2601216583b57b475 Mon Sep 17 00:00:00 2001 From: caishi <1149225589@qq.com> Date: Sat, 16 Nov 2024 10:53:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=88=E5=B9=B6=E8=AF=B7=E6=B1=82+commit?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=96=87=E4=BB=B6=E5=8A=A0=E8=BD=BD=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/forge/Activity/ActivityItem.js | 10 +- src/forge/Main/Diff.jsx | 50 +++++++++- src/forge/Merge/CreateMerge.js | 1 + src/forge/Merge/Files.jsx | 120 +++++------------------- src/forge/Merge/Index.scss | 7 ++ src/forge/Merge/MergeLinkFooter.jsx | 88 +++++++++++------ src/forge/Merge/MessageCount.js | 4 +- src/forge/Merge/NewMerge.js | 5 +- src/forge/Merge/UpdateMerge.js | 1 - src/forge/Merge/components/fileDrop.jsx | 117 +++++++++++++++++++++++ src/forge/Merge/merge_footer.js | 99 ++++++++++++++++--- 11 files changed, 356 insertions(+), 146 deletions(-) create mode 100644 src/forge/Merge/components/fileDrop.jsx diff --git a/src/forge/Activity/ActivityItem.js b/src/forge/Activity/ActivityItem.js index 1ee593e7..089b215d 100644 --- a/src/forge/Activity/ActivityItem.js +++ b/src/forge/Activity/ActivityItem.js @@ -2,6 +2,7 @@ import React, { Component } from 'react'; import { Link } from 'react-router-dom'; import './activity.css'; import { getImageUrl } from 'educoder'; +import { truncateCommitId } from "../common/util"; class ActivityItem extends Component { @@ -25,9 +26,16 @@ class ActivityItem extends Component { {item.trend_type}
: + // 如果是commit--CommitLog + item.trend_type === "CommitLog" ? ++ {item.name} + {item.trend_type} +
+ : // 如果是合并请求- {item.name} + {item.name} {item.trend_type}
} diff --git a/src/forge/Main/Diff.jsx b/src/forge/Main/Diff.jsx index bb644fc0..ac3ceb36 100644 --- a/src/forge/Main/Diff.jsx +++ b/src/forge/Main/Diff.jsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from "react"; +import React, { useEffect, useState , useRef } from "react"; import styled from "styled-components"; import { Button ,Spin } from "antd"; import { timeFormat, truncateCommitId } from '../common/util'; @@ -57,6 +57,24 @@ export default (props) => { const [isSpin, setIsSpin] = useState(true); const { sha , projectsId, owner } = match.params; + const [ dropLoading, setDropLoading] = useState(false); //加载loading + const limit = 100; + const fRef = useRef(); + + useEffect(()=>{ + window.addEventListener("scroll",scrollListener); + return ()=>{window.removeEventListener("scroll",scrollListener);} + },[]) + + const scrollListener=()=>{ + let scrollHeight = document.documentElement.scrollHeight; + let clientHeight = document.documentElement.clientHeight; + let scrollTop = document.documentElement.scrollTop; + if(Math.ceil(scrollTop+clientHeight) >= scrollHeight-5){ + InitDiffData(); + } + } + useEffect(()=>{ if(projectDetail){ const { author, name} = projectDetail; @@ -66,17 +84,18 @@ export default (props) => { useEffect(() => { if (projectsId && owner && sha) { + InitDiffData(); + const url = `/${owner}/${projectsId}/commits/${sha}.json`; axios .get(url) .then(result => { if (result) { - setData(result.data); + // setData(result.data); setCommit(result.data.commit); setParents(result.data.parents); setCommitter(result.data.committer || (result.data.commit && result.data.commit.committer)); setIsSpin(false); - } }) .catch(error => { @@ -84,6 +103,28 @@ export default (props) => { }); } }, [projectsId , owner, sha]); + + async function InitDiffData (){ + let f = fRef.current ? fRef.current.files : []; + let p = fRef.current ? fRef.current.page : 1; + let hm = fRef.current ? fRef.current.hasMore : true; + if (!hm || dropLoading || !isSpin) { + return; + } + setDropLoading(true); + const url = `/v1/${owner}/${projectsId}/commits/${sha}/files.json`; + await axios.get(url,{ + params:{page:p,limit} + }).then(res=>{ + if(res?.status === 200){ + let arr = p === 1 ? res.data.files : [...f,...res.data.files]; + setData(res.data); + fRef.current = {files:arr,page:p+1,hasMore:arr.length === limit}; + setDropLoading(false); + } + }) + } + return (文件加载中...
}文件加载中...
} +文件加载中...
} +