Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaria Volvenkova <d.volvenkova@corp.mail.ru>2018-04-10 16:42:01 +0300
committerRoman Kuznetsov <r.kuznetsow@gmail.com>2018-04-10 17:47:32 +0300
commit04f1374eb7a71b5e14a226d2559ce5f3760403f8 (patch)
tree45c6faff2289cac82f9e399b6c2c001715817387 /map/bookmark_manager.cpp
parent10a614f428a6e2ffe51e5661c1ee10ca07752800 (diff)
Reset bookmark ids in case when the persistent id storage is reseted or when a foreign kmb file detected.
Diffstat (limited to 'map/bookmark_manager.cpp')
-rw-r--r--map/bookmark_manager.cpp22
1 files changed, 15 insertions, 7 deletions
diff --git a/map/bookmark_manager.cpp b/map/bookmark_manager.cpp
index 1dc6f94358..e1a9c0d5ba 100644
--- a/map/bookmark_manager.cpp
+++ b/map/bookmark_manager.cpp
@@ -944,17 +944,17 @@ void BookmarkManager::NotifyAboutFinishAsyncLoading(KMLDataCollectionPtr && coll
GetPlatform().RunTask(Platform::Thread::Gui, [this, collection]()
{
- m_asyncLoadingInProgress = false;
- m_loadBookmarksFinished = true;
if (!collection->empty())
{
CreateCategories(std::move(*collection));
}
- else
+ else if (!m_loadBookmarksFinished)
{
CheckAndResetLastIds();
CheckAndCreateDefaultCategory();
}
+ m_asyncLoadingInProgress = false;
+ m_loadBookmarksFinished = true;
if (m_asyncLoadingCallbacks.m_onFinished != nullptr)
m_asyncLoadingCallbacks.m_onFinished();
@@ -1175,7 +1175,7 @@ kml::MarkGroupId BookmarkManager::CreateBookmarkCategory(kml::CategoryData && da
if (data.m_id == kml::kInvalidMarkGroupId)
{
- data.m_id = PersistentIdStorage::Instance().GetNextCategoryId();
+ data.m_id = UserMarkIdStorage::Instance().GetNextCategoryId();
}
auto groupId = data.m_id;
ASSERT_EQUAL(m_categories.count(groupId), 0, ());
@@ -1188,7 +1188,7 @@ kml::MarkGroupId BookmarkManager::CreateBookmarkCategory(kml::CategoryData && da
kml::MarkGroupId BookmarkManager::CreateBookmarkCategory(std::string const & name, bool autoSave)
{
ASSERT_THREAD_CHECKER(m_threadChecker, ());
- auto const groupId = PersistentIdStorage::Instance().GetNextCategoryId();
+ auto const groupId = UserMarkIdStorage::Instance().GetNextCategoryId();
m_categories[groupId] = my::make_unique<BookmarkCategory>(name, groupId, autoSave);
UpdateBmGroupIdList();
m_changesTracker.OnAddGroup(groupId);
@@ -1204,7 +1204,7 @@ void BookmarkManager::CheckAndCreateDefaultCategory()
void BookmarkManager::CheckAndResetLastIds()
{
- auto & idStorage = PersistentIdStorage::Instance();
+ auto & idStorage = UserMarkIdStorage::Instance();
if (m_categories.empty())
idStorage.ResetCategoryId();
if (m_bookmarks.empty())
@@ -1313,6 +1313,12 @@ void BookmarkManager::CreateCategories(KMLDataCollection && dataCollection, bool
auto & fileData = *data.second.get();
auto & categoryData = fileData.m_categoryData;
+ if ((categoryData.m_id != kml::kInvalidMarkGroupId) &&
+ (UserMarkIdStorage::Instance().IsJustCreated() || fileData.m_deviceId != GetPlatform().UniqueClientId()))
+ {
+ ResetIds(fileData);
+ }
+
auto const originalName = kml::GetDefaultStr(categoryData.m_name);
auto uniqueName = originalName;
@@ -1362,6 +1368,7 @@ void BookmarkManager::CreateCategories(KMLDataCollection && dataCollection, bool
std::unique_ptr<kml::FileData> BookmarkManager::CollectBmGroupKMLData(BookmarkCategory const * group) const
{
auto kmlData = std::make_unique<kml::FileData>();
+ kmlData->m_deviceId = GetPlatform().UniqueClientId();
kmlData->m_categoryData = group->GetCategoryData();
auto const & markIds = group->GetUserMarks();
kmlData->m_bookmarksData.reserve(markIds.size());
@@ -1692,6 +1699,7 @@ void BookmarkManager::OnRestoredFilesPrepared()
{
// This method is always called from UI-thread.
ClearCategories();
+ CheckAndResetLastIds();
if (m_onRestoredFilesPrepared)
m_onRestoredFilesPrepared();
@@ -1716,7 +1724,7 @@ void BookmarkManager::CancelCloudRestoring()
void BookmarkManager::EnableTestMode(bool enable)
{
- PersistentIdStorage::Instance().EnableTestMode(enable);
+ UserMarkIdStorage::Instance().EnableTestMode(enable);
m_testModeEnabled = enable;
}