Skip to content

Commit 21be22a

Browse files
authored
Make URLs shorter (#989)
* Add explicit parameter * Move default search parameters to a separate value * Avoid adding redundant parameters to the URL
1 parent 4e41fa5 commit 21be22a

File tree

2 files changed

+41
-16
lines changed

2 files changed

+41
-16
lines changed

frontend/src/Route.elm

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,14 +175,14 @@ fromUrl url =
175175

176176

177177
routeToString : Route -> String
178-
routeToString =
178+
routeToString route =
179179
let
180180
buildString ( path, query, searchQuery ) =
181181
Route.SearchQuery.absolute path query <|
182182
Maybe.withDefault [] <|
183183
Maybe.map List.singleton searchQuery
184184
in
185-
buildString << routeToPieces
185+
buildString (routeToPieces route)
186186

187187

188188
routeToPieces : Route -> ( List String, List QueryParameter, Maybe ( String, Route.SearchQuery.SearchQuery ) )

frontend/src/Search.elm

Lines changed: 39 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -311,31 +311,48 @@ init args defaultNixOSChannel nixosChannels maybeModel =
311311
q
312312

313313
Nothing ->
314-
args.show |> Maybe.withDefault ""
314+
args.show
315+
|> Maybe.withDefault defaultSearchArgs.query
315316
, result = getField .result RemoteData.NotAsked
316317
, show = args.show
317318
, from =
318319
args.from
319-
|> Maybe.withDefault 0
320+
|> Maybe.withDefault defaultSearchArgs.from
320321
, size =
321322
args.size
322-
|> Maybe.withDefault 50
323+
|> Maybe.withDefault defaultSearchArgs.size
323324
, buckets = args.buckets
324325
, sort =
325326
args.sort
326327
|> Maybe.andThen fromSortId
327-
|> Maybe.withDefault Relevance
328+
|> Maybe.withDefault defaultSearchArgs.sort
328329
, showSort = False
329330
, showInstallDetails = Unset
330331
, searchType =
331332
args.type_
332-
|> Maybe.withDefault Route.PackageSearch
333+
|> Maybe.withDefault defaultSearchArgs.searchType
333334
}
334335
|> ensureLoading nixosChannels
335336
, Browser.Dom.focus "search-query-input" |> Task.attempt (\_ -> NoOp)
336337
)
337338

338339

340+
defaultSearchArgs :
341+
{ query : String
342+
, from : Int
343+
, size : Int
344+
, sort : Sort
345+
, searchType : SearchType
346+
}
347+
defaultSearchArgs =
348+
{ query = ""
349+
, from = 0
350+
, size = 50
351+
, sort = Relevance
352+
, searchType = Route.PackageSearch
353+
}
354+
355+
339356
shouldLoad :
340357
Model a b
341358
-> Bool
@@ -532,21 +549,29 @@ createUrl :
532549
-> Model a b
533550
-> String
534551
createUrl toRoute model =
552+
let
553+
justIfNotDefault : t -> t -> Maybe t
554+
justIfNotDefault fromModel fromDefault =
555+
if fromModel == fromDefault then
556+
Nothing
557+
558+
else
559+
Just fromModel
560+
in
535561
Route.routeToString <|
536562
toRoute
537563
{ channel = Just model.channel
538564
, query =
539-
if String.isEmpty model.query then
540-
Nothing
541-
542-
else
543-
Just (Route.SearchQuery.toSearchQuery model.query)
565+
justIfNotDefault model.query defaultSearchArgs.query
566+
|> Maybe.map Route.SearchQuery.toSearchQuery
544567
, show = model.show
545-
, from = Just model.from
546-
, size = Just model.size
568+
, from = justIfNotDefault model.from defaultSearchArgs.from
569+
, size = justIfNotDefault model.size defaultSearchArgs.size
547570
, buckets = model.buckets
548-
, sort = Just <| toSortId model.sort
549-
, type_ = Just model.searchType
571+
, sort =
572+
justIfNotDefault model.sort defaultSearchArgs.sort
573+
|> Maybe.map toSortId
574+
, type_ = justIfNotDefault model.searchType defaultSearchArgs.searchType
550575
}
551576

552577

0 commit comments

Comments
 (0)