diff --git a/main.go b/main.go index b0a4555c..4ca3ed9f 100644 --- a/main.go +++ b/main.go @@ -18,6 +18,7 @@ import ( "github.com/animenotifier/notify.moe/pages/artworks" "github.com/animenotifier/notify.moe/pages/best" "github.com/animenotifier/notify.moe/pages/character" + "github.com/animenotifier/notify.moe/pages/charge" "github.com/animenotifier/notify.moe/pages/dashboard" "github.com/animenotifier/notify.moe/pages/editanime" "github.com/animenotifier/notify.moe/pages/embed" @@ -25,6 +26,7 @@ import ( "github.com/animenotifier/notify.moe/pages/forum" "github.com/animenotifier/notify.moe/pages/forums" "github.com/animenotifier/notify.moe/pages/home" + "github.com/animenotifier/notify.moe/pages/inventory" "github.com/animenotifier/notify.moe/pages/listimport" "github.com/animenotifier/notify.moe/pages/listimport/listimportanilist" "github.com/animenotifier/notify.moe/pages/listimport/listimportkitsu" @@ -95,7 +97,6 @@ func configure(app *aero.Application) *aero.Application { app.Ajax("/users/anime/watching", users.AnimeWatching) app.Ajax("/statistics", statistics.Get) app.Ajax("/statistics/anime", statistics.Anime) - app.Ajax("/shop", shop.Get) app.Ajax("/login", login.Get) // User profiles @@ -125,6 +126,11 @@ func configure(app *aero.Application) *aero.Application { app.Ajax("/search", search.Get) app.Ajax("/search/:term", search.Get) + // Shop + app.Ajax("/shop", shop.Get) + app.Ajax("/inventory", inventory.Get) + app.Ajax("/charge", charge.Get) + // Admin app.Ajax("/admin", admin.Get) app.Ajax("/admin/anilist", admin.AniList) diff --git a/pages/charge/charge.go b/pages/charge/charge.go new file mode 100644 index 00000000..5dc7706b --- /dev/null +++ b/pages/charge/charge.go @@ -0,0 +1,21 @@ +package charge + +import ( + "net/http" + + "github.com/animenotifier/notify.moe/components" + + "github.com/aerogo/aero" + "github.com/animenotifier/notify.moe/utils" +) + +// Get charge page. +func Get(ctx *aero.Context) string { + user := utils.GetUser(ctx) + + if user == nil { + return ctx.Error(http.StatusUnauthorized, "Not logged in", nil) + } + + return ctx.HTML(components.Charge()) +} diff --git a/pages/charge/charge.pixy b/pages/charge/charge.pixy new file mode 100644 index 00000000..3245271c --- /dev/null +++ b/pages/charge/charge.pixy @@ -0,0 +1,3 @@ +component Charge + ShopTabs + p Coming soon. \ No newline at end of file diff --git a/pages/inventory/inventory.go b/pages/inventory/inventory.go new file mode 100644 index 00000000..bd91a8ea --- /dev/null +++ b/pages/inventory/inventory.go @@ -0,0 +1,29 @@ +package inventory + +import ( + "net/http" + + "github.com/animenotifier/arn" + + "github.com/animenotifier/notify.moe/components" + + "github.com/aerogo/aero" + "github.com/animenotifier/notify.moe/utils" +) + +// Get inventory page. +func Get(ctx *aero.Context) string { + user := utils.GetUser(ctx) + + if user == nil { + return ctx.Error(http.StatusUnauthorized, "Not logged in", nil) + } + + inventory, err := arn.GetInventory(user.ID) + + if err != nil { + return ctx.Error(http.StatusInternalServerError, "Error fetching inventory data", err) + } + + return ctx.HTML(components.Inventory(inventory)) +} diff --git a/pages/inventory/inventory.pixy b/pages/inventory/inventory.pixy new file mode 100644 index 00000000..fc92ddc4 --- /dev/null +++ b/pages/inventory/inventory.pixy @@ -0,0 +1,7 @@ +component Inventory(inventory *arn.Inventory) + ShopTabs + .inventory + each slot in inventory.Slots + .inventory-slot + span= slot.ItemID + p Coming soon. \ No newline at end of file diff --git a/pages/inventory/inventory.scarlet b/pages/inventory/inventory.scarlet new file mode 100644 index 00000000..e69de29b diff --git a/pages/shop/pro-account.md b/pages/shop/pro-account.md deleted file mode 100644 index ba937048..00000000 --- a/pages/shop/pro-account.md +++ /dev/null @@ -1,9 +0,0 @@ -PRO account for 1 anime season (3 months). - -Includes: - -* Avatar highlight on the forums -* Customizable cover image for your profile -* Custom title for profile and forums -* Your suggestions will have a high priority -* Access to the VIP channel on Discord \ No newline at end of file diff --git a/pages/shop/shop.go b/pages/shop/shop.go index a2d6ba3a..1ef04e3d 100644 --- a/pages/shop/shop.go +++ b/pages/shop/shop.go @@ -1,21 +1,15 @@ package shop import ( - "io/ioutil" "net/http" + "github.com/animenotifier/arn" + "github.com/aerogo/aero" "github.com/animenotifier/notify.moe/components" "github.com/animenotifier/notify.moe/utils" ) -var proAccount = "" - -func init() { - data, _ := ioutil.ReadFile("pages/shop/pro-account.md") - proAccount = string(data) -} - // Get shop page. func Get(ctx *aero.Context) string { user := utils.GetUser(ctx) @@ -24,5 +18,7 @@ func Get(ctx *aero.Context) string { return ctx.Error(http.StatusUnauthorized, "Not logged in", nil) } - return ctx.HTML(components.Shop(user, proAccount)) + items := arn.AllItems() + + return ctx.HTML(components.Shop(user, items)) } diff --git a/pages/shop/shop.pixy b/pages/shop/shop.pixy index bac44191..554f75b4 100644 --- a/pages/shop/shop.pixy +++ b/pages/shop/shop.pixy @@ -1,29 +1,26 @@ -component Shop(user *arn.User, proAccountMarkdown string) +component Shop(user *arn.User, items []*arn.Item) h1.page-title Shop - - .user-balance-bar - Icon("diamond") - span.user-balance 0 - .tabs - .tab Goods - .tab Top-Up + ShopTabs .widgets.shop-items - ShopItem("PRO Account", "3 months", "900", "star", proAccountMarkdown) - ShopItem("PRO Account", "6 months", "1700", "star", strings.Replace(strings.Replace(proAccountMarkdown, "3 months", "6 months", 1), "1 anime season", "2 anime seasons", 1)) - ShopItem("PRO Account", "1 year", "3000", "star", strings.Replace(strings.Replace(proAccountMarkdown, "3 months", "12 months", 1), "1 anime season", "4 anime seasons", 1)) - ShopItem("PRO Account", "2 years", "5900", "star", strings.Replace(strings.Replace(proAccountMarkdown, "3 months", "24 months", 1), "1 anime season", "8 anime seasons", 1)) - ShopItem("Anime Support Ticket", "", "100", "ticket", "Support the makers of your favourite anime by using an anime support ticket. Anime Notifier uses 8% of the money to handle the transaction fees while the remaining 92% go directly to the studios involved in the creation of your favourite anime.") + each item in items + ShopItem(item) -component ShopItem(name string, duration string, price string, icon string, description string) - .widget.shop-item +component ShopTabs + .tabs + Tab("Shop", "shopping-cart", "/shop") + Tab("Inventory", "briefcase", "/inventory") + Tab("0", "diamond", "/charge") + +component ShopItem(item *arn.Item) + .widget.shop-item.mountable h3.widget-title.shop-item-name - Icon(icon) - span= name - span.shop-item-duration= " " + duration - .shop-item-description!= aero.Markdown(description) + Icon(item.Icon) + span= item.Name + //- span.shop-item-duration= " " + duration + .shop-item-description!= aero.Markdown(item.Description) .buttons.shop-buttons button.shop-button-buy - span.shop-item-price= price + span.shop-item-price= item.Price Icon("diamond") \ No newline at end of file diff --git a/pages/shop/shop.scarlet b/pages/shop/shop.scarlet index 9bb1bccf..b2374edc 100644 --- a/pages/shop/shop.scarlet +++ b/pages/shop/shop.scarlet @@ -25,9 +25,4 @@ .shop-button-buy .icon-diamond margin-left 0.3rem - margin-right 0 - -.user-balance-bar - text-align center - font-size 2.5rem - margin-bottom 2rem \ No newline at end of file + margin-right 0 \ No newline at end of file diff --git a/patches/add-follows/add-follows.go b/patches/add-follows/add-follows.go index 5b0923c2..a30c9a40 100644 --- a/patches/add-follows/add-follows.go +++ b/patches/add-follows/add-follows.go @@ -12,18 +12,15 @@ func main() { // Get a stream of all users allUsers, err := arn.StreamUsers() - - if err != nil { - panic(err) - } + arn.PanicOnError(err) // Iterate over the stream for user := range allUsers { - // exists, err := arn.DB.Exists("UserFollows", user.ID) + exists, err := arn.DB.Exists("UserFollows", user.ID) - // if err != nil || exists { - // continue - // } + if err != nil || exists { + continue + } fmt.Println(user.Nick) diff --git a/patches/add-inventories/add-inventories.go b/patches/add-inventories/add-inventories.go new file mode 100644 index 00000000..e1463128 --- /dev/null +++ b/patches/add-inventories/add-inventories.go @@ -0,0 +1,36 @@ +package main + +import ( + "fmt" + + "github.com/animenotifier/arn" + "github.com/fatih/color" +) + +func main() { + color.Yellow("Adding inventories to users who don't have one") + + // Get a stream of all users + allUsers, err := arn.StreamUsers() + arn.PanicOnError(err) + + // Iterate over the stream + for user := range allUsers { + exists, err := arn.DB.Exists("Inventory", user.ID) + + if err != nil || exists { + continue + } + + fmt.Println(user.Nick) + + inventory := arn.NewInventory(user.ID) + err = arn.DB.Set("Inventory", inventory.UserID, inventory) + + if err != nil { + color.Red(err.Error()) + } + } + + color.Green("Finished.") +} diff --git a/tests.go b/tests.go index 6cb5ffb9..0529e2b5 100644 --- a/tests.go +++ b/tests.go @@ -246,5 +246,8 @@ var routeTests = map[string][]string{ "/admin/shoboi": nil, "/user": nil, "/settings": nil, + "/shop": nil, + "/charge": nil, + "/inventory": nil, "/extension/embed": nil, }