+
)
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/react-app/src/components/new-release/AddReleaseForm.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/react-app/src/components/new-release/AddReleaseForm.js
index 200cf9e741..8d26338f9d 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/react-app/src/components/new-release/AddReleaseForm.js
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/react-app/src/components/new-release/AddReleaseForm.js
@@ -17,57 +17,26 @@
*/
import React from "react";
-import {
- Card,
- Button,
- message,
- Row,
- Col,
- Input,
- Icon,
- Select,
- Switch,
- Form,
- Upload,
- Divider,
- notification,
- Spin, InputNumber
-} from "antd";
+import {Form, notification, Spin,} from "antd";
import axios from "axios";
import {withRouter} from 'react-router-dom'
import {withConfigContext} from "../../context/ConfigContext";
import {handleApiError} from "../../js/Utils";
-
-const {Option} = Select;
-const {TextArea} = Input;
-const InputGroup = Input.Group;
-
-const formItemLayout = {
- labelCol: {
- span: 8,
- },
- wrapperCol: {
- span: 16,
- },
-};
+import NewAppUploadForm from "../new-app/subForms/NewAppUploadForm";
class AddNewReleaseFormComponent extends React.Component {
constructor(props) {
super(props);
this.state = {
- current: 0,
- categories: [],
- tags: [],
- icons: [],
- screenshots: [],
loading: false,
- binaryFiles: [],
isFree: true,
- supportedOsVersions: []
+ supportedOsVersions: [],
+ application: null,
+ release: null,
+ isError: false,
+ deviceType: null
};
- this.lowerOsVersion = null;
- this.upperOsVersion = null;
}
componentDidMount() {
@@ -95,309 +64,78 @@ class AddNewReleaseFormComponent extends React.Component {
});
};
- handleSubmit = e => {
+ onSuccessReleaseData = (releaseData) => {
const config = this.props.context;
- e.preventDefault();
const {appId, deviceType} = this.props;
+ this.setState({
+ loading: true,
+ isError: false
+ });
+ const {data, release} = releaseData;
+ const {formConfig} = this.props;
+ const {price} = release;
- this.props.form.validateFields((err, values) => {
- if (!err) {
- this.setState({
- loading: true
- });
- const {price, isSharedWithAllTenants, icon, screenshots, releaseDescription, releaseType, binaryFile} = values;
- const data = new FormData();
+ release.subMethod = (price === 0) ? "FREE" : "PAID";
- //add release data
- const release = {
- description: releaseDescription,
- price: (price === undefined) ? 0 : parseInt(price),
- isSharedWithAllTenants,
- metaData: "[]",
- releaseType: releaseType,
- supportedOsVersions: `${this.lowerOsVersion}-${this.upperOsVersion}`
- };
- data.append('binaryFile', binaryFile[0].originFileObj);
- data.append('icon', icon[0].originFileObj);
- data.append('screenshot1', screenshots[0].originFileObj);
- data.append('screenshot2', screenshots[1].originFileObj);
- data.append('screenshot3', screenshots[2].originFileObj);
+ const json = JSON.stringify(release);
+ const blob = new Blob([json], {
+ type: 'application/json'
+ });
+ data.append(formConfig.jsonPayloadName, blob);
- const json = JSON.stringify(release);
- const blob = new Blob([json], {
- type: 'application/json'
+ const url = window.location.origin + config.serverConfig.invoker.uri + config.serverConfig.invoker.publisher +
+ "/applications/" + deviceType + formConfig.endpoint + "/" + appId;
+ axios.post(
+ url,
+ data
+ ).then(res => {
+ if (res.status === 201) {
+ this.setState({
+ loading: false,
});
- data.append("applicationRelease", blob);
-
- const url = window.location.origin + config.serverConfig.invoker.uri +
- config.serverConfig.invoker.publisher + "/applications/" + deviceType + "/ent-app/" + appId;
-
- axios.post(
- url,
- data
- ).then(res => {
- if (res.status === 201) {
- this.setState({
- loading: false,
- });
-
- notification["success"]({
- message: "Done!",
- description:
- "New release was added successfully",
- });
-
- const uuid = res.data.data.uuid;
-
- this.props.history.push('/publisher/apps/releases/' + uuid);
- }
+ notification["success"]({
+ message: "Done!",
+ description:
+ "New release was added successfully",
+ });
+ const uuid = res.data.data.uuid;
+ this.props.history.push('/publisher/apps/releases/' + uuid);
- }).catch((error) => {
- handleApiError(error, "Sorry, we were unable to complete your request.");
- this.setState({
- loading: false
- });
+ } else {
+ this.setState({
+ loading: false,
+ isError: true,
});
}
+ }).catch((error) => {
+ handleApiError(error, "Sorry, we were unable to complete your request.");
+ this.setState({
+ loading: false,
+ isError: true,
+ });
});
- };
-
- normFile = e => {
- if (Array.isArray(e)) {
- return e;
- }
- return e && e.fileList;
- };
-
- handleIconChange = ({fileList}) => this.setState({icons: fileList});
- handleBinaryFileChange = ({fileList}) => this.setState({binaryFiles: fileList});
-
- handleScreenshotChange = ({fileList}) => this.setState({screenshots: fileList});
-
- handlePriceTypeChange = (value) => {
- this.setState({
- isFree: (value === 'free')
- });
- };
- handleLowerOsVersionChange = (lowerOsVersion) => {
- this.lowerOsVersion = lowerOsVersion;
};
- handleUpperOsVersionChange = (upperOsVersion) => {
- this.upperOsVersion = upperOsVersion;
+ onClickBackButton = () => {
+ this.props.history.push('/publisher/apps/');
};
render() {
- const {isFree, icons, screenshots, loading, binaryFiles, supportedOsVersions} = this.state;
- const {getFieldDecorator} = this.props.form;
+ const {loading, supportedOsVersions} = this.state;
+ const {formConfig} = this.props;
return (
-
-
-
-
-
-
-
-
-
-
+
-
);
}
}
diff --git a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/react-app/src/pages/dashboard/add-new-release/AddNewRelease.js b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/react-app/src/pages/dashboard/add-new-release/AddNewRelease.js
index 2cdaf6d2ab..cf6b7d1cba 100644
--- a/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/react-app/src/pages/dashboard/add-new-release/AddNewRelease.js
+++ b/components/application-mgt/org.wso2.carbon.device.application.mgt.publisher.ui/react-app/src/pages/dashboard/add-new-release/AddNewRelease.js
@@ -28,6 +28,18 @@ import {Link} from "react-router-dom";
const Paragraph = Typography;
+const formConfig = {
+ installationType: "ENTERPRISE",
+ endpoint: "/ent-app",
+ jsonPayloadName: "applicationRelease",
+ releaseWrapperName: "entAppReleaseWrappers",
+ specificElements: {
+ binaryFile: {
+ required: true
+ }
+ }
+};
+
class AddNewRelease extends React.Component {
constructor(props) {
@@ -55,7 +67,7 @@ class AddNewRelease extends React.Component {