Refactor OcsShareJob creation.
authorCamila <hello@camila.codes>
Mon, 20 Sep 2021 13:31:03 +0000 (15:31 +0200)
committerMatthieu Gallien (Rebase PR Action) <matthieu_gallien@yahoo.fr>
Tue, 21 Sep 2021 10:01:20 +0000 (10:01 +0000)
Signed-off-by: Camila <hello@camila.codes>
src/gui/sharemanager.cpp
src/gui/sharemanager.h

index fec6b1bef86272bc6a59896bed7b8a8816a55108..4490ff0677931354e83cdc384ab39b36c24c595f 100644 (file)
@@ -235,18 +235,12 @@ QString LinkShare::getLabel() const
 
 void LinkShare::setName(const QString &name)
 {
-    auto *job = new OcsShareJob(_account);
-    connect(job, &OcsShareJob::shareJobFinished, this, &LinkShare::slotNameSet);
-    connect(job, &OcsJob::ocsError, this, &LinkShare::slotOcsError);
-    job->setName(getId(), name);
+    createShareJob(&LinkShare::slotNameSet)->setName(getId(), name);
 }
 
 void LinkShare::setNote(const QString &note)
 {
-    auto *job = new OcsShareJob(_account);
-    connect(job, &OcsShareJob::shareJobFinished, this, &LinkShare::slotNoteSet);
-    connect(job, &OcsJob::ocsError, this, &LinkShare::slotOcsError);
-    job->setNote(getId(), note);
+    createShareJob(&LinkShare::slotNoteSet)->setNote(getId(), note);
 }
 
 void LinkShare::slotNoteSet(const QJsonDocument &, const QVariant &note)
@@ -262,18 +256,20 @@ QString LinkShare::getToken() const
 
 void LinkShare::setExpireDate(const QDate &date)
 {
-    auto *job = new OcsShareJob(_account);
-    connect(job, &OcsShareJob::shareJobFinished, this, &LinkShare::slotExpireDateSet);
-    connect(job, &OcsJob::ocsError, this, &LinkShare::slotOcsError);
-    job->setExpireDate(getId(), date);
+    createShareJob(&LinkShare::slotExpireDateSet)->setExpireDate(getId(), date);
 }
 
 void LinkShare::setLabel(const QString &label)
 {
+    createShareJob(&LinkShare::slotLabelSet)->setLabel(getId(), label);
+}
+
+template <typename LinkShareSlot>
+OcsShareJob *LinkShare::createShareJob(const LinkShareSlot slotFunction) {
     auto *job = new OcsShareJob(_account);
-    connect(job, &OcsShareJob::shareJobFinished, this, &LinkShare::slotLabelSet);
+    connect(job, &OcsShareJob::shareJobFinished, this, slotFunction);
     connect(job, &OcsJob::ocsError, this, &LinkShare::slotOcsError);
-    job->setLabel(getId(), label);
+    return job;
 }
 
 void LinkShare::slotExpireDateSet(const QJsonDocument &reply, const QVariant &value)
index 48f58b81e370f0aab53063bc6dc6f6bb4a72410f..f30a26576c181049136fb2e9508dfea3ab1385fa 100644 (file)
@@ -31,6 +31,8 @@ class QJsonObject;
 
 namespace OCC {
 
+class OcsShareJob;
+
 class Share : public QObject
 {
     Q_OBJECT
@@ -249,6 +251,13 @@ public:
      */
     void setLabel(const QString &label);
     
+    /*
+     * Create OcsShareJob and connect to signal/slots
+     */
+    template <typename LinkShareSlot>
+    OcsShareJob *createShareJob(const LinkShareSlot slotFunction);
+    
+    
 signals:
     void expireDateSet();
     void noteSet();
@@ -306,7 +315,6 @@ signals:
 private:
     QString _note;
     QDate _expireDate;
-    QString _label;
 };
 
 /**