aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/reading/Route.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/reading/Route.scala')
-rw-r--r--src/main/scala/reading/Route.scala9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/main/scala/reading/Route.scala b/src/main/scala/reading/Route.scala
index f098468..89c34cf 100644
--- a/src/main/scala/reading/Route.scala
+++ b/src/main/scala/reading/Route.scala
@@ -11,7 +11,7 @@ import reading.models.{ Filter, FilterKind, Book, Books => BooksModel }
sealed trait Route
object Route {
- case class Books(filters: Seq[Filter] = Nil, detail: Option[Book] = None) extends Route
+ case class Books(filters: Set[Filter] = Set(), detail: Option[Book] = None) extends Route
val current: Var[Route] = Var(parse(window.location.hash))
@@ -35,7 +35,7 @@ object Route {
} yield filter
case _ =>
None
- }
+ }.toSet
val detail = params.collectFirst {
case Param("detail", title) => BooksModel().find(_.title == title)
}.flatten
@@ -56,7 +56,7 @@ object Route {
def url(route: Route): String = {
val hash = route match {
case Books(filters, detail) => {
- val filterParams = filters.map(filter => (filter.kind.toString, filter.nonFormattedName))
+ val filterParams = filters.toSeq.map(filter => (filter.kind.toString, filter.nonFormattedName))
val detailParams = detail.map(book => ("detail", book.title))
s"/books${Param.format(filterParams ++ detailParams)}"
}
@@ -70,9 +70,8 @@ object Route {
current() = route
}
- def push(route: Route): Unit = {
+ def push(route: Route): Unit =
window.history.pushState(null, "", url(route));
- }
}
object Param {