Skip to content

Instantly share code, notes, and snippets.

@alukos
Created August 20, 2018 07:30
Show Gist options
  • Save alukos/15cff6f437ce2bcdaaa18b4f9458e1dd to your computer and use it in GitHub Desktop.
Save alukos/15cff6f437ce2bcdaaa18b4f9458e1dd to your computer and use it in GitHub Desktop.
LE store/pages.js:movePage
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);
}
});
},
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment