movePage({ getters, commit }, { name, pageNum, direction }) { return new Promise(async (resolve, reject) => { try { if (pageNum == 1 && direction == 'left') { reject('Error cant move first page to the left'); } const totalPages = getters.pageCount(name); if (pageNum >= totalPages && direction == 'right') { reject('Error cant move last page to the right'); } const newPageNum = direction == 'left' ? pageNum - 1 : pageNum + 1; const db = fb.firestore(); const pageUid = getters.pageItem(name, pageNum).uid; const newPageUid = getters.pageItem(name, newPageNum).uid; const pageRef = db.doc(`pages/${pageUid}`); const newPageRef = db.doc(`pages/${newPageUid}`); await db.runTransaction(async transaction => { const pageDoc = await transaction.get(pageRef); const newPageDoc = await transaction.get(newPageRef); const position = pageDoc.get('position'); const newPosition = newPageDoc.get('position'); await transaction.update(pageRef, { position: newPosition }); await transaction.update(newPageRef, { position }); }); commit('exchangePosition', { name, pageNum, newPageNum }); resolve(newPageNum); } catch (error) { console.error('Error move page: ', error); reject(error); } }); },