From 41c665a8d4a540a4112c4f755210a298dd18b064 Mon Sep 17 00:00:00 2001 From: "r.kuznetsov" Date: Tue, 23 Jan 2018 14:07:39 +0300 Subject: [PATCH] Removed Cian, added Luggage Hero --- android/jni/CMakeLists.txt | 1 - android/jni/com/mapswithme/maps/Framework.cpp | 11 -- android/jni/com/mapswithme/maps/Framework.hpp | 4 - android/jni/com/mapswithme/maps/cian/Cian.cpp | 100 ---------- .../res/drawable-hdpi/ic_category_cian.png | Bin 527 -> 0 bytes .../drawable-hdpi/ic_category_cian_night.png | Bin 527 -> 0 bytes .../drawable-hdpi/ic_category_luggagehero.png | Bin 0 -> 1723 bytes .../ic_category_luggagehero_night.png | Bin 0 -> 1580 bytes android/res/drawable-hdpi/logo_cian_dark.png | Bin 2152 -> 0 bytes android/res/drawable-hdpi/logo_cian_light.png | Bin 2541 -> 0 bytes .../drawable-hdpi/logo_luggagehero_dark.png | Bin 0 -> 4176 bytes .../drawable-hdpi/logo_luggagehero_light.png | Bin 0 -> 4176 bytes .../res/drawable-mdpi/ic_category_cian.png | Bin 421 -> 0 bytes .../drawable-mdpi/ic_category_cian_night.png | Bin 421 -> 0 bytes .../drawable-mdpi/ic_category_luggagehero.png | Bin 0 -> 1153 bytes .../ic_category_luggagehero_night.png | Bin 0 -> 1119 bytes android/res/drawable-mdpi/logo_cian_dark.png | Bin 1275 -> 0 bytes android/res/drawable-mdpi/logo_cian_light.png | Bin 1492 -> 0 bytes .../drawable-mdpi/logo_luggagehero_dark.png | Bin 0 -> 2089 bytes .../drawable-mdpi/logo_luggagehero_light.png | Bin 0 -> 2089 bytes .../res/drawable-xhdpi/ic_category_cian.png | Bin 758 -> 0 bytes .../drawable-xhdpi/ic_category_cian_night.png | Bin 760 -> 0 bytes .../ic_category_luggagehero.png | Bin 0 -> 2506 bytes .../ic_category_luggagehero_night.png | Bin 0 -> 2075 bytes android/res/drawable-xhdpi/logo_cian_dark.png | Bin 2433 -> 0 bytes .../res/drawable-xhdpi/logo_cian_light.png | Bin 2600 -> 0 bytes .../drawable-xhdpi/logo_luggagehero_dark.png | Bin 0 -> 5015 bytes .../drawable-xhdpi/logo_luggagehero_light.png | Bin 0 -> 5015 bytes .../res/drawable-xxhdpi/ic_category_cian.png | Bin 973 -> 0 bytes .../ic_category_cian_night.png | Bin 974 -> 0 bytes .../ic_category_luggagehero.png | Bin 0 -> 3838 bytes .../ic_category_luggagehero_night.png | Bin 0 -> 2898 bytes .../res/drawable-xxhdpi/logo_cian_dark.png | Bin 2290 -> 0 bytes .../res/drawable-xxhdpi/logo_cian_light.png | Bin 3792 -> 0 bytes .../drawable-xxhdpi/logo_luggagehero_dark.png | Bin 0 -> 7926 bytes .../logo_luggagehero_light.png | Bin 0 -> 7926 bytes .../res/drawable-xxxhdpi/ic_category_cian.png | Bin 1390 -> 0 bytes .../ic_category_cian_night.png | Bin 1390 -> 0 bytes .../ic_category_luggagehero.png | Bin 0 -> 5213 bytes .../ic_category_luggagehero_night.png | Bin 0 -> 3766 bytes .../res/drawable-xxxhdpi/logo_cian_dark.png | Bin 5439 -> 0 bytes .../res/drawable-xxxhdpi/logo_cian_light.png | Bin 4641 -> 0 bytes .../logo_luggagehero_dark.png | Bin 0 -> 10727 bytes .../logo_luggagehero_light.png | Bin 0 -> 10727 bytes android/res/layout/card_loading.xml | 6 +- android/res/layout/item_cian_loading.xml | 19 -- android/res/layout/item_cian_more.xml | 29 --- android/res/layout/item_cian_product.xml | 67 ------- ...n.xml => item_search_category_luggage.xml} | 2 +- android/res/layout/item_viator_product.xml | 2 +- android/res/values/dimens.xml | 8 +- android/res/values/themes-attrs.xml | 2 +- android/res/values/themes-base.xml | 4 +- .../src/com/mapswithme/maps/cian/Cian.java | 64 ------- .../com/mapswithme/maps/cian/RentOffer.java | 146 -------------- .../com/mapswithme/maps/cian/RentPlace.java | 102 ---------- .../com/mapswithme/maps/gallery/Holders.java | 45 ----- .../com/mapswithme/maps/gallery/Items.java | 32 ---- .../gallery/impl/CianAdapterStrategy.java | 74 -------- .../impl/CianErrorAdapterStrategy.java | 43 ----- .../impl/CianLoadingAdapterStrategy.java | 43 ----- .../mapswithme/maps/gallery/impl/Factory.java | 26 --- .../maps/search/CategoriesAdapter.java | 24 +-- .../maps/search/SearchFragment.java | 16 +- .../maps/widget/placepage/PlacePageView.java | 81 ++------ .../maps/widget/placepage/Sponsored.java | 8 +- .../util/statistics/GalleryType.java | 9 - .../util/statistics/Statistics.java | 12 +- .../Common/Statistics/StatisticsStrings.h | 2 +- iphone/Maps/Core/Search/MWMSearch.mm | 2 +- .../ic_cian_dark.imageset/Contents.json | 23 --- .../ic_cian_dark.imageset/ic_cian_dark.png | Bin 440 -> 0 bytes .../ic_cian_dark.imageset/ic_cian_dark@2x.png | Bin 732 -> 0 bytes .../ic_cian_dark.imageset/ic_cian_dark@3x.png | Bin 821 -> 0 bytes .../ic_cian_light.imageset/Contents.json | 23 --- .../ic_cian_light.imageset/ic_cian_light.png | Bin 440 -> 0 bytes .../ic_cian_light@2x.png | Bin 736 -> 0 bytes .../ic_cian_light@3x.png | Bin 821 -> 0 bytes .../Contents.json | 12 ++ .../ic_luggagehero_dark.pdf | Bin 0 -> 6853 bytes .../Contents.json | 12 ++ .../ic_luggagehero_light.pdf | Bin 0 -> 6733 bytes .../logo_cian.imageset/Contents.json | 23 --- .../logo_cian.imageset/logo_cian.png | Bin 1474 -> 0 bytes .../logo_cian.imageset/logo_cian@2x.png | Bin 2600 -> 0 bytes .../logo_cian.imageset/logo_cian@3x.png | Bin 3792 -> 0 bytes .../logo_luggage.imageset/Contents.json | 12 ++ .../logo_luggage.imageset/logo_luggage.pdf | Bin 0 -> 12159 bytes iphone/Maps/Maps.xcodeproj/project.pbxproj | 28 --- iphone/Maps/UI/PlacePage/MWMPlacePageData.h | 11 +- iphone/Maps/UI/PlacePage/MWMPlacePageData.mm | 67 +------ .../Maps/UI/PlacePage/MWMPlacePageManager.mm | 2 - .../Content/Cian/CianElement.swift | 179 ------------------ .../Content/Cian/CianElement.xib | 167 ---------------- .../Content/Cian/CianItemModel.swift | 14 -- .../Content/Cian/PPCianCarouselCell.swift | 130 ------------- .../Content/Cian/PPCianCarouselCell.xib | 74 -------- .../PlacePageLayout/MWMPlacePageLayout.mm | 23 --- .../MWMSearchCategoriesManager.mm | 14 +- .../CategoriesTab/MWMSearchCategoryCell.mm | 8 +- .../CategoriesTab/MWMSearchCategoryCell.xib | 13 +- map/displayed_categories_modifiers.cpp | 18 +- map/displayed_categories_modifiers.hpp | 4 +- map/framework.cpp | 27 +-- map/framework.hpp | 3 - map/place_page_info.cpp | 3 - map/place_page_info.hpp | 1 - map/search_api.cpp | 13 -- map/search_api.hpp | 2 - map/search_mark.cpp | 2 - map/search_mark.hpp | 2 - partners_api/CMakeLists.txt | 2 - partners_api/cian_api.cpp | 179 ------------------ partners_api/cian_api.hpp | 74 -------- .../partners_api_tests/CMakeLists.txt | 1 - .../partners_api_tests/cian_tests.cpp | 77 -------- search/geocoder.cpp | 36 ---- search/geocoder.hpp | 1 - search/model.cpp | 27 +-- search/model.hpp | 5 - search/processor.cpp | 1 - .../processor_test.cpp | 38 ---- search/search_params.hpp | 2 - search/types_skipper.hpp | 18 +- .../partners_api.xcodeproj/project.pbxproj | 12 -- 125 files changed, 131 insertions(+), 2236 deletions(-) delete mode 100644 android/jni/com/mapswithme/maps/cian/Cian.cpp delete mode 100644 android/res/drawable-hdpi/ic_category_cian.png delete mode 100644 android/res/drawable-hdpi/ic_category_cian_night.png create mode 100644 android/res/drawable-hdpi/ic_category_luggagehero.png create mode 100644 android/res/drawable-hdpi/ic_category_luggagehero_night.png delete mode 100644 android/res/drawable-hdpi/logo_cian_dark.png delete mode 100644 android/res/drawable-hdpi/logo_cian_light.png create mode 100644 android/res/drawable-hdpi/logo_luggagehero_dark.png create mode 100644 android/res/drawable-hdpi/logo_luggagehero_light.png delete mode 100644 android/res/drawable-mdpi/ic_category_cian.png delete mode 100644 android/res/drawable-mdpi/ic_category_cian_night.png create mode 100644 android/res/drawable-mdpi/ic_category_luggagehero.png create mode 100644 android/res/drawable-mdpi/ic_category_luggagehero_night.png delete mode 100644 android/res/drawable-mdpi/logo_cian_dark.png delete mode 100644 android/res/drawable-mdpi/logo_cian_light.png create mode 100644 android/res/drawable-mdpi/logo_luggagehero_dark.png create mode 100644 android/res/drawable-mdpi/logo_luggagehero_light.png delete mode 100644 android/res/drawable-xhdpi/ic_category_cian.png delete mode 100644 android/res/drawable-xhdpi/ic_category_cian_night.png create mode 100644 android/res/drawable-xhdpi/ic_category_luggagehero.png create mode 100644 android/res/drawable-xhdpi/ic_category_luggagehero_night.png delete mode 100644 android/res/drawable-xhdpi/logo_cian_dark.png delete mode 100644 android/res/drawable-xhdpi/logo_cian_light.png create mode 100644 android/res/drawable-xhdpi/logo_luggagehero_dark.png create mode 100644 android/res/drawable-xhdpi/logo_luggagehero_light.png delete mode 100644 android/res/drawable-xxhdpi/ic_category_cian.png delete mode 100644 android/res/drawable-xxhdpi/ic_category_cian_night.png create mode 100644 android/res/drawable-xxhdpi/ic_category_luggagehero.png create mode 100644 android/res/drawable-xxhdpi/ic_category_luggagehero_night.png delete mode 100644 android/res/drawable-xxhdpi/logo_cian_dark.png delete mode 100644 android/res/drawable-xxhdpi/logo_cian_light.png create mode 100644 android/res/drawable-xxhdpi/logo_luggagehero_dark.png create mode 100644 android/res/drawable-xxhdpi/logo_luggagehero_light.png delete mode 100644 android/res/drawable-xxxhdpi/ic_category_cian.png delete mode 100644 android/res/drawable-xxxhdpi/ic_category_cian_night.png create mode 100644 android/res/drawable-xxxhdpi/ic_category_luggagehero.png create mode 100644 android/res/drawable-xxxhdpi/ic_category_luggagehero_night.png delete mode 100644 android/res/drawable-xxxhdpi/logo_cian_dark.png delete mode 100644 android/res/drawable-xxxhdpi/logo_cian_light.png create mode 100644 android/res/drawable-xxxhdpi/logo_luggagehero_dark.png create mode 100644 android/res/drawable-xxxhdpi/logo_luggagehero_light.png delete mode 100644 android/res/layout/item_cian_loading.xml delete mode 100644 android/res/layout/item_cian_more.xml delete mode 100644 android/res/layout/item_cian_product.xml rename android/res/layout/{item_search_category_cian.xml => item_search_category_luggage.xml} (96%) delete mode 100644 android/src/com/mapswithme/maps/cian/Cian.java delete mode 100644 android/src/com/mapswithme/maps/cian/RentOffer.java delete mode 100644 android/src/com/mapswithme/maps/cian/RentPlace.java delete mode 100644 android/src/com/mapswithme/maps/gallery/impl/CianAdapterStrategy.java delete mode 100644 android/src/com/mapswithme/maps/gallery/impl/CianErrorAdapterStrategy.java delete mode 100644 android/src/com/mapswithme/maps/gallery/impl/CianLoadingAdapterStrategy.java delete mode 100644 iphone/Maps/Images.xcassets/Search/Categories/ic_cian_dark.imageset/Contents.json delete mode 100644 iphone/Maps/Images.xcassets/Search/Categories/ic_cian_dark.imageset/ic_cian_dark.png delete mode 100644 iphone/Maps/Images.xcassets/Search/Categories/ic_cian_dark.imageset/ic_cian_dark@2x.png delete mode 100644 iphone/Maps/Images.xcassets/Search/Categories/ic_cian_dark.imageset/ic_cian_dark@3x.png delete mode 100644 iphone/Maps/Images.xcassets/Search/Categories/ic_cian_light.imageset/Contents.json delete mode 100644 iphone/Maps/Images.xcassets/Search/Categories/ic_cian_light.imageset/ic_cian_light.png delete mode 100644 iphone/Maps/Images.xcassets/Search/Categories/ic_cian_light.imageset/ic_cian_light@2x.png delete mode 100644 iphone/Maps/Images.xcassets/Search/Categories/ic_cian_light.imageset/ic_cian_light@3x.png create mode 100644 iphone/Maps/Images.xcassets/Search/Categories/ic_luggagehero_dark.imageset/Contents.json create mode 100644 iphone/Maps/Images.xcassets/Search/Categories/ic_luggagehero_dark.imageset/ic_luggagehero_dark.pdf create mode 100644 iphone/Maps/Images.xcassets/Search/Categories/ic_luggagehero_light.imageset/Contents.json create mode 100644 iphone/Maps/Images.xcassets/Search/Categories/ic_luggagehero_light.imageset/ic_luggagehero_light.pdf delete mode 100644 iphone/Maps/Images.xcassets/logo_cian.imageset/Contents.json delete mode 100644 iphone/Maps/Images.xcassets/logo_cian.imageset/logo_cian.png delete mode 100644 iphone/Maps/Images.xcassets/logo_cian.imageset/logo_cian@2x.png delete mode 100644 iphone/Maps/Images.xcassets/logo_cian.imageset/logo_cian@3x.png create mode 100644 iphone/Maps/Images.xcassets/logo_luggage.imageset/Contents.json create mode 100644 iphone/Maps/Images.xcassets/logo_luggage.imageset/logo_luggage.pdf delete mode 100644 iphone/Maps/UI/PlacePage/PlacePageLayout/Content/Cian/CianElement.swift delete mode 100644 iphone/Maps/UI/PlacePage/PlacePageLayout/Content/Cian/CianElement.xib delete mode 100644 iphone/Maps/UI/PlacePage/PlacePageLayout/Content/Cian/CianItemModel.swift delete mode 100644 iphone/Maps/UI/PlacePage/PlacePageLayout/Content/Cian/PPCianCarouselCell.swift delete mode 100644 iphone/Maps/UI/PlacePage/PlacePageLayout/Content/Cian/PPCianCarouselCell.xib delete mode 100644 partners_api/cian_api.cpp delete mode 100644 partners_api/cian_api.hpp delete mode 100644 partners_api/partners_api_tests/cian_tests.cpp diff --git a/android/jni/CMakeLists.txt b/android/jni/CMakeLists.txt index 3acef183d2..ee104e6758 100644 --- a/android/jni/CMakeLists.txt +++ b/android/jni/CMakeLists.txt @@ -41,7 +41,6 @@ set( com/mapswithme/maps/bookmarks/data/Bookmark.cpp com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp com/mapswithme/maps/bookmarks/data/BookmarkCategory.cpp - com/mapswithme/maps/cian/Cian.cpp com/mapswithme/maps/discovery/DiscoveryManager.cpp com/mapswithme/maps/discovery/Locals.cpp com/mapswithme/maps/DisplayedCategories.cpp diff --git a/android/jni/com/mapswithme/maps/Framework.cpp b/android/jni/com/mapswithme/maps/Framework.cpp index e52a8e6abc..7b54713917 100644 --- a/android/jni/com/mapswithme/maps/Framework.cpp +++ b/android/jni/com/mapswithme/maps/Framework.cpp @@ -599,17 +599,6 @@ void Framework::UploadUGC() m_work.UploadUGC(nullptr /* onCompleteUploading */); } -uint64_t Framework::GetRentNearby(JNIEnv * env, jobject policy, ms::LatLon const & latlon, - cian::Api::RentNearbyCallback const & onSuccess, - cian::Api::ErrorCallback const & onError) -{ - auto const cianApi = m_work.GetCianApi(ToNativeNetworkPolicy(env, policy)); - if (!cianApi) - return 0; - - return cianApi->GetRentNearby(latlon, onSuccess, onError); -} - int Framework::ToDoAfterUpdate() const { return (int) m_work.ToDoAfterUpdate(); diff --git a/android/jni/com/mapswithme/maps/Framework.hpp b/android/jni/com/mapswithme/maps/Framework.hpp index f4cd96dc0b..f38a3ed411 100644 --- a/android/jni/com/mapswithme/maps/Framework.hpp +++ b/android/jni/com/mapswithme/maps/Framework.hpp @@ -206,10 +206,6 @@ namespace android void SetUGCUpdate(FeatureID const & fid, ugc::UGCUpdate const & ugc); void UploadUGC(); - uint64_t GetRentNearby(JNIEnv * env, jobject policy, ms::LatLon const & latlon, - cian::Api::RentNearbyCallback const & onSuccess, - cian::Api::ErrorCallback const & onError); - int ToDoAfterUpdate() const; uint64_t GetLocals(JNIEnv * env, jobject policy, double lat, double lon, diff --git a/android/jni/com/mapswithme/maps/cian/Cian.cpp b/android/jni/com/mapswithme/maps/cian/Cian.cpp deleted file mode 100644 index 36b09815c3..0000000000 --- a/android/jni/com/mapswithme/maps/cian/Cian.cpp +++ /dev/null @@ -1,100 +0,0 @@ -#include "com/mapswithme/maps/Framework.hpp" - -#include "com/mapswithme/core/jni_helper.hpp" -#include "partners_api/cian_api.hpp" - -#include "base/logging.cpp" - -namespace -{ -jclass g_cianClass; -jclass g_rentPlaceClass; -jclass g_rentOfferClass; -jmethodID g_rentPlaceConstructor; -jmethodID g_rentOfferConstructor; -jmethodID g_cianCallback; -jmethodID g_cianSuccessCallback; -jmethodID g_cianErrorCallback; -uint64_t g_requestId; -std::string g_id; - -void PrepareClassRefs(JNIEnv * env) -{ - if (g_cianClass) - return; - - g_cianClass = jni::GetGlobalClassRef(env, "com/mapswithme/maps/cian/Cian"); - g_rentPlaceClass = jni::GetGlobalClassRef(env, "com/mapswithme/maps/cian/RentPlace"); - g_rentOfferClass = jni::GetGlobalClassRef(env, "com/mapswithme/maps/cian/RentOffer"); - - g_rentPlaceConstructor = - jni::GetConstructorID(env, g_rentPlaceClass, - "(DD[Lcom/mapswithme/maps/cian/RentOffer;)V"); - - g_rentOfferConstructor = - jni::GetConstructorID(env, g_rentOfferClass, - "(Ljava/lang/String;IDIILjava/lang/String;Ljava/lang/String;)V"); - - g_cianSuccessCallback = - jni::GetStaticMethodID(env, g_cianClass, "onRentPlacesReceived", - "([Lcom/mapswithme/maps/cian/RentPlace;Ljava/lang/String;)V"); - g_cianErrorCallback = - jni::GetStaticMethodID(env, g_cianClass, "onErrorReceived", - "(I)V"); -} - -void OnRentPlacesReceived(std::vector const & places, uint64_t const requestId) -{ - if (g_requestId != requestId) - return; - - JNIEnv * env = jni::GetEnv(); - - auto const offerBuilder = [](JNIEnv * env, cian::RentOffer const & item) - { - jni::TScopedLocalRef jFlatType(env, jni::ToJavaString(env, item.m_flatType)); - jni::TScopedLocalRef jUrl(env, jni::ToJavaString(env, item.m_url)); - jni::TScopedLocalRef jAddress(env, jni::ToJavaString(env, item.m_address)); - return env->NewObject(g_rentOfferClass, g_rentOfferConstructor, jFlatType.get(), - item.m_roomsCount, item.m_priceRur, item.m_floorNumber, - item.m_floorsCount, jUrl.get(), jAddress.get()); - }; - - auto const placeBuilder = [offerBuilder](JNIEnv * env, cian::RentPlace const & item) - { - return env->NewObject(g_rentPlaceClass, g_rentPlaceConstructor, item.m_latlon.lat, - item.m_latlon.lon, - jni::ToJavaArray(env, g_rentOfferClass, item.m_offers, offerBuilder)); - }; - - jni::TScopedLocalObjectArrayRef jPlaces(env, jni::ToJavaArray(env, g_rentPlaceClass, places, - placeBuilder)); - jni::TScopedLocalRef jId(env, jni::ToJavaString(env, g_id)); - - env->CallStaticVoidMethod(g_cianClass, g_cianSuccessCallback, jPlaces.get(), jId.get()); -} - -void OnErrorReceived(int httpCode, uint64_t const requestId) -{ - if (g_requestId != requestId) - return; - - JNIEnv * env = jni::GetEnv(); - - env->CallStaticVoidMethod(g_cianClass, g_cianErrorCallback, httpCode); -} -} // namespace - -extern "C" { - -JNIEXPORT void JNICALL Java_com_mapswithme_maps_cian_Cian_nativeGetRentNearby( - JNIEnv * env, jclass clazz, jobject policy, jdouble lat, jdouble lon, jstring id) -{ - PrepareClassRefs(env); - - g_id = jni::ToNativeString(env, id); - ms::LatLon const pos(lat, lon); - g_requestId = g_framework->GetRentNearby(env, policy, pos, &OnRentPlacesReceived, - &OnErrorReceived); -} -} // extern "C" diff --git a/android/res/drawable-hdpi/ic_category_cian.png b/android/res/drawable-hdpi/ic_category_cian.png deleted file mode 100644 index 7d21177c02356a37aca4145df1b72e6be2b60fb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 527 zcmeAS@N?(olHy`uVBq!ia0vp^HXzKw3=&b&bO2JZ0X`wFKw8Q-jomze!_*HMv77ku zSOs#L_yPslAtaDt>dRs7#{uM81aR2~ahUjVnFIh;a)Q+Osd(n{*oJbL`u_j_pTjhe z+uZNKH1UZ*3*<|J{DK*{+$t9wzyIc^SizzHcAI}Y9(Isi=J}!cFT3cm|Mue5e#svh z7#N*AT^vIy7?)lTU3A!h$K@jD@ok5Ce&2uEY;=9*oJ-erw@>^q>v2_`fLozVYvcQ! zd}}mwlXePAuT4<)G_F+i7Ot5r{wXZ*(d1Rr`d@M7o35?7XjZZK_0!e+4r@2-hy7vn zKjx|9`}p!>xv0}s2W;cbJ`^sW?ECKC)@9Ruf3b;&YD;ewJ(qQJ%`s2S@Xzi=p^sK1 zJYr(+zO&JTf12~0qQWkFt;dgi7%v<;x`=Ux_{Kjw_g4x^ALzVkQTBjKx|_Sd-}c9$ zeTk2hA3SDI{J+K7rA9{a+2e|MnUDDqEfe~kS^iw+d+>SV{@1T}zHfhcn}5}z1K%)8GE~T z@-aUr&Xm9Q)AZrwNpS&u)5=$0WRlk2KP5MUy`J&z?e(XUrd(SF40r}lS3j3^P6dRs7#{uM81aR2~ahUjVnFIh;a)Q+Osd(n{*oJbL`ffdRlEXBR z+uScM(Blly0{N04zhDL~x5@>_@4xveR&eOQ-R9qphaDuBd44GV%PxBCzrA?1U-Cx= z21X}O7srqa#--Oo7aca>ak^Uu@!`+R|G^&t=_QbIemS{Ih#e=%W=0 zkC@oI?`-topXNNLsIbdk>+vHW#tVmzE@GS^zVXk_{gr~!2Rd(Bls({*?&j|AxBYQw zU*aR>2ag#P|8H@2sgY59_P8Qm=3{-o|Mlyg@7o_9c_S@m-H@34 z`D4BZpWQ#+l|9|Yt@fJY%YRHSC~RtO>g@jf;MkF;|D1K|3!WeE`pe8~@Ac7H#@_Co ze9X^@Gv%-SG<`UEQd|JvwDQ##nWVM%Psxp7uV=h_d;O`TDc6<(1D?Ut)z4*}Q$iB} DxF^@~ diff --git a/android/res/drawable-hdpi/ic_category_luggagehero.png b/android/res/drawable-hdpi/ic_category_luggagehero.png new file mode 100644 index 0000000000000000000000000000000000000000..7faec9a543c0aa9286df410ff06ea77069ca8a9e GIT binary patch literal 1723 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 %PApEPyTy|0+u`&4GWb&$oi>&pc@uLq)#Pxgep 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 DStj8! diff --git a/android/res/drawable-hdpi/logo_luggagehero_dark.png b/android/res/drawable-hdpi/logo_luggagehero_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..da81ee7b40a5a68869e544ae641bfc8b02f06376 GIT binary patch literal 4176 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 L^>bP0l+XkKsa~z> diff --git a/android/res/drawable-mdpi/ic_category_luggagehero.png b/android/res/drawable-mdpi/ic_category_luggagehero.png new file mode 100644 index 0000000000000000000000000000000000000000..cfff87af195669a3950714cd359e0f26d7e407ce GIT binary patch literal 1153 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 literal 0 HcmV?d00001 diff --git a/android/res/drawable-mdpi/logo_luggagehero_light.png b/android/res/drawable-mdpi/logo_luggagehero_light.png new file mode 100644 index 0000000000000000000000000000000000000000..0a8b18fbb2f421ce2bd811cdfb5037ea90adc391 GIT binary patch literal 2089 zcmV+^2-f$BP))>zeTwn-Y@%(J<+)$=5OzM7dc=S>W; zSd9ObXae(>MH84NFil{Zz(m6M>#3`tYCn!q%>{7oz#L*)TlcP4io zMY&WRBv4DVL0~@IKz2v|Ibr56k8lXH1t1n><2>><(X2UrPGA?LGjm{O?w zF>G5*a&v&xOp+Y9(%CQzg8`RUN0W)#LxjO5DH!#Fh;IyHb#TH(y3T0F)Q`FFAvz7l zY?YoL-NoHskesU2xa0}ueZ%gxwCltEJPs6d*~7H!OVt5(t!3F%cCDANmI#lIGy=+~ zx;pOof`>+E)59`8U zkS2B~V?X7=qY2at|1p=*|5$pT%m?eq?8r0IIp+bo9?SKw)9(x{b~z-g1M6n8d_2co zN=_ScIy3VN77Y_-qm|Kbb9+CYIh#et&2v#G>K<(?s`pDnoGaawdg}d+}e@ya?ZR?LLbPL`qm`9vN^cq0qizb zO$2D)m$XchowV(x1`ekX+LDCfv12JI!sQeldsb`GxcvmcsBtWIwG0OEy6Aa4LBFO> z%f_8UQi{eokf%1zH0FE>MuE|w(Xd#LMo=KRLBr`|j5ibDvI3sJgc$M8LfEc1*`3+A zSf#dlzf!Ts@g#{3GTLzEH8S+N8FKt*cQJb$*W6EIKp&%#V1q`Egth-f5qPsL{!mMV zBQvU{(=Fu#4V-o}XWz}XCGA-9Ofp8olEG>-1G+)o z^iH9x_yqdEujEp_?|zI@PSpCD{uvMbh{-Igcv_N{B?{BBwbr@{4b>RbTj03M>2e&s zj>c-^mDw6W1SN_7LFce)GAN(va|(b;QB-LXGl<_%fEa2FO2r+^8Sye3XR~Q3S3IFQ zWHhQh#E(Wm8kxYJL?i-WK%&QDl7)m&^32%RK_toF{(5a4NKd8Nm{)oCdZnM$F6nQ2 zhvTnc)0{+J^*WIuXW;Vcdf8Zw5DID$4Yl0chYxPYmaNa(=>RFJf%?Q}wAe&t3}FLp z*_myrE5`?^ZZ3RKq{O0xgMwgl2#k8_XwnkHB$7Db)2tv7EH(l2wg9vOf4#PW`PSX&a}=H&pIOJUIIBE{}f zDI4{U>=cQpLdffW+&SXt#y4`WPSUyJkTUD7l)>o=; z$cVie?FZ1Zi~a(Tw~^;gqaj3c8mSq0v*k!ywI-{bzdZJ=5gln-G!CcwHvMh>Z;2)_O<F literal 0 HcmV?d00001 diff --git a/android/res/drawable-xhdpi/ic_category_cian.png b/android/res/drawable-xhdpi/ic_category_cian.png deleted file mode 100644 index 5218076d2ba49b140d8b4dd82cf65c0de449d642..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 758 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r53?z4+XPOVBdINkyT!A!)sUMfAzl>!lySX2` zi66VEAFo3skOZ+!e1Wo@U^a)DACRr$nad7h_;Q*DahUjNhlX;R`2YX^A1DRU%V!zN zVH(J8>I+oHY32{q3o^kbl*1~B*TfH~g%fD3nJ=dq$nZ704@Z`FJbv-|#HH&%Lw?no zDghm&SrX(I%y8eA)Ai>@k^YPS9tB;R`-VN^uFO-mNsLF|Ulp?dm{T}qx17BCuF1JY zm-UbSVqjo=@9E+gQW3Xy=FPsv1|lw}XRvs%bG$s~7qQIxwCdf@|L2=KojJiJ`OT_- zqJ>l7%^%Y)HYTfI?_PiCrcTJer?YPG9b2q>J=&wU^?8((@{OYhBc&|ZKk^-paLvw4 zm0f#5er}zIy8KEve;w7m0b;*CSWdrprheh%r;cm|5sT)Y4P)DMcR}mrIJV993nzYG z-1Fc^AKSirDI)ptyzkR%oO}P*9={yuR&4XI^=zElhWiW7g{f_H?Op1#WZH-G%|1^) z?BRNDG}Dr2LrX(yP1H%@{nbkT8k_C!wJJ^#5skR|{rRFFFSq>_ajoT#U#K)mT<-3n z_B{fj`|i$Cjd>p+#OfRre6fOb&fBCCQ?72JPqn^4Dst3s8K*<$Pwx zA<1}&qGAcB!sNvdid*f9@^bV}>^P(?w9a5*e*7O^F*)OQIfm(y(&7zAMWX)Nefc!K zPQHr8Cb41C4E3I~g?YO!$UGO=*fP;l$hhU1N6!>xpTuKaZ2_789vqfG`{S^3{hp`% z5B_vD#3y~o7ON9HvVPT%RH^;%9*a-ngmQQ44$rjF6*2Ung9SLJrn={ diff --git a/android/res/drawable-xhdpi/ic_category_cian_night.png b/android/res/drawable-xhdpi/ic_category_cian_night.png deleted file mode 100644 index 157d0cce6703e310c43994e2489b8e2d8be26376..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 760 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r53?z4+XPOVBdINkyT!A!)sUMfAzl>!lySX2` zi66VEAFo3skOZ+!e1Wo@U^a)DACRr$nad7h_;Q*DahUjNhlX;R`2YX^A1DRU%V!zN zVH(J8>I+oHY32{q3o^kbl*1~B*TfH~g%fD3nJ=dq$nfgP3;GwYb4)Haf-(MB7|Cm!aWw)HX`mV{j zMVIxD{$gNY{OIZ87*Y|pc4l_|CI^Am^P4mlu)4gK-MQtf(U#i(|Ib$^-*97os5IyK zVov`K>of1>xU%=njXAfEOMP;{&*$Dr))IZ&V)E5Q)8=Jo@+3&Jt7kqCITF3+m{OFN z_UVkqe=okoT2=a+RwZe^Y~6IB{rt)=X}=o%?tS~j^xJ&P=6ff)bFO7P+%b9jP1%bl zUMVnJthsRDdJLQ4|Evo8$I=Ng3;FukCC@zUka|70Cm}rkb#G5n@al9)&!va#zZ*^Z z%RX=Bsf=Y6hlH4}9bT^e_f@>V)?J^&4YLheCLP+a;@k5@Ki+Mt6?fg*t{))e**ib) zVgHqmGyk@wa88fD)7h#zMWUQ(o&f_x?ITYATOy^+8)80vdiZI3QDX0gg*#%GU0{7+ z*edtn%#1@bnWJYoZ7j?c6f3VgeSXa!nfh*P-9s!hIhN+|NEWR#Xg~j#zgA;ifZ`J_ zXP+I1IO8RXUK_MLn%3KNUi8ttvou@$k8E10woMg_kg?xhE61IIucpg6X=$WGIGyfP@TR`Tw2Z!a(zBsI0 zy=N)^gFhV&@<|_(#p(o(^soAnC}scdG5e%HC#J~1x^{89-Nw(plbZ{RO8oc5Nc1Jg mZ~pWCm-6{_bFa()XN=`AK6I~T$pK)BVeoYIb6Mw<&;$SxU`I^= diff --git a/android/res/drawable-xhdpi/ic_category_luggagehero.png b/android/res/drawable-xhdpi/ic_category_luggagehero.png new file mode 100644 index 0000000000000000000000000000000000000000..d4a0bd050591685b7375b9a7e34cc3cbeaec4d14 GIT binary patch literal 2506 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 FV1lxU*H{1m literal 0 HcmV?d00001 diff --git a/android/res/drawable-xhdpi/logo_cian_dark.png b/android/res/drawable-xhdpi/logo_cian_dark.png deleted file mode 100644 index f82068ffa3c7d6765c85d63889c1aed1c1eda3ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2433 zcmV-{34Zp8P)xBHvM)3f~{PB6oJAN^`pP*GDUZ5{~`ae?jK9shbKq7czDW z5a&JIwovA`-`>%Co^eKqQvYi}f|dn*bLLS*J9^ya|X3$g^=SFL3+^c31mk;V>Tfs$D{+XYKI)fy*+R z#xE8g8@fFEg&uR#)j@J?dG$^bEYp-tTW_iliv7wC|pe=}5}{Rcb5#hoKmrYTWv zEqoHF8k^9ci|GEf;b|nz!*<4uh$fw_ejG2LQp(doym*h+a;yjzn3w+DIy`x>S?%<_QQgz~a z$NH25C*LE4air+mhkMV>7>`d<{}Lk-1AH52P?e#){{mw#An(DseZc_>GKK{y zgv;U(Pf(-PI(=bb;oU&qgLC_WDLaZDj!D#Kn$J7{FKZRL(vfRSkwD&syCRDYTxx0` zqR?MFJPT6d-P>8|schv+KOpbIU7>~B`E^P)Y!uHtB2@ZwGq)Xo1<3nwS8U;tEAtvg zsD*#}FUXn*7EF$s&y5TV9d&3{Kk6oMd z&KFBf3i0d%s9KtE{`Ni#GQwh$bRFW9$J)mw>e{!%x0Sn!p9XRiW2_Z)m8b_~#lz4^ z@_V|#qd*qC43QF#13ADKK7nW;CrpGuASXNm9VP$f4)7R|74Jh=DVGA7v@Y+1xJ1De zsLW&?QqvDFLL@*J9WH*lV~TJgC@F^ptBeWaK_)O40+IfGPr`Fv703*{MUUGU3IZ*>87KZYt~))r_}G~iol=GT z8zhi$I0MXuKyI_}Z%hV1uLxxDiri*m9OkRiEkhJ>iTaW-h4v@BVRyX;G7SC%=3*cn zpcJI@8@%K3fh24y!OkH_b`C4dchnd9)$v^ zJ%2+b)Skm|o0Eb31LGmmiuDc$GGwW#RV?DLy>n>n4rKbqyiP!l@PI&KfuJY+2+WOv zOafw(?a0~xj?r)88{I46B6D}{@ZK@0@!2xRnX(*Phxct9ZCVGNW) zUGpOxb0Uy;;5Vo}MerbWhH|JqCV1$Y2Qp+uZkuS8?u@OSL%fqNQmr$LT5akYhI?`C zi77To$dzr$dke^39uP-Pz)eM-7fJf;V-%_9P_G&|rmAo$$DK$^fWP<-sy1y)LH!7&Z~_t7j3h4E zQ1CVWmmwfqJTQByw&M`+G@(BpMrH-mpe<_DLX1CT+@j2bUP;1zC$kyf;^& zXP+(390FvGl|T}Ktf*%pkj731VuX4?E(CHL90FHoG5B1yKr%DGy`%3uV_FdIt;K^^ z=gtwAq&t|pGxsGRTc&R{y%(;~7S_3wBxuDrO8YO$9BI$JxmE(%4lx!)!)Pe2Bam?r z4RP>+oq?=^XMtP{q$gB>tMex`ys9Uug{<(F_ytB~FdkGya@o#-rxpE5@{gu z-dm9>!GyRjiz7s?FY7bUIFYfHen2)z0&)8+vJuFCFbQr3axsvHp%A2V0kW*fhTlOt zORmLH`>lN!7*m4f`U*r+wR0ru4$RqC^dgX>rf)F57cSR`J4wyXF<_B#1lu>kAIL7( zE|3!F00iK2ATvNZe?coC8^(Zi{($CJI}p*$xZqeGrp^%Wqt)+B|KV{UXHDIl`=+>) zgsOz{zH>7sIDBu6^ola~&O)GC#)CLV;0+)<4Fc(W0%Z0!{07q5Z0FPLEASIYXFuFw zwnc}5!I1tEKSPN@h@U0zzjDjWb2#^D! zU!YnIq?$w1FK)&^-H*S8&Z1o9yG z13AbSZh@PtN#3IO1G)lyuEN#xJP@lm9*A`u4}{}^@IZJV91n!!fp9z!jt9c=KsX)< z$MHY_I35Vc1L1fe91n!!fp9z!jt9c=KsfGyFcX_=HUFO$00000NkvXXu0mjf`?-0k diff --git a/android/res/drawable-xhdpi/logo_cian_light.png b/android/res/drawable-xhdpi/logo_cian_light.png deleted file mode 100644 index be6d79d82bd7d06ce56a8e5d00c272be2759d198..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2600 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 KMNUMnLSTYQ!ORi> diff --git a/android/res/drawable-xhdpi/logo_luggagehero_dark.png b/android/res/drawable-xhdpi/logo_luggagehero_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..199d4533a6d5613e37e2475b60539bd354c12e5e GIT binary patch literal 5015 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 diff --git a/android/res/drawable-xxhdpi/ic_category_cian_night.png b/android/res/drawable-xxhdpi/ic_category_cian_night.png deleted file mode 100644 index d3013d49b315e451fbc4ade6bbdfb84374021bfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 974 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P3?%t>9eV(z<_GwMxB_VfhXig*e@=6M4l^L~ zvzz(?1=&q}c^x9b%77|;RXlSc;#{Ud93~(I92NmUU0fys zoEH8-2A^dp*bv|U|NnEEf<(B?{2Uw_fVwzAQXuO%&4C(yIe~_o`ffdRk^^itJJ5C$ z-+RBdngg9^S`y?J%)p@=QoU%$(M$K={M5`|^Y_0<^3vz*n|_(jc<->=)BLp1tbdHM zhrC(3rH?(b_!{y1|B;z%cX~EvA7fx(TIuQH7*fHw=WJ`^V*>`31H9^7xe{l2-2aMy zKa;<0NoK-@TL~6Y{>wK1bkdogWH{ef{qe;DhOJ?*&nBH_x_vZlZ&@G< zH$gw?{X%B@g#5<-Yfg@wE*)iyZY&kalUdlRveYEA=~$Sg>Zz~{4e=>nPcn{FEKJd7 zld7m)T#~nx`}1!qA6TU1y3Cb(Q@m&urw&I z!)f1wq(knE`U{F0+yB2^c~I{EMpjb+vwu$mxY_?3#EMnEZ*+|juHU>ueOc>%i7TR) z56n;d^@#t^!-HItF2&3Jc)QZL?$LDZ(qn&O_F8IK3pf~>WY1oocidX%-~a1bv&}!B zTVZ$glbUInPs&l@9L=arkHQ*xqja?UOmj4r9#y@jGIh%iuX(rR=Iy_6H#>UXEvvLo zk9f3;DhvBm>vZ({Y8e=vWf*1{9Z_UxS1e;tP3ll)&5}7@q&>k_%cL)&`JCWu1B)c) z%`-ke?@G_Gc*JJro^$wNhwKiSjokgp-!hW!g}*HbQ{c<#yU})3FxtQ}Nto^V`BaDJ z9iZq~<{L4P2?wb7T!J3;_ g*=OIZ{(6wLPm(+9Q1s6*V5(>EboFyt=akR{0LbH(5dZ)H diff --git a/android/res/drawable-xxhdpi/ic_category_luggagehero.png b/android/res/drawable-xxhdpi/ic_category_luggagehero.png new file mode 100644 index 0000000000000000000000000000000000000000..afd739ec7c7cbb001d8a13888b7a78cbfe41f84a GIT binary patch literal 3838 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 literal 0 HcmV?d00001 diff --git a/android/res/drawable-xxhdpi/logo_cian_dark.png b/android/res/drawable-xxhdpi/logo_cian_dark.png deleted file mode 100644 index becbfae1ea628ed433a9950049f0a3555b9a5222..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2290 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 literal 0 HcmV?d00001 diff --git a/android/res/drawable-xxhdpi/logo_luggagehero_light.png b/android/res/drawable-xxhdpi/logo_luggagehero_light.png new file mode 100644 index 0000000000000000000000000000000000000000..ca6bba84910dfcf6a164bb62e7e04bdea68a97dc GIT binary patch literal 7926 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 literal 0 HcmV?d00001 diff --git a/android/res/drawable-xxxhdpi/ic_category_cian.png b/android/res/drawable-xxxhdpi/ic_category_cian.png deleted file mode 100644 index b424c28235bb241fabdec0a824430a0f2b1ef661..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1390 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 diff --git a/android/res/drawable-xxxhdpi/ic_category_luggagehero.png b/android/res/drawable-xxxhdpi/ic_category_luggagehero.png new file mode 100644 index 0000000000000000000000000000000000000000..c74ee78bdafa713e426d91fdb4002f8192e80742 GIT binary patch literal 5213 zcmV-j6r$^iP)005u}1^@s6i_d2*000yuNkl`{VdJ#e}s8FV0NHQu|7*I6IP=X*Pq}0qf z6CsI!Au4f%hKX?@hKvYi;*v@n8I9n^)-<3jP4|26p2<1Yb*q@y{kr?zci&y!{ZyTL zkN%H)KJ`84cg}t12u>kHR?`!~Fj5TDpHKmm>n8Q5ZV2nU;wX}%(9#6fcc320P9p47 zpQ4U~ScC`)6giD99N}`{V$2rVq!z9_&T z1mlp51Y&rD1cDt%wqUS@fovC#(G&{kb7U1mfyuyl;4&m7_yIv9unl+xST8p5ekh<% zkl&;`C%6H@G$f-50)p3(tf7>r#j_j=1@stl7BTiR0h4J6s*uD9B7$Zln=n{IA2y4h zk_ZKK5m`eoOy&YJko2IC5HtX*FjyfrvOg3skH}j3kzziQnLsgx%}E3+iLhL3;FC~5 zXA^G-DeeZQr&X{a31Br5mWhpg5DJ*g~uz}5*oP& z$vmKl&Jfas;9*L5P&`XxC}8Ke#Hx@yiewPk6C&7!V791ZQz&2ukdqid6ORD30&Xn)xM?u{ckN;8o(>D4t_) z!6%@s;VPPWJCE{(NXDvXuAjZj2sejZPOu2U0wf0cCq!T(SxPAj#j~UeMnGA^8KhVT zjKK?pY$d`}v5`H2AA)5qBT4bLr{oJ6qxwYkO`rvo)m%%8EkFfcBcww0jq0O74#Bd9 zn@RC=Ac~g>NfP1PVk2tbu~ETFZ{_j5oHG(v>xTh+&&6i~0COV$T^sU;+;`Z$+6CL)J>yKfiF4o65m z5k}-<@7T!6TP-Qp6`XwGw%t0__pS@b2^JOPiv=NLRNuQQpnjoIuz|s2l(l z1Jq}Fix<->hxfty<*?}|kV*vWHzp-qsotv2kAT(Ojmc7iNW26p`lm@{$)@CsM6ksN ze}en2hNBGx27?8nj%AJusDHQH%)3ZR2?8Zu;Y-)Sh^t`4cr968`0yRLa}*>_5(oq* zh%;RM?$}uYtJr{~h9GdkIGFn+^z4f(JpCZ7xtG8o*eEtp>sS#YtEmc%d=u}4B`<6F zT%-DSh!qnUBsIzrM+DRd1xX$y2n@UcZdnFG;3}o%aKYCI63P+fO3nprIi+e4L14}* zh(vLmWCFfuAS1m82Tj01$`$(prk^%HpCB;!A{csU?gZQSA-uB%Ui=xXy&rxw9qt+f zxAcdJ#qiJ#WTd=%P~RUMN(YE`(CS4%oFH)SSLraR6de2n_V0!RyJ5d-yR3h6@KcZ` z84*VQ&ITwhgRVWH`6L`W49O;3qNv508*K}ykHs~af+PsEzs&OTFW{9YwPac_Gl?w> zgPhQ%8}u5ahiu(?4TRJC!0El<^xn{|7Zi8F!Zh`IBX88Hg>NlnUJ*=@HQcX`3$`U- z%bCm(f`Aw7&Olk*@6Y&WnH6mvrO$x$v`j@Zw7H zh9uJB&djU@)ThxWnI5#Aj*LhNkUs&dZq>^%oYoV^DC-8ZpMZYnz^XgRBhzIqi!zLCU zz7jS=&f*8H-EAk@*z>&}lmEa^2tx~o^(s|=sL;(yFjWEjp5vce>yW2>s#gCoG&jP) z^I`TX7j^#( z6v0$tr6pO~;`gE#;F7E1z{l{X-_R*Od6$fo_aLtbs+3#mzT=Dn>dT%Xj+>lu7TmL5 z4<)`MnSh4RTBQ0YgJ7MYxsgs|nq(mVmAWL};@0Dt1r$t2;vPdTg~c!Fp~sV)JfY`W zTCRE}*r`p+C(YbTosK=hQc3cTU|I$Nty?Ka;TFYZFn^u9@*O*3C71e4YhTopXR@nS zBT?@OC>gCBQ@41wm4K6RlW)v}Glt+OhxaLw+HQ?s;2DI-J^>>hOhC&qmbN9}c--V` zH)9LaY?*)Uf_=N-&>p?lN@-U;|6pkyx;b zkaX890YSJeU@`5o`_I{@NGjn&0i!`ILO`4>GU_3~H|5+x(1%K{2ZKtTE+0h0-vDUu}TRL@2eD}w93=io9-GFVlx|(4HW3FCFxiazcw0dG56p<> zGy(Nu^H*=6U8-)?N22MgAI=^P1J2i}NY|d7IFwu{nQiO^`yc_KJc^_YFA#CM2uWg_ zsrN%H-m%V~`J>EBAdSbM@u+U>*a%N9$WTB9b`Dq;^>6~ZUxWw)hJFbyxduj0guxf) zuDUJjrknmD)bl^ieE}8mO9BeYkzo;H(X~Pg$EDZ8MPG-mJ#dVZ$Kiom`20WyfdZU> zLJ0`vz8Hedq%%c`PC0e6<#lk$wfaa~gurp6)Fz(!mN+koFfNo)b>&Sirj-CX! z{TrNCLEd?4A-w)vrUY{?0i^^pi5D<{qyAWkb|3-YsDpQ3Bk%m-8Ti!$?IoDq0?gy- zr#WgMIU3BZxXdYH{cYJ4*uH_h@xhz$<6E3BprUbaSHOUB&p!!h+8u(E0BuXSqYlS8 zyiXS$G&go6!EFBDqdrMMe3F3nhv3YM+)F3x!@C_L(FBVpLc^yWEh3y-hDmuzK*7-h zEke>IT=EV0@894EkIjOe+p}Cm59SC30qdv8esxTj)e*M z|0TR0-g=3gv2~r@ZNvaq!GZ%}0-g$qle$=7_g}~fvEux{N*47+0@fQycKRX#O~(^3 z{V=27K0!|CbEXY}92kNV&3FOjouD2^i2S*nTD1e|U}r z9OA76OeVaOfTE6rz@Y$E!S*Z30q2DY=p2WXdj<-@&VbDU?N^e*fWBwv?v{2VYNrYg zS^`?m8MH)Uu;zgFQ$(j$Q3*LA5>*n~n7;-v0i`7%VE7;blg;_9B>SJ+v1_+J-Kj4S zY?t1H?F_-eOF+XCQ1fQs6VOcNt^kn|Ha`wGRls-8hN(Sa`Bb%Tm^%TZu|OxFcFq#8 z8?OP00RAQ<`vRt48v=e_uWzp8@qg0SK3H;Z{T1APAv}B&eD=QmLL?ICIbcFLX9+0Q za2&yo041RPlLh*nLmGen9o%*yy!isHB2D=HFX4N`;gOlJ_iuI*&~5?d+1~^!*OYUX zfEvk`pd_IEYYv1}0b2>Q_I|kcN;tfiOjyFavx&-ZWU~_Cg4D}BWMg}0wy~@ z{7MNM9#Qh>8^~?*?tf*MU}n+BkotwJI`ZfjBH(3i_cWwA}ejU(#?9X5A-@BJ`M?mG4ax7BEAYP={cv3O4C975&Lb<5BXCpjo-qu7KiM z4k6hTCZPLsz^o7kOt{r^0xGAJTNwqkFj(WkYr0&$CCQW15@A4(zA*eNF!m<+*8Q+z z2Yh9+hXl;*RFu}}!)Er-fTV}ZMTp(=QT#gumv*&&m%_PYpmKoTp`mi1^_`0TTGUSS z#X<6lpg}p+VFATYNysWz0rP!*Q)bi$LvXYRD*CkuH9*Tnzq8@O@n|ah!$ZH%?GYjW zvyD8nN;%bG0W}6INHH5I_HhEbzwT9BrlmTy4Ya;1Si|E0E5)q8m3PN8q>}K|Ka*DkE0s%~7ElvmIZ3_)#C(~6 zu{gHrTA@Trn}1o~OUm#KYwm;hwvk5?+94n-0mTMBkrP-A%y2ycrRmI4#%Yz7P*#dr z->uiO{LS&t;iq@NE59JmtX2+XEubdCGE8nk5^=Q%>D~v9Hgsn0WetCNo^{2Ida_T2 zPB3fI@1S7r54Z1ahqqpYmwpBfpOIGtDGZj;4uTFKC-6&PDh{D5z9lb{kr$qTfBEjI zNmx>zHt(`p|KWNmBe0}WS}J|dNc~6p(`x&7L;c5)IEjm_6Pvk_c8GS+=7mTm0Y$D2 z!PopFT>N#Y{{%`}D$BCd2`q^wIPh_6a_LVkpP9s?G-+o#fS`lODjq=c1DxRev9R=a z6ci`Eu%uFHl_uGd{eZ-m2o{S?+(!q9(osrykVbAoGRTR;y90%kN+2aunq=1Z<3|W2 zf?e8`4kG9TvYIMP>c}|)p4zW3jPV7gsfR%HTuUdGZX8fe3HAvjnlcnUE!56`z|J3Vtwm5dU%?Z91?#O;} zOo+h(QO7bmNtA3T=3yGS8p&94$%k*joJ(NZV*P#_v3T1n`};oBO&@=u=U$dz`F`Im zMDVJ1A`1jrA}7&@X5L0pi4zocfng(cVS+SOrEE112^JzaK%5ccIripLK#i>7DokEL zVo-R52uuvF5gU0adw*>rC$Jc}mqH|DiP&s!bHczbr7Q%tQfP#1ZRvYl6;M1&iU?DI zdJ2V*de!Hu@7)$qBQ~;!DAfo~5PZV*z9`kY&+UUjju0EzfnYL_B&dWWRUhlV&JhMV zMAY#cB77T=1dR}>`d0Tb;6VYc;dm{A?-M9ORG;d;%`pZJAU3fA!NUZD5W&N`PaVL( zDeAZj!Aks1h+w7eOTbqG3W21KS^iGKF!@v;>b`UcK^~A*%ti7;K;Q>LB!cg!4ZAKT zp#3>vgz3Imq6tZ=zOv*Cf`C?aY*6Fz#p-a8*`UU%b^{?``a0n_&u-g=+iT;jb-o}9 zXziFp7~!cG7(%wHKCyNfcL))fz!KFLx=&m{;40Qjt!t4~l3&6% znGJ5%FO#~6fy?Lz5N8B}SIHmYZ#d$Nu;eRX0X6#f1SMRF!2-vtUE#ZV-R5KL+3q}C8Y3du7F7M^l3U?`w{WDP?|aW^nM?cnr~ z1hAS2%fv=Lz$XZNh^(a_Ddr=Y2^3SMQG1v*bNjF{- zYdB5-2nDpi1=v%|n6jj-L{JVbO;V;mt-ooGA~~u*1;^B<^*6x*En5UFov7m=79sx! Xq&wJnZ=V-O00000NkvXXu0mjfI(dpG literal 0 HcmV?d00001 diff --git a/android/res/drawable-xxxhdpi/ic_category_luggagehero_night.png b/android/res/drawable-xxxhdpi/ic_category_luggagehero_night.png new file mode 100644 index 0000000000000000000000000000000000000000..babb1bc8e0fdbd5936b7b95963788cff70494306 GIT binary patch literal 3766 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 diff --git a/android/res/drawable-xxxhdpi/logo_cian_light.png b/android/res/drawable-xxxhdpi/logo_cian_light.png deleted file mode 100644 index e5dd8d385e3719fd156214dbef5341b3a278d0d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4641 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 diff --git a/android/res/drawable-xxxhdpi/logo_luggagehero_dark.png b/android/res/drawable-xxxhdpi/logo_luggagehero_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..224895956de8d6f2d43d3d22855034bf563cb421 GIT binary patch literal 10727 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 diff --git a/android/res/layout/item_cian_loading.xml b/android/res/layout/item_cian_loading.xml deleted file mode 100644 index 8f21061247..0000000000 --- a/android/res/layout/item_cian_loading.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - diff --git a/android/res/layout/item_cian_more.xml b/android/res/layout/item_cian_more.xml deleted file mode 100644 index 13b721063c..0000000000 --- a/android/res/layout/item_cian_more.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - diff --git a/android/res/layout/item_cian_product.xml b/android/res/layout/item_cian_product.xml deleted file mode 100644 index 2648c9c5a9..0000000000 --- a/android/res/layout/item_cian_product.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - diff --git a/android/res/layout/item_search_category_cian.xml b/android/res/layout/item_search_category_luggage.xml similarity index 96% rename from android/res/layout/item_search_category_cian.xml rename to android/res/layout/item_search_category_luggage.xml index 62bc9bc0b2..ef57d4853f 100644 --- a/android/res/layout/item_search_category_cian.xml +++ b/android/res/layout/item_search_category_luggage.xml @@ -23,5 +23,5 @@ android:layout_gravity="center_vertical" android:layout_marginEnd="@dimen/margin_base" android:layout_marginRight="@dimen/margin_base" - android:src="?cianLogo"/> + android:src="?luggageLogo"/> diff --git a/android/res/layout/item_viator_product.xml b/android/res/layout/item_viator_product.xml index 7be51fdb18..945102a1ab 100644 --- a/android/res/layout/item_viator_product.xml +++ b/android/res/layout/item_viator_product.xml @@ -62,7 +62,7 @@ android:textSize="@dimen/text_size_body_4" tools:visibility="visible"/> 160dp 80dp - - 140dp - 160dp - 44dp + + 140dp + 160dp + 44dp 40dp diff --git a/android/res/values/themes-attrs.xml b/android/res/values/themes-attrs.xml index 8de66e44e2..676aaabc09 100644 --- a/android/res/values/themes-attrs.xml +++ b/android/res/values/themes-attrs.xml @@ -87,7 +87,7 @@ - + diff --git a/android/res/values/themes-base.xml b/android/res/values/themes-base.xml index 5236b9cf9a..692f67e2d6 100644 --- a/android/res/values/themes-base.xml +++ b/android/res/values/themes-base.xml @@ -104,7 +104,7 @@ @drawable/bg_tag @drawable/ic_sponsored_gallery_more - @drawable/logo_cian_light + @drawable/logo_luggagehero_light @drawable/ic_logo_viator_light @drawable/bg_rating_button @@ -223,7 +223,7 @@ @drawable/bg_tag_night @drawable/ic_sponsored_gallery_more_night - @drawable/logo_cian_dark + @drawable/logo_luggagehero_dark @drawable/ic_logo_viator_dark @drawable/bg_rating_button_night diff --git a/android/src/com/mapswithme/maps/cian/Cian.java b/android/src/com/mapswithme/maps/cian/Cian.java deleted file mode 100644 index 33671d2b1c..0000000000 --- a/android/src/com/mapswithme/maps/cian/Cian.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.mapswithme.maps.cian; - -import android.support.annotation.NonNull; - -import com.mapswithme.maps.bookmarks.data.FeatureId; -import com.mapswithme.util.NetworkPolicy; - -import java.lang.ref.WeakReference; -import java.util.HashMap; -import java.util.Map; - -public final class Cian -{ - @NonNull - private static WeakReference sCianListener = new WeakReference<>(null); - @NonNull - private static final Map sProductsCache = new HashMap<>(); - - public static void setCianListener(@NonNull com.mapswithme.maps.cian.Cian.CianListener listener) - { - sCianListener = new WeakReference<>(listener); - } - - private static void onRentPlacesReceived(@NonNull RentPlace[] places, @NonNull String id) - { - sProductsCache.put(FeatureId.fromString(id), places); - com.mapswithme.maps.cian.Cian.CianListener listener = sCianListener.get(); - if (listener != null) - listener.onRentPlacesReceived(places); - } - - private static void onErrorReceived(int httpCode) - { - com.mapswithme.maps.cian.Cian.CianListener listener = sCianListener.get(); - if (listener != null) - listener.onErrorReceived(httpCode); - } - - private Cian() {} - - public static void getRentNearby(@NonNull NetworkPolicy policy,double lat, double lon, - @NonNull FeatureId id) - { - RentPlace[] products = sProductsCache.get(id); - if (products != null && products.length > 0) - onRentPlacesReceived(products, id.toString()); - - nativeGetRentNearby(policy, lat, lon, id.toString()); - } - - public static boolean hasCache(@NonNull FeatureId id) - { - return sProductsCache.containsKey(id); - } - - public interface CianListener - { - void onRentPlacesReceived(@NonNull RentPlace[] places); - void onErrorReceived(int httpCode); - } - - private static native void nativeGetRentNearby(@NonNull NetworkPolicy policy, double lat, - double lon, @NonNull String id); -} diff --git a/android/src/com/mapswithme/maps/cian/RentOffer.java b/android/src/com/mapswithme/maps/cian/RentOffer.java deleted file mode 100644 index c0087cfdb9..0000000000 --- a/android/src/com/mapswithme/maps/cian/RentOffer.java +++ /dev/null @@ -1,146 +0,0 @@ -package com.mapswithme.maps.cian; - -import android.os.Parcel; -import android.os.Parcelable; -import android.support.annotation.NonNull; - -public final class RentOffer implements Parcelable -{ - @NonNull - private final String mFlatType; - private final int mRoomsCount; - private final double mPrice; - private final int mFloorNumber; - private final int mFloorsCount; - @NonNull - private final String mUrl; - @NonNull - private final String mAddress; - - public static final Creator CREATOR = new Creator() - { - @Override - public RentOffer createFromParcel(Parcel in) - { - return new RentOffer(in); - } - - @Override - public RentOffer[] newArray(int size) - { - return new RentOffer[size]; - } - }; - - public RentOffer(@NonNull String flatType, int roomsCount, double price, int floorNumber, - int floorsCount, @NonNull String url, @NonNull String address) - { - mFlatType = flatType; - mRoomsCount = roomsCount; - mPrice = price; - mFloorNumber = floorNumber; - mFloorsCount = floorsCount; - mUrl = url; - mAddress = address; - } - - private RentOffer(Parcel in) - { - mFlatType = in.readString(); - mRoomsCount = in.readInt(); - mPrice = in.readInt(); - mFloorNumber = in.readInt(); - mFloorsCount = in.readInt(); - mUrl = in.readString(); - mAddress = in.readString(); - } - - @Override - public int describeContents() - { - return 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) - { - dest.writeString(mFlatType); - dest.writeInt(mRoomsCount); - dest.writeDouble(mPrice); - dest.writeInt(mFloorNumber); - dest.writeInt(mFloorsCount); - dest.writeString(mUrl); - dest.writeString(mAddress); - } - - @NonNull - public String getFlatType() - { - return mFlatType; - } - - public int getRoomsCount() - { - return mRoomsCount; - } - - public double getPrice() - { - return mPrice; - } - - public int getFloorNumber() - { - return mFloorNumber; - } - - public int getFloorsCount() - { - return mFloorsCount; - } - - @NonNull - public String getUrl() - { - return mUrl; - } - - @NonNull - public String getAddress() - { - return mAddress; - } - - @Override - public boolean equals(Object o) - { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - RentOffer rentOffer = (RentOffer) o; - - if (mRoomsCount != rentOffer.mRoomsCount) return false; - if (Double.compare(rentOffer.mPrice, mPrice) != 0) return false; - if (mFloorNumber != rentOffer.mFloorNumber) return false; - if (mFloorsCount != rentOffer.mFloorsCount) return false; - if (!mFlatType.equals(rentOffer.mFlatType)) return false; - if (!mUrl.equals(rentOffer.mUrl)) return false; - return mAddress.equals(rentOffer.mAddress); - } - - @Override - public int hashCode() - { - int result; - long temp; - result = mFlatType.hashCode(); - result = 31 * result + mRoomsCount; - temp = Double.doubleToLongBits(mPrice); - result = 31 * result + (int) (temp ^ (temp >>> 32)); - result = 31 * result + mFloorNumber; - result = 31 * result + mFloorsCount; - result = 31 * result + mUrl.hashCode(); - result = 31 * result + mAddress.hashCode(); - return result; - } -} diff --git a/android/src/com/mapswithme/maps/cian/RentPlace.java b/android/src/com/mapswithme/maps/cian/RentPlace.java deleted file mode 100644 index 5af8d1bd2e..0000000000 --- a/android/src/com/mapswithme/maps/cian/RentPlace.java +++ /dev/null @@ -1,102 +0,0 @@ -package com.mapswithme.maps.cian; - -import android.os.Parcel; -import android.os.Parcelable; -import android.support.annotation.NonNull; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -public class RentPlace implements Parcelable -{ - private final double mLat; - private final double mLon; - @NonNull - private final List mOffers; - - public static final Creator CREATOR = new Creator() - { - @Override - public RentPlace createFromParcel(Parcel in) - { - return new RentPlace(in); - } - - @Override - public RentPlace[] newArray(int size) - { - return new RentPlace[size]; - } - }; - - public RentPlace(double lat, double lon, @NonNull RentOffer[] offers) - { - mLat = lat; - mLon = lon; - mOffers = new ArrayList<>(Arrays.asList(offers)); - } - - private RentPlace(Parcel in) - { - mLat = in.readDouble(); - mLon = in.readDouble(); - mOffers = in.createTypedArrayList(RentOffer.CREATOR); - } - - @Override - public int describeContents() - { - return 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) - { - dest.writeDouble(mLat); - dest.writeDouble(mLon); - dest.writeTypedList(mOffers); - } - - public double getLat() - { - return mLat; - } - - public double getLon() - { - return mLon; - } - - @NonNull - public List getOffers() - { - return mOffers; - } - - @Override - public boolean equals(Object o) - { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - RentPlace rentPlace = (RentPlace) o; - - if (Double.compare(rentPlace.mLat, mLat) != 0) return false; - if (Double.compare(rentPlace.mLon, mLon) != 0) return false; - return mOffers.equals(rentPlace.mOffers); - } - - @Override - public int hashCode() - { - int result; - long temp; - temp = Double.doubleToLongBits(mLat); - result = (int) (temp ^ (temp >>> 32)); - temp = Double.doubleToLongBits(mLon); - result = 31 * result + (int) (temp ^ (temp >>> 32)); - result = 31 * result + mOffers.hashCode(); - return result; - } -} diff --git a/android/src/com/mapswithme/maps/gallery/Holders.java b/android/src/com/mapswithme/maps/gallery/Holders.java index b50cd82bea..15c384fc73 100644 --- a/android/src/com/mapswithme/maps/gallery/Holders.java +++ b/android/src/com/mapswithme/maps/gallery/Holders.java @@ -24,7 +24,6 @@ import com.mapswithme.util.Utils; import java.util.List; -import static com.mapswithme.maps.gallery.Items.CianItem; import static com.mapswithme.maps.gallery.Items.ViatorItem; public class Holders @@ -97,50 +96,6 @@ public class Holders } } - public static final class CianProductViewHolder extends BaseViewHolder - { - @NonNull - TextView mPrice; - @NonNull - TextView mAddress; - - public CianProductViewHolder(@NonNull View itemView, @NonNull List items, - @NonNull GalleryAdapter adapter) - { - super(itemView, items, adapter); - mPrice = (TextView) itemView.findViewById(R.id.tv__price); - mAddress = (TextView) itemView.findViewById(R.id.tv__address); - } - - @Override - public void bind(@NonNull CianItem item) - { - super.bind(item); - UiUtils.setTextAndHideIfEmpty(mPrice, item.mPrice); - UiUtils.setTextAndHideIfEmpty(mAddress, item.mAddress); - } - } - - public static final class CianMoreItemViewHolder extends BaseViewHolder - { - - public CianMoreItemViewHolder(@NonNull View itemView, @NonNull List items, - @NonNull GalleryAdapter adapter) - { - super(itemView, items, adapter); - } - - @Override - protected void onItemSelected(@NonNull T item, int position) - { - ItemSelectedListener listener = mAdapter.getListener(); - if (listener == null || TextUtils.isEmpty(item.getUrl())) - return; - - listener.onMoreItemSelected(item); - } - } - public static class LocalExpertViewHolder extends BaseViewHolder { @NonNull diff --git a/android/src/com/mapswithme/maps/gallery/Items.java b/android/src/com/mapswithme/maps/gallery/Items.java index ac9453aa66..d067518505 100644 --- a/android/src/com/mapswithme/maps/gallery/Items.java +++ b/android/src/com/mapswithme/maps/gallery/Items.java @@ -52,38 +52,6 @@ public class Items } } - public static class CianItem extends RegularAdapterStrategy.Item - { - @NonNull - final String mPrice; - @NonNull - final String mAddress; - - public CianItem(@NonNull String title, @NonNull String url, @NonNull String price, - @NonNull String address) - { - super(TYPE_PRODUCT, title, url, null); - mPrice = price; - mAddress = address; - } - - CianItem(@Constants.ViewType int type, @NonNull String title, @Nullable String url) - { - super(type, title, url, null); - mPrice = ""; - mAddress = ""; - } - } - - public static class CianMoreItem extends CianItem - { - - public CianMoreItem(@Nullable String url) - { - super(TYPE_MORE, MwmApplication.get().getString(R.string.placepage_more_button), url); - } - } - public static class LocalExpertItem extends RegularAdapterStrategy.Item { @Nullable diff --git a/android/src/com/mapswithme/maps/gallery/impl/CianAdapterStrategy.java b/android/src/com/mapswithme/maps/gallery/impl/CianAdapterStrategy.java deleted file mode 100644 index 0c00466120..0000000000 --- a/android/src/com/mapswithme/maps/gallery/impl/CianAdapterStrategy.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.mapswithme.maps.gallery.impl; - -import android.content.Context; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import com.mapswithme.maps.MwmApplication; -import com.mapswithme.maps.R; -import com.mapswithme.maps.cian.RentOffer; -import com.mapswithme.maps.cian.RentPlace; -import com.mapswithme.maps.gallery.GalleryAdapter; -import com.mapswithme.maps.gallery.Holders; -import com.mapswithme.maps.gallery.Items; -import com.mapswithme.maps.gallery.RegularAdapterStrategy; - -import java.util.ArrayList; -import java.util.List; - -class CianAdapterStrategy extends RegularAdapterStrategy -{ - - CianAdapterStrategy(@NonNull RentPlace[] items, @Nullable String moreUrl) - { - super(convertItems(items), new Items.CianMoreItem(moreUrl)); - } - - CianAdapterStrategy(@NonNull List items, - @Nullable Items.CianItem moreItem) - { - super(items, moreItem); - } - - @NonNull - @Override - protected Holders.BaseViewHolder createProductViewHodler - (@NonNull ViewGroup parent, int viewType, @NonNull GalleryAdapter adapter) - { - View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_cian_product, parent, - false); - return new Holders.CianProductViewHolder(view, mItems, adapter); - } - - @NonNull - @Override - protected Holders.BaseViewHolder createMoreProductsViewHolder - (@NonNull ViewGroup parent, int viewType, @NonNull GalleryAdapter adapter) - { - View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_cian_more, parent, - false); - return new Holders.CianMoreItemViewHolder<>(view, mItems, adapter); - } - - @NonNull - private static List convertItems(@NonNull RentPlace[] items) - { - List viewItems = new ArrayList<>(); - for (RentPlace place : items) - { - if (place.getOffers().isEmpty()) - continue; - - RentOffer product = place.getOffers().get(0); - Context context = MwmApplication.get(); - String title = context.getString(R.string.room, Integer.toString(product.getRoomsCount())); - String price = Integer.toString((int) product.getPrice()) + " " - + context.getString(R.string.rub_month); - viewItems.add(new Items.CianItem(title, product.getUrl(), price, product.getAddress())); - } - return viewItems; - } -} diff --git a/android/src/com/mapswithme/maps/gallery/impl/CianErrorAdapterStrategy.java b/android/src/com/mapswithme/maps/gallery/impl/CianErrorAdapterStrategy.java deleted file mode 100644 index 5b3855b123..0000000000 --- a/android/src/com/mapswithme/maps/gallery/impl/CianErrorAdapterStrategy.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.mapswithme.maps.gallery.impl; - -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import com.mapswithme.maps.R; -import com.mapswithme.maps.gallery.ErrorAdapterStrategy; - -class CianErrorAdapterStrategy extends ErrorAdapterStrategy -{ - CianErrorAdapterStrategy(@Nullable String url) - { - super(url); - } - - @Override - protected int getTitle() - { - return R.string.preloader_cian_title; - } - - @Override - protected int getSubtitle() - { - return R.string.preloader_cian_message; - } - - @NonNull - @Override - protected View inflateView(@NonNull LayoutInflater inflater, @NonNull ViewGroup parent) - { - return inflater.inflate(R.layout.item_cian_loading, parent, false); - } - - @Override - protected int getLabelForDetailsView() - { - return R.string.preloader_cian_button; - } -} diff --git a/android/src/com/mapswithme/maps/gallery/impl/CianLoadingAdapterStrategy.java b/android/src/com/mapswithme/maps/gallery/impl/CianLoadingAdapterStrategy.java deleted file mode 100644 index 274387183c..0000000000 --- a/android/src/com/mapswithme/maps/gallery/impl/CianLoadingAdapterStrategy.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.mapswithme.maps.gallery.impl; - -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import com.mapswithme.maps.R; -import com.mapswithme.maps.gallery.LoadingAdapterStrategy; - -class CianLoadingAdapterStrategy extends LoadingAdapterStrategy -{ - CianLoadingAdapterStrategy(@Nullable String url) - { - super(url); - } - - @Override - protected int getTitle() - { - return R.string.preloader_cian_title; - } - - @Override - protected int getSubtitle() - { - return R.string.preloader_cian_message; - } - - @NonNull - @Override - protected View inflateView(@NonNull LayoutInflater inflater, @NonNull ViewGroup parent) - { - return inflater.inflate(R.layout.item_cian_loading, parent, false); - } - - @Override - protected int getLabelForDetailsView() - { - return R.string.preloader_cian_button; - } -} diff --git a/android/src/com/mapswithme/maps/gallery/impl/Factory.java b/android/src/com/mapswithme/maps/gallery/impl/Factory.java index d605eb681b..520feb0160 100644 --- a/android/src/com/mapswithme/maps/gallery/impl/Factory.java +++ b/android/src/com/mapswithme/maps/gallery/impl/Factory.java @@ -3,7 +3,6 @@ package com.mapswithme.maps.gallery.impl; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import com.mapswithme.maps.cian.RentPlace; import com.mapswithme.maps.discovery.LocalExpert; import com.mapswithme.maps.gallery.GalleryAdapter; import com.mapswithme.maps.gallery.ItemSelectedListener; @@ -17,7 +16,6 @@ import com.mapswithme.util.statistics.Statistics; import static com.mapswithme.util.statistics.GalleryState.OFFLINE; import static com.mapswithme.util.statistics.GalleryState.ONLINE; -import static com.mapswithme.util.statistics.GalleryType.CIAN; import static com.mapswithme.util.statistics.GalleryType.LOCAL_EXPERTS; import static com.mapswithme.util.statistics.GalleryType.VIATOR; @@ -46,21 +44,6 @@ public class Factory return new GalleryAdapter<>(new ViatorErrorAdapterStrategy(url), listener); } - @NonNull - public static GalleryAdapter createCianLoadingAdapter - (@Nullable String url, @Nullable ItemSelectedListener listener) - { - return new GalleryAdapter<>(new CianLoadingAdapterStrategy(url), listener); - } - - @NonNull - public static GalleryAdapter createCianErrorAdapter(@Nullable String url, - @Nullable ItemSelectedListener - listener) - { - return new GalleryAdapter<>(new CianErrorAdapterStrategy(url), listener); - } - @NonNull public static GalleryAdapter createViatorAdapter(@NonNull ViatorProduct[] products, @Nullable String cityUrl, @@ -72,15 +55,6 @@ public class Factory return new GalleryAdapter<>(new ViatorAdapterStrategy(products, cityUrl), listener); } - @NonNull - public static GalleryAdapter createCianAdapter(@NonNull RentPlace[] products, @NonNull String url, - @Nullable ItemSelectedListener listener, - @NonNull GalleryPlacement placement) - { - trackProductGalleryShownOrError(products, CIAN, ONLINE, placement); - return new GalleryAdapter<>(new CianAdapterStrategy(products, url), listener); - } - @NonNull public static GalleryAdapter createSearchBasedAdapter(@NonNull SearchResult[] results, @Nullable ItemSelectedListener= MIN_QUERY_LENGTH_FOR_AD) @@ -209,7 +209,7 @@ public class SearchFragment extends BaseMwmFragment private final LastPosition mLastPosition = new LastPosition(); private boolean mSearchRunning; - private boolean mCianCategorySelected; + private boolean mLuggageCategorySelected; private String mInitialQuery; @Nullable private String mInitialLocale; @@ -673,15 +673,17 @@ public class SearchFragment extends BaseMwmFragment @Override public void onCategorySelected(String category) { - if (!TextUtils.isEmpty(category) && category.equals("cian ")) + if (!TextUtils.isEmpty(category) && + category.equals(CategoriesAdapter.LUGGAGE_CATEGORY + ' ')) { - mCianCategorySelected = true; + mLuggageCategorySelected = true; mToolbarController.setQuery(category); - Statistics.INSTANCE.trackSponsoredEventByType( - Statistics.EventName.SEARCH_SPONSOR_CATEGORY_SELECTED, Sponsored.TYPE_CIAN); + Statistics.INSTANCE.trackSponsoredEventForCustomProvider( + Statistics.EventName.SEARCH_SPONSOR_CATEGORY_SELECTED, + Statistics.ParamValue.LUGGAGE_HERO); showAllResultsOnMap(); - mCianCategorySelected = false; + mLuggageCategorySelected = false; } else { diff --git a/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java b/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java index 70cd583965..32b8d501ec 100644 --- a/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java +++ b/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java @@ -49,11 +49,8 @@ import com.mapswithme.maps.api.ParsedMwmRequest; import com.mapswithme.maps.bookmarks.data.Bookmark; import com.mapswithme.maps.bookmarks.data.BookmarkManager; import com.mapswithme.maps.bookmarks.data.DistanceAndAzimut; -import com.mapswithme.maps.bookmarks.data.FeatureId; import com.mapswithme.maps.bookmarks.data.MapObject; import com.mapswithme.maps.bookmarks.data.Metadata; -import com.mapswithme.maps.cian.Cian; -import com.mapswithme.maps.cian.RentPlace; import com.mapswithme.maps.downloader.CountryItem; import com.mapswithme.maps.downloader.DownloaderStatusIcon; import com.mapswithme.maps.downloader.MapManager; @@ -128,8 +125,7 @@ public class PlacePageView extends RelativeLayout BottomPlacePageAnimationController.OnBannerOpenListener, EditBookmarkFragment.EditBookmarkListener, BannerController.BannerListener, - Viator.ViatorListener, - Cian.CianListener + Viator.ViatorListener { private static final Logger LOGGER = LoggerFactory.INSTANCE.getLogger(LoggerFactory.Type.MISC); private static final String TAG = PlacePageView.class.getSimpleName(); @@ -646,7 +642,6 @@ public class PlacePageView extends RelativeLayout Sponsored.setPriceListener(this); Sponsored.setInfoListener(this); Viator.setViatorListener(this); - Cian.setCianListener(this); } private void initHotelRatingView() @@ -836,22 +831,6 @@ public class PlacePageView extends RelativeLayout updateViatorView(products, mSponsored.getUrl()); } - @Override - public void onRentPlacesReceived(@NonNull RentPlace[] places) - { - if (mSponsored != null) - updateCianView(places, mSponsored.getUrl()); - } - - @Override - public void onErrorReceived(int errorCode) - { - String url = mSponsored != null ? mSponsored.getUrl() : ""; - mRvSponsoredProducts.setAdapter(Factory.createCianErrorAdapter(url, mDefaultGalleryItemListener)); - Statistics.INSTANCE.trackGalleryError(GalleryType.CIAN, GalleryPlacement.PLACEPAGE, - String.valueOf(errorCode)); - } - private void initSponsoredGalleryView() { mSponsoredGalleryView = findViewById(R.id.ll__place_sponsored_gallery); @@ -885,29 +864,12 @@ public class PlacePageView extends RelativeLayout } } - private void updateCianView(@NonNull final RentPlace[] products, @NonNull final String url) - { - if (products.length == 0) - { - mRvSponsoredProducts.setAdapter(Factory.createCianErrorAdapter(url, mDefaultGalleryItemListener)); - Statistics.INSTANCE.trackGalleryError(GalleryType.CIAN, GalleryPlacement.PLACEPAGE, - Statistics.ParamValue.NO_PRODUCTS); - } - else - { - ItemSelectedListener listener - = createSponsoredProductItemListener(GalleryType.CIAN); - mRvSponsoredProducts.setAdapter(Factory.createCianAdapter(products, url, listener, - GalleryPlacement.PLACEPAGE)); - } - } - private void updateGallerySponsoredLogo(@Sponsored.SponsoredType int type) { - if (type != Sponsored.TYPE_VIATOR && type != Sponsored.TYPE_CIAN) + if (type != Sponsored.TYPE_VIATOR) throw new AssertionError("Unsupported type: " + type); - int logoAttr = type == Sponsored.TYPE_CIAN ? R.attr.cianLogo : R.attr.viatorLogo; + int logoAttr = R.attr.viatorLogo; TypedArray array = getActivity().getTheme().obtainStyledAttributes(new int[] {logoAttr}); int attributeResourceId = array.getResourceId(0 /* index */, 0 /* defValue */); Drawable drawable = getResources().getDrawable(attributeResourceId); @@ -917,8 +879,7 @@ public class PlacePageView extends RelativeLayout private void updateGallerySponsoredTitle(@Sponsored.SponsoredType int type) { - mTvSponsoredTitle.setText(type == Sponsored.TYPE_CIAN ? R.string.subtitle_rent - : R.string.place_page_viator_title); + mTvSponsoredTitle.setText(R.string.place_page_viator_title); } private void hideSponsoredGalleryViews() @@ -1240,41 +1201,26 @@ public class PlacePageView extends RelativeLayout } boolean isViator = mSponsored.getType() == Sponsored.TYPE_VIATOR; - boolean isCian = mSponsored.getType() == Sponsored.TYPE_CIAN; - if (!isViator && !isCian) + if (!isViator) return; updateGallerySponsoredLogo(mSponsored.getType()); updateGallerySponsoredTitle(mSponsored.getType()); UiUtils.show(mSponsoredGalleryView); - boolean hasInCache = isCian ? Cian.hasCache(mMapObject.getFeatureId()) - : Viator.hasCache(mSponsored.getId()); + boolean hasInCache = Viator.hasCache(mSponsored.getId()); final String url = !TextUtils.isEmpty(mSponsored.getUrl()) ? mSponsored.getUrl() : mSponsored.getDescriptionUrl(); if (!ConnectionState.isConnected() && !hasInCache) { - if (isCian) - { - updateCianView(new RentPlace[]{}, url); - return; - } - updateViatorView(new ViatorProduct[]{}, url); return; } - if (isViator) - { - mRvSponsoredProducts.setAdapter(Factory.createViatorLoadingAdapter(url, - mDefaultGalleryItemListener)); - Viator.requestViatorProducts(policy, mSponsored.getId(), currencyCode); - return; - } - - mRvSponsoredProducts.setAdapter(Factory.createCianLoadingAdapter(url, mDefaultGalleryItemListener)); - Cian.getRentNearby(policy, mMapObject.getLat(), mMapObject.getLon(), mMapObject.getFeatureId()); + mRvSponsoredProducts.setAdapter(Factory.createViatorLoadingAdapter(url, + mDefaultGalleryItemListener)); + Viator.requestViatorProducts(policy, mSponsored.getId(), currencyCode); } private boolean isNetworkNeeded() @@ -1436,11 +1382,8 @@ public class PlacePageView extends RelativeLayout if (mSponsored.getType() != Sponsored.TYPE_BOOKING) hideHotelViews(); - if (mSponsored.getType() != Sponsored.TYPE_VIATOR - && mSponsored.getType() != Sponsored.TYPE_CIAN) - { + if (mSponsored.getType() != Sponsored.TYPE_VIATOR) hideSponsoredGalleryViews(); - } } refreshMetadataOrHide(mapObject.getMetadata(Metadata.MetadataType.FMD_PHONE_NUMBER), mPhone, mTvPhone); @@ -1921,10 +1864,8 @@ public class PlacePageView extends RelativeLayout if (!TextUtils.isEmpty(url)) { Utils.openUrl(getContext(), url); - GalleryType type = mSponsored.getType() == Sponsored.TYPE_CIAN ? GalleryType.CIAN - : GalleryType.VIATOR; Statistics.INSTANCE.trackGalleryEvent(Statistics.EventName.PP_SPONSOR_LOGO_SELECTED, - type, GalleryPlacement.PLACEPAGE); + GalleryType.VIATOR, GalleryPlacement.PLACEPAGE); } break; } diff --git a/android/src/com/mapswithme/maps/widget/placepage/Sponsored.java b/android/src/com/mapswithme/maps/widget/placepage/Sponsored.java index c4f588e423..63e729cf4e 100644 --- a/android/src/com/mapswithme/maps/widget/placepage/Sponsored.java +++ b/android/src/com/mapswithme/maps/widget/placepage/Sponsored.java @@ -26,13 +26,11 @@ public final class Sponsored public static final int TYPE_BOOKING = 1; public static final int TYPE_OPENTABLE = 2; public static final int TYPE_VIATOR = 3; - public static final int TYPE_CIAN = 4; - public static final int TYPE_PARTNER = 5; - public static final int TYPE_HOLIDAY = 6; + public static final int TYPE_PARTNER = 4; + public static final int TYPE_HOLIDAY = 5; @Retention(RetentionPolicy.SOURCE) - @IntDef({ TYPE_NONE, TYPE_BOOKING, TYPE_OPENTABLE, - TYPE_VIATOR, TYPE_CIAN, TYPE_PARTNER, TYPE_HOLIDAY }) + @IntDef({ TYPE_NONE, TYPE_BOOKING, TYPE_OPENTABLE, TYPE_VIATOR, TYPE_PARTNER, TYPE_HOLIDAY }) public @interface SponsoredType {} private static class Price diff --git a/android/src/com/mapswithme/util/statistics/GalleryType.java b/android/src/com/mapswithme/util/statistics/GalleryType.java index 4278accc3c..1dcada88ef 100644 --- a/android/src/com/mapswithme/util/statistics/GalleryType.java +++ b/android/src/com/mapswithme/util/statistics/GalleryType.java @@ -13,15 +13,6 @@ public enum GalleryType return Statistics.ParamValue.VIATOR; } }, - CIAN - { - @NonNull - @Override - public String getProvider() - { - return Statistics.ParamValue.CIAN; - } - }, LOCAL_EXPERTS { @NonNull diff --git a/android/src/com/mapswithme/util/statistics/Statistics.java b/android/src/com/mapswithme/util/statistics/Statistics.java index 0a3e11d372..db8df63c1f 100644 --- a/android/src/com/mapswithme/util/statistics/Statistics.java +++ b/android/src/com/mapswithme/util/statistics/Statistics.java @@ -95,7 +95,6 @@ import static com.mapswithme.util.statistics.Statistics.EventParam.STATE; import static com.mapswithme.util.statistics.Statistics.EventParam.TYPE; import static com.mapswithme.util.statistics.Statistics.EventParam.VALUE; import static com.mapswithme.util.statistics.Statistics.ParamValue.BOOKING_COM; -import static com.mapswithme.util.statistics.Statistics.ParamValue.CIAN; import static com.mapswithme.util.statistics.Statistics.ParamValue.HOLIDAY; import static com.mapswithme.util.statistics.Statistics.ParamValue.OPENTABLE; import static com.mapswithme.util.statistics.Statistics.ParamValue.SEARCH_BOOKING_COM; @@ -358,7 +357,6 @@ public enum Statistics static final String LOCALS_EXPERTS = "Locals.Maps.Me"; static final String SEARCH_RESTAURANTS = "Search.Restaurants"; static final String SEARCH_ATTRACTIONS = "Search.Attractions"; - static final String CIAN = "Cian.Ru"; static final String HOLIDAY = "Holiday"; public static final String NO_PRODUCTS = "no_products"; static final String ADD = "add"; @@ -367,6 +365,8 @@ public enum Statistics static final String PLACEPAGE_PREVIEW = "placepage_preview"; static final String PLACEPAGE = "placepage"; public static final String FACEBOOK = "facebook"; + + public static final String LUGGAGE_HERO = "LuggageHero"; } // Initialized once in constructor and does not change until the process restarts. @@ -774,7 +774,7 @@ public enum Statistics .add(PLACEMENT, placement.toString()) .add(STATE, state.toString())); - if (type == GalleryType.CIAN && state == GalleryState.ONLINE) + if (state == GalleryState.ONLINE) MyTracker.trackEvent(PP_SPONSORED_SHOWN + "_" + type.getProvider()); } @@ -807,9 +807,9 @@ public enum Statistics .get()); } - public void trackSponsoredEventByType(@NonNull String eventName, @Sponsored.SponsoredType int type) + public void trackSponsoredEventForCustomProvider(@NonNull String eventName, + @NonNull String provider) { - String provider = convertToSponsor(type); trackEvent(eventName, Statistics.params().add(PROVIDER, provider).get()); MyTracker.trackEvent(eventName + "_" + provider); } @@ -834,8 +834,6 @@ public enum Statistics return VIATOR; case Sponsored.TYPE_OPENTABLE: return OPENTABLE; - case Sponsored.TYPE_CIAN: - return CIAN; case Sponsored.TYPE_HOLIDAY: return HOLIDAY; case Sponsored.TYPE_NONE: diff --git a/iphone/Maps/Common/Statistics/StatisticsStrings.h b/iphone/Maps/Common/Statistics/StatisticsStrings.h index 434a059e0d..8cf338d591 100644 --- a/iphone/Maps/Common/Statistics/StatisticsStrings.h +++ b/iphone/Maps/Common/Statistics/StatisticsStrings.h @@ -59,7 +59,6 @@ static NSString * const kStatChangeRoutingMode = @"Change routing mode"; static NSString * const kStatCharging = @"charging"; static NSString * const kStatCheckIn = @"check_in"; static NSString * const kStatCheckOut = @"check_out"; -static NSString * const kStatCian = @"Cian.ru"; static NSString * const kStatClear = @"Clear"; static NSString * const kStatClose = @"Close"; static NSString * const kStatCollapse = @"Collapse"; @@ -162,6 +161,7 @@ static NSString * const kStatLocals = @"Locals"; static NSString * const kStatLocalsProvider = @"Locals.Maps.Me"; static NSString * const kStatLocation = @"Location"; static NSString * const kStatLogout = @"Logout"; +static NSString * const kStatLuggageHero = @"LuggageHero"; static NSString * const kStatMap = @"map"; static NSString * const kStatMapDataSize = @"map_data_size"; static NSString * const kStatMapSearch = @"Map search"; diff --git a/iphone/Maps/Core/Search/MWMSearch.mm b/iphone/Maps/Core/Search/MWMSearch.mm index 2d58a580b8..a6410486d4 100644 --- a/iphone/Maps/Core/Search/MWMSearch.mm +++ b/iphone/Maps/Core/Search/MWMSearch.mm @@ -12,7 +12,7 @@ #include "map/everywhere_search_params.hpp" #include "map/viewport_search_params.hpp" -extern NSString * const kCianCategory; +extern NSString * const kLuggageCategory; namespace { diff --git a/iphone/Maps/Images.xcassets/Search/Categories/ic_cian_dark.imageset/Contents.json b/iphone/Maps/Images.xcassets/Search/Categories/ic_cian_dark.imageset/Contents.json deleted file mode 100644 index 50879cdcff..0000000000 --- a/iphone/Maps/Images.xcassets/Search/Categories/ic_cian_dark.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "ic_cian_dark.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "ic_cian_dark@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "ic_cian_dark@3x.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/Search/Categories/ic_cian_dark.imageset/ic_cian_dark.png b/iphone/Maps/Images.xcassets/Search/Categories/ic_cian_dark.imageset/ic_cian_dark.png deleted file mode 100644 index 63d01152bd2ee1eb6f03fc042886ddccae4fca2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 440 zcmeAS@N?(olHy`uVBq!ia0vp^G9b*s3?yAI>n{UR)d4;su0Wc@)R*1VkITdlNOG9? zahUmX02!u%K$6qkpB*R;mSQ*Y-FoO`LFWv|Qx|p3UtQ8Wd+FAFo>?^+&6B3C+`M|%p_GOR_0tw-wN6>S{eV_L+O(Bh zcCQiR0b0*j666=m(0J4E#y-X4_HRNy|N0d9%*Sk!%?bjpj@@B7 z=?7}x@B8y#{8~t3lC#Bn^_Zge#tf%ZO(wh&yeGx>F`w;=*6KQ_)Yo%ceS_l7?D7VC zzSX@~EW1-YuYJFHB&DtXsA&C;I^FqCFDd??`twr8JHFLAt9kUr&#Wq%Dj>8fg;nUY zjB1Ei(4i@3o=Ezu+no0CbYoJTzvw{W5ht6eJRYz5e0%5QmDkvOsGB{-X4Z{ef;YBl z%(`{Ns9eW5bl0Qa!wv5jT@F1XkoN2PYIEVH3sUnL1g`zyDEE9>l>`udT*3G=Rg f(ck*px`x4gpUUQ03CEvPE!B_>~aP9!cWq9V+l#sBL_t(|UY(cOlA|yTMQyVMLOP)nLNC3!xX` z+2f;r;^;g>!9_p=7c=-j*NyqCk8RqqZp`h!iT9zwwoTkZ1D{E3(O(p{6g}uKf+xk5 zA|A3Vs}c8EwnwaGaZto1V?0*GOcp8P_Pa`Dktt%#*#;;g%$Y?KEtaTaou=s>;#-=& zA>PTNR>g$5K}hPsj8}b#D}VSK)jd5 zNhbiQOJ+}*Qq zO+n|3x~YrY(yNwlKVZBmk`3rYjglb0U7X26N&~ZxLw6kVmgjTrL)1ZwL&ZioCERR}k{^H__>#ICg+{`L}vG{VH zsbKu}>*)*X)^}I1Id?By^N``t>wD;*5XID|~BB?d)i^ZC_XFnfoMeZV|sD8XURvLzKZ%R+}`R+%|i);$>#@ zABdNGu?CCV_pV54k$+r;Kyw}qkqp1NCaq~YV73udAzQ^Bgp2>_dm%U{;}P1 z$2Bf0+pf{G`?5kjm0#fOzO*g(TQUNTPl>rio8Ow2w)L^R?c7$K*p!D#-sy#(`pZ@^ zWPRzMcQ&-zL|XIQzrbq@SGF!LW#E0A!F(dX`V`NmUl(-y@C zKOKJ6l)OD^suAT7_}^N0(Gq#xg=^$>7cY`uyGLE>$H)9~MQ{GdiW8S&?=;!hdH%Q3 zUARJCmo5I!^u-gFF4wX7KmCa6k4NWU{|~5q@@4VP?>4{geVX9r{JTAiVMTU)P$`4y z+YH@`83u9R{nvlUST0rg=H}gKt2g{11m%RS%DRIC#>eQeoQby0C2 z&zD8a5`AG;eumGMZir>1b+oA8WLkgc3&hGvV&hU^V@7>+p3Wlm+5 s=YJumBLB?shD_p#H>F?H!*3QcsG6R7^lrtYwIBmLUHx3vIVCg!0RFdL+W-In diff --git a/iphone/Maps/Images.xcassets/Search/Categories/ic_cian_light.imageset/Contents.json b/iphone/Maps/Images.xcassets/Search/Categories/ic_cian_light.imageset/Contents.json deleted file mode 100644 index a5b9ccc017..0000000000 --- a/iphone/Maps/Images.xcassets/Search/Categories/ic_cian_light.imageset/Contents.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "images" : [ - { - "idiom" : "universal", - "filename" : "ic_cian_light.png", - "scale" : "1x" - }, - { - "idiom" : "universal", - "filename" : "ic_cian_light@2x.png", - "scale" : "2x" - }, - { - "idiom" : "universal", - "filename" : "ic_cian_light@3x.png", - "scale" : "3x" - } - ], - "info" : { - "version" : 1, - "author" : "xcode" - } -} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/Search/Categories/ic_cian_light.imageset/ic_cian_light.png b/iphone/Maps/Images.xcassets/Search/Categories/ic_cian_light.imageset/ic_cian_light.png deleted file mode 100644 index 848e49b35fca01f2441442d0eee75e62dd195509..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 440 zcmV;p0Z0CcP)PpklcuriL@|E=000hjQchC{Rpm@>%9i#sB~S-bqA3 zRCr!}(`k={APffJ0)vh?+k&@q-pBv{g`23@#f`jQpQO-IV2%=6=DE~D!7^rpb2cWR zB*h?U!nVzDk!(BL4*z90X_7H;vavFs7bG3-IlzH9bQshCz}Q3i7t66D0EH7?TtVkE z749-2Di9tW)>M{Mqw^?0do1b`9glRX3y&J4$GxrSdZo(lJxa*e%jS%?`-8q;dfaaw zf4FShS?YVTUCU+ldRfh_JgbJ@Z)&P1x1x|I^!j{WJRwxU_$;Cg#s_8%P3*~{j~!c+ i_=3e(GrrW(@9+y1F(j?PlvL9I0000WrbR@AC6%g_Q2`^G{5ezyJUM9duGoQvd_(as~OqPtti~2}#xDg$%GD-vRJ7 zo2==pHk#-}m)`&Y0l`T`K~#8NotN2;qc9LfZ9_s^Zy?T9}L*v_$|{2o@%9I)kgsrqsI~K?g>+#9Kor*1yc@2s$$QaoWWUIy0+JD1aUW z7jF!`7+0R0^b;r54tW;=Tez5>IOEs$v-oP#zKYu3`e)IF8v7=34>eq&u~mOj*;*Vz ze-VaSToLh*BuRmIOp+sFp~HcQ8zE#!#6*V}aeq#+4ha!MDYn27VJR%0Xo-l5MI6Tu zh^II{AwK9(P%#n?aHa~5m{ajHP16^|yEMH+e9_^PigTfO!%ozAVc}#HX@+ zLVVQW-XtpCaFl5{&smoJL43=yH^hHBJe!8&@P^}vh$rs&E4QTLN1o^Jh~Ihsjrgv^ zhiS=W$eC&=>4#kL`d9PXAZ}W&jubR$%hh44{-Uyl#_cb<|P?{l^wD1xvT?%W9p{F?Z#|=dTW* zyE1$2_6_@vCDiu5e*f{@?33SsPShv~@(X5A@GhFU|I+<8Kc!;lKm5;|u=k((ys!Ez z|B5eW&iSBtGU)vTj`jQp&v))RqRqg-Bd#UaFb8OLnu?`)l)J;2U7Di}=YdsCxIN^M%vB&bL)#fiQuDHI+W5vy^@)wIQ z=a~w|Z@-?tpl*G41)FpC!Zi;WF5cu*F3NFv+;^-e$EHZ|V9Ke8Wx_49&PracX-jz5 z#Hka*60vT^i7d|e*Sx~F*3{09R@?SJx^T}N|pL-hBU)+~FVF zEq7ewqO$E8J-aU}#8deN&hAUwa=#@b(D;;?OSJi|X=z&@%iGRv)rn1csN|hq_^H2a z6+_mS{&{CZt4*Xe&;1L$#&Bip;!+0Qw;9YQ0<2H*Z2EOkr)bGDRn?*suiZauu(+*Il?qUU%^#`L%o0rG9+OFIV*DkE}RxDfUj2eVylj zE8T@F)xjcZqC2kvlv!n#|M=% zn7+->t(ajD_uYT}hm7S?g>Paw_uA9B;@Zo_JIGMLqmxA%m*vsYmZtJX#Afz|+;wWt~$(697aFX955K diff --git a/iphone/Maps/Images.xcassets/Search/Categories/ic_luggagehero_dark.imageset/Contents.json b/iphone/Maps/Images.xcassets/Search/Categories/ic_luggagehero_dark.imageset/Contents.json new file mode 100644 index 0000000000..78c0e59545 --- /dev/null +++ b/iphone/Maps/Images.xcassets/Search/Categories/ic_luggagehero_dark.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "ic_luggagehero_dark.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/Search/Categories/ic_luggagehero_dark.imageset/ic_luggagehero_dark.pdf b/iphone/Maps/Images.xcassets/Search/Categories/ic_luggagehero_dark.imageset/ic_luggagehero_dark.pdf new file mode 100644 index 0000000000000000000000000000000000000000..06a6d1786d3e2414e1c6c9e04675c6ef73e5f5c4 GIT binary patch literal 6853 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 diff --git a/iphone/Maps/Images.xcassets/logo_cian.imageset/logo_cian@2x.png b/iphone/Maps/Images.xcassets/logo_cian.imageset/logo_cian@2x.png deleted file mode 100644 index be6d79d82bd7d06ce56a8e5d00c272be2759d198..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2600 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 KMNUMnLSTYQ!ORi> diff --git a/iphone/Maps/Images.xcassets/logo_cian.imageset/logo_cian@3x.png b/iphone/Maps/Images.xcassets/logo_cian.imageset/logo_cian@3x.png deleted file mode 100644 index c0fbeefa9cf54f0d9a2b0ce43b10df3b33aeea92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3792 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 jCpRyT2>SoL * items); } // namespace place_page @class MWMGalleryItemModel; @class MWMViatorItemModel; -@class MWMCianItemModel; @class MWMUGCViewModel; @class MWMUGCReviewModel; @class MWMUGCRatingValueType; @@ -152,7 +148,6 @@ using CianIsReady = void (^)(NSArray * items); @property(copy, nonatomic) MWMVoidBlock refreshPreviewCallback; @property(copy, nonatomic) place_page::NewSectionsAreReady sectionsAreReadyCallback; @property(copy, nonatomic) MWMVoidBlock bannerIsReadyCallback; -@property(copy, nonatomic) place_page::CianIsReady cianIsReadyCallback; @property(nonatomic, readonly) MWMUGCViewModel * ugc; // ready callback will be called from main queue. @@ -202,9 +197,6 @@ using CianIsReady = void (^)(NSArray * items); - (void)fillOnlineViatorSection; - (NSArray *)viatorItems; -// CIAN -- (void)fillOnlineCianSection; - // Route points - (RouteMarkType)routeMarkType; - (size_t)intermediateIndex; @@ -251,7 +243,6 @@ using CianIsReady = void (^)(NSArray * items); - (BOOL)isBooking; - (BOOL)isOpentable; - (BOOL)isViator; -- (BOOL)isCian; - (BOOL)isPartner; - (BOOL)isHolidayObject; - (BOOL)isBookingSearch; diff --git a/iphone/Maps/UI/PlacePage/MWMPlacePageData.mm b/iphone/Maps/UI/PlacePage/MWMPlacePageData.mm index f5358dd960..6d941ab07a 100644 --- a/iphone/Maps/UI/PlacePage/MWMPlacePageData.mm +++ b/iphone/Maps/UI/PlacePage/MWMPlacePageData.mm @@ -50,8 +50,6 @@ NSString * const kUserDefaultsLatLonAsDMSKey = @"UserDefaultsLatLonAsDMS"; std::vector m_hotelReviewsRows; booking::HotelInfo m_hotelInfo; - - uint64_t m_cianRequestId; } - (instancetype)initWithPlacePageInfo:(Info const &)info @@ -183,7 +181,7 @@ NSString * const kUserDefaultsLatLonAsDMSKey = @"UserDefaultsLatLonAsDMS"; NSAssert(!m_previewRows.empty(), @"Preview row's can't be empty!"); if (network_policy::CanUseNetwork() && ![MWMSettings adForbidden] && m_info.HasBanner() && - ![self isViator] && ![self isCian]) + ![self isViator]) { __weak auto wSelf = self; [[MWMBannersCache cache] @@ -338,68 +336,6 @@ NSString * const kUserDefaultsLatLonAsDMSKey = @"UserDefaultsLatLonAsDMS"; }); } -- (void)fillOnlineCianSection -{ - if (![self isCian]) - return; - - [self insertSpecialProjectsSectionWithProject:SpecialProject::Cian]; - - if (Platform::ConnectionStatus() == Platform::EConnectionType::CONNECTION_NONE) - { - self.cianIsReadyCallback(@[]); - return; - } - - network_policy::CallPartnersApi([self](platform::NetworkPolicy const & canUseNetwork) { - auto api = GetFramework().GetCianApi(canUseNetwork); - if (!api) - { - self.cianIsReadyCallback(@[]); - return; - } - auto const latLon = [self latLon]; - - __weak auto wSuccessSelf = self; - __weak auto wErrorSelf = self; - m_cianRequestId = api->GetRentNearby( - latLon, - [wSuccessSelf](std::vector const & places, uint64_t const requestId) { - __strong auto self = wSuccessSelf; - if (!self || self->m_cianRequestId != requestId) - return; - NSMutableArray * items = [@[] mutableCopy]; - for (auto const & p : places) - { - auto const & offers = p.m_offers; - NSCAssert(!offers.empty(), @"Cian misses offers for place."); - if (offers.empty()) - continue; - auto const & firstOffer = offers.front(); - - auto pageURL = [NSURL URLWithString:@(firstOffer.m_url.c_str())]; - if (!pageURL) - continue; - auto item = - [[MWMCianItemModel alloc] initWithRoomsCount:firstOffer.m_roomsCount - priceRur:firstOffer.m_priceRur - pageURL:pageURL - address:@(firstOffer.m_address.c_str())]; - [items addObject:item]; - } - - dispatch_async(dispatch_get_main_queue(), - [self, items] { self.cianIsReadyCallback(items); }); - }, - [wErrorSelf](int code, uint64_t const requestId) { - __strong auto self = wErrorSelf; - if (!self || self->m_cianRequestId != requestId) - return; - dispatch_async(dispatch_get_main_queue(), [self] { self.cianIsReadyCallback(@[]); }); - }); - }); -} - - (float)ratingRawValue { return m_info.GetRatingRawValue(); @@ -845,7 +781,6 @@ NSString * const kUserDefaultsLatLonAsDMSKey = @"UserDefaultsLatLonAsDMS"; - (BOOL)isBooking { return m_info.GetSponsoredType() == SponsoredType::Booking; } - (BOOL)isOpentable { return m_info.GetSponsoredType() == SponsoredType::Opentable; } - (BOOL)isViator { return m_info.GetSponsoredType() == SponsoredType::Viator; } -- (BOOL)isCian { return m_info.GetSponsoredType() == SponsoredType::Cian; } - (BOOL)isPartner { return m_info.GetSponsoredType() == SponsoredType::Partner; } - (BOOL)isHolidayObject { return m_info.GetSponsoredType() == SponsoredType::Holiday; } - (BOOL)isBookingSearch { return !m_info.GetBookingSearchUrl().empty(); } diff --git a/iphone/Maps/UI/PlacePage/MWMPlacePageManager.mm b/iphone/Maps/UI/PlacePage/MWMPlacePageManager.mm index fc904ecef3..eba597541d 100644 --- a/iphone/Maps/UI/PlacePage/MWMPlacePageManager.mm +++ b/iphone/Maps/UI/PlacePage/MWMPlacePageManager.mm @@ -253,8 +253,6 @@ void logSponsoredEvent(MWMPlacePageData * data, NSString * eventName) parameters[kStatProvider] = kStatViator; else if (data.isBooking) parameters[kStatProvider] = kStatBooking; - else if (data.isCian) - parameters[kStatProvider] = kStatCian; else if (data.isPartner) parameters[kStatProvider] = data.partnerName; else if (data.isHolidayObject) diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/Cian/CianElement.swift b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/Cian/CianElement.swift deleted file mode 100644 index cadea2884f..0000000000 --- a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/Cian/CianElement.swift +++ /dev/null @@ -1,179 +0,0 @@ -final class CianElement: UICollectionViewCell { - enum State { - case pending(onButtonAction: () -> Void) - case offer(model: CianItemModel?, onButtonAction: (CianItemModel?) -> Void) - case error(onButtonAction: () -> Void) - } - - @IBOutlet private var contentViews: [UIView]! - - @IBOutlet private weak var pendingView: UIView! - @IBOutlet private weak var offerView: UIView! - @IBOutlet private weak var more: UIButton! - @IBOutlet private weak var price: UILabel! { - didSet { - price.font = UIFont.medium14() - price.textColor = UIColor.linkBlue() - } - } - - @IBOutlet private weak var descr: UILabel! { - didSet { - descr.font = UIFont.medium14() - descr.textColor = UIColor.blackPrimaryText() - } - } - - @IBOutlet private weak var address: UILabel! { - didSet { - address.font = UIFont.regular12() - address.textColor = UIColor.blackSecondaryText() - } - } - - @IBOutlet private weak var details: UIButton! { - didSet { - details.setTitleColor(UIColor.linkBlue(), for: .normal) - details.setBackgroundColor(UIColor.blackOpaque(), for: .normal) - } - } - - private var isLastCell = false { - didSet { - more.isHidden = !isLastCell - price.isHidden = isLastCell - descr.isHidden = isLastCell - address.isHidden = isLastCell - details.isHidden = isLastCell - } - } - - @IBOutlet private weak var pendingSpinnerView: UIImageView! { - didSet { - pendingSpinnerView.tintColor = UIColor.linkBlue() - } - } - - @IBOutlet private weak var pendingTitleTopOffset: NSLayoutConstraint! - @IBOutlet private weak var pendingTitle: UILabel! { - didSet { - pendingTitle.font = UIFont.medium14() - pendingTitle.textColor = UIColor.blackPrimaryText() - pendingTitle.text = L("preloader_cian_title") - } - } - - @IBOutlet private weak var pendingDescription: UILabel! { - didSet { - pendingDescription.font = UIFont.regular12() - pendingDescription.textColor = UIColor.blackSecondaryText() - pendingDescription.text = L("preloader_cian_message") - } - } - - @IBAction func onButtonAction() { - switch state! { - case let .pending(action): action() - case let .offer(model, action): action(model) - case let .error(action): action() - } - } - - var state: State! { - didSet { - setupAppearance() - let visibleView: UIView - let pendingSpinnerViewAlpha: CGFloat - switch state! { - case .pending: - pendingSpinnerViewAlpha = 1 - visibleView = self.pendingView - case .offer: - pendingSpinnerViewAlpha = 1 - visibleView = self.offerView - case .error: - pendingSpinnerViewAlpha = 0 - visibleView = self.pendingView - } - - animateConstraints(animations: { - self.contentViews.forEach { $0.isHidden = false } - switch self.state! { - case .pending: self.configPending() - case let .offer(model, _): self.configOffer(model: model) - case .error: self.configError() - } - self.pendingSpinnerView.alpha = pendingSpinnerViewAlpha - self.contentViews.forEach { $0.alpha = 0 } - visibleView.alpha = 1 - }, completion: { - self.contentViews.forEach { $0.isHidden = true } - visibleView.isHidden = false - }) - } - } - - private var isSpinning = false { - didSet { - let animationKey = "SpinnerAnimation" - if isSpinning { - let animation = CABasicAnimation(keyPath: "transform.rotation.z") - animation.fromValue = NSNumber(value: 0) - animation.toValue = NSNumber(value: 2 * Double.pi) - animation.duration = 0.8 - animation.repeatCount = Float.infinity - pendingSpinnerView.layer.add(animation, forKey: animationKey) - } else { - pendingSpinnerView.layer.removeAnimation(forKey: animationKey) - } - } - } - - private func setupAppearance() { - backgroundColor = UIColor.white() - layer.cornerRadius = 6 - layer.borderWidth = 1 - layer.borderColor = UIColor.blackDividers().cgColor - } - - private func configPending() { - isSpinning = true - details.setTitle(L("preloader_cian_button"), for: .normal) - pendingTitleTopOffset.priority = UILayoutPriority.defaultLow - } - - private func configError() { - isSpinning = false - details.setTitle(L("preloader_cian_button"), for: .normal) - pendingTitleTopOffset.priority = UILayoutPriority.defaultHigh - } - - private func configOffer(model: CianItemModel?) { - isSpinning = false - if let model = model { - isLastCell = false - - let priceFormatter = NumberFormatter() - priceFormatter.usesGroupingSeparator = true - if let priceString = priceFormatter.string(from: NSNumber(value: model.priceRur)) { - price.text = "\(priceString) \(L("rub_month"))" - } else { - price.isHidden = true - } - - let descrFormat = L("room").replacingOccurrences(of: "%s", with: "%@") - descr.text = String(format: descrFormat, arguments: ["\(model.roomsCount)"]) - - address.text = model.address - - details.setTitle(L("details"), for: .normal) - } else { - isLastCell = true - - more.setBackgroundImage(UIColor.isNightMode() ? #imageLiteral(resourceName: "btn_float_more_dark") : #imageLiteral(resourceName: "btn_float_more_light"), for: .normal) - - backgroundColor = UIColor.clear - layer.borderColor = UIColor.clear.cgColor - } - } -} diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/Cian/CianElement.xib b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/Cian/CianElement.xib deleted file mode 100644 index 83c4ba1688..0000000000 --- a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/Cian/CianElement.xib +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/Cian/CianItemModel.swift b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/Cian/CianItemModel.swift deleted file mode 100644 index b8b3af7cfd..0000000000 --- a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/Cian/CianItemModel.swift +++ /dev/null @@ -1,14 +0,0 @@ -@objc(MWMCianItemModel) -final class CianItemModel: NSObject { - let roomsCount: UInt - let priceRur: UInt - let pageURL: URL - let address: String - - @objc init(roomsCount: UInt, priceRur: UInt, pageURL: URL, address: String) { - self.roomsCount = roomsCount - self.priceRur = priceRur - self.pageURL = pageURL - self.address = address - } -} diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/Cian/PPCianCarouselCell.swift b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/Cian/PPCianCarouselCell.swift deleted file mode 100644 index 95405aeca7..0000000000 --- a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/Cian/PPCianCarouselCell.swift +++ /dev/null @@ -1,130 +0,0 @@ -import MyTrackerSDK - -@objc(MWMPPCianCarouselCell) -final class PPCianCarouselCell: MWMTableViewCell { - @IBOutlet private weak var title: UILabel! { - didSet { - title.text = L("subtitle_rent") - title.font = UIFont.bold14() - title.textColor = UIColor.blackSecondaryText() - } - } - - @IBOutlet private weak var more: UIButton! { - didSet { - more.setImage(#imageLiteral(resourceName: "logo_cian"), for: .normal) - more.titleLabel?.font = UIFont.regular17() - more.setTitleColor(UIColor.linkBlue(), for: .normal) - } - } - - @IBOutlet private weak var collectionView: UICollectionView! - @objc var data: [CianItemModel]? { - didSet { - updateCollectionView { [weak self] in - self?.collectionView.reloadSections(IndexSet(integer: 0)) - } - } - } - - fileprivate let kMaximumNumberOfElements = 5 - fileprivate var delegate: MWMPlacePageButtonsProtocol? - - fileprivate var statisticsParameters: [AnyHashable: Any] { return [kStatProvider: kStatCian, - kStatPlacement : kStatPlacePage] } - - @objc func config(delegate d: MWMPlacePageButtonsProtocol?) { - delegate = d - collectionView.contentOffset = .zero - collectionView.delegate = self - collectionView.dataSource = self - collectionView.register(cellClass: CianElement.self) - collectionView.reloadData() - - isSeparatorHidden = true - backgroundColor = UIColor.clear - } - - fileprivate func isLastCell(_ indexPath: IndexPath) -> Bool { - return indexPath.item == collectionView.numberOfItems(inSection: indexPath.section) - 1 - } - - override func didMoveToSuperview() { - super.didMoveToSuperview() - updateCollectionView(nil) - } - - private func updateCollectionView(_ updates: (() -> Void)?) { - guard let sv = superview else { return } - let layout = collectionView.collectionViewLayout as! UICollectionViewFlowLayout - let screenSize = { sv.size.width - layout.sectionInset.left - layout.sectionInset.right } - let itemHeight: CGFloat = 136 - let itemWidth: CGFloat - if let data = data { - if data.isEmpty { - itemWidth = screenSize() - } else { - itemWidth = 160 - } - } else { - itemWidth = screenSize() - } - layout.itemSize = CGSize(width: itemWidth, height: itemHeight) - collectionView.performBatchUpdates(updates, completion: nil) - } - - @IBAction - fileprivate func onMore() { - MRMyTracker.trackEvent(withName: "Placepage_SponsoredGallery_LogoItem_selected_Cian.Ru") - Statistics.logEvent(kStatPlacepageSponsoredLogoSelected, withParameters: statisticsParameters) - delegate?.openSponsoredURL(nil) - } -} - -extension PPCianCarouselCell: UICollectionViewDelegate, UICollectionViewDataSource { - func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { - let cell = collectionView.dequeueReusableCell(withCellClass: CianElement.self, - indexPath: indexPath) as! CianElement - if let data = data { - if data.isEmpty { - cell.state = .error(onButtonAction: { [unowned self] in - Statistics.logEvent(kStatPlacepageSponsoredError, withParameters: self.statisticsParameters) - self.delegate?.openSponsoredURL(nil) - }) - } else { - let model = isLastCell(indexPath) ? nil : data[indexPath.item] - var params = statisticsParameters - params[kStatItem] = indexPath.row + 1 - params[kStatDestination] = kStatExternal - cell.state = .offer(model: model, - onButtonAction: { [unowned self] model in - let isMore = model == nil - MRMyTracker.trackEvent(withName: isMore ? "Placepage_SponsoredGallery_MoreItem_selected_Cian.Ru" : - "Placepage_SponsoredGallery_ProductItem_selected_Cian.Ru") - Statistics.logEvent(isMore ? kStatPlacepageSponsoredMoreSelected : kStatPlacepageSponsoredItemSelected, - withParameters: params) - self.delegate?.openSponsoredURL(model?.pageURL) - }) - } - } else { - cell.state = .pending(onButtonAction: { [unowned self] in - MRMyTracker.trackEvent(withName: "Placepage_SponsoredGallery_MoreItem_selected_Cian.Ru") - Statistics.logEvent(kStatPlacepageSponsoredMoreSelected, withParameters: self.statisticsParameters) - self.delegate?.openSponsoredURL(nil) - }) - } - return cell - } - - func collectionView(_: UICollectionView, numberOfItemsInSection _: Int) -> Int { - if let data = data { - if data.isEmpty { - return 1 - } else { - return min(data.count, kMaximumNumberOfElements) + 1 - } - } else { - return 1 - } - } -} diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/Cian/PPCianCarouselCell.xib b/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/Cian/PPCianCarouselCell.xib deleted file mode 100644 index 6caaa12e06..0000000000 --- a/iphone/Maps/UI/PlacePage/PlacePageLayout/Content/Cian/PPCianCarouselCell.xib +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/MWMPlacePageLayout.mm b/iphone/Maps/UI/PlacePage/PlacePageLayout/MWMPlacePageLayout.mm index fb9bc09eed..c0522797c7 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageLayout/MWMPlacePageLayout.mm +++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/MWMPlacePageLayout.mm @@ -57,7 +57,6 @@ map const kMetaInfoCells = { @property(weak, nonatomic) MWMPlacePageTaxiCell * taxiCell; @property(weak, nonatomic) MWMPPViatorCarouselCell * viatorCell; -@property(weak, nonatomic) MWMPPCianCarouselCell * cianCell; @property(nonatomic) BOOL buttonsSectionEnabled; @@ -94,7 +93,6 @@ map const kMetaInfoCells = { [tv registerWithCellClass:[MWMPPHotelDescriptionCell class]]; [tv registerWithCellClass:[MWMPPHotelCarouselCell class]]; [tv registerWithCellClass:[MWMPPViatorCarouselCell class]]; - [tv registerWithCellClass:[MWMPPCianCarouselCell class]]; [tv registerWithCellClass:[MWMPPReviewHeaderCell class]]; [tv registerWithCellClass:[MWMPPReviewCell class]]; [tv registerWithCellClass:[MWMPPFacilityCell class]]; @@ -120,7 +118,6 @@ map const kMetaInfoCells = { dispatch_async(dispatch_get_main_queue(), ^{ [data fillOnlineBookingSections]; [data fillOnlineViatorSection]; - [data fillOnlineCianSection]; }); } @@ -418,15 +415,6 @@ map const kMetaInfoCells = { self.viatorCell = c; return c; } - case SpecialProject::Cian: - { - Class cls = [MWMPPCianCarouselCell class]; - auto c = static_cast( - [tableView dequeueReusableCellWithCellClass:cls indexPath:indexPath]); - [c configWithDelegate:delegate]; - self.cianCell = c; - return c; - } } } case Sections::HotelPhotos: @@ -624,13 +612,6 @@ map const kMetaInfoCells = { [Statistics logEvent:kStatPlacepageSponsoredShow withParameters:@{kStatProvider: kStatViator, kStatPlacement: kStatPlacePage}]; }); - - checkCell(self.cianCell, ^{ - self.cianCell = nil; - [MRMyTracker trackEventWithName:@"Placepage_SponsoredGallery_shown_Cian.Ru"]; - [Statistics logEvent:kStatPlacepageSponsoredShow - withParameters:@{kStatProvider : kStatCian, kStatPlacement: kStatPlacePage}]; - }); } #pragma mark - MWMOpeningHoursLayoutHelper @@ -730,10 +711,6 @@ map const kMetaInfoCells = { [self.previewLayoutHelper insertRowAtTheEnd]; }; - data.cianIsReadyCallback = ^(NSArray * items) { - self.cianCell.data = items; - }; - [self.actionBar configureWithData:data]; [self.previewLayoutHelper configWithData:data]; auto const & metaInfo = data.metainfoRows; diff --git a/iphone/Maps/UI/Search/TabbedView/CategoriesTab/MWMSearchCategoriesManager.mm b/iphone/Maps/UI/Search/TabbedView/CategoriesTab/MWMSearchCategoriesManager.mm index 6ac180d89d..323174de84 100644 --- a/iphone/Maps/UI/Search/TabbedView/CategoriesTab/MWMSearchCategoriesManager.mm +++ b/iphone/Maps/UI/Search/TabbedView/CategoriesTab/MWMSearchCategoriesManager.mm @@ -6,7 +6,7 @@ #include "Framework.h" -extern NSString * const kCianCategory = @"cian"; +extern NSString * const kLuggageCategory = @"luggagehero"; @implementation MWMSearchCategoriesManager { @@ -54,10 +54,10 @@ extern NSString * const kCianCategory = @"cian"; forRowAtIndexPath:(NSIndexPath *)indexPath { NSString * string = @(m_categories[indexPath.row].c_str()); - if ([string isEqualToString:kCianCategory]) + if ([string isEqualToString:kLuggageCategory]) { - [MRMyTracker trackEventWithName:@"Search_SponsoredCategory_shown_Cian"]; - [Statistics logEvent:kStatSearchSponsoredShow withParameters:@{kStatProvider : kStatCian}]; + [MRMyTracker trackEventWithName:@"Search_SponsoredCategory_shown_LuggageHero"]; + [Statistics logEvent:kStatSearchSponsoredShow withParameters:@{kStatProvider : kStatLuggageHero}]; } } @@ -70,11 +70,11 @@ extern NSString * const kCianCategory = @"cian"; [delegate searchText:[L(string) stringByAppendingString:@" "] forInputLocale:[[AppInfo sharedInfo] languageId]]; [delegate dismissKeyboard]; - if ([string isEqualToString:kCianCategory]) + if ([string isEqualToString:kLuggageCategory]) { delegate.state = MWMSearchManagerStateMapSearch; - [MRMyTracker trackEventWithName:@"Search_SponsoredCategory_selected_Cian"]; - [Statistics logEvent:kStatSearchSponsoredSelect withParameters:@{kStatProvider : kStatCian}]; + [MRMyTracker trackEventWithName:@"Search_SponsoredCategory_selected_LuggageHero"]; + [Statistics logEvent:kStatSearchSponsoredSelect withParameters:@{kStatProvider : kStatLuggageHero}]; } } diff --git a/iphone/Maps/UI/Search/TabbedView/CategoriesTab/MWMSearchCategoryCell.mm b/iphone/Maps/UI/Search/TabbedView/CategoriesTab/MWMSearchCategoryCell.mm index 31c2a6828a..a3e95fdf56 100644 --- a/iphone/Maps/UI/Search/TabbedView/CategoriesTab/MWMSearchCategoryCell.mm +++ b/iphone/Maps/UI/Search/TabbedView/CategoriesTab/MWMSearchCategoryCell.mm @@ -2,7 +2,7 @@ #import "MWMCommon.h" #import "UIImageView+Coloring.h" -extern NSString * const kCianCategory; +extern NSString * const kLuggageCategory; @interface MWMSearchCategoryCell () @@ -29,11 +29,11 @@ extern NSString * const kCianCategory; UILabel * label = self.label; label.textColor = [UIColor blackPrimaryText]; self.icon.mwm_name = [NSString stringWithFormat:@"ic_%@", category]; - if ([category isEqualToString:kCianCategory]) + if ([category isEqualToString:kLuggageCategory]) { - label.text = L(@"real_estate"); + label.text = L(@"luggage_storage"); self.adIcon.hidden = NO; - self.adIcon.mwm_name = @"logo_cian"; + self.adIcon.image = [UIImage imageNamed:@"logo_luggage"]; } else { diff --git a/iphone/Maps/UI/Search/TabbedView/CategoriesTab/MWMSearchCategoryCell.xib b/iphone/Maps/UI/Search/TabbedView/CategoriesTab/MWMSearchCategoryCell.xib index 2650eeed53..587af8987c 100644 --- a/iphone/Maps/UI/Search/TabbedView/CategoriesTab/MWMSearchCategoryCell.xib +++ b/iphone/Maps/UI/Search/TabbedView/CategoriesTab/MWMSearchCategoryCell.xib @@ -1,13 +1,18 @@ - + - + + + + HelveticaNeue + + @@ -45,7 +50,7 @@ - + @@ -79,6 +84,6 @@ - + diff --git a/map/displayed_categories_modifiers.cpp b/map/displayed_categories_modifiers.cpp index ba7b253491..64f1c99764 100644 --- a/map/displayed_categories_modifiers.cpp +++ b/map/displayed_categories_modifiers.cpp @@ -1,19 +1,25 @@ #include "map/displayed_categories_modifiers.hpp" -#include "partners_api/cian_api.hpp" - #include "base/macros.hpp" #include +#include -CianModifier::CianModifier(std::string const & city) : m_city(city) {} +namespace +{ +std::unordered_set const kLuggageHeroesSupportedCities{"London", "New York", + "Copenhagen"}; +} // namespace -void CianModifier::Modify(search::DisplayedCategories::Keys & keys) +LuggageHeroModifier::LuggageHeroModifier(std::string const & city) : m_city(city) {} + +void LuggageHeroModifier::Modify(search::DisplayedCategories::Keys & keys) { static int const kPos = 4; - static std::string const kCategoryName = "cian"; + static std::string const kCategoryName = "luggagehero"; - auto const supported = cian::Api::IsCitySupported(m_city); + auto const supported = + kLuggageHeroesSupportedCities.find(m_city) != kLuggageHeroesSupportedCities.cend(); auto const contains = std::find(keys.cbegin(), keys.cend(), kCategoryName) != keys.cend(); ASSERT_LESS(kPos, keys.size(), ()); diff --git a/map/displayed_categories_modifiers.hpp b/map/displayed_categories_modifiers.hpp index 798b0d2a1a..5e6a3e6ebc 100644 --- a/map/displayed_categories_modifiers.hpp +++ b/map/displayed_categories_modifiers.hpp @@ -2,10 +2,10 @@ #include "search/displayed_categories.hpp" -class CianModifier : public search::CategoriesModifier +class LuggageHeroModifier : public search::CategoriesModifier { public: - explicit CianModifier(std::string const & city); + explicit LuggageHeroModifier(std::string const & city); // CategoriesModifier overrides: void Modify(search::DisplayedCategories::Keys & keys) override; diff --git a/map/framework.cpp b/map/framework.cpp index b9f2d74888..9ac61e2435 100644 --- a/map/framework.cpp +++ b/map/framework.cpp @@ -539,15 +539,6 @@ taxi::Engine * Framework::GetTaxiEngine(platform::NetworkPolicy const & policy) return nullptr; } -cian::Api * Framework::GetCianApi(platform::NetworkPolicy const & policy) -{ - ASSERT(m_cianApi, ()); - if (policy.CanUse()) - return m_cianApi.get(); - - return nullptr; -} - locals::Api * Framework::GetLocalsApi(platform::NetworkPolicy const & policy) { ASSERT(m_localsApi, ()); @@ -892,13 +883,6 @@ void Framework::FillInfoFromFeatureType(FeatureType const & ft, place_page::Info info.SetBookingSearchUrl(url); LOG(LINFO, (url)); } - else if (cian::Api::IsCitySupported(city) && - ((buildingHolder.Equals({ft}) && !ft.HasName()) || - ftypes::IsPublicTransportStopChecker::Instance()(ft))) - { - info.SetSponsoredType(SponsoredType::Cian); - info.SetSponsoredUrl(cian::Api::GetMainPageUrl()); - } else if (ftypes::SponsoredPartnerChecker::Instance()(ft)) { info.SetSponsoredType(place_page::SponsoredType::Partner); @@ -1484,8 +1468,8 @@ search::DisplayedCategories const & Framework::GetDisplayedCategories() if (auto const position = GetCurrentPosition()) city = m_cityFinder->GetCityName(*position, StringUtf8Multilang::kEnglishCode); - CianModifier cianModifier(city); - m_displayedCategories->Modify(cianModifier); + LuggageHeroModifier modifier(city); + m_displayedCategories->Modify(modifier); return *m_displayedCategories; } @@ -1634,13 +1618,6 @@ void Framework::FillSearchResultsMarks(bool clear, search::Results::ConstIter be continue; } - // TODO: delete me after Cian project is finished. - if (GetSearchAPI().GetSponsoredMode() == SearchAPI::SponsoredMode::Cian) - { - mark->SetMarkType(SearchMarkType::Cian); - continue; - } - if (r.m_metadata.m_isSponsoredHotel) mark->SetMarkType(SearchMarkType::Booking); diff --git a/map/framework.hpp b/map/framework.hpp index 075b1cbb3f..f0dc08610d 100644 --- a/map/framework.hpp +++ b/map/framework.hpp @@ -47,7 +47,6 @@ #include "tracking/reporter.hpp" #include "partners_api/booking_api.hpp" -#include "partners_api/cian_api.hpp" #include "partners_api/locals_api.hpp" #include "partners_api/taxi_engine.hpp" #include "partners_api/viator_api.hpp" @@ -193,7 +192,6 @@ protected: unique_ptr m_bookingApi = make_unique(); unique_ptr m_viatorApi = make_unique(); - unique_ptr m_cianApi = make_unique(); unique_ptr m_localsApi = make_unique(); df::DrapeApi m_drapeApi; @@ -237,7 +235,6 @@ public: booking::Api const * GetBookingApi(platform::NetworkPolicy const & policy) const; viator::Api * GetViatorApi(platform::NetworkPolicy const & policy); taxi::Engine * GetTaxiEngine(platform::NetworkPolicy const & policy); - cian::Api * GetCianApi(platform::NetworkPolicy const & policy); locals::Api * GetLocalsApi(platform::NetworkPolicy const & policy); ugc::Api * GetUGCApi() { return m_ugcApi.get(); } ugc::Api const * GetUGCApi() const { return m_ugcApi.get(); } diff --git a/map/place_page_info.cpp b/map/place_page_info.cpp index 37fd32361c..3ae7f674b1 100644 --- a/map/place_page_info.cpp +++ b/map/place_page_info.cpp @@ -268,9 +268,6 @@ bool Info::HasBanner() const if (!m_adsEngine) return false; - if (m_sponsoredType == SponsoredType::Cian) - return false; - if (IsMyPosition()) return false; diff --git a/map/place_page_info.hpp b/map/place_page_info.hpp index b7e11cb96a..d2c9a8155a 100644 --- a/map/place_page_info.hpp +++ b/map/place_page_info.hpp @@ -38,7 +38,6 @@ enum class SponsoredType Booking, Opentable, Viator, - Cian, Partner, Holiday }; diff --git a/map/search_api.cpp b/map/search_api.cpp index 85aea8721b..fe9a7d3c95 100644 --- a/map/search_api.cpp +++ b/map/search_api.cpp @@ -39,13 +39,6 @@ void CancelQuery(weak_ptr & handle) handle.reset(); } -bool IsCianMode(string query) -{ - strings::Trim(query); - strings::AsciiToLower(query); - return query == "cian"; -} - bookmarks::Id MarkIDToBookmarkId(df::MarkID id) { static_assert(is_integral::value, ""); @@ -172,7 +165,6 @@ bool SearchAPI::SearchEverywhere(EverywhereSearchParams const & params) p.m_needAddress = true; p.m_needHighlighting = true; p.m_hotelsFilter = params.m_hotelsFilter; - p.m_cianMode = m_sponsoredMode == SponsoredMode::Cian; p.m_onResults = EverywhereSearchCallback( static_cast(*this), @@ -206,7 +198,6 @@ bool SearchAPI::SearchInViewport(ViewportSearchParams const & params) p.m_needAddress = false; p.m_needHighlighting = false; p.m_hotelsFilter = params.m_hotelsFilter; - p.m_cianMode = m_sponsoredMode == SponsoredMode::Cian; p.m_onStarted = [this, params] { if (params.m_onStarted) @@ -437,9 +428,6 @@ void SearchAPI::UpdateSponsoredMode(string const & query, booking::filter::availability::Params const & params) { m_sponsoredMode = SponsoredMode::None; - // TODO: delete me after Cian project is finished. - if (IsCianMode(query)) - m_sponsoredMode = SponsoredMode::Cian; if (!params.IsEmpty()) m_sponsoredMode = SponsoredMode::Booking; } @@ -449,7 +437,6 @@ string DebugPrint(SearchAPI::SponsoredMode mode) switch (mode) { case SearchAPI::SponsoredMode::None: return "None"; - case SearchAPI::SponsoredMode::Cian: return "Cian"; case SearchAPI::SponsoredMode::Booking: return "Booking"; } } diff --git a/map/search_api.hpp b/map/search_api.hpp index 4936d2a44a..6296cbbfeb 100644 --- a/map/search_api.hpp +++ b/map/search_api.hpp @@ -58,8 +58,6 @@ public: enum class SponsoredMode { None, - // TODO (@y, @m): delete me after Cian project is finished. - Cian, Booking }; diff --git a/map/search_mark.cpp b/map/search_mark.cpp index c9ca9082b0..f0cf0eed2b 100644 --- a/map/search_mark.cpp +++ b/map/search_mark.cpp @@ -14,7 +14,6 @@ std::vector const kSymbols = "search-result", // Default. "search-booking", // Booking. "search-adv", // LocalAds. - "search-cian", // TODO: delete me after Cian project is finished. "non-found-search-result", // NotFound. }; @@ -24,7 +23,6 @@ std::vector const kPreparingSymbols = "search-result", // Default. "search-booking-inactive", // Booking. "search-adv", // LocalAds. - "search-cian", // TODO: delete me after Cian project is finished. "non-found-search-result", // NotFound. }; diff --git a/map/search_mark.hpp b/map/search_mark.hpp index b66d68fc90..90e848a0c6 100644 --- a/map/search_mark.hpp +++ b/map/search_mark.hpp @@ -17,8 +17,6 @@ enum class SearchMarkType Default = 0, Booking, LocalAds, - Cian, // TODO: delete me after Cian project is finished. - NotFound, // Service value used in developer tools. Count }; diff --git a/partners_api/CMakeLists.txt b/partners_api/CMakeLists.txt index a76b739127..d1171690ae 100644 --- a/partners_api/CMakeLists.txt +++ b/partners_api/CMakeLists.txt @@ -13,8 +13,6 @@ set( booking_api.hpp booking_availability_params.cpp booking_availability_params.hpp - cian_api.cpp - cian_api.hpp facebook_ads.cpp facebook_ads.hpp google_ads.cpp diff --git a/partners_api/cian_api.cpp b/partners_api/cian_api.cpp deleted file mode 100644 index 53e29e99ee..0000000000 --- a/partners_api/cian_api.cpp +++ /dev/null @@ -1,179 +0,0 @@ -#include "partners_api/cian_api.hpp" - -#include "platform/platform.hpp" - -#include "geometry/mercator.hpp" -#include "geometry/rect2d.hpp" - -#include "base/logging.hpp" - -#include -#include - -#include "3party/jansson/myjansson.hpp" - -using namespace partners_api; -using namespace platform; - -namespace -{ -void AddParameterToUrl(std::string & url, std::string const & parameters) -{ - if (url.find("?") != std::string::npos) - url += "&"; - else - url += "?"; - - url += parameters; -} - -// Length of the rect side in meters. -double const kSearchRadius = 500.0; -std::string const kUtmComplement = "utm_source=maps.me&utm_medium=cpc&utm_campaign=map"; - -std::unordered_set const kSupportedCities -{ - "Moscow", - "Saint Petersburg", - "Nizhny Novgorod", - "Samara", - "Kazan", - "Krasnodar", - "Rostov-on-Don", - "Ufa" -}; - -template -void GetNullable(json_t * src, std::string const & fieldName, T & result) -{ - auto const field = json_object_get(src, fieldName.c_str()); - - if (json_is_null(field)) - return; - - FromJSON(field, result); -} - -void MakeResult(std::string const & src, std::vector & result) -{ - my::Json root(src.c_str()); - if (!json_is_object(root.get())) - MYTHROW(my::Json::Exception, ("The answer must contain a json object.")); - - json_t * clusters = json_object_get(root.get(), "clusters"); - - if (clusters == nullptr) - return; - - size_t const clustersSize = json_array_size(clusters); - - for (size_t i = 0; i < clustersSize; ++i) - { - auto cluster = json_array_get(clusters, i); - cian::RentPlace place; - FromJSONObject(cluster, "lat", place.m_latlon.lat); - FromJSONObject(cluster, "lng", place.m_latlon.lon); - FromJSONObject(cluster, "url", place.m_url); - - json_t * offers = json_object_get(cluster, "offers"); - - if (offers == nullptr) - continue; - - size_t const offersSize = json_array_size(offers); - - if (offersSize == 0) - continue; - - for (size_t i = 0; i < offersSize; ++i) - { - auto offer = json_array_get(offers, i); - - cian::RentOffer rentOffer; - - GetNullable(offer, "flatType", rentOffer.m_flatType); - GetNullable(offer, "roomsCount", rentOffer.m_roomsCount); - GetNullable(offer, "priceRur", rentOffer.m_priceRur); - GetNullable(offer, "floorNumber", rentOffer.m_floorNumber); - GetNullable(offer, "floorsCount", rentOffer.m_floorsCount); - GetNullable(offer, "url", rentOffer.m_url); - GetNullable(offer, "address", rentOffer.m_address); - - if (rentOffer.IsValid()) - { - AddParameterToUrl(rentOffer.m_url, kUtmComplement); - place.m_offers.push_back(std::move(rentOffer)); - } - } - - result.push_back(std::move(place)); - } -} -} // namespace - -namespace cian -{ -std::string const kBaseUrl = "https://api.cian.ru/rent-nearby/v1"; - -// static -http::Result RawApi::GetRentNearby(m2::RectD const & rect, - std::string const & baseUrl /* = kBaseUrl */) -{ - std::ostringstream url; - url << std::setprecision(6) << baseUrl << "/get-offers-in-bbox/?bbox=" << rect.minX() << ',' << rect.maxY() << '~' - << rect.maxX() << ',' << rect.minY(); - - return http::RunSimpleRequest(url.str()); -} - -Api::Api(std::string const & baseUrl /* = kBaseUrl */) : m_baseUrl(baseUrl) {} - -uint64_t Api::GetRentNearby(ms::LatLon const & latlon, RentNearbyCallback const & onSuccess, - ErrorCallback const & onError) -{ - auto const reqId = ++m_requestId; - auto const & baseUrl = m_baseUrl; - - // Cian supports inverted lon lat coordinates - auto const mercatorRect = MercatorBounds::MetresToXY(latlon.lat, latlon.lon, kSearchRadius); - auto const rect = MercatorBounds::ToLatLonRect(mercatorRect); - - GetPlatform().RunTask(Platform::Thread::Network, [reqId, rect, onSuccess, onError, baseUrl]() { - std::vector result; - - auto const rawResult = RawApi::GetRentNearby(rect, baseUrl); - if (!rawResult) - { - auto & code = rawResult.m_errorCode; - onError(code, reqId); - return; - } - - try - { - MakeResult(rawResult.m_data, result); - } - catch (my::Json::Exception const & e) - { - LOG(LERROR, (e.Msg())); - result.clear(); - } - onSuccess(result, reqId); - }); - - return reqId; -} - -// static -bool Api::IsCitySupported(std::string const & city) -{ - return kSupportedCities.find(city) != kSupportedCities.cend(); -} - -// static -std::string const & Api::GetMainPageUrl() -{ - static std::string const kMainPageUrl = "https://www.cian.ru/?" + kUtmComplement; - return kMainPageUrl; -} -} // namespace cian diff --git a/partners_api/cian_api.hpp b/partners_api/cian_api.hpp deleted file mode 100644 index e98fd31b2c..0000000000 --- a/partners_api/cian_api.hpp +++ /dev/null @@ -1,74 +0,0 @@ -#pragma once - -#include "partners_api/utils.hpp" - -#include "geometry/latlon.hpp" -#include "geometry/rect2d.hpp" - -#include "platform/safe_callback.hpp" - -#include "base/worker_thread.hpp" - -#include -#include -#include -#include - -namespace cian -{ -extern std::string const kBaseUrl; - -class RawApi -{ -public: - static partners_api::http::Result GetRentNearby(m2::RectD const & rect, - std::string const & url = kBaseUrl); -}; - -struct RentOffer -{ - std::string m_flatType; - uint8_t m_roomsCount = 0; - double m_priceRur = 0.0; - uint8_t m_floorNumber = 0; - uint8_t m_floorsCount = 0; - std::string m_url; - std::string m_address; - - // No need to use offer when it is not fully filled. - bool IsValid() const - { - return !m_flatType.empty() && m_roomsCount && m_priceRur != 0.0 && m_floorNumber && - m_floorsCount && !m_url.empty() && !m_address.empty(); - } -}; - -struct RentPlace -{ - ms::LatLon m_latlon; - std::string m_url; - std::vector m_offers; -}; - -class Api -{ -public: - - using RentNearbyCallback = - platform::SafeCallback const & places, uint64_t const requestId)>; - - using ErrorCallback = platform::SafeCallback; - - explicit Api(std::string const & baseUrl = kBaseUrl); - - uint64_t GetRentNearby(ms::LatLon const & latlon, RentNearbyCallback const & onSuccess, - ErrorCallback const & onError); - - static bool IsCitySupported(std::string const & city); - static std::string const & GetMainPageUrl(); - -private: - uint64_t m_requestId = 0; - std::string m_baseUrl; -}; -} // namespace cian diff --git a/partners_api/partners_api_tests/CMakeLists.txt b/partners_api/partners_api_tests/CMakeLists.txt index 711191377f..72d83548be 100644 --- a/partners_api/partners_api_tests/CMakeLists.txt +++ b/partners_api/partners_api_tests/CMakeLists.txt @@ -6,7 +6,6 @@ set( SRC ads_engine_tests.cpp booking_tests.cpp - cian_tests.cpp facebook_tests.cpp google_tests.cpp mopub_tests.cpp diff --git a/partners_api/partners_api_tests/cian_tests.cpp b/partners_api/partners_api_tests/cian_tests.cpp deleted file mode 100644 index e4bd69b650..0000000000 --- a/partners_api/partners_api_tests/cian_tests.cpp +++ /dev/null @@ -1,77 +0,0 @@ -#include "testing/testing.hpp" - -#include "partners_api/partners_api_tests/async_gui_thread.hpp" - -#include "partners_api/cian_api.hpp" - -#include "3party/jansson/myjansson.hpp" - -using namespace partners_api; - -namespace -{ -UNIT_TEST(Cian_GetRentNearbyRaw) -{ - auto const result = cian::RawApi::GetRentNearby({37.402891, 55.656318, 37.840971, 55.859980}); - - TEST(!result.m_data.empty(), ()); - - my::Json root(result.m_data.c_str()); - TEST(json_is_object(root.get()), ()); -} - -UNIT_CLASS_TEST(AsyncGuiThread, Cian_GetRentNearby) -{ - ms::LatLon latlon(55.807385, 37.505554); - uint64_t reqId = 0; - - { - cian::Api api("http://localhost:34568/partners"); - std::vector result; - - reqId = api.GetRentNearby( - latlon, - [&reqId, &result](std::vector const & places, uint64_t const requestId) { - TEST_EQUAL(reqId, requestId, ()); - result = places; - testing::Notify(); - }, - [&reqId](int httpCode, uint64_t const requestId) { - TEST_EQUAL(reqId, requestId, ()); - TEST(false, (httpCode)); - }); - - testing::Wait(); - - TEST(!result.empty(), ()); - for (auto const & r : result) - { - for (auto const & o : r.m_offers) - { - TEST(o.IsValid(), ()); - } - } - } - { - cian::Api api("incorrect url"); - std::vector result; - int httpCode = -1; - - reqId = api.GetRentNearby( - latlon, - [&reqId, &result](std::vector const & places, uint64_t const requestId) { - TEST_EQUAL(reqId, requestId, ()); - TEST(false, (requestId)); - }, - [&reqId, &httpCode](int code, uint64_t const requestId) { - TEST_EQUAL(reqId, requestId, ()); - httpCode = code; - testing::Notify(); - }); - - testing::Wait(); - - TEST_NOT_EQUAL(httpCode, -1, ()); - } -} -} // namespace diff --git a/search/geocoder.cpp b/search/geocoder.cpp index bc8a36d2ed..97751780a6 100644 --- a/search/geocoder.cpp +++ b/search/geocoder.cpp @@ -333,31 +333,6 @@ size_t OrderCountries(m2::RectD const & pivot, vector> & inf auto const sep = stable_partition(infos.begin(), infos.end(), intersects); return distance(infos.begin(), sep); } - -CBV DecimateCianResults(CBV const & cbv) -{ - // With the typical amount of buildings in a relevant - // mwm nearing 200000, the geocoding slows down considerably. - // Leaving only a fraction of them does not seem - // to worsen the percieved result. - size_t const kMaxCianResults = 10000; - minstd_rand rng(0); - auto survivedIds = - ::base::RandomSample(::base::checked_cast(cbv.PopCount()), kMaxCianResults, rng); - sort(survivedIds.begin(), survivedIds.end()); - auto it = survivedIds.begin(); - vector setBits; - setBits.reserve(kMaxCianResults); - size_t observed = 0; - cbv.ForEach([&](uint64_t bit) { - while (it != survivedIds.end() && *it < observed) - ++it; - if (it != survivedIds.end() && *it == observed) - setBits.push_back(bit); - ++observed; - }); - return CBV(coding::CompressedBitVectorBuilder::FromBitPositions(move(setBits))); -} } // namespace // Geocoder::Geocoder ------------------------------------------------------------------------------ @@ -392,7 +367,6 @@ void Geocoder::SetParams(Params const & params) } m_params = params; - m_model.SetCianEnabled(m_params.m_cianMode); m_tokenRequests.clear(); m_prefixTokenRequest.Clear(); @@ -481,7 +455,6 @@ void Geocoder::ClearCaches() void Geocoder::SetParamsForCategorialSearch(Params const & params) { m_params = params; - m_model.SetCianEnabled(m_params.m_cianMode); m_tokenRequests.clear(); m_prefixTokenRequest.Clear(); @@ -621,9 +594,6 @@ void Geocoder::InitBaseContext(BaseContext & ctx) { ctx.m_features[i] = retrieval.RetrieveAddressFeatures(m_tokenRequests[i]); } - - if (m_params.m_cianMode) - ctx.m_features[i] = DecimateCianResults(ctx.m_features[i]); } ctx.m_hotelsFilter = m_hotelsFilter.MakeScopedFilter(*m_context, m_params.m_hotelsFilter); @@ -1338,9 +1308,6 @@ void Geocoder::EmitResult(BaseContext & ctx, MwmSet::MwmId const & mwmId, uint32 if (ctx.m_hotelsFilter && !ctx.m_hotelsFilter->Matches(id)) return; - if (m_params.m_cianMode && type != Model::TYPE_BUILDING) - return; - if (m_params.m_tracer) TraceResult(*m_params.m_tracer, ctx, mwmId, ftId, type, tokenRange); @@ -1394,9 +1361,6 @@ void Geocoder::EmitResult(BaseContext & ctx, City const & city, TokenRange const void Geocoder::MatchUnclassified(BaseContext & ctx, size_t curToken) { - if (m_params.m_cianMode) - return; - ASSERT(ctx.m_layers.empty(), ()); // We need to match all unused tokens to UNCLASSIFIED features, diff --git a/search/geocoder.hpp b/search/geocoder.hpp index 00fcb4629e..26b3f63f65 100644 --- a/search/geocoder.hpp +++ b/search/geocoder.hpp @@ -83,7 +83,6 @@ public: m2::RectD m_pivot; Locales m_categoryLocales; shared_ptr m_hotelsFilter; - bool m_cianMode = false; set m_preferredTypes; shared_ptr m_tracer; }; diff --git a/search/model.cpp b/search/model.cpp index a95fbbae0a..b0c52067cc 100644 --- a/search/model.cpp +++ b/search/model.cpp @@ -76,41 +76,16 @@ public: private: CustomIsBuildingChecker() {} }; - -class IsCianChecker -{ -public: - static IsCianChecker const & Instance() - { - static const IsCianChecker instance; - return instance; - } - - bool operator()(FeatureType const & ft) const - { - feature::TypesHolder th(ft); - return !ft.HasName() && th.Size() == 1 && th.Has(m_type); - } - -private: - IsCianChecker() { m_type = classif().GetTypeByPath({"building"}); } - - uint32_t m_type; -}; } // namespace Model::Type Model::GetType(FeatureType const & feature) const { static auto const & buildingChecker = CustomIsBuildingChecker::Instance(); - static auto const & cianChecker = IsCianChecker::Instance(); static auto const & streetChecker = IsStreetChecker::Instance(); static auto const & localityChecker = IsLocalityChecker::Instance(); static auto const & poiChecker = IsPoiChecker::Instance(); - if (m_cianEnabled && cianChecker(feature)) - return TYPE_BUILDING; - - if (!m_cianEnabled && buildingChecker(feature)) + if (buildingChecker(feature)) return TYPE_BUILDING; if (streetChecker(feature)) diff --git a/search/model.hpp b/search/model.hpp index 97b317a2b3..aab9ba5a1e 100644 --- a/search/model.hpp +++ b/search/model.hpp @@ -54,11 +54,6 @@ public: } Type GetType(FeatureType const & feature) const; - - void SetCianEnabled(bool enabled) { m_cianEnabled = enabled; } - -private: - bool m_cianEnabled = false; }; string DebugPrint(Model::Type type); diff --git a/search/processor.cpp b/search/processor.cpp index f6a457a41b..88c1fd7ec7 100644 --- a/search/processor.cpp +++ b/search/processor.cpp @@ -511,7 +511,6 @@ void Processor::InitGeocoder(Geocoder::Params & geocoderParams, SearchParams con geocoderParams.m_pivot = GetPivotRect(viewportSearch); geocoderParams.m_categoryLocales = GetCategoryLocales(); geocoderParams.m_hotelsFilter = searchParams.m_hotelsFilter; - geocoderParams.m_cianMode = searchParams.m_cianMode; geocoderParams.m_preferredTypes = m_preferredTypes; geocoderParams.m_tracer = searchParams.m_tracer; diff --git a/search/search_integration_tests/processor_test.cpp b/search/search_integration_tests/processor_test.cpp index 2f9bb09470..f4202e5b50 100644 --- a/search/search_integration_tests/processor_test.cpp +++ b/search/search_integration_tests/processor_test.cpp @@ -1108,44 +1108,6 @@ UNIT_CLASS_TEST(ProcessorTest, TestWeirdTypes) } } -UNIT_CLASS_TEST(ProcessorTest, Cian) -{ - string const countryName = "Wonderland"; - TestCity cianCity(m2::PointD(0, 0), "Cian", "en", 100 /* rank */); - TestBuilding plainBuilding(m2::PointD(0, 0), "Plain building", "1", "en"); - TestBuilding garage(m2::PointD(0.001, 0.001), "Garage", "2", "en"); - garage.AddType({"building", "garage"}); - TestBuilding nonameBuilding(m2::PointD(0.002, 0.002), "", "3", "en"); - - auto worldId = BuildWorld([&](TestMwmBuilder & builder) { builder.Add(cianCity); }); - - auto countryId = BuildCountry(countryName, [&](TestMwmBuilder & builder) { - builder.Add(plainBuilding); - builder.Add(garage); - builder.Add(nonameBuilding); - }); - - SearchParams params; - params.m_query = "cian"; - params.m_inputLocale = "en"; - params.m_viewport = m2::RectD(m2::PointD(-1.0, -1.0), m2::PointD(1.0, 1.0)); - params.m_mode = Mode::Everywhere; - params.m_suggestsEnabled = false; - - params.m_cianMode = false; - { - TRules rules = {ExactMatch(worldId, cianCity), ExactMatch(countryId, plainBuilding), - ExactMatch(countryId, garage), ExactMatch(countryId, nonameBuilding)}; - TEST(ResultsMatch(params, rules), ()); - } - - params.m_cianMode = true; - { - TRules rules = {ExactMatch(countryId, nonameBuilding)}; - TEST(ResultsMatch(params, rules), ()); - } -} - UNIT_CLASS_TEST(ProcessorTest, CityBoundaryLoad) { TestCity city(vector({m2::PointD(0, 0), m2::PointD(0.5, 0), m2::PointD(0.5, 0.5), diff --git a/search/search_params.hpp b/search/search_params.hpp index 393db8d347..e7e7c31573 100644 --- a/search/search_params.hpp +++ b/search/search_params.hpp @@ -59,8 +59,6 @@ struct SearchParams std::shared_ptr m_hotelsFilter; - bool m_cianMode = false; - std::shared_ptr m_tracer; }; diff --git a/search/types_skipper.hpp b/search/types_skipper.hpp index 935423f72c..3a234d1792 100644 --- a/search/types_skipper.hpp +++ b/search/types_skipper.hpp @@ -2,8 +2,6 @@ #include "search/model.hpp" -#include "indexer/ftypes_matcher.hpp" - #include "base/buffer_vector.hpp" namespace search @@ -23,20 +21,6 @@ public: bool IsCountryOrState(feature::TypesHolder const & types) const; private: - class DontSkipIfEmptyName - { - public: - bool IsMatched(uint32_t type) const - { - // This is needed for Cian support. - auto const & buildingChecker = ftypes::IsBuildingChecker::Instance(); - return m_poiChecker.IsMatched(type) || buildingChecker.IsMatched(type); - } - - private: - TwoLevelPOIChecker m_poiChecker; - }; - using TCont = buffer_vector; static bool HasType(TCont const & v, uint32_t t); @@ -47,7 +31,7 @@ private: // m_skipIfEmptyName and m_dontSkipIfEmptyName are used in the case 2 described above. TCont m_skipIfEmptyName[2]; - DontSkipIfEmptyName m_dontSkipIfEmptyName; + TwoLevelPOIChecker m_dontSkipIfEmptyName; uint32_t m_country, m_state; }; diff --git a/xcode/partners_api/partners_api.xcodeproj/project.pbxproj b/xcode/partners_api/partners_api.xcodeproj/project.pbxproj index cad640474a..5d83b003d4 100644 --- a/xcode/partners_api/partners_api.xcodeproj/project.pbxproj +++ b/xcode/partners_api/partners_api.xcodeproj/project.pbxproj @@ -34,9 +34,6 @@ 3D47B29B1F054C89000828D2 /* taxi_countries.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3D47B2971F054C89000828D2 /* taxi_countries.cpp */; }; 3D47B29C1F054C89000828D2 /* taxi_countries.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3D47B2981F054C89000828D2 /* taxi_countries.hpp */; }; 3D47B29D1F054C89000828D2 /* taxi_places.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3D47B2991F054C89000828D2 /* taxi_places.hpp */; }; - 3D47B2AC1F14BE89000828D2 /* cian_api.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3D47B2AA1F14BE89000828D2 /* cian_api.cpp */; }; - 3D47B2AD1F14BE89000828D2 /* cian_api.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3D47B2AB1F14BE89000828D2 /* cian_api.hpp */; }; - 3D47B2AF1F14BE94000828D2 /* cian_tests.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3D47B2AE1F14BE94000828D2 /* cian_tests.cpp */; }; 3D47B2B11F14FA14000828D2 /* utils.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3D47B2B01F14FA14000828D2 /* utils.hpp */; }; 3D4E997C1FB439260025B48C /* booking_availability_params.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3D4E997A1FB439260025B48C /* booking_availability_params.hpp */; }; 3D4E997D1FB439260025B48C /* booking_availability_params.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3D4E997B1FB439260025B48C /* booking_availability_params.cpp */; }; @@ -106,9 +103,6 @@ 3D47B2971F054C89000828D2 /* taxi_countries.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = taxi_countries.cpp; sourceTree = ""; }; 3D47B2981F054C89000828D2 /* taxi_countries.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = taxi_countries.hpp; sourceTree = ""; }; 3D47B2991F054C89000828D2 /* taxi_places.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = taxi_places.hpp; sourceTree = ""; }; - 3D47B2AA1F14BE89000828D2 /* cian_api.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cian_api.cpp; sourceTree = ""; }; - 3D47B2AB1F14BE89000828D2 /* cian_api.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = cian_api.hpp; sourceTree = ""; }; - 3D47B2AE1F14BE94000828D2 /* cian_tests.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cian_tests.cpp; sourceTree = ""; }; 3D47B2B01F14FA14000828D2 /* utils.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = utils.hpp; sourceTree = ""; }; 3D4E997A1FB439260025B48C /* booking_availability_params.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = booking_availability_params.hpp; sourceTree = ""; }; 3D4E997B1FB439260025B48C /* booking_availability_params.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = booking_availability_params.cpp; sourceTree = ""; }; @@ -214,8 +208,6 @@ BB1956E41F543D7B003ECE6C /* locals_api.cpp */, BB1956E51F543D7C003ECE6C /* locals_api.hpp */, 3D47B2B01F14FA14000828D2 /* utils.hpp */, - 3D47B2AA1F14BE89000828D2 /* cian_api.cpp */, - 3D47B2AB1F14BE89000828D2 /* cian_api.hpp */, 3D47B2961F054C89000828D2 /* taxi_base.cpp */, 3D47B2971F054C89000828D2 /* taxi_countries.cpp */, 3D47B2981F054C89000828D2 /* taxi_countries.hpp */, @@ -256,7 +248,6 @@ isa = PBXGroup; children = ( 3D7815751F3A14910068B6AC /* async_gui_thread.hpp */, - 3D47B2AE1F14BE94000828D2 /* cian_tests.cpp */, 3D47B2801F00F94D000828D2 /* mopub_tests.cpp */, 3DFEBF871EF82C1300317D5C /* viator_tests.cpp */, 3DFEBFA01EFBFC2300317D5C /* taxi_engine_tests.cpp */, @@ -322,7 +313,6 @@ 3DFEBF861EF82BEA00317D5C /* viator_api.hpp in Headers */, 346E889C1E9D087400D4CE9B /* rb_ads.hpp in Headers */, 3DFEBF9A1EFBFC1500317D5C /* taxi_base.hpp in Headers */, - 3D47B2AD1F14BE89000828D2 /* cian_api.hpp in Headers */, 346E889A1E9D087400D4CE9B /* banner.hpp in Headers */, 3DFEBF9F1EFBFC1500317D5C /* yandex_api.hpp in Headers */, 3DFEBF9D1EFBFC1500317D5C /* taxi_provider.hpp in Headers */, @@ -438,7 +428,6 @@ 3DFEBF9B1EFBFC1500317D5C /* taxi_engine.cpp in Sources */, 346E889B1E9D087400D4CE9B /* rb_ads.cpp in Sources */, 3DBC1C541E4B14920016897F /* facebook_ads.cpp in Sources */, - 3D47B2AF1F14BE94000828D2 /* cian_tests.cpp in Sources */, 3D452AF31EE6D20D009EAB9B /* google_ads.cpp in Sources */, 346E88981E9D087400D4CE9B /* ads_engine.cpp in Sources */, 3D47B29B1F054C89000828D2 /* taxi_countries.cpp in Sources */, @@ -448,7 +437,6 @@ F6B536401DA520E40067EEA5 /* booking_api.cpp in Sources */, 3D47B29A1F054C89000828D2 /* taxi_base.cpp in Sources */, 3DFEBF9E1EFBFC1500317D5C /* yandex_api.cpp in Sources */, - 3D47B2AC1F14BE89000828D2 /* cian_api.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; };