Showing
3 changed files
with
131 additions
and
8 deletions
| ... | @@ -4,6 +4,7 @@ import android.app.Activity; | ... | @@ -4,6 +4,7 @@ import android.app.Activity; |
| 4 | import android.content.Context; | 4 | import android.content.Context; |
| 5 | import android.os.Bundle; | 5 | import android.os.Bundle; |
| 6 | import android.text.TextUtils; | 6 | import android.text.TextUtils; |
| 7 | +import android.text.method.LinkMovementMethod; | ||
| 7 | import android.util.Log; | 8 | import android.util.Log; |
| 8 | import android.view.LayoutInflater; | 9 | import android.view.LayoutInflater; |
| 9 | import android.view.View; | 10 | import android.view.View; |
| ... | @@ -13,6 +14,9 @@ import android.widget.LinearLayout; | ... | @@ -13,6 +14,9 @@ import android.widget.LinearLayout; |
| 13 | import android.widget.TextView; | 14 | import android.widget.TextView; |
| 14 | 15 | ||
| 15 | import androidx.appcompat.app.AlertDialog; | 16 | import androidx.appcompat.app.AlertDialog; |
| 17 | +import androidx.core.text.HtmlCompat; | ||
| 18 | +import androidx.work.OneTimeWorkRequest; | ||
| 19 | +import androidx.work.WorkManager; | ||
| 16 | 20 | ||
| 17 | import com.bumptech.glide.Glide; | 21 | import com.bumptech.glide.Glide; |
| 18 | import com.bumptech.glide.load.engine.DiskCacheStrategy; | 22 | import com.bumptech.glide.load.engine.DiskCacheStrategy; |
| ... | @@ -23,14 +27,20 @@ import org.json.JSONArray; | ... | @@ -23,14 +27,20 @@ import org.json.JSONArray; |
| 23 | import org.json.JSONException; | 27 | import org.json.JSONException; |
| 24 | import org.json.JSONObject; | 28 | import org.json.JSONObject; |
| 25 | 29 | ||
| 30 | +import java.util.ArrayList; | ||
| 31 | + | ||
| 26 | import ly.warp.sdk.R; | 32 | import ly.warp.sdk.R; |
| 27 | import ly.warp.sdk.io.callbacks.CallbackReceiver; | 33 | import ly.warp.sdk.io.callbacks.CallbackReceiver; |
| 34 | +import ly.warp.sdk.io.models.Campaign; | ||
| 28 | import ly.warp.sdk.io.models.Consumer; | 35 | import ly.warp.sdk.io.models.Consumer; |
| 36 | +import ly.warp.sdk.io.models.CouponList; | ||
| 29 | import ly.warp.sdk.io.models.LoyaltyContextualOfferModel; | 37 | import ly.warp.sdk.io.models.LoyaltyContextualOfferModel; |
| 30 | import ly.warp.sdk.io.models.LoyaltySDKFirebaseEventModel; | 38 | import ly.warp.sdk.io.models.LoyaltySDKFirebaseEventModel; |
| 31 | import ly.warp.sdk.io.models.WarplyCCMSEnabledModel; | 39 | import ly.warp.sdk.io.models.WarplyCCMSEnabledModel; |
| 40 | +import ly.warp.sdk.io.models.WarplyCouponsChangedEventModel; | ||
| 32 | import ly.warp.sdk.io.request.CosmoteSubmitOrderRequest; | 41 | import ly.warp.sdk.io.request.CosmoteSubmitOrderRequest; |
| 33 | import ly.warp.sdk.io.request.WarplyConsumerRequest; | 42 | import ly.warp.sdk.io.request.WarplyConsumerRequest; |
| 43 | +import ly.warp.sdk.services.EventCampaignService; | ||
| 34 | import ly.warp.sdk.utils.managers.WarplyAnalyticsManager; | 44 | import ly.warp.sdk.utils.managers.WarplyAnalyticsManager; |
| 35 | import ly.warp.sdk.utils.managers.WarplyEventBusManager; | 45 | import ly.warp.sdk.utils.managers.WarplyEventBusManager; |
| 36 | import ly.warp.sdk.utils.managers.WarplyManager; | 46 | import ly.warp.sdk.utils.managers.WarplyManager; |
| ... | @@ -48,11 +58,12 @@ public class ContextualActivity extends Activity implements View.OnClickListener | ... | @@ -48,11 +58,12 @@ public class ContextualActivity extends Activity implements View.OnClickListener |
| 48 | // Fields | 58 | // Fields |
| 49 | // =========================================================== | 59 | // =========================================================== |
| 50 | 60 | ||
| 51 | - private ImageView mIvBack, mIvCampaignPhoto; | 61 | + private ImageView mIvBack, mIvCampaignPhoto, mIvTermsArrow; |
| 52 | - private TextView mTvCampaignTitle, mTvCampaignSubtitle; | 62 | + private TextView mTvCampaignTitle, mTvCampaignSubtitle, mTvTerms, mTvTermsValue; |
| 53 | private LoyaltyContextualOfferModel mCCMS = new LoyaltyContextualOfferModel(); | 63 | private LoyaltyContextualOfferModel mCCMS = new LoyaltyContextualOfferModel(); |
| 54 | - private LinearLayout mLlActivateOffer; | 64 | + private LinearLayout mLlActivateOffer, mLlTerms; |
| 55 | private Consumer mConsumer; | 65 | private Consumer mConsumer; |
| 66 | + private boolean mIsTermsPressed = false; | ||
| 56 | private String mSender = ""; | 67 | private String mSender = ""; |
| 57 | private AlertDialog mAlertDialogAskActivate, mAlertDialogErrorActivating, mAlertDialogSuccessActivating; | 68 | private AlertDialog mAlertDialogAskActivate, mAlertDialogErrorActivating, mAlertDialogSuccessActivating; |
| 58 | 69 | ||
| ... | @@ -72,6 +83,10 @@ public class ContextualActivity extends Activity implements View.OnClickListener | ... | @@ -72,6 +83,10 @@ public class ContextualActivity extends Activity implements View.OnClickListener |
| 72 | mIvCampaignPhoto = findViewById(R.id.imageView6); | 83 | mIvCampaignPhoto = findViewById(R.id.imageView6); |
| 73 | mTvCampaignSubtitle = findViewById(R.id.textView14); | 84 | mTvCampaignSubtitle = findViewById(R.id.textView14); |
| 74 | mLlActivateOffer = findViewById(R.id.ll_activate_button); | 85 | mLlActivateOffer = findViewById(R.id.ll_activate_button); |
| 86 | + mTvTerms = findViewById(R.id.tv_terms); | ||
| 87 | + mLlTerms = findViewById(R.id.ll_terms_inner); | ||
| 88 | + mIvTermsArrow = findViewById(R.id.iv_terms_arrow); | ||
| 89 | + mTvTermsValue = findViewById(R.id.tv_terms_value); | ||
| 75 | 90 | ||
| 76 | initViews(); | 91 | initViews(); |
| 77 | } | 92 | } |
| ... | @@ -98,6 +113,18 @@ public class ContextualActivity extends Activity implements View.OnClickListener | ... | @@ -98,6 +113,18 @@ public class ContextualActivity extends Activity implements View.OnClickListener |
| 98 | } | 113 | } |
| 99 | if (view.getId() == R.id.ll_activate_button) { | 114 | if (view.getId() == R.id.ll_activate_button) { |
| 100 | showActivationDialog(); | 115 | showActivationDialog(); |
| 116 | + return; | ||
| 117 | + } | ||
| 118 | + if (view.getId() == R.id.ll_terms_inner) { | ||
| 119 | + if (mIsTermsPressed) { | ||
| 120 | + mIsTermsPressed = false; | ||
| 121 | + mTvTermsValue.setVisibility(View.GONE); | ||
| 122 | + mIvTermsArrow.setImageDrawable(getDrawable(R.drawable.ic_down_dark_new)); | ||
| 123 | + } else { | ||
| 124 | + mIsTermsPressed = true; | ||
| 125 | + mTvTermsValue.setVisibility(View.VISIBLE); | ||
| 126 | + mIvTermsArrow.setImageDrawable(getDrawable(R.drawable.ic_up_dark_new)); | ||
| 127 | + } | ||
| 101 | } | 128 | } |
| 102 | } | 129 | } |
| 103 | 130 | ||
| ... | @@ -108,6 +135,10 @@ public class ContextualActivity extends Activity implements View.OnClickListener | ... | @@ -108,6 +135,10 @@ public class ContextualActivity extends Activity implements View.OnClickListener |
| 108 | private void initViews() { | 135 | private void initViews() { |
| 109 | mTvCampaignTitle.setText(mCCMS.getTitleOffer()); | 136 | mTvCampaignTitle.setText(mCCMS.getTitleOffer()); |
| 110 | mTvCampaignSubtitle.setText(mCCMS.getDescription()); | 137 | mTvCampaignSubtitle.setText(mCCMS.getDescription()); |
| 138 | + mLlTerms.setOnClickListener(this); | ||
| 139 | +// mTvTermsValue.setText(HtmlCompat.fromHtml(mCCMS.getTermsAndConditions(), HtmlCompat.FROM_HTML_MODE_COMPACT)); | ||
| 140 | +// mTvTermsValue.setMovementMethod(LinkMovementMethod.getInstance()); | ||
| 141 | + mTvTermsValue.setText(mCCMS.getTermsAndConditions()); | ||
| 111 | 142 | ||
| 112 | if (!TextUtils.isEmpty(mCCMS.getImageUrl())) { | 143 | if (!TextUtils.isEmpty(mCCMS.getImageUrl())) { |
| 113 | Glide.with(this) | 144 | Glide.with(this) |
| ... | @@ -277,6 +308,7 @@ public class ContextualActivity extends Activity implements View.OnClickListener | ... | @@ -277,6 +308,7 @@ public class ContextualActivity extends Activity implements View.OnClickListener |
| 277 | .setMessage(R.string.cos_dlg_activate_success_subtitle) | 308 | .setMessage(R.string.cos_dlg_activate_success_subtitle) |
| 278 | .setPositiveButton(R.string.cos_dlg_positive_button2, (dialogPositive, whichPositive) -> { | 309 | .setPositiveButton(R.string.cos_dlg_positive_button2, (dialogPositive, whichPositive) -> { |
| 279 | dialogPositive.dismiss(); | 310 | dialogPositive.dismiss(); |
| 311 | + onBackPressed(); | ||
| 280 | }) | 312 | }) |
| 281 | .show(); | 313 | .show(); |
| 282 | } | 314 | } |
| ... | @@ -303,9 +335,11 @@ public class ContextualActivity extends Activity implements View.OnClickListener | ... | @@ -303,9 +335,11 @@ public class ContextualActivity extends Activity implements View.OnClickListener |
| 303 | public void onSuccess(JSONObject result) { | 335 | public void onSuccess(JSONObject result) { |
| 304 | int status = result.optInt("status", 2); | 336 | int status = result.optInt("status", 2); |
| 305 | // runOnUiThread(() -> { | 337 | // runOnUiThread(() -> { |
| 306 | - if (status == 1) | 338 | + if (status == 1) { |
| 307 | successActivatingDialog(); | 339 | successActivatingDialog(); |
| 308 | - else | 340 | + WarplyManager.getUserCouponsWithCouponsets(mUserCouponsReceiver); |
| 341 | + WarplyManager.getCampaigns(mCampaignsCallback); | ||
| 342 | + } else | ||
| 309 | errorActivatingDialog(); | 343 | errorActivatingDialog(); |
| 310 | // }); | 344 | // }); |
| 311 | } | 345 | } |
| ... | @@ -316,4 +350,31 @@ public class ContextualActivity extends Activity implements View.OnClickListener | ... | @@ -316,4 +350,31 @@ public class ContextualActivity extends Activity implements View.OnClickListener |
| 316 | errorActivatingDialog(); | 350 | errorActivatingDialog(); |
| 317 | } | 351 | } |
| 318 | }; | 352 | }; |
| 353 | + | ||
| 354 | + private final CallbackReceiver<CouponList> mUserCouponsReceiver = new CallbackReceiver<CouponList>() { | ||
| 355 | + @Override | ||
| 356 | + public void onSuccess(CouponList result) { | ||
| 357 | + WarplyCouponsChangedEventModel couponsChanged = new WarplyCouponsChangedEventModel(); | ||
| 358 | + couponsChanged.setChanged(true); | ||
| 359 | + EventBus.getDefault().post(new WarplyEventBusManager(couponsChanged)); | ||
| 360 | + } | ||
| 361 | + | ||
| 362 | + @Override | ||
| 363 | + public void onFailure(int errorCode) { | ||
| 364 | + | ||
| 365 | + } | ||
| 366 | + }; | ||
| 367 | + | ||
| 368 | + private CallbackReceiver<ArrayList<Campaign>> mCampaignsCallback = new CallbackReceiver<ArrayList<Campaign>>() { | ||
| 369 | + @Override | ||
| 370 | + public void onSuccess(ArrayList<Campaign> result) { | ||
| 371 | + OneTimeWorkRequest mywork = new OneTimeWorkRequest.Builder(EventCampaignService.class).build(); | ||
| 372 | + WorkManager.getInstance(ContextualActivity.this).enqueue(mywork); | ||
| 373 | + } | ||
| 374 | + | ||
| 375 | + @Override | ||
| 376 | + public void onFailure(int errorCode) { | ||
| 377 | + | ||
| 378 | + } | ||
| 379 | + }; | ||
| 319 | } | 380 | } | ... | ... |
| ... | @@ -139,7 +139,7 @@ public class WarpView extends WebView implements DefaultLifecycleObserver { | ... | @@ -139,7 +139,7 @@ public class WarpView extends WebView implements DefaultLifecycleObserver { |
| 139 | private Activity WarpActivity; | 139 | private Activity WarpActivity; |
| 140 | private String geolocationOrigin = ""; | 140 | private String geolocationOrigin = ""; |
| 141 | private Callback geolocationCallback; | 141 | private Callback geolocationCallback; |
| 142 | - private static boolean mWebviewLoaded = false; | 142 | + private static boolean mWebviewLoaded = false, mWebviewSupermarket = false; |
| 143 | 143 | ||
| 144 | // =========================================================== | 144 | // =========================================================== |
| 145 | // Constructors | 145 | // Constructors |
| ... | @@ -159,6 +159,7 @@ public class WarpView extends WebView implements DefaultLifecycleObserver { | ... | @@ -159,6 +159,7 @@ public class WarpView extends WebView implements DefaultLifecycleObserver { |
| 159 | ProcessLifecycleOwner.get().getLifecycle().addObserver(this); | 159 | ProcessLifecycleOwner.get().getLifecycle().addObserver(this); |
| 160 | WarpActivity = activity; | 160 | WarpActivity = activity; |
| 161 | mWebviewLoaded = false; | 161 | mWebviewLoaded = false; |
| 162 | + mWebviewSupermarket = false; | ||
| 162 | init(); | 163 | init(); |
| 163 | } | 164 | } |
| 164 | 165 | ||
| ... | @@ -436,6 +437,13 @@ public class WarpView extends WebView implements DefaultLifecycleObserver { | ... | @@ -436,6 +437,13 @@ public class WarpView extends WebView implements DefaultLifecycleObserver { |
| 436 | 437 | ||
| 437 | }); | 438 | }); |
| 438 | } | 439 | } |
| 440 | + if (mWebviewSupermarket) { | ||
| 441 | + String scriptSourceInit = "webviewDidFocusRefresh(" + String.valueOf(mWebviewSupermarket) + ");"; | ||
| 442 | + WarpView.this.evaluateJavascript(scriptSourceInit, s -> { | ||
| 443 | + | ||
| 444 | + }); | ||
| 445 | + mWebviewSupermarket = false; | ||
| 446 | + } | ||
| 439 | } | 447 | } |
| 440 | 448 | ||
| 441 | @Override | 449 | @Override |
| ... | @@ -472,7 +480,10 @@ public class WarpView extends WebView implements DefaultLifecycleObserver { | ... | @@ -472,7 +480,10 @@ public class WarpView extends WebView implements DefaultLifecycleObserver { |
| 472 | public void sendMessage(String message) { | 480 | public void sendMessage(String message) { |
| 473 | if (message.contains("event")) { | 481 | if (message.contains("event")) { |
| 474 | String[] parts = message.split(":"); | 482 | String[] parts = message.split(":"); |
| 475 | - if (parts[1].equals("closeArtwork")) { | 483 | + if (parts[1].equals("webviewRefresh")) { |
| 484 | + mWebviewSupermarket = true; | ||
| 485 | + } else if (parts[1].equals("closeArtwork")) { | ||
| 486 | + mWebviewSupermarket = false; | ||
| 476 | QuestionnaireEventModel questionnaireEvent = new QuestionnaireEventModel(); | 487 | QuestionnaireEventModel questionnaireEvent = new QuestionnaireEventModel(); |
| 477 | questionnaireEvent.setName(parts[1]); | 488 | questionnaireEvent.setName(parts[1]); |
| 478 | EventBus.getDefault().post(new WarplyEventBusManager(questionnaireEvent)); | 489 | EventBus.getDefault().post(new WarplyEventBusManager(questionnaireEvent)); | ... | ... |
| ... | @@ -101,10 +101,11 @@ | ... | @@ -101,10 +101,11 @@ |
| 101 | android:id="@+id/ll_activate_button" | 101 | android:id="@+id/ll_activate_button" |
| 102 | android:layout_width="160dp" | 102 | android:layout_width="160dp" |
| 103 | android:layout_height="55dp" | 103 | android:layout_height="55dp" |
| 104 | + android:layout_marginTop="27dp" | ||
| 104 | android:background="@drawable/selector_button_green" | 105 | android:background="@drawable/selector_button_green" |
| 105 | android:gravity="center" | 106 | android:gravity="center" |
| 106 | android:orientation="horizontal" | 107 | android:orientation="horizontal" |
| 107 | - app:layout_constraintBottom_toBottomOf="parent" | 108 | + app:layout_constraintTop_toBottomOf="@+id/textView14" |
| 108 | app:layout_constraintEnd_toEndOf="parent" | 109 | app:layout_constraintEnd_toEndOf="parent" |
| 109 | app:layout_constraintStart_toStartOf="parent"> | 110 | app:layout_constraintStart_toStartOf="parent"> |
| 110 | 111 | ||
| ... | @@ -119,6 +120,56 @@ | ... | @@ -119,6 +120,56 @@ |
| 119 | android:textSize="16sp" /> | 120 | android:textSize="16sp" /> |
| 120 | </LinearLayout> | 121 | </LinearLayout> |
| 121 | 122 | ||
| 123 | + <RelativeLayout | ||
| 124 | + android:id="@+id/rl_terms" | ||
| 125 | + android:layout_width="wrap_content" | ||
| 126 | + android:layout_height="wrap_content" | ||
| 127 | + android:layout_marginTop="32dp" | ||
| 128 | + android:gravity="center" | ||
| 129 | + app:layout_constraintTop_toBottomOf="@+id/ll_activate_button" | ||
| 130 | + app:layout_constraintStart_toStartOf="parent" | ||
| 131 | + app:layout_constraintEnd_toEndOf="parent"> | ||
| 132 | + | ||
| 133 | + <LinearLayout | ||
| 134 | + android:id="@+id/ll_terms_inner" | ||
| 135 | + android:layout_width="wrap_content" | ||
| 136 | + android:layout_height="wrap_content" | ||
| 137 | + android:layout_centerHorizontal="true" | ||
| 138 | + android:gravity="center" | ||
| 139 | + android:orientation="horizontal"> | ||
| 140 | + | ||
| 141 | + <TextView | ||
| 142 | + android:id="@+id/tv_terms" | ||
| 143 | + fontPath="fonts/PeridotPE-Bold.ttf" | ||
| 144 | + android:layout_width="wrap_content" | ||
| 145 | + android:layout_height="wrap_content" | ||
| 146 | + android:text="@string/cos_coupon_terms_title" | ||
| 147 | + android:textColor="@color/cos_light_black" | ||
| 148 | + android:textSize="15sp" /> | ||
| 149 | + | ||
| 150 | + <ImageView | ||
| 151 | + android:id="@+id/iv_terms_arrow" | ||
| 152 | + android:layout_width="14dp" | ||
| 153 | + android:layout_height="14dp" | ||
| 154 | + android:layout_marginTop="3dp" | ||
| 155 | + android:layout_marginStart="6dp" | ||
| 156 | + android:src="@drawable/ic_down_dark_new" /> | ||
| 157 | + </LinearLayout> | ||
| 158 | + | ||
| 159 | + <TextView | ||
| 160 | + android:id="@+id/tv_terms_value" | ||
| 161 | + fontPath="fonts/PeridotPE-Regular.ttf" | ||
| 162 | + android:layout_width="wrap_content" | ||
| 163 | + android:layout_height="wrap_content" | ||
| 164 | + android:layout_below="@+id/ll_terms_inner" | ||
| 165 | + android:layout_marginHorizontal="32dp" | ||
| 166 | + android:layout_marginTop="16dp" | ||
| 167 | + android:textColor="@color/cos_light_black" | ||
| 168 | + android:textSize="14sp" | ||
| 169 | + android:visibility="gone" | ||
| 170 | + tools:text="@string/cos_coupon_date" | ||
| 171 | + tools:visibility="visible" /> | ||
| 172 | + </RelativeLayout> | ||
| 122 | </androidx.constraintlayout.widget.ConstraintLayout> | 173 | </androidx.constraintlayout.widget.ConstraintLayout> |
| 123 | </androidx.constraintlayout.widget.ConstraintLayout> | 174 | </androidx.constraintlayout.widget.ConstraintLayout> |
| 124 | </ScrollView> | 175 | </ScrollView> | ... | ... |
-
Please register or login to post a comment