From 3972f939f7440350019e97a0ee749910376758d3 Mon Sep 17 00:00:00 2001 From: John Maguire Date: Fri, 30 Nov 2012 15:40:09 +0100 Subject: [PATCH] Support deletion and reset from Dropbox's delta API. --- src/internet/dropboxservice.cpp | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/internet/dropboxservice.cpp b/src/internet/dropboxservice.cpp index 784b78ee5..ac29715d1 100644 --- a/src/internet/dropboxservice.cpp +++ b/src/internet/dropboxservice.cpp @@ -112,7 +112,8 @@ void DropboxService::RequestFileListFinished(QNetworkReply* reply) { QVariantMap response = parser.parse(reply).toMap(); if (response.contains("reset") && response["reset"].toBool()) { - // TODO: Clear dropbox DB. + qLog(Debug) << "Resetting Dropbox DB"; + library_backend_->DeleteAll(); } QSettings settings; @@ -124,13 +125,25 @@ void DropboxService::RequestFileListFinished(QNetworkReply* reply) { foreach (const QVariant& c, contents) { QVariantList item = c.toList(); QString path = item[0].toString(); + + QUrl url; + url.setScheme("dropbox"); + url.setPath(path); + + if (item[1].isNull()) { + // Null metadata indicates path deleted. + qLog(Debug) << "Deleting:" << url; + Song song = library_backend_->GetSongByUrl(url); + if (song.is_valid()) { + library_backend_->DeleteSongs(SongList() << song); + } + continue; + } + QVariantMap metadata = item[1].toMap(); if (metadata["is_dir"].toBool()) { continue; } - QUrl url; - url.setScheme("dropbox"); - url.setPath(path); MaybeAddFileToDatabase(url, metadata); }