diff --git a/src/components/BuildingOverview/index.js b/src/components/BuildingOverview/index.js index f457aa971062f59efcf1e69073b3ef654daab0e4..0333ce5da24264c2f1f91805de14ca29908adecf 100644 --- a/src/components/BuildingOverview/index.js +++ b/src/components/BuildingOverview/index.js @@ -67,6 +67,7 @@ export default class BuildingOverview extends Component { documents={this.props.documents} getDocuments={this.props.getDocuments} uploadDocument={this.props.uploadDocument} + getFolderUrl={this.props.getFolderUrl} /> @@ -85,4 +86,5 @@ BuildingOverview.propTypes = { documents: documentsPropType, getDocuments: PropTypes.func, uploadDocument: PropTypes.func, + getFolderUrl: PropTypes.func, }; diff --git a/src/components/DocumentCardViewer/index.js b/src/components/DocumentCardViewer/index.js index 73a605e5ca5d39e8bd2093547f9fba202e7f0acf..b894278be2a541828469fae46a610f6c6a89da01 100644 --- a/src/components/DocumentCardViewer/index.js +++ b/src/components/DocumentCardViewer/index.js @@ -17,6 +17,7 @@ export default class DocumentCardViewer extends Component { componentDidMount() { this.props.getDocuments(this.props.documentPath, this.props.fileKey); + this.props.getFolderUrl(this.props.documentPath); } uploadHandler = (event) => { @@ -94,7 +95,7 @@ export default class DocumentCardViewer extends Component { />
Documents {/* eslint-disable jsx-a11y/href-no-hash */} - View all + View all
{ this.renderUploadButton() }
{ this.renderDocuments() }
@@ -110,4 +111,5 @@ DocumentCardViewer.propTypes = { documents: documentsPropType.isRequired, getDocuments: PropTypes.func.isRequired, uploadDocument: PropTypes.func.isRequired, + getFolderUrl: PropTypes.func.isRequired, }; diff --git a/src/containers/Building/index.js b/src/containers/Building/index.js index 6c734bf4f8b7c951d90213733291c780394d79e0..4d3c14e362173cb775773966ecea5f481880def1 100644 --- a/src/containers/Building/index.js +++ b/src/containers/Building/index.js @@ -6,7 +6,7 @@ import { completeOverviewPropTypes, completeProjectPropTypes } from './propTypes import { loadBuildingDetail, loadProjects } from './actions'; import documentsPropType from '../Documents/propTypes'; -import { loadDocuments, uploadDocument } from '../Documents/actions'; +import { loadDocuments, uploadDocument, loadFolderUrl } from '../Documents/actions'; import SideBarDetail from '../../components/SideBarDetail'; import ErrorAlert from '../../components/ErrorAlert'; @@ -35,6 +35,7 @@ class Building extends Component { documents: this.props.documents, getDocuments: this.props.loadDocuments, uploadDocument: this.props.uploadDocument, + getFolderUrl: this.props.loadFolderUrl, }); } @@ -63,6 +64,7 @@ Building.propTypes = { documents: documentsPropType, loadDocuments: PropTypes.func, uploadDocument: PropTypes.func, + loadFolderUrl: PropTypes.func, }; function mapDispatchToProps(dispatch) { @@ -71,6 +73,7 @@ function mapDispatchToProps(dispatch) { loadProjects, loadDocuments, uploadDocument, + loadFolderUrl, }, dispatch); } diff --git a/src/containers/Documents/actions.js b/src/containers/Documents/actions.js index 3c8c901d0a09fe43cd326c81dc8748eb7e913afd..1048416bd4bf7ea745ed3ada706fee6c1637527e 100644 --- a/src/containers/Documents/actions.js +++ b/src/containers/Documents/actions.js @@ -5,6 +5,8 @@ import { UPLOAD_DOCUMENT, UPLOAD_DOCUMENT_SUCCESS, UPLOAD_DOCUMENT_ERROR, + LOAD_FOLDER_URL, + LOAD_FOLDER_URL_SUCCESS, } from './constants'; export function loadDocuments(documentPath, fileKey) { @@ -57,3 +59,17 @@ export function documentUploadError(error) { error, }; } + +export function loadFolderUrl(folderPath) { + return { + type: LOAD_FOLDER_URL, + folderPath, + }; +} + +export function folderUrlLoaded(url) { + return { + type: LOAD_FOLDER_URL_SUCCESS, + payload: url, + }; +} diff --git a/src/containers/Documents/constants.js b/src/containers/Documents/constants.js index ef186ca834f1d74977437bed10a2b46d55f4414a..5e8ab2d6ceb06ef2d46233fd0fc50d5aeb04b20f 100644 --- a/src/containers/Documents/constants.js +++ b/src/containers/Documents/constants.js @@ -4,3 +4,5 @@ export const LOAD_DOCUMENTS_ERROR = 'LOAD_DOCUMENTS_ERROR'; export const UPLOAD_DOCUMENT = 'UPLOAD_DOCUMENT'; export const UPLOAD_DOCUMENT_SUCCESS = 'UPLOAD_DOCUMENT_SUCCESS'; export const UPLOAD_DOCUMENT_ERROR = 'UPLOAD_DOCUMENT_ERROR'; +export const LOAD_FOLDER_URL = 'LOAD_FOLDER_URL'; +export const LOAD_FOLDER_URL_SUCCESS = 'LOAD_FOLDER_URL_SUCCESS'; diff --git a/src/containers/Documents/propTypes.js b/src/containers/Documents/propTypes.js index f6f413bea6587c5718eee30f77bbecc2f986dfbf..185bf29307a1bc20e42ff5525eb9335f0a6c78b4 100644 --- a/src/containers/Documents/propTypes.js +++ b/src/containers/Documents/propTypes.js @@ -23,6 +23,7 @@ export default shape({ bool, string, ]), + folderUrl: string, files: shape({ building: arrayOf(documentProps), utilityBills: arrayOf(documentProps), diff --git a/src/containers/Documents/reducer.js b/src/containers/Documents/reducer.js index 2f73396e587e6ff4086d7548a1d0bb682a322807..4f35c347e87b56025c94bf4d25ead5fe4940791c 100644 --- a/src/containers/Documents/reducer.js +++ b/src/containers/Documents/reducer.js @@ -5,6 +5,8 @@ import { UPLOAD_DOCUMENT, UPLOAD_DOCUMENT_SUCCESS, UPLOAD_DOCUMENT_ERROR, + LOAD_FOLDER_URL, + LOAD_FOLDER_URL_SUCCESS, } from './constants'; import { @@ -16,6 +18,7 @@ const initState = { error: false, uploading: false, uploadError: false, + documentUrl: '#', files: { building: [], // Root Directory project: [], @@ -77,6 +80,18 @@ export default function (state = initState, action) { uploadError: action.error, }; + case LOAD_FOLDER_URL: + return { + ...state, + folderUrl: '#', + }; + + case LOAD_FOLDER_URL_SUCCESS: + return { + ...state, + folderUrl: action.payload, + }; + case LOAD_BUILDING_DETAIL: return initState; diff --git a/src/containers/Documents/sagas.js b/src/containers/Documents/sagas.js index d6f2845500466ced6f978fb5fa23d334b0b7cb58..8234b1899658294d7e306a7114fc8d4dda60500a 100644 --- a/src/containers/Documents/sagas.js +++ b/src/containers/Documents/sagas.js @@ -5,6 +5,7 @@ import { getHeaders, documentURL } from '../../utils/restServices'; import { LOAD_DOCUMENTS, UPLOAD_DOCUMENT, + LOAD_FOLDER_URL, } from './constants'; import { @@ -12,6 +13,7 @@ import { documentsLoadingError, documentUploaded, documentUploadError, + folderUrlLoaded, } from './actions'; @@ -58,7 +60,24 @@ function* uploadDocument(action) { } } +function* getFolderUrl(action) { + const { folderPath } = action; + + const res = yield call( + request, + `${documentURL}?path=${folderPath}&folder=true`, { + method: 'GET', + headers: getHeaders(), + } + ); + + if (!res.err) { + yield put(folderUrlLoaded(res.data[0].url_box)); + } +} + export default function* () { yield takeLatest(LOAD_DOCUMENTS, getDocuments); yield takeLatest(UPLOAD_DOCUMENT, uploadDocument); + yield takeLatest(LOAD_FOLDER_URL, getFolderUrl); }