From b38e8bd1b9f8961bf7ca3caa8a6e3b691b3a510e Mon Sep 17 00:00:00 2001 From: "sylor_huang@126.com" Date: Tue, 30 Jun 2020 10:08:36 +0800 Subject: [PATCH 1/8] change pr --- public/css/edu-purge.css | 1 + src/AppConfig.js | 3 +- src/forge/Main/Detail.js | 2 +- src/forge/Merge/MergeItem.js | 34 +++- src/forge/Merge/MessageCount.js | 7 +- src/forge/Merge/NewMerge.js | 238 +++++++++++++++++------- src/forge/Merge/UpdateMerge.js | 15 +- src/forge/Merge/merge.js | 1 + src/forge/Merge/merge_footer.js | 8 +- src/forge/Merge/merge_form.js | 317 ++++++++++++++++++-------------- src/forge/Merge/no_data.js | 2 +- 11 files changed, 396 insertions(+), 232 deletions(-) diff --git a/public/css/edu-purge.css b/public/css/edu-purge.css index fa82f3045..9f6e8b289 100644 --- a/public/css/edu-purge.css +++ b/public/css/edu-purge.css @@ -1569,6 +1569,7 @@ a.edu-txt-w80, .font-80 { font-size: 80px !important; } +.color-grey-b{color: #bbb !important} /*a标签的下划线*/ a.decoration { diff --git a/src/AppConfig.js b/src/AppConfig.js index 434b1f9dd..e43977162 100644 --- a/src/AppConfig.js +++ b/src/AppConfig.js @@ -98,7 +98,8 @@ export function initAxiosInterceptors(props) { // TODO 避免重复的请求 https://github.com/axios/axios#cancellation // TODO 读取到package.json中的配置? - var proxy = "http://localhost:3000" + var + // proxy = "http://localhost:3000" // proxy = "https://pre-newweb.educoder.net" proxy = "https://testforgeplus.trustie.net" diff --git a/src/forge/Main/Detail.js b/src/forge/Main/Detail.js index 05899dde8..86c9ca2fb 100644 --- a/src/forge/Main/Detail.js +++ b/src/forge/Main/Detail.js @@ -341,7 +341,7 @@ class Detail extends Component {
-

+

{projectDetail && projectDetail.author && {projectDetail.author.name} diff --git a/src/forge/Merge/MergeItem.js b/src/forge/Merge/MergeItem.js index 5cdb2b9b4..6c294d804 100644 --- a/src/forge/Merge/MergeItem.js +++ b/src/forge/Merge/MergeItem.js @@ -2,7 +2,7 @@ import React, { Component } from "react"; import { Link } from "react-router-dom"; import { Popconfirm, Tag } from "antd"; import { getImageUrl } from "educoder"; -import "./merge.css" +import "./merge.css"; class MergeItem extends Component { constructor(props) { @@ -42,7 +42,7 @@ class MergeItem extends Component { }; render() { - const { issues, project_name } = this.props; + const { issues, project_name, project_author_name } = this.props; const { projectsId } = this.props.match.params; const { current_user } = this.props; const renderList = () => { @@ -60,7 +60,11 @@ class MergeItem extends Component { {item.name} - {item.pull_request_staus==="merged" ? "已合并" : (item.pull_request_staus === "closed"?"已拒绝" : "开启的") } + {item.pull_request_staus === "merged" + ? "已合并" + : item.pull_request_staus === "closed" + ? "已拒绝" + : "开启的"}

@@ -94,19 +98,31 @@ class MergeItem extends Component { - {project_name}:{item.pull_request_head} + {item.is_original + ? item.fork_project_user + : project_author_name} + :{item.pull_request_head} - + - {project_name}:{item.pull_request_base} + {/* {item.is_fork ? item.pull_request_base : `${item.author_name}:${item.pull_request_base}`} */} + {project_author_name}:{item.pull_request_base} @@ -133,7 +149,7 @@ class MergeItem extends Component { )}

  • {item.version || "--"}
  • - +
  • - {data.project_name}:{data.pull_request.head} + {data.pull_request.is_original ? data.pull_request.fork_project_user : data.issue.project_author_name}:{data.pull_request.head} @@ -276,7 +276,8 @@ class MessageCount extends Component { to={`projects/${projectsId}/coders?branch=${data.pull_request.base}`} className="ver-middle" > - {data.project_name}:{data.pull_request.base} + {/* {data.pull_request.is_fork ? data.pull_request.base : `${data.pull_request.pull_request_user}:${data.pull_request.base}`} */} + {data.issue.project_author_name}:{data.pull_request.base}
    diff --git a/src/forge/Merge/NewMerge.js b/src/forge/Merge/NewMerge.js index 6e8ad7f36..a4cbfdda1 100644 --- a/src/forge/Merge/NewMerge.js +++ b/src/forge/Merge/NewMerge.js @@ -3,8 +3,8 @@ import { Input, Select, Button, Spin, Alert } from "antd"; import axios from "axios"; import "../Order/order.css"; import "./merge.css"; -import MergeForm from "./merge_form" -import MergeFooter from "./merge_footer" +import MergeForm from "./merge_form"; +import MergeFooter from "./merge_footer"; const Option = Select.Option; class NewMerge extends Component { constructor(props) { @@ -12,56 +12,132 @@ class NewMerge extends Component { this.state = { data: undefined, branches: undefined, - origin_branches: undefined, - merge: undefined, - pull: undefined, + merge_branches: undefined, + merge_projects: undefined, + merge: "master", + pull: "master", + is_fork: false, + projects_names: undefined, isSpin: false, show_message: true, + merge_head: false, // 是否向fork后的源项目发起合并请求 default_message: "必须选择不同的分支", + project_id: undefined, // 当前项目的id,也即开始发送合并请求的源项目id + merge_project_user: undefined }; } componentDidMount = () => { - this.getmergelist(); + const { projectsId } = this.props.match.params; + + this.getmergelist(projectsId); }; //获取新建分枝数据 - getmergelist = () => { - const { projectsId } = this.props.match.params; + getmergelist = (projectsId) => { + this.setState({isSpin: true}) const url = `/projects/${projectsId}/pull_requests/new.json`; axios .get(url) .then((result) => { if (result) { this.setState({ - data: result.data, + is_fork: result.data.is_fork, + projects_names: result.data.projects_names, + merge_projects: result.data.merge_projects, branches: result.data.branches, - origin_branches: result.data.branches, + merge_branches: result.data.branches, + project_id: result.data.project_id, }); + this.set_default_pull() + this.set_default_merge() } + this.setState({isSpin: false}) }) .catch((error) => { + this.setState({isSpin: false}) + console.log(error); + }); + }; + + set_default_pull = () => { + const {branches} = this.state; + let default_pull = branches.filter((e) => e.name === "master") + if (default_pull.length > 0){ + this.state.pull = default_pull[0].name + }else{ + this.state.pull = "master" + } + } + + set_default_merge = () => { + const {merge_branches} = this.state; + let default_merge = merge_branches.filter((e) => e.name === "master") + if (default_merge.length > 0){ + this.state.merge = default_merge[0].name + }else{ + this.state.merge = "master" + } + this.ischeckmerge(); + } + + newMergelist = (projectsId) => { + this.setState({isSpin: true}) + const url = `/projects/${projectsId}/pull_requests/get_branches.json`; + axios + .get(url) + .then((result) => { + if (result) { + this.setState({ + merge_branches: result.data + }) + this.set_default_merge() + } + this.setState({isSpin: false}) + }) + .catch((error) => { + this.setState({isSpin: false}) console.log(error); }); }; selectBrach = (type, value) => { + const {merge_head,projects_names} = this.state; this.state[type] = value; this.ischeckmerge(); }; + selectProjectName = (value) => { + const { project_id, projects_names } = this.state; + + let is_fork_id = parseInt(value) !== parseInt(project_id) + this.setState({ + isSpin: true, + merge_head: is_fork_id, + data: { + is_original: is_fork_id, + fork_project_id: is_fork_id ? project_id : "", + merge_user_login: is_fork_id ? projects_names[0].project_user_login : undefined + } + }) + this.props.history.push(`/projects/${value}/merge/new`); + this.newMergelist(value); + + }; + //判断2分支是否可以合并 ischeckmerge = () => { this.setState({ isSpin: true }); const { projectsId } = this.props.match.params; - const { pull, merge } = this.state; + const { pull, merge, project_id, merge_head } = this.state; const url = `/projects/${projectsId}/pull_requests/check_can_merge.json`; axios .post(url, { - project_id: projectsId, - head: merge ? merge : "master", - base: pull ? pull : "master", + head: merge, + base: pull, + is_original: merge_head, + fork_project_id: merge_head ? project_id : "" }) .then((result) => { if (result) { @@ -95,20 +171,38 @@ class NewMerge extends Component { const { data, branches, - origin_branches, + merge_branches, + merge_projects, pull, merge, isSpin, show_message, default_message, + merge_head, + projects_names, } = this.state; - - const renderBrances = (list) => { + const { projectsId } = this.props.match.params; + const renderBrances = (list, type) => { if (list && list.length > 0) { return list.map((item, key) => { return ( - + ); + }); + } + }; + + const renderProjectNames = (list) => { + if (list && list.length > 0) { + return list.map((item, key) => { + return ( + ); }); @@ -120,65 +214,77 @@ class NewMerge extends Component { }; return ( -
    +
    - -
    -
    -
    源分支:
    - - - - -
    -
    - -
    -
    -
    -
    目标分支:
    + +
    +
    +
    源分支:
    - +
    +
    + +
    +
    +
    +
    目标分支:
    + + + + +
    +
    -
    - {show_message ? ( -
    - -
    - ) - : - - } - + {show_message ? ( +
    + +
    + ) : ( + + )} +
    -
    + {/*
    -
    - +
    */}
    ); } diff --git a/src/forge/Merge/UpdateMerge.js b/src/forge/Merge/UpdateMerge.js index 3451766f9..473779894 100644 --- a/src/forge/Merge/UpdateMerge.js +++ b/src/forge/Merge/UpdateMerge.js @@ -57,13 +57,13 @@ class UpdateMerge extends Component {
    源分支:
    + @@ -79,11 +79,10 @@ class UpdateMerge extends Component {
    目标分支:
    @@ -105,9 +104,9 @@ class UpdateMerge extends Component { )}
    -
    + {/*
    -
    +
    */}
    ); } diff --git a/src/forge/Merge/merge.js b/src/forge/Merge/merge.js index 83fa8ab59..b306d700f 100644 --- a/src/forge/Merge/merge.js +++ b/src/forge/Merge/merge.js @@ -417,6 +417,7 @@ class merge extends Component { page={select_params.page} limit={select_params.limit} project_name={data.project_name} + project_author_name={data.project_author_name} {...this.props} {...this.state} > diff --git a/src/forge/Merge/merge_footer.js b/src/forge/Merge/merge_footer.js index d242cdbfd..636279775 100644 --- a/src/forge/Merge/merge_footer.js +++ b/src/forge/Merge/merge_footer.js @@ -33,12 +33,12 @@ class MergeFooter extends Component { } - 提交} key="2"> + {/* 提交} key="2"> - - 文件} key="3"> + */} + {/* 文件} key="3"> - + */}
    ); diff --git a/src/forge/Merge/merge_form.js b/src/forge/Merge/merge_form.js index 9563e8158..f7300f569 100644 --- a/src/forge/Merge/merge_form.js +++ b/src/forge/Merge/merge_form.js @@ -1,5 +1,5 @@ import React, { Component } from "react"; -import { Button, Form, Menu, Input, Select, Tag, Checkbox } from "antd"; +import { Button, Form, Menu, Input, Select, Tag, Checkbox, Spin } from "antd"; import axios from "axios"; import "../Order/order.css"; @@ -21,19 +21,45 @@ class MergeForm extends Component { mergedata: undefined, priority_id: undefined, title: undefined, + members: undefined, + issue_tags: undefined, + issue_versions: undefined, + issue_priories: undefined, }; } componentDidMount = () => { + this.get_default_selects(); this.set_defatul(); }; + get_default_selects = () => { + const { projectsId } = this.props.match.params; + this.setState({ isSpin: true }); + axios + .get(`/projects/${projectsId}/pull_requests/create_merge_infos.json`) + .then((result) => { + if (result) { + this.setState({ + members: result.data.members, + issue_tags: result.data.issue_tags, + issue_versions: result.data.issue_versions, + issue_priories: result.data.issue_priories, + }); + } + this.setState({ isSpin: false }); + }) + .catch((error) => { + this.setState({ isSpin: false }); + console.log(error); + }); + }; set_defatul = () => { const { data, merge_type } = this.props; if (data && merge_type === "edit") { this.setState({ desc: data.body, issue_tag_ids: data.issue_tag_ids[0], - fixed_version_id: String(data.fixed_version_id), + fixed_version_id: data.fixed_version_id ? String(data.fixed_version_id) : undefined, assigned_to_id: String(data.assigned_to_id), priority_id: String(data.priority_id), title: data.title, @@ -106,6 +132,8 @@ class MergeForm extends Component { values.issue_tag_ids = []; } const { desc } = this.state; + const { data } = this.props; + console.log("merge_type", merge_type) if (merge_type === "new") { let url = `/projects/${projectsId}/pull_requests.json`; axios @@ -114,6 +142,9 @@ class MergeForm extends Component { body: desc, head: pull, base: merge, + is_original: data.is_original, + fork_project_id: data.fork_project_id, + merge_user_login: data.merge_user_login }) .then((result) => { if (result) { @@ -136,30 +167,32 @@ class MergeForm extends Component { } else { let url = `/projects/${projectsId}/pull_requests/${mergeId}.json`; axios - .put(url, { - ...values, - body: desc, - head: pull, - base: merge, - }) - .then((result) => { - if (result) { + .put(url, { + ...values, + body: desc, + head: pull, + base: merge, + }) + .then((result) => { + if (result) { + this.setState({ + isSpin: false, + }); + this.props.history.push( + `/projects/${projectsId}/merge/${mergeId}/Messagecount` + ); + } else { + this.setState({ + isSpin: false, + }); + } + }) + .catch((error) => { this.setState({ isSpin: false, }); - this.props.history.push(`/projects/${projectsId}/merge/${mergeId}/Messagecount`); - } else { - this.setState({ - isSpin: false, - }); - } - }) - .catch((error) => { - this.setState({ - isSpin: false, + console.log(error); }); - console.log(error); - }); } } else { this.setState({ @@ -187,130 +220,136 @@ class MergeForm extends Component { desc, isSpin, title, + members, + issue_tags, + issue_versions, + issue_priories, } = this.state; return (
    -
    - - {merge_type === "new" ? "新建" : "编辑"}合并请求: - - - 可合并的 - -
    -
    -
    -
    - - {getFieldDecorator("title", { - rules: [ - { - required: true, - message: "请填写请求标题", - }, - ], - initialValue: title, - })()} - - -

    - - -

    -
    -
    -
    + +
    + + {merge_type === "new" ? "新建" : "编辑"}合并请求: + + + 可合并的 + +
    + +
    +
    - {getFieldDecorator("assigned_to_id", { - initialValue: assigned_to_id, - })( - - )} - - - {getFieldDecorator("fixed_version_id", { - initialValue: fixed_version_id, - })( - - )} - - - {getFieldDecorator("issue_tag_ids", { - initialValue: issue_tag_ids, - })( - - )} - - - {getFieldDecorator("priority_id", { - initialValue: priority_id, - })( - - )} - - - -
    - 必须审查代码 -
    -
    - 合并后删除提交分支 -
    -
    - 合并后关闭提到的任务 -
    -
    + {getFieldDecorator("title", { + rules: [ + { + required: true, + message: "请填写请求标题", + }, + ], + initialValue: title, + })()}
    + +

    + + +

    +
    +
    +
    + + {getFieldDecorator("assigned_to_id", { + initialValue: assigned_to_id, + })( + + )} + + + {getFieldDecorator("fixed_version_id", { + initialValue: fixed_version_id, + })( + + )} + + + {getFieldDecorator("issue_tag_ids", { + initialValue: issue_tag_ids, + })( + + )} + + + {getFieldDecorator("priority_id", { + initialValue: priority_id, + })( + + )} + + + +
    + 必须审查代码 +
    +
    + 合并后删除提交分支 +
    +
    + 合并后关闭提到的任务 +
    +
    +
    +
    -
    - + +
    ); } diff --git a/src/forge/Merge/no_data.js b/src/forge/Merge/no_data.js index d77643396..81c65f506 100644 --- a/src/forge/Merge/no_data.js +++ b/src/forge/Merge/no_data.js @@ -7,7 +7,7 @@ class Nodata extends Component{
    - +

    欢迎使用合并请求!

    From 582ae7765d79d838adbadf0f04e6301cb6917a6d Mon Sep 17 00:00:00 2001 From: "sylor_huang@126.com" Date: Tue, 30 Jun 2020 16:19:22 +0800 Subject: [PATCH 2/8] change some bugs --- src/AppConfig.js | 4 ++-- src/forge/Main/Detail.js | 2 +- src/forge/Merge/NewMerge.js | 5 ++--- src/forge/Merge/merge_form.js | 20 ++++++++++---------- src/forge/Newfile/UserSubmitComponent.js | 4 ++++ 5 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/AppConfig.js b/src/AppConfig.js index e43977162..b83dc5a67 100644 --- a/src/AppConfig.js +++ b/src/AppConfig.js @@ -99,9 +99,9 @@ export function initAxiosInterceptors(props) { // TODO 避免重复的请求 https://github.com/axios/axios#cancellation // TODO 读取到package.json中的配置? var - // proxy = "http://localhost:3000" + proxy = "http://localhost:3000" // proxy = "https://pre-newweb.educoder.net" - proxy = "https://testforgeplus.trustie.net" + // proxy = "https://testforgeplus.trustie.net" // 在这里使用requestMap控制,避免用户通过双击等操作发出重复的请求; diff --git a/src/forge/Main/Detail.js b/src/forge/Main/Detail.js index a177234ec..dfbf4fc6c 100644 --- a/src/forge/Main/Detail.js +++ b/src/forge/Main/Detail.js @@ -335,7 +335,7 @@ class Detail extends Component {
    -

    +

    {project && project.author && {project.author.name} diff --git a/src/forge/Merge/NewMerge.js b/src/forge/Merge/NewMerge.js index a4cbfdda1..abb9c3f3a 100644 --- a/src/forge/Merge/NewMerge.js +++ b/src/forge/Merge/NewMerge.js @@ -102,7 +102,6 @@ class NewMerge extends Component { }; selectBrach = (type, value) => { - const {merge_head,projects_names} = this.state; this.state[type] = value; this.ischeckmerge(); }; @@ -137,7 +136,7 @@ class NewMerge extends Component { head: merge, base: pull, is_original: merge_head, - fork_project_id: merge_head ? project_id : "" + fork_project_id: merge_head ? project_id : undefined }) .then((result) => { if (result) { @@ -190,7 +189,7 @@ class NewMerge extends Component { key={key + 1} value={item.name} > - {type ? `${item.user_name}:${item.name}` : item.name} + {item.name} ); }); diff --git a/src/forge/Merge/merge_form.js b/src/forge/Merge/merge_form.js index f7300f569..69f4863ba 100644 --- a/src/forge/Merge/merge_form.js +++ b/src/forge/Merge/merge_form.js @@ -58,10 +58,10 @@ class MergeForm extends Component { if (data && merge_type === "edit") { this.setState({ desc: data.body, - issue_tag_ids: data.issue_tag_ids[0], + issue_tag_ids: data.issue_tag_ids ? data.issue_tag_ids[0] : undefined, fixed_version_id: data.fixed_version_id ? String(data.fixed_version_id) : undefined, - assigned_to_id: String(data.assigned_to_id), - priority_id: String(data.priority_id), + assigned_to_id: data.assigned_to_id ? String(data.assigned_to_id) : undefined, + priority_id: data.priority_id ? String(data.priority_id) :undefined, title: data.title, }); } @@ -125,15 +125,13 @@ class MergeForm extends Component { this.props.form.validateFieldsAndScroll((err, values) => { if (!err) { const { projectsId, mergeId } = this.props.match.params; - const { merge, pull, merge_type } = this.props; + const { merge, pull, merge_type, data } = this.props; if (values.issue_tag_ids && values.issue_tag_ids.length > 0) { values.issue_tag_ids = [parseInt(values.issue_tag_ids)]; } else { values.issue_tag_ids = []; } - const { desc } = this.state; - const { data } = this.props; - console.log("merge_type", merge_type) + const { desc } = this.state; if (merge_type === "new") { let url = `/projects/${projectsId}/pull_requests.json`; axios @@ -142,9 +140,9 @@ class MergeForm extends Component { body: desc, head: pull, base: merge, - is_original: data.is_original, - fork_project_id: data.fork_project_id, - merge_user_login: data.merge_user_login + is_original: data && data.is_original, + fork_project_id: data && data.fork_project_id, + merge_user_login: data && data.merge_user_login }) .then((result) => { if (result) { @@ -152,6 +150,8 @@ class MergeForm extends Component { isSpin: false, }); this.props.history.push(`/projects/${projectsId}/merge`); + const { getDetail } = this.props; + getDetail && getDetail(); } else { this.setState({ isSpin: false, diff --git a/src/forge/Newfile/UserSubmitComponent.js b/src/forge/Newfile/UserSubmitComponent.js index 78b9a99e7..5ab142d23 100644 --- a/src/forge/Newfile/UserSubmitComponent.js +++ b/src/forge/Newfile/UserSubmitComponent.js @@ -55,6 +55,10 @@ class UserSubmitComponent extends Component { : `/projects/${projectsId}/coders`; this.props.history.push(url); this.props.showNotification("文件新建成功!"); + if(submitType === "1"){ + const { getDetail } = this.props; + getDetail && getDetail(); + } } }) .catch((error) => { From cb4c062f3d7c7d2159b3ed44ea6b7b63775d54d2 Mon Sep 17 00:00:00 2001 From: "sylor_huang@126.com" Date: Tue, 30 Jun 2020 18:15:48 +0800 Subject: [PATCH 3/8] change some bugs --- src/forge/Main/CoderRootDirectory.js | 6 +++--- src/forge/Main/Detail.js | 8 ++++++-- src/forge/Merge/MergeItem.js | 4 ++-- src/forge/Merge/MessageCount.js | 4 ++-- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/forge/Main/CoderRootDirectory.js b/src/forge/Main/CoderRootDirectory.js index 5843d043b..d7e13973a 100644 --- a/src/forge/Main/CoderRootDirectory.js +++ b/src/forge/Main/CoderRootDirectory.js @@ -243,7 +243,7 @@ class CoderRootDirectory extends Component { message: item.commit && item.commit.message, ...item, }); - if (item.name === "README.md") { + if (item.name === "README.md" || item.name === "readme.md") { readMeContent.push({ ...item }); readMeFile.push({ ...item }); } @@ -350,7 +350,7 @@ class CoderRootDirectory extends Component { dataIndex: 'name', width:"30%", render: (text,item) => ( - this.goToSubRoot(item.path,item.type)} className="ml12"> + this.goToSubRoot(item.path,item.type)} className="ml12 task-hide" style={{ display: "block", maxWidth: "345px" }}> {text} ), @@ -484,7 +484,7 @@ class CoderRootDirectory extends Component { )}

    - {subFileType && (isManager || isDeveloper) && ( + {subFileType && parseInt(projectDetail.type) !== 2 && (isManager || isDeveloper) && (
    - + :"" } @@ -406,12 +406,16 @@ class Detail extends Component { { projectDetail && projectDetail.issues_count ? {projectDetail.issues_count} :""}
  • -
  • -1 ? "active" : ""}> + { + projectDetail && parseInt(projectDetail.type) !== 2 && +
  • -1 ? "active" : ""}> 合并请求 { projectDetail && projectDetail.pull_requests_count ? {projectDetail.pull_requests_count} : "" }
  • + } +
  • -1 || url.indexOf("meilpost") > -1) ? "active" : ""}> 里程碑 diff --git a/src/forge/Merge/MergeItem.js b/src/forge/Merge/MergeItem.js index 00c6d2c13..74e46cd39 100644 --- a/src/forge/Merge/MergeItem.js +++ b/src/forge/Merge/MergeItem.js @@ -98,7 +98,7 @@ class MergeItem extends Component { {/* {item.is_fork ? item.pull_request_base : `${item.author_name}:${item.pull_request_base}`} */} diff --git a/src/forge/Merge/MessageCount.js b/src/forge/Merge/MessageCount.js index 215abad6e..4500d5320 100644 --- a/src/forge/Merge/MessageCount.js +++ b/src/forge/Merge/MessageCount.js @@ -258,7 +258,7 @@ class MessageCount extends Component {
    {data.pull_request.is_original ? data.pull_request.fork_project_user : data.issue.project_author_name}:{data.pull_request.head} @@ -273,7 +273,7 @@ class MessageCount extends Component { {/* {data.pull_request.is_fork ? data.pull_request.base : `${data.pull_request.pull_request_user}:${data.pull_request.base}`} */} From c5ce12104d847be09b191a04a38c9a079e813ac7 Mon Sep 17 00:00:00 2001 From: "sylor_huang@126.com" Date: Tue, 30 Jun 2020 18:30:33 +0800 Subject: [PATCH 4/8] change some bugs --- src/forge/Merge/NewMerge.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/forge/Merge/NewMerge.js b/src/forge/Merge/NewMerge.js index abb9c3f3a..2f2104805 100644 --- a/src/forge/Merge/NewMerge.js +++ b/src/forge/Merge/NewMerge.js @@ -133,8 +133,8 @@ class NewMerge extends Component { const url = `/projects/${projectsId}/pull_requests/check_can_merge.json`; axios .post(url, { - head: merge, - base: pull, + head: pull, + base: merge, is_original: merge_head, fork_project_id: merge_head ? project_id : undefined }) From 6b11852d1c879941f3627613c90cb8e1b49f3930 Mon Sep 17 00:00:00 2001 From: "sylor_huang@126.com" Date: Thu, 2 Jul 2020 10:14:00 +0800 Subject: [PATCH 5/8] change readme content --- src/forge/Main/CoderRootDirectory.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/forge/Main/CoderRootDirectory.js b/src/forge/Main/CoderRootDirectory.js index d7e13973a..6dac3d5e1 100644 --- a/src/forge/Main/CoderRootDirectory.js +++ b/src/forge/Main/CoderRootDirectory.js @@ -243,7 +243,7 @@ class CoderRootDirectory extends Component { message: item.commit && item.commit.message, ...item, }); - if (item.name === "README.md" || item.name === "readme.md") { + if (item.is_readme_file) { readMeContent.push({ ...item }); readMeFile.push({ ...item }); } From 7d4f7e9f1f8478fcbd6ac651cbb0410e4097f2c9 Mon Sep 17 00:00:00 2001 From: Jasder <2053003901@@qq.com> Date: Thu, 2 Jul 2020 14:13:01 +0800 Subject: [PATCH 6/8] ADD actioncable package --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 397d4ee5a..36235f0fc 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "dependencies": { "@monaco-editor/react": "^2.3.0", "@novnc/novnc": "^1.1.0", + "actioncable": "^5.2.4-3", "antd": "^3.26.15", "array-flatten": "^2.1.2", "autoprefixer": "7.1.6", From 221cf4fa811ca54fdb50075c5dee4d910faa20fa Mon Sep 17 00:00:00 2001 From: "sylor_huang@126.com" Date: Thu, 2 Jul 2020 14:13:04 +0800 Subject: [PATCH 7/8] change user permission --- src/forge/Merge/merge_form.js | 8 +++++++ src/forge/New/Index.js | 35 +++++++++++++++++++----------- src/forge/Order/newMilepost.js | 11 ++++++++++ src/forge/Order/order_form.js | 8 +++++++ src/forge/Settings/Collaborator.js | 9 ++++++++ src/forge/Settings/Setting.js | 8 +++++++ src/forge/Settings/new_tags.js | 8 +++++++ 7 files changed, 74 insertions(+), 13 deletions(-) diff --git a/src/forge/Merge/merge_form.js b/src/forge/Merge/merge_form.js index 69f4863ba..d98d15df6 100644 --- a/src/forge/Merge/merge_form.js +++ b/src/forge/Merge/merge_form.js @@ -29,9 +29,17 @@ class MergeForm extends Component { } componentDidMount = () => { + this.check_is_login(); this.get_default_selects(); this.set_defatul(); }; + check_is_login =() =>{ + const { current_user } = this.props; + if(!current_user){ + this.props.history.push("/403") + return + } + }; get_default_selects = () => { const { projectsId } = this.props.match.params; this.setState({ isSpin: true }); diff --git a/src/forge/New/Index.js b/src/forge/New/Index.js index ca4e970fa..9e293c457 100644 --- a/src/forge/New/Index.js +++ b/src/forge/New/Index.js @@ -41,21 +41,22 @@ class Index extends Component { ignore_name: undefined } } - getUserInfo = () => { - const url = `/users/me.json`; - axios.get(url).then(result => { - if (result && result.data.login) { - this.setState({ - current_user: result.data - }) - this.getDetail(); - } - }).catch(error => { - console.log(error) - }) - } + // getUserInfo = () => { + // const url = `/users/me.json`; + // axios.get(url).then(result => { + // if (result && result.data.login) { + // this.setState({ + // current_user: result.data + // }) + // this.getDetail(); + // } + // }).catch(error => { + // console.log(error) + // }) + // } componentDidMount = () => { // this.getUserInfo(); + this.check_is_login() // 获取项目类别 this.getCategory(); // 获取项目语言 @@ -64,6 +65,14 @@ class Index extends Component { this.getGitignore(); // 获取开源许可证 this.getLicenses(); + + } + check_is_login =() =>{ + const { current_user } = this.props; + if(!current_user){ + this.props.history.push("/403") + return + } } getCategory = () => { const url = `/project_categories.json` diff --git a/src/forge/Order/newMilepost.js b/src/forge/Order/newMilepost.js index 7fca5fae7..0a5435a6b 100644 --- a/src/forge/Order/newMilepost.js +++ b/src/forge/Order/newMilepost.js @@ -17,6 +17,17 @@ class NewMilepost extends Component { } } + componentDidMount = () => { + this.check_is_login(); + }; + check_is_login =() =>{ + const { current_user } = this.props; + if(!current_user){ + this.props.history.push("/403") + return + } + }; + onPanelChange = (time, mode) => { this.setState({ value: time diff --git a/src/forge/Order/order_form.js b/src/forge/Order/order_form.js index 37386b43c..50a8259b1 100644 --- a/src/forge/Order/order_form.js +++ b/src/forge/Order/order_form.js @@ -38,9 +38,17 @@ class order_form extends Component { } componentDidMount = () => { + this.check_is_login() this.getSelectList(); this.get_detail(); }; + check_is_login =() =>{ + const { current_user } = this.props; + if(!current_user){ + this.props.history.push("/403") + return + } + } get_detail = () => { const { form_type } = this.props; if (form_type === "new") { diff --git a/src/forge/Settings/Collaborator.js b/src/forge/Settings/Collaborator.js index e1bf408e5..638bcd574 100644 --- a/src/forge/Settings/Collaborator.js +++ b/src/forge/Settings/Collaborator.js @@ -56,11 +56,20 @@ class Collaborator extends Component { } componentDidMount = () => { + this.check_is_login() if (this.props.project_id) { this.getMember(); } }; + check_is_login =() =>{ + const { current_user } = this.props; + if(!current_user){ + this.props.history.push("/403") + return + } + }; + componentDidUpdate = (prevState) => { if ( this.props.project_id && diff --git a/src/forge/Settings/Setting.js b/src/forge/Settings/Setting.js index 8d91fed11..4dfa888d2 100644 --- a/src/forge/Settings/Setting.js +++ b/src/forge/Settings/Setting.js @@ -19,10 +19,18 @@ class Setting extends Component { } componentDidMount = () => { + this.check_is_login() this.getCategory(); this.getLanguage(); this.getInfo(); }; + check_is_login =() =>{ + const { current_user } = this.props; + if(!current_user){ + this.props.history.push("/403") + return + } + }; getLanguage = () => { const url = `/project_languages.json`; axios diff --git a/src/forge/Settings/new_tags.js b/src/forge/Settings/new_tags.js index 037925f1a..1203c9908 100644 --- a/src/forge/Settings/new_tags.js +++ b/src/forge/Settings/new_tags.js @@ -51,8 +51,16 @@ class NewTags extends Component { } componentDidMount = () => { + this.check_is_login(); this.getList(); }; + check_is_login =() =>{ + const { current_user } = this.props; + if(!current_user){ + this.props.history.push("/403") + return + } + }; getList = (page, order_name, order_type) => { const { projectsId } = this.props.match.params; From e5008ee57f4f742eb8548a1d45d88a14c67207f3 Mon Sep 17 00:00:00 2001 From: Jasder <2053003901@@qq.com> Date: Thu, 2 Jul 2020 14:17:47 +0800 Subject: [PATCH 8/8] FIX migrate project with websocket sidekiq --- src/forge/Main/Detail.js | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/src/forge/Main/Detail.js b/src/forge/Main/Detail.js index a177234ec..8f939b1be 100644 --- a/src/forge/Main/Detail.js +++ b/src/forge/Main/Detail.js @@ -1,4 +1,4 @@ -import React, { Component } from 'react'; +import React, { Component, Fragment } from 'react'; import { Spin, Tooltip } from 'antd'; import { Link, Route, Switch } from 'react-router-dom'; @@ -154,6 +154,30 @@ class Detail extends Component { this.getDetail(); } + canvasChannel = () => { + const actioncable = require("actioncable") + var project = this.state.project + var cable = actioncable.createConsumer('ws:/192.168.2.59:3000/cable'); + this.canvasChannel1 = cable.subscriptions.create({ + channel: `MirrorProjectChannel`, + id: project && project.identifier + },{ + connected: () => { + console.log("###### channel connected! ######") + // this.getProject() + }, + disconnected: () => {}, + received: data => { + console.log(`###### ---received data--- ######`); + console.log(data); + if (data ) { + this.getDetail() + cable.subscriptions.consumer.disconnect(); + } + } + }) + } + componentDidUpdate = (prevState) => { if ((prevState.match.params.projectsId !== this.props.match.params.projectsId)) { this.getProject(); @@ -165,9 +189,17 @@ class Detail extends Component { const { projectsId } = this.props.match.params; const url = `/projects/${projectsId}/simple.json`; axios.get(url).then((result) => { - this.setState({ - project: result.data - }) + if(result && result.data){ + this.setState({ + project: result.data + }) + + if (result.data.type != 0 && result.data.mirror_status == 1){ + console.log("--------start channel --------"); + this.canvasChannel(); + } + } + }) }