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);
}