Skip to content

Commit 46f1dc4

Browse files
Remote management schema added (#94)
1 parent 5761da7 commit 46f1dc4

File tree

4 files changed

+357
-195
lines changed

4 files changed

+357
-195
lines changed

ui/api_schema.graphql

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,11 @@ type branchCompareResults {
8686
commits: [gitCommits]!
8787
}
8888

89+
type remoteDetails {
90+
remoteName: String!
91+
remoteUrl: String!
92+
}
93+
8994
type Query {
9095
healthCheck: HealthCheckParams!
9196
fetchRepo: FetchRepoParams!
@@ -120,6 +125,7 @@ type Query {
120125
baseBranch: String!
121126
compareBranch: String!
122127
): [branchCompareResults]!
128+
getRemote(repoId: String!): [remoteDetails]!
123129
}
124130

125131
type BranchDeleteStatus {
@@ -141,6 +147,10 @@ type deleteStatus {
141147
repoId: String!
142148
}
143149

150+
type remoteMutationResult {
151+
status: String!
152+
}
153+
144154
type Mutation {
145155
addRepo(
146156
repoName: String!
@@ -181,4 +191,15 @@ type Mutation {
181191
updateRepoDataFile(newDbFile: String!): String!
182192
deleteRepo(repoId: String!): deleteStatus!
183193
updateRepoName(repoId: String!, repoName: String!): String!
194+
addRemote(
195+
repoId: String!
196+
remoteName: String!
197+
remoteUrl: String!
198+
): remoteMutationResult!
199+
editRemote(
200+
repoId: String!
201+
remoteName: String!
202+
remoteUrl: String!
203+
): remoteMutationResult!
204+
deleteRemote(repoId: String!, remoteName: String!): remoteMutationResult!
184205
}

ui/src/Components/DashBoard/Repository/RepoComponents/RepoDetails/RepoDetailBackdrop/RemoteConfigComponent/AddRemoteRepoFormComponent.js

Lines changed: 73 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,21 @@
11
import React, { useRef } from "react";
2+
import axios from "axios";
3+
import { globalAPIEndpoint } from "../../../../../../../util/env_config";
24
import { faCheck, faTimes } from "@fortawesome/free-solid-svg-icons";
35
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
46

57
export default function AddRemoteRepoFormComponent(props) {
8+
const {
9+
setReloadView,
10+
setRemoteForm,
11+
setFieldMissing,
12+
setInvalidUrl,
13+
setAddNewRemote,
14+
setAddRemoteStatus,
15+
repoId,
16+
setStatusCheck,
17+
setRemoteOperation,
18+
} = props;
619
const remoteNameRef = useRef();
720
const remoteUrlRef = useRef();
821

@@ -17,9 +30,9 @@ export default function AddRemoteRepoFormComponent(props) {
1730
placeholder={placeholder}
1831
ref={formId === "remoteName" ? remoteNameRef : remoteUrlRef}
1932
onChange={(event) => {
20-
props.setFieldMissing(false);
21-
props.setAddRemoteStatus(false);
22-
props.setInvalidUrl(false);
33+
setFieldMissing(false);
34+
setAddRemoteStatus(false);
35+
setInvalidUrl(false);
2336
const remoteNameVal = event.target.value;
2437
if (
2538
event.target.id === "remoteName" &&
@@ -38,48 +51,73 @@ export default function AddRemoteRepoFormComponent(props) {
3851

3952
if (remoteName && remoteUrl && remoteUrl.match(/[^ ]*/g)) {
4053
if (remoteUrl.match(/(\s)/g)) {
41-
props.setInvalidUrl(true);
54+
setInvalidUrl(true);
4255
} else {
43-
//TODO: Add axios
4456
let status = "success";
45-
if (status === "success") {
46-
localStorage.setItem(
47-
remoteName,
48-
JSON.stringify({
49-
remoteName: remoteName,
50-
remoteUrl: remoteUrl,
51-
})
52-
);
53-
props.setRemoteForm(false);
54-
props.setAddNewRemote(true);
55-
props.setReloadView(true);
56-
remoteNameRef.current.value = "";
57-
remoteUrlRef.current.value = "";
58-
} else {
59-
props.setAddRemoteStatus(true);
60-
}
57+
58+
axios({
59+
url: globalAPIEndpoint,
60+
method: "POST",
61+
data: {
62+
query: `
63+
mutation {
64+
addRemote(repoId: "${repoId}", remoteName: "${remoteName}", remoteUrl: ${remoteUrl}"){
65+
status
66+
}
67+
}
68+
`,
69+
},
70+
})
71+
.then((res) => {
72+
status = res.data.data;
73+
if (status === "success") {
74+
setRemoteForm(false);
75+
setAddNewRemote(true);
76+
setReloadView(true);
77+
remoteNameRef.current.value = "";
78+
remoteUrlRef.current.value = "";
79+
} else {
80+
setAddRemoteStatus(true); //status === "failed"
81+
}
82+
setStatusCheck(false);
83+
setRemoteOperation(" ");
84+
})
85+
.catch(() => {
86+
setStatusCheck(true);
87+
setRemoteOperation("add");
88+
// setRemoteDetails([...remoteDetails, {
89+
// remoteName: remoteName,
90+
// remoteUrl: remoteUrl,
91+
// }]);
92+
93+
// setRemoteForm(false);
94+
// setAddNewRemote(true);
95+
// setReloadView(true);
96+
// remoteNameRef.current.value = "";
97+
// remoteUrlRef.current.value = "";
98+
});
6199
}
62100
} else {
63-
props.setAddNewRemote(false);
64-
props.setInvalidUrl(false);
65-
props.setFieldMissing(true);
101+
setAddNewRemote(false);
102+
setInvalidUrl(false);
103+
setFieldMissing(true);
66104
}
67105
};
68106

69107
return (
70-
<form className="form--data flex w-full items-center my-6">
71-
<div className="mx-auto w-1/4">
108+
<form className="flex items-center w-full my-6 form--data">
109+
<div className="w-1/4 mx-auto">
72110
{formAddRemote("remoteName", "Remote name")}
73111
</div>
74-
<div className="mx-auto w-1/2">
112+
<div className="w-1/2 mx-auto">
75113
{formAddRemote("remoteURL", "Remote URL")}
76114
</div>
77115
<div
78-
className="text-center flex items-center justify-evenly"
116+
className="flex items-center text-center justify-evenly"
79117
style={{ outline: "none", width: "22%" }}
80118
>
81119
<div
82-
className="xl:text-lg lg:text-lg md:text-base text-base items-center p-1 py-2 rounded w-5/12 mx-auto cursor-pointer bg-blue-500 hover:bg-blue-700 font-semibold"
120+
className="items-center w-5/12 p-1 py-2 mx-auto text-base font-semibold bg-blue-500 rounded cursor-pointer xl:text-lg lg:text-lg md:text-base hover:bg-blue-700"
83121
onClick={() => {
84122
addRemote();
85123
}}
@@ -90,13 +128,13 @@ export default function AddRemoteRepoFormComponent(props) {
90128
></FontAwesomeIcon>
91129
</div>
92130
<div
93-
className="xl:text-lg lg:text-lg md:text-base text-base items-center p-1 py-2 rounded w-5/12 mx-auto cursor-pointer bg-red-500 hover:bg-red-600 font-semibold"
131+
className="items-center w-5/12 p-1 py-2 mx-auto text-base font-semibold bg-red-500 rounded cursor-pointer xl:text-lg lg:text-lg md:text-base hover:bg-red-600"
94132
onClick={() => {
95-
props.setAddNewRemote(true);
96-
props.setRemoteForm(false);
97-
props.setFieldMissing(false);
98-
props.setInvalidUrl(false);
99-
props.setAddRemoteStatus(false);
133+
setAddNewRemote(true);
134+
setRemoteForm(false);
135+
setFieldMissing(false);
136+
setInvalidUrl(false);
137+
setAddRemoteStatus(false);
100138
}}
101139
>
102140
<FontAwesomeIcon

0 commit comments

Comments
 (0)