From 021638d3c21f42b0f315333f64c3c2ca8966e2cc Mon Sep 17 00:00:00 2001
From: Mateja <mail@matejamaric.com>
Date: Tue, 27 Jul 2021 15:52:03 +0200
Subject: Show modal and clear cart on successfully purchase.

Also show modal on failures...
---
 client/src/views/Checkout.vue | 35 +++++++++++++++++++++++++++++++----
 1 file changed, 31 insertions(+), 4 deletions(-)

(limited to 'client/src/views/Checkout.vue')

diff --git a/client/src/views/Checkout.vue b/client/src/views/Checkout.vue
index a009b94..fc8bdd0 100644
--- a/client/src/views/Checkout.vue
+++ b/client/src/views/Checkout.vue
@@ -20,17 +20,32 @@
       </div>
     </div>
   </div>
+  <Modal :title="modalTitle" v-if="showModal" @close="showModal = false">
+    <p v-text="modalText"></p>
+  </Modal>
 </template>
 
 <script>
+import Modal from '@/components/Modal.vue';
+
 export default {
   name: 'Checkout',
+  components: {
+    Modal
+  },
   mounted() {
     const script = document.createElement("script");
     script.src = `https://www.paypal.com/sdk/js?client-id=${process.env.VUE_APP_PAYPAL_CLIENT_ID}&disable-funding=credit`;
     script.addEventListener("load", this.paypalLoaded);
     document.body.appendChild(script);
   },
+  data() {
+    return {
+      showModal: false,
+      modalTitle: '',
+      modalText: ''
+    };
+  },
   computed: {
     cart() {
       return this.$store.getters.getCart;
@@ -48,6 +63,8 @@ export default {
     },
     paypalLoaded() {
       const dispatch = this.$store.dispatch;
+      const commit = this.$store.commit;
+      const thisVue = this;
 
       window.paypal.Buttons({
         async createOrder() {
@@ -55,12 +72,22 @@ export default {
         },
         async onApprove(data) {
           const success = await dispatch('captureOrder', data.orderID);
-          if (success === true)
-            console.log('Successfully paid!');
-          else
-            console.log('Capturing order failed!');
+          if (success === true) {
+            thisVue.modalTitle = 'Success!';
+            thisVue.modalText = 'Your purchase should arrive within 7 days!';
+            thisVue.showModal = true;
+            commit('clearCart');
+          }
+          else {
+            thisVue.modalTitle = 'Failure!';
+            thisVue.modalText = 'Your order was not successfully paid! Check your funds or try again later.';
+            thisVue.showModal = true;
+          }
         },
         onError(err) {
+          thisVue.modalTitle = 'Error!';
+          thisVue.modalText = 'Error occurred! Please try again later.';
+          thisVue.showModal = true;
           console.error(err);
         }
       }).render(this.$refs.paypal);
-- 
cgit v1.2.3

