feat: channel metadata, notification versioning, validation, and archive#530
Open
success-OG wants to merge 1 commit into
Open
feat: channel metadata, notification versioning, validation, and archive#530success-OG wants to merge 1 commit into
success-OG wants to merge 1 commit into
Conversation
|
@success-OG Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements four Notify-Chain improvements spanning the Soroban contract and listener:
versionfield (current:1), documented on-chain and off-chain.Task 1 — Channel Metadata Updates
ChannelMetadatastorage keyed by AutoShare/channel id (separate from membership/usage state).update_channel_metadata,get_channel_metadata.ChannelMetadataUpdated.channel_metadata_test.rsTask 2 — Notification Versioning
CURRENT_NOTIFICATION_VERSION = 1(documented intypes.rsandNOTIFICATION_PAYLOAD_SCHEMA.md).ScheduledNotification.versionstamped on schedule/batch schedule.get_notification_version().ensureNotificationVersion()stamps/rejects versions inNotificationAPI.notification_version_test.rs,notification-version.test.tsTask 3 — Metadata Validation
validate_metadata(title required, length limits, custom field caps, size limit).schedule_notification/ batch creation.validateNotificationMetadata()enforces requiredsourcewhen metadata is present; nested objects rejected.metadata_validation_test.rs, unit tests inmetadata_validation.rs,metadata-validator.test.tsTask 4 — Archive Processed Notifications
ArchivedNotificationstorage and emitNotificationArchived; query viaget_archived_notification.ArchiveServiceretained; addedarchiveProcessedById()for immediate archival of terminal-state rows./api/archiveendpoints.archive_notification_test.rs, archive service unit testsTest plan
cargo test -p hello-world --lib -- channel_metadata notification_version archive_notification metadata_validationjest --testPathPattern="metadata-validator|notification-version|archive.test"update_channel_metadataas creator → confirm members unchangedversion: 1in payload; reject metadata withoutsourceNotes
featurescloses #473
closes #475
closes #476
closes #484