From a7d8f84b78d4d4ed4e5a3f304df8aad68e24058a Mon Sep 17 00:00:00 2001 From: Roman Romanov Date: Fri, 30 Jun 2017 08:56:54 +0400 Subject: [PATCH] [android] Added viator products cache. --- .../com/mapswithme/maps/viator/Viator.java | 26 +++++++++++++++---- .../maps/widget/placepage/PlacePageView.java | 2 +- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/android/src/com/mapswithme/maps/viator/Viator.java b/android/src/com/mapswithme/maps/viator/Viator.java index d2d8ec4349..ee1e94324c 100644 --- a/android/src/com/mapswithme/maps/viator/Viator.java +++ b/android/src/com/mapswithme/maps/viator/Viator.java @@ -5,20 +5,25 @@ import android.support.annotation.NonNull; import com.mapswithme.util.NetworkPolicy; import java.lang.ref.WeakReference; +import java.util.HashMap; +import java.util.Map; public final class Viator { @NonNull private static WeakReference sViatorListener = new WeakReference<>(null); + @NonNull + private static final Map sProductsCache = new HashMap<>(); public static void setViatorListener(@NonNull ViatorListener listener) { sViatorListener = new WeakReference<>(listener); } - public static void onViatorProductsReceived(@NonNull String destId, - @NonNull ViatorProduct[] products) + private static void onViatorProductsReceived(@NonNull String destId, + @NonNull ViatorProduct[] products) { + sProductsCache.put(destId, products); ViatorListener listener = sViatorListener.get(); if (listener != null) listener.onViatorProductsReceived(destId, products); @@ -26,9 +31,20 @@ public final class Viator private Viator() {} - public static native void nativeRequestViatorProducts(@NonNull NetworkPolicy policy, - @NonNull String destId, - @NonNull String currency); + public static void requestViatorProducts(@NonNull NetworkPolicy policy, + @NonNull String destId, + @NonNull String currency) + { + ViatorProduct[] products = sProductsCache.get(destId); + if (products != null && products.length > 0) + onViatorProductsReceived(destId, products); + + nativeRequestViatorProducts(policy, destId, currency); + } + + private static native void nativeRequestViatorProducts(@NonNull NetworkPolicy policy, + @NonNull String destId, + @NonNull String currency); public interface ViatorListener { diff --git a/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java b/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java index c52178828d..775afc0163 100644 --- a/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java +++ b/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java @@ -1106,7 +1106,7 @@ public class PlacePageView extends RelativeLayout if (mSponsored.getType() == Sponsored.TYPE_BOOKING) Sponsored.requestPrice(mSponsored.getId(), currencyCode, policy); else if (mSponsored.getType() == Sponsored.TYPE_VIATOR) - Viator.nativeRequestViatorProducts(policy, mSponsored.getId(), currencyCode); + Viator.requestViatorProducts(policy, mSponsored.getId(), currencyCode); } Sponsored.requestInfo(mSponsored, Locale.getDefault().toString(), policy); }