Getting Started
- Fork the repository: https://github.com/JointSave-org/Joint_Save
- Clone your fork:
git clone https://github.com/<your-username>/Joint_Save.git
cd Joint_Save
- Create a new branch:
git checkout -b fix/target-pool-deadline-ledger-sequence
Overview
TargetPool::initialize validates deadline as a ledger sequence number (u32), but the frontend form likely collects a date value (Unix timestamp). This mismatch sets deadlines incorrectly.
Steps to Reproduce
- Create a Target Pool with a 30-day deadline using the date picker
- Inspect the transaction on Stellar Expert
- Compare
deadline param to current ledger sequence
Required Fix
Frontend (target-form.tsx + useJointSaveContracts.ts)
- Replace date picker with a duration input (days/weeks/months)
- Add helper:
function daysToLedgers(days: number): number {
return Math.floor(days * 24 * 60 * 60 / 6); // ~6s per ledger
}
- Fetch current ledger sequence from RPC, add offset before submitting
Display
- Show "Deadline: ~30 days (ledger ~XXXXXXX)" in form
group-details.tsx: convert stored ledger sequence to estimated date
Acceptance Criteria
Getting Started
Overview
TargetPool::initializevalidatesdeadlineas a ledger sequence number (u32), but the frontend form likely collects a date value (Unix timestamp). This mismatch sets deadlines incorrectly.Steps to Reproduce
deadlineparam to current ledger sequenceRequired Fix
Frontend (
target-form.tsx+useJointSaveContracts.ts)Display
group-details.tsx: convert stored ledger sequence to estimated dateAcceptance Criteria
refundremains callable after deadline passes