diff options
Diffstat (limited to 'src/main/scala/reading/Route.scala')
-rw-r--r-- | src/main/scala/reading/Route.scala | 9 |
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 { |