diff --git a/internal/frontend/qml/Banner.qml b/internal/frontend/qml/Banner.qml index 1cf92f4..f5e41c8 100644 --- a/internal/frontend/qml/Banner.qml +++ b/internal/frontend/qml/Banner.qml @@ -80,13 +80,13 @@ Popup { } switch (root.notification.type) { - case Notification.NotificationType.Info: + case Notification.NotificationType.Info: return root.colorScheme.signal_info - case Notification.NotificationType.Success: + case Notification.NotificationType.Success: return root.colorScheme.signal_success - case Notification.NotificationType.Warning: + case Notification.NotificationType.Warning: return root.colorScheme.signal_warning - case Notification.NotificationType.Danger: + case Notification.NotificationType.Danger: return root.colorScheme.signal_danger } } @@ -118,13 +118,13 @@ Popup { } switch (root.notification.type) { - case Notification.NotificationType.Info: + case Notification.NotificationType.Info: return "./icons/ic-info-circle-filled.svg" - case Notification.NotificationType.Success: + case Notification.NotificationType.Success: return "./icons/ic-info-circle-filled.svg" - case Notification.NotificationType.Warning: + case Notification.NotificationType.Warning: return "./icons/ic-exclamation-circle-filled.svg" - case Notification.NotificationType.Danger: + case Notification.NotificationType.Danger: return "./icons/ic-exclamation-circle-filled.svg" } } @@ -134,6 +134,7 @@ Popup { colorScheme: root.colorScheme Layout.fillWidth: true Layout.alignment: Qt.AlignVCenter + Layout.leftMargin: 16 color: root.colorScheme.text_invert text: root.notification ? root.notification.description : "" @@ -152,13 +153,13 @@ Popup { } switch (root.notification.type) { - case Notification.NotificationType.Info: + case Notification.NotificationType.Info: return root.colorScheme.signal_info_active - case Notification.NotificationType.Success: + case Notification.NotificationType.Success: return root.colorScheme.signal_success_active - case Notification.NotificationType.Warning: + case Notification.NotificationType.Warning: return root.colorScheme.signal_warning_active - case Notification.NotificationType.Danger: + case Notification.NotificationType.Danger: return root.colorScheme.signal_danger_active } } @@ -190,22 +191,22 @@ Popup { var active switch (root.notification.type) { - case Notification.NotificationType.Info: + case Notification.NotificationType.Info: norm = root.colorScheme.signal_info hover = root.colorScheme.signal_info_hover active = root.colorScheme.signal_info_active break; - case Notification.NotificationType.Success: + case Notification.NotificationType.Success: norm = root.colorScheme.signal_success hover = root.colorScheme.signal_success_hover active = root.colorScheme.signal_success_active break; - case Notification.NotificationType.Warning: + case Notification.NotificationType.Warning: norm = root.colorScheme.signal_warning hover = root.colorScheme.signal_warning_hover active = root.colorScheme.signal_warning_active break; - case Notification.NotificationType.Danger: + case Notification.NotificationType.Danger: norm = root.colorScheme.signal_danger hover = root.colorScheme.signal_danger_hover active = root.colorScheme.signal_danger_active diff --git a/internal/frontend/qml/Bridge_test.qml b/internal/frontend/qml/Bridge_test.qml index bac3fe0..db55cf9 100644 --- a/internal/frontend/qml/Bridge_test.qml +++ b/internal/frontend/qml/Bridge_test.qml @@ -551,7 +551,12 @@ Window { root.reportBugFinished() root.bugReportSendSuccess() } + } + } + + ColumnLayout { + spacing: 5 Button { text: "Bug report send error" @@ -609,6 +614,22 @@ Window { root.notifyRebuildKeychain() } } + + Button { + text: "Address changed" + colorScheme: root.colorScheme + onClicked: { + root.addressChanged("p@v.el") + } + } + + Button { + text: "Address changed + Logout" + colorScheme: root.colorScheme + onClicked: { + root.addressChangedLogout("p@v.el") + } + } } } diff --git a/internal/frontend/qml/Notifications/Notifications.qml b/internal/frontend/qml/Notifications/Notifications.qml index 8f29305..227696d 100644 --- a/internal/frontend/qml/Notifications/Notifications.qml +++ b/internal/frontend/qml/Notifications/Notifications.qml @@ -74,7 +74,8 @@ QtObject { root.resetBridge, root.deleteAccount, root.noKeychain, - root.rebuildKeychain + root.rebuildKeychain, + root.addressChanged ] // Connection @@ -940,4 +941,37 @@ QtObject { } ] } + + property Notification addressChanged: Notification { + title: qsTr("Address list changes") + description: qsTr("The address list for your account has changed. You might need to reconfigure your email client.") + brief: description + icon: "./icons/ic-exclamation-circle-filled.svg" + type: Notification.NotificationType.Warning + group: Notifications.Group.Configuration + + Connections { + target: root.backend + + onAddressChanged: { + root.addressChanged.description = qsTr("The address list for your account %1 has changed. You might need to reconfigure your email client.").arg(address) + root.addressChanged.active = true + } + + onAddressChangedLogout: { + root.addressChanged.description = qsTr("The address list for your account %1 has changed. You have to reconfigure your email client.").arg(address) + root.addressChanged.active = true + } + } + + action: [ + Action { + text: qsTr("OK") + + onTriggered: { + root.addressChanged.active = false + } + } + ] + } } diff --git a/internal/store/event_loop.go b/internal/store/event_loop.go index 8e87f30..573b85d 100644 --- a/internal/store/event_loop.go +++ b/internal/store/event_loop.go @@ -375,7 +375,7 @@ func (loop *eventLoop) processAddresses(log *logrus.Entry, addressEvents []*pmap for _, addressEvent := range addressEvents { switch addressEvent.Action { case pmapi.EventCreate: - log.WithField("email", addressEvent.Address.Email).Debug("Address was created") + log.WithField("email", addressEvent.Address.Email).Info("Address was created") loop.listener.Emit(bridgeEvents.AddressChangedEvent, loop.user.GetPrimaryAddress()) case pmapi.EventUpdate: @@ -386,7 +386,7 @@ func (loop *eventLoop) processAddresses(log *logrus.Entry, addressEvents []*pmap } email := oldAddress.Email - log.WithField("email", email).Debug("Address was updated") + log.WithField("email", email).Info("Address was updated") if addressEvent.Address.Receive != oldAddress.Receive { loop.listener.Emit(bridgeEvents.AddressChangedLogoutEvent, email) } @@ -399,7 +399,7 @@ func (loop *eventLoop) processAddresses(log *logrus.Entry, addressEvents []*pmap } email := oldAddress.Email - log.WithField("email", email).Debug("Address was deleted") + log.WithField("email", email).Info("Address was deleted") loop.user.CloseConnection(email) loop.listener.Emit(bridgeEvents.AddressChangedLogoutEvent, email) case pmapi.EventUpdateFlags: