mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
[frontend] Restructure Frontend Sources (#634)
* 🐸restructure frontend stuff, include admin and future user panel in main repo, properly deduplicate bundles for css+js across uses * rename bundled to dist, caught by gitignore * re-include status.css for profile template * default to localhost * serve frontend panels * add todo message for abstraction * refactor oauth registration flow * oauth restructure * update footer template * change panel routes * remove superfluous css imports * write bundle to disk from test server, use forked budo-express * wrap all page content in container for robustness with addons etc injection other elements in body * update documentation, goreleaser, Dockerfile * update template meta tags * add AGPL-3.0+ license header everywhere * only attach update listener on EventEmitter * cleaner config for various frontend bundles * fix bundler script paths * Merge commit 'd191931932b9293ce1be44ed08a1e69b9fcc1e25' * fix up dockerfile, goreleaser * go mod tidy * add uglifyify * move status hide/show js to frontend bundle * fix stylesheet color( func regressions * update contributing docs for new build path * update goreleaser + docker building * resolve dependency paths properly * update package name * use api errorhandler Co-authored-by: tsmethurst <tobi.smethurst@protonmail.com>
This commit is contained in:
@ -27,7 +27,6 @@ import (
|
||||
"strings"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/api"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/config"
|
||||
"github.com/superseriousbusiness/gotosocial/internal/gtserror"
|
||||
@ -104,14 +103,10 @@ func New(processor processing.Processor) (api.ClientModule, error) {
|
||||
}
|
||||
|
||||
func (m *Module) baseHandler(c *gin.Context) {
|
||||
l := logrus.WithField("func", "BaseGETHandler")
|
||||
l.Trace("serving index html")
|
||||
|
||||
host := config.GetHost()
|
||||
instance, err := m.processor.InstanceGet(c.Request.Context(), host)
|
||||
if err != nil {
|
||||
l.Debugf("error getting instance from processor: %s", err)
|
||||
c.JSON(http.StatusInternalServerError, gin.H{"error": "internal server error"})
|
||||
api.ErrorHandler(c, gtserror.NewErrorInternalError(err), m.processor.InstanceGet)
|
||||
return
|
||||
}
|
||||
|
||||
@ -120,16 +115,66 @@ func (m *Module) baseHandler(c *gin.Context) {
|
||||
})
|
||||
}
|
||||
|
||||
// TODO: abstract the {admin, user}panel handlers in some way
|
||||
func (m *Module) AdminPanelHandler(c *gin.Context) {
|
||||
host := config.GetHost()
|
||||
instance, err := m.processor.InstanceGet(c.Request.Context(), host)
|
||||
if err != nil {
|
||||
api.ErrorHandler(c, gtserror.NewErrorInternalError(err), m.processor.InstanceGet)
|
||||
return
|
||||
}
|
||||
|
||||
c.HTML(http.StatusOK, "frontend.tmpl", gin.H{
|
||||
"instance": instance,
|
||||
"stylesheets": []string{
|
||||
"/assets/Fork-Awesome/css/fork-awesome.min.css",
|
||||
"/assets/dist/panels-admin-style.css",
|
||||
},
|
||||
"javascript": []string{
|
||||
"/assets/dist/bundle.js",
|
||||
"/assets/dist/admin-panel.js",
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func (m *Module) UserPanelHandler(c *gin.Context) {
|
||||
host := config.GetHost()
|
||||
instance, err := m.processor.InstanceGet(c.Request.Context(), host)
|
||||
if err != nil {
|
||||
api.ErrorHandler(c, gtserror.NewErrorInternalError(err), m.processor.InstanceGet)
|
||||
return
|
||||
}
|
||||
|
||||
c.HTML(http.StatusOK, "frontend.tmpl", gin.H{
|
||||
"instance": instance,
|
||||
"stylesheets": []string{
|
||||
"/assets/Fork-Awesome/css/fork-awesome.min.css",
|
||||
"/assets/dist/_colors.css",
|
||||
"/assets/dist/base.css",
|
||||
"/assets/dist/panels-user-style.css",
|
||||
},
|
||||
"javascript": []string{
|
||||
"/assets/dist/bundle.js",
|
||||
"/assets/dist/user-panel.js",
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
// Route satisfies the RESTAPIModule interface
|
||||
func (m *Module) Route(s router.Router) error {
|
||||
// serve static files from assets dir at /assets
|
||||
s.AttachStaticFS("/assets", fileSystem{http.Dir(m.assetsPath)})
|
||||
|
||||
// serve admin panel from within assets dir at /admin/
|
||||
// and redirect /admin to /admin/
|
||||
s.AttachStaticFS("/admin/", fileSystem{http.Dir(m.adminPath)})
|
||||
s.AttachHandler(http.MethodGet, "/admin", func(c *gin.Context) {
|
||||
c.Redirect(http.StatusMovedPermanently, "/admin/")
|
||||
s.AttachHandler(http.MethodGet, "/admin", m.AdminPanelHandler)
|
||||
// redirect /admin/ to /admin
|
||||
s.AttachHandler(http.MethodGet, "/admin/", func(c *gin.Context) {
|
||||
c.Redirect(http.StatusMovedPermanently, "/admin")
|
||||
})
|
||||
|
||||
s.AttachHandler(http.MethodGet, "/user", m.UserPanelHandler)
|
||||
// redirect /settings/ to /settings
|
||||
s.AttachHandler(http.MethodGet, "/user/", func(c *gin.Context) {
|
||||
c.Redirect(http.StatusMovedPermanently, "/user")
|
||||
})
|
||||
|
||||
// serve front-page
|
||||
|
Reference in New Issue
Block a user