diff --git a/saoriaccount.cpp b/saoriaccount.cpp index 4af74c2..db08c4f 100644 --- a/saoriaccount.cpp +++ b/saoriaccount.cpp @@ -136,3 +136,20 @@ reply->deleteLater(); }); } + +void SaoriAccount::getRelationship(qlonglong id) +{ + QNetworkRequest request = createHearder(); + QUrlQuery q; + q.addQueryItem("id",QString::number(id)); + request.setUrl(instance()->addQuery(m_instance->instance().url() + SAORI_MASTODON_APIPATH_ACCOUNTS + "/relationships",q)); + auto *reply = SaoriApplication::saori()->manager->get(request); + connect(reply,&QNetworkReply::finished,[=](){ + if (reply->error() == QNetworkReply::NoError) { + QJsonArray json = QJsonDocument::fromJson(reply->readAll()).array(); + emit relationship(id,json.first().toObject()); + } + reply->deleteLater(); + }); + return; +} diff --git a/saoriaccount.h b/saoriaccount.h index b4398df..be22af7 100644 --- a/saoriaccount.h +++ b/saoriaccount.h @@ -54,6 +54,7 @@ public slots: void getTimelineData(const QString timeline,const QUrlQuery query); void postNewStatus(const QString timeline,const QString data); + void getRelationship(qlonglong id); protected: void getAccountInfomation(); @@ -70,6 +71,7 @@ void accountInfomationChanged(); void apiData(const QString timeline,const QByteArray data,const QByteArray link); void posted(const QString timeline,int result); + void relationship(qlonglong id,QJsonObject relationship); public slots: }; diff --git a/saoriview.cpp b/saoriview.cpp index d971666..3c6643b 100644 --- a/saoriview.cpp +++ b/saoriview.cpp @@ -83,7 +83,11 @@ connect(saoriaccount,&SaoriAccount::apiData,this,&SaoriView::recived); if (view.left(9) == "accounts:") { QStringList t = view.split(':'); - if (t.count() >= 2) saoriaccount->getTimelineData(t[0] + ":" + t[1],QUrlQuery()); + if (t.count() >= 2) { + saoriaccount->getTimelineData(t[0] + ":" + t[1],QUrlQuery()); + connect(saoriaccount,&SaoriAccount::relationship,this,&SaoriView::relationship); + saoriaccount->getRelationship(t[1].toLongLong()); + } } saoriaccount->getTimelineData(view,QUrlQuery()); connect(ui->scrollArea->verticalScrollBar(),&QScrollBar::valueChanged,this,[=](int p){ @@ -541,6 +545,11 @@ return; } +void SaoriView::relationship(qlonglong id, QJsonObject data) +{ + qDebug() << id << data["following"].toBool(); +} + void SaoriView::on_actionReload_triggered() { reload(); diff --git a/saoriview.h b/saoriview.h index 0c1bcde..2fd9a34 100644 --- a/saoriview.h +++ b/saoriview.h @@ -86,6 +86,7 @@ protected slots: void timerUpdate(); void viewEntriesAdjustment(); + void relationship(qlonglong id,QJsonObject data); private: Ui::SaoriView *ui;