diff --git a/SiaDrive.Api/UploadManager.cpp b/SiaDrive.Api/UploadManager.cpp index a38db47..ca605e0 100644 --- a/SiaDrive.Api/UploadManager.cpp +++ b/SiaDrive.Api/UploadManager.cpp @@ -107,6 +107,21 @@ CUploadManager::CUploadManager(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriv throw StartupException(L"Failed to remove '.siadrive.temp' files"); } + UpdateQueueOnStartup(); + DeleteFilesRemovedFromSia(siaCurl, siaDriveConfig, true); + + StartAutoThread(); + _fileThread.StartAutoThread(); +} + +CUploadManager::~CUploadManager() +{ + _fileThread.StopAutoThread(); + StopAutoThread(); +} + +void CUploadManager::UpdateQueueOnStartup() +{ try { // Re-add Copying and Remove @@ -149,15 +164,25 @@ CUploadManager::CUploadManager(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriv { throw StartupException(e.getErrorStr()); } - - StartAutoThread(); - _fileThread.StartAutoThread(); } -CUploadManager::~CUploadManager() +void CUploadManager::DeleteFilesRemovedFromSia(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig, const bool& isStartup) { - _fileThread.StopAutoThread(); - StopAutoThread(); + CSiaFileTreePtr fileTree(new CSiaFileTree(siaCurl, siaDriveConfig)); + json result; + SiaCurlError cerror = siaCurl.Get(L"/renter/files", result); + if (ApiSuccess(cerror)) + { + fileTree->BuildTree(result); + auto fileList = fileTree->GetFileList(); + } + else + { + if (isStartup) + { + throw StartupException(L"Failed to get Sia files"); + } + } } void CUploadManager::FileThreadCallback(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig) @@ -621,6 +646,7 @@ UploadError CUploadManager::Remove(const String& siaPath) UploadStatus uploadStatus = static_cast(static_cast(query.getColumn(query.getColumnIndex("status")))); switch (uploadStatus) { + case UploadStatus::Complete: case UploadStatus::Queued: case UploadStatus::Modified: case UploadStatus::Copying: diff --git a/SiaDrive.Api/UploadManager.h b/SiaDrive.Api/UploadManager.h index 47cbd54..17c22f5 100644 --- a/SiaDrive.Api/UploadManager.h +++ b/SiaDrive.Api/UploadManager.h @@ -60,6 +60,8 @@ private: void FileThreadCallback(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig); void HandleFileRemove(const CSiaCurl& siaCurl, const String& siaPath, const String& siaDriveFilePath); void HandleAddFile(const String& siaPath, const String& filePath, const String& tempSourcePath, const String& siaDriveFilePath); + void UpdateQueueOnStartup(); + void DeleteFilesRemovedFromSia(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig, const bool& isStartup = false); protected: virtual void AutoThreadCallback(const CSiaCurl& siaCurl, CSiaDriveConfig* siaDriveConfig) override; @@ -69,7 +71,6 @@ public: public: _UploadStatus GetUploadStatus(const String& siaPath); - void do_work(String& filePath, String& rootPath); _UploadError AddOrUpdate(const String& siaPath, String filePath); _UploadError Remove(const String& siaPath); };