diff --git a/backend/pkg/api/data_access/notifications.go b/backend/pkg/api/data_access/notifications.go
index 7ddf7b70e..b29ffd688 100644
--- a/backend/pkg/api/data_access/notifications.go
+++ b/backend/pkg/api/data_access/notifications.go
@@ -1681,8 +1681,10 @@ func (d *DataAccessService) GetNotificationSettingsDashboards(ctx context.Contex
settings.GroupEfficiencyBelowThreshold = event.Threshold
case types.ValidatorMissedAttestationEventName:
settings.IsAttestationsMissedSubscribed = true
- case types.ValidatorMissedProposalEventName, types.ValidatorExecutedProposalEventName:
- settings.IsBlockProposalSubscribed = true
+ case types.ValidatorExecutedProposalEventName:
+ settings.IsBlockProposalSuccessSubscribed = true
+ case types.ValidatorMissedProposalEventName:
+ settings.IsBlockProposalMissedSubscribed = true
case types.ValidatorUpcomingProposalEventName:
settings.IsUpcomingBlockProposalSubscribed = true
case types.SyncCommitteeSoonEventName:
@@ -1922,9 +1924,8 @@ func (d *DataAccessService) UpdateNotificationSettingsValidatorDashboard(ctx con
d.AddOrRemoveEvent(&eventsToInsert, &eventsToDelete, settings.IsSlashedSubscribed, userId, types.ValidatorGotSlashedEventName, networkName, eventFilter, epoch, 0)
d.AddOrRemoveEvent(&eventsToInsert, &eventsToDelete, settings.IsMaxCollateralSubscribed, userId, types.RocketpoolCollateralMaxReachedEventName, networkName, eventFilter, epoch, settings.MaxCollateralThreshold)
d.AddOrRemoveEvent(&eventsToInsert, &eventsToDelete, settings.IsMinCollateralSubscribed, userId, types.RocketpoolCollateralMinReachedEventName, networkName, eventFilter, epoch, settings.MinCollateralThreshold)
- // Set two events for IsBlockProposalSubscribed
- d.AddOrRemoveEvent(&eventsToInsert, &eventsToDelete, settings.IsBlockProposalSubscribed, userId, types.ValidatorMissedProposalEventName, networkName, eventFilter, epoch, 0)
- d.AddOrRemoveEvent(&eventsToInsert, &eventsToDelete, settings.IsBlockProposalSubscribed, userId, types.ValidatorExecutedProposalEventName, networkName, eventFilter, epoch, 0)
+ d.AddOrRemoveEvent(&eventsToInsert, &eventsToDelete, settings.IsBlockProposalSuccessSubscribed, userId, types.ValidatorMissedProposalEventName, networkName, eventFilter, epoch, 0)
+ d.AddOrRemoveEvent(&eventsToInsert, &eventsToDelete, settings.IsBlockProposalMissedSubscribed, userId, types.ValidatorExecutedProposalEventName, networkName, eventFilter, epoch, 0)
// Insert all the events or update the threshold if they already exist
if len(eventsToInsert) > 0 {
diff --git a/backend/pkg/api/types/notifications.go b/backend/pkg/api/types/notifications.go
index 807d6340f..b74ecb55a 100644
--- a/backend/pkg/api/types/notifications.go
+++ b/backend/pkg/api/types/notifications.go
@@ -186,7 +186,8 @@ type NotificationSettingsValidatorDashboard struct {
IsGroupEfficiencyBelowSubscribed bool `json:"is_group_efficiency_below_subscribed"`
GroupEfficiencyBelowThreshold float64 `json:"group_efficiency_below_threshold" faker:"boundary_start=0, boundary_end=1"`
IsAttestationsMissedSubscribed bool `json:"is_attestations_missed_subscribed"`
- IsBlockProposalSubscribed bool `json:"is_block_proposal_subscribed"`
+ IsBlockProposalSuccessSubscribed bool `json:"is_block_proposal_success_subscribed"`
+ IsBlockProposalMissedSubscribed bool `json:"is_block_proposal_missed_subscribed"`
IsUpcomingBlockProposalSubscribed bool `json:"is_upcoming_block_proposal_subscribed"`
IsSyncSubscribed bool `json:"is_sync_subscribed"`
IsWithdrawalProcessedSubscribed bool `json:"is_withdrawal_processed_subscribed"`
diff --git a/frontend/components/notifications/management/NotificationsManagementDashboards.vue b/frontend/components/notifications/management/NotificationsManagementDashboards.vue
index 6617e7754..017a27e7c 100644
--- a/frontend/components/notifications/management/NotificationsManagementDashboards.vue
+++ b/frontend/components/notifications/management/NotificationsManagementDashboards.vue
@@ -107,8 +107,11 @@ const wrappedDashboards: ComputedRef<
if (settingsValidatorDashboard.is_attestations_missed_subscribed) {
result.push($t('notifications.subscriptions.validators.attestation_missed.label'))
}
- if (settingsValidatorDashboard.is_block_proposal_subscribed) {
- result.push($t('notifications.subscriptions.validators.block_proposal.label'))
+ if (settingsValidatorDashboard.is_block_proposal_missed_subscribed) {
+ result.push($t('notifications.subscriptions.validators.block_proposal_missed.label'))
+ }
+ if (settingsValidatorDashboard.is_block_proposal_success_subscribed) {
+ result.push($t('notifications.subscriptions.validators.block_proposal_success.label'))
}
if (settingsValidatorDashboard.is_upcoming_block_proposal_subscribed) {
result.push($t('notifications.subscriptions.validators.upcoming_block_proposal.label'))
diff --git a/frontend/components/notifications/management/NotificationsManagementSubscriptionDialog.vue b/frontend/components/notifications/management/NotificationsManagementSubscriptionDialog.vue
index 0e8a7ad8a..1e7895479 100644
--- a/frontend/components/notifications/management/NotificationsManagementSubscriptionDialog.vue
+++ b/frontend/components/notifications/management/NotificationsManagementSubscriptionDialog.vue
@@ -21,7 +21,8 @@ function closeDialog(): void {
const checkboxes = ref({
is_attestations_missed_subscribed: props.value?.is_attestations_missed_subscribed ?? false,
- is_block_proposal_subscribed: props.value?.is_block_proposal_subscribed ?? false,
+ is_block_proposal_missed_subscribed: props.value?.is_block_proposal_missed_subscribed ?? false,
+ is_block_proposal_success_subscribed: props.value?.is_block_proposal_success_subscribed ?? false,
is_group_efficiency_below_subscribed: props.value?.is_group_efficiency_below_subscribed ?? false,
is_max_collateral_subscribed: props.value?.is_max_collateral_subscribed ?? false,
is_min_collateral_subscribed: props.value?.is_min_collateral_subscribed ?? false,
@@ -113,8 +114,12 @@ const { minutes: minutesUntilNetworkFinality } = formatSecondsTo(secondsUntilNet
:info="$t('notifications.subscriptions.validators.attestation_missed.info', { count: Number(formatSecondsTo(secondsPerEpoch, { minimumFractionDigits: 1 }).minutes) })"
/>
+
{
const validatorSub: NotificationSettingsValidatorDashboard = {
group_efficiency_below_threshold: 0,
is_attestations_missed_subscribed: true,
- is_block_proposal_subscribed: true,
+ is_block_proposal_missed_subscribed: true,
+ is_block_proposal_success_subscribed: true,
is_group_efficiency_below_subscribed: true,
is_max_collateral_subscribed: false,
is_min_collateral_subscribed: false,
diff --git a/frontend/composables/notifications/useNotificationsManagementDashboards.ts b/frontend/composables/notifications/useNotificationsManagementDashboards.ts
index 1b4d85399..d2ca5a29f 100644
--- a/frontend/composables/notifications/useNotificationsManagementDashboards.ts
+++ b/frontend/composables/notifications/useNotificationsManagementDashboards.ts
@@ -85,7 +85,8 @@ export function useNotificationsManagementDashboards() {
const accountDashboardSettings = settings as NotificationSettingsValidatorDashboard
accountDashboardSettings.group_efficiency_below_threshold = 0
accountDashboardSettings.is_attestations_missed_subscribed = false
- accountDashboardSettings.is_block_proposal_subscribed = false
+ accountDashboardSettings.is_block_proposal_missed_subscribed = false
+ accountDashboardSettings.is_block_proposal_success_subscribed = false
accountDashboardSettings.is_group_efficiency_below_subscribed = false
accountDashboardSettings.is_max_collateral_subscribed = false
accountDashboardSettings.is_min_collateral_subscribed = false
diff --git a/frontend/i18n/locales/en.json b/frontend/i18n/locales/en.json
index 8b9f7f7b2..676bfebde 100644
--- a/frontend/i18n/locales/en.json
+++ b/frontend/i18n/locales/en.json
@@ -418,7 +418,12 @@
"text": "Indicates the percentage of rewards in relation to the theoretical maximum value",
"title": "Attestation Efficiency: "
},
- "block_proposal": "Block Proposal",
+ "block_proposal_missed": {
+ "label": "Block proposal missed"
+ },
+ "block_proposal_success": {
+ "label": "Block proposal success"
+ },
"sync": {
"text": "If isPartOfSyncCommittee then sync_efficiency = executed_Sync / (scheduled_Sync - missed_Blocks) else 1",
"title": "Sync Committee Efficiency: "
diff --git a/frontend/types/api/notifications.ts b/frontend/types/api/notifications.ts
index 7fab1c5dd..6b9398eb6 100644
--- a/frontend/types/api/notifications.ts
+++ b/frontend/types/api/notifications.ts
@@ -182,7 +182,8 @@ export interface NotificationSettingsValidatorDashboard {
is_group_efficiency_below_subscribed: boolean;
group_efficiency_below_threshold: number /* float64 */;
is_attestations_missed_subscribed: boolean;
- is_block_proposal_subscribed: boolean;
+ is_block_proposal_success_subscribed: boolean;
+ is_block_proposal_missed_subscribed: boolean;
is_upcoming_block_proposal_subscribed: boolean;
is_sync_subscribed: boolean;
is_withdrawal_processed_subscribed: boolean;