diff --git a/changelog.md b/changelog.md index 9082aae..37ff80c 100644 --- a/changelog.md +++ b/changelog.md @@ -2,6 +2,41 @@ This file is a record of notable changes made to Reeve. +## 1.2.0 + +### Added + +- Change Password Functionality +- Set Default Language +- User Profile Page +- S3 Bucket Image Uploads +- Signed Image Uploads +- Cloudfront image loading +- EmailVerified option to endpoint security +- HideComponent component based on user restriction rules +- Offline warning when connection to internet is lost +- Application version to request headers +- GDPR hard delete online account +- Workspace branding settings +- Settings Page +- Async load Redux states +- Updated NPM packages + +### Fixed + +- Logo href links to homepage on authentication pages +- Reload user on email validation +- Firefox SVG image sizing issues +- Organized scss files +- Loading bar at top of screen +- Loading bar not visible during async page loading +- Improved react router implementation +- Improved "Page could not be found" component +- Select border radius +- Notification text translates on language change +- Hover link colors during client color change +- Duplicate sessions on page refresh + ## 1.1.0 ### Added diff --git a/client/common/layouts/DefaultLayout.js b/client/common/layouts/DefaultLayout.js index 94d48c2..7b24196 100644 --- a/client/common/layouts/DefaultLayout.js +++ b/client/common/layouts/DefaultLayout.js @@ -1,7 +1,6 @@ import React, { Component, Fragment } from "react"; import PropTypes from "prop-types"; import { withRouter } from "react-router-dom"; -import { TransitionGroup, CSSTransition } from "react-transition-group"; import { Offline } from "react-detect-offline"; import Header from "client/modules/header"; @@ -16,16 +15,12 @@ class DefaultLayout extends Component {
- - -
- - - - {children} -
-
-
+
+ + + + {children} +
); diff --git a/client/common/styles/entry.scss b/client/common/styles/entry.scss index 0586651..e4086e2 100644 --- a/client/common/styles/entry.scss +++ b/client/common/styles/entry.scss @@ -9,5 +9,4 @@ @import "modules/borders"; @import "modules/alignment"; @import "modules/images"; -@import "modules/animations"; @import "modules/custom_components"; diff --git a/client/common/styles/modules/_animations.scss b/client/common/styles/modules/_animations.scss deleted file mode 100644 index 2f3eea9..0000000 --- a/client/common/styles/modules/_animations.scss +++ /dev/null @@ -1,12 +0,0 @@ -// Page transition animation - -.fade-appear, -.fade-enter { - opacity: 0; -} - -.fade-appear-active, -.fade-enter-active { - transition: opacity 0.3s linear; - opacity: 1; -} diff --git a/package-lock.json b/package-lock.json index 8c4a706..14e0316 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1987,9 +1987,9 @@ } }, "aws-sdk": { - "version": "2.444.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.444.0.tgz", - "integrity": "sha512-3vdC7l5BJ3zHzVNgtIxD+TDviti/sAA/1T8zAXAm2XhZ7AePR5lYIMNAwqu+J44Nm6PFSK1QNSzRQ6A4/6b9eA==", + "version": "2.445.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.445.0.tgz", + "integrity": "sha512-VontdYjQs7218Mw73IYIVhmbRlnHsbbNxuatOFgKvhFCWh4+ze4joM95ViKOUVofSWwlm1HmNasdhb2kOTg+MA==", "requires": { "buffer": "4.9.1", "events": "1.1.1", @@ -3858,14 +3858,6 @@ "esutils": "^2.0.2" } }, - "dom-helpers": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-3.4.0.tgz", - "integrity": "sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==", - "requires": { - "@babel/runtime": "^7.1.2" - } - }, "dom-walk": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz", @@ -5309,9 +5301,9 @@ } }, "express-rate-limit": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-3.4.1.tgz", - "integrity": "sha512-0Em4GrXBb47EN8C5sk8w5H0X0BH0kgHlVMfYjOaPTmRkABSfIbqpiCMc9LxWT27+X1RkpG6bGnt1Fa/UHwajbQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-3.5.0.tgz", + "integrity": "sha512-DLUgv9lqUCEil5RV5naS/rABzfi/zOEfgU7Fb/0f+QyRbM5pHCvZozhWEeD01b0V5RsyGBNtRhp2YxfvrlgAaA==", "requires": { "defaults": "^1.0.3" } @@ -10401,9 +10393,9 @@ } }, "react-color": { - "version": "2.17.2", - "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.17.2.tgz", - "integrity": "sha512-TpT/D3wEQmyCOcIXrUgKOvEXpJtMylEx5yzw0laGP30mfC5yO4CoUsiYvfPiUbbkFjMGurPJjkKOkkOfBBIjFQ==", + "version": "2.17.3", + "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.17.3.tgz", + "integrity": "sha512-1dtO8LqAVotPIChlmo6kLtFS1FP89ll8/OiA8EcFRDR+ntcK+0ukJgByuIQHRtzvigf26dV5HklnxDIvhON9VQ==", "requires": { "@icons/material": "^0.2.4", "lodash": "^4.17.11", @@ -10619,16 +10611,6 @@ "prop-types": "^15.6.0" } }, - "react-transition-group": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.0.0.tgz", - "integrity": "sha512-b+uvkr15Pb80mqcsz5WAB+d53zS8/pTp3wDEsOiqpea93G8BqfsMFcPv2XZR0owqU13BJWoJvd17VjOPEY/9aA==", - "requires": { - "dom-helpers": "^3.4.0", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - } - }, "reactcss": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz", @@ -11321,9 +11303,9 @@ "integrity": "sha1-1WgS4cAXpuTnw+Ojeh2m143TyT4=" }, "sequelize": { - "version": "5.7.6", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-5.7.6.tgz", - "integrity": "sha512-eBOgOnhNpoFaizRZpJm9Z3+PuVgVbJHApHqRaIkzkw7t049kYxdjQvTkKuQ4uZI8jncVIx9SlofRi5QhO7t/oA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-5.8.0.tgz", + "integrity": "sha512-ejIW3nToLKUYOyFQNW+GAwbJyu9WiyzwpWdByPwmmfZ/q/1+/L51AHETVJmIiw6QAelF8NeUjAkq3ve/hoIyPQ==", "requires": { "bluebird": "^3.5.0", "cls-bluebird": "^2.1.0", diff --git a/package.json b/package.json index 4efadcd..d3bf90b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Reeve", - "version": "1.1.0", + "version": "1.2.0", "engines": { "node": "10.x" }, @@ -48,7 +48,7 @@ "acorn": "^6.1.1", "async": "^2.6.2", "ava": "^1.4.1", - "aws-sdk": "^2.444.0", + "aws-sdk": "^2.445.0", "babel-loader": "^8.0.5", "babel-plugin-add-module-exports": "^1.0.2", "babel-plugin-emotion": "^10.0.9", @@ -68,7 +68,7 @@ "es6-promise": "^4.2.6", "exports-loader": "^0.7.0", "express": "^4.16.4", - "express-rate-limit": "^3.4.1", + "express-rate-limit": "^3.5.0", "express-winston": "^3.1.0", "file-loader": "^3.0.1", "helmet": "^3.16.0", @@ -102,7 +102,7 @@ "rc-switch": "^1.9.0", "react": "^16.8.6", "react-butterfiles": "^1.2.1", - "react-color": "^2.17.2", + "react-color": "^2.17.3", "react-detect-offline": "^2.3.0", "react-dom": "^16.8.6", "react-ga": "^2.5.7", @@ -117,14 +117,13 @@ "react-script-loader-hoc": "^1.2.2", "react-stripe-elements": "^3.0.0", "react-tooltip": "^3.10.0", - "react-transition-group": "^4.0.0", "redis": "^2.8.0", "redux": "^4.0.1", "redux-immutable": "^4.0.0", "redux-thunk": "^2.2.0", "safe-regex": "^2.0.2", "sass-loader": "^7.0.1", - "sequelize": "^5.7.6", + "sequelize": "^5.8.0", "serialize-error": "^4.1.0", "serve-favicon": "^2.5.0", "stripe": "^6.31.1", diff --git a/readme.md b/readme.md index 35b724d..7f20c5f 100644 --- a/readme.md +++ b/readme.md @@ -18,6 +18,14 @@ cd Reeve npm install && npm start ``` +## Online Application Demo + +Heroku Demo [Master Branch] + +Heroku Demo [Development Branch] + +- Some features such as stripe billing and email sending in the online demo versions have been disabled. + ## Application Screenshots ![](https://i.imgur.com/c6cYmSl.png) @@ -73,7 +81,15 @@ npm install && npm start ## Documentation -Further documentation can be found in the ./documentation directory +Further documentation can be found in the ./documentation directory of the repository. + +An online copy of the documentation can be found at + +## Feature Updates + +The following public trello board provides scope for some of the features that are planned in future versions of Reeve. + + ## License diff --git a/server/services/s3.js b/server/services/s3.js index 88ef32d..067d9a1 100644 --- a/server/services/s3.js +++ b/server/services/s3.js @@ -56,7 +56,8 @@ async function presignedPutObject(contentType, bucket, signedUrlExpiryTime, acl, try { // Create file name to store object in bucket const extension = mime.extension(contentType); - const key = `${config.s3.fileDestination}${Date.now().toString()}_${clientId}_${userId}.${extension}`; + const filePath = config.s3.fileDestination ? config.s3.fileDestination : ""; + const key = `${filePath}${Date.now().toString()}_${clientId}_${userId}.${extension}`; const url = await s3.getSignedUrl("putObject", { Bucket: bucket,