PromucFlow_constructor/app/client/src/api/GitSyncAPI.tsx
haojin111 d3c3707ad3
feat: git sync - add error, progress states to connect and merge tabs (#9007)
Co-authored-by: Rishabh Rathod <rishabh.rathod@appsmith.com>
2021-11-09 15:21:18 +05:30

140 lines
3.3 KiB
TypeScript

import { AxiosPromise } from "axios";
import Api from "api/Api";
import { ApiResponse } from "./ApiResponses";
import { GitConfig } from "entities/GitSync";
export type CommitPayload = {
applicationId: string;
commitMessage: string;
doPush: boolean;
branch: string;
};
export type PushToGitPayload = {
applicationId: string;
branch: string;
};
export type MergeBranchPayload = {
applicationId: string;
sourceBranch: string;
destinationBranch: string;
};
export type MergeStatusPayload = {
applicationId: string;
sourceBranch: string;
destinationBranch: string;
};
export type ConnectToGitPayload = {
remoteUrl: string;
gitProfile: {
authorName: string;
authorEmail: string;
};
isImport?: boolean;
isDefaultProfile?: boolean;
};
type GitStatusParam = {
applicationId: string;
branch: string;
};
class GitSyncAPI extends Api {
static baseURL = `/v1/git`;
static commit({
applicationId,
branch,
commitMessage,
doPush,
}: CommitPayload): AxiosPromise<ApiResponse> {
return Api.post(
`${GitSyncAPI.baseURL}/commit/${applicationId}?branchName=${branch}`,
{
commitMessage,
doPush,
},
);
}
static push({
applicationId,
branch,
}: PushToGitPayload): AxiosPromise<ApiResponse> {
return Api.post(
`${GitSyncAPI.baseURL}/push/${applicationId}?branchName=${branch}`,
);
}
static merge({
applicationId,
destinationBranch,
sourceBranch,
}: MergeBranchPayload): AxiosPromise<ApiResponse> {
return Api.post(`${GitSyncAPI.baseURL}/merge/${applicationId}`, {
sourceBranch,
destinationBranch,
});
}
static getMergeStatus({
applicationId,
destinationBranch,
sourceBranch,
}: MergeStatusPayload) {
return Api.get(`${GitSyncAPI.baseURL}/merge/status/${applicationId}`, {
sourceBranch,
destinationBranch,
});
}
static connect(payload: ConnectToGitPayload, applicationId: string) {
return Api.post(`${GitSyncAPI.baseURL}/connect/${applicationId}`, payload);
}
static disconnect(applicationId: string) {
return Api.post(`${GitSyncAPI.baseURL}/disconnect/${applicationId}`);
}
static getGlobalConfig() {
return Api.get(`${GitSyncAPI.baseURL}/profile/default`);
}
static setGlobalConfig(payload: GitConfig) {
return Api.post(`${GitSyncAPI.baseURL}/profile/default`, payload);
}
static fetchBranches(applicationId: string) {
return Api.get(`${GitSyncAPI.baseURL}/branch/${applicationId}`);
}
static checkoutBranch(applicationId: string) {
return Api.get(`${GitSyncAPI.baseURL}/checkout-branch/${applicationId}`);
}
static createNewBranch(applicationId: string, branch: string) {
return Api.post(`${GitSyncAPI.baseURL}/create-branch/${applicationId}`, {
branchName: branch,
});
}
static getLocalConfig(applicationId: string) {
return Api.get(`${GitSyncAPI.baseURL}/profile/${applicationId}`);
}
static setLocalConfig(payload: GitConfig, applicationId: string) {
return Api.put(`${GitSyncAPI.baseURL}/profile/${applicationId}`, payload);
}
static getGitStatus({ applicationId, branch }: GitStatusParam) {
return Api.get(
`${GitSyncAPI.baseURL}/status/${applicationId}?branchName=${branch}`,
);
}
}
export default GitSyncAPI;