Adds a configurable webhook event export system for VRCX #39

Closed
opened 2026-04-05 16:15:48 +02:00 by MrUnknownDE · 0 comments
Owner

Originally created by @Sakura1618 on 3/7/2026

Summary

Adds a configurable webhook event export system for VRCX.

This PR introduces a centralized webhook event registry, event-level enable/disable controls, and UI support for managing exported webhook events. It also adds runtime suppression for a few noisy initialization-phase events to reduce webhook spam after login.

Changes

  • add centralized webhook event registry and normalization utilities
  • add per-event webhook export filtering in runtime delivery flow
  • persist webhook enabled-event map in settings store
  • add dedicated webhook event filter dialog in Settings
  • wire webhook event export into notifications, favorites, and user-related event producers
  • suppress selected high-frequency init-phase events during initial load
  • add/update tests for registry, settings, UI, and event helper behavior
  • set all webhook events to disabled by default

Included Event Areas

  • app lifecycle
  • VRChat lifecycle
  • self/location events
  • favorites
  • friend state updates
  • instance metrics
  • notification events

Spam Reduction

To reduce noisy startup bursts, this PR suppresses these events before initial friends/favorites loading completes:

  • favorite.avatar.added
  • friend.time_together_updated
  • friend.note_updated
  • friend.avatar_changed

Default Behavior

All webhook events are now disabled by default and must be explicitly enabled by the user.

UI

  • keeps webhook settings in the existing Notifications settings panel
  • moves event-level webhook filters into a dedicated dialog
  • supports per-event toggle, bulk enable/disable, and reset to defaults

Notes

  • unknown or disabled webhook events are blocked at export time
  • supports both static event keys and dynamic notification event rules
  • removed the init gate test script from this branch as requested

Testing

  • added/updated tests covering:
    • webhook event registry
    • webhook export filtering
    • settings persistence
    • notification helper logic
    • settings UI / dialog behavior

Files of Interest

  • src/shared/constants/webhookEvents.js
  • src/service/webhookEvent.js
  • src/service/webhookEventGate.js
  • src/stores/settings/notifications.js
  • src/stores/notification/index.js
  • src/stores/notification/webhookEventHelpers.js
  • src/stores/favorite.js
  • src/stores/user.js
  • src/views/Settings/dialogs/WebhookEventFiltersDialog.vue
*Originally created by @Sakura1618 on 3/7/2026* ## Summary Adds a configurable webhook event export system for VRCX. This PR introduces a centralized webhook event registry, event-level enable/disable controls, and UI support for managing exported webhook events. It also adds runtime suppression for a few noisy initialization-phase events to reduce webhook spam after login. ## Changes - add centralized webhook event registry and normalization utilities - add per-event webhook export filtering in runtime delivery flow - persist webhook enabled-event map in settings store - add dedicated webhook event filter dialog in Settings - wire webhook event export into notifications, favorites, and user-related event producers - suppress selected high-frequency init-phase events during initial load - add/update tests for registry, settings, UI, and event helper behavior - set all webhook events to disabled by default ## Included Event Areas - app lifecycle - VRChat lifecycle - self/location events - favorites - friend state updates - instance metrics - notification events ## Spam Reduction To reduce noisy startup bursts, this PR suppresses these events before initial friends/favorites loading completes: - `favorite.avatar.added` - `friend.time_together_updated` - `friend.note_updated` - `friend.avatar_changed` ## Default Behavior All webhook events are now **disabled by default** and must be explicitly enabled by the user. ## UI - keeps webhook settings in the existing Notifications settings panel - moves event-level webhook filters into a dedicated dialog - supports per-event toggle, bulk enable/disable, and reset to defaults ## Notes - unknown or disabled webhook events are blocked at export time - supports both static event keys and dynamic notification event rules - removed the init gate test script from this branch as requested ## Testing - added/updated tests covering: - webhook event registry - webhook export filtering - settings persistence - notification helper logic - settings UI / dialog behavior ## Files of Interest - `src/shared/constants/webhookEvents.js` - `src/service/webhookEvent.js` - `src/service/webhookEventGate.js` - `src/stores/settings/notifications.js` - `src/stores/notification/index.js` - `src/stores/notification/webhookEventHelpers.js` - `src/stores/favorite.js` - `src/stores/user.js` - `src/views/Settings/dialogs/WebhookEventFiltersDialog.vue`
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github/VRCX#39