feat: add deep link customization #169
Reference in New Issue
Block a user
Delete Branch "(deleted):dev"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Implements deep-link customization support for community onboarding and sharing workflows.
This PR adds a dedicated intent flow so organizers can share links that preconfigure Flotilla while users still explicitly review and approve requested changes.
Addresses #105.
What’s Included
New Flow
/intentroute as a deep-link entry point.IntentHandlermodal to parse query params and present a confirmation summary before applying.ThreadCreate(initialContent) for share links.UX / Error Handling (Mentor-aligned)
Updated behavior for relay failures (blocked/rate-limited/network issues):
This matches the requested behavior: show errors and allow users to proceed even if some relays fail.
Dialog/Navigation Fixes
Dialogclose button now usesonClosehandler (instead of always clearing hash modals)./homeon close.Scroll/Layout Fixes
Stability Fixes
each_key_duplicate) seen in People-related view after follow updates by deduplicating pubkeys before keyed rendering:Files Changed (high level)
src/routes/intent/+page.sveltesrc/app/components/IntentHandler.sveltesrc/app/components/ThreadCreate.sveltesrc/lib/components/Dialog.sveltesrc/routes/join/+page.sveltesrc/routes/settings/+layout.sveltesrc/app/core/state.tssrc/routes/people/+page.svelteValidation
Test Links Used
http://localhost:1847/intent?theme=lighthttp://localhost:1847/intent?add_relay=wss://relay.damus.iohttp://localhost:1847/intent?add_blossom=https://blossom.example.comhttp://localhost:1847/intent?add_follow=79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798http://localhost:1847/intent?profile_name=TestName&profile_about=Hi!%20This%20is%20test%20about&profile_nip05=testxyz@gmail.com&profile_lud16=test@getalby.comhttp://localhost:1847/intent?join=wss://bucket.coracle.social&join=wss://inner.sebastix.socialhttp://localhost:1847/intent?share_url=wss://flotilla.space&share_h=general&share_text=Hello%20from%20deep%20linkhttp://localhost:1847/intent?theme=dark&add_relay=wss://relay.damus.io&add_blossom=https://blossom.example.com&add_follow=79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798&profile_name=Organizer%20Mode&profile_about=Customized%20via%20deep%20link&profile_nip05=organizer@example.com&profile_lud16=organizer@getalby.com&join=wss://flotilla.space&share_url=wss://flotilla.space&share_h=general&share_text=Hello%20from%20organizer%20modeVideos
Theme: Changing to Light Theme
Adding Relay to User Settings
Adding Blossom Server
Add Follows
Update Profile Metadata
Joining Communities
Opening New Post with Prefilled Content
Hi @hodlbod. I've made all the necessary changes and put my work of #168 with fixing the merge conflicts in this PR for keeping this clean and tidy. Kindly review the PR :)
This looks good structurally, but I think we need to do some design work on the dialog, since users aren't going to know what a lot of this means. Maybe a multi-dialog process with UI tailored to the customization being made would be the right approach. I'll mention this in the design room and see if anyone wants to pitch in.
@@ -86,4 +77,0 @@const onChange = (json: object) => {content = json}Looks like a badly resolve merge conflict in this file
I restored the draft-state flow in
ThreadCreate.svelte, includingcontentstate +onChange, and kept the deep-link prefill behavior. The component now preserves drafts correctly and clears them on successful submit.@@ -21,2 +20,3 @@pubkeys = Array.from(new Set($profileSearch.searchValues(term)))} else {pubkeys = $bootstrapPubkeyspubkeys = Array.from(new Set($bootstrapPubkeys))These shouldn't be necessary, were you seeing duplicate values?
Yes, I was seeing duplicate values when the add-follow deep link was triggered multiple times for the same pubkey. I agree this dedupe does not belong in
+page.svelte, so I removed the extraSet(....)there and kept deduping in the follow update flow instead.@@ -68,3 +68,3 @@</SecondaryNav><Page><Page class="scroll-container overflow-y-auto overflow-x-hidden">I think this is a badly resolved conflict.
Agreed. Since the scroll wasn't working in
setings/, I did that. I reverted+layout.svelteand fixed scrolling centrally inPage.svelte.@hodlbod I've made all the necessary changes. Kindly review the PR :)
Hi @bhavishy2801, it looks like there’s a merge conflict again with
Page.svelte. Could you please rebase it following the steps mentioned here when you get a chance:#168 (comment)
Thanks!
@bhavishy2801 I'm also going to wait until a design pass is done before merging this. See the issue for details.
Pull request closed