Для добавления данных используется функция:
addCardToMoodboard(moodboard, cardData) {
const {hoc_methods} = this.props;
if(moodboard.localMode){
this.showAuthPopup({
callback: () => {
hoc_methods.saveLocalMoods(moodboard.id).then(payload => {
hoc_methods.closeModal();
const mood = safeGet(payload, 'payload', {});
const data = {...mood, count: mood.blocks.length};
this.addCardToMood(data, cardData);
})
}
})
} else{
return this.addCardToMood(moodboard, cardData);
}
}
Здесь, если пользователь не авторизован, но есть не локальные изменения if(moodboard.localMode), то вызывается модальное окно авторизации.
showAuthPopup(options) {
const {hoc_methods} = this.props;
hoc_methods.showAuthPopup(options);
}
При успешной авторизации вызывается функция сохранения изменений, которая передается в модальное окно внутри callback.
Если пользователь авторизован, вызывается функция this.addCardToMood().
addCardToMood это функция возвращает обещания
addCardToMood(moodboard, cardData){
const {hoc_products, hoc_methods} = this.props;
if (moodboard.count + 1 >= moodboardConstants.MOODBOARD_ITEMS_LIMIT) {
hoc_methods.showMaxElementsInMoodboardPopup(moodboard.id);
return Promise.reject();
}
return hoc_methods.fetchMoodboard(moodboard.id)
.then(() => {
hoc_methods.addNewBlock(moodboard.id);
return hoc_methods.saveMood(moodboard.id)
.then(() => Promise.resolve())
.catch(() => Promise.reject());
}).catch(() => Promise.reject());
}
addCardToMoodboard должна вернуть обещание, но сейчас обещание возвращается только в блоке else. Как вернуть Promise.resolve() после успешной авторизации пользователя в модельном окне?