Chapter: Feature 2: Active search
Lecture: Concept: Supporting deep linking
0:00 You probably heard me make a couple of disparaging remarks to web apps that don't support
0:05 URLs. I mean how insane is that?
0:07 I have a web app, and I can't link to things in it.
0:10 And yet so many of these single page apps created with Vue or React or other
0:15 frameworks, Angular and so on. They get themselves started and then you have to just
0:25 support deep linking that is being able to link to a current state of the application
0:30 somewhere that's not just the homepage.
0:33 Yes, I know that they can do it, but often they don't.
0:36 And we also saw the same thing for htmx.
0:39 We could have supported deep linking but our first pass at it just didn't, right? and
0:44 we could have stopped there. But we decided no,
0:46 actually, let's do a little bit of extra work.
0:49 If there is a request from htmx,
0:51 we'll do one thing, but we're going to actually do all of the work necessary if
0:55 a full deep link comes in to render it.
0:58 So if there's just a request for part of the results,
1:01 this is the active search in the typing in the input box.
1:04 We're going to run this branch of code, and we're going to return the partial search
1:07 HTML result passing the data that we got from the search.
1:12 If it's a full page request,
1:13 we're going to return this and the trick that really made this work was the
1:18 PartialSearchViewModel. We just call it SearchViewModel in our actual code we
1:21 wrote. That always does the search if there's search text present,
1:26 so it doesn't care how it got the search text.
1:29 It just runs the search if it has something to search for.
1:32 So it's always going to work regardless of which scenario we go down here.
1:36 And the other is our video/search/html.
1:39 That had to assume there might be search results,
1:42 set the value of the input box and then render them at the bottom, again using
1:46 exactly the same partial idea that we have right here.
1:49 So there was very little work to do it,
1:51 but if you don't take a few steps to make it happen,
1:54 it just won't happen. Alright,
1:55 add deep leaking support to your apps, it's easy and your users will thank you.