From 33156178d8d842fb447aca0ff069c18074ec2ec1 Mon Sep 17 00:00:00 2001 From: 5rahim Date: Wed, 15 Apr 2026 15:39:40 +0200 Subject: [PATCH] fixes --- internal/constants/constants.go | 2 +- .../autodownloader/autodownloader_torrent.go | 12 +++++++ internal/library/autodownloader/test.go | 35 ++++++++++++++----- seanime-denshi/package-lock.json | 4 +-- seanime-denshi/package.json | 2 +- seanime-web/src/hooks/use-main-tab.ts | 2 +- 6 files changed, 43 insertions(+), 14 deletions(-) diff --git a/internal/constants/constants.go b/internal/constants/constants.go index 624ac9bd..c8a14f95 100644 --- a/internal/constants/constants.go +++ b/internal/constants/constants.go @@ -6,7 +6,7 @@ import ( ) const ( - Version = "3.6.0-alpha.5" + Version = "3.6.0" VersionName = "Kagero" GcTime = time.Minute * 30 ConfigFileName = "config.toml" diff --git a/internal/library/autodownloader/autodownloader_torrent.go b/internal/library/autodownloader/autodownloader_torrent.go index a087b444..9530f139 100644 --- a/internal/library/autodownloader/autodownloader_torrent.go +++ b/internal/library/autodownloader/autodownloader_torrent.go @@ -6,6 +6,7 @@ import ( "seanime/internal/extension" hibiketorrent "seanime/internal/extension/hibike/torrent" "seanime/internal/library/anime" + "seanime/internal/util" "seanime/internal/util/limiter" "sync" "time" @@ -93,6 +94,11 @@ func (ad *AutoDownloader) fetchTorrentsFromProviders( wg.Add(1) go func(pExt extension.AnimeTorrentProviderExtension) { defer wg.Done() + defer util.HandlePanicInModuleThen("autodownloader/fetchTorrentsFromProviders/provider", func() { + ad.logger.Error(). + Str("providerId", pExt.GetID()). + Msg("autodownloader: Recovered from torrent provider panic") + }) // Set up a rate limiter for a single provider rateLimiter := limiter.NewLimiter(time.Second, 2) // 2 reqs per sec @@ -171,6 +177,12 @@ func (ad *AutoDownloader) fetchTorrentsFromProviders( for releaseGroup, resolutions := range releaseGroupToResolutions { go func(rg string, res []string) { defer pWg.Done() + defer util.HandlePanicInModuleThen("autodownloader/fetchTorrentsFromProviders/search", func() { + ad.logger.Error(). + Str("providerId", pExt.GetID()). + Str("releaseGroup", rg). + Msg("autodownloader: Recovered from torrent provider search panic") + }) foundForGroup := false // For each release group, search with a specific resolution diff --git a/internal/library/autodownloader/test.go b/internal/library/autodownloader/test.go index f3540f68..cba7acf5 100644 --- a/internal/library/autodownloader/test.go +++ b/internal/library/autodownloader/test.go @@ -18,6 +18,8 @@ type TestHarness struct { SearchResults []*hibiketorrent.AnimeTorrent GetLatestResults []*hibiketorrent.AnimeTorrent Database *db.Database + Providers map[string]hibiketorrent.AnimeProvider + DefaultProvider string } type TestTorrentProvider struct { @@ -68,15 +70,22 @@ func (f *TestHarness) New(t *testing.T) *AutoDownloader { extensionBankRef := util.NewRef(extension.NewUnifiedBank()) - // Test extension - provider := TestTorrentProvider{harness: f} - ext := extension.NewAnimeTorrentProviderExtension(&extension.Extension{ - ID: "fake", - Type: extension.TypeAnimeTorrentProvider, - Name: "Test Provider", - }, provider) + providers := f.Providers + if len(providers) == 0 { + providers = map[string]hibiketorrent.AnimeProvider{ + "fake": TestTorrentProvider{harness: f}, + } + } - extensionBankRef.Get().Set("fake", ext) + for id, provider := range providers { + ext := extension.NewAnimeTorrentProviderExtension(&extension.Extension{ + ID: id, + Type: extension.TypeAnimeTorrentProvider, + Name: id, + }, provider) + + extensionBankRef.Get().Set(id, ext) + } metadataProvider := metadata_provider.NewProvider(&metadata_provider.NewProviderImplOptions{ Logger: logger, @@ -92,6 +101,14 @@ func (f *TestHarness) New(t *testing.T) *AutoDownloader { }) metadataProviderRef := util.NewRef[metadata_provider.Provider](metadataProvider) + defaultProvider := f.DefaultProvider + if defaultProvider == "" { + defaultProvider = "fake" + for id := range providers { + defaultProvider = id + break + } + } //torrentClientRepository := torrent_client.NewRepository(&torrent_client.NewRepositoryOptions{ // Logger: logger, // QbittorrentClient: &qbittorrent.Client{}, @@ -112,7 +129,7 @@ func (f *TestHarness) New(t *testing.T) *AutoDownloader { }) ad.SetSettings(&models.AutoDownloaderSettings{ - Provider: "fake", + Provider: defaultProvider, Interval: 15, Enabled: true, DownloadAutomatically: false, diff --git a/seanime-denshi/package-lock.json b/seanime-denshi/package-lock.json index d8fb10d1..be328852 100644 --- a/seanime-denshi/package-lock.json +++ b/seanime-denshi/package-lock.json @@ -1,12 +1,12 @@ { "name": "seanime-denshi", - "version": "3.6.0-alpha.4", + "version": "3.6.0-alpha.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "seanime-denshi", - "version": "3.6.0-alpha.4", + "version": "3.6.0-alpha.6", "dependencies": { "castv2": "^0.1.10", "electron-log": "^5.4.3", diff --git a/seanime-denshi/package.json b/seanime-denshi/package.json index 0e26a7df..4d8ec77e 100644 --- a/seanime-denshi/package.json +++ b/seanime-denshi/package.json @@ -1,6 +1,6 @@ { "name": "seanime-denshi", - "version": "3.6.0-alpha.5", + "version": "3.6.0", "description": "Electron-based Desktop client for Seanime", "main": "src/main.js", "author": "5rahim ", diff --git a/seanime-web/src/hooks/use-main-tab.ts b/seanime-web/src/hooks/use-main-tab.ts index a711c7b2..be6b38ab 100644 --- a/seanime-web/src/hooks/use-main-tab.ts +++ b/seanime-web/src/hooks/use-main-tab.ts @@ -90,5 +90,5 @@ export function useMainTab(): boolean { } }, [socket]) - return false + return isMainTab }