Fixed UGC uploading

This commit is contained in:
r.kuznetsov 2017-10-16 13:42:39 +03:00 committed by Vlad Mihaylenko
parent 4e15406cc2
commit 7008796b3f
6 changed files with 28 additions and 9 deletions

View file

@ -409,7 +409,7 @@ using namespace osm_auth_ios;
// Starts async UGC uploading process.
+ (void)uploadUGC:(MWMVoidBlock)finishCallback
{
GetFramework().UploadUGC([finishCallback] {
GetFramework().UploadUGC([finishCallback](bool /* isSuccessful */) {
finishCallback();
});
}

View file

@ -1441,6 +1441,8 @@ void Framework::EnterBackground()
SaveViewport();
m_ugcApi->SaveUGCOnDisk();
m_trafficManager.OnEnterBackground();
m_routingManager.SetAllowSendingPoints(false);
@ -3482,13 +3484,18 @@ void Framework::UploadUGC(User::CompleteUploadingHandler const & onCompleteUploa
if (!m_user.IsAuthenticated())
return;
m_ugcApi->GetUGCToSend([this, onCompleteUploading](string && json) {
m_ugcApi->GetUGCToSend([this, onCompleteUploading](string && json)
{
if (!json.empty())
m_user.UploadUserReviews(move(json), [this, onCompleteUploading]
{
m_user.UploadUserReviews(std::move(json), [this, onCompleteUploading](bool isSuccessful)
{
if (onCompleteUploading)
onCompleteUploading();
m_ugcApi->SendingCompleted();
if (onCompleteUploading != nullptr)
onCompleteUploading(isSuccessful);
if (isSuccessful)
m_ugcApi->SendingCompleted();
});
}
});
}

View file

@ -272,7 +272,7 @@ void User::UploadUserReviews(std::string && dataStr,
LOG(LWARNING, ("Reviews have been uploaded."));
if (onCompleteUploading != nullptr)
onCompleteUploading();
onCompleteUploading(true /* isSuccessful */);
},
[this, onCompleteUploading](int errorCode)
{
@ -281,7 +281,7 @@ void User::UploadUserReviews(std::string && dataStr,
LOG(LWARNING, ("Reviews have not been uploaded."));
if (onCompleteUploading != nullptr)
onCompleteUploading();
onCompleteUploading(false /* isSuccessful */);
});
});
}

View file

@ -32,7 +32,7 @@ public:
using BuildRequestHandler = std::function<void(platform::HttpClient &)>;
using SuccessHandler = std::function<void(std::string const &)>;
using ErrorHandler = std::function<void(int)>;
using CompleteUploadingHandler = std::function<void()>;
using CompleteUploadingHandler = std::function<void(bool)>;
User();
~User();

View file

@ -34,6 +34,11 @@ void Api::SendingCompleted()
m_thread.Push([this] { SendingCompletedImpl(); });
}
void Api::SaveUGCOnDisk()
{
m_thread.Push([this] { SaveUGCOnDiskImpl(); });
}
void Api::GetUGCImpl(FeatureID const & id, UGCCallback callback)
{
if (!id.IsValid())
@ -63,4 +68,9 @@ void Api::SendingCompletedImpl()
{
m_storage.MarkAllAsSynchronized();
}
void Api::SaveUGCOnDiskImpl()
{
m_storage.SaveIndex();
}
} // namespace ugc

View file

@ -25,12 +25,14 @@ public:
void SetUGCUpdate(FeatureID const & id, UGCUpdate const & ugc);
void GetUGCToSend(UGCJsonToSendCallback const & fn);
void SendingCompleted();
void SaveUGCOnDisk();
private:
void GetUGCImpl(FeatureID const & id, UGCCallback callback);
void SetUGCUpdateImpl(FeatureID const & id, UGCUpdate const & ugc);
void GetUGCToSendImpl(UGCJsonToSendCallback const & fn);
void SendingCompletedImpl();
void SaveUGCOnDiskImpl();
base::WorkerThread m_thread;
Storage m_storage;