diff --git a/cmd/radar/main.go b/cmd/radar/main.go index 5598e1f..30866fe 100644 --- a/cmd/radar/main.go +++ b/cmd/radar/main.go @@ -11,9 +11,9 @@ import ( "github.com/labstack/echo/v4" "github.com/sonr-io/motr/middleware/database" "github.com/sonr-io/motr/middleware/kvstore" - "github.com/sonr-io/motr/middleware/marketapi" "github.com/sonr-io/motr/middleware/session" - "github.com/sonr-io/motr/routes" + "github.com/sonr-io/motr/middleware/sonrapi" + "github.com/sonr-io/motr/middleware/webauthn" "github.com/syumai/workers" "github.com/syumai/workers/cloudflare/cron" @@ -27,9 +27,15 @@ import ( // Setup the HTTP handler func loadHandler() http.Handler { e := echo.New() - e.Use(session.Middleware(), database.Middleware(), kvstore.Middleware(), marketapi.Middleware()) - routes.SetupViews(e) - routes.SetupPartials(e) + e.Use( + session.Middleware(), + database.Middleware(), + kvstore.Middleware(), + sonrapi.Middleware(), + webauthn.Middleware(), + ) + setupViews(e) + setupPartials(e) return e } @@ -55,8 +61,8 @@ func main() { t := loadTask() // Configure Worker - workers.ServeNonBlock(e) cron.ScheduleTaskNonBlock(t) + workers.ServeNonBlock(e) workers.Ready() // Block until handler/task is done diff --git a/cmd/radar/routes.go b/cmd/radar/routes.go new file mode 100644 index 0000000..bb87be3 --- /dev/null +++ b/cmd/radar/routes.go @@ -0,0 +1,32 @@ +//go:build js && wasm +// +build js,wasm + +package main + +import ( + "github.com/labstack/echo/v4" + "github.com/sonr-io/motr/handlers" + "github.com/sonr-io/motr/internal/ui/home" + "github.com/sonr-io/motr/internal/ui/login" + "github.com/sonr-io/motr/internal/ui/register" + "github.com/sonr-io/motr/middleware/render" +) + +// ╭────────────────────────────────────────────────╮ +// │ HTTP Routes │ +// ╰────────────────────────────────────────────────╯ + +func setupViews(e *echo.Echo) { + e.GET("/", render.Page(home.HomeView())) + e.GET("/login", render.Page(login.LoginView())) + e.GET("/register", render.Page(register.RegisterView())) +} + +func setupPartials(e *echo.Echo) { + e.POST("/login/:handle/check", handlers.HandleLoginCheck) + e.POST("/login/:handle/finish", handlers.HandleLoginFinish) + e.POST("/register/:handle", handlers.HandleRegisterStart) + e.POST("/register/:handle/check", handlers.HandleRegisterCheck) + e.POST("/register/:handle/finish", handlers.HandleRegisterFinish) + e.POST("/status", handlers.HandleStatusCheck) +} diff --git a/cmd/worker/main.go b/cmd/worker/main.go index b0d594a..30866fe 100644 --- a/cmd/worker/main.go +++ b/cmd/worker/main.go @@ -14,7 +14,6 @@ import ( "github.com/sonr-io/motr/middleware/session" "github.com/sonr-io/motr/middleware/sonrapi" "github.com/sonr-io/motr/middleware/webauthn" - "github.com/sonr-io/motr/routes" "github.com/syumai/workers" "github.com/syumai/workers/cloudflare/cron" @@ -28,9 +27,15 @@ import ( // Setup the HTTP handler func loadHandler() http.Handler { e := echo.New() - e.Use(session.Middleware(), database.Middleware(), kvstore.Middleware(), sonrapi.Middleware(), webauthn.Middleware()) - routes.SetupViews(e) - routes.SetupPartials(e) + e.Use( + session.Middleware(), + database.Middleware(), + kvstore.Middleware(), + sonrapi.Middleware(), + webauthn.Middleware(), + ) + setupViews(e) + setupPartials(e) return e } @@ -56,8 +61,8 @@ func main() { t := loadTask() // Configure Worker - workers.ServeNonBlock(e) cron.ScheduleTaskNonBlock(t) + workers.ServeNonBlock(e) workers.Ready() // Block until handler/task is done diff --git a/cmd/worker/routes.go b/cmd/worker/routes.go new file mode 100644 index 0000000..bb87be3 --- /dev/null +++ b/cmd/worker/routes.go @@ -0,0 +1,32 @@ +//go:build js && wasm +// +build js,wasm + +package main + +import ( + "github.com/labstack/echo/v4" + "github.com/sonr-io/motr/handlers" + "github.com/sonr-io/motr/internal/ui/home" + "github.com/sonr-io/motr/internal/ui/login" + "github.com/sonr-io/motr/internal/ui/register" + "github.com/sonr-io/motr/middleware/render" +) + +// ╭────────────────────────────────────────────────╮ +// │ HTTP Routes │ +// ╰────────────────────────────────────────────────╯ + +func setupViews(e *echo.Echo) { + e.GET("/", render.Page(home.HomeView())) + e.GET("/login", render.Page(login.LoginView())) + e.GET("/register", render.Page(register.RegisterView())) +} + +func setupPartials(e *echo.Echo) { + e.POST("/login/:handle/check", handlers.HandleLoginCheck) + e.POST("/login/:handle/finish", handlers.HandleLoginFinish) + e.POST("/register/:handle", handlers.HandleRegisterStart) + e.POST("/register/:handle/check", handlers.HandleRegisterCheck) + e.POST("/register/:handle/finish", handlers.HandleRegisterFinish) + e.POST("/status", handlers.HandleStatusCheck) +} diff --git a/handlers/auth_handler.go b/handlers/auth_handler.go new file mode 100644 index 0000000..7244507 --- /dev/null +++ b/handlers/auth_handler.go @@ -0,0 +1,40 @@ +package handlers + +import ( + "github.com/labstack/echo/v4" + "github.com/sonr-io/motr/internal/ui/login" + "github.com/sonr-io/motr/internal/ui/register" + "github.com/sonr-io/motr/middleware/render" +) + +func HandleLoginCheck(c echo.Context) error { + return render.Component(c, login.LoginView()) +} + +func HandleLoginInitial(c echo.Context) error { + return render.Component(c, login.LoginView()) +} + +func HandleLoginFinish(c echo.Context) error { + return render.Component(c, login.LoginView()) +} + +func HandleLoginStart(c echo.Context) error { + return render.Component(c, login.LoginView()) +} + +func HandleRegisterInitial(c echo.Context) error { + return render.Component(c, register.RegisterView()) +} + +func HandleRegisterCheck(c echo.Context) error { + return render.Component(c, register.RegisterView()) +} + +func HandleRegisterFinish(c echo.Context) error { + return render.Component(c, register.RegisterView()) +} + +func HandleRegisterStart(c echo.Context) error { + return render.Component(c, register.RegisterView()) +} diff --git a/handlers/error_handler.go b/handlers/error_handler.go deleted file mode 100644 index 7c8f3f1..0000000 --- a/handlers/error_handler.go +++ /dev/null @@ -1,11 +0,0 @@ -package handlers - -import ( - "github.com/labstack/echo/v4" - "github.com/sonr-io/motr/internal/ui/home" - "github.com/sonr-io/motr/middleware/render" -) - -func HandleItemNotFound(c echo.Context) error { - return render.View(c, home.HomeView()) -} diff --git a/handlers/form_handler.go b/handlers/form_handler.go new file mode 100644 index 0000000..9059290 --- /dev/null +++ b/handlers/form_handler.go @@ -0,0 +1,4 @@ +//go:build js && wasm +// +build js,wasm + +package handlers diff --git a/handlers/index_handler.go b/handlers/index_handler.go deleted file mode 100644 index cdf2c0c..0000000 --- a/handlers/index_handler.go +++ /dev/null @@ -1,15 +0,0 @@ -package handlers - -import ( - "github.com/labstack/echo/v4" - "github.com/sonr-io/motr/internal/ui/home" - "github.com/sonr-io/motr/middleware/render" -) - -func HandleDefaultIndex(c echo.Context) error { - return render.View(c, home.HomeView()) -} - -func HandleDefaultValid(c echo.Context) error { - return render.View(c, home.HomeView()) -} diff --git a/handlers/login_handler.go b/handlers/login_handler.go deleted file mode 100644 index a4144f5..0000000 --- a/handlers/login_handler.go +++ /dev/null @@ -1,25 +0,0 @@ -package handlers - -import ( - "github.com/labstack/echo/v4" - "github.com/sonr-io/motr/internal/ui/login" - "github.com/sonr-io/motr/middleware/render" -) - - - -func HandleLoginCheck(c echo.Context) error { - return render.View(c, login.LoginView()) -} - -func HandleLoginInitial(c echo.Context) error { - return render.View(c, login.LoginView()) -} - -func HandleLoginFinish(c echo.Context) error { - return render.View(c, login.LoginView()) -} - -func HandleLoginStart(c echo.Context) error { - return render.View(c, login.LoginView()) -} diff --git a/handlers/page_handler.go b/handlers/page_handler.go new file mode 100644 index 0000000..c2e20e1 --- /dev/null +++ b/handlers/page_handler.go @@ -0,0 +1,21 @@ +package handlers + +import ( + "github.com/labstack/echo/v4" + "github.com/sonr-io/motr/internal/ui/home" + "github.com/sonr-io/motr/internal/ui/login" + "github.com/sonr-io/motr/internal/ui/register" + "github.com/sonr-io/motr/middleware/render" +) + +func RenderHomePage(c echo.Context) error { + return render.Component(c, home.HomeView()) +} + +func RenderLoginPage(c echo.Context) error { + return render.Component(c, login.LoginView()) +} + +func RenderRegisterPage(c echo.Context) error { + return render.Component(c, register.RegisterView()) +} diff --git a/handlers/register_handler.go b/handlers/register_handler.go deleted file mode 100644 index a420ab6..0000000 --- a/handlers/register_handler.go +++ /dev/null @@ -1,24 +0,0 @@ -package handlers - -import ( - "github.com/labstack/echo/v4" - "github.com/sonr-io/motr/internal/ui/register" - "github.com/sonr-io/motr/middleware/render" -) - - -func HandleRegisterInitial(c echo.Context) error { - return render.View(c, register.RegisterView()) -} - -func HandleRegisterCheck(c echo.Context) error { - return render.View(c, register.RegisterView()) -} - -func HandleRegisterFinish(c echo.Context) error { - return render.View(c, register.RegisterView()) -} - -func HandleRegisterStart(c echo.Context) error { - return render.View(c, register.RegisterView()) -} diff --git a/middleware/render/render.go b/middleware/render/render.go index f8710d1..4e742c2 100644 --- a/middleware/render/render.go +++ b/middleware/render/render.go @@ -13,7 +13,13 @@ type ( EchoPartialView func(c echo.Context) templ.Component ) -func View(c echo.Context, cmp templ.Component) error { +func Page(cmp templ.Component) echo.HandlerFunc { + return func(c echo.Context) error { + return Component(c, cmp) + } +} + +func Component(c echo.Context, cmp templ.Component) error { // Create a buffer to store the rendered HTML buf := &bytes.Buffer{} // Render the component to the buffer diff --git a/routes/routes.go b/routes/routes.go deleted file mode 100644 index 04963c7..0000000 --- a/routes/routes.go +++ /dev/null @@ -1,24 +0,0 @@ -//go:build js && wasm -// +build js,wasm - -package routes - -import ( - "github.com/labstack/echo/v4" - "github.com/sonr-io/motr/handlers" -) - -func SetupViews(e *echo.Echo) { - e.GET("/", handlers.HandleDefaultIndex) - e.GET("/login", handlers.HandleLoginInitial) - e.GET("/register", handlers.HandleRegisterInitial) -} - -func SetupPartials(e *echo.Echo) { - e.POST("/login/:handle/check", handlers.HandleLoginCheck) - e.POST("/login/:handle/finish", handlers.HandleLoginFinish) - e.POST("/register/:handle", handlers.HandleRegisterStart) - e.POST("/register/:handle/check", handlers.HandleRegisterCheck) - e.POST("/register/:handle/finish", handlers.HandleRegisterFinish) - e.POST("/status", handlers.HandleStatusCheck) -}