| 
									
										
										
										
											2018-03-27 03:49:12 +08:00
										 |  |  | /* | 
					
						
							|  |  |  |  * Minio Cloud Storage (C) 2018 Minio, Inc. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Licensed under the Apache License, Version 2.0 (the "License"); | 
					
						
							|  |  |  |  * you may not use this file except in compliance with the License. | 
					
						
							|  |  |  |  * You may obtain a copy of the License at | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *     http://www.apache.org/licenses/LICENSE-2.0
 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Unless required by applicable law or agreed to in writing, software | 
					
						
							|  |  |  |  * distributed under the License is distributed on an "AS IS" BASIS, | 
					
						
							|  |  |  |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 
					
						
							|  |  |  |  * See the License for the specific language governing permissions and | 
					
						
							|  |  |  |  * limitations under the License. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import React from "react" | 
					
						
							|  |  |  | import { connect } from "react-redux" | 
					
						
							|  |  |  | import { Dropdown } from "react-bootstrap" | 
					
						
							|  |  |  | import ShareObjectModal from "./ShareObjectModal" | 
					
						
							|  |  |  | import DeleteObjectConfirmModal from "./DeleteObjectConfirmModal" | 
					
						
							|  |  |  | import * as objectsActions from "./actions" | 
					
						
							|  |  |  | import { | 
					
						
							|  |  |  |   SHARE_OBJECT_EXPIRY_DAYS, | 
					
						
							|  |  |  |   SHARE_OBJECT_EXPIRY_HOURS, | 
					
						
							|  |  |  |   SHARE_OBJECT_EXPIRY_MINUTES | 
					
						
							|  |  |  | } from "../constants" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export class ObjectActions extends React.Component { | 
					
						
							|  |  |  |   constructor(props) { | 
					
						
							|  |  |  |     super(props) | 
					
						
							|  |  |  |     this.state = { | 
					
						
							|  |  |  |       showDeleteConfirmation: false | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   shareObject(e) { | 
					
						
							|  |  |  |     e.preventDefault() | 
					
						
							|  |  |  |     const { object, shareObject } = this.props | 
					
						
							|  |  |  |     shareObject( | 
					
						
							|  |  |  |       object.name, | 
					
						
							|  |  |  |       SHARE_OBJECT_EXPIRY_DAYS, | 
					
						
							|  |  |  |       SHARE_OBJECT_EXPIRY_HOURS, | 
					
						
							|  |  |  |       SHARE_OBJECT_EXPIRY_MINUTES | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   deleteObject() { | 
					
						
							|  |  |  |     const { object, deleteObject } = this.props | 
					
						
							|  |  |  |     deleteObject(object.name) | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   showDeleteConfirmModal(e) { | 
					
						
							|  |  |  |     e.preventDefault() | 
					
						
							|  |  |  |     this.setState({ showDeleteConfirmation: true }) | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   hideDeleteConfirmModal() { | 
					
						
							|  |  |  |     this.setState({ | 
					
						
							|  |  |  |       showDeleteConfirmation: false | 
					
						
							|  |  |  |     }) | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   render() { | 
					
						
							| 
									
										
										
										
											2018-08-10 00:45:43 +08:00
										 |  |  |     const { object, showShareObjectModal, shareObjectName } = this.props | 
					
						
							| 
									
										
										
										
											2018-03-27 03:49:12 +08:00
										 |  |  |     return ( | 
					
						
							|  |  |  |       <Dropdown id={`obj-actions-${object.name}`}> | 
					
						
							|  |  |  |         <Dropdown.Toggle noCaret className="fia-toggle" /> | 
					
						
							|  |  |  |         <Dropdown.Menu> | 
					
						
							|  |  |  |           <a | 
					
						
							|  |  |  |             href="" | 
					
						
							|  |  |  |             className="fiad-action" | 
					
						
							|  |  |  |             onClick={this.shareObject.bind(this)} | 
					
						
							|  |  |  |           > | 
					
						
							|  |  |  |             <i className="fa fa-copy" /> | 
					
						
							|  |  |  |           </a> | 
					
						
							|  |  |  |           <a | 
					
						
							|  |  |  |             href="" | 
					
						
							|  |  |  |             className="fiad-action" | 
					
						
							|  |  |  |             onClick={this.showDeleteConfirmModal.bind(this)} | 
					
						
							|  |  |  |           > | 
					
						
							|  |  |  |             <i className="fa fa-trash" /> | 
					
						
							|  |  |  |           </a> | 
					
						
							|  |  |  |         </Dropdown.Menu> | 
					
						
							| 
									
										
										
										
											2018-08-10 00:45:43 +08:00
										 |  |  |         {(showShareObjectModal && shareObjectName === object.name) && | 
					
						
							|  |  |  |           <ShareObjectModal object={object} />} | 
					
						
							| 
									
										
										
										
											2018-03-27 03:49:12 +08:00
										 |  |  |         {this.state.showDeleteConfirmation && ( | 
					
						
							|  |  |  |           <DeleteObjectConfirmModal | 
					
						
							|  |  |  |             deleteObject={this.deleteObject.bind(this)} | 
					
						
							|  |  |  |             hideDeleteConfirmModal={this.hideDeleteConfirmModal.bind(this)} | 
					
						
							|  |  |  |           /> | 
					
						
							|  |  |  |         )} | 
					
						
							|  |  |  |       </Dropdown> | 
					
						
							|  |  |  |     ) | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const mapStateToProps = (state, ownProps) => { | 
					
						
							|  |  |  |   return { | 
					
						
							|  |  |  |     object: ownProps.object, | 
					
						
							| 
									
										
										
										
											2018-08-10 00:45:43 +08:00
										 |  |  |     showShareObjectModal: state.objects.shareObject.show, | 
					
						
							|  |  |  |     shareObjectName: state.objects.shareObject.object | 
					
						
							| 
									
										
										
										
											2018-03-27 03:49:12 +08:00
										 |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const mapDispatchToProps = dispatch => { | 
					
						
							|  |  |  |   return { | 
					
						
							|  |  |  |     shareObject: (object, days, hours, minutes) => | 
					
						
							|  |  |  |       dispatch(objectsActions.shareObject(object, days, hours, minutes)), | 
					
						
							|  |  |  |     deleteObject: object => dispatch(objectsActions.deleteObject(object)) | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | export default connect(mapStateToProps, mapDispatchToProps)(ObjectActions) |