Request Notification Permission
If notification permission has not been granted and permission has not previously been asked for request notification permission.
This commit is contained in:
@@ -40,7 +40,22 @@ NotificationsManager::NotificationsManager(QObject *parent)
|
|||||||
|
|
||||||
void NotificationsManager::handleNotifications(QPointer<NeoChatConnection> connection)
|
void NotificationsManager::handleNotifications(QPointer<NeoChatConnection> connection)
|
||||||
{
|
{
|
||||||
if (KNotificationPermission::checkPermission() != Qt::PermissionStatus::Granted) {
|
if (KNotificationPermission::checkPermission() == Qt::PermissionStatus::Granted) {
|
||||||
|
startNotificationJob(connection);
|
||||||
|
} else if (!permissionAsked) {
|
||||||
|
KNotificationPermission::requestPermission(this, [this, connection](Qt::PermissionStatus result) {
|
||||||
|
if (result == Qt::PermissionStatus::Granted) {
|
||||||
|
startNotificationJob(connection);
|
||||||
|
} else {
|
||||||
|
permissionAsked = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void NotificationsManager::startNotificationJob(QPointer<NeoChatConnection> connection)
|
||||||
|
{
|
||||||
|
if (connection == nullptr) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ private:
|
|||||||
QHash<QString, QStringList> m_oldNotifications;
|
QHash<QString, QStringList> m_oldNotifications;
|
||||||
|
|
||||||
QStringList m_connActiveJob;
|
QStringList m_connActiveJob;
|
||||||
|
void startNotificationJob(QPointer<NeoChatConnection> connection);
|
||||||
|
|
||||||
QPixmap createNotificationImage(const QImage &icon, NeoChatRoom *room);
|
QPixmap createNotificationImage(const QImage &icon, NeoChatRoom *room);
|
||||||
bool shouldPostNotification(QPointer<NeoChatConnection> connection, const QJsonValue ¬ification);
|
bool shouldPostNotification(QPointer<NeoChatConnection> connection, const QJsonValue ¬ification);
|
||||||
@@ -81,6 +82,8 @@ private:
|
|||||||
QHash<QString, std::pair<qint64, KNotification *>> m_notifications;
|
QHash<QString, std::pair<qint64, KNotification *>> m_notifications;
|
||||||
QHash<QString, QPointer<KNotification>> m_invitations;
|
QHash<QString, QPointer<KNotification>> m_invitations;
|
||||||
|
|
||||||
|
bool permissionAsked = false;
|
||||||
|
|
||||||
private Q_SLOTS:
|
private Q_SLOTS:
|
||||||
void processNotificationJob(QPointer<NeoChatConnection> connection, Quotient::GetNotificationsJob *job, bool initialization);
|
void processNotificationJob(QPointer<NeoChatConnection> connection, Quotient::GetNotificationsJob *job, bool initialization);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user