Panagiotis Triantafyllou

optimize campaigns, new campaign keys

...@@ -3,15 +3,15 @@ ...@@ -3,15 +3,15 @@
3 # The app uuid the warply sdk need to connect to the engage server 3 # The app uuid the warply sdk need to connect to the engage server
4 # dev f83dfde1145e4c2da69793abb2f579af 4 # dev f83dfde1145e4c2da69793abb2f579af
5 # prod 0086a2088301440792091b9f814c2267 5 # prod 0086a2088301440792091b9f814c2267
6 -Uuid=0086a2088301440792091b9f814c2267 6 +Uuid=f83dfde1145e4c2da69793abb2f579af
7 7
8 # If we need to see logs in Logcat 8 # If we need to see logs in Logcat
9 -Debug=false 9 +Debug=true
10 10
11 # Production or Development environment of the engage server 11 # Production or Development environment of the engage server
12 # Production: https://engage.warp.ly 12 # Production: https://engage.warp.ly
13 # Development: https://engage-stage.warp.ly 13 # Development: https://engage-stage.warp.ly
14 -BaseURL=https://engage.warp.ly 14 +BaseURL=https://engage-stage.warp.ly
15 15
16 # For Verify Ticket request 16 # For Verify Ticket request
17 VerifyURL=/partners/cosmote/verify 17 VerifyURL=/partners/cosmote/verify
...@@ -39,7 +39,7 @@ PushIcon=ic_notify ...@@ -39,7 +39,7 @@ PushIcon=ic_notify
39 SendPackages=false 39 SendPackages=false
40 40
41 # The app language 41 # The app language
42 -Language=el 42 +Language=en
43 43
44 # The merchant id for some requests 44 # The merchant id for some requests
45 MerchantId=20113 45 MerchantId=20113
......
...@@ -36,7 +36,7 @@ public class SplashActivity extends BaseActivity { ...@@ -36,7 +36,7 @@ public class SplashActivity extends BaseActivity {
36 public void onWarplyReady() { 36 public void onWarplyReady() {
37 if (!WarplyDBHelper.getInstance(SplashActivity.this).isTableNotEmpty("auth")) { 37 if (!WarplyDBHelper.getInstance(SplashActivity.this).isTableNotEmpty("auth")) {
38 WarplyManager.getCosmoteUser(new WarplyCosmoteUserRequest() 38 WarplyManager.getCosmoteUser(new WarplyCosmoteUserRequest()
39 - .setGuid("6010490808"), //6012049321, 6012049322, 6012049323, 7000000831 history, 7000000826, 7000000831 shared coupons, prod 6006552990, prod 6005892749, live 3000184910,prod 7000070282 39 + .setGuid("7000000831"), //6012049321, 6012049322, 6012049323, 7000000831 history, 7000000826, 7000000831 shared coupons, prod 6006552990, prod 6005892749, live 3000184910,prod 7000070282
40 mLoginReceiver); 40 mLoginReceiver);
41 } else { 41 } else {
42 startNextActivity(); 42 startNextActivity();
......
...@@ -65,6 +65,7 @@ dependencies { ...@@ -65,6 +65,7 @@ dependencies {
65 api 'com.github.siyamed:android-shape-imageview:0.9.3' 65 api 'com.github.siyamed:android-shape-imageview:0.9.3'
66 implementation 'org.greenrobot:eventbus:3.3.1' 66 implementation 'org.greenrobot:eventbus:3.3.1'
67 api 'org.apmem.tools:layouts:1.10' 67 api 'org.apmem.tools:layouts:1.10'
68 + api 'com.google.guava:guava:30.1-android'
68 69
69 //------------------------------ Firebase -----------------------------// 70 //------------------------------ Firebase -----------------------------//
70 api platform('com.google.firebase:firebase-bom:29.0.3') 71 api platform('com.google.firebase:firebase-bom:29.0.3')
......
...@@ -50,9 +50,8 @@ public class BaseFragmentActivity extends FragmentActivity implements Navigation ...@@ -50,9 +50,8 @@ public class BaseFragmentActivity extends FragmentActivity implements Navigation
50 50
51 mBottomNavigationView = findViewById(R.id.bt_tabs); 51 mBottomNavigationView = findViewById(R.id.bt_tabs);
52 52
53 -// WarplyManager.getUserCouponsWithCouponsets(new WarplyUserCouponsRequest(), mUserCouponsReceiver);
54 WarplyManager.getUserCouponsWithCouponsets(mUserCouponsReceiver); 53 WarplyManager.getUserCouponsWithCouponsets(mUserCouponsReceiver);
55 - WarplyManager.getCampaigns(new WarplyGetCampaignsRequest().setLanguage("en"), mCampaignsCallback); 54 + WarplyManager.getCampaigns(mCampaignsCallback);
56 WarplyManager.getUnifiedCouponsDeals(mUnifiedCallback); 55 WarplyManager.getUnifiedCouponsDeals(mUnifiedCallback);
57 } 56 }
58 57
...@@ -123,7 +122,7 @@ public class BaseFragmentActivity extends FragmentActivity implements Navigation ...@@ -123,7 +122,7 @@ public class BaseFragmentActivity extends FragmentActivity implements Navigation
123 private final CallbackReceiver<ArrayList<Campaign>> mCampaignsCallback = new CallbackReceiver<ArrayList<Campaign>>() { 122 private final CallbackReceiver<ArrayList<Campaign>> mCampaignsCallback = new CallbackReceiver<ArrayList<Campaign>>() {
124 @Override 123 @Override
125 public void onSuccess(ArrayList<Campaign> result) { 124 public void onSuccess(ArrayList<Campaign> result) {
126 - Toast.makeText(BaseFragmentActivity.this, "Campaigns Success", Toast.LENGTH_SHORT).show(); 125 + Toast.makeText(BaseFragmentActivity.this, "Campaigns Success " + String.valueOf(result.size()), Toast.LENGTH_SHORT).show();
127 } 126 }
128 127
129 @Override 128 @Override
......
...@@ -74,6 +74,8 @@ public class Campaign implements Parcelable, Serializable { ...@@ -74,6 +74,8 @@ public class Campaign implements Parcelable, Serializable {
74 private static final String CAMPAIGN_TYPE_SETTINGS = "campaign_type_settings"; 74 private static final String CAMPAIGN_TYPE_SETTINGS = "campaign_type_settings";
75 private static final String BANNER_IMAGE = "Banner_img"; 75 private static final String BANNER_IMAGE = "Banner_img";
76 private static final String BANNER_TITLE = "Banner_title"; 76 private static final String BANNER_TITLE = "Banner_title";
77 + private static final String CATEGORY_ID = "category_id";
78 + private static final String COUPON_AVAILABILITY = "coupon_availability";
77 79
78 /* Member variables of the Campaign object */ 80 /* Member variables of the Campaign object */
79 81
...@@ -103,7 +105,8 @@ public class Campaign implements Parcelable, Serializable { ...@@ -103,7 +105,8 @@ public class Campaign implements Parcelable, Serializable {
103 private String campaignTypeSettings; 105 private String campaignTypeSettings;
104 private String bannerImage; 106 private String bannerImage;
105 private String bannerTitle; 107 private String bannerTitle;
106 - private UnifiedCampaignModel unifiedCampaign; 108 + private String categoryId;
109 + private Integer couponAvailability;
107 110
108 /** 111 /**
109 * Basic constructor used to create an object from a String, representing a 112 * Basic constructor used to create an object from a String, representing a
...@@ -143,7 +146,8 @@ public class Campaign implements Parcelable, Serializable { ...@@ -143,7 +146,8 @@ public class Campaign implements Parcelable, Serializable {
143 this.campaignTypeSettings = ""; 146 this.campaignTypeSettings = "";
144 this.bannerImage = ""; 147 this.bannerImage = "";
145 this.bannerTitle = ""; 148 this.bannerTitle = "";
146 - this.unifiedCampaign = new UnifiedCampaignModel(); 149 + this.couponAvailability = null;
150 + this.categoryId = "";
147 } 151 }
148 152
149 /** 153 /**
...@@ -204,6 +208,8 @@ public class Campaign implements Parcelable, Serializable { ...@@ -204,6 +208,8 @@ public class Campaign implements Parcelable, Serializable {
204 } else { 208 } else {
205 this.actions = null; 209 this.actions = null;
206 } 210 }
211 + this.categoryId = json.optString(CATEGORY_ID);
212 + this.couponAvailability = json.optInt(COUPON_AVAILABILITY);
207 } 213 }
208 214
209 public Campaign(Parcel source) { 215 public Campaign(Parcel source) {
...@@ -231,6 +237,8 @@ public class Campaign implements Parcelable, Serializable { ...@@ -231,6 +237,8 @@ public class Campaign implements Parcelable, Serializable {
231 this.actions = source.readArrayList(CampaignAction.class.getClassLoader()); 237 this.actions = source.readArrayList(CampaignAction.class.getClassLoader());
232 this.busId = source.readString(); 238 this.busId = source.readString();
233 this.campaignTypeSettings = source.readString(); 239 this.campaignTypeSettings = source.readString();
240 + this.categoryId = source.readString();
241 + this.couponAvailability = source.readInt();
234 } 242 }
235 243
236 @Override 244 @Override
...@@ -259,6 +267,8 @@ public class Campaign implements Parcelable, Serializable { ...@@ -259,6 +267,8 @@ public class Campaign implements Parcelable, Serializable {
259 dest.writeList(this.actions); 267 dest.writeList(this.actions);
260 dest.writeString(this.busId); 268 dest.writeString(this.busId);
261 dest.writeString(this.campaignTypeSettings); 269 dest.writeString(this.campaignTypeSettings);
270 + dest.writeInt(this.couponAvailability);
271 + dest.writeString(this.categoryId);
262 } 272 }
263 273
264 /** 274 /**
...@@ -293,6 +303,8 @@ public class Campaign implements Parcelable, Serializable { ...@@ -293,6 +303,8 @@ public class Campaign implements Parcelable, Serializable {
293 jObj.putOpt(DISPLAY_TYPE, this.displayType); 303 jObj.putOpt(DISPLAY_TYPE, this.displayType);
294 jObj.put(BUS_ID, this.busId); 304 jObj.put(BUS_ID, this.busId);
295 jObj.put(CAMPAIGN_TYPE_SETTINGS, this.campaignTypeSettings); 305 jObj.put(CAMPAIGN_TYPE_SETTINGS, this.campaignTypeSettings);
306 + jObj.putOpt(COUPON_AVAILABILITY, this.couponAvailability);
307 + jObj.putOpt(CATEGORY_ID, this.categoryId);
296 } catch (JSONException e) { 308 } catch (JSONException e) {
297 if (WarpConstants.DEBUG) { 309 if (WarpConstants.DEBUG) {
298 e.printStackTrace(); 310 e.printStackTrace();
...@@ -366,6 +378,23 @@ public class Campaign implements Parcelable, Serializable { ...@@ -366,6 +378,23 @@ public class Campaign implements Parcelable, Serializable {
366 // Getters 378 // Getters
367 // ================================================================================ 379 // ================================================================================
368 380
381 +
382 + public String getCategoryId() {
383 + return categoryId;
384 + }
385 +
386 + public void setCategoryId(String categoryId) {
387 + this.categoryId = categoryId;
388 + }
389 +
390 + public Integer getCouponAvailability() {
391 + return couponAvailability;
392 + }
393 +
394 + public void setCouponAvailability(Integer couponAvailability) {
395 + this.couponAvailability = couponAvailability;
396 + }
397 +
369 /** 398 /**
370 * @return The loyalty action of the Campaign, used if custom actions are 399 * @return The loyalty action of the Campaign, used if custom actions are
371 * implemented 400 * implemented
...@@ -630,14 +659,6 @@ public class Campaign implements Parcelable, Serializable { ...@@ -630,14 +659,6 @@ public class Campaign implements Parcelable, Serializable {
630 this.bannerTitle = bannerTitle; 659 this.bannerTitle = bannerTitle;
631 } 660 }
632 661
633 - public UnifiedCampaignModel getUnifiedCampaign() {
634 - return unifiedCampaign;
635 - }
636 -
637 - public void setUnifiedCampaign(UnifiedCampaignModel unifiedCampaign) {
638 - this.unifiedCampaign = unifiedCampaign;
639 - }
640 -
641 @Override 662 @Override
642 public int describeContents() { 663 public int describeContents() {
643 return 0; 664 return 0;
......
...@@ -79,6 +79,21 @@ public class NewCampaignList extends ArrayList<NewCampaign> { ...@@ -79,6 +79,21 @@ public class NewCampaignList extends ArrayList<NewCampaign> {
79 } 79 }
80 } 80 }
81 81
82 + public NewCampaignList(JSONObject campaignListJSONObject) {
83 + campaignListJSONObject = campaignListJSONObject.optJSONObject(JSON_KEY_CONTEXT);
84 + if (campaignListJSONObject == null)
85 + return;
86 + JSONObject jsonObject = campaignListJSONObject.optJSONObject(JSON_KEY_MAPP);
87 + if(jsonObject == null)
88 + return;;
89 + JSONArray jArray = jsonObject.optJSONArray(JSON_KEY_MAPP_VALUE);
90 + if (jArray != null) {
91 + for (int i = 0, lim = jArray.length(); i < lim; ++i) {
92 + add(new NewCampaign(jArray.optJSONObject(i)));
93 + }
94 + }
95 + }
96 +
82 @NonNull 97 @NonNull
83 public String getRequestSignature() { 98 public String getRequestSignature() {
84 return mRequestSignature; 99 return mRequestSignature;
......
...@@ -89,20 +89,31 @@ public interface ApiService { ...@@ -89,20 +89,31 @@ public interface ApiService {
89 @Header(WarpConstants.HEADER_SIGNATURE) String signature); 89 @Header(WarpConstants.HEADER_SIGNATURE) String signature);
90 90
91 @Headers("Content-Type: application/json") 91 @Headers("Content-Type: application/json")
92 + @POST("/api/mobile/v2/{appUuid}/context/")
93 + Call<ResponseBody> getCampaigns(@Path("appUuid") String appUuid,
94 + @Body RequestBody request,
95 + @Header(WarpConstants.HEADER_DATE) String timeStamp,
96 + @Header(WarpConstants.HEADER_LOYALTY_BUNDLE_ID) String bundleId,
97 + @Header(WarpConstants.HEADER_UNIQUE_DEVICE_ID) String deviceId,
98 + @Header(WarpConstants.HEADER_CHANNEL) String channel,
99 + @Header(WarpConstants.HEADER_WEB_ID) String webId,
100 + @Header(WarpConstants.HEADER_SIGNATURE) String signature);
101 +
102 + @Headers("Content-Type: application/json")
92 @POST("/oauth/{appUuid}/context") 103 @POST("/oauth/{appUuid}/context")
93 - Call<ResponseBody> sendTelematicsData(@Path("appUuid") String appUuid, 104 + Call<ResponseBody> getCampaignsPersonalized(@Path("appUuid") String appUuid,
94 - @Body RequestBody request, 105 + @Body RequestBody request,
95 - @Header(WarpConstants.HEADER_DATE) String timeStamp, 106 + @Header(WarpConstants.HEADER_DATE) String timeStamp,
96 - @Header(WarpConstants.HEADER_LOYALTY_BUNDLE_ID) String bundleId, 107 + @Header(WarpConstants.HEADER_LOYALTY_BUNDLE_ID) String bundleId,
97 - @Header(WarpConstants.HEADER_UNIQUE_DEVICE_ID) String deviceId, 108 + @Header(WarpConstants.HEADER_UNIQUE_DEVICE_ID) String deviceId,
98 - @Header(WarpConstants.HEADER_CHANNEL) String channel, 109 + @Header(WarpConstants.HEADER_CHANNEL) String channel,
99 - @Header(WarpConstants.HEADER_WEB_ID) String webId, 110 + @Header(WarpConstants.HEADER_WEB_ID) String webId,
100 - @Header(WarpConstants.HEADER_SIGNATURE) String signature, 111 + @Header(WarpConstants.HEADER_SIGNATURE) String signature,
101 - @Header(WarpConstants.HEADER_AUTHORIZATION) String bearer); 112 + @Header(WarpConstants.HEADER_AUTHORIZATION) String bearer);
102 113
103 @Headers("Content-Type: application/json") 114 @Headers("Content-Type: application/json")
104 @POST("/oauth/{appUuid}/context") 115 @POST("/oauth/{appUuid}/context")
105 - Call<ResponseBody> cancelUnifiedCoupon(@Path("appUuid") String appUuid, 116 + Call<ResponseBody> sendTelematicsData(@Path("appUuid") String appUuid,
106 @Body RequestBody request, 117 @Body RequestBody request,
107 @Header(WarpConstants.HEADER_DATE) String timeStamp, 118 @Header(WarpConstants.HEADER_DATE) String timeStamp,
108 @Header(WarpConstants.HEADER_LOYALTY_BUNDLE_ID) String bundleId, 119 @Header(WarpConstants.HEADER_LOYALTY_BUNDLE_ID) String bundleId,
...@@ -114,19 +125,19 @@ public interface ApiService { ...@@ -114,19 +125,19 @@ public interface ApiService {
114 125
115 @Headers("Content-Type: application/json") 126 @Headers("Content-Type: application/json")
116 @POST("/oauth/{appUuid}/context") 127 @POST("/oauth/{appUuid}/context")
117 - Call<ResponseBody> getTelematicsHistoy(@Path("appUuid") String appUuid, 128 + Call<ResponseBody> cancelUnifiedCoupon(@Path("appUuid") String appUuid,
118 - @Body RequestBody request, 129 + @Body RequestBody request,
119 - @Header(WarpConstants.HEADER_DATE) String timeStamp, 130 + @Header(WarpConstants.HEADER_DATE) String timeStamp,
120 - @Header(WarpConstants.HEADER_LOYALTY_BUNDLE_ID) String bundleId, 131 + @Header(WarpConstants.HEADER_LOYALTY_BUNDLE_ID) String bundleId,
121 - @Header(WarpConstants.HEADER_UNIQUE_DEVICE_ID) String deviceId, 132 + @Header(WarpConstants.HEADER_UNIQUE_DEVICE_ID) String deviceId,
122 - @Header(WarpConstants.HEADER_CHANNEL) String channel, 133 + @Header(WarpConstants.HEADER_CHANNEL) String channel,
123 - @Header(WarpConstants.HEADER_WEB_ID) String webId, 134 + @Header(WarpConstants.HEADER_WEB_ID) String webId,
124 - @Header(WarpConstants.HEADER_SIGNATURE) String signature, 135 + @Header(WarpConstants.HEADER_SIGNATURE) String signature,
125 - @Header(WarpConstants.HEADER_AUTHORIZATION) String bearer); 136 + @Header(WarpConstants.HEADER_AUTHORIZATION) String bearer);
126 137
127 @Headers("Content-Type: application/json") 138 @Headers("Content-Type: application/json")
128 @POST("/oauth/{appUuid}/context") 139 @POST("/oauth/{appUuid}/context")
129 - Call<ResponseBody> getTripMetrics(@Path("appUuid") String appUuid, 140 + Call<ResponseBody> getTelematicsHistoy(@Path("appUuid") String appUuid,
130 @Body RequestBody request, 141 @Body RequestBody request,
131 @Header(WarpConstants.HEADER_DATE) String timeStamp, 142 @Header(WarpConstants.HEADER_DATE) String timeStamp,
132 @Header(WarpConstants.HEADER_LOYALTY_BUNDLE_ID) String bundleId, 143 @Header(WarpConstants.HEADER_LOYALTY_BUNDLE_ID) String bundleId,
...@@ -138,7 +149,7 @@ public interface ApiService { ...@@ -138,7 +149,7 @@ public interface ApiService {
138 149
139 @Headers("Content-Type: application/json") 150 @Headers("Content-Type: application/json")
140 @POST("/oauth/{appUuid}/context") 151 @POST("/oauth/{appUuid}/context")
141 - Call<ResponseBody> rateTrip(@Path("appUuid") String appUuid, 152 + Call<ResponseBody> getTripMetrics(@Path("appUuid") String appUuid,
142 @Body RequestBody request, 153 @Body RequestBody request,
143 @Header(WarpConstants.HEADER_DATE) String timeStamp, 154 @Header(WarpConstants.HEADER_DATE) String timeStamp,
144 @Header(WarpConstants.HEADER_LOYALTY_BUNDLE_ID) String bundleId, 155 @Header(WarpConstants.HEADER_LOYALTY_BUNDLE_ID) String bundleId,
...@@ -148,6 +159,18 @@ public interface ApiService { ...@@ -148,6 +159,18 @@ public interface ApiService {
148 @Header(WarpConstants.HEADER_SIGNATURE) String signature, 159 @Header(WarpConstants.HEADER_SIGNATURE) String signature,
149 @Header(WarpConstants.HEADER_AUTHORIZATION) String bearer); 160 @Header(WarpConstants.HEADER_AUTHORIZATION) String bearer);
150 161
162 + @Headers("Content-Type: application/json")
163 + @POST("/oauth/{appUuid}/context")
164 + Call<ResponseBody> rateTrip(@Path("appUuid") String appUuid,
165 + @Body RequestBody request,
166 + @Header(WarpConstants.HEADER_DATE) String timeStamp,
167 + @Header(WarpConstants.HEADER_LOYALTY_BUNDLE_ID) String bundleId,
168 + @Header(WarpConstants.HEADER_UNIQUE_DEVICE_ID) String deviceId,
169 + @Header(WarpConstants.HEADER_CHANNEL) String channel,
170 + @Header(WarpConstants.HEADER_WEB_ID) String webId,
171 + @Header(WarpConstants.HEADER_SIGNATURE) String signature,
172 + @Header(WarpConstants.HEADER_AUTHORIZATION) String bearer);
173 +
151 // =========================================================== 174 // ===========================================================
152 // Getter & Setter 175 // Getter & Setter
153 // =========================================================== 176 // ===========================================================
......
...@@ -34,6 +34,7 @@ import android.os.Build; ...@@ -34,6 +34,7 @@ import android.os.Build;
34 import android.os.Handler; 34 import android.os.Handler;
35 import android.os.Looper; 35 import android.os.Looper;
36 import android.os.SystemClock; 36 import android.os.SystemClock;
37 +import android.text.TextUtils;
37 import android.text.format.DateFormat; 38 import android.text.format.DateFormat;
38 import android.util.ArrayMap; 39 import android.util.ArrayMap;
39 40
...@@ -41,6 +42,13 @@ import androidx.annotation.NonNull; ...@@ -41,6 +42,13 @@ import androidx.annotation.NonNull;
41 import androidx.work.OneTimeWorkRequest; 42 import androidx.work.OneTimeWorkRequest;
42 import androidx.work.WorkManager; 43 import androidx.work.WorkManager;
43 44
45 +import com.google.common.util.concurrent.FutureCallback;
46 +import com.google.common.util.concurrent.Futures;
47 +import com.google.common.util.concurrent.ListenableFuture;
48 +import com.google.common.util.concurrent.ListeningExecutorService;
49 +import com.google.common.util.concurrent.MoreExecutors;
50 +import com.google.common.util.concurrent.SettableFuture;
51 +
44 import org.greenrobot.eventbus.EventBus; 52 import org.greenrobot.eventbus.EventBus;
45 import org.json.JSONArray; 53 import org.json.JSONArray;
46 import org.json.JSONException; 54 import org.json.JSONException;
...@@ -52,6 +60,7 @@ import java.util.ArrayList; ...@@ -52,6 +60,7 @@ import java.util.ArrayList;
52 import java.util.Collections; 60 import java.util.Collections;
53 import java.util.Date; 61 import java.util.Date;
54 import java.util.LinkedHashSet; 62 import java.util.LinkedHashSet;
63 +import java.util.List;
55 import java.util.Map; 64 import java.util.Map;
56 import java.util.Set; 65 import java.util.Set;
57 import java.util.concurrent.ExecutorService; 66 import java.util.concurrent.ExecutorService;
...@@ -90,6 +99,7 @@ import ly.warp.sdk.io.models.LoyaltySDKDynatraceEventModel; ...@@ -90,6 +99,7 @@ import ly.warp.sdk.io.models.LoyaltySDKDynatraceEventModel;
90 import ly.warp.sdk.io.models.Merchant; 99 import ly.warp.sdk.io.models.Merchant;
91 import ly.warp.sdk.io.models.MerchantCategoriesList; 100 import ly.warp.sdk.io.models.MerchantCategoriesList;
92 import ly.warp.sdk.io.models.MerchantList; 101 import ly.warp.sdk.io.models.MerchantList;
102 +import ly.warp.sdk.io.models.NewCampaign;
93 import ly.warp.sdk.io.models.PacingDetails; 103 import ly.warp.sdk.io.models.PacingDetails;
94 import ly.warp.sdk.io.models.PointsList; 104 import ly.warp.sdk.io.models.PointsList;
95 import ly.warp.sdk.io.models.ProductList; 105 import ly.warp.sdk.io.models.ProductList;
...@@ -150,7 +160,6 @@ import ly.warp.sdk.io.request.WarplyVerifyTicketRequest; ...@@ -150,7 +160,6 @@ import ly.warp.sdk.io.request.WarplyVerifyTicketRequest;
150 import ly.warp.sdk.io.volley.ApiClient; 160 import ly.warp.sdk.io.volley.ApiClient;
151 import ly.warp.sdk.io.volley.ApiService; 161 import ly.warp.sdk.io.volley.ApiService;
152 import ly.warp.sdk.services.EventCampaignService; 162 import ly.warp.sdk.services.EventCampaignService;
153 -import ly.warp.sdk.services.EventCouponsService;
154 import ly.warp.sdk.services.EventUnifiedCouponsService; 163 import ly.warp.sdk.services.EventUnifiedCouponsService;
155 import ly.warp.sdk.services.WarplyHealthService; 164 import ly.warp.sdk.services.WarplyHealthService;
156 import ly.warp.sdk.utils.WarpJSONParser; 165 import ly.warp.sdk.utils.WarpJSONParser;
...@@ -1519,57 +1528,15 @@ public class WarplyManager { ...@@ -1519,57 +1528,15 @@ public class WarplyManager {
1519 } 1528 }
1520 } 1529 }
1521 1530
1522 - if (camp.getOfferCategory().equals("questionnaire")) { 1531 + try {
1523 -// if (WarplyManagerHelper.getConsumerInternal() != null) { 1532 + JSONObject extraFields = WarpJSONParser.getJSONFromString(camp.getExtraFields());
1524 -// JSONObject profMetadata = WarpJSONParser.getJSONFromString(WarplyManagerHelper.getConsumerInternal().getProfileMetadata()); 1533 + if (extraFields != null) {
1525 -// if (profMetadata != null) { 1534 + if (extraFields.length() == 0 || !(extraFields.has("ccms_offer") || extraFields.has("type"))) {
1526 -// if (!profMetadata.has("answered")) { 1535 + campaignLoyaltyList.add(camp);
1527 -// try {
1528 -// JSONObject extraFields = WarpJSONParser.getJSONFromString(camp.getExtraFields());
1529 -// if (extraFields != null) {
1530 -// if (extraFields.length() == 0 || !(extraFields.has("ccms_offer") || extraFields.has("type"))) {
1531 -// campaignLoyaltyList.add(camp);
1532 -// }
1533 -// }
1534 -// } catch (Exception exception) {
1535 -// campaignLoyaltyList.add(camp);
1536 -// }
1537 -// }
1538 -// } else {
1539 -// try {
1540 -// JSONObject extraFields = WarpJSONParser.getJSONFromString(camp.getExtraFields());
1541 -// if (extraFields != null) {
1542 -// if (extraFields.length() == 0 || !(extraFields.has("ccms_offer") || extraFields.has("type"))) {
1543 -// campaignLoyaltyList.add(camp);
1544 -// }
1545 -// }
1546 -// } catch (Exception exception) {
1547 -// campaignLoyaltyList.add(camp);
1548 -// }
1549 -// }
1550 -// } else {
1551 -// try {
1552 -// JSONObject extraFields = WarpJSONParser.getJSONFromString(camp.getExtraFields());
1553 -// if (extraFields != null) {
1554 -// if (extraFields.length() == 0 || !(extraFields.has("ccms_offer") || extraFields.has("type"))) {
1555 -// campaignLoyaltyList.add(camp);
1556 -// }
1557 -// }
1558 -// } catch (Exception exception) {
1559 -// campaignLoyaltyList.add(camp);
1560 -// }
1561 -// }
1562 - } else {
1563 - try {
1564 - JSONObject extraFields = WarpJSONParser.getJSONFromString(camp.getExtraFields());
1565 - if (extraFields != null) {
1566 - if (extraFields.length() == 0 || !(extraFields.has("ccms_offer") || extraFields.has("type"))) {
1567 - campaignLoyaltyList.add(camp);
1568 - }
1569 } 1536 }
1570 - } catch (Exception exception) {
1571 - campaignLoyaltyList.add(camp);
1572 } 1537 }
1538 + } catch (Exception exception) {
1539 + campaignLoyaltyList.add(camp);
1573 } 1540 }
1574 } 1541 }
1575 WarplyManagerHelper.setCarouselList(campaignCarouselList); 1542 WarplyManagerHelper.setCarouselList(campaignCarouselList);
...@@ -1598,6 +1565,441 @@ public class WarplyManager { ...@@ -1598,6 +1565,441 @@ public class WarplyManager {
1598 request.getSignature())); 1565 request.getSignature()));
1599 } 1566 }
1600 1567
1568 + private static ArrayList<Campaign> mergeCampaignResults(ArrayList<Campaign> resultCampaigns, ArrayList<Campaign> resultPersonalizedCampaigns) {
1569 + ArrayList<Campaign> newCampaignList = new ArrayList<Campaign>();
1570 + ArrayList<Campaign> campaignLoyaltyList = new ArrayList<>();
1571 + newCampaignList.clear();
1572 + if (resultCampaigns != null && resultCampaigns.size() > 0)
1573 + newCampaignList.addAll(resultCampaigns);
1574 + if (resultPersonalizedCampaigns != null && resultPersonalizedCampaigns.size() > 0)
1575 + newCampaignList.addAll(resultPersonalizedCampaigns);
1576 +
1577 + if (newCampaignList != null && newCampaignList.size() > 0) {
1578 + Collections.sort(newCampaignList, (obj1, obj2) -> Integer.compare(obj1.getSorting(), obj2.getSorting()));
1579 + WarplyManagerHelper.setCampaignList(newCampaignList);
1580 + campaignLoyaltyList.clear();
1581 + ArrayList<Campaign> campaignCarouselList = new ArrayList<>();
1582 + campaignCarouselList.clear();
1583 + for (Campaign camp : newCampaignList) {
1584 + JSONObject campMetadata = WarpJSONParser.getJSONFromString(camp.getExtraFields());
1585 + if (campMetadata != null) {
1586 + if (campMetadata.has("carousel")) {
1587 + campaignCarouselList.add(camp);
1588 + }
1589 + }
1590 +
1591 + try {
1592 + JSONObject extraFields = WarpJSONParser.getJSONFromString(camp.getExtraFields());
1593 + if (extraFields != null) {
1594 + if (extraFields.length() == 0 || !(extraFields.has("ccms_offer") || extraFields.has("type"))) {
1595 + campaignLoyaltyList.add(camp);
1596 + }
1597 + }
1598 + } catch (Exception exception) {
1599 + campaignLoyaltyList.add(camp);
1600 + }
1601 + }
1602 + WarplyManagerHelper.setCarouselList(campaignCarouselList);
1603 +
1604 + Set<Campaign> set = new LinkedHashSet<>(campaignLoyaltyList);
1605 + campaignLoyaltyList.clear();
1606 + campaignLoyaltyList.addAll(set);
1607 + }
1608 +
1609 + return campaignLoyaltyList;
1610 + }
1611 +
1612 + public static void getCampaigns(final CallbackReceiver<ArrayList<Campaign>> receiver) {
1613 + WarpUtils.log("************* WARPLY Get Campaigns Request ********************");
1614 + WarpUtils.log("[WARP Trace] WARPLY Get Campaigns Request is active");
1615 + WarpUtils.log("**************************************************");
1616 +
1617 + ApiService service = ApiClient.getRetrofitInstance().create(ApiService.class);
1618 + ListeningExecutorService executorService = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(2));
1619 +
1620 + ListenableFuture<ArrayList<Campaign>> futureCampaigns = getCampaignsRetro(service);
1621 + ListenableFuture<ArrayList<Campaign>> futurePersonalizedCampaigns = getCampaignsPersonalizedRetro(service);
1622 +
1623 + ListenableFuture<List<ArrayList<Campaign>>> allResultsFuture = Futures.allAsList(futureCampaigns, futurePersonalizedCampaigns);
1624 + ListenableFuture<ArrayList<Campaign>> mergedResultFuture = Futures.transformAsync(
1625 + allResultsFuture,
1626 + results -> {
1627 + ArrayList<Campaign> resultCampaigns = results.get(0);
1628 + ArrayList<Campaign> resultPersonalizedCampaigns = results.get(1);
1629 + return executorService.submit(() -> mergeCampaignResults(resultCampaigns, resultPersonalizedCampaigns));
1630 + },
1631 + executorService
1632 + );
1633 +
1634 + Futures.addCallback(mergedResultFuture, new FutureCallback<ArrayList<Campaign>>() {
1635 + @Override
1636 + public void onSuccess(ArrayList<Campaign> mergedResult) {
1637 + executorService.shutdownNow();
1638 + new Handler(Looper.getMainLooper()).post(() -> receiver.onSuccess(mergedResult));
1639 + }
1640 +
1641 + @Override
1642 + public void onFailure(Throwable throwable) {
1643 + receiver.onFailure(2);
1644 + }
1645 + }, executorService);
1646 +
1647 +// getCampaignsRetro(service, new CallbackReceiver<ArrayList<Campaign>>() {
1648 +// @Override
1649 +// public void onSuccess(ArrayList<Campaign> result) {
1650 +// getCampaignsPersonalizedRetro(service, new CallbackReceiver<ArrayList<Campaign>>() {
1651 +// @Override
1652 +// public void onSuccess(ArrayList<Campaign> resultPersonalized) {
1653 +// final ExecutorService executorShops = Executors.newFixedThreadPool(1);
1654 +// executorShops.submit(() -> {
1655 +// ArrayList<Campaign> newCampaignList = new ArrayList<Campaign>();
1656 +// newCampaignList.clear();
1657 +// newCampaignList.addAll(result);
1658 +// newCampaignList.addAll(resultPersonalized);
1659 +// Collections.sort(newCampaignList, (obj1, obj2) -> Integer.compare(obj1.getSorting(), obj2.getSorting()));
1660 +// WarplyManagerHelper.setCampaignList(newCampaignList);
1661 +// ArrayList<Campaign> campaignLoyaltyList = new ArrayList<>();
1662 +// campaignLoyaltyList.clear();
1663 +// ArrayList<Campaign> campaignCarouselList = new ArrayList<>();
1664 +// campaignCarouselList.clear();
1665 +// for (Campaign camp : newCampaignList) {
1666 +// JSONObject campMetadata = WarpJSONParser.getJSONFromString(camp.getExtraFields());
1667 +// if (campMetadata != null) {
1668 +// if (campMetadata.has("carousel")) {
1669 +// campaignCarouselList.add(camp);
1670 +// }
1671 +// }
1672 +//
1673 +// try {
1674 +// JSONObject extraFields = WarpJSONParser.getJSONFromString(camp.getExtraFields());
1675 +// if (extraFields != null) {
1676 +// if (extraFields.length() == 0 || !(extraFields.has("ccms_offer") || extraFields.has("type"))) {
1677 +// campaignLoyaltyList.add(camp);
1678 +// }
1679 +// }
1680 +// } catch (Exception exception) {
1681 +// campaignLoyaltyList.add(camp);
1682 +// }
1683 +// }
1684 +// WarplyManagerHelper.setCarouselList(campaignCarouselList);
1685 +//
1686 +// Set<Campaign> set = new LinkedHashSet<>(campaignLoyaltyList);
1687 +// campaignLoyaltyList.clear();
1688 +// campaignLoyaltyList.addAll(set);
1689 +// executorShops.shutdownNow();
1690 +// new Handler(Looper.getMainLooper()).post(() -> receiver.onSuccess(campaignLoyaltyList));//resultPersonalized
1691 +// });
1692 +// }
1693 +//
1694 +// @Override
1695 +// public void onFailure(int errorCode) {
1696 +// receiver.onFailure(errorCode);
1697 +// }
1698 +// });
1699 +// }
1700 +//
1701 +// @Override
1702 +// public void onFailure(int errorCode) {
1703 +// receiver.onFailure(errorCode);
1704 +// }
1705 +// });
1706 + }
1707 +
1708 + private static /*void*/ ListenableFuture<ArrayList<Campaign>> getCampaignsRetro(ApiService service/*, final CallbackReceiver<ArrayList<Campaign>> receiver*/) {
1709 + SettableFuture<ArrayList<Campaign>> future = SettableFuture.create();
1710 +
1711 + String timeStamp = DateFormat.format("yyyy-MM-dd hh:mm:ss", System.currentTimeMillis()).toString();
1712 + String apiKey = WarpUtils.getApiKey(Warply.getWarplyContext());
1713 + String webId = WarpUtils.getWebId(Warply.getWarplyContext());
1714 +
1715 + Map<String, Object> jsonParamsCampaigns = new ArrayMap<>();
1716 + Map<String, Object> jsonParams = new ArrayMap<>();
1717 + jsonParams.put("action", "retrieve");
1718 + jsonParams.put("filters", new JSONObject());
1719 + jsonParams.put("language", WarplyProperty.getLanguage(Warply.getWarplyContext()));
1720 +
1721 + jsonParamsCampaigns.put("campaigns", jsonParams);
1722 + RequestBody campaignsRequest = RequestBody.create(MediaType.get("application/json; charset=utf-8"), (new JSONObject(jsonParamsCampaigns)).toString());
1723 +
1724 + Call<ResponseBody> campaignsCall = service.getCampaigns(
1725 + WarplyProperty.getAppUuid(Warply.getWarplyContext()),
1726 + campaignsRequest,
1727 + timeStamp,
1728 + "android:" + Warply.getWarplyContext().getPackageName(),
1729 + new WarplyDeviceInfoCollector(Warply.getWarplyContext()).getUniqueDeviceId(),
1730 + "mobile",
1731 + webId,
1732 + WarpUtils.produceSignature(apiKey + timeStamp)
1733 + );
1734 +
1735 + campaignsCall.enqueue(new Callback<ResponseBody>() {
1736 + @Override
1737 + public void onResponse(@NonNull Call<ResponseBody> call, @NonNull Response<ResponseBody> response) {
1738 + if (response.code() == 200 && response.body() != null) {
1739 + JSONObject jobjCampaignsResponse = null;
1740 + try {
1741 + jobjCampaignsResponse = new JSONObject(response.body().string());
1742 + } catch (Exception e) {
1743 + e.printStackTrace();
1744 + }
1745 +
1746 + if (jobjCampaignsResponse != null && jobjCampaignsResponse.has("status") && jobjCampaignsResponse.optString("status", "2").equals("1")) {
1747 + LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel();
1748 + dynatraceEvent.setEventName("custom_success_campaigns_loyalty");
1749 + EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent));
1750 +
1751 + JSONArray jCampaignsBody = null;
1752 + try {
1753 + jCampaignsBody = jobjCampaignsResponse.optJSONObject("context").optJSONObject("MAPP_CAMPAIGNING").optJSONArray("campaigns");
1754 + } catch (Exception e) {
1755 + e.printStackTrace();
1756 + }
1757 +
1758 + if (jCampaignsBody != null) {
1759 + ArrayList<NewCampaign> tempCampaigns = new ArrayList<>();
1760 + ArrayList<Campaign> mCampaignsList = new ArrayList<>();
1761 +
1762 + final ExecutorService executorShops = Executors.newFixedThreadPool(1);
1763 + JSONArray finalCampaignsJBody = jCampaignsBody;
1764 + executorShops.submit(() -> {
1765 + for (int i = 0; i < finalCampaignsJBody.length(); ++i) {
1766 + tempCampaigns.add(new NewCampaign(finalCampaignsJBody.optJSONObject(i)));
1767 + }
1768 + for (NewCampaign newCamp : tempCampaigns) {
1769 + Campaign camp = new Campaign();
1770 + camp.setIndexUrl(newCamp.getIndexUrl());
1771 + camp.setLogoUrl(newCamp.getLogoUrl());
1772 + camp.setMessage(newCamp.getMessage());
1773 + camp.setOfferCategory(newCamp.getCommunicationCategory());
1774 + camp.setSessionUUID(newCamp.getCommunicationUUID());
1775 + camp.setTitle(newCamp.getTitle());
1776 + camp.setSubtitle(newCamp.getSubtitle());
1777 + camp.setSorting(newCamp.getSorting());
1778 + camp.setNew(newCamp.getIsNew());
1779 + camp.setType(newCamp.getCampaignType());
1780 + try {
1781 + camp.setExtraFields(newCamp.getExtraFields().toString());
1782 + if (!TextUtils.isEmpty(newCamp.getExtraFields().toString())) {
1783 + JSONObject extraFieldsResp = WarpJSONParser.getJSONFromString(newCamp.getExtraFields().toString());
1784 + if (extraFieldsResp != null) {
1785 + if (extraFieldsResp.has("Banner_title")) {
1786 + camp.setBannerTitle(extraFieldsResp.optString("Banner_title", ""));
1787 + }
1788 + if (extraFieldsResp.has("Banner_img")) {
1789 + camp.setBannerImage(extraFieldsResp.optString("Banner_img", ""));
1790 + }
1791 + }
1792 + } else {
1793 + camp.setBannerImage("");
1794 + camp.setBannerTitle("");
1795 + }
1796 + } catch (NullPointerException e) {
1797 + camp.setExtraFields("");
1798 + camp.setBannerImage("");
1799 + camp.setBannerTitle("");
1800 + e.printStackTrace();
1801 + }
1802 +
1803 + try {
1804 + camp.setCampaignTypeSettings(newCamp.getSettings().toString());
1805 + } catch (NullPointerException e) {
1806 + camp.setCampaignTypeSettings("");
1807 + e.printStackTrace();
1808 + }
1809 + mCampaignsList.add(camp);
1810 + }
1811 +
1812 + executorShops.shutdownNow();
1813 +// receiver.onSuccess(mCampaignsList);
1814 + future.set(mCampaignsList);
1815 + });
1816 + }
1817 + } else {
1818 + LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel();
1819 + dynatraceEvent.setEventName("custom_error_campaigns_loyalty");
1820 + EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent));
1821 +// receiver.onFailure(2);
1822 + future.set(new ArrayList<Campaign>());
1823 + }
1824 + } else {
1825 + LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel();
1826 + dynatraceEvent.setEventName("custom_error_campaigns_loyalty");
1827 + EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent));
1828 +// receiver.onFailure(response.code());
1829 + future.set(new ArrayList<Campaign>());
1830 + }
1831 + }
1832 +
1833 + @Override
1834 + public void onFailure(@NonNull Call<ResponseBody> call, @NonNull Throwable t) {
1835 + LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel();
1836 + dynatraceEvent.setEventName("custom_error_campaigns_loyalty");
1837 + EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent));
1838 +// receiver.onFailure(2);
1839 + future.set(new ArrayList<Campaign>());
1840 + }
1841 + });
1842 +
1843 + return future;
1844 + }
1845 +
1846 + private static /*void*/ ListenableFuture<ArrayList<Campaign>> getCampaignsPersonalizedRetro(ApiService service/*, final CallbackReceiver<ArrayList<Campaign>> receiver*/) {
1847 + SettableFuture<ArrayList<Campaign>> future = SettableFuture.create();
1848 +
1849 + String timeStamp = DateFormat.format("yyyy-MM-dd hh:mm:ss", System.currentTimeMillis()).toString();
1850 + String apiKey = WarpUtils.getApiKey(Warply.getWarplyContext());
1851 + String webId = WarpUtils.getWebId(Warply.getWarplyContext());
1852 +
1853 + Map<String, Object> jsonParamsCampaigns = new ArrayMap<>();
1854 + Map<String, Object> jsonParams = new ArrayMap<>();
1855 + jsonParams.put("action", "retrieve");
1856 + jsonParams.put("language", WarplyProperty.getLanguage(Warply.getWarplyContext()));
1857 +
1858 + jsonParamsCampaigns.put("campaigns", jsonParams);
1859 + RequestBody campaignsPersonalizedRequest = RequestBody.create(MediaType.get("application/json; charset=utf-8"), (new JSONObject(jsonParamsCampaigns)).toString());
1860 +
1861 + Call<ResponseBody> campaignsPersonalizedCall = service.getCampaignsPersonalized(
1862 + WarplyProperty.getAppUuid(Warply.getWarplyContext()),
1863 + campaignsPersonalizedRequest,
1864 + timeStamp,
1865 + "android:" + Warply.getWarplyContext().getPackageName(),
1866 + new WarplyDeviceInfoCollector(Warply.getWarplyContext()).getUniqueDeviceId(),
1867 + "mobile",
1868 + webId,
1869 + WarpUtils.produceSignature(apiKey + timeStamp),
1870 + "Bearer " + WarplyDBHelper.getInstance(Warply.getWarplyContext()).getAuthValue("access_token")
1871 + );
1872 +
1873 + campaignsPersonalizedCall.enqueue(new Callback<ResponseBody>() {
1874 + @Override
1875 + public void onResponse(@NonNull Call<ResponseBody> call, @NonNull Response<ResponseBody> response) {
1876 + if (response.code() == 200 && response.body() != null) {
1877 + JSONObject jobjCampaignsResponse = null;
1878 + try {
1879 + jobjCampaignsResponse = new JSONObject(response.body().string());
1880 + } catch (Exception e) {
1881 + e.printStackTrace();
1882 + }
1883 +
1884 + if (jobjCampaignsResponse != null && jobjCampaignsResponse.has("status") && jobjCampaignsResponse.optString("status", "2").equals("1")) {
1885 + LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel();
1886 + dynatraceEvent.setEventName("custom_success_campaigns_loyalty");
1887 + EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent));
1888 +
1889 + JSONArray jCampaignsBody = null;
1890 + try {
1891 + jCampaignsBody = jobjCampaignsResponse.optJSONObject("context").optJSONObject("MAPP_CAMPAIGNING").optJSONArray("campaigns");
1892 + } catch (Exception e) {
1893 + e.printStackTrace();
1894 + }
1895 +
1896 + if (jCampaignsBody != null) {
1897 + ArrayList<NewCampaign> tempCampaigns = new ArrayList<>();
1898 + ArrayList<Campaign> mCampaignsList = new ArrayList<>();
1899 +
1900 + final ExecutorService executorShops = Executors.newFixedThreadPool(1);
1901 + JSONArray finalCampaignsJBody = jCampaignsBody;
1902 + executorShops.submit(() -> {
1903 + for (int i = 0; i < finalCampaignsJBody.length(); ++i) {
1904 + tempCampaigns.add(new NewCampaign(finalCampaignsJBody.optJSONObject(i)));
1905 + }
1906 + for (NewCampaign newCamp : tempCampaigns) {
1907 + Campaign camp = new Campaign();
1908 + camp.setIndexUrl(newCamp.getIndexUrl());
1909 + camp.setLogoUrl(newCamp.getLogoUrl());
1910 + camp.setMessage(newCamp.getMessage());
1911 + camp.setOfferCategory(newCamp.getCommunicationCategory());
1912 + camp.setSessionUUID(newCamp.getCommunicationUUID());
1913 + camp.setTitle(newCamp.getTitle());
1914 + camp.setSubtitle(newCamp.getSubtitle());
1915 + camp.setSorting(newCamp.getSorting());
1916 + camp.setNew(newCamp.getIsNew());
1917 + camp.setType(newCamp.getCampaignType());
1918 + try {
1919 + camp.setExtraFields(newCamp.getExtraFields().toString());
1920 + if (!TextUtils.isEmpty(newCamp.getExtraFields().toString())) {
1921 + JSONObject extraFieldsResp = WarpJSONParser.getJSONFromString(newCamp.getExtraFields().toString());
1922 + if (extraFieldsResp != null) {
1923 + if (extraFieldsResp.has("Banner_title")) {
1924 + camp.setBannerTitle(extraFieldsResp.optString("Banner_title", ""));
1925 + }
1926 + if (extraFieldsResp.has("Banner_img")) {
1927 + camp.setBannerImage(extraFieldsResp.optString("Banner_img", ""));
1928 + }
1929 + }
1930 + } else {
1931 + camp.setBannerImage("");
1932 + camp.setBannerTitle("");
1933 + }
1934 + } catch (NullPointerException e) {
1935 + camp.setExtraFields("");
1936 + camp.setBannerImage("");
1937 + camp.setBannerTitle("");
1938 + e.printStackTrace();
1939 + }
1940 +
1941 + try {
1942 + camp.setCampaignTypeSettings(newCamp.getSettings().toString());
1943 + } catch (NullPointerException e) {
1944 + camp.setCampaignTypeSettings("");
1945 + e.printStackTrace();
1946 + }
1947 + mCampaignsList.add(camp);
1948 + }
1949 +
1950 + executorShops.shutdownNow();
1951 +// receiver.onSuccess(mCampaignsList);
1952 + future.set(mCampaignsList);
1953 + });
1954 + }
1955 + } else {
1956 + LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel();
1957 + dynatraceEvent.setEventName("custom_error_campaigns_personalized_loyalty");
1958 + EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent));
1959 +// receiver.onFailure(2);
1960 + future.set(new ArrayList<Campaign>());
1961 + }
1962 + } else if (response.code() == 401) {
1963 + refreshToken(new WarplyRefreshTokenRequest(), new CallbackReceiver<JSONObject>() {
1964 + @Override
1965 + public void onSuccess(JSONObject result) {
1966 + int status = result.optInt("status", 2);
1967 + if (status == 1)
1968 + getCampaignsPersonalizedRetro(service/*, receiver*/);
1969 + else {
1970 +// receiver.onFailure(status);
1971 + future.set(new ArrayList<Campaign>());
1972 + }
1973 + }
1974 +
1975 + @Override
1976 + public void onFailure(int errorCode) {
1977 +// receiver.onFailure(errorCode);
1978 + future.set(new ArrayList<Campaign>());
1979 + }
1980 + });
1981 + } else {
1982 + LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel();
1983 + dynatraceEvent.setEventName("custom_error_campaigns_personalized_loyalty");
1984 + EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent));
1985 +// receiver.onFailure(response.code());
1986 + future.set(new ArrayList<Campaign>());
1987 + }
1988 + }
1989 +
1990 + @Override
1991 + public void onFailure(@NonNull Call<ResponseBody> call, @NonNull Throwable t) {
1992 + LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel();
1993 + dynatraceEvent.setEventName("custom_error_campaigns_personalized_loyalty");
1994 + EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent));
1995 +// receiver.onFailure(2);
1996 + future.set(new ArrayList<Campaign>());
1997 + }
1998 + });
1999 +
2000 + return future;
2001 + }
2002 +
1601 public static void getCampaignsPersonalized(WarplyGetCampaignsRequest request, final CallbackReceiver<ArrayList<Campaign>> receiver) { 2003 public static void getCampaignsPersonalized(WarplyGetCampaignsRequest request, final CallbackReceiver<ArrayList<Campaign>> receiver) {
1602 WarpUtils.log("************* WARPLY Get Campaigns Request ********************"); 2004 WarpUtils.log("************* WARPLY Get Campaigns Request ********************");
1603 WarpUtils.log("[WARP Trace] WARPLY Get Campaigns Request is active"); 2005 WarpUtils.log("[WARP Trace] WARPLY Get Campaigns Request is active");
...@@ -3037,7 +3439,25 @@ public class WarplyManager { ...@@ -3037,7 +3439,25 @@ public class WarplyManager {
3037 couponsetsCall.enqueue(new Callback<ResponseBody>() { 3439 couponsetsCall.enqueue(new Callback<ResponseBody>() {
3038 @Override 3440 @Override
3039 public void onResponse(@NonNull Call<ResponseBody> call, @NonNull Response<ResponseBody> response) { 3441 public void onResponse(@NonNull Call<ResponseBody> call, @NonNull Response<ResponseBody> response) {
3040 - callback.onResponse(call, response); 3442 + if (response.code() == 401) {
3443 + refreshToken(new WarplyRefreshTokenRequest(), new CallbackReceiver<JSONObject>() {
3444 + @Override
3445 + public void onSuccess(JSONObject result) {
3446 + int status = result.optInt("status", 2);
3447 + if (status == 1)
3448 + getCouponsetsRetro(service, isFiltered, callback);
3449 + else
3450 + callback.onFailure(call, new Throwable());
3451 + }
3452 +
3453 + @Override
3454 + public void onFailure(int errorCode) {
3455 + callback.onFailure(call, new Throwable());
3456 + }
3457 + });
3458 + } else {
3459 + callback.onResponse(call, response);
3460 + }
3041 } 3461 }
3042 3462
3043 @Override 3463 @Override
...@@ -3107,7 +3527,25 @@ public class WarplyManager { ...@@ -3107,7 +3527,25 @@ public class WarplyManager {
3107 telematicsCall.enqueue(new Callback<ResponseBody>() { 3527 telematicsCall.enqueue(new Callback<ResponseBody>() {
3108 @Override 3528 @Override
3109 public void onResponse(@NonNull Call<ResponseBody> call, @NonNull Response<ResponseBody> response) { 3529 public void onResponse(@NonNull Call<ResponseBody> call, @NonNull Response<ResponseBody> response) {
3110 - callback.onResponse(call, response); 3530 + if (response.code() == 401) {
3531 + refreshToken(new WarplyRefreshTokenRequest(), new CallbackReceiver<JSONObject>() {
3532 + @Override
3533 + public void onSuccess(JSONObject result) {
3534 + int status = result.optInt("status", 2);
3535 + if (status == 1)
3536 + sendTelematicsData(service, accelerationTimestamps, callback);
3537 + else
3538 + callback.onFailure(call, new Throwable());
3539 + }
3540 +
3541 + @Override
3542 + public void onFailure(int errorCode) {
3543 + callback.onFailure(call, new Throwable());
3544 + }
3545 + });
3546 + } else {
3547 + callback.onResponse(call, response);
3548 + }
3111 } 3549 }
3112 3550
3113 @Override 3551 @Override
...@@ -3145,7 +3583,25 @@ public class WarplyManager { ...@@ -3145,7 +3583,25 @@ public class WarplyManager {
3145 telematicsCall.enqueue(new Callback<ResponseBody>() { 3583 telematicsCall.enqueue(new Callback<ResponseBody>() {
3146 @Override 3584 @Override
3147 public void onResponse(@NonNull Call<ResponseBody> call, @NonNull Response<ResponseBody> response) { 3585 public void onResponse(@NonNull Call<ResponseBody> call, @NonNull Response<ResponseBody> response) {
3148 - callback.onResponse(call, response); 3586 + if (response.code() == 401) {
3587 + refreshToken(new WarplyRefreshTokenRequest(), new CallbackReceiver<JSONObject>() {
3588 + @Override
3589 + public void onSuccess(JSONObject result) {
3590 + int status = result.optInt("status", 2);
3591 + if (status == 1)
3592 + cancelUnifiedCoupon(service, transactionID, callback);
3593 + else
3594 + callback.onFailure(call, new Throwable());
3595 + }
3596 +
3597 + @Override
3598 + public void onFailure(int errorCode) {
3599 + callback.onFailure(call, new Throwable());
3600 + }
3601 + });
3602 + } else {
3603 + callback.onResponse(call, response);
3604 + }
3149 } 3605 }
3150 3606
3151 @Override 3607 @Override
...@@ -3182,7 +3638,25 @@ public class WarplyManager { ...@@ -3182,7 +3638,25 @@ public class WarplyManager {
3182 telematicsCall.enqueue(new Callback<ResponseBody>() { 3638 telematicsCall.enqueue(new Callback<ResponseBody>() {
3183 @Override 3639 @Override
3184 public void onResponse(@NonNull Call<ResponseBody> call, @NonNull Response<ResponseBody> response) { 3640 public void onResponse(@NonNull Call<ResponseBody> call, @NonNull Response<ResponseBody> response) {
3185 - callback.onResponse(call, response); 3641 + if (response.code() == 401) {
3642 + refreshToken(new WarplyRefreshTokenRequest(), new CallbackReceiver<JSONObject>() {
3643 + @Override
3644 + public void onSuccess(JSONObject result) {
3645 + int status = result.optInt("status", 2);
3646 + if (status == 1)
3647 + getTelematicsHistory(service, callback);
3648 + else
3649 + callback.onFailure(call, new Throwable());
3650 + }
3651 +
3652 + @Override
3653 + public void onFailure(int errorCode) {
3654 + callback.onFailure(call, new Throwable());
3655 + }
3656 + });
3657 + } else {
3658 + callback.onResponse(call, response);
3659 + }
3186 } 3660 }
3187 3661
3188 @Override 3662 @Override
...@@ -3220,7 +3694,25 @@ public class WarplyManager { ...@@ -3220,7 +3694,25 @@ public class WarplyManager {
3220 telematicsCall.enqueue(new Callback<ResponseBody>() { 3694 telematicsCall.enqueue(new Callback<ResponseBody>() {
3221 @Override 3695 @Override
3222 public void onResponse(@NonNull Call<ResponseBody> call, @NonNull Response<ResponseBody> response) { 3696 public void onResponse(@NonNull Call<ResponseBody> call, @NonNull Response<ResponseBody> response) {
3223 - callback.onResponse(call, response); 3697 + if (response.code() == 401) {
3698 + refreshToken(new WarplyRefreshTokenRequest(), new CallbackReceiver<JSONObject>() {
3699 + @Override
3700 + public void onSuccess(JSONObject result) {
3701 + int status = result.optInt("status", 2);
3702 + if (status == 1)
3703 + getTripMetrics(service, tripId, callback);
3704 + else
3705 + callback.onFailure(call, new Throwable());
3706 + }
3707 +
3708 + @Override
3709 + public void onFailure(int errorCode) {
3710 + callback.onFailure(call, new Throwable());
3711 + }
3712 + });
3713 + } else {
3714 + callback.onResponse(call, response);
3715 + }
3224 } 3716 }
3225 3717
3226 @Override 3718 @Override
...@@ -3259,7 +3751,25 @@ public class WarplyManager { ...@@ -3259,7 +3751,25 @@ public class WarplyManager {
3259 telematicsCall.enqueue(new Callback<ResponseBody>() { 3751 telematicsCall.enqueue(new Callback<ResponseBody>() {
3260 @Override 3752 @Override
3261 public void onResponse(@NonNull Call<ResponseBody> call, @NonNull Response<ResponseBody> response) { 3753 public void onResponse(@NonNull Call<ResponseBody> call, @NonNull Response<ResponseBody> response) {
3262 - callback.onResponse(call, response); 3754 + if (response.code() == 401) {
3755 + refreshToken(new WarplyRefreshTokenRequest(), new CallbackReceiver<JSONObject>() {
3756 + @Override
3757 + public void onSuccess(JSONObject result) {
3758 + int status = result.optInt("status", 2);
3759 + if (status == 1)
3760 + rateTrip(service, tripId, isPositive, callback);
3761 + else
3762 + callback.onFailure(call, new Throwable());
3763 + }
3764 +
3765 + @Override
3766 + public void onFailure(int errorCode) {
3767 + callback.onFailure(call, new Throwable());
3768 + }
3769 + });
3770 + } else {
3771 + callback.onResponse(call, response);
3772 + }
3263 } 3773 }
3264 3774
3265 @Override 3775 @Override
......