Panagiotis Triantafyllou

new internal version

...@@ -2,7 +2,7 @@ apply plugin: 'com.android.library' ...@@ -2,7 +2,7 @@ apply plugin: 'com.android.library'
2 2
3 ext { 3 ext {
4 PUBLISH_GROUP_ID = 'ly.warp' 4 PUBLISH_GROUP_ID = 'ly.warp'
5 - PUBLISH_VERSION = '4.5.4-cosbeta28' 5 + PUBLISH_VERSION = '4.5.4-cosbeta28i'
6 PUBLISH_ARTIFACT_ID = 'warply-android-sdk' 6 PUBLISH_ARTIFACT_ID = 'warply-android-sdk'
7 } 7 }
8 8
......
1 package ly.warp.sdk.activities; 1 package ly.warp.sdk.activities;
2 2
3 import android.app.Activity; 3 import android.app.Activity;
4 -import android.app.Dialog;
5 import android.os.Bundle; 4 import android.os.Bundle;
6 import android.text.Html; 5 import android.text.Html;
7 import android.text.TextUtils; 6 import android.text.TextUtils;
...@@ -11,6 +10,8 @@ import android.widget.LinearLayout; ...@@ -11,6 +10,8 @@ import android.widget.LinearLayout;
11 import android.widget.ProgressBar; 10 import android.widget.ProgressBar;
12 import android.widget.TextView; 11 import android.widget.TextView;
13 12
13 +import androidx.appcompat.app.AlertDialog;
14 +
14 import com.bumptech.glide.Glide; 15 import com.bumptech.glide.Glide;
15 import com.bumptech.glide.load.engine.DiskCacheStrategy; 16 import com.bumptech.glide.load.engine.DiskCacheStrategy;
16 17
...@@ -19,8 +20,10 @@ import org.json.JSONObject; ...@@ -19,8 +20,10 @@ import org.json.JSONObject;
19 import ly.warp.sdk.R; 20 import ly.warp.sdk.R;
20 import ly.warp.sdk.io.callbacks.CallbackReceiver; 21 import ly.warp.sdk.io.callbacks.CallbackReceiver;
21 import ly.warp.sdk.io.models.Coupon; 22 import ly.warp.sdk.io.models.Coupon;
23 +import ly.warp.sdk.io.models.CouponList;
22 import ly.warp.sdk.io.models.Couponset; 24 import ly.warp.sdk.io.models.Couponset;
23 import ly.warp.sdk.io.request.WarplyRedeemCouponRequest; 25 import ly.warp.sdk.io.request.WarplyRedeemCouponRequest;
26 +import ly.warp.sdk.io.request.WarplyUserCouponsRequest;
24 import ly.warp.sdk.utils.managers.WarplyManager; 27 import ly.warp.sdk.utils.managers.WarplyManager;
25 28
26 29
...@@ -41,6 +44,7 @@ public class CouponsetInfoActivity extends Activity implements View.OnClickListe ...@@ -41,6 +44,7 @@ public class CouponsetInfoActivity extends Activity implements View.OnClickListe
41 private ProgressBar mPbLoading; 44 private ProgressBar mPbLoading;
42 private Coupon mCoupon; 45 private Coupon mCoupon;
43 private boolean mIsTermsPressed = false; 46 private boolean mIsTermsPressed = false;
47 + private AlertDialog mAlertDialogCouponset;
44 48
45 // =========================================================== 49 // ===========================================================
46 // Methods for/from SuperClass/Interfaces 50 // Methods for/from SuperClass/Interfaces
...@@ -136,6 +140,11 @@ public class CouponsetInfoActivity extends Activity implements View.OnClickListe ...@@ -136,6 +140,11 @@ public class CouponsetInfoActivity extends Activity implements View.OnClickListe
136 mCoupon.setDescription(mCouponset.getShortDescription()); 140 mCoupon.setDescription(mCouponset.getShortDescription());
137 mCoupon.setImage(mCouponset.getImgPreview()); 141 mCoupon.setImage(mCouponset.getImgPreview());
138 mCoupon.setName(mCouponset.getName()); 142 mCoupon.setName(mCouponset.getName());
143 + new Thread(() -> {
144 + if (!Thread.currentThread().isInterrupted()) {
145 + WarplyManager.getUserCouponsWithCouponsets(new WarplyUserCouponsRequest(), mUserCouponsReceiver);
146 + }
147 + }).start();
139 showDialog(true, 1); 148 showDialog(true, 1);
140 } else { 149 } else {
141 showDialog(false, status); 150 showDialog(false, status);
...@@ -150,41 +159,60 @@ public class CouponsetInfoActivity extends Activity implements View.OnClickListe ...@@ -150,41 +159,60 @@ public class CouponsetInfoActivity extends Activity implements View.OnClickListe
150 }; 159 };
151 160
152 private void showDialog(boolean success, int status) { 161 private void showDialog(boolean success, int status) {
153 - Dialog dialog = new Dialog(this, R.style.PopUpDialog);
154 - dialog.setContentView(R.layout.dlg_success);
155 - dialog.getWindow().setBackgroundDrawableResource(R.drawable.banner_border_white);
156 - dialog.show();
157 -
158 - LinearLayout mLlButton = dialog.findViewById(R.id.ll_dl_redeem);
159 - TextView tvTitle = dialog.findViewById(R.id.tv_dl_title);
160 - TextView tvSubtitle = dialog.findViewById(R.id.tv_dl_subtitle);
161 -
162 if (success) { 162 if (success) {
163 - tvTitle.setText(getString(R.string.cos_dlg_success_title)); 163 + mAlertDialogCouponset = new AlertDialog.Builder(this)
164 - tvSubtitle.setText(getString(R.string.cos_dlg_success_subtitle)); 164 + .setTitle(R.string.cos_dlg_success_couponset_title)
165 + .setMessage(R.string.cos_dlg_success_couponset_subtitle)
166 + .setPositiveButton(R.string.cos_dlg_positive_button2, (dialogPositive, whichPositive) -> {
167 + dialogPositive.dismiss();
168 + if (success) {
169 + onBackPressed();
170 + }
171 + })
172 + .show();
165 } else { 173 } else {
166 if (status == 3) { 174 if (status == 3) {
167 - tvTitle.setText(getString(R.string.cos_dlg_error_title)); 175 + mAlertDialogCouponset = new AlertDialog.Builder(this)
168 - tvSubtitle.setText(getString(R.string.cos_dlg_error_subtitle_non_buyable)); 176 + .setTitle(R.string.cos_dlg_error_title)
177 + .setMessage(R.string.cos_dlg_error_subtitle_non_buyable)
178 + .setPositiveButton(R.string.cos_dlg_positive_button2, (dialogPositive, whichPositive) -> {
179 + dialogPositive.dismiss();
180 + })
181 + .show();
169 } else if (status == 5) { 182 } else if (status == 5) {
170 - tvTitle.setText(getString(R.string.cos_dlg_error_title)); 183 + mAlertDialogCouponset = new AlertDialog.Builder(this)
171 - tvSubtitle.setText(getString(R.string.cos_dlg_error_subtitle_no_points)); 184 + .setTitle(R.string.cos_dlg_error_title)
185 + .setMessage(R.string.cos_dlg_error_subtitle_no_points)
186 + .setPositiveButton(R.string.cos_dlg_positive_button2, (dialogPositive, whichPositive) -> {
187 + dialogPositive.dismiss();
188 + })
189 + .show();
172 } else { 190 } else {
173 - tvTitle.setText(getString(R.string.cos_dlg_error_title)); 191 + mAlertDialogCouponset = new AlertDialog.Builder(this)
174 - tvSubtitle.setText(getString(R.string.cos_dlg_error_subtitle)); 192 + .setTitle(R.string.cos_dlg_error_title)
193 + .setMessage(R.string.cos_dlg_error_subtitle)
194 + .setPositiveButton(R.string.cos_dlg_positive_button2, (dialogPositive, whichPositive) -> {
195 + dialogPositive.dismiss();
196 + })
197 + .show();
175 } 198 }
176 } 199 }
177 -
178 - mLlButton.setOnClickListener(view -> {
179 - dialog.dismiss();
180 - if (success) {
181 - onBackPressed();
182 - }
183 - });
184 } 200 }
185 201
186 // =========================================================== 202 // ===========================================================
187 // Inner and Anonymous Classes 203 // Inner and Anonymous Classes
188 // =========================================================== 204 // ===========================================================
189 205
206 + private final CallbackReceiver<CouponList> mUserCouponsReceiver = new CallbackReceiver<CouponList>() {
207 + @Override
208 + public void onSuccess(CouponList result) {
209 + Thread.currentThread().interrupt();
210 + }
211 +
212 + @Override
213 + public void onFailure(int errorCode) {
214 + Thread.currentThread().interrupt();
215 + }
216 + };
217 +
190 } 218 }
......
1 package ly.warp.sdk.activities; 1 package ly.warp.sdk.activities;
2 2
3 import android.app.Activity; 3 import android.app.Activity;
4 +import android.content.Intent;
4 import android.os.Bundle; 5 import android.os.Bundle;
5 import android.text.TextUtils; 6 import android.text.TextUtils;
6 import android.util.Log; 7 import android.util.Log;
...@@ -15,6 +16,7 @@ import androidx.recyclerview.widget.RecyclerView; ...@@ -15,6 +16,7 @@ import androidx.recyclerview.widget.RecyclerView;
15 import org.greenrobot.eventbus.EventBus; 16 import org.greenrobot.eventbus.EventBus;
16 import org.json.JSONObject; 17 import org.json.JSONObject;
17 18
19 +import java.io.Serializable;
18 import java.util.ArrayList; 20 import java.util.ArrayList;
19 import java.util.HashMap; 21 import java.util.HashMap;
20 import java.util.HashSet; 22 import java.util.HashSet;
...@@ -22,6 +24,7 @@ import java.util.HashSet; ...@@ -22,6 +24,7 @@ import java.util.HashSet;
22 import ly.warp.sdk.R; 24 import ly.warp.sdk.R;
23 import ly.warp.sdk.io.models.Campaign; 25 import ly.warp.sdk.io.models.Campaign;
24 import ly.warp.sdk.io.models.CampaignList; 26 import ly.warp.sdk.io.models.CampaignList;
27 +import ly.warp.sdk.io.models.Couponset;
25 import ly.warp.sdk.io.models.LoyaltyContextualOfferModel; 28 import ly.warp.sdk.io.models.LoyaltyContextualOfferModel;
26 import ly.warp.sdk.io.models.LoyaltyGiftsForYouOfferClickEvent; 29 import ly.warp.sdk.io.models.LoyaltyGiftsForYouOfferClickEvent;
27 import ly.warp.sdk.io.models.LoyaltyGiftsForYouPackage; 30 import ly.warp.sdk.io.models.LoyaltyGiftsForYouPackage;
...@@ -130,6 +133,31 @@ public class GiftsForYouActivity extends Activity implements View.OnClickListene ...@@ -130,6 +133,31 @@ public class GiftsForYouActivity extends Activity implements View.OnClickListene
130 if (dataItem.getDataType() == 1) { 133 if (dataItem.getDataType() == 1) {
131 EventBus.getDefault().post(new WarplyEventBusManager(new LoyaltyGiftsForYouOfferClickEvent())); 134 EventBus.getDefault().post(new WarplyEventBusManager(new LoyaltyGiftsForYouOfferClickEvent()));
132 135
136 + if (dataItem.getCampaign().getType().equals("coupon")) {
137 + try {
138 + JSONObject campaignSettings = WarpJSONParser.getJSONFromString(dataItem.getCampaign().getCampaignTypeSettings());
139 + if (campaignSettings != null) {
140 + if (campaignSettings.has("couponset")) {
141 + String cpnUuid = campaignSettings.optString("couponset");
142 + for (Couponset cpns : WarplyManagerHelper.getCouponsets()) {
143 + if (cpns.getUuid().equals(cpnUuid)) {
144 + Intent intent = new Intent(GiftsForYouActivity.this, CouponsetInfoActivity.class);
145 + intent.putExtra("couponset", (Serializable) cpns);
146 + startActivity(intent);
147 + break;
148 + }
149 + }
150 + } else {
151 + startActivity(WarpViewActivity.createIntentFromURL(this, WarplyManagerHelper.constructCampaignUrl(dataItem.getCampaign())));
152 + }
153 + }
154 + } catch (Exception exception) {
155 + exception.printStackTrace();
156 + }
157 +
158 + return;
159 + }
160 +
133 try { 161 try {
134 JSONObject extraFields = WarpJSONParser.getJSONFromString(dataItem.getCampaign().getExtraFields()); 162 JSONObject extraFields = WarpJSONParser.getJSONFromString(dataItem.getCampaign().getExtraFields());
135 if (extraFields != null) { 163 if (extraFields != null) {
......
...@@ -69,6 +69,7 @@ public class Campaign implements Parcelable, Serializable { ...@@ -69,6 +69,7 @@ public class Campaign implements Parcelable, Serializable {
69 private static final String DISPLAY_TYPE = "display_type"; 69 private static final String DISPLAY_TYPE = "display_type";
70 private static final String ACTIONS = "actions"; 70 private static final String ACTIONS = "actions";
71 private static final String BUS_ID = "busId"; 71 private static final String BUS_ID = "busId";
72 + private static final String CAMPAIGN_TYPE_SETTINGS = "campaign_type_settings";
72 73
73 /* Member variables of the Campaign object */ 74 /* Member variables of the Campaign object */
74 75
...@@ -95,6 +96,7 @@ public class Campaign implements Parcelable, Serializable { ...@@ -95,6 +96,7 @@ public class Campaign implements Parcelable, Serializable {
95 private String indexUrl; 96 private String indexUrl;
96 private String busId; 97 private String busId;
97 private ArrayList<CampaignAction> actions = new ArrayList<>(); 98 private ArrayList<CampaignAction> actions = new ArrayList<>();
99 + private final String campaignTypeSettings;
98 100
99 /** 101 /**
100 * Basic constructor used to create an object from a String, representing a 102 * Basic constructor used to create an object from a String, representing a
...@@ -141,6 +143,7 @@ public class Campaign implements Parcelable, Serializable { ...@@ -141,6 +143,7 @@ public class Campaign implements Parcelable, Serializable {
141 this.deliveryMethod = json.optString(DELIVERY_METHOD); 143 this.deliveryMethod = json.optString(DELIVERY_METHOD);
142 this.displayType = json.optString(DISPLAY_TYPE); 144 this.displayType = json.optString(DISPLAY_TYPE);
143 this.busId = json.optString(BUS_ID); 145 this.busId = json.optString(BUS_ID);
146 + this.campaignTypeSettings = json.optString(CAMPAIGN_TYPE_SETTINGS);
144 147
145 JSONArray actions = json.optJSONArray(ACTIONS); 148 JSONArray actions = json.optJSONArray(ACTIONS);
146 if (actions != null) { 149 if (actions != null) {
...@@ -176,6 +179,7 @@ public class Campaign implements Parcelable, Serializable { ...@@ -176,6 +179,7 @@ public class Campaign implements Parcelable, Serializable {
176 this.displayType = source.readString(); 179 this.displayType = source.readString();
177 this.actions = source.readArrayList(CampaignAction.class.getClassLoader()); 180 this.actions = source.readArrayList(CampaignAction.class.getClassLoader());
178 this.busId = source.readString(); 181 this.busId = source.readString();
182 + this.campaignTypeSettings = source.readString();
179 } 183 }
180 184
181 @Override 185 @Override
...@@ -195,14 +199,15 @@ public class Campaign implements Parcelable, Serializable { ...@@ -195,14 +199,15 @@ public class Campaign implements Parcelable, Serializable {
195 dest.writeInt(this.opened); 199 dest.writeInt(this.opened);
196 dest.writeInt(this.isNew ? 1 : 0); 200 dest.writeInt(this.isNew ? 1 : 0);
197 dest.writeString(this.logoUrl); 201 dest.writeString(this.logoUrl);
198 - dest.writeString(extraFields); 202 + dest.writeString(this.extraFields);
199 - dest.writeString(type); 203 + dest.writeString(this.type);
200 dest.writeInt(this.expired ? 1 : 0); 204 dest.writeInt(this.expired ? 1 : 0);
201 dest.writeInt(this.show ? 1 : 0); 205 dest.writeInt(this.show ? 1 : 0);
202 - dest.writeString(deliveryMethod); 206 + dest.writeString(this.deliveryMethod);
203 - dest.writeString(displayType); 207 + dest.writeString(this.displayType);
204 - dest.writeList(actions); 208 + dest.writeList(this.actions);
205 - dest.writeString(busId); 209 + dest.writeString(this.busId);
210 + dest.writeString(this.campaignTypeSettings);
206 } 211 }
207 212
208 /** 213 /**
...@@ -236,6 +241,7 @@ public class Campaign implements Parcelable, Serializable { ...@@ -236,6 +241,7 @@ public class Campaign implements Parcelable, Serializable {
236 jObj.putOpt(DELIVERY_METHOD, this.deliveryMethod); 241 jObj.putOpt(DELIVERY_METHOD, this.deliveryMethod);
237 jObj.putOpt(DISPLAY_TYPE, this.displayType); 242 jObj.putOpt(DISPLAY_TYPE, this.displayType);
238 jObj.put(BUS_ID, this.busId); 243 jObj.put(BUS_ID, this.busId);
244 + jObj.put(CAMPAIGN_TYPE_SETTINGS, this.campaignTypeSettings);
239 } catch (JSONException e) { 245 } catch (JSONException e) {
240 if (WarpConstants.DEBUG) { 246 if (WarpConstants.DEBUG) {
241 e.printStackTrace(); 247 e.printStackTrace();
...@@ -465,6 +471,10 @@ public class Campaign implements Parcelable, Serializable { ...@@ -465,6 +471,10 @@ public class Campaign implements Parcelable, Serializable {
465 isNew = aNew; 471 isNew = aNew;
466 } 472 }
467 473
474 + public String getCampaignTypeSettings() {
475 + return campaignTypeSettings;
476 + }
477 +
468 @Override 478 @Override
469 public int describeContents() { 479 public int describeContents() {
470 return 0; 480 return 0;
......
...@@ -102,6 +102,8 @@ ...@@ -102,6 +102,8 @@
102 <string name="cos_dlg_positive_coupon_subtitle">Είσαι σίγουρος ότι θέλεις να κάνεις δώρο το κουπόνι σου;</string> 102 <string name="cos_dlg_positive_coupon_subtitle">Είσαι σίγουρος ότι θέλεις να κάνεις δώρο το κουπόνι σου;</string>
103 <string name="cos_dlg_negative_button3">Αποστολή</string> 103 <string name="cos_dlg_negative_button3">Αποστολή</string>
104 <string name="cos_dlg_error_subtitle2">Τα πεδία δεν είναι σωστά</string> 104 <string name="cos_dlg_error_subtitle2">Τα πεδία δεν είναι σωστά</string>
105 + <string name="cos_dlg_success_couponset_title">Το κουπόνι σου ενεργοποιήθηκε</string>
106 + <string name="cos_dlg_success_couponset_subtitle">Μπορείς να το βρεις στην αρχική οθόνη της εφαρμογής και στην ενότητα ενεργά δώρα!</string>
105 107
106 <string-array name="coupons_array"> 108 <string-array name="coupons_array">
107 <item>Κουπόνια</item> 109 <item>Κουπόνια</item>
......