refactor: wire mode fallback into resolveModeSources
This commit is contained in:
@@ -25,7 +25,13 @@ func (s *playbackService) BuildWatchData(ctx context.Context, animeID int, title
|
|||||||
}
|
}
|
||||||
|
|
||||||
mode, modeSwitchedFrom := resolveMode(episode, mode, canonicalEpisodes.Episodes)
|
mode, modeSwitchedFrom := resolveMode(episode, mode, canonicalEpisodes.Episodes)
|
||||||
modeSources, result := s.resolveModeSources(ctx, animeID, searchTitles, episode, mode)
|
modeSources, result, resolvedMode, resolvedModeSwitchedFrom := s.resolveModeSources(ctx, animeID, searchTitles, episode, mode)
|
||||||
|
if resolvedMode != "" {
|
||||||
|
mode = resolvedMode
|
||||||
|
}
|
||||||
|
if resolvedModeSwitchedFrom != "" {
|
||||||
|
modeSwitchedFrom = resolvedModeSwitchedFrom
|
||||||
|
}
|
||||||
if len(modeSources) == 0 {
|
if len(modeSources) == 0 {
|
||||||
return domain.WatchPageData{}, fmt.Errorf("no streams found")
|
return domain.WatchPageData{}, fmt.Errorf("no streams found")
|
||||||
}
|
}
|
||||||
@@ -123,23 +129,24 @@ func resolveMode(episode string, requestedMode string, episodes []domain.Canonic
|
|||||||
return requestedMode, ""
|
return requestedMode, ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *playbackService) resolveModeSources(ctx context.Context, animeID int, searchTitles []string, episode string, mode string) (map[string]domain.ModeSource, *domain.StreamResult) {
|
func (s *playbackService) resolveModeSources(ctx context.Context, animeID int, searchTitles []string, episode string, requestedMode string) (map[string]domain.ModeSource, *domain.StreamResult, string, string) {
|
||||||
modeSources := map[string]domain.ModeSource{}
|
if res := s.resolveStreamResult(ctx, animeID, searchTitles, episode, requestedMode); res != nil {
|
||||||
var result *domain.StreamResult
|
return map[string]domain.ModeSource{
|
||||||
|
requestedMode: s.buildModeSource(res),
|
||||||
|
}, res, requestedMode, ""
|
||||||
|
}
|
||||||
|
|
||||||
for _, currentMode := range []string{"sub", "dub"} {
|
for _, fallbackMode := range fallbackModes(requestedMode) {
|
||||||
res := s.resolveStreamResult(ctx, animeID, searchTitles, episode, currentMode)
|
res := s.resolveStreamResult(ctx, animeID, searchTitles, episode, fallbackMode)
|
||||||
if res == nil {
|
if res == nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
return map[string]domain.ModeSource{
|
||||||
modeSources[currentMode] = s.buildModeSource(res)
|
fallbackMode: s.buildModeSource(res),
|
||||||
if currentMode == mode {
|
}, res, fallbackMode, requestedMode
|
||||||
result = res
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return modeSources, result
|
return map[string]domain.ModeSource{}, nil, requestedMode, ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *playbackService) resolveStreamResult(ctx context.Context, animeID int, searchTitles []string, episode string, mode string) *domain.StreamResult {
|
func (s *playbackService) resolveStreamResult(ctx context.Context, animeID int, searchTitles []string, episode string, mode string) *domain.StreamResult {
|
||||||
|
|||||||
Reference in New Issue
Block a user