diff --git a/public/index.html b/public/index.html index cf6c45381..d8767a819 100755 --- a/public/index.html +++ b/public/index.html @@ -31,7 +31,7 @@ - + <%= htmlWebpackPlugin.tags.bodyTags %> diff --git a/src/forge/Newfile/codeReview/ideLogo.svg b/src/forge/Newfile/codeReview/ideLogo.svg new file mode 100644 index 000000000..8e0a4669e --- /dev/null +++ b/src/forge/Newfile/codeReview/ideLogo.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/src/forge/Newfile/codeReview/index.jsx b/src/forge/Newfile/codeReview/index.jsx index a2323d677..e5ebc7bf2 100644 --- a/src/forge/Newfile/codeReview/index.jsx +++ b/src/forge/Newfile/codeReview/index.jsx @@ -1,7 +1,7 @@ import React, { useEffect, useState, useMemo } from 'react'; // import { default as AntcodeCR } from 'acr'; import { ACR } from 'alex'; -import { Button, Switch, Spin } from 'antd'; +import { Button, Switch, Spin, Icon } from 'antd'; // blame worker扩展 import CodeBlame from './extensions/alex-ext-public.editor-plugin-blame.js'; // 通过在plugin内调用扩展中的命令来进行外部交互 @@ -26,6 +26,7 @@ import { projectService } from './mock/project.service'; import { lsifService } from './mock/lsif.service'; import { useFileReadMarkChange$ } from './hooks'; import { repoService } from './mock/repo.service'; +import ideLogo from './ideLogo.svg'; const CodeReview = (props) => { @@ -91,12 +92,30 @@ const CodeReview = (props) => { ExtensionCommand.setProjectData, projectData ); + // 取消语言服务 + blamePlugin.commands && blamePlugin.commands.executeCommand( + 'alex.setDefaultPreference', + 'acr.lsifEnabled', + false + ); }, [pluginActivated, diffsPack]); if (!diffsPack) { return } + function EditorEmpty() { + return
+ +
+
IDE代码体验、高效的代码编辑
+
标记文件为已查看
+
快速打开变更文件
+
切换变更文件
+
+
+ } + // const propsIDE = { // 评审 noteIdToReplyIdSet: commentPack.noteIdToReplyIdSet, @@ -119,14 +138,14 @@ const CodeReview = (props) => { getDiffById, diffs: diffsPack.diffs, latestCommitSha: pr.diff.headCommitSha, - projectId: project.id, - projectPath: project.pathWithNamespace, - pullRequestId: pr.id, + projectId: projectsId, + projectPath: `${owner}/${projectsId}`, + pullRequestId: mergeId, pr, // 获取主语言 getLanguages: () => projectService - .getLanguages(project.id, { + .getLanguages(projectsId, { aggBy: 'file_extension', // 按照语言文件个数排序 orderBy: 'count', @@ -162,18 +181,18 @@ const CodeReview = (props) => { projectService.bulkChangeFiles(pr.forkProject.identifier, pr.forkProject.login, data).then(res => { if (res) { // gitea底层同步commit是异步,延迟查询才能获取修改后的结果 - setTimeout(()=>{ + setTimeout(() => { setAcrFlag({}); - },8000) + }, 1000) } }) } else { projectService.bulkChangeFiles(projectsId, owner, data).then(res => { if (res) { - // gitea底层同步commit是异步,延迟查询才能获取修改后的结果 - setTimeout(()=>{ + // gitea底层同步commit是异步,延迟查询才能获取修改后的结果 + setTimeout(() => { setAcrFlag({}); - },8000) + }, 1000) } }) } @@ -200,6 +219,8 @@ const CodeReview = (props) => { annotations: annotationPacks, AnnotationEntry, PRMoreActionLinks, + EditorEmpty: EditorEmpty, + onigWasmUri: 'https://gw.alipayobjects.com/os/lib/vscode-oniguruma/1.6.2/release/onig.wasm', // 全屏模式 isFullscreen, appConfig: { diff --git a/src/forge/Newfile/codeReview/model.jsx b/src/forge/Newfile/codeReview/model.jsx index 30f73374a..20bdf2a7c 100644 --- a/src/forge/Newfile/codeReview/model.jsx +++ b/src/forge/Newfile/codeReview/model.jsx @@ -168,13 +168,13 @@ const useCommentPack = (projectId, prId) => { } // 刷新清空数据 - async function doRefresh(force = false,filePath) { + async function doRefresh(force = false, filePath) { if (fetchingRef.current) { return; } fetchingRef.current = true; // 获取评论内容 - const commentPack = await prService.getCommentPack(projectsId, owner, mergeId,{path:filePath,is_full:true}); + const commentPack = await prService.getCommentPack(projectsId, owner, mergeId, { path: filePath, is_full: true }); const reviews = await prService.getReviews(projectsId, owner, mergeId); // debugger for (const review of reviews) { @@ -344,9 +344,9 @@ const [NoteProvider, useNote] = createContainer(() => { commentPack.manualAddNote(note, commentPack.pendingReviewRef.current); } - async function deleteComment(id){ - const res = await prService.deleteComment(projectsId, owner, mergeId,id); - if(res.status==0){ + async function deleteComment(id) { + const res = await prService.deleteComment(projectsId, owner, mergeId, id); + if (res.status == 0) { commentPack.manualRemoveNote(id); } } @@ -394,7 +394,7 @@ const [ReadMarkProvider, useReadMark] = createContainer(() => { const map = new Map(); if (!readMarks) return map; for (const mark of readMarks) { - mark.markAsRead&& map.set(mark.filePathSha, mark); + mark.markAsRead && map.set(mark.filePathSha, mark); } return map; }, [readMarks]); @@ -447,7 +447,6 @@ const [ReadMarkProvider, useReadMark] = createContainer(() => { }); const [AcrProvider, useAcr] = createContainer(() => { - const [acrflag, setAcrFlag] = useState({}); const { params } = useGlobal(); const { pr } = usePr(); const { charsetName } = useSetting(); @@ -459,8 +458,10 @@ const [AcrProvider, useAcr] = createContainer(() => { setIDEMode((v) => !v); }, [setIDEMode]); - const [stDiff,setStDiff]=useState({}); + const [stDiff, setStDiff] = useState({}); const [search, setSearch] = useState(window.location.search); + const [acrflag, setAcrFlag] = useState(); + const [versions, setVersions] = useState([]); const query = useMemo(() => { const searchParams = new URLSearchParams(search); const ret = {}; @@ -490,10 +491,20 @@ const [AcrProvider, useAcr] = createContainer(() => { setSearch(search); } - const versions = useRequest( - async () => await prService.getDiffVersions(projectsId, owner, mergeId), - { initial: [],deps:[acrflag] } - ); + + async function getDiffVersions() { + const data = await prService.getDiffVersions(projectsId, owner, mergeId); + if (acrflag && data.length == versions.length) { + setTimeout(() => { + setAcrFlag({}); + }, 3000); + } + setVersions(data); + } + + useEffect(() => { + getDiffVersions() + }, [acrflag]) const versionMap = useMemo(() => { @@ -567,14 +578,14 @@ const [AcrProvider, useAcr] = createContainer(() => { commentPack.doRefresh(); }, []); - async function getDiffById(diffId) { - let thisStDiff= await prService.getDiffById(projectsId, owner, mergeId, toVersion.id, + async function getDiffById(diffId) { + let thisStDiff = await prService.getDiffById(projectsId, owner, mergeId, toVersion.id, { filepath: diffId, }); delete thisStDiff.sections setStDiff(thisStDiff); - commentPack.doRefresh(false,diffId); + commentPack.doRefresh(false, diffId); return thisStDiff; } @@ -642,12 +653,12 @@ export const Provider = (props) => { pathWithNamespace: details.full_name, } } - let user={}; + let user = {}; if (props.current_user) { let current_user = props.current_user; user = { ...current_user, avatar_url: current_user.image_url, name: current_user.username, }; } - + return ( onCancel(false)} className="avatarBox"