From c1582291ea8b0c28d85265ff53285d35bbd8d40b Mon Sep 17 00:00:00 2001 From: "r.kuznetsov" Date: Thu, 31 Jan 2019 14:39:35 +0300 Subject: [PATCH] [catalog] Added max tags count retrieving --- .../maps/bookmarks/data/BookmarkManager.cpp | 11 +++++---- .../maps/bookmarks/data/BookmarkManager.java | 4 +++- .../Core/Bookmarks/MWMBookmarksManager.mm | 3 ++- map/bookmark_catalog.cpp | 24 ++++++++++++++----- map/bookmark_catalog.hpp | 4 ++-- 5 files changed, 31 insertions(+), 15 deletions(-) diff --git a/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp b/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp index 6c589a6746..abb19b42d6 100644 --- a/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp +++ b/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp @@ -85,7 +85,7 @@ void PrepareClassRefs(JNIEnv * env) jni::GetMethodID(env, bookmarkManagerInstance, "onImportFinished", "(Ljava/lang/String;JZ)V"); g_onTagsReceivedMethod = jni::GetMethodID(env, bookmarkManagerInstance, "onTagsReceived", - "(Z[Lcom/mapswithme/maps/bookmarks/data/CatalogTagsGroup;)V"); + "(Z[Lcom/mapswithme/maps/bookmarks/data/CatalogTagsGroup;I)V"); g_onCustomPropertiesReceivedMethod = jni::GetMethodID(env, bookmarkManagerInstance, "onCustomPropertiesReceived", "(Z[Lcom/mapswithme/maps/bookmarks/data/CatalogCustomProperty;)V"); @@ -282,7 +282,8 @@ void OnImportFinished(JNIEnv * env, std::string const & serverId, kml::MarkGroup jni::HandleJavaException(env); } -void OnTagsReceived(JNIEnv * env, bool successful, BookmarkCatalog::TagGroups const & groups) +void OnTagsReceived(JNIEnv * env, bool successful, BookmarkCatalog::TagGroups const & groups, + uint32_t maxTagsCount) { ASSERT(g_bookmarkManagerClass, ()); ASSERT(g_catalogTagClass, ()); @@ -309,7 +310,7 @@ void OnTagsReceived(JNIEnv * env, bool successful, BookmarkCatalog::TagGroups co static_cast(tag.m_color[1]), static_cast(tag.m_color[2])); })); - })); + }), static_cast(maxTagsCount)); jni::HandleJavaException(env); } @@ -889,9 +890,9 @@ Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeRequestCatalogTags { auto & bm = frm()->GetBookmarkManager(); bm.GetCatalog().RequestTagGroups(languages::GetCurrentNorm(), - [env](bool successful, BookmarkCatalog::TagGroups const & groups) + [env](bool successful, BookmarkCatalog::TagGroups const & groups, uint32_t maxTagsCount) { - OnTagsReceived(env, successful, groups); + OnTagsReceived(env, successful, groups, maxTagsCount); }); } diff --git a/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java b/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java index e7cfb6bd8b..0a56f39f93 100644 --- a/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java +++ b/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java @@ -270,8 +270,10 @@ public enum BookmarkManager // Called from JNI. @SuppressWarnings("unused") @MainThread - public void onTagsReceived(boolean successful, @NonNull CatalogTagsGroup[] tagsGroups) + public void onTagsReceived(boolean successful, @NonNull CatalogTagsGroup[] tagsGroups, + int maxTagsCount) { + //TODO(@yoksnod): Implement maxTagsCount usage. List unmodifiableData = Collections.unmodifiableList(Arrays.asList(tagsGroups)); for (BookmarksCatalogListener listener : mCatalogListeners) { diff --git a/iphone/Maps/Core/Bookmarks/MWMBookmarksManager.mm b/iphone/Maps/Core/Bookmarks/MWMBookmarksManager.mm index 5a78881e0f..38575a0f48 100644 --- a/iphone/Maps/Core/Bookmarks/MWMBookmarksManager.mm +++ b/iphone/Maps/Core/Bookmarks/MWMBookmarksManager.mm @@ -624,8 +624,9 @@ NSString * const CloudErrorToString(Cloud::SynchronizationResult result) } - (void)loadTags:(LoadTagsCompletionBlock)completionBlock { - auto onTagsCompletion = [completionBlock](bool success, BookmarkCatalog::TagGroups const & tagGroups) + auto onTagsCompletion = [completionBlock](bool success, BookmarkCatalog::TagGroups const & tagGroups, uint32_t maxTagsCount) { + //TODO(@beloal): Implement maxTagsCount usage. if (success) { NSMutableArray * groups = [NSMutableArray new]; diff --git a/map/bookmark_catalog.cpp b/map/bookmark_catalog.cpp index 47ee2625a2..4ce8a865d0 100644 --- a/map/bookmark_catalog.cpp +++ b/map/bookmark_catalog.cpp @@ -39,7 +39,7 @@ std::string BuildTagsUrl(std::string const & language) { if (kCatalogEditorServer.empty()) return {}; - return kCatalogEditorServer + "editor/tags/?lang=" + language; + return kCatalogEditorServer + "editor/v2/tags/?lang=" + language; } std::string BuildCustomPropertiesUrl(std::string const & language) @@ -88,11 +88,20 @@ struct TagData visitor(m_subtags, "subtags")) }; +struct TagsMeta +{ + uint32_t m_maxTags; + + DECLARE_VISITOR(visitor(m_maxTags, "max_for_bundle")) +}; + struct TagsResponseData { std::vector m_tags; + TagsMeta m_meta; - DECLARE_VISITOR(visitor(m_tags)) + DECLARE_VISITOR(visitor(m_tags, "data"), + visitor(m_meta, "meta")) }; BookmarkCatalog::Tag::Color ExtractColor(std::string const & c) @@ -293,7 +302,7 @@ void BookmarkCatalog::RequestTagGroups(std::string const & language, if (tagsUrl.empty()) { if (callback) - callback(false /* success */, {}); + callback(false /* success */, {}, 0 /* maxTagsCount */); return; } @@ -305,6 +314,7 @@ void BookmarkCatalog::RequestTagGroups(std::string const & language, if (request.RunHttpRequest()) { auto const resultCode = request.ErrorCode(); + uint32_t maxTagsCount = 0; if (resultCode >= 200 && resultCode < 300) // Ok. { TagsResponseData tagsResponseData; @@ -317,7 +327,7 @@ void BookmarkCatalog::RequestTagGroups(std::string const & language, { LOG(LWARNING, ("Tags request deserialization error:", ex.Msg())); if (callback) - callback(false /* success */, {}); + callback(false /* success */, {}, 0 /* maxTagsCount */); return; } @@ -337,9 +347,11 @@ void BookmarkCatalog::RequestTagGroups(std::string const & language, group.m_tags.push_back(std::move(tag)); } result.push_back(std::move(group)); + + maxTagsCount = tagsResponseData.m_meta.m_maxTags; } if (callback) - callback(true /* success */, result); + callback(true /* success */, result, maxTagsCount); return; } else @@ -348,7 +360,7 @@ void BookmarkCatalog::RequestTagGroups(std::string const & language, } } if (callback) - callback(false /* success */, {}); + callback(false /* success */, {}, 0 /* maxTagsCount */); }); } diff --git a/map/bookmark_catalog.hpp b/map/bookmark_catalog.hpp index ed699cbc49..fbab763810 100644 --- a/map/bookmark_catalog.hpp +++ b/map/bookmark_catalog.hpp @@ -46,8 +46,8 @@ public: }; using TagGroups = std::vector; - using TagGroupsCallback = platform::SafeCallback; - + using TagGroupsCallback = platform::SafeCallback; using CustomProperties = std::vector; using CustomPropertiesCallback = platform::SafeCallback;