Added deletion to Kitsu imports
This commit is contained in:
parent
9eae7ebce5
commit
8cb44131cf
43
pages/animeimport/deletekitsu.go
Normal file
43
pages/animeimport/deletekitsu.go
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
package animeimport
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/animenotifier/arn"
|
||||||
|
|
||||||
|
"github.com/aerogo/aero"
|
||||||
|
"github.com/animenotifier/notify.moe/utils"
|
||||||
|
)
|
||||||
|
|
||||||
|
// DeleteKitsu marks an anime for deletion.
|
||||||
|
func DeleteKitsu(ctx *aero.Context) string {
|
||||||
|
id := ctx.Get("id")
|
||||||
|
|
||||||
|
// Is the user allowed to delete?
|
||||||
|
user := utils.GetUser(ctx)
|
||||||
|
|
||||||
|
if user == nil || (user.Role != "editor" && user.Role != "admin") {
|
||||||
|
return ctx.Error(http.StatusUnauthorized, "Not authorized", nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check that the anime really exists
|
||||||
|
kitsuAnimeObj, err := arn.Kitsu.Get("Anime", id)
|
||||||
|
|
||||||
|
if kitsuAnimeObj == nil {
|
||||||
|
return ctx.Error(http.StatusNotFound, "Kitsu anime not found", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add to deleted IDs list
|
||||||
|
deletedKitsuAnime, err := arn.GetIDList("deleted kitsu anime")
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
deletedKitsuAnime = arn.IDList{}
|
||||||
|
}
|
||||||
|
|
||||||
|
deletedKitsuAnime = deletedKitsuAnime.Append(id)
|
||||||
|
|
||||||
|
// Save in database
|
||||||
|
arn.DB.Set("IDList", "deleted kitsu anime", &deletedKitsuAnime)
|
||||||
|
|
||||||
|
return ""
|
||||||
|
}
|
@ -14,9 +14,14 @@ import (
|
|||||||
func NewKitsuAnime(ctx *aero.Context) string {
|
func NewKitsuAnime(ctx *aero.Context) string {
|
||||||
user := utils.GetUser(ctx)
|
user := utils.GetUser(ctx)
|
||||||
finder := arn.NewAnimeFinder("kitsu/anime")
|
finder := arn.NewAnimeFinder("kitsu/anime")
|
||||||
|
deletedIDs, err := arn.GetIDList("deleted kitsu anime")
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
deletedIDs = arn.IDList{}
|
||||||
|
}
|
||||||
|
|
||||||
animes := arn.FilterKitsuAnime(func(anime *kitsu.Anime) bool {
|
animes := arn.FilterKitsuAnime(func(anime *kitsu.Anime) bool {
|
||||||
return finder.GetAnime(anime.ID) == nil
|
return finder.GetAnime(anime.ID) == nil && !arn.Contains(deletedIDs, anime.ID)
|
||||||
})
|
})
|
||||||
|
|
||||||
sort.Slice(animes, func(i, j int) bool {
|
sort.Slice(animes, func(i, j int) bool {
|
||||||
|
@ -28,6 +28,9 @@ component NewKitsuAnime(animes []*kitsu.Anime, url string, user *arn.User)
|
|||||||
if len(anime.Attributes.StartDate) >= 4
|
if len(anime.Attributes.StartDate) >= 4
|
||||||
span= anime.Attributes.StartDate[:4]
|
span= anime.Attributes.StartDate[:4]
|
||||||
td
|
td
|
||||||
button.action(data-action="importKitsuAnime", data-trigger="click", data-id=anime.ID)
|
.buttons
|
||||||
Icon("download")
|
button.action(data-action="importKitsuAnime", data-trigger="click", data-id=anime.ID)
|
||||||
span Import
|
RawIcon("download")
|
||||||
|
|
||||||
|
button.action(data-action="deleteKitsuAnime", data-trigger="click", data-id=anime.ID)
|
||||||
|
RawIcon("trash")
|
@ -266,6 +266,7 @@ func Configure(app *aero.Application) {
|
|||||||
|
|
||||||
// Import anime
|
// Import anime
|
||||||
app.Post("/api/import/kitsu/anime/:id", animeimport.Kitsu)
|
app.Post("/api/import/kitsu/anime/:id", animeimport.Kitsu)
|
||||||
|
app.Post("/api/delete/kitsu/anime/:id", animeimport.DeleteKitsu)
|
||||||
|
|
||||||
// Upload
|
// Upload
|
||||||
app.Post("/api/upload/avatar", upload.Avatar)
|
app.Post("/api/upload/avatar", upload.Avatar)
|
||||||
|
@ -23,6 +23,10 @@ export function newAnimeDiffIgnore(arn: AnimeNotifier, button: HTMLButtonElement
|
|||||||
|
|
||||||
// Import Kitsu anime
|
// Import Kitsu anime
|
||||||
export async function importKitsuAnime(arn: AnimeNotifier, button: HTMLButtonElement) {
|
export async function importKitsuAnime(arn: AnimeNotifier, button: HTMLButtonElement) {
|
||||||
|
if(!confirm("Are you sure you want to import this anime?")) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
let newTab = window.open()
|
let newTab = window.open()
|
||||||
let animeId = button.dataset.id
|
let animeId = button.dataset.id
|
||||||
let response = await fetch(`/api/import/kitsu/anime/${animeId}`, {
|
let response = await fetch(`/api/import/kitsu/anime/${animeId}`, {
|
||||||
@ -38,6 +42,17 @@ export async function importKitsuAnime(arn: AnimeNotifier, button: HTMLButtonEle
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Delete Kitsu anime
|
||||||
|
export async function deleteKitsuAnime(arn: AnimeNotifier, button: HTMLButtonElement) {
|
||||||
|
if(!confirm("Are you sure you want to delete this anime?")) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
let animeId = button.dataset.id
|
||||||
|
await arn.post(`/api/delete/kitsu/anime/${animeId}`)
|
||||||
|
arn.reloadContent()
|
||||||
|
}
|
||||||
|
|
||||||
// Multi-search anime
|
// Multi-search anime
|
||||||
export async function multiSearchAnime(arn: AnimeNotifier, textarea: HTMLTextAreaElement) {
|
export async function multiSearchAnime(arn: AnimeNotifier, textarea: HTMLTextAreaElement) {
|
||||||
let results = document.getElementById("multi-search-anime") as HTMLDivElement
|
let results = document.getElementById("multi-search-anime") as HTMLDivElement
|
||||||
|
@ -804,12 +804,12 @@ export default class AnimeNotifier {
|
|||||||
return Diff.innerHTML(element, html)
|
return Diff.innerHTML(element, html)
|
||||||
}
|
}
|
||||||
|
|
||||||
post(url: string, body: any) {
|
post(url: string, body?: any) {
|
||||||
if(this.isLoading) {
|
if(this.isLoading) {
|
||||||
return Promise.resolve(null)
|
return Promise.resolve(null)
|
||||||
}
|
}
|
||||||
|
|
||||||
if(typeof body !== "string") {
|
if(body !== undefined && typeof body !== "string") {
|
||||||
body = JSON.stringify(body)
|
body = JSON.stringify(body)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user