diff options
-rw-r--r-- | frontend/package.json | 1 | ||||
-rw-r--r-- | frontend/src/components/errors/errorToastContainer.js | 7 | ||||
-rw-r--r-- | frontend/src/components/errors/react-redux-toastr.min.css | 3 | ||||
-rw-r--r-- | frontend/src/reducers.js | 2 | ||||
-rw-r--r-- | frontend/src/sagas/errors.js | 6 |
5 files changed, 4 insertions, 15 deletions
diff --git a/frontend/package.json b/frontend/package.json index c161fbf8..46011211 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -18,7 +18,6 @@ "react": "^16.4.0", "react-dom": "^16.4.0", "react-redux": "^5.0.7", - "react-redux-toastr": "^7.2.3", "react-router-dom": "^4.3.1", "react-router-redux": "^5.0.0-alpha.9", "react-transition-group": "^2.3.1", diff --git a/frontend/src/components/errors/errorToastContainer.js b/frontend/src/components/errors/errorToastContainer.js deleted file mode 100644 index 794d3d3f..00000000 --- a/frontend/src/components/errors/errorToastContainer.js +++ /dev/null @@ -1,7 +0,0 @@ -import React from 'react'; -import ReduxToastr from 'react-redux-toastr'; -import './react-redux-toastr.min.css'; - -export const ErrorToastContainer = () => ( - <ReduxToastr timeOut={4000} preventDuplicates position="bottom-left" progressBar /> -); diff --git a/frontend/src/components/errors/react-redux-toastr.min.css b/frontend/src/components/errors/react-redux-toastr.min.css deleted file mode 100644 index 9c235d86..00000000 --- a/frontend/src/components/errors/react-redux-toastr.min.css +++ /dev/null @@ -1,3 +0,0 @@ -.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.bounceIn{-webkit-animation-duration:.7s;animation-duration:.7s}.animated.bounceOut{-webkit-animation-duration:.5s;animation-duration:.5s}.animated.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn}.animated.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut}.animated.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn;-webkit-animation-duration:.7s;animation-duration:.7s}.animated.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut;-webkit-animation-duration:.3s;animation-duration:.3s}.animated.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}.animated.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes bounceIn{from,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}0%{opacity:0;-webkit-transform:scale3d(0.3, 0.3, 0.3);transform:scale3d(0.3, 0.3, 0.3)}20%{-webkit-transform:scale3d(1.1, 1.1, 1.1);transform:scale3d(1.1, 1.1, 1.1)}40%{-webkit-transform:scale3d(0.9, 0.9, 0.9);transform:scale3d(0.9, 0.9, 0.9)}60%{opacity:1;-webkit-transform:scale3d(1.03, 1.03, 1.03);transform:scale3d(1.03, 1.03, 1.03)}80%{-webkit-transform:scale3d(0.97, 0.97, 0.97);transform:scale3d(0.97, 0.97, 0.97)}to{opacity:1;-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}}@keyframes bounceIn{from,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}0%{opacity:0;-webkit-transform:scale3d(0.3, 0.3, 0.3);transform:scale3d(0.3, 0.3, 0.3)}20%{-webkit-transform:scale3d(1.1, 1.1, 1.1);transform:scale3d(1.1, 1.1, 1.1)}40%{-webkit-transform:scale3d(0.9, 0.9, 0.9);transform:scale3d(0.9, 0.9, 0.9)}60%{opacity:1;-webkit-transform:scale3d(1.03, 1.03, 1.03);transform:scale3d(1.03, 1.03, 1.03)}80%{-webkit-transform:scale3d(0.97, 0.97, 0.97);transform:scale3d(0.97, 0.97, 0.97)}to{opacity:1;-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(0.9, 0.9, 0.9);transform:scale3d(0.9, 0.9, 0.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1, 1.1, 1.1);transform:scale3d(1.1, 1.1, 1.1)}to{opacity:0;-webkit-transform:scale3d(0.3, 0.3, 0.3);transform:scale3d(0.3, 0.3, 0.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(0.9, 0.9, 0.9);transform:scale3d(0.9, 0.9, 0.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1, 1.1, 1.1);transform:scale3d(1.1, 1.1, 1.1)}to{opacity:0;-webkit-transform:scale3d(0.3, 0.3, 0.3);transform:scale3d(0.3, 0.3, 0.3)}}@-webkit-keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@-webkit-keyframes fadeOut{from{opacity:1}to{opacity:0}}@keyframes fadeOut{from{opacity:1}to{opacity:0}}@-webkit-keyframes bounceInDown{from,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}0%{opacity:0;-webkit-transform:translate3d(0, -3000px, 0);transform:translate3d(0, -3000px, 0)}60%{opacity:1;-webkit-transform:translate3d(0, 25px, 0);transform:translate3d(0, 25px, 0)}75%{-webkit-transform:translate3d(0, -10px, 0);transform:translate3d(0, -10px, 0)}90%{-webkit-transform:translate3d(0, 5px, 0);transform:translate3d(0, 5px, 0)}to{-webkit-transform:none;transform:none}}@keyframes bounceInDown{from,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1)}0%{opacity:0;-webkit-transform:translate3d(0, -3000px, 0);transform:translate3d(0, -3000px, 0)}60%{opacity:1;-webkit-transform:translate3d(0, 25px, 0);transform:translate3d(0, 25px, 0)}75%{-webkit-transform:translate3d(0, -10px, 0);transform:translate3d(0, -10px, 0)}90%{-webkit-transform:translate3d(0, 5px, 0);transform:translate3d(0, 5px, 0)}to{-webkit-transform:none;transform:none}}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0, -10px, 0);transform:translate3d(0, -10px, 0)}40%,45%{opacity:1;-webkit-transform:translate3d(0, 20px, 0);transform:translate3d(0, 20px, 0)}to{opacity:0;-webkit-transform:translate3d(0, -2000px, 0);transform:translate3d(0, -2000px, 0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0, -10px, 0);transform:translate3d(0, -10px, 0)}40%,45%{opacity:1;-webkit-transform:translate3d(0, 20px, 0);transform:translate3d(0, 20px, 0)}to{opacity:0;-webkit-transform:translate3d(0, -2000px, 0);transform:translate3d(0, -2000px, 0)}}.confirm-holder{width:100%;height:100%;position:fixed;top:0;left:0;z-index:99999999}.confirm-holder .shadow{width:100%;height:100%;background-color:rgba(50,58,68,0.8)}.confirm-holder .confirm{width:320px;background-color:white;position:absolute;z-index:9;top:20%;left:50%;margin-left:-160px;box-shadow:3px 3px 20px #333;border-radius:4px;overflow:hidden}.confirm-holder .confirm .message{width:100%;padding:5%;min-height:50px;font-size:1em;background-color:white;text-align:center;font-family:'open-sanscondensed-light', sans-serif;clear:both}.confirm-holder .confirm button{width:50%;height:50px;text-transform:capitalize;border:none;background-color:transparent;padding:0;margin:0;float:left;border-top:1px solid #f0f0f0;font-size:14px;overflow:hidden;cursor:pointer}.confirm-holder .confirm button:hover{background-color:#f5f5f5}.confirm-holder .confirm button.ok-btn:active{background-color:#60bb71;color:white}.confirm-holder .confirm button.cancel-btn:active{background-color:#db6a64;color:white}.confirm-holder .confirm button.full-width{width:100%}.confirm-holder .confirm button:focus{outline:none}body.toastr-confirm-active{overflow:hidden}.redux-toastr *,.redux-toastr *:before,.redux-toastr *:after{box-sizing:border-box}.redux-toastr .top-left,.redux-toastr .top-right,.redux-toastr .top-center,.redux-toastr .bottom-left,.redux-toastr .bottom-right,.redux-toastr .bottom-center{width:350px;position:fixed;z-index:99999999;padding:0 10px}.redux-toastr .top-left,.redux-toastr .top-right,.redux-toastr .top-center{top:0}.redux-toastr .top-right,.redux-toastr .bottom-right{right:0}.redux-toastr .bottom-left,.redux-toastr .bottom-right,.redux-toastr .bottom-center{bottom:0}.redux-toastr .top-left,.redux-toastr .bottom-left{left:0}.redux-toastr .top-center,.redux-toastr .bottom-center{left:50%;margin-left:-175px}@media (max-width: 320px){.redux-toastr .top-left,.redux-toastr .top-right,.redux-toastr .top-center,.redux-toastr .bottom-left,.redux-toastr .bottom-right,.redux-toastr .bottom-center{width:320px}.redux-toastr .top-center,.redux-toastr .bottom-center{margin-left:-160px}}.redux-toastr .toastr{background-color:#fcfcfc;width:100%;min-height:70px;overflow:hidden;margin:10px 0;border-radius:4px;position:relative;z-index:2;color:#333;opacity:.94;box-shadow:2px 2px 10px rgba(0,0,0,0.4)}.redux-toastr .toastr:hover:not(.message){box-shadow:0px 0px 10px rgba(0,0,0,0.6);opacity:1}.redux-toastr .toastr .toastr-status{width:100%;height:5px}.redux-toastr .toastr .toastr-status.success{background-color:#60bb71}.redux-toastr .toastr .toastr-status.warning{background-color:#f7a336}.redux-toastr .toastr .toastr-status.info{background-color:#58abc3}.redux-toastr .toastr .toastr-status.error{background-color:#db6a64}.redux-toastr .toastr .toastr-left-container,.redux-toastr .toastr .toastr-right-container{float:left;text-align:center;overflow:hidden}.redux-toastr .toastr .toastr-left-container{width:80px;top:0;left:0;position:absolute;bottom:0}.redux-toastr .toastr .toastr-left-container .holder{width:70px;height:70px;position:absolute;top:50%;margin-top:-35px;left:5px;line-height:60px}.redux-toastr .toastr .toastr-left-container .toastr-icon{fill:white;vertical-align:middle;margin-top:5px}.redux-toastr .toastr .toastr-middle-container{width:65%;margin-left:80px;position:relative;float:left;font-family:Arial, Helvetica, sans-serif, sans-serif;font-size:1em;text-align:left;padding:10px 5px}.redux-toastr .toastr .toastr-middle-container .title{font-size:1.1em;font-weight:bold;margin-bottom:5px}.redux-toastr .toastr .toastr-right-container{width:10%}.redux-toastr .toastr .close-toastr{width:10%;height:100%;position:absolute;top:0;right:0;background-color:transparent;font-size:22px;border:none;outline:none;opacity:0.5;cursor:pointer;font-family:"Helvetica Neue", Helvetica, Arial sans-serif}.redux-toastr .toastr .close-toastr:hover{opacity:1}.redux-toastr .toastr .close-toastr:focus{outline:none}.redux-toastr .toastr.info,.redux-toastr .toastr.success,.redux-toastr .toastr.warning,.redux-toastr .toastr.error{color:white}.redux-toastr .toastr.info{background-color:#58abc3}.redux-toastr .toastr.info .toastr-progressbar{background-color:#378298}.redux-toastr .toastr.success{background-color:#60bb71}.redux-toastr .toastr.success .toastr-progressbar{background-color:#3e914d}.redux-toastr .toastr.warning{background-color:#f7a336}.redux-toastr .toastr.warning .toastr-progressbar{background-color:#d87e09}.redux-toastr .toastr.error{background-color:#db6a64}.redux-toastr .toastr.error .toastr-progressbar{background-color:#c5352e}.redux-toastr .toastr.light .toastr-progressbar{background-color:#ccc}.redux-toastr .toastr.light .toastr-icon{fill:#333 !important}.redux-toastr .toastr.message{opacity:1;border:1px solid #dbdbdb}.redux-toastr .toastr.message .title{width:90%;height:50px;text-align:center;overflow:hidden;font-size:1.2em;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;line-height:50px;padding:0 20px}.redux-toastr .toastr.message .message{width:100%;max-height:400px;overflow:hidden;overflow-y:auto;border-top:1px solid #f1f1f1;border-bottom:1px solid #f1f1f1;background-color:white;padding:15px;font-size:1.1em;margin-bottom:20px}.redux-toastr .toastr.message .message img{display:block;margin:10px auto;max-width:100%}.redux-toastr .toastr.message .close-toastr{height:50px}.redux-toastr .toastr .toastr-progress-container{height:5px;margin:0 -20px -20px -60px;position:absolute;bottom:20px;width:100%}.redux-toastr .toastr .toastr-progress-container .toastr-progressbar{border-radius:0 0 0 4px;height:100%}.redux-toastr .toastr-attention{width:100%;height:100%;position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.4);z-index:1} - -/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlYWN0LXJlZHV4LXRvYXN0ci5taW4uY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFVBQVUsOEJBQXNCLEFBQXRCLHNCQUFzQixpQ0FBd0IsQUFBeEIsd0JBQXdCLENBQUMsbUJBQW1CLCtCQUFzQixBQUF0QixzQkFBc0IsQ0FBQyxvQkFBb0IsK0JBQXNCLEFBQXRCLHNCQUFzQixDQUFDLG1CQUFtQixnQ0FBdUIsQUFBdkIsdUJBQXVCLENBQUMsb0JBQW9CLGlDQUF3QixBQUF4Qix3QkFBd0IsQ0FBQyxpQkFBaUIsOEJBQXNCLEFBQXRCLHNCQUFzQiwrQkFBc0IsQUFBdEIsc0JBQXNCLENBQUMsa0JBQWtCLCtCQUF1QixBQUF2Qix1QkFBdUIsK0JBQXNCLEFBQXRCLHNCQUFzQixDQUFDLHVCQUF1QixvQ0FBMkIsQUFBM0IsMkJBQTJCLENBQUMsc0JBQXNCLG1DQUEwQixBQUExQiwwQkFBMEIsQ0FBQyw0QkFBb0Isd0JBQXdCLHNFQUE2RCxBQUE3RCw2REFBNkQsQ0FBQyxHQUFHLFVBQVUseUNBQWdDLEFBQWhDLGdDQUFnQyxDQUFDLElBQUkseUNBQWdDLEFBQWhDLGdDQUFnQyxDQUFDLElBQUkseUNBQWdDLEFBQWhDLGdDQUFnQyxDQUFDLElBQUksVUFBVSw0Q0FBbUMsQUFBbkMsbUNBQW1DLENBQUMsSUFBSSw0Q0FBbUMsQUFBbkMsbUNBQW1DLENBQUMsR0FBRyxVQUFVLG1DQUEwQixBQUExQiwwQkFBMEIsQ0FBQyxDQUFDLEFBQXJXLG9CQUFvQix3QkFBd0Isc0VBQTZELEFBQTdELDZEQUE2RCxDQUFDLEdBQUcsVUFBVSx5Q0FBZ0MsQUFBaEMsZ0NBQWdDLENBQUMsSUFBSSx5Q0FBZ0MsQUFBaEMsZ0NBQWdDLENBQUMsSUFBSSx5Q0FBZ0MsQUFBaEMsZ0NBQWdDLENBQUMsSUFBSSxVQUFVLDRDQUFtQyxBQUFuQyxtQ0FBbUMsQ0FBQyxJQUFJLDRDQUFtQyxBQUFuQyxtQ0FBbUMsQ0FBQyxHQUFHLFVBQVUsbUNBQTBCLEFBQTFCLDBCQUEwQixDQUFDLENBQUMsNkJBQXFCLElBQUkseUNBQWdDLEFBQWhDLGdDQUFnQyxDQUFDLFFBQVEsVUFBVSx5Q0FBZ0MsQUFBaEMsZ0NBQWdDLENBQUMsR0FBRyxVQUFVLHlDQUFnQyxBQUFoQyxnQ0FBZ0MsQ0FBQyxDQUFDLEFBQTVKLHFCQUFxQixJQUFJLHlDQUFnQyxBQUFoQyxnQ0FBZ0MsQ0FBQyxRQUFRLFVBQVUseUNBQWdDLEFBQWhDLGdDQUFnQyxDQUFDLEdBQUcsVUFBVSx5Q0FBZ0MsQUFBaEMsZ0NBQWdDLENBQUMsQ0FBQywwQkFBa0IsS0FBSyxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxBQUEvQyxrQkFBa0IsS0FBSyxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQywyQkFBbUIsS0FBSyxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxBQUFoRCxtQkFBbUIsS0FBSyxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxnQ0FBd0Isb0JBQW9CLHNFQUE2RCxBQUE3RCw2REFBNkQsQ0FBQyxHQUFHLFVBQVUsNkNBQW9DLEFBQXBDLG9DQUFvQyxDQUFDLElBQUksVUFBVSwwQ0FBaUMsQUFBakMsaUNBQWlDLENBQUMsSUFBSSwyQ0FBa0MsQUFBbEMsa0NBQWtDLENBQUMsSUFBSSx5Q0FBZ0MsQUFBaEMsZ0NBQWdDLENBQUMsR0FBRyx1QkFBdUIsY0FBYyxDQUFDLENBQUMsQUFBbFUsd0JBQXdCLG9CQUFvQixzRUFBNkQsQUFBN0QsNkRBQTZELENBQUMsR0FBRyxVQUFVLDZDQUFvQyxBQUFwQyxvQ0FBb0MsQ0FBQyxJQUFJLFVBQVUsMENBQWlDLEFBQWpDLGlDQUFpQyxDQUFDLElBQUksMkNBQWtDLEFBQWxDLGtDQUFrQyxDQUFDLElBQUkseUNBQWdDLEFBQWhDLGdDQUFnQyxDQUFDLEdBQUcsdUJBQXVCLGNBQWMsQ0FBQyxDQUFDLCtCQUF1QixJQUFJLDJDQUFrQyxBQUFsQyxrQ0FBa0MsQ0FBQyxRQUFRLFVBQVUsMENBQWlDLEFBQWpDLGlDQUFpQyxDQUFDLEdBQUcsVUFBVSw2Q0FBb0MsQUFBcEMsb0NBQW9DLENBQUMsQ0FBQyxBQUFySyx1QkFBdUIsSUFBSSwyQ0FBa0MsQUFBbEMsa0NBQWtDLENBQUMsUUFBUSxVQUFVLDBDQUFpQyxBQUFqQyxpQ0FBaUMsQ0FBQyxHQUFHLFVBQVUsNkNBQW9DLEFBQXBDLG9DQUFvQyxDQUFDLENBQUMsZ0JBQWdCLFdBQVcsWUFBWSxlQUFlLE1BQU0sT0FBTyxnQkFBZ0IsQ0FBQyx3QkFBd0IsV0FBVyxZQUFZLG1DQUFtQyxDQUFDLHlCQUF5QixZQUFZLHVCQUF1QixrQkFBa0IsVUFBVSxRQUFRLFNBQVMsbUJBQW1CLDZCQUE2QixrQkFBa0IsZUFBZSxDQUFDLGtDQUFrQyxXQUFXLFdBQVcsZ0JBQWdCLGNBQWMsdUJBQXVCLGtCQUFrQixtREFBbUQsVUFBVSxDQUFDLGdDQUFnQyxVQUFVLFlBQVksMEJBQTBCLFlBQVksNkJBQTZCLFVBQVUsU0FBUyxXQUFXLDZCQUE2QixlQUFlLGdCQUFnQixjQUFjLENBQUMsc0NBQXNDLHdCQUF3QixDQUFDLDhDQUE4Qyx5QkFBeUIsV0FBVyxDQUFDLGtEQUFrRCx5QkFBeUIsV0FBVyxDQUFDLDJDQUEyQyxVQUFVLENBQUMsc0NBQXNDLFlBQVksQ0FBQywyQkFBMkIsZUFBZSxDQUFDLDZEQUE2RCxxQkFBcUIsQ0FBQywrSkFBK0osWUFBWSxlQUFlLGlCQUFpQixjQUFjLENBQUMsMkVBQTJFLEtBQUssQ0FBQyxxREFBcUQsT0FBTyxDQUFDLG9GQUFvRixRQUFRLENBQUMsbURBQW1ELE1BQU0sQ0FBQyx1REFBdUQsU0FBUyxrQkFBa0IsQ0FBQywwQkFBMEIsK0pBQStKLFdBQVcsQ0FBQyx1REFBdUQsa0JBQWtCLENBQUMsQ0FBQyxzQkFBc0IseUJBQXlCLFdBQVcsZ0JBQWdCLGdCQUFnQixjQUFjLGtCQUFrQixrQkFBa0IsVUFBVSxXQUFXLFlBQVksdUNBQXVDLENBQUMsMENBQTBDLHdDQUF3QyxTQUFTLENBQUMscUNBQXFDLFdBQVcsVUFBVSxDQUFDLDZDQUE2Qyx3QkFBd0IsQ0FBQyw2Q0FBNkMsd0JBQXdCLENBQUMsMENBQTBDLHdCQUF3QixDQUFDLDJDQUEyQyx3QkFBd0IsQ0FBQywyRkFBMkYsV0FBVyxrQkFBa0IsZUFBZSxDQUFDLDZDQUE2QyxXQUFXLE1BQU0sT0FBTyxrQkFBa0IsUUFBUSxDQUFDLHFEQUFxRCxXQUFXLFlBQVksa0JBQWtCLFFBQVEsaUJBQWlCLFNBQVMsZ0JBQWdCLENBQUMsMERBQTBELFdBQVcsc0JBQXNCLGNBQWMsQ0FBQywrQ0FBK0MsVUFBVSxpQkFBaUIsa0JBQWtCLFdBQVcscURBQXFELGNBQWMsZ0JBQWdCLGdCQUFnQixDQUFDLHNEQUFzRCxnQkFBZ0IsaUJBQWlCLGlCQUFpQixDQUFDLDhDQUE4QyxTQUFTLENBQUMsb0NBQW9DLFVBQVUsWUFBWSxrQkFBa0IsTUFBTSxRQUFRLDZCQUE2QixlQUFlLFlBQVksYUFBYSxZQUFZLGVBQWUseURBQXlELENBQUMsMENBQTBDLFNBQVMsQ0FBQywwQ0FBMEMsWUFBWSxDQUFDLG1IQUFtSCxXQUFXLENBQUMsMkJBQTJCLHdCQUF3QixDQUFDLCtDQUErQyx3QkFBd0IsQ0FBQyw4QkFBOEIsd0JBQXdCLENBQUMsa0RBQWtELHdCQUF3QixDQUFDLDhCQUE4Qix3QkFBd0IsQ0FBQyxrREFBa0Qsd0JBQXdCLENBQUMsNEJBQTRCLHdCQUF3QixDQUFDLGdEQUFnRCx3QkFBd0IsQ0FBQyxnREFBZ0QscUJBQXFCLENBQUMseUNBQXlDLG9CQUFvQixDQUFDLDhCQUE4QixVQUFVLHdCQUF3QixDQUFDLHFDQUFxQyxVQUFVLFlBQVksa0JBQWtCLGdCQUFnQixnQkFBZ0IsdUJBQXVCLGdCQUFnQixtQkFBbUIsaUJBQWlCLGNBQWMsQ0FBQyx1Q0FBdUMsV0FBVyxpQkFBaUIsZ0JBQWdCLGdCQUFnQiw2QkFBNkIsZ0NBQWdDLHVCQUF1QixhQUFhLGdCQUFnQixrQkFBa0IsQ0FBQywyQ0FBMkMsY0FBYyxpQkFBaUIsY0FBYyxDQUFDLDRDQUE0QyxXQUFXLENBQUMsaURBQWlELFdBQVcsMkJBQTJCLGtCQUFrQixZQUFZLFVBQVUsQ0FBQyxxRUFBa0ksd0JBQXdCLFdBQVcsQ0FBQyxnQ0FBZ0MsV0FBVyxZQUFZLGVBQWUsTUFBTSxPQUFPLFFBQVEsU0FBUyxpQ0FBaUMsU0FBUyxDQUFDIiwiZmlsZSI6InJlYWN0LXJlZHV4LXRvYXN0ci5taW4uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmFuaW1hdGVke2FuaW1hdGlvbi1kdXJhdGlvbjoxczthbmltYXRpb24tZmlsbC1tb2RlOmJvdGh9LmFuaW1hdGVkLmJvdW5jZUlue2FuaW1hdGlvbi1kdXJhdGlvbjouN3N9LmFuaW1hdGVkLmJvdW5jZU91dHthbmltYXRpb24tZHVyYXRpb246LjVzfS5hbmltYXRlZC5ib3VuY2VJbnthbmltYXRpb24tbmFtZTpib3VuY2VJbn0uYW5pbWF0ZWQuYm91bmNlT3V0e2FuaW1hdGlvbi1uYW1lOmJvdW5jZU91dH0uYW5pbWF0ZWQuZmFkZUlue2FuaW1hdGlvbi1uYW1lOmZhZGVJbjthbmltYXRpb24tZHVyYXRpb246LjdzfS5hbmltYXRlZC5mYWRlT3V0e2FuaW1hdGlvbi1uYW1lOmZhZGVPdXQ7YW5pbWF0aW9uLWR1cmF0aW9uOi4zc30uYW5pbWF0ZWQuYm91bmNlSW5Eb3due2FuaW1hdGlvbi1uYW1lOmJvdW5jZUluRG93bn0uYW5pbWF0ZWQuYm91bmNlT3V0VXB7YW5pbWF0aW9uLW5hbWU6Ym91bmNlT3V0VXB9QGtleWZyYW1lcyBib3VuY2VJbntmcm9tLDIwJSw0MCUsNjAlLDgwJSx0b3thbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOmN1YmljLWJlemllcigwLjIxNSwgMC42MSwgMC4zNTUsIDEpfTAle29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGUzZCgwLjMsIDAuMywgMC4zKX0yMCV7dHJhbnNmb3JtOnNjYWxlM2QoMS4xLCAxLjEsIDEuMSl9NDAle3RyYW5zZm9ybTpzY2FsZTNkKDAuOSwgMC45LCAwLjkpfTYwJXtvcGFjaXR5OjE7dHJhbnNmb3JtOnNjYWxlM2QoMS4wMywgMS4wMywgMS4wMyl9ODAle3RyYW5zZm9ybTpzY2FsZTNkKDAuOTcsIDAuOTcsIDAuOTcpfXRve29wYWNpdHk6MTt0cmFuc2Zvcm06c2NhbGUzZCgxLCAxLCAxKX19QGtleWZyYW1lcyBib3VuY2VPdXR7MjAle3RyYW5zZm9ybTpzY2FsZTNkKDAuOSwgMC45LCAwLjkpfTUwJSw1NSV7b3BhY2l0eToxO3RyYW5zZm9ybTpzY2FsZTNkKDEuMSwgMS4xLCAxLjEpfXRve29wYWNpdHk6MDt0cmFuc2Zvcm06c2NhbGUzZCgwLjMsIDAuMywgMC4zKX19QGtleWZyYW1lcyBmYWRlSW57ZnJvbXtvcGFjaXR5OjB9dG97b3BhY2l0eToxfX1Aa2V5ZnJhbWVzIGZhZGVPdXR7ZnJvbXtvcGFjaXR5OjF9dG97b3BhY2l0eTowfX1Aa2V5ZnJhbWVzIGJvdW5jZUluRG93bntmcm9tLDYwJSw3NSUsOTAlLHRve2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246Y3ViaWMtYmV6aWVyKDAuMjE1LCAwLjYxLCAwLjM1NSwgMSl9MCV7b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAtMzAwMHB4LCAwKX02MCV7b3BhY2l0eToxO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAyNXB4LCAwKX03NSV7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIC0xMHB4LCAwKX05MCV7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIDVweCwgMCl9dG97LXdlYmtpdC10cmFuc2Zvcm06bm9uZTt0cmFuc2Zvcm06bm9uZX19QGtleWZyYW1lcyBib3VuY2VPdXRVcHsyMCV7dHJhbnNmb3JtOnRyYW5zbGF0ZTNkKDAsIC0xMHB4LCAwKX00MCUsNDUle29wYWNpdHk6MTt0cmFuc2Zvcm06dHJhbnNsYXRlM2QoMCwgMjBweCwgMCl9dG97b3BhY2l0eTowO3RyYW5zZm9ybTp0cmFuc2xhdGUzZCgwLCAtMjAwMHB4LCAwKX19LmNvbmZpcm0taG9sZGVye3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7cG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDowO3otaW5kZXg6OTk5OTk5OTl9LmNvbmZpcm0taG9sZGVyIC5zaGFkb3d7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoNTAsNTgsNjgsMC44KX0uY29uZmlybS1ob2xkZXIgLmNvbmZpcm17d2lkdGg6MzIwcHg7YmFja2dyb3VuZC1jb2xvcjp3aGl0ZTtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4Ojk7dG9wOjIwJTtsZWZ0OjUwJTttYXJnaW4tbGVmdDotMTYwcHg7Ym94LXNoYWRvdzozcHggM3B4IDIwcHggIzMzMztib3JkZXItcmFkaXVzOjRweDtvdmVyZmxvdzpoaWRkZW59LmNvbmZpcm0taG9sZGVyIC5jb25maXJtIC5tZXNzYWdle3dpZHRoOjEwMCU7cGFkZGluZzo1JTttaW4taGVpZ2h0OjUwcHg7Zm9udC1zaXplOjFlbTtiYWNrZ3JvdW5kLWNvbG9yOndoaXRlO3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtZmFtaWx5OidvcGVuLXNhbnNjb25kZW5zZWQtbGlnaHQnLCBzYW5zLXNlcmlmO2NsZWFyOmJvdGh9LmNvbmZpcm0taG9sZGVyIC5jb25maXJtIGJ1dHRvbnt3aWR0aDo1MCU7aGVpZ2h0OjUwcHg7dGV4dC10cmFuc2Zvcm06Y2FwaXRhbGl6ZTtib3JkZXI6bm9uZTtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50O3BhZGRpbmc6MDttYXJnaW46MDtmbG9hdDpsZWZ0O2JvcmRlci10b3A6MXB4IHNvbGlkICNmMGYwZjA7Zm9udC1zaXplOjE0cHg7b3ZlcmZsb3c6aGlkZGVuO2N1cnNvcjpwb2ludGVyfS5jb25maXJtLWhvbGRlciAuY29uZmlybSBidXR0b246aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZjVmNWY1fS5jb25maXJtLWhvbGRlciAuY29uZmlybSBidXR0b24ub2stYnRuOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiM2MGJiNzE7Y29sb3I6d2hpdGV9LmNvbmZpcm0taG9sZGVyIC5jb25maXJtIGJ1dHRvbi5jYW5jZWwtYnRuOmFjdGl2ZXtiYWNrZ3JvdW5kLWNvbG9yOiNkYjZhNjQ7Y29sb3I6d2hpdGV9LmNvbmZpcm0taG9sZGVyIC5jb25maXJtIGJ1dHRvbi5mdWxsLXdpZHRoe3dpZHRoOjEwMCV9LmNvbmZpcm0taG9sZGVyIC5jb25maXJtIGJ1dHRvbjpmb2N1c3tvdXRsaW5lOm5vbmV9Ym9keS50b2FzdHItY29uZmlybS1hY3RpdmV7b3ZlcmZsb3c6aGlkZGVufS5yZWR1eC10b2FzdHIgKiwucmVkdXgtdG9hc3RyICo6YmVmb3JlLC5yZWR1eC10b2FzdHIgKjphZnRlcntib3gtc2l6aW5nOmJvcmRlci1ib3h9LnJlZHV4LXRvYXN0ciAudG9wLWxlZnQsLnJlZHV4LXRvYXN0ciAudG9wLXJpZ2h0LC5yZWR1eC10b2FzdHIgLnRvcC1jZW50ZXIsLnJlZHV4LXRvYXN0ciAuYm90dG9tLWxlZnQsLnJlZHV4LXRvYXN0ciAuYm90dG9tLXJpZ2h0LC5yZWR1eC10b2FzdHIgLmJvdHRvbS1jZW50ZXJ7d2lkdGg6MzUwcHg7cG9zaXRpb246Zml4ZWQ7ei1pbmRleDo5OTk5OTk5OTtwYWRkaW5nOjAgMTBweH0ucmVkdXgtdG9hc3RyIC50b3AtbGVmdCwucmVkdXgtdG9hc3RyIC50b3AtcmlnaHQsLnJlZHV4LXRvYXN0ciAudG9wLWNlbnRlcnt0b3A6MH0ucmVkdXgtdG9hc3RyIC50b3AtcmlnaHQsLnJlZHV4LXRvYXN0ciAuYm90dG9tLXJpZ2h0e3JpZ2h0OjB9LnJlZHV4LXRvYXN0ciAuYm90dG9tLWxlZnQsLnJlZHV4LXRvYXN0ciAuYm90dG9tLXJpZ2h0LC5yZWR1eC10b2FzdHIgLmJvdHRvbS1jZW50ZXJ7Ym90dG9tOjB9LnJlZHV4LXRvYXN0ciAudG9wLWxlZnQsLnJlZHV4LXRvYXN0ciAuYm90dG9tLWxlZnR7bGVmdDowfS5yZWR1eC10b2FzdHIgLnRvcC1jZW50ZXIsLnJlZHV4LXRvYXN0ciAuYm90dG9tLWNlbnRlcntsZWZ0OjUwJTttYXJnaW4tbGVmdDotMTc1cHh9QG1lZGlhIChtYXgtd2lkdGg6IDMyMHB4KXsucmVkdXgtdG9hc3RyIC50b3AtbGVmdCwucmVkdXgtdG9hc3RyIC50b3AtcmlnaHQsLnJlZHV4LXRvYXN0ciAudG9wLWNlbnRlciwucmVkdXgtdG9hc3RyIC5ib3R0b20tbGVmdCwucmVkdXgtdG9hc3RyIC5ib3R0b20tcmlnaHQsLnJlZHV4LXRvYXN0ciAuYm90dG9tLWNlbnRlcnt3aWR0aDozMjBweH0ucmVkdXgtdG9hc3RyIC50b3AtY2VudGVyLC5yZWR1eC10b2FzdHIgLmJvdHRvbS1jZW50ZXJ7bWFyZ2luLWxlZnQ6LTE2MHB4fX0ucmVkdXgtdG9hc3RyIC50b2FzdHJ7YmFja2dyb3VuZC1jb2xvcjojZmNmY2ZjO3dpZHRoOjEwMCU7bWluLWhlaWdodDo3MHB4O292ZXJmbG93OmhpZGRlbjttYXJnaW46MTBweCAwO2JvcmRlci1yYWRpdXM6NHB4O3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6Mjtjb2xvcjojMzMzO29wYWNpdHk6Ljk0O2JveC1zaGFkb3c6MnB4IDJweCAxMHB4IHJnYmEoMCwwLDAsMC40KX0ucmVkdXgtdG9hc3RyIC50b2FzdHI6aG92ZXI6bm90KC5tZXNzYWdlKXtib3gtc2hhZG93OjBweCAwcHggMTBweCByZ2JhKDAsMCwwLDAuNik7b3BhY2l0eToxfS5yZWR1eC10b2FzdHIgLnRvYXN0ciAudG9hc3RyLXN0YXR1c3t3aWR0aDoxMDAlO2hlaWdodDo1cHh9LnJlZHV4LXRvYXN0ciAudG9hc3RyIC50b2FzdHItc3RhdHVzLnN1Y2Nlc3N7YmFja2dyb3VuZC1jb2xvcjojNjBiYjcxfS5yZWR1eC10b2FzdHIgLnRvYXN0ciAudG9hc3RyLXN0YXR1cy53YXJuaW5ne2JhY2tncm91bmQtY29sb3I6I2Y3YTMzNn0ucmVkdXgtdG9hc3RyIC50b2FzdHIgLnRvYXN0ci1zdGF0dXMuaW5mb3tiYWNrZ3JvdW5kLWNvbG9yOiM1OGFiYzN9LnJlZHV4LXRvYXN0ciAudG9hc3RyIC50b2FzdHItc3RhdHVzLmVycm9ye2JhY2tncm91bmQtY29sb3I6I2RiNmE2NH0ucmVkdXgtdG9hc3RyIC50b2FzdHIgLnRvYXN0ci1sZWZ0LWNvbnRhaW5lciwucmVkdXgtdG9hc3RyIC50b2FzdHIgLnRvYXN0ci1yaWdodC1jb250YWluZXJ7ZmxvYXQ6bGVmdDt0ZXh0LWFsaWduOmNlbnRlcjtvdmVyZmxvdzpoaWRkZW59LnJlZHV4LXRvYXN0ciAudG9hc3RyIC50b2FzdHItbGVmdC1jb250YWluZXJ7d2lkdGg6ODBweDt0b3A6MDtsZWZ0OjA7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjB9LnJlZHV4LXRvYXN0ciAudG9hc3RyIC50b2FzdHItbGVmdC1jb250YWluZXIgLmhvbGRlcnt3aWR0aDo3MHB4O2hlaWdodDo3MHB4O3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bWFyZ2luLXRvcDotMzVweDtsZWZ0OjVweDtsaW5lLWhlaWdodDo2MHB4fS5yZWR1eC10b2FzdHIgLnRvYXN0ciAudG9hc3RyLWxlZnQtY29udGFpbmVyIC50b2FzdHItaWNvbntmaWxsOndoaXRlO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW4tdG9wOjVweH0ucmVkdXgtdG9hc3RyIC50b2FzdHIgLnRvYXN0ci1taWRkbGUtY29udGFpbmVye3dpZHRoOjY1JTttYXJnaW4tbGVmdDo4MHB4O3Bvc2l0aW9uOnJlbGF0aXZlO2Zsb2F0OmxlZnQ7Zm9udC1mYW1pbHk6QXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiwgc2Fucy1zZXJpZjtmb250LXNpemU6MWVtO3RleHQtYWxpZ246bGVmdDtwYWRkaW5nOjEwcHggNXB4fS5yZWR1eC10b2FzdHIgLnRvYXN0ciAudG9hc3RyLW1pZGRsZS1jb250YWluZXIgLnRpdGxle2ZvbnQtc2l6ZToxLjFlbTtmb250LXdlaWdodDpib2xkO21hcmdpbi1ib3R0b206NXB4fS5yZWR1eC10b2FzdHIgLnRvYXN0ciAudG9hc3RyLXJpZ2h0LWNvbnRhaW5lcnt3aWR0aDoxMCV9LnJlZHV4LXRvYXN0ciAudG9hc3RyIC5jbG9zZS10b2FzdHJ7d2lkdGg6MTAlO2hlaWdodDoxMDAlO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3JpZ2h0OjA7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudDtmb250LXNpemU6MjJweDtib3JkZXI6bm9uZTtvdXRsaW5lOm5vbmU7b3BhY2l0eTowLjU7Y3Vyc29yOnBvaW50ZXI7Zm9udC1mYW1pbHk6XCJIZWx2ZXRpY2EgTmV1ZVwiLCBIZWx2ZXRpY2EsIEFyaWFsIHNhbnMtc2VyaWZ9LnJlZHV4LXRvYXN0ciAudG9hc3RyIC5jbG9zZS10b2FzdHI6aG92ZXJ7b3BhY2l0eToxfS5yZWR1eC10b2FzdHIgLnRvYXN0ciAuY2xvc2UtdG9hc3RyOmZvY3Vze291dGxpbmU6bm9uZX0ucmVkdXgtdG9hc3RyIC50b2FzdHIuaW5mbywucmVkdXgtdG9hc3RyIC50b2FzdHIuc3VjY2VzcywucmVkdXgtdG9hc3RyIC50b2FzdHIud2FybmluZywucmVkdXgtdG9hc3RyIC50b2FzdHIuZXJyb3J7Y29sb3I6d2hpdGV9LnJlZHV4LXRvYXN0ciAudG9hc3RyLmluZm97YmFja2dyb3VuZC1jb2xvcjojNThhYmMzfS5yZWR1eC10b2FzdHIgLnRvYXN0ci5pbmZvIC50b2FzdHItcHJvZ3Jlc3NiYXJ7YmFja2dyb3VuZC1jb2xvcjojMzc4Mjk4fS5yZWR1eC10b2FzdHIgLnRvYXN0ci5zdWNjZXNze2JhY2tncm91bmQtY29sb3I6IzYwYmI3MX0ucmVkdXgtdG9hc3RyIC50b2FzdHIuc3VjY2VzcyAudG9hc3RyLXByb2dyZXNzYmFye2JhY2tncm91bmQtY29sb3I6IzNlOTE0ZH0ucmVkdXgtdG9hc3RyIC50b2FzdHIud2FybmluZ3tiYWNrZ3JvdW5kLWNvbG9yOiNmN2EzMzZ9LnJlZHV4LXRvYXN0ciAudG9hc3RyLndhcm5pbmcgLnRvYXN0ci1wcm9ncmVzc2JhcntiYWNrZ3JvdW5kLWNvbG9yOiNkODdlMDl9LnJlZHV4LXRvYXN0ciAudG9hc3RyLmVycm9ye2JhY2tncm91bmQtY29sb3I6I2RiNmE2NH0ucmVkdXgtdG9hc3RyIC50b2FzdHIuZXJyb3IgLnRvYXN0ci1wcm9ncmVzc2JhcntiYWNrZ3JvdW5kLWNvbG9yOiNjNTM1MmV9LnJlZHV4LXRvYXN0ciAudG9hc3RyLmxpZ2h0IC50b2FzdHItcHJvZ3Jlc3NiYXJ7YmFja2dyb3VuZC1jb2xvcjojY2NjfS5yZWR1eC10b2FzdHIgLnRvYXN0ci5saWdodCAudG9hc3RyLWljb257ZmlsbDojMzMzICFpbXBvcnRhbnR9LnJlZHV4LXRvYXN0ciAudG9hc3RyLm1lc3NhZ2V7b3BhY2l0eToxO2JvcmRlcjoxcHggc29saWQgI2RiZGJkYn0ucmVkdXgtdG9hc3RyIC50b2FzdHIubWVzc2FnZSAudGl0bGV7d2lkdGg6OTAlO2hlaWdodDo1MHB4O3RleHQtYWxpZ246Y2VudGVyO292ZXJmbG93OmhpZGRlbjtmb250LXNpemU6MS4yZW07dGV4dC1vdmVyZmxvdzplbGxpcHNpcztvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6bm93cmFwO2xpbmUtaGVpZ2h0OjUwcHg7cGFkZGluZzowIDIwcHh9LnJlZHV4LXRvYXN0ciAudG9hc3RyLm1lc3NhZ2UgLm1lc3NhZ2V7d2lkdGg6MTAwJTttYXgtaGVpZ2h0OjQwMHB4O292ZXJmbG93OmhpZGRlbjtvdmVyZmxvdy15OmF1dG87Ym9yZGVyLXRvcDoxcHggc29saWQgI2YxZjFmMTtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZjFmMWYxO2JhY2tncm91bmQtY29sb3I6d2hpdGU7cGFkZGluZzoxNXB4O2ZvbnQtc2l6ZToxLjFlbTttYXJnaW4tYm90dG9tOjIwcHh9LnJlZHV4LXRvYXN0ciAudG9hc3RyLm1lc3NhZ2UgLm1lc3NhZ2UgaW1ne2Rpc3BsYXk6YmxvY2s7bWFyZ2luOjEwcHggYXV0bzttYXgtd2lkdGg6MTAwJX0ucmVkdXgtdG9hc3RyIC50b2FzdHIubWVzc2FnZSAuY2xvc2UtdG9hc3Rye2hlaWdodDo1MHB4fS5yZWR1eC10b2FzdHIgLnRvYXN0ciAudG9hc3RyLXByb2dyZXNzLWNvbnRhaW5lcntoZWlnaHQ6NXB4O21hcmdpbjowIC0yMHB4IC0yMHB4IC02MHB4O3Bvc2l0aW9uOmFic29sdXRlO2JvdHRvbToyMHB4O3dpZHRoOjEwMCV9LnJlZHV4LXRvYXN0ciAudG9hc3RyIC50b2FzdHItcHJvZ3Jlc3MtY29udGFpbmVyIC50b2FzdHItcHJvZ3Jlc3NiYXJ7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjAgMCAwIDRweDstbW96LWJvcmRlci1yYWRpdXM6MCAwIDAgNHB4O2JvcmRlci1yYWRpdXM6MCAwIDAgNHB4O2hlaWdodDoxMDAlfS5yZWR1eC10b2FzdHIgLnRvYXN0ci1hdHRlbnRpb257d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtwb3NpdGlvbjpmaXhlZDt0b3A6MDtsZWZ0OjA7cmlnaHQ6MDtib3R0b206MDtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsMC40KTt6LWluZGV4OjF9XG4iXX0= */
\ No newline at end of file diff --git a/frontend/src/reducers.js b/frontend/src/reducers.js index 97c5259e..85f7e3c1 100644 --- a/frontend/src/reducers.js +++ b/frontend/src/reducers.js @@ -1,5 +1,4 @@ // @flow -import { reducer as toastrReducer } from 'react-redux-toastr'; import { routerReducer } from 'react-router-redux'; import { combineReducers } from 'redux-immutable'; import { gamesReducer } from './redux/games'; @@ -10,6 +9,5 @@ export function createReducer() { games: gamesReducer, players: playersReducer, routing: routerReducer, - toastr: toastrReducer, }); } diff --git a/frontend/src/sagas/errors.js b/frontend/src/sagas/errors.js index 84bd044b..15287645 100644 --- a/frontend/src/sagas/errors.js +++ b/frontend/src/sagas/errors.js @@ -1,11 +1,13 @@ // @flow -import { toastr } from 'react-redux-toastr'; +import { Toaster } from '@blueprintjs/core'; import type { Channel, SagaIterator } from 'redux-saga'; import { eventChannel } from 'redux-saga'; import { apply, cancelled, take } from 'redux-saga/effects'; import type { ApiError } from '../api/model'; import type { SevenWondersSession } from '../api/sevenWondersApi'; +const ErrorToaster = Toaster.create(); + export function* errorHandlingSaga(session: SevenWondersSession): SagaIterator { const errorChannel: Channel = yield eventChannel(session.watchErrors()); try { @@ -24,7 +26,7 @@ export function* errorHandlingSaga(session: SevenWondersSession): SagaIterator { function* handleOneError(err: ApiError): * { console.error('Error received on web socket channel', err); const msg = buildMsg(err); - yield apply(toastr, toastr.error, [msg, { icon: 'error' }]); + yield apply(ErrorToaster, ErrorToaster.show, [{ intent: 'danger', icon: 'error', message: msg }]); } function buildMsg(err: ApiError): string { |