mobile: add helper to import data from local cloud cache

If you pass in the repo name, it isn't treated as cloud storage, but simply as
local git storage and imported (i.e., added) to the current dive list.

This allows the user to work around failed no-cloud->cloud transitions, merge
different accounts, and most importantly deal with situations were conflicts on
the server caused us to move a cache out of the way and potentially make dives
that were on the mobile device inaccessible to the user.

Once a UI is added, this allows the user to recover those dives (realistically
this is not really all that potentially 'dangerous' to do, but it's definitely
something that would best be done after talking to someone who understands the
cloud storage and can guide the user...).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2020-06-06 09:55:49 -07:00
parent dd82149726
commit 208d46d58e
2 changed files with 13 additions and 0 deletions

View file

@ -2207,6 +2207,18 @@ void QMLManager::setDiveListProcessing(bool value)
}
void QMLManager::importCacheRepo(QString repo)
{
struct dive_table table = empty_dive_table;
struct trip_table trips = empty_trip_table;
struct dive_site_table sites = empty_dive_site_table;
QString repoPath = QString("%1/cloudstorage/%2").arg(system_default_directory()).arg(repo);
appendTextToLog(QString("importing %1").arg(repoPath));
parse_file(qPrintable(repoPath), &table, &trips, &sites);
add_imported_dives(&table, &trips, &sites, IMPORT_MERGE_ALL_TRIPS);
changesNeedSaving();
}
QStringList QMLManager::cloudCacheList() const
{
QDir localCacheDir(QString("%1/cloudstorage/").arg(system_default_directory()));

View file

@ -119,6 +119,7 @@ public:
Q_INVOKABLE void setFilter(const QString filterText, int mode);
Q_INVOKABLE void selectRow(int row);
Q_INVOKABLE void selectSwipeRow(int row);
Q_INVOKABLE void importCacheRepo(QString repo);
static QMLManager *instance();
Q_INVOKABLE void registerError(QString error);