diff --git a/js/components/piece_list.js b/js/components/piece_list.js
index 9208df92..4a96cbd8 100644
--- a/js/components/piece_list.js
+++ b/js/components/piece_list.js
@@ -189,14 +189,13 @@ let PieceList = React.createClass({
this.state.pieceList
.forEach((piece) => {
// but only if they're actually open
- const isEditionListOpenForPiece = this.state.isEditionListOpenForPieceId[piece.id];
-
- if (isEditionListOpenForPiece && isEditionListOpenForPiece.show) {
+ if(this.state.isEditionListOpenForPieceId[piece.id].show) {
EditionListActions.refreshEditionList({
pieceId: piece.id,
filterBy
});
}
+
});
});
diff --git a/js/components/whitelabel/wallet/components/ikonotv/ikonotv_register_piece.js b/js/components/whitelabel/wallet/components/ikonotv/ikonotv_register_piece.js
index c5a8b8ec..7656d224 100644
--- a/js/components/whitelabel/wallet/components/ikonotv/ikonotv_register_piece.js
+++ b/js/components/whitelabel/wallet/components/ikonotv/ikonotv_register_piece.js
@@ -16,6 +16,9 @@ import UserActions from '../../../../../actions/user_actions';
import PieceStore from '../../../../../stores/piece_store';
import PieceActions from '../../../../../actions/piece_actions';
+import WhitelabelActions from '../../../../../actions/whitelabel_actions';
+import WhitelabelStore from '../../../../../stores/whitelabel_store';
+
import GlobalNotificationModel from '../../../../../models/global_notification_model';
import GlobalNotificationActions from '../../../../../actions/global_notification_actions';
@@ -47,6 +50,7 @@ let IkonotvRegisterPiece = React.createClass({
UserStore.getState(),
PieceListStore.getState(),
PieceStore.getState(),
+ WhitelabelStore.getState(),
{
step: 0,
pageExitWarning: getLangText("If you leave this form now, your work will not be loaned to Ikono TV.")
@@ -57,7 +61,9 @@ let IkonotvRegisterPiece = React.createClass({
PieceListStore.listen(this.onChange);
UserStore.listen(this.onChange);
PieceStore.listen(this.onChange);
+ WhitelabelStore.listen(this.onChange);
UserActions.fetchCurrentUser();
+ WhitelabelActions.fetchWhitelabel();
// Before we load the new piece, we reset the piece store to delete old data that we do
// not want to display to the user.
@@ -81,6 +87,7 @@ let IkonotvRegisterPiece = React.createClass({
PieceListStore.unlisten(this.onChange);
UserStore.unlisten(this.onChange);
PieceStore.unlisten(this.onChange);
+ WhitelabelStore.listen(this.onChange);
},
onChange(state) {
@@ -152,7 +159,8 @@ let IkonotvRegisterPiece = React.createClass({
canSubmit() {
let currentUser = this.state.currentUser;
- return currentUser && currentUser.acl && currentUser.acl.acl_wallet_submit;
+ let whitelabel = this.state.whitelabel;
+ return currentUser && currentUser.acl && currentUser.acl.acl_wallet_submit && whitelabel && whitelabel.user;
},
getSlideArtistDetails() {
@@ -191,20 +199,22 @@ let IkonotvRegisterPiece = React.createClass({
getSlideLoan() {
if (this.canSubmit()) {
+ const {piece, whitelabel} = this.state;
let today = new Moment();
let endDate = new Moment();
endDate.add(2, 'years');
+
return (
- {getLangText('CONSIGN TO %s', whitelabel.name.toUpperCase())}
+ {getLangText('CONSIGN TO %s', whitelabelName.toUpperCase())}
);
const consignForm = (
+ title={getLangText('Consign artwork to %s', whitelabelName)}>
{consignForm}
diff --git a/js/components/whitelabel/wallet/components/market/market_piece_list.js b/js/components/whitelabel/wallet/components/market/market_piece_list.js
index 8ffab5a5..647a84be 100644
--- a/js/components/whitelabel/wallet/components/market/market_piece_list.js
+++ b/js/components/whitelabel/wallet/components/market/market_piece_list.js
@@ -49,19 +49,25 @@ let MarketPieceList = React.createClass({
},
render() {
- const { currentUser, whitelabel } = this.state;
+ const {
+ currentUser: { email: userEmail },
+ whitelabel: {
+ name: whitelabelName = 'Market',
+ user: whitelabelAdminEmail
+ } } = this.state;
+
let filterParams = null;
let canLoadPieceList = false;
- if (currentUser.email && whitelabel.user) {
+ if (userEmail && whitelabelAdminEmail) {
canLoadPieceList = true;
- const isUserAdmin = currentUser.email === whitelabel.user;
+ const isUserAdmin = userEmail === whitelabelAdminEmail;
filterParams = [{
label: getLangText('Show works I can'),
items: [{
key: isUserAdmin ? 'acl_transfer' : 'acl_consign',
- label: getLangText(isUserAdmin ? 'transfer' : 'consign to %s', whitelabel.name),
+ label: getLangText(isUserAdmin ? 'transfer' : 'consign to %s', whitelabelName),
defaultValue: true
}]
}];
diff --git a/js/components/whitelabel/wallet/components/market/market_register_piece.js b/js/components/whitelabel/wallet/components/market/market_register_piece.js
index 3572fd6d..e02df80c 100644
--- a/js/components/whitelabel/wallet/components/market/market_register_piece.js
+++ b/js/components/whitelabel/wallet/components/market/market_register_piece.js
@@ -11,11 +11,13 @@ import MarketAdditionalDataForm from './market_forms/market_additional_data_form
import Property from '../../../../ascribe_forms/property';
import RegisterPieceForm from '../../../../ascribe_forms/form_register_piece';
-import UserStore from '../../../../../stores/user_store';
-import UserActions from '../../../../../actions/user_actions';
import PieceActions from '../../../../../actions/piece_actions';
import PieceListStore from '../../../../../stores/piece_list_store';
import PieceListActions from '../../../../../actions/piece_list_actions';
+import UserStore from '../../../../../stores/user_store';
+import UserActions from '../../../../../actions/user_actions';
+import WhitelabelActions from '../../../../../actions/whitelabel_actions';
+import WhitelabelStore from '../../../../../stores/whitelabel_store';
import SlidesContainer from '../../../../ascribe_slides_container/slides_container';
@@ -32,8 +34,9 @@ let MarketRegisterPiece = React.createClass({
getInitialState(){
return mergeOptions(
- UserStore.getState(),
PieceListStore.getState(),
+ UserStore.getState(),
+ WhitelabelStore.getState(),
{
step: 0
});
@@ -42,7 +45,10 @@ let MarketRegisterPiece = React.createClass({
componentDidMount() {
PieceListStore.listen(this.onChange);
UserStore.listen(this.onChange);
+ WhitelabelStore.listen(this.onChange);
+
UserActions.fetchCurrentUser();
+ WhitelabelActions.fetchWhitelabel();
// Reset the piece store to make sure that we don't display old data
// if the user repeatedly registers works
@@ -52,6 +58,7 @@ let MarketRegisterPiece = React.createClass({
componentWillUnmount() {
PieceListStore.unlisten(this.onChange);
UserStore.unlisten(this.onChange);
+ WhitelabelStore.unlisten(this.onChange);
},
onChange(state) {
@@ -107,6 +114,13 @@ let MarketRegisterPiece = React.createClass({
},
render() {
+ const {
+ isFineUploaderActive,
+ step,
+ whitelabel: {
+ name: whitelabelName = 'Market'
+ } } = this.state;
+
setDocumentTitle(getLangText('Register a new piece'));
return (
@@ -122,9 +136,9 @@ let MarketRegisterPiece = React.createClass({
0}
+ disabled={step > 0}
enableLocalHashing={false}
- headerMessage={getLangText('Consign to Market')}
+ headerMessage={getLangText('Consign to %s', whitelabelName)}
submitMessage={getLangText('Proceed to additional details')}
isFineUploaderActive={true}
handleSuccess={this.handleRegisterSuccess}
diff --git a/js/stores/edition_list_store.js b/js/stores/edition_list_store.js
index 6b4d64f9..107f9af4 100644
--- a/js/stores/edition_list_store.js
+++ b/js/stores/edition_list_store.js
@@ -32,7 +32,7 @@ class EditionListStore {
// page
let storeEditionIndex = (page - 1) * pageSize + i;
let editionsForPieces = this.editionList[pieceId];
-
+
// if edition already exists, just merge
if(editionsForPieces[storeEditionIndex]) {
editionsForPieces[storeEditionIndex] = React.addons.update(editionsForPieces[storeEditionIndex], {$merge: editionListOfPiece[i]});
@@ -60,29 +60,46 @@ class EditionListStore {
* We often just have to refresh the edition list for a certain pieceId,
* this method provides exactly that functionality without any side effects
*/
- onRefreshEditionList({pieceId, filterBy = this.editionList[pieceId].filterBy}) {
- const pieceEditionList = this.editionList[pieceId];
-
+ onRefreshEditionList({pieceId, filterBy = {}}) {
// It may happen that the user enters the site logged in already
// through /editions
// If he then tries to delete a piece/edition and this method is called,
// we'll not be able to refresh his edition list since its not yet there.
// Therefore we can just return, since there is no data to be refreshed
- if (!pieceEditionList) {
+ if(!this.editionList[pieceId]) {
return;
}
+ let prevEditionListLength = this.editionList[pieceId].length;
+ let prevEditionListPage = this.editionList[pieceId].page;
+ let prevEditionListPageSize = this.editionList[pieceId].pageSize;
+
+ // we can also refresh the edition list using filterBy,
+ // if we decide not to do that then the old filter will just be applied.
+ if(filterBy && Object.keys(filterBy).length <= 0) {
+ filterBy = this.editionList[pieceId].filterBy;
+ prevEditionListLength = 10;
+ prevEditionListPage = 1;
+ prevEditionListPageSize = 10;
+ }
+
// to clear an array, david walsh recommends to just set it's length to zero
// http://davidwalsh.name/empty-array
- pieceEditionList.length = 0;
+ this.editionList[pieceId].length = 0;
- // refetch editions from the beginning with the previous settings
- EditionsListActions
- .fetchEditionList(pieceId, 1, pieceEditionList.pageSize,
- pieceEditionList.orderBy,
- pieceEditionList.orderAsc,
- filterBy)
- .catch(console.logGlobal);
+ // refetch editions with adjusted page size
+ EditionsListActions.fetchEditionList(pieceId, 1, prevEditionListLength,
+ this.editionList[pieceId].orderBy,
+ this.editionList[pieceId].orderAsc,
+ filterBy)
+ .then(() => {
+ // reset back to the normal pageSize and page
+ this.editionList[pieceId].page = prevEditionListPage;
+ this.editionList[pieceId].pageSize = prevEditionListPageSize;
+ })
+ .catch((err) => {
+ console.logGlobal(err);
+ });
}
onSelectEdition({pieceId, editionId, toValue}) {