mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-04-21 00:32:04 +00:00
ui fix
This commit is contained in:
parent
85cb950fa8
commit
dd542091e1
1 changed files with 21 additions and 12 deletions
|
|
@ -96,9 +96,9 @@ export const EpisodeStreamsModal: React.FC<EpisodeStreamsModalProps> = ({
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const episodeId = episode.stremioId || `${metadata.id}:${episode.season_number}:${episode.episode_number}`;
|
const episodeId = episode.stremioId || `${metadata.id}:${episode.season_number}:${episode.episode_number}`;
|
||||||
const allStreams: { [providerId: string]: { streams: Stream[]; addonName: string } } = {};
|
|
||||||
let completedProviders = 0;
|
let completedProviders = 0;
|
||||||
const expectedProviders = new Set<string>();
|
const expectedProviders = new Set<string>();
|
||||||
|
const respondedProviders = new Set<string>();
|
||||||
|
|
||||||
const installedAddons = stremioService.getInstalledAddons();
|
const installedAddons = stremioService.getInstalledAddons();
|
||||||
const streamAddons = installedAddons.filter((addon: any) =>
|
const streamAddons = installedAddons.filter((addon: any) =>
|
||||||
|
|
@ -107,32 +107,41 @@ export const EpisodeStreamsModal: React.FC<EpisodeStreamsModalProps> = ({
|
||||||
|
|
||||||
streamAddons.forEach((addon: any) => expectedProviders.add(addon.id));
|
streamAddons.forEach((addon: any) => expectedProviders.add(addon.id));
|
||||||
|
|
||||||
|
logger.log(`[EpisodeStreamsModal] Fetching streams for ${episodeId}, expecting ${expectedProviders.size} providers`);
|
||||||
|
|
||||||
await stremioService.getStreams('series', episodeId, (streams: any, addonId: any, addonName: any, error: any) => {
|
await stremioService.getStreams('series', episodeId, (streams: any, addonId: any, addonName: any, error: any) => {
|
||||||
completedProviders++;
|
completedProviders++;
|
||||||
|
respondedProviders.add(addonId);
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
logger.warn(`[EpisodeStreamsModal] Error from ${addonName}:`, error);
|
logger.warn(`[EpisodeStreamsModal] Error from ${addonName || addonId}:`, error);
|
||||||
setHasErrors(prev => [...prev, `${addonName || addonId}: ${error.message || 'Unknown error'}`]);
|
setHasErrors(prev => [...prev, `${addonName || addonId}: ${error.message || 'Unknown error'}`]);
|
||||||
return;
|
} else if (streams && streams.length > 0) {
|
||||||
}
|
// Update state incrementally for each provider
|
||||||
|
setAvailableStreams(prev => ({
|
||||||
if (streams && streams.length > 0) {
|
...prev,
|
||||||
allStreams[addonId] = {
|
[addonId]: {
|
||||||
streams: streams,
|
streams: streams,
|
||||||
addonName: addonName || addonId
|
addonName: addonName || addonId
|
||||||
};
|
}
|
||||||
|
}));
|
||||||
|
logger.log(`[EpisodeStreamsModal] Added ${streams.length} streams from ${addonName || addonId}`);
|
||||||
|
} else {
|
||||||
|
logger.log(`[EpisodeStreamsModal] No streams from ${addonName || addonId}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (completedProviders >= expectedProviders.size) {
|
if (completedProviders >= expectedProviders.size) {
|
||||||
setAvailableStreams(allStreams);
|
logger.log(`[EpisodeStreamsModal] All providers completed. Total providers responded: ${respondedProviders.size}`);
|
||||||
setIsLoading(false);
|
setIsLoading(false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Fallback timeout
|
// Fallback timeout
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
if (Object.keys(allStreams).length === 0 && !isLoading) {
|
if (respondedProviders.size === 0) {
|
||||||
|
logger.warn(`[EpisodeStreamsModal] Timeout: No providers responded`);
|
||||||
setHasErrors(prev => [...prev, 'Timeout: No providers responded']);
|
setHasErrors(prev => [...prev, 'Timeout: No providers responded']);
|
||||||
|
setIsLoading(false);
|
||||||
}
|
}
|
||||||
}, 8000);
|
}, 8000);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue