diff --git a/README.md b/README.md index da7b9230..031725bc 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,12 @@ curl -s https://raw.githubusercontent.com/animenotifier/notify.moe/go/install.sh * If you restart your operating system, run `make ports` to update your port bindings +## Author + +| [![Eduard Urbach on Twitter](https://gravatar.com/avatar/16ed4d41a5f244d1b10de1b791657989?s=70)](https://twitter.com/eduardurbach "Follow @eduardurbach on Twitter") | +|---| +| [Eduard Urbach](https://eduardurbach.com) | + [godoc-image]: https://godoc.org/github.com/animenotifier/notify.moe?status.svg [godoc-url]: https://godoc.org/github.com/animenotifier/notify.moe [goreportcard-image]: https://goreportcard.com/badge/github.com/animenotifier/notify.moe diff --git a/jobs/test/test.go b/jobs/test/test.go index 1b55278e..04d00b21 100644 --- a/jobs/test/test.go +++ b/jobs/test/test.go @@ -60,7 +60,7 @@ func testPackage(pkg string) { Title: pkg, Message: "Test failed", Link: "https://" + pkg, - Icon: "https://notify.moe/images/brand/220.png", + Icon: "https://media.notify.moe/images/brand/220.png", Type: arn.NotificationTypePackageTest, }) return diff --git a/pages/anime/anime.pixy b/pages/anime/anime.pixy index 96d8aa4d..2d156a43 100644 --- a/pages/anime/anime.pixy +++ b/pages/anime/anime.pixy @@ -7,18 +7,18 @@ component Anime(anime *arn.Anime, listItem *arn.AnimeListItem, tracks []*arn.Sou component AnimeMainColumn(anime *arn.Anime, listItem *arn.AnimeListItem, tracks []*arn.SoundTrack, amvs []*arn.AMV, amvAppearances []*arn.AMV, episodes []*arn.AnimeEpisode, user *arn.User) .anime-header(data-id=anime.ID) - a.anime-image-container.mountable(href=anime.ImageLink("original"), target="_blank") + a.anime-image-container.mountable(href=anime.ImageLink("original"), target="_blank", data-mountable-type="header") img.anime-cover-image.lazy(data-src=anime.ImageLink("large"), data-webp="true", data-color=anime.AverageColor(), alt=anime.Title.ByUser(user)) .space .anime-info - h1.anime-title.mountable(title=anime.Type)= anime.Title.ByUser(user) + h1.anime-title.mountable(title=anime.Type, data-mountable-type="header")= anime.Title.ByUser(user) - h2.anime-alternative-title.mountable + h2.anime-alternative-title.mountable(data-mountable-type="header") Japanese(anime.Title.Japanese) - p.anime-summary.mountable= anime.Summary + p.anime-summary.mountable(data-mountable-type="header")= anime.Summary .anime-summary-footer-container .anime-summary-footer @@ -43,26 +43,26 @@ component AnimeActions(anime *arn.Anime, listItem *arn.AnimeListItem, user *arn. if user != nil .buttons.anime-actions if user.Role == "editor" || user.Role == "admin" - a.button.mountable(href=anime.Link() + "/edit", data-mountable-type="footer") + a.button.mountable(href=anime.Link() + "/edit", data-mountable-type="header") Icon("pencil-square-o") span Edit anime if listItem != nil - a.button.mountable(href="/+" + user.Nick + "/animelist/anime/" + anime.ID, data-mountable-type="footer") + a.button.mountable(href="/+" + user.Nick + "/animelist/anime/" + anime.ID, data-mountable-type="header") Icon("pencil") span= listItem.StatusHumanReadable() else - button.mountable.action(data-api="/api/animelist/" + user.ID, data-action="addAnimeToCollection", data-trigger="click", data-anime-id=anime.ID, data-mountable-type="footer") + button.mountable.action(data-api="/api/animelist/" + user.ID, data-action="addAnimeToCollection", data-trigger="click", data-anime-id=anime.ID, data-mountable-type="header") Icon("plus") span Add to collection component AnimeRatings(anime *arn.Anime, user *arn.User) - section.anime-section.mountable + section.anime-section.mountable(data-mountable-type="sidebar") h3.anime-section-name Ratings table.anime-info-table tbody - tr.mountable(data-mountable-type="info") + tr.mountable(data-mountable-type="ratings") td.anime-info-key if anime.Status == "upcoming" span Hype: @@ -72,56 +72,56 @@ component AnimeRatings(anime *arn.Anime, user *arn.User) Rating(anime.Rating.Overall, anime.Rating.Count.Overall, user) if anime.Rating.Count.Story > 0 - tr.mountable(data-mountable-type="info") + tr.mountable(data-mountable-type="ratings") td.anime-info-key Story: td.anime-info-value Rating(anime.Rating.Story, anime.Rating.Count.Story, user) if anime.Rating.Count.Visuals > 0 - tr.mountable(data-mountable-type="info") + tr.mountable(data-mountable-type="ratings") td.anime-info-key Visuals: td.anime-info-value Rating(anime.Rating.Visuals, anime.Rating.Count.Visuals, user) if anime.Rating.Count.Soundtrack > 0 - tr.mountable(data-mountable-type="info") + tr.mountable(data-mountable-type="ratings") td.anime-info-key Soundtrack: td.anime-info-value Rating(anime.Rating.Soundtrack, anime.Rating.Count.Soundtrack, user) component AnimePopularity(anime *arn.Anime) if anime.Popularity.Total() > 0 - section.anime-section.mountable + section.anime-section.mountable(data-mountable-type="sidebar") h3.anime-section-name Popularity table.anime-info-table if anime.Popularity.Watching > 0 - tr.mountable(data-mountable-type="info") + tr.mountable(data-mountable-type="popularity") td.anime-info-key Watching: td.anime-info-value= anime.Popularity.Watching if anime.Popularity.Completed > 0 - tr.mountable(data-mountable-type="info") + tr.mountable(data-mountable-type="popularity") td.anime-info-key Completed: td.anime-info-value= anime.Popularity.Completed if anime.Popularity.Planned > 0 - tr.mountable(data-mountable-type="info") + tr.mountable(data-mountable-type="popularity") td.anime-info-key Planned: td.anime-info-value= anime.Popularity.Planned if anime.Popularity.Hold > 0 - tr.mountable(data-mountable-type="info") + tr.mountable(data-mountable-type="popularity") td.anime-info-key On hold: td.anime-info-value= anime.Popularity.Hold if anime.Popularity.Dropped > 0 - tr.mountable(data-mountable-type="info") + tr.mountable(data-mountable-type="popularity") td.anime-info-key Dropped: td.anime-info-value= anime.Popularity.Dropped component AnimeLinks(anime *arn.Anime, user *arn.User) - section.anime-section.mountable + section.anime-section.mountable(data-mountable-type="sidebar") h3.anime-section-name Links .light-button-group @@ -146,7 +146,7 @@ component AnimeLinks(anime *arn.Anime, user *arn.User) component AnimeGenres(anime *arn.Anime) .anime-genres each genre in anime.Genres - a.anime-genre.mountable(href="/genre/" + strings.ToLower(genre), data-mountable-type="footer") + a.anime-genre.mountable(href="/genre/" + strings.ToLower(genre), data-mountable-type="header") span= genre component AnimeTrailer(anime *arn.Anime) @@ -154,14 +154,14 @@ component AnimeTrailer(anime *arn.Anime) AnimeTrailerByIndex(anime, len(anime.Trailers)-1) component AnimeTrailerByIndex(anime *arn.Anime, index int) - section.anime-section.mountable + section.anime-section.mountable(data-mountable-type="sidebar") h3.anime-section-name Trailer .anime-trailer.video-container iframe.video(src="https://www.youtube.com/embed/" + anime.Trailers[index].ServiceID + "?showinfo=0", allowfullscreen="allowfullscreen") component AnimeFriends(friends []*arn.User, listItems map[*arn.User]*arn.AnimeListItem) if len(friends) > 0 - section.anime-section.mountable + section.anime-section.mountable(data-mountable-type="sidebar") h3.anime-section-name Friends .anime-friends @@ -176,7 +176,7 @@ component AnimeFriends(friends []*arn.User, listItems map[*arn.User]*arn.AnimeLi FriendEntry(friend, listItems) component AnimeInformation(anime *arn.Anime) - section.anime-section.mountable + section.anime-section.mountable(data-mountable-type="sidebar") h3.anime-section-name Information table.anime-info-table tr.mountable(data-mountable-type="info") diff --git a/pages/calendar/calendar.go b/pages/calendar/calendar.go index 2847cac6..320bde74 100644 --- a/pages/calendar/calendar.go +++ b/pages/calendar/calendar.go @@ -34,7 +34,7 @@ func Get(ctx *aero.Context) string { weekdayIndex := int(now.Weekday()) // Create days - days := make([]*utils.CalendarDay, 7, 7) + days := make([]*utils.CalendarDay, 7) for i := 0; i < 7; i++ { days[i] = &utils.CalendarDay{ diff --git a/pages/character/character.pixy b/pages/character/character.pixy index 49c20e21..05f2cf8d 100644 --- a/pages/character/character.pixy +++ b/pages/character/character.pixy @@ -9,23 +9,23 @@ component CharacterDetails(character *arn.Character, characterAnime []*arn.Anime .character-page .character-left-column .character-header - .character-image-container.mountable + .character-image-container.mountable(data-mountable-type="header") img.character-image-large.lazy(data-src=character.ImageLink("large"), data-webp="true", data-color=character.AverageColor(), alt=character.Name.Canonical) .buttons LikeButton(strconv.Itoa(len(character.Likes)), "heart", "character", character, user) if user != nil && (user.Role == "editor" || user.Role == "admin") - a.button.tip.mountable(href=character.Link() + "/edit", aria-label="Edit character") + a.button.tip.mountable(href=character.Link() + "/edit", aria-label="Edit character", data-mountable-type="header") RawIcon("pencil") .character-description-container if character.Name.Canonical == "" - h1.character-name.mountable untitled + h1.character-name.mountable(data-mountable-type="header") untitled else - h1.character-name.mountable= character.Name.Canonical + h1.character-name.mountable(data-mountable-type="header")= character.Name.Canonical - .anime-alternative-title.mountable + .anime-alternative-title.mountable(data-mountable-type="header") if character.Name.Japanese != "" Japanese(character.Name.Japanese) else @@ -35,7 +35,7 @@ component CharacterDetails(character *arn.Character, characterAnime []*arn.Anime .character-quotes Quote(mainQuote, user) - .character-description.mountable!= markdown.Render(character.Description) + .character-description.mountable(data-mountable-type="header")!= markdown.Render(character.Description) .character-main-column if len(characterAnime) > 0 @@ -61,9 +61,9 @@ component CharacterDetails(character *arn.Character, characterAnime []*arn.Anime component CharacterSidebar(character *arn.Character, friends []*arn.User, relevantCharacters []*arn.Character, user *arn.User) .character-sidebar if len(character.Attributes) > 0 - h3.mountable Information + h3.mountable(data-mountable-type="sidebar") Information - table.character-attributes.mountable + table.character-attributes.mountable(data-mountable-type="sidebar") each attribute in character.Attributes tr.mountable(data-mountable-type="info") td.character-attributes-name= attribute.Name + ":" @@ -74,18 +74,18 @@ component CharacterSidebar(character *arn.Character, friends []*arn.User, releva td.character-attributes-value= attribute.Value if len(relevantCharacters) > 0 - h3.mountable Relevant + h3.mountable(data-mountable-type="sidebar") Relevant - .relevant-characters.mountable + .relevant-characters.mountable(data-mountable-type="sidebar") each relevantCharacter in relevantCharacters .mountable(data-mountable-type="relevant-character") CharacterSmall(relevantCharacter, user) if len(friends) > 0 .character-friends - h3.mountable Friends + h3.mountable(data-mountable-type="sidebar") Friends - .user-avatars.mountable + .user-avatars.mountable(data-mountable-type="sidebar") each friend in friends .mountable(data-mountable-type="friend") if friend.IsActive() @@ -94,9 +94,9 @@ component CharacterSidebar(character *arn.Character, friends []*arn.User, releva .inactive-user Avatar(friend) - h3.mountable Links + h3.mountable(data-mountable-type="sidebar") Links - .light-button-group.mountable + .light-button-group.mountable(data-mountable-type="sidebar") if character.GetMapping("myanimelist/character") != "" a.light-button(href="https://myanimelist.net/character/" + character.GetMapping("myanimelist/character"), target="_blank", rel="noopener") Icon("external-link") diff --git a/pages/editor/jobs/jobs.go b/pages/editor/jobs/jobs.go index e16694fd..edd83002 100644 --- a/pages/editor/jobs/jobs.go +++ b/pages/editor/jobs/jobs.go @@ -27,9 +27,12 @@ var jobInfo = map[string]*utils.JobInfo{ "mal-parse": &utils.JobInfo{ Name: "mal-parse", }, - // "mal-sync": &utils.JobInfo{ - // Name: "mal-sync", - // }, + "mal-sync": &utils.JobInfo{ + Name: "mal-sync", + }, + "test": &utils.JobInfo{ + Name: "test", + }, } var jobLogs = []string{} diff --git a/pages/listimport/listimport.pixy b/pages/listimport/listimport.pixy index e1119d40..642c743d 100644 --- a/pages/listimport/listimport.pixy +++ b/pages/listimport/listimport.pixy @@ -6,20 +6,20 @@ component ImportLists(user *arn.User) label AniList: .widget-section - a.button.mountable(href="/import/anilist/animelist") + a.button(href="/import/anilist/animelist") Icon("download") span Import AniList if user.Accounts.Kitsu.Nick != "" label Kitsu: .widget-section - a.button.mountable(href="/import/kitsu/animelist") + a.button(href="/import/kitsu/animelist") Icon("download") span Import Kitsu if user.Accounts.MyAnimeList.Nick != "" label MyAnimeList: .widget-section - a.button.mountable(href="/import/myanimelist/animelist") + a.button(href="/import/myanimelist/animelist") Icon("download") span Import MyAnimeList \ No newline at end of file diff --git a/pages/profile/posts.go b/pages/profile/posts.go index c4fa922c..0236decd 100644 --- a/pages/profile/posts.go +++ b/pages/profile/posts.go @@ -29,7 +29,7 @@ func GetPostsByUser(ctx *aero.Context) string { posts = posts[:postLimit] } - postables = make([]arn.Postable, len(posts), len(posts)) + postables = make([]arn.Postable, len(posts)) for i, post := range posts { postables[i] = arn.ToPostable(post) diff --git a/pages/thread/thread.go b/pages/thread/thread.go index 0774a98a..14945c5a 100644 --- a/pages/thread/thread.go +++ b/pages/thread/thread.go @@ -23,7 +23,7 @@ func Get(ctx *aero.Context) string { // Fetch posts postObjects := arn.DB.GetMany("Post", thread.Posts) - posts := make([]*arn.Post, len(postObjects), len(postObjects)) + posts := make([]*arn.Post, len(postObjects)) for i, obj := range postObjects { posts[i] = obj.(*arn.Post) diff --git a/pages/users/users.pixy b/pages/users/users.pixy index ac465752..e0db90d3 100644 --- a/pages/users/users.pixy +++ b/pages/users/users.pixy @@ -2,10 +2,9 @@ component Users(users []*arn.User, url string) h1.page-title Users UsersTabs(url) - .user-avatars + .user-avatars.mountable each user in users - .mountable - Avatar(user) + Avatar(user) component ProUsers(users []*arn.User, url string) h1.page-title Supporters diff --git a/scripts/AnimeNotifier.ts b/scripts/AnimeNotifier.ts index e74559f4..e9f96420 100644 --- a/scripts/AnimeNotifier.ts +++ b/scripts/AnimeNotifier.ts @@ -774,7 +774,7 @@ export default class AnimeNotifier { modifyDelayed(elements: IterableIterator, func: (element: HTMLElement) => void) { const maxDelay = 2500 - const delay = 18 + const delay = 40 let time = 0 let start = Date.now() @@ -859,8 +859,8 @@ export default class AnimeNotifier { this.unmountMountables() this.loading(true) - // Delay by transition-speed - await delay(150) + // Delay by mountable-transition-speed + await delay(250) let html = await request diff --git a/styles/include/config.scarlet b/styles/include/config.scarlet index 1bbb0570..a8d248c1 100644 --- a/styles/include/config.scarlet +++ b/styles/include/config.scarlet @@ -143,4 +143,4 @@ const anime-image-large-height = 350px // Timings fade-speed = 150ms transition-speed = 150ms -mountable-transition-speed = 150ms +mountable-transition-speed = 250ms diff --git a/utils/YenToUserCurrency.go b/utils/YenToUserCurrency.go index db20329d..8935a70e 100644 --- a/utils/YenToUserCurrency.go +++ b/utils/YenToUserCurrency.go @@ -9,8 +9,8 @@ import ( // Current currency rates const ( - yenToEuro = 0.0075 - yenToDollar = 0.0093 + yenToEuro = 0.0077 + yenToDollar = 0.0090 ) var countryQuery = gountries.New()