diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala index e2232ae..27ac1e3 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala @@ -28,7 +28,6 @@ AirstreamError.registerUnhandledErrorCallback(err => router.forcePage( Page.UnhandledError( - "", // TODO: basePath Some(err.getClass.getName), // TODO: Fill only in dev mode Some(err.getMessage) ) @@ -58,12 +57,10 @@ ) ) .collectStatic(Page.Dashboard)(pages.DashboardPage) - .collect[Page.NotFound](pg => - pages.errors.NotFoundPage(pg.url, pg.baseUrl) - ) + .collect[Page.NotFound](pg => pages.errors.NotFoundPage(pg.url)) .collect[Page.UnhandledError](pg => pages.errors - .UnhandledErrorPage(pg.baseUrl, pg.errorName, pg.errorMessage) + .UnhandledErrorPage(pg.errorName, pg.errorMessage) ) .collectStatic(Page.Directory)( pages.DirectoryPage( diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala index e2232ae..27ac1e3 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala @@ -28,7 +28,6 @@ AirstreamError.registerUnhandledErrorCallback(err => router.forcePage( Page.UnhandledError( - "", // TODO: basePath Some(err.getClass.getName), // TODO: Fill only in dev mode Some(err.getMessage) ) @@ -58,12 +57,10 @@ ) ) .collectStatic(Page.Dashboard)(pages.DashboardPage) - .collect[Page.NotFound](pg => - pages.errors.NotFoundPage(pg.url, pg.baseUrl) - ) + .collect[Page.NotFound](pg => pages.errors.NotFoundPage(pg.url)) .collect[Page.UnhandledError](pg => pages.errors - .UnhandledErrorPage(pg.baseUrl, pg.errorName, pg.errorMessage) + .UnhandledErrorPage(pg.errorName, pg.errorMessage) ) .collectStatic(Page.Directory)( pages.DirectoryPage( diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Routes.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Routes.scala index 267d709..bb74946 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Routes.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Routes.scala @@ -14,9 +14,8 @@ case object Directory extends Page("Directory") case object Dashboard extends Page("Dashboard") case class Detail(osobniCislo: String) extends Page("Detail") - case class NotFound(url: String, baseUrl: String) extends Page("404") + case class NotFound(url: String) extends Page("404") case class UnhandledError( - baseUrl: String, errorName: Option[String], errorMessage: Option[String] ) extends Page("Unexpected error") @@ -49,7 +48,7 @@ deserializePage = _.fromJson[Page] .fold(s => throw IllegalStateException(s), identity), getPageTitle = _.title, - routeFallback = url => Page.NotFound(url, base), + routeFallback = url => Page.NotFound(url), deserializeFallback = _ => Page.Dashboard )( $popStateEvent = windowEvents.onPopState, diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala index e2232ae..27ac1e3 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala @@ -28,7 +28,6 @@ AirstreamError.registerUnhandledErrorCallback(err => router.forcePage( Page.UnhandledError( - "", // TODO: basePath Some(err.getClass.getName), // TODO: Fill only in dev mode Some(err.getMessage) ) @@ -58,12 +57,10 @@ ) ) .collectStatic(Page.Dashboard)(pages.DashboardPage) - .collect[Page.NotFound](pg => - pages.errors.NotFoundPage(pg.url, pg.baseUrl) - ) + .collect[Page.NotFound](pg => pages.errors.NotFoundPage(pg.url)) .collect[Page.UnhandledError](pg => pages.errors - .UnhandledErrorPage(pg.baseUrl, pg.errorName, pg.errorMessage) + .UnhandledErrorPage(pg.errorName, pg.errorMessage) ) .collectStatic(Page.Directory)( pages.DirectoryPage( diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Routes.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Routes.scala index 267d709..bb74946 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Routes.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Routes.scala @@ -14,9 +14,8 @@ case object Directory extends Page("Directory") case object Dashboard extends Page("Dashboard") case class Detail(osobniCislo: String) extends Page("Detail") - case class NotFound(url: String, baseUrl: String) extends Page("404") + case class NotFound(url: String) extends Page("404") case class UnhandledError( - baseUrl: String, errorName: Option[String], errorMessage: Option[String] ) extends Page("Unexpected error") @@ -49,7 +48,7 @@ deserializePage = _.fromJson[Page] .fold(s => throw IllegalStateException(s), identity), getPageTitle = _.title, - routeFallback = url => Page.NotFound(url, base), + routeFallback = url => Page.NotFound(url), deserializeFallback = _ => Page.Dashboard )( $popStateEvent = windowEvents.onPopState, diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/errors/ErrorPage.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/errors/ErrorPage.scala index b8eb359..f0cbc90 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/errors/ErrorPage.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/errors/ErrorPage.scala @@ -2,13 +2,15 @@ import com.raquo.domtypes.generic.codecs.StringAsIsCodec import com.raquo.laminar.api.L.{*, given} +import com.raquo.waypoint.Router +import cz.e_bs.cmi.mdr.pdb.app.Page +import cz.e_bs.cmi.mdr.pdb.app.Routes.navigateTo def ErrorPage( - basePath: String, errorName: String, title: String, subTitle: String -): HtmlElement = +)(using router: Router[Page]): HtmlElement = div( cls := "min-h-full pt-16 pb-12 flex flex-col bg-white", main( @@ -48,7 +50,8 @@ div( cls := "mt-6", a( - href := basePath, + href := router.absoluteUrlForPage(Page.Dashboard), + navigateTo(Page.Dashboard), cls := "text-base font-medium text-indigo-600 hover:text-indigo-500", """Go back home""" ) diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala index e2232ae..27ac1e3 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala @@ -28,7 +28,6 @@ AirstreamError.registerUnhandledErrorCallback(err => router.forcePage( Page.UnhandledError( - "", // TODO: basePath Some(err.getClass.getName), // TODO: Fill only in dev mode Some(err.getMessage) ) @@ -58,12 +57,10 @@ ) ) .collectStatic(Page.Dashboard)(pages.DashboardPage) - .collect[Page.NotFound](pg => - pages.errors.NotFoundPage(pg.url, pg.baseUrl) - ) + .collect[Page.NotFound](pg => pages.errors.NotFoundPage(pg.url)) .collect[Page.UnhandledError](pg => pages.errors - .UnhandledErrorPage(pg.baseUrl, pg.errorName, pg.errorMessage) + .UnhandledErrorPage(pg.errorName, pg.errorMessage) ) .collectStatic(Page.Directory)( pages.DirectoryPage( diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Routes.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Routes.scala index 267d709..bb74946 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Routes.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Routes.scala @@ -14,9 +14,8 @@ case object Directory extends Page("Directory") case object Dashboard extends Page("Dashboard") case class Detail(osobniCislo: String) extends Page("Detail") - case class NotFound(url: String, baseUrl: String) extends Page("404") + case class NotFound(url: String) extends Page("404") case class UnhandledError( - baseUrl: String, errorName: Option[String], errorMessage: Option[String] ) extends Page("Unexpected error") @@ -49,7 +48,7 @@ deserializePage = _.fromJson[Page] .fold(s => throw IllegalStateException(s), identity), getPageTitle = _.title, - routeFallback = url => Page.NotFound(url, base), + routeFallback = url => Page.NotFound(url), deserializeFallback = _ => Page.Dashboard )( $popStateEvent = windowEvents.onPopState, diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/errors/ErrorPage.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/errors/ErrorPage.scala index b8eb359..f0cbc90 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/errors/ErrorPage.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/errors/ErrorPage.scala @@ -2,13 +2,15 @@ import com.raquo.domtypes.generic.codecs.StringAsIsCodec import com.raquo.laminar.api.L.{*, given} +import com.raquo.waypoint.Router +import cz.e_bs.cmi.mdr.pdb.app.Page +import cz.e_bs.cmi.mdr.pdb.app.Routes.navigateTo def ErrorPage( - basePath: String, errorName: String, title: String, subTitle: String -): HtmlElement = +)(using router: Router[Page]): HtmlElement = div( cls := "min-h-full pt-16 pb-12 flex flex-col bg-white", main( @@ -48,7 +50,8 @@ div( cls := "mt-6", a( - href := basePath, + href := router.absoluteUrlForPage(Page.Dashboard), + navigateTo(Page.Dashboard), cls := "text-base font-medium text-indigo-600 hover:text-indigo-500", """Go back home""" ) diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/errors/NotFoundPage.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/errors/NotFoundPage.scala index afa6482..901518f 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/errors/NotFoundPage.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/errors/NotFoundPage.scala @@ -2,10 +2,13 @@ import com.raquo.domtypes.generic.codecs.StringAsIsCodec import com.raquo.laminar.api.L.{*, given} +import com.raquo.waypoint.Router +import cz.e_bs.cmi.mdr.pdb.app.Page -def NotFoundPage(url: String, basePath: String): HtmlElement = +def NotFoundPage(url: String)(using + router: Router[Page] +): HtmlElement = ErrorPage( - basePath, "404 error", "Page not found.", s"Sorry, but page $url doesn't exist." diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala index e2232ae..27ac1e3 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Main.scala @@ -28,7 +28,6 @@ AirstreamError.registerUnhandledErrorCallback(err => router.forcePage( Page.UnhandledError( - "", // TODO: basePath Some(err.getClass.getName), // TODO: Fill only in dev mode Some(err.getMessage) ) @@ -58,12 +57,10 @@ ) ) .collectStatic(Page.Dashboard)(pages.DashboardPage) - .collect[Page.NotFound](pg => - pages.errors.NotFoundPage(pg.url, pg.baseUrl) - ) + .collect[Page.NotFound](pg => pages.errors.NotFoundPage(pg.url)) .collect[Page.UnhandledError](pg => pages.errors - .UnhandledErrorPage(pg.baseUrl, pg.errorName, pg.errorMessage) + .UnhandledErrorPage(pg.errorName, pg.errorMessage) ) .collectStatic(Page.Directory)( pages.DirectoryPage( diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Routes.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Routes.scala index 267d709..bb74946 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Routes.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/Routes.scala @@ -14,9 +14,8 @@ case object Directory extends Page("Directory") case object Dashboard extends Page("Dashboard") case class Detail(osobniCislo: String) extends Page("Detail") - case class NotFound(url: String, baseUrl: String) extends Page("404") + case class NotFound(url: String) extends Page("404") case class UnhandledError( - baseUrl: String, errorName: Option[String], errorMessage: Option[String] ) extends Page("Unexpected error") @@ -49,7 +48,7 @@ deserializePage = _.fromJson[Page] .fold(s => throw IllegalStateException(s), identity), getPageTitle = _.title, - routeFallback = url => Page.NotFound(url, base), + routeFallback = url => Page.NotFound(url), deserializeFallback = _ => Page.Dashboard )( $popStateEvent = windowEvents.onPopState, diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/errors/ErrorPage.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/errors/ErrorPage.scala index b8eb359..f0cbc90 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/errors/ErrorPage.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/errors/ErrorPage.scala @@ -2,13 +2,15 @@ import com.raquo.domtypes.generic.codecs.StringAsIsCodec import com.raquo.laminar.api.L.{*, given} +import com.raquo.waypoint.Router +import cz.e_bs.cmi.mdr.pdb.app.Page +import cz.e_bs.cmi.mdr.pdb.app.Routes.navigateTo def ErrorPage( - basePath: String, errorName: String, title: String, subTitle: String -): HtmlElement = +)(using router: Router[Page]): HtmlElement = div( cls := "min-h-full pt-16 pb-12 flex flex-col bg-white", main( @@ -48,7 +50,8 @@ div( cls := "mt-6", a( - href := basePath, + href := router.absoluteUrlForPage(Page.Dashboard), + navigateTo(Page.Dashboard), cls := "text-base font-medium text-indigo-600 hover:text-indigo-500", """Go back home""" ) diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/errors/NotFoundPage.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/errors/NotFoundPage.scala index afa6482..901518f 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/errors/NotFoundPage.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/errors/NotFoundPage.scala @@ -2,10 +2,13 @@ import com.raquo.domtypes.generic.codecs.StringAsIsCodec import com.raquo.laminar.api.L.{*, given} +import com.raquo.waypoint.Router +import cz.e_bs.cmi.mdr.pdb.app.Page -def NotFoundPage(url: String, basePath: String): HtmlElement = +def NotFoundPage(url: String)(using + router: Router[Page] +): HtmlElement = ErrorPage( - basePath, "404 error", "Page not found.", s"Sorry, but page $url doesn't exist." diff --git a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/errors/UnhandledErrorPage.scala b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/errors/UnhandledErrorPage.scala index f4b22b6..cb5d80f 100644 --- a/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/errors/UnhandledErrorPage.scala +++ b/app/src/main/scala/cz/e_bs/cmi/mdr/pdb/app/pages/errors/UnhandledErrorPage.scala @@ -2,14 +2,14 @@ import com.raquo.domtypes.generic.codecs.StringAsIsCodec import com.raquo.laminar.api.L.{*, given} +import com.raquo.waypoint.Router +import cz.e_bs.cmi.mdr.pdb.app.Page def UnhandledErrorPage( - basePath: String, errorName: Option[String], errorMessage: Option[String] -): HtmlElement = +)(using router: Router[Page]): HtmlElement = ErrorPage( - basePath, "Unexpected error occurred", errorName.getOrElse("Uh oh!"), // TODO: translations, better text than uh oh errorMessage.getOrElse("This wasn't supposed to happen! Please try again.")