Showing
4 changed files
with
171 additions
and
19 deletions
... | @@ -200,7 +200,8 @@ public class CouponInfoActivity extends Activity implements View.OnClickListener | ... | @@ -200,7 +200,8 @@ public class CouponInfoActivity extends Activity implements View.OnClickListener |
200 | // WarplyCouponsChangedEventModel couponsChanged = new WarplyCouponsChangedEventModel(); | 200 | // WarplyCouponsChangedEventModel couponsChanged = new WarplyCouponsChangedEventModel(); |
201 | // couponsChanged.setChanged(true); | 201 | // couponsChanged.setChanged(true); |
202 | // EventBus.getDefault().post(new WarplyEventBusManager(couponsChanged)); | 202 | // EventBus.getDefault().post(new WarplyEventBusManager(couponsChanged)); |
203 | - onBackPressed(); | 203 | +// onBackPressed(); |
204 | + finish(); | ||
204 | } | 205 | } |
205 | } | 206 | } |
206 | } | 207 | } | ... | ... |
... | @@ -254,7 +254,14 @@ public class CouponShareActivity extends Activity implements View.OnClickListene | ... | @@ -254,7 +254,14 @@ public class CouponShareActivity extends Activity implements View.OnClickListene |
254 | dialogPositive.dismiss(); | 254 | dialogPositive.dismiss(); |
255 | if (mIsFromWallet) { | 255 | if (mIsFromWallet) { |
256 | setResult(RESULT_OK, new Intent()); | 256 | setResult(RESULT_OK, new Intent()); |
257 | - onBackPressed(); | 257 | +// onBackPressed(); |
258 | + finish(); | ||
259 | + } | ||
260 | + }) | ||
261 | + .setOnDismissListener(dialog -> { | ||
262 | + if (mIsFromWallet) { | ||
263 | + setResult(RESULT_OK); | ||
264 | + finish(); | ||
258 | } | 265 | } |
259 | }) | 266 | }) |
260 | .show(); | 267 | .show(); |
... | @@ -321,16 +328,11 @@ public class CouponShareActivity extends Activity implements View.OnClickListene | ... | @@ -321,16 +328,11 @@ public class CouponShareActivity extends Activity implements View.OnClickListene |
321 | .concat(mCoupon.getCouponsetDetails().getName())); | 328 | .concat(mCoupon.getCouponsetDetails().getName())); |
322 | mPbLoading.setVisibility(View.VISIBLE); | 329 | mPbLoading.setVisibility(View.VISIBLE); |
323 | 330 | ||
324 | - new Thread(() -> { | 331 | + WarplyManager.cosmoteCouponSharing( |
325 | - if (!Thread.currentThread().isInterrupted()) { | 332 | + mCoupon.getCoupon(), |
326 | - WarplyManager.cosmoteCouponSharing(new CosmoteCouponSharingRequest() | 333 | + mSender, |
327 | - .setCoupon(mCoupon.getCoupon()) | 334 | + mEdtReceiver.getText().toString(), |
328 | - .setSender(mSender) | 335 | + mCouponSharingCallback); |
329 | - .setReceiver(mEdtReceiver.getText().toString()) | ||
330 | - , mCouponSharingCallback); | ||
331 | - } | ||
332 | - Thread.currentThread().interrupt(); | ||
333 | - }).start(); | ||
334 | }) | 336 | }) |
335 | .setNegativeButton(R.string.cos_dlg_negative_button2, (dialogNegative, whichNegative) -> { | 337 | .setNegativeButton(R.string.cos_dlg_negative_button2, (dialogNegative, whichNegative) -> { |
336 | mIsSharePressed = false; | 338 | mIsSharePressed = false; |
... | @@ -355,6 +357,7 @@ public class CouponShareActivity extends Activity implements View.OnClickListene | ... | @@ -355,6 +357,7 @@ public class CouponShareActivity extends Activity implements View.OnClickListene |
355 | private final CallbackReceiver<JSONObject> mCouponSharingCallback = new CallbackReceiver<JSONObject>() { | 357 | private final CallbackReceiver<JSONObject> mCouponSharingCallback = new CallbackReceiver<JSONObject>() { |
356 | @Override | 358 | @Override |
357 | public void onSuccess(JSONObject result) { | 359 | public void onSuccess(JSONObject result) { |
360 | + mPbLoading.setVisibility(View.GONE); | ||
358 | mIsSharePressed = false; | 361 | mIsSharePressed = false; |
359 | int status = result.optInt("status", 2); | 362 | int status = result.optInt("status", 2); |
360 | String message = result.optString("msg", ""); | 363 | String message = result.optString("msg", ""); |
... | @@ -363,11 +366,7 @@ public class CouponShareActivity extends Activity implements View.OnClickListene | ... | @@ -363,11 +366,7 @@ public class CouponShareActivity extends Activity implements View.OnClickListene |
363 | // WarplyManager.getUserCouponsWithCouponsetsInternal(mUserCouponsReceiver); | 366 | // WarplyManager.getUserCouponsWithCouponsetsInternal(mUserCouponsReceiver); |
364 | WarplyManagerHelper.removeCouponItem(mCoupon); | 367 | WarplyManagerHelper.removeCouponItem(mCoupon); |
365 | /* New Addition end */ | 368 | /* New Addition end */ |
366 | - } | ||
367 | 369 | ||
368 | - runOnUiThread(() -> { | ||
369 | - mPbLoading.setVisibility(View.GONE); | ||
370 | - if (status == 1) { | ||
371 | WarplyCouponsChangedEventModel couponsChanged = new WarplyCouponsChangedEventModel(); | 370 | WarplyCouponsChangedEventModel couponsChanged = new WarplyCouponsChangedEventModel(); |
372 | couponsChanged.setChanged(true); | 371 | couponsChanged.setChanged(true); |
373 | EventBus.getDefault().post(new WarplyEventBusManager(couponsChanged)); | 372 | EventBus.getDefault().post(new WarplyEventBusManager(couponsChanged)); |
... | @@ -377,17 +376,14 @@ public class CouponShareActivity extends Activity implements View.OnClickListene | ... | @@ -377,17 +376,14 @@ public class CouponShareActivity extends Activity implements View.OnClickListene |
377 | wrongNumberDialog(message); | 376 | wrongNumberDialog(message); |
378 | else | 377 | else |
379 | errorSharingDialog(); | 378 | errorSharingDialog(); |
380 | - }); | ||
381 | } | 379 | } |
382 | 380 | ||
383 | @Override | 381 | @Override |
384 | public void onFailure(int errorCode) { | 382 | public void onFailure(int errorCode) { |
385 | mIsSharePressed = false; | 383 | mIsSharePressed = false; |
386 | Log.v("COUPON_SHARE", String.valueOf(errorCode)); | 384 | Log.v("COUPON_SHARE", String.valueOf(errorCode)); |
387 | - runOnUiThread(() -> { | ||
388 | mPbLoading.setVisibility(View.GONE); | 385 | mPbLoading.setVisibility(View.GONE); |
389 | errorSharingDialog(); | 386 | errorSharingDialog(); |
390 | - }); | ||
391 | } | 387 | } |
392 | }; | 388 | }; |
393 | 389 | ... | ... |
... | @@ -124,6 +124,18 @@ public interface ApiService { | ... | @@ -124,6 +124,18 @@ public interface ApiService { |
124 | @Header(WarpConstants.HEADER_AUTHORIZATION) String bearer); | 124 | @Header(WarpConstants.HEADER_AUTHORIZATION) String bearer); |
125 | 125 | ||
126 | @Headers("Content-Type: application/json") | 126 | @Headers("Content-Type: application/json") |
127 | + @POST("/oauth/{appUuid}/context") | ||
128 | + Call<ResponseBody> shareCoupon(@Path("appUuid") String appUuid, | ||
129 | + @Body RequestBody request, | ||
130 | + @Header(WarpConstants.HEADER_DATE) String timeStamp, | ||
131 | + @Header(WarpConstants.HEADER_LOYALTY_BUNDLE_ID) String bundleId, | ||
132 | + @Header(WarpConstants.HEADER_UNIQUE_DEVICE_ID) String deviceId, | ||
133 | + @Header(WarpConstants.HEADER_CHANNEL) String channel, | ||
134 | + @Header(WarpConstants.HEADER_WEB_ID) String webId, | ||
135 | + @Header(WarpConstants.HEADER_SIGNATURE) String signature, | ||
136 | + @Header(WarpConstants.HEADER_AUTHORIZATION) String bearer); | ||
137 | + | ||
138 | + @Headers("Content-Type: application/json") | ||
127 | @POST("/api/mobile/v2/{appUuid}/context/") | 139 | @POST("/api/mobile/v2/{appUuid}/context/") |
128 | Call<ResponseBody> getMerchants(@Path("appUuid") String appUuid, | 140 | Call<ResponseBody> getMerchants(@Path("appUuid") String appUuid, |
129 | @Body RequestBody request, | 141 | @Body RequestBody request, | ... | ... |
... | @@ -1880,6 +1880,149 @@ public class WarplyManager { | ... | @@ -1880,6 +1880,149 @@ public class WarplyManager { |
1880 | return campaignLoyaltyList; | 1880 | return campaignLoyaltyList; |
1881 | } | 1881 | } |
1882 | 1882 | ||
1883 | + public static void cosmoteCouponSharing(String coupon, String sender, String receiverMsisdn, final CallbackReceiver<JSONObject> receiver) { | ||
1884 | + WarpUtils.log("************* WARPLY Cosmote Coupon Sharing Request ********************"); | ||
1885 | + WarpUtils.log("[WARP Trace] WARPLY Cosmote Coupon Sharing Request is active"); | ||
1886 | + WarpUtils.log("**************************************************"); | ||
1887 | + | ||
1888 | + ApiService service = ApiClient.getRetrofitInstance().create(ApiService.class); | ||
1889 | + ListeningExecutorService executorService = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(1)); | ||
1890 | + | ||
1891 | + ListenableFuture<JSONObject> futureSharing = cosmoteSharingRetro(service, coupon, sender, receiverMsisdn); | ||
1892 | + | ||
1893 | + ListenableFuture<List<Object>> allResultsFuture = Futures.allAsList(futureSharing); | ||
1894 | + ListenableFuture<JSONObject> mergedResultFuture = Futures.transformAsync( | ||
1895 | + allResultsFuture, | ||
1896 | + results -> { | ||
1897 | + JSONObject resultCoupons = (JSONObject) results.get(0); | ||
1898 | + return executorService.submit(() -> resultCoupons); | ||
1899 | + }, | ||
1900 | + executorService | ||
1901 | + ); | ||
1902 | + | ||
1903 | + Futures.addCallback(mergedResultFuture, new FutureCallback<JSONObject>() { | ||
1904 | + @Override | ||
1905 | + public void onSuccess(JSONObject mergedResult) { | ||
1906 | + executorService.shutdownNow(); | ||
1907 | + new Handler(Looper.getMainLooper()).post(() -> receiver.onSuccess(mergedResult)); | ||
1908 | + } | ||
1909 | + | ||
1910 | + @Override | ||
1911 | + public void onFailure(Throwable throwable) { | ||
1912 | + executorService.shutdownNow(); | ||
1913 | + new Handler(Looper.getMainLooper()).post(() -> receiver.onFailure(2)); | ||
1914 | + } | ||
1915 | + }, executorService); | ||
1916 | + } | ||
1917 | + | ||
1918 | + private static /*void*/ ListenableFuture<JSONObject> cosmoteSharingRetro(ApiService service, String coupon, String sender, String receiver) { | ||
1919 | + SettableFuture<JSONObject> future = SettableFuture.create(); | ||
1920 | + | ||
1921 | + String timeStamp = DateFormat.format("yyyy-MM-dd hh:mm:ss", System.currentTimeMillis()).toString(); | ||
1922 | + String apiKey = WarpUtils.getApiKey(Warply.getWarplyContext()); | ||
1923 | + String webId = WarpUtils.getWebId(Warply.getWarplyContext()); | ||
1924 | + | ||
1925 | + Map<String, Object> jsonParamsShare = new ArrayMap<>(); | ||
1926 | + Map<String, Object> jsonParams = new ArrayMap<>(); | ||
1927 | + jsonParams.put("action", "share"); | ||
1928 | + jsonParams.put("coupon", coupon); | ||
1929 | + jsonParams.put("sender_msisdn", sender); | ||
1930 | + jsonParams.put("receiver_msisdn", receiver); | ||
1931 | + | ||
1932 | + jsonParamsShare.put("coupon", jsonParams); | ||
1933 | + RequestBody merchantsRequest = RequestBody.create(MediaType.get("application/json; charset=utf-8"), (new JSONObject(jsonParamsShare)).toString()); | ||
1934 | + | ||
1935 | + Call<ResponseBody> shareCall = service.shareCoupon( | ||
1936 | + WarplyProperty.getAppUuid(Warply.getWarplyContext()), | ||
1937 | + merchantsRequest, | ||
1938 | + timeStamp, | ||
1939 | + "android:" + Warply.getWarplyContext().getPackageName(), | ||
1940 | + new WarplyDeviceInfoCollector(Warply.getWarplyContext()).getUniqueDeviceId(), | ||
1941 | + "mobile", | ||
1942 | + webId, | ||
1943 | + WarpUtils.produceSignature(apiKey + timeStamp), | ||
1944 | + "Bearer " + WarplyDBHelper.getInstance(Warply.getWarplyContext()).getAuthValue("access_token") | ||
1945 | + ); | ||
1946 | + | ||
1947 | + shareCall.enqueue(new Callback<ResponseBody>() { | ||
1948 | + @Override | ||
1949 | + public void onResponse(@NonNull Call<ResponseBody> call, @NonNull Response<ResponseBody> response) { | ||
1950 | + if (response.code() == 200 && response.body() != null) { | ||
1951 | + JSONObject jobjSharingResponse = null; | ||
1952 | + try { | ||
1953 | + jobjSharingResponse = new JSONObject(response.body().string()); | ||
1954 | + } catch (Exception e) { | ||
1955 | + e.printStackTrace(); | ||
1956 | + } | ||
1957 | + | ||
1958 | + if (jobjSharingResponse != null && jobjSharingResponse.has("status")) { | ||
1959 | + int status = jobjSharingResponse.optInt("status", 2); | ||
1960 | + JSONObject jResponse = new JSONObject(); | ||
1961 | + | ||
1962 | + LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel(); | ||
1963 | + if (status == 1 || status == 3 || status == 4) { | ||
1964 | + dynatraceEvent.setEventName("custom_success_coupon_sharing_loyalty"); | ||
1965 | + EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent)); | ||
1966 | + try { | ||
1967 | + jResponse.putOpt("status", status); | ||
1968 | + jResponse.putOpt("msg", jobjSharingResponse.optString("msg", "")); | ||
1969 | + } catch (JSONException e) { | ||
1970 | + throw new RuntimeException(e); | ||
1971 | + } | ||
1972 | + } else { | ||
1973 | + dynatraceEvent.setEventName("custom_error_coupon_sharing_loyalty"); | ||
1974 | + EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent)); | ||
1975 | + try { | ||
1976 | + jResponse.putOpt("status", 2); | ||
1977 | + jResponse.putOpt("msg", jobjSharingResponse.optString("msg", "")); | ||
1978 | + } catch (JSONException e) { | ||
1979 | + throw new RuntimeException(e); | ||
1980 | + } | ||
1981 | + } | ||
1982 | + future.set(jResponse); | ||
1983 | + } else { | ||
1984 | + LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel(); | ||
1985 | + dynatraceEvent.setEventName("custom_error_coupon_sharing_loyalty"); | ||
1986 | + EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent)); | ||
1987 | + future.set(new JSONObject()); | ||
1988 | + } | ||
1989 | + } else if (response.code() == 401) { | ||
1990 | + refreshToken(new WarplyRefreshTokenRequest(), new CallbackReceiver<JSONObject>() { | ||
1991 | + @Override | ||
1992 | + public void onSuccess(JSONObject result) { | ||
1993 | + int status = result.optInt("status", 2); | ||
1994 | + if (status == 1) | ||
1995 | + cosmoteSharingRetro(service, coupon, sender, receiver); | ||
1996 | + else { | ||
1997 | + future.setException(new Throwable()); | ||
1998 | + } | ||
1999 | + } | ||
2000 | + | ||
2001 | + @Override | ||
2002 | + public void onFailure(int errorCode) { | ||
2003 | + future.setException(new Throwable()); | ||
2004 | + } | ||
2005 | + }); | ||
2006 | + } else { | ||
2007 | + LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel(); | ||
2008 | + dynatraceEvent.setEventName("custom_error_coupon_sharing_loyalty"); | ||
2009 | + EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent)); | ||
2010 | + future.setException(new Throwable()); | ||
2011 | + } | ||
2012 | + } | ||
2013 | + | ||
2014 | + @Override | ||
2015 | + public void onFailure(@NonNull Call<ResponseBody> call, @NonNull Throwable t) { | ||
2016 | + LoyaltySDKDynatraceEventModel dynatraceEvent = new LoyaltySDKDynatraceEventModel(); | ||
2017 | + dynatraceEvent.setEventName("custom_error_coupon_sharing_loyalty"); | ||
2018 | + EventBus.getDefault().post(new WarplyEventBusManager(dynatraceEvent)); | ||
2019 | + future.setException(new Throwable()); | ||
2020 | + } | ||
2021 | + }); | ||
2022 | + | ||
2023 | + return future; | ||
2024 | + } | ||
2025 | + | ||
1883 | public static void getUserCouponsWithCouponsets(final CallbackReceiver<CouponList> receiver) { | 2026 | public static void getUserCouponsWithCouponsets(final CallbackReceiver<CouponList> receiver) { |
1884 | WarpUtils.log("************* WARPLY User Coupons Request ********************"); | 2027 | WarpUtils.log("************* WARPLY User Coupons Request ********************"); |
1885 | WarpUtils.log("[WARP Trace] WARPLY User Coupons Request is active"); | 2028 | WarpUtils.log("[WARP Trace] WARPLY User Coupons Request is active"); | ... | ... |
-
Please register or login to post a comment