From bf1c6cc97ee83c3bbd577f9ea58ec6e63bab7f34 Mon Sep 17 00:00:00 2001
From: Akira Ohgaki <akiraohgaki@gmail.com>
Date: Sat, 25 Nov 2017 19:56:16 +0900
Subject: [PATCH] Add functions for update_available data

---
 app/src/handlers/confighandler.cpp | 37 ++++++++++++++++++++++++++++++
 app/src/handlers/confighandler.h   |  4 ++++
 2 files changed, 41 insertions(+)

diff --git a/app/src/handlers/confighandler.cpp b/app/src/handlers/confighandler.cpp
index bcb3e74..c4043f3 100644
--- a/app/src/handlers/confighandler.cpp
+++ b/app/src/handlers/confighandler.cpp
@@ -31,6 +31,11 @@ QJsonObject ConfigHandler::getUsrConfigApplication() const
 
 bool ConfigHandler::setUsrConfigApplication(const QJsonObject &object) const
 {
+    /* object format
+    {
+        "update_checked_at": 1483658977219
+    }
+    */
     return usrConfig_.set("application", object);
 }
 
@@ -64,6 +69,16 @@ bool ConfigHandler::setUsrConfigInstalledItems(const QJsonObject &object) const
     return usrConfig_.set("installed_items", object);
 }
 
+QJsonObject ConfigHandler::getUsrConfigUpdateAvailable() const
+{
+    return usrConfig_.get("update_available");
+}
+
+bool ConfigHandler::setUsrConfigUpdateAvailable(const QJsonObject &object) const
+{
+    return usrConfig_.set("update_available", object);
+}
+
 bool ConfigHandler::setUsrConfigProvidersProvider(const QString &providerKey, const QJsonObject &object) const
 {
     /* object format
@@ -162,6 +177,28 @@ bool ConfigHandler::removeUsrConfigInstalledItemsItem(const QString &itemKey) co
     return setUsrConfigInstalledItems(installedItems);
 }
 
+bool ConfigHandler::setUsrConfigUpdateAvailableFile(const QString &fileKey, const QJsonObject &object) const
+{
+    /* object format
+    {
+        "path": "/home/user/.local/bin/example.AppImage",
+        "filename": "example.AppImage",
+        "installed_item": "http://example.com/downloads/example.AppImage",
+        "update_method": "appimageupdate"
+    }
+    */
+    auto updateAvailable = getUsrConfigUpdateAvailable();
+    updateAvailable[fileKey] = object;
+    return setUsrConfigUpdateAvailable(updateAvailable);
+}
+
+bool ConfigHandler::removeUsrConfigUpdateAvailableFile(const QString &fileKey) const
+{
+    auto updateAvailable = getUsrConfigUpdateAvailable();
+    updateAvailable.remove(fileKey);
+    return setUsrConfigUpdateAvailable(updateAvailable);
+}
+
 void ConfigHandler::importAppConfigApplication()
 {
     appConfigApplication_ = appConfig_.get("application");
diff --git a/app/src/handlers/confighandler.h b/app/src/handlers/confighandler.h
index bd44739..76aa0e4 100644
--- a/app/src/handlers/confighandler.h
+++ b/app/src/handlers/confighandler.h
@@ -24,6 +24,8 @@ public slots:
     bool setUsrConfigCategories(const QJsonObject &object) const;
     QJsonObject getUsrConfigInstalledItems() const;
     bool setUsrConfigInstalledItems(const QJsonObject &object) const;
+    QJsonObject getUsrConfigUpdateAvailable() const;
+    bool setUsrConfigUpdateAvailable(const QJsonObject &object) const;
 
     bool setUsrConfigProvidersProvider(const QString &providerKey, const QJsonObject &object) const;
     bool removeUsrConfigProvidersProvider(const QString &providerKey) const;
@@ -32,6 +34,8 @@ public slots:
     bool setUsrConfigCategoriesInstallType(const QString &providerKey, const QString &categoryKey, const QString &installType) const;
     bool setUsrConfigInstalledItemsItem(const QString &itemKey, const QJsonObject &object) const;
     bool removeUsrConfigInstalledItemsItem(const QString &itemKey) const;
+    bool setUsrConfigUpdateAvailableFile(const QString &fileKey, const QJsonObject &object) const;
+    bool removeUsrConfigUpdateAvailableFile(const QString &fileKey) const;
 
 private:
     void importAppConfigApplication();
-- 
GitLab