Feature/group treasury files push#270
Merged
codebestia merged 2 commits intoJun 28, 2026
Merged
Conversation
|
@jahrulezfrancis 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! 🚀 |
codebestia
approved these changes
Jun 28, 2026
codebestia
left a comment
Owner
There was a problem hiding this comment.
LGTM!
Thank you for your contribution.
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.
Description
This PR introduces the foundational backend infrastructure for three major features: Group Treasury Management (Soroban), Secure Media/File Sharing, and Push Notifications.
Background & Context
stellarListenerto track proposal thresholds, approval/rejection counts, and expiration ledgers directly tied toonChainId. We've also upgraded theGroupTreasuryContractitself to support iterating and filtering pending proposals natively.GET /files/:fileId, we can enforce conversational membership checks before issuing short-lived (5-minute) S3 presigned URLs, keeping private data strictly within the intended group.Technical Changes:
pushSubscriptionstable and completely updatedtreasuryProposalsto accurately track on-chain state, proposals, thresholds, and expiration ledgers based on the requested columns.list_proposalsandget_pending_proposalsto the RustGroupTreasuryContractto safely iterate and fetch stored proposals directly from the contract instance storage.GET /files/:fileIdthat issues a presigned S3 URL valid for 5 minutes. It strictly enforces access control by querying the database to validate that the requesting user is an active member of the conversation where the file was originally shared.POST /push/subscriptionsandDELETE /push/subscriptionsto register and unregister device-bound push subscriptions idempotently.stellarListener.tsto correctly map on-chain treasury events to the newly structuredtreasuryProposalstable viaonChainId.Issue numbers
Closes #128
Closes #125
Closes #229
Closes #235
Testing
GroupTreasuryContractread-only functions.stellarListenersyncing logic.tsc,vitest,eslint,prettier) passed cleanly against the backend implementation.Type of change
Checklist