[android][promo] promo after booking jni

This commit is contained in:
Arsentiy Milchakov 2019-07-04 20:27:24 +03:00 committed by yoksnod
parent ff6627d234
commit abf5ddff23
6 changed files with 70 additions and 0 deletions

View file

@ -810,6 +810,15 @@ void Framework::GetPromoCityGallery(JNIEnv * env, jobject policy,
api->GetCityGallery(point, languages::GetCurrentNorm(), utm, onSuccess, onError);
}
promo::AfterBooking Framework::GetPromoAfterBooking(JNIEnv * env, jobject policy)
{
auto api = NativeFramework()->GetPromoApi(ToNativeNetworkPolicy(env, policy));
if (api == nullptr)
return {};
return api->GetAfterBooking(languages::GetCurrentNorm());
}
void Framework::LogLocalAdsEvent(local_ads::EventType type, double lat, double lon, uint16_t accuracy)
{
auto const & info = g_framework->GetPlacePageInfo();

View file

@ -224,6 +224,7 @@ namespace android
m2::PointD const & point, UTM utm,
promo::CityGalleryCallback const & onSuccess,
promo::OnError const & onError);
promo::AfterBooking GetPromoAfterBooking(JNIEnv * env, jobject policy);
void LogLocalAdsEvent(local_ads::EventType event, double lat, double lon, uint16_t accuracy);

View file

@ -24,6 +24,8 @@ jclass g_promoClass = nullptr;
jfieldID g_promoInstanceField = nullptr;
jmethodID g_onGalleryReceived = nullptr;
jmethodID g_onErrorReceived = nullptr;
jclass g_afterBooking = nullptr;
jmethodID g_afterBookingConstructor = nullptr;
uint64_t g_lastRequestId = 0;
void PrepareClassRefs(JNIEnv * env)
@ -59,6 +61,9 @@ void PrepareClassRefs(JNIEnv * env)
g_onGalleryReceived = jni::GetMethodID(env, promoInstance, "onCityGalleryReceived",
"(Lcom/mapswithme/maps/promo/PromoCityGallery;)V");
g_onErrorReceived = jni::GetMethodID(env, promoInstance, "onErrorReceived", "()V");
g_afterBooking = jni::GetGlobalClassRef(env, "com/mapswithme/maps/promo/PromoAfterBooking");
g_afterBookingConstructor = jni::GetConstructorID(env, g_afterBooking,
"(Ljava/lang/String;Ljava/lang/String;)V");
}
void OnSuccess(uint64_t requestId, promo::CityGallery const & gallery)
@ -136,4 +141,21 @@ Java_com_mapswithme_maps_promo_Promo_nativeRequestCityGallery(JNIEnv * env, jcla
std::bind(OnSuccess, g_lastRequestId, _1),
std::bind(OnError, g_lastRequestId));
}
JNIEXPORT jobject JNICALL
Java_com_mapswithme_maps_promo_Promo_nativeGetPromoAfterBooking(JNIEnv * env, jclass,
jobject policy)
{
PrepareClassRefs(env);
auto const result = g_framework->GetPromoAfterBooking(env, policy);
if (result.IsEmpty())
return nullptr;
jni::TScopedLocalRef promoUrl(env, jni::ToJavaString(env, result.m_promoUrl));
jni::TScopedLocalRef pictureUrl(env, jni::ToJavaString(env, result.m_pictureUrl));
jni::TScopedLocalRef author(env,
env->NewObject(g_afterBooking, g_afterBookingConstructor, promoUrl.get(), pictureUrl.get()));
}
} // extern "C"

View file

@ -52,4 +52,6 @@ public enum Promo
public native void nativeRequestCityGallery(@NonNull NetworkPolicy policy,
double lat, double lon, @UTM.UTMType int utm);
@Nullable
public static native PromoAfterBooking nativeGetPromoAfterBooking(@NonNull NetworkPolicy policy);
}

View file

@ -0,0 +1,31 @@
package com.mapswithme.maps.promo;
import android.support.annotation.NonNull;
public class PromoAfterBooking
{
@NonNull
private String mGuidesUrl;
@NonNull
private String mImageUrl;
// Called from JNI.
@SuppressWarnings("unused")
public PromoAfterBooking(@NonNull String guidesUrl, @NonNull String imageUrl)
{
mGuidesUrl = guidesUrl;
mImageUrl = imageUrl;
}
@NonNull
public String getGuidesUrl()
{
return mGuidesUrl;
}
@NonNull
public String getImageUrl()
{
return mImageUrl;
}
}

View file

@ -46,6 +46,11 @@ struct CityGallery
struct AfterBooking
{
bool IsEmpty() const
{
return m_promoUrl.empty() || m_pictureUrl.empty();
}
std::string m_promoUrl;
std::string m_pictureUrl;
};