Basic browser extension support
This commit is contained in:
parent
932ed7c165
commit
7e92409758
@ -21,7 +21,8 @@
|
|||||||
"video",
|
"video",
|
||||||
"loading",
|
"loading",
|
||||||
"fade",
|
"fade",
|
||||||
"mobile"
|
"mobile",
|
||||||
|
"extension"
|
||||||
],
|
],
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"main": "main"
|
"main": "main"
|
||||||
|
@ -9,5 +9,5 @@ import (
|
|||||||
// Render layout.
|
// Render layout.
|
||||||
func Render(ctx *aero.Context, content string) string {
|
func Render(ctx *aero.Context, content string) string {
|
||||||
user := utils.GetUser(ctx)
|
user := utils.GetUser(ctx)
|
||||||
return components.Layout(ctx.App, user, content)
|
return components.Layout(ctx.App, ctx, user, content)
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
component Layout(app *aero.Application, user *arn.User, content string)
|
component Layout(app *aero.Application, ctx *aero.Context, user *arn.User, content string)
|
||||||
html(lang="en")
|
html(lang="en")
|
||||||
head
|
head
|
||||||
title= app.Config.Title
|
title= app.Config.Title
|
||||||
@ -6,7 +6,7 @@ component Layout(app *aero.Application, user *arn.User, content string)
|
|||||||
meta(name="theme-color", content=app.Config.Manifest.ThemeColor)
|
meta(name="theme-color", content=app.Config.Manifest.ThemeColor)
|
||||||
link(rel="manifest", href="/manifest.json")
|
link(rel="manifest", href="/manifest.json")
|
||||||
body
|
body
|
||||||
#container
|
#container(class=utils.GetContainerClass(ctx))
|
||||||
#header
|
#header
|
||||||
Navigation(user)
|
Navigation(user)
|
||||||
#content-container
|
#content-container
|
||||||
|
2
main.go
2
main.go
@ -14,6 +14,7 @@ import (
|
|||||||
"github.com/animenotifier/notify.moe/pages/animelist"
|
"github.com/animenotifier/notify.moe/pages/animelist"
|
||||||
"github.com/animenotifier/notify.moe/pages/animelistitem"
|
"github.com/animenotifier/notify.moe/pages/animelistitem"
|
||||||
"github.com/animenotifier/notify.moe/pages/dashboard"
|
"github.com/animenotifier/notify.moe/pages/dashboard"
|
||||||
|
"github.com/animenotifier/notify.moe/pages/embed"
|
||||||
"github.com/animenotifier/notify.moe/pages/forum"
|
"github.com/animenotifier/notify.moe/pages/forum"
|
||||||
"github.com/animenotifier/notify.moe/pages/forums"
|
"github.com/animenotifier/notify.moe/pages/forums"
|
||||||
"github.com/animenotifier/notify.moe/pages/login"
|
"github.com/animenotifier/notify.moe/pages/login"
|
||||||
@ -70,6 +71,7 @@ func configure(app *aero.Application) *aero.Application {
|
|||||||
app.Ajax("/login", login.Get)
|
app.Ajax("/login", login.Get)
|
||||||
app.Ajax("/airing", airing.Get)
|
app.Ajax("/airing", airing.Get)
|
||||||
app.Ajax("/webdev", webdev.Get)
|
app.Ajax("/webdev", webdev.Get)
|
||||||
|
app.Ajax("/extension/embed", embed.Get)
|
||||||
// app.Ajax("/genres", genres.Get)
|
// app.Ajax("/genres", genres.Get)
|
||||||
// app.Ajax("/genres/:name", genre.Get)
|
// app.Ajax("/genres/:name", genre.Get)
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ func Get(ctx *aero.Context) string {
|
|||||||
animeList := viewUser.AnimeList()
|
animeList := viewUser.AnimeList()
|
||||||
|
|
||||||
if animeList == nil {
|
if animeList == nil {
|
||||||
return ctx.Error(http.StatusNotFound, "Anime list not found", err)
|
return ctx.Error(http.StatusNotFound, "Anime list not found", nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
sort.Slice(animeList.Items, func(i, j int) bool {
|
sort.Slice(animeList.Items, func(i, j int) bool {
|
||||||
|
31
pages/embed/embed.go
Normal file
31
pages/embed/embed.go
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
package embed
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
"sort"
|
||||||
|
|
||||||
|
"github.com/aerogo/aero"
|
||||||
|
"github.com/animenotifier/notify.moe/components"
|
||||||
|
"github.com/animenotifier/notify.moe/utils"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Get anime list in the browser extension.
|
||||||
|
func Get(ctx *aero.Context) string {
|
||||||
|
user := utils.GetUser(ctx)
|
||||||
|
|
||||||
|
if user == nil {
|
||||||
|
return ctx.Error(http.StatusUnauthorized, "Not logged in", nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
animeList := user.AnimeList()
|
||||||
|
|
||||||
|
if animeList == nil {
|
||||||
|
return ctx.Error(http.StatusNotFound, "Anime list not found", nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
sort.Slice(animeList.Items, func(i, j int) bool {
|
||||||
|
return animeList.Items[i].FinalRating() < animeList.Items[j].FinalRating()
|
||||||
|
})
|
||||||
|
|
||||||
|
return utils.AllowEmbed(ctx, ctx.HTML(components.AnimeList(animeList)))
|
||||||
|
}
|
@ -16,5 +16,5 @@ func Get(ctx *aero.Context) string {
|
|||||||
return ctx.Error(http.StatusForbidden, "Not logged in", nil)
|
return ctx.Error(http.StatusForbidden, "Not logged in", nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
return ctx.HTML(components.Settings(user))
|
return utils.AllowEmbed(ctx, ctx.HTML(components.Settings(user)))
|
||||||
}
|
}
|
||||||
|
10
styles/extension.scarlet
Normal file
10
styles/extension.scarlet
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
.embedded
|
||||||
|
.anime-list
|
||||||
|
th
|
||||||
|
display none
|
||||||
|
|
||||||
|
#content
|
||||||
|
// font-size 0.9em
|
||||||
|
|
||||||
|
#header
|
||||||
|
display none
|
10
utils/allowembed.go
Normal file
10
utils/allowembed.go
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
package utils
|
||||||
|
|
||||||
|
import "github.com/aerogo/aero"
|
||||||
|
|
||||||
|
// AllowEmbed allows the page to be called by the browser extension.
|
||||||
|
func AllowEmbed(ctx *aero.Context, response string) string {
|
||||||
|
// This is a bit of a hack.
|
||||||
|
ctx.SetResponseHeader("X-Frame-Options", "ALLOW-FROM chrome-extension://hjfcooigdelogjmniiahfiilcefdlpha/options.html")
|
||||||
|
return response
|
||||||
|
}
|
15
utils/container.go
Normal file
15
utils/container.go
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
package utils
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/aerogo/aero"
|
||||||
|
)
|
||||||
|
|
||||||
|
// GetContainerClass returns the class for the "container" element.
|
||||||
|
// In the browser extension it will get the "embedded" class.
|
||||||
|
func GetContainerClass(ctx *aero.Context) string {
|
||||||
|
if ctx.URI() == "/extension/embed" {
|
||||||
|
return "embedded"
|
||||||
|
}
|
||||||
|
|
||||||
|
return ""
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user