mirror of https://github.com/nymea/nymea.git
update endpoints when a device is paired on the fly
parent
c1d4adea17
commit
6334496c8c
|
|
@ -47,6 +47,7 @@ AWSConnector::AWSConnector(QObject *parent) : QObject(parent)
|
|||
m_disconnectContextData = std::shared_ptr<awsiotsdk::DisconnectCallbackContextData>(new DisconnectContext(this));
|
||||
m_subscriptionContextData = std::shared_ptr<awsiotsdk::mqtt::SubscriptionHandlerContextData>(new SubscriptionContext(this));
|
||||
|
||||
qRegisterMetaType<AWSConnector::PushNotificationsEndpoint>();
|
||||
m_clientName = readSyncedNameCache();
|
||||
}
|
||||
|
||||
|
|
@ -160,6 +161,7 @@ void AWSConnector::setupSubscriptions()
|
|||
subscriptions.append(QString("%1/device/users/response").arg(m_clientId));
|
||||
subscriptions.append(QString("%1/pair/response").arg(m_clientId));
|
||||
subscriptions.append(QString("%1/notify/response").arg(m_clientId));
|
||||
subscriptions.append(QString("%1/notify/info/endpoint").arg(m_clientId));
|
||||
subscribe(subscriptions);
|
||||
|
||||
// fetch previous pairings
|
||||
|
|
@ -475,6 +477,15 @@ ResponseCode AWSConnector::onSubscriptionReceivedCallback(util::String topic_nam
|
|||
int status = jsonDoc.toVariant().toMap().value("status").toInt();
|
||||
qCDebug(dcAWS()) << "Push notification reply for transaction" << transactionId << " Status:" << status << jsonDoc.toVariant().toMap().value("message").toString();
|
||||
emit connector->pushNotificationSent(transactionId, status);
|
||||
} else if (topic == QString("%1/notify/info/endpoint").arg(connector->m_clientId)) {
|
||||
QVariantMap endpoint = jsonDoc.toVariant().toMap().value("newPushNotificationsEndpoint").toMap();
|
||||
Q_ASSERT(endpoint.keys().count() == 1);
|
||||
QString cognitoId = endpoint.keys().first();
|
||||
PushNotificationsEndpoint ep;
|
||||
ep.userId = cognitoId;
|
||||
ep.endpointId = endpoint.value(cognitoId).toMap().value("endpointId").toString();
|
||||
ep.displayName = endpoint.value(cognitoId).toMap().value("displayName").toString();
|
||||
emit connector->pushNotificationEndpointAdded(ep);
|
||||
} else {
|
||||
qCWarning(dcAWS) << "Unhandled subscription received!" << topic << QString::fromStdString(payload);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -63,7 +63,8 @@ signals:
|
|||
void disconnected();
|
||||
void devicePaired(const QString &cognritoUserId, int errorCode, const QString &message);
|
||||
void webRtcHandshakeMessageReceived(const QString &transactionId, const QVariantMap &data);
|
||||
void pushNotificationEndpointsUpdated(const QList<PushNotificationsEndpoint> pushNotificationEndpoints);
|
||||
void pushNotificationEndpointsUpdated(const QList<AWSConnector::PushNotificationsEndpoint> pushNotificationEndpoints);
|
||||
void pushNotificationEndpointAdded(const AWSConnector::PushNotificationsEndpoint &pushNotificationEndpoint);
|
||||
void pushNotificationSent(int id, int status);
|
||||
|
||||
private slots:
|
||||
|
|
@ -134,5 +135,6 @@ private:
|
|||
static AWSConnector* s_instance;
|
||||
static QHash<quint16, AWSConnector*> s_requestMap;
|
||||
};
|
||||
Q_DECLARE_METATYPE(AWSConnector::PushNotificationsEndpoint)
|
||||
|
||||
#endif // AWSCONNECTOR_H
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ CloudNotifications::CloudNotifications(AWSConnector* awsConnector, QObject *pare
|
|||
m_awsConnector(awsConnector)
|
||||
{
|
||||
connect(m_awsConnector, &AWSConnector::pushNotificationEndpointsUpdated, this, &CloudNotifications::pushNotificationEndpointsUpdated);
|
||||
connect(m_awsConnector, &AWSConnector::pushNotificationEndpointAdded, this, &CloudNotifications::pushNotificationEndpointAdded);
|
||||
connect(m_awsConnector, &AWSConnector::pushNotificationSent, this, &CloudNotifications::pushNotificationSent);
|
||||
}
|
||||
|
||||
|
|
@ -135,7 +136,6 @@ QJsonObject CloudNotifications::metaData() const
|
|||
|
||||
DeviceManager::DeviceSetupStatus CloudNotifications::setupDevice(Device *device)
|
||||
{
|
||||
qWarning() << "--------------------------------------------------------------------- setupDevice" << device->id() << device->name();
|
||||
Q_UNUSED(device)
|
||||
return DeviceManager::DeviceSetupStatusSuccess;
|
||||
}
|
||||
|
|
@ -201,6 +201,18 @@ void CloudNotifications::pushNotificationEndpointsUpdated(const QList<AWSConnect
|
|||
|
||||
}
|
||||
|
||||
void CloudNotifications::pushNotificationEndpointAdded(const AWSConnector::PushNotificationsEndpoint &endpoint)
|
||||
{
|
||||
DeviceDescriptor descriptor(cloudNotificationsDeviceClassId, endpoint.displayName, QString("Send notifications to %1").arg(endpoint.displayName));
|
||||
ParamList params;
|
||||
Param userIdParam(cloudNotificationsDeviceClassUserParamId, endpoint.userId);
|
||||
params.append(userIdParam);
|
||||
Param endpointIdParam(cloudNotificationsDeviceClassEndpointParamId, endpoint.endpointId);
|
||||
params.append(endpointIdParam);
|
||||
descriptor.setParams(params);
|
||||
emit autoDevicesAppeared(cloudNotificationsDeviceClassId, {descriptor});
|
||||
}
|
||||
|
||||
void CloudNotifications::pushNotificationSent(int id, int status)
|
||||
{
|
||||
qCDebug(dcCloud()) << "Push notification sent" << id << status;
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ public:
|
|||
|
||||
private slots:
|
||||
void pushNotificationEndpointsUpdated(const QList<AWSConnector::PushNotificationsEndpoint> &endpoints);
|
||||
void pushNotificationEndpointAdded(const AWSConnector::PushNotificationsEndpoint &endpoint);
|
||||
void pushNotificationSent(int id, int status);
|
||||
|
||||
private:
|
||||
|
|
|
|||
Loading…
Reference in New Issue