From 9fcb3ce121cac8ca4a9b243a610011bbe6860abd Mon Sep 17 00:00:00 2001
From: Jeremy Guiselin <jeremy.guiselin@student.ecp.fr>
Date: Mon, 23 Jan 2017 12:18:13 +0100
Subject: [PATCH] first bug fixes (prompt notif ios + style bug)

---
 GoogleService-Info.plist               |  10 +++----
 config.xml                             |   9 +++----
 google-services.json                   |  31 ++++++++++++++++++++++
 scss/pack.scss                         |   9 +++++++
 scss/prediction.scss                   |   2 +-
 www/img/white-chevron.png              | Bin 0 -> 15496 bytes
 www/js/app.js                          |  15 ++++++++---
 www/js/modules/notification/service.js |   5 +++-
 www/js/modules/purchase/service.js     |  20 +-------------
 www/js/modules/toast/service.js        |   8 ++----
 www/js/pages/football/controller.js    |  35 ++++++++++++++++++-------
 www/js/pages/tennis/controller.js      |  31 +++++++++++++++-------
 www/partials/prediction.html           |   2 +-
 www/partials/sport-index.html          |   3 +++
 14 files changed, 120 insertions(+), 60 deletions(-)
 create mode 100644 www/img/white-chevron.png

diff --git a/GoogleService-Info.plist b/GoogleService-Info.plist
index 0294531..13167e0 100644
--- a/GoogleService-Info.plist
+++ b/GoogleService-Info.plist
@@ -7,9 +7,9 @@
 	<key>AD_UNIT_ID_FOR_INTERSTITIAL_TEST</key>
 	<string>ca-app-pub-3940256099942544/4411468910</string>
 	<key>CLIENT_ID</key>
-	<string>1006878207346-dkva1hprctic3027kn62n7d4tjv42au8.apps.googleusercontent.com</string>
+	<string>1006878207346-9v61fspphkk57q334mq6td4p9i55dipv.apps.googleusercontent.com</string>
 	<key>REVERSED_CLIENT_ID</key>
-	<string>com.googleusercontent.apps.1006878207346-dkva1hprctic3027kn62n7d4tjv42au8</string>
+	<string>com.googleusercontent.apps.1006878207346-9v61fspphkk57q334mq6td4p9i55dipv</string>
 	<key>API_KEY</key>
 	<string>AIzaSyBtDoADGTSBPirvlHEeQTz2APlMfwq3aJA</string>
 	<key>GCM_SENDER_ID</key>
@@ -17,7 +17,7 @@
 	<key>PLIST_VERSION</key>
 	<string>1</string>
 	<key>BUNDLE_ID</key>
-	<string>com.jeremyguiselin.betskills</string>
+	<string>com.dimago.betskills</string>
 	<key>PROJECT_ID</key>
 	<string>betskills-145919</string>
 	<key>STORAGE_BUCKET</key>
@@ -27,13 +27,13 @@
 	<key>IS_ANALYTICS_ENABLED</key>
 	<false/>
 	<key>IS_APPINVITE_ENABLED</key>
-	<false/>
+	<true/>
 	<key>IS_GCM_ENABLED</key>
 	<true/>
 	<key>IS_SIGNIN_ENABLED</key>
 	<true/>
 	<key>GOOGLE_APP_ID</key>
-	<string>1:1006878207346:ios:2de78a74bfdf1959</string>
+	<string>1:1006878207346:ios:9d4e0a7669d0f086</string>
 	<key>DATABASE_URL</key>
 	<string>https://betskills-145919.firebaseio.com</string>
 </dict>
diff --git a/config.xml b/config.xml
index ebd217a..2f610c9 100644
--- a/config.xml
+++ b/config.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<widget id="com.jeremyguiselin.betskills" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
+<widget id="com.dimago.betskills" version="2.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
   <name>Betskills</name>
   <description>
     Betskills app to see predictions of football and tennis games.
@@ -12,7 +12,8 @@
   <preference name="webviewbounce" value="false"/>
   <preference name="UIWebViewBounce" value="false"/>
   <preference name="DisallowOverscroll" value="true"/>
-  <preference name="SplashScreenDelay" value="3000"/>
+  <preference name="SplashScreenDelay" value="5000"/>
+  <preference name="ShowSplashScreenSpinner" value="false" />
   <preference name="android-minSdkVersion" value="16"/>
   <preference name="BackupWebStorage" value="none"/>
   <preference name="SplashScreen" value="screen"/>
@@ -39,8 +40,6 @@
     <variable name="APP_NAME" value="Betskills"/>
   </plugin>
   <platform name="ios">
-    <preference name="FadeSplashScreen" value="false"/>
-    <preference name="FadeSplashScreenDuration" value="1000"/>
     <preference name="iosPersistentFileLocation" value="Library"/>
     <splash height="1136" src="resources/ios/splash/Default-568h@2x~iphone.png" width="640"/>
     <splash height="1334" src="resources/ios/splash/Default-667h.png" width="750"/>
@@ -100,4 +99,4 @@
     <icon src="resources/android/icon/drawable-xxxhdpi-icon.png" density="xxxhdpi"/>
   </platform>
   <icon src="resources/android/icon/drawable-xhdpi-icon.png"/>
-</widget>
\ No newline at end of file
+</widget>
diff --git a/google-services.json b/google-services.json
index b554f0b..c891abd 100644
--- a/google-services.json
+++ b/google-services.json
@@ -36,6 +36,37 @@
           "status": 2
         }
       }
+    },
+    {
+      "client_info": {
+        "mobilesdk_app_id": "1:1006878207346:android:9d4e0a7669d0f086",
+        "android_client_info": {
+          "package_name": "com.dimago.betskills"
+        }
+      },
+      "oauth_client": [
+        {
+          "client_id": "1006878207346-bv3pqbnac3v9rcu4gheef5fgagg03k41.apps.googleusercontent.com",
+          "client_type": 3
+        }
+      ],
+      "api_key": [
+        {
+          "current_key": "AIzaSyAN5KmJEXNd4uKu3TCfhd47bFkYcBvZmRI"
+        }
+      ],
+      "services": {
+        "analytics_service": {
+          "status": 1
+        },
+        "appinvite_service": {
+          "status": 1,
+          "other_platform_oauth_client": []
+        },
+        "ads_service": {
+          "status": 2
+        }
+      }
     }
   ],
   "configuration_version": "1"
diff --git a/scss/pack.scss b/scss/pack.scss
index bcae264..c1436ce 100644
--- a/scss/pack.scss
+++ b/scss/pack.scss
@@ -36,6 +36,15 @@
       align-items: center;
       flex-direction: column;
 
+      .whiteChevron {
+        position: absolute;
+        right: 0;
+
+        img {
+          height: 30px;
+        }
+      }
+
       .title {
         color: $whiteColor;
         font-family: "OspDin";
diff --git a/scss/prediction.scss b/scss/prediction.scss
index 085b00a..52011b3 100644
--- a/scss/prediction.scss
+++ b/scss/prediction.scss
@@ -71,8 +71,8 @@
       text-align: center;
 
       img {
-        width: 70%;
         height: auto;
+        max-height: 65px;
       }
 
       .name {
diff --git a/www/img/white-chevron.png b/www/img/white-chevron.png
new file mode 100644
index 0000000000000000000000000000000000000000..82fc1cee2b9a8670c4351f7dea4ab10447c79fac
GIT binary patch
literal 15496
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%0AKF^vX>
zM(F(DZt;$UFUpM{=H7MIVF!;1sWGvH34EBjNHoCrW}idNz84?#`Rt{RbKkysRnJ<m
zqbzZ|1|w53OUok5sAFZC0ta90yYa*S*vFr-Ofma18($PT8w)6GXlw`ow@$fT41R66
zarE?~A8&r`zFES~baB}oF=dAbLX7h@L2I4wavXWyeNSrk-_wPEw&$7E{&b5M4z3Bj
zvG?bvm1i6p7#hE_wk-PEyY@nd!=J-{eK$_k?|B^Bo0EAq_fLsW9cZw#Sg;s0Q{~CH
z5Hu`os$cM2{!_e+bZzG6*|zn~`km4HRo2`q`zP{F#i8NAHzucx-=2l(=n4GaP@kUj
z@WW}@{i}b3UDNpQYWOm|_2R?#6F-A?{sb}EWyG$E?K-O_Ab;Rr*NT@%3vJAzbEU5r
zS7?3ND%ke#>#^5SeGH6D-JBe*-GQ@Kgg0`y&6laR|D(4!y)^5?tsCFt`yIaQx4OGO
zS6JafN5l5>QkhF~->3^DKKKycR1+q1e{;O(?lpe`*8I9#XydMM>*)POEF3yI4?IDu
zQeQ_a%#-^2Q{YFVh26@+&iKy1wXrP=57(Ey2W`0W<){d{;v$`^)a}sHGQT&<&a`j8
z{PEkHuWU__ZNGp0OZlT8CXE@6p~0X%V+@VcSRbvtc>Ku6zlAmu?qAn`KgPDtystlN
zXZklc(3}cr%2L4b(LakigFfdCE53c5r}5)xp-ru;Qm`;&gP$#@%Z492EcR*lnID_@
z_jRMj2kS>aZp^DnS<eFA-gTgjNzmk7_v8E{A3s_AQ|Z%*f8Xu&FIXmC^mwiGq=+sC
zMkY;`KiAVWZ!PGEV^ylDDS7jkweZhXi+SS57eBi3>Gg-%%i|@F@9%wl{PE$-^*f$E
zx~AmN;Go91P$Ss<%B8IiEK82F9w>hNqshX~yf6Lu#xMD&>fF!#<SzUZBeTBa@m0YV
zzUMWdxwmS@g)4qfXJ}Z%BsfV<a;vR!-{Jf-c7N_IKHNTczSQxD`x&aeWc)iGe=xhg
zw@_x^J?Y~Q-=|g=%kUp5ta$a=y713?3%>oizpg*3sBKyB{pftqwk-!pAdPNz#J}S+
dNBP5l#;V(08~a@%6G8iZJzf1=);T3K0RZjRRKNfL

literal 0
HcmV?d00001

diff --git a/www/js/app.js b/www/js/app.js
index 3395d74..274b9ca 100644
--- a/www/js/app.js
+++ b/www/js/app.js
@@ -24,7 +24,10 @@
       "unlock": "Unlock",
       "predictions": "Predictions",
       "games": "Game(s)",
-      "currency": "£"
+      "currency": "£",
+      "purchase_payment_error": "An error occured during the payment, please try again.",
+      "purchase_internal_error": "An internal error occured, please contact the team to solve this issue.",
+      "purchase_ok": "Congratulations, your payment has been successfully made. You have now access to the selected elements."
   	},
   	"fr": {
   		"info_title_1": "Comment resté connecté ?",
@@ -48,14 +51,17 @@
       "unlock": "Dévérouiller",
       "predictions": "Prédictions",
       "games": "Match(s)",
-      "currency": "€"
+      "currency": "€",
+      "purchase_payment_error": "Une erreur est survenue lors du paiement, veuillez réessayer.",
+      "purchase_internal_error": "Une erreur interne est survenue, veuillez contacter l'équipe Betskills pour résoudre le problème.",
+      "purchase_ok": "Félicitations, votre transaction a été réalisée avec succès. Vous avez désormais accès aux éléments que vous venez d'acheter."
     }
   };
 
   /**
    * @ngInject
    */
-  function setupRun($ionicPlatform, NotificationService) {
+  function setupRun($ionicPlatform, NotificationService, constantConfig) {
     $ionicPlatform.ready(function () {
 
       // Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
@@ -71,6 +77,9 @@
 
     ionic.Platform.ready(function () {
       NotificationService.registerDevice();
+      ionic.Platform.ready(function () {
+        constantConfig.uuid = window.cordova ? ionic.Platform.device().uuid : '7f4a6a40e5c87157';
+      });
     });
   }
 
diff --git a/www/js/modules/notification/service.js b/www/js/modules/notification/service.js
index ff61f3b..3f3b94c 100644
--- a/www/js/modules/notification/service.js
+++ b/www/js/modules/notification/service.js
@@ -16,7 +16,7 @@
           registerDevice: function () {
 
             var locale = window.navigator.language.split('-')[0];
-            if (locale !== 'fr' && locale !== 'en' ) {
+            if (locale !== 'fr') {
               locale = 'en';
             }
 
@@ -26,6 +26,9 @@
                 var device = ionic.Platform.device();
                 deviceData = device;
                 var tokenAlreadyCreated = false;
+                if (ionic.Platform.isIOS()) {
+                  window.FirebasePlugin.grantPermission();
+                }
                 window.FirebasePlugin.getToken(function (token) {
                   deviceData = Object.assign(device, {'locale': locale, 'token': token});
                   tokenAlreadyCreated = true;
diff --git a/www/js/modules/purchase/service.js b/www/js/modules/purchase/service.js
index 9900cbf..5fee12d 100644
--- a/www/js/modules/purchase/service.js
+++ b/www/js/modules/purchase/service.js
@@ -10,27 +10,9 @@
      *
      * @ngInject
      */
-    function PurchaseService($http, $state, ToastService, constantConfig, purchaseConfig) {
+    function PurchaseService($http, $state, ToastService, constantConfig) {
         return {
 
-          getProducts: function (sport) {
-            if (window.cordova) {
-              var products = [];
-              inAppPurchase
-              .getProducts(purchaseConfig[sport])
-              .then(function (storeProducts) {
-                products = storeProducts;
-              })
-              .catch(function (err) {
-                ToastService.show(err, 'long', 'bottom');
-              });
-
-              return products;
-            } else {
-              return purchaseConfig['mock'][sport];
-            }
-          },
-
           buyContent : function (uuid, purchaseId, leagues) {
             var self = this;
             var transactionData = {};
diff --git a/www/js/modules/toast/service.js b/www/js/modules/toast/service.js
index 52b57cf..0f5f626 100644
--- a/www/js/modules/toast/service.js
+++ b/www/js/modules/toast/service.js
@@ -19,13 +19,9 @@
 
       show : function (message, duration, location) {
         if (window.cordova) {
-          $cordovaToast.show($translate(message), duration, location).then(function(success) {
-            // success
-          }, function (error) {
-            console.log(error);
-          });
+          $cordovaToast.show(message, duration, location);
         } else {
-          console.log($translate(message))
+          console.log($translate(message));
         }
       }
     };
diff --git a/www/js/pages/football/controller.js b/www/js/pages/football/controller.js
index 1d24d13..a050343 100644
--- a/www/js/pages/football/controller.js
+++ b/www/js/pages/football/controller.js
@@ -22,6 +22,7 @@
     $ionicLoading,
     PurchaseService,
     constantConfig,
+    purchaseConfig,
     ToastService
   ) {
 
@@ -30,9 +31,7 @@
      **/
 
     var deregistrationCallbackList = [];
-    var products = PurchaseService.getProducts('football');
     var self = this;
-    var uuid = window.cordova ? ionic.Platform.device().uuid : '7f4a6a40e5c87157';
 
     /**
     End Controller variables
@@ -56,6 +55,10 @@
     Scope functions
     **/
 
+    $scope.isUndefined = function (value) {
+      return typeof value === 'undefined' || value === null;
+    };
+
     $scope.isBought = function (league) {
       return league.device_status === 'unlock';
     };
@@ -76,18 +79,18 @@
         if ($scope.selected.indexOf(league) !== -1) {
           $scope.selected.splice($scope.selected.indexOf(league), 1);
           $scope.predictionsNumber -= league.predictions_number;
-          $scope.price = self.findPrice($scope.selected.length);
         } else {
           $scope.selected.push(league);
           $scope.predictionsNumber += league.predictions_number;
         }
+        $scope.price = self.findPrice($scope.selected.length);
       }
     };
 
 
     $scope.buyContent = function () {
       var pack = self.findPack($scope.selected.length);
-      PurchaseService.buyContent(uuid, pack, $scope.selected);
+      PurchaseService.buyContent(self.uuid, pack, $scope.selected);
     };
 
     $scope.getPredictionClass = function (prediction, value) {
@@ -179,7 +182,7 @@
 
       if (packToGet !== '') {
         var price = '';
-        products.forEach(function (el) {
+        this.products.forEach(function (el) {
           if (el.productId === packToGet) {
             price = el.price;
           }
@@ -236,18 +239,23 @@
       deregistrationCallbackList = null;
     });
 
-
-    $scope.$on("$ionicView.beforeEnter", function(event, data){
+    ionic.Platform.ready(function () {
+      self.uuid = window.cordova ? ionic.Platform.device().uuid : '7f4a6a40e5c87157';
       $ionicLoading.show({
         template: '<ion-spinner icon="ripple" class="spinner-assertive"></ion-spinner>',
         animation: 'fade-in',
-        showBackdrop: true,
+        showBackdrop: true
       });
 
       var freePredictionsPromise = $http.get(constantConfig.apiUrl + 'predictions/football/free');
-      var leaguesPromise = $http.get(constantConfig.apiUrl + uuid + '/leagues/football');
+      var leaguesPromise = $http.get(constantConfig.apiUrl + self.uuid + '/leagues/football');
+      var promises = [freePredictionsPromise, leaguesPromise];
+      if (window.cordova) {
+        var storePromise = inAppPurchase.getProducts(purchaseConfig['tennis']);
+        promises.push(storePromise);
+      }
 
-      $q.all([freePredictionsPromise, leaguesPromise]).then(function (data) {
+      $q.all(promises).then(function (data) {
         var freePredictions = [];
         data[0]['data'].forEach(function (prediction) {
           self.parseScore(prediction);
@@ -255,11 +263,18 @@
         });
         $scope.freePredictions = freePredictions;
         $scope.leagues = data[1]['data'];
+        if (window.cordova) {
+          self.products = data[2];
+        } else {
+          self.products = [];
+        }
       }).finally(function () {
         $ionicLoading.hide();
       });
     });
 
+
+
     /**
     End Scope event
     **/
diff --git a/www/js/pages/tennis/controller.js b/www/js/pages/tennis/controller.js
index ab9c6b4..4f59b4c 100644
--- a/www/js/pages/tennis/controller.js
+++ b/www/js/pages/tennis/controller.js
@@ -7,10 +7,10 @@
 
   /**
    * @ngdoc controller
-   * @name ChoiceController
+   * @name Tennis Controller
    *
    * @description
-   * Controller for the choice of sport page.
+   * Controller for the tennis index page.
    *
    * @ngInject
    */
@@ -21,7 +21,8 @@
     $q,
     $ionicLoading,
     PurchaseService,
-    constantConfig
+    constantConfig,
+    purchaseConfig
   ) {
 
     /**
@@ -29,9 +30,7 @@
     **/
 
     var deregistrationCallbackList = [];
-    var products = PurchaseService.getProducts('tennis');
     var self = this;
-    var uuid = window.cordova ? ionic.Platform.device().uuid : '7f4a6a40e5c87157';
 
     /**
     End Controller variables
@@ -55,6 +54,10 @@
     Scope functions
     **/
 
+    $scope.isUndefined = function (value) {
+      return typeof value === 'undefined' || value === null;
+    };
+
     $scope.isBought = function (league) {
       return league.device_status === 'unlock';
     };
@@ -107,7 +110,7 @@
       }
 
       if (selectedPack !== '') {
-        PurchaseService.buyContent(uuid, selectedPack, $scope.selected);
+        PurchaseService.buyContent(constantConfig.uuid, selectedPack, $scope.selected);
       }
     };
 
@@ -176,7 +179,7 @@
 
       if (packToGet !== '') {
         var price = '';
-        products.forEach(function (el) {
+        self.products.forEach(function (el) {
           if (el.productId === packToGet) {
             price = el.price;
           }
@@ -216,9 +219,14 @@
       });
 
       var freePredictionsPromise = $http.get(constantConfig.apiUrl + 'predictions/tennis/free');
-      var leaguesPromise = $http.get(constantConfig.apiUrl + uuid + '/leagues/tennis');
+      var leaguesPromise = $http.get(constantConfig.apiUrl + constantConfig.uuid + '/leagues/tennis');
+      var promises = [freePredictionsPromise, leaguesPromise];
+      if (window.cordova) {
+        var storePromise = inAppPurchase.getProducts(purchaseConfig['tennis']);
+        promises.push(storePromise);
+      }
 
-      $q.all([freePredictionsPromise, leaguesPromise]).then(function (data) {
+      $q.all(promises).then(function (data) {
         var freePredictions = [];
         data[0]['data'].forEach(function (prediction) {
           self.parseScore(prediction);
@@ -226,6 +234,11 @@
         });
         $scope.freePredictions = freePredictions;
         $scope.leagues = data[1]['data'];
+        if (window.cordova) {
+          self.products = data[2];
+        } else {
+          self.products = [];
+        }
       }).finally(function () {
         $ionicLoading.hide();
       });
diff --git a/www/partials/prediction.html b/www/partials/prediction.html
index dec563a..057dd9a 100644
--- a/www/partials/prediction.html
+++ b/www/partials/prediction.html
@@ -36,7 +36,7 @@
     <div class="name">{{freePrediction.second_team.name}}</div>
   </div>
 </div>
-<div class="score-container" ng-hide="freePrediction.score === null">
+<div class="score-container" ng-hide="isUndefined(freePrediction.score)">
   <div class="tick"></div>
   <div ng-if="freePrediction.league.sport === 'football'" ng-include="'partials/score/football.html'" class="score football-score"></div>
   <div ng-if="freePrediction.league.sport === 'tennis'" ng-include="'partials/score/tennis.html'" class="score tennis-score"></div>
diff --git a/www/partials/sport-index.html b/www/partials/sport-index.html
index f7cec7e..adbe9f9 100644
--- a/www/partials/sport-index.html
+++ b/www/partials/sport-index.html
@@ -19,6 +19,9 @@
           -
           {{parseDate(league.max_date)}}
         </div>
+        <div class="whiteChevron" ng-class="!isBought(league) ? 'locked' : ''">
+          <img src="img/white-chevron.png" />
+        </div>
       </div>
     </a>
   </ion-item>
-- 
GitLab