[iOS] Added bookmarks cloud statistics

This commit is contained in:
r.kuznetsov 2018-04-16 11:56:52 +03:00 committed by Vlad Mihaylenko
parent 8e3edf4eec
commit bf2e09602f
2 changed files with 74 additions and 2 deletions

View file

@ -28,6 +28,7 @@ static NSString * const kStatApplicationColdStartupInfo = @"Application_ColdStar
static NSString * const kStatApply = @"Apply";
static NSString * const kStatAsk = @"Ask";
static NSString * const kStatAttractions = @"Attractions";
static NSString * const kStatAuth = @"auth";
static NSString * const kStatAuthorization = @"Authorization";
static NSString * const kStatAutoDownload = @"Auto download";
static NSString * const kStatAutoZoom = @"Autozoom";
@ -40,8 +41,13 @@ static NSString * const kStatBookmarkCreated = @"Bookmark. Bookmark created";
static NSString * const kStatBookmarks = @"Bookmarks";
static NSString * const kStatBookmarksAuthRequestError = @"Bookmarks_SyncProposal_error";
static NSString * const kStatBookmarksAuthRequestSuccess = @"Bookmarks_SyncProposal_enabled";
static NSString * const kStatBookmarksRestoreProposalError = @"Bookmarks_RestoreProposal_error";
static NSString * const kStatBookmarksRestoreProposalSuccess = @"Bookmarks_RestoreProposal_success";
static NSString * const kStatBookmarksSyncError = @"Bookmarks_sync_error";
static NSString * const kStatBookmarksSyncProposalApproved = @"Bookmarks_SyncProposal_approved";
static NSString * const kStatBookmarksSyncProposalShown = @"Bookmarks_SyncProposal_shown";
static NSString * const kStatBookmarksSyncStarted = @"Bookmarks_sync_started";
static NSString * const kStatBookmarksSyncSuccess = @"Bookmarks_sync_success";
static NSString * const kStatBuildRoute = @"Build route";
static NSString * const kStatButton = @"Button";
static NSString * const kStatCallPhoneNumber = @"Call phone number";
@ -83,6 +89,7 @@ static NSString * const kStatDeviceType = @"Device type";
static NSString * const kStatDiscovery = @"discovery";
static NSString * const kStatDiscoveryButtonItemShow = @"DiscoveryButton_Item_Show";
static NSString * const kStatDiscoveryButtonOpen = @"DiscoveryButton_Open";
static NSString * const kStatDisk = @"disk";
static NSString * const kStatDownload = @"download";
static NSString * const kStatDownloadGroup = @"download_group";
static NSString * const kStatDownloadMap = @"Download map";
@ -125,7 +132,7 @@ static NSString * const kStatEditorProblemReport = @"Editor_Problem_report";
static NSString * const kStatEditorRegRequest = @"Editor_Reg_request";
static NSString * const kStatEditorSecondTimeShareClick = @"Editor_SecondTimeShare_click";
static NSString * const kStatEditorSecondTimeShareShow = @"Editor_SecondTimeShare_show";
static NSString * const kStatError = @"Error";
static NSString * const kStatError = @"error";
static NSString * const kStatErrorCode = @"error_code";
static NSString * const kStatErrorData = @"err_data";
static NSString * const kStatErrorMessage = @"error_message";
@ -194,6 +201,7 @@ static NSString * const kStatNever = @"Never";
static NSString * const kStatNext = @"Next";
static NSString * const kStatNightMode = @"NightMode";
static NSString * const kStatNo = @"No";
static NSString * const kStatNoBackup = @"no_backup";
static NSString * const kStatNoConnection = @"no_connection";
static NSString * const kStatNoSpace = @"no_space";
static NSString * const kStatNone = @"none";

View file

@ -6,12 +6,26 @@
#include "coding/internal/file_data.hpp"
#include <utility>
namespace
{
using Observer = id<MWMBookmarksObserver>;
using Observers = NSHashTable<Observer>;
using TLoopBlock = void (^)(Observer observer);
NSString * const CloudErrorToString(Cloud::SynchronizationResult result)
{
switch (result)
{
case Cloud::SynchronizationResult::Success: return nil;
case Cloud::SynchronizationResult::AuthError: return kStatAuth;
case Cloud::SynchronizationResult::NetworkError: return kStatNetwork;
case Cloud::SynchronizationResult::DiskError: return kStatDisk;
case Cloud::SynchronizationResult::UserInterrupted: return nil;
}
}
} // namespace
@interface MWMBookmarksManager ()
@ -111,7 +125,57 @@ using TLoopBlock = void (^)(Observer observer);
+ (void)loadBookmarks
{
[MWMBookmarksManager manager];
GetFramework().LoadBookmarks();
auto & bm = GetFramework().GetBookmarkManager();
auto onSynchronizationStarted = [](Cloud::SynchronizationType type)
{
if (type == Cloud::SynchronizationType::Backup)
[Statistics logEvent:kStatBookmarksSyncStarted];
};
auto onSynchronizationFinished = [](Cloud::SynchronizationType type, Cloud::SynchronizationResult result,
std::string const & errorStr)
{
if (result == Cloud::SynchronizationResult::Success)
{
[Statistics logEvent:type == Cloud::SynchronizationType::Backup ? kStatBookmarksSyncSuccess :
kStatBookmarksRestoreProposalSuccess];
}
else
{
NSString * const errorType = CloudErrorToString(result);
if (errorType != nil)
{
[Statistics logEvent:type == Cloud::SynchronizationType::Backup ? kStatBookmarksSyncError :
kStatBookmarksRestoreProposalError
withParameters:@{kStatType: errorType, kStatError: @(errorStr.c_str())}];
}
}
};
auto onRestoreRequested = [](Cloud::RestoringRequestResult result, uint64_t backupTimestampInMs)
{
if (result == Cloud::RestoringRequestResult::NoBackup)
{
[Statistics logEvent:kStatBookmarksRestoreProposalError
withParameters:@{kStatType: kStatNoBackup, kStatError: @("")}];
}
else if (result == Cloud::RestoringRequestResult::NotEnoughDiskSpace)
{
[Statistics logEvent:kStatBookmarksRestoreProposalError
withParameters:@{kStatType: kStatDisk, kStatError: @("Not enough disk space")}];
}
};
auto onRestoredFilesPrepared = []()
{
//TODO: On this callback we have to block cancel button in restore dialog if such button exists.
};
bm.SetCloudHandlers(std::move(onSynchronizationStarted), std::move(onSynchronizationFinished),
std::move(onRestoreRequested), std::move(onRestoredFilesPrepared));
bm.LoadBookmarks();
}
+ (MWMGroupIDCollection)groupsIdList