mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-03-11 17:45:38 +00:00
minor bug fixes
This commit is contained in:
parent
696d37dd08
commit
301560b21a
5 changed files with 62 additions and 19 deletions
|
|
@ -23,6 +23,8 @@ import { isMDBListEnabled } from '../../screens/MDBListSettingsScreen';
|
|||
import { getAgeRatingColor } from '../../utils/ageRatingColors';
|
||||
import AgeRatingBadge from '../common/AgeRatingBadge';
|
||||
|
||||
const IMDb_LOGO = 'https://upload.wikimedia.org/wikipedia/commons/thumb/6/69/IMDB_Logo_2016.svg/575px-IMDB_Logo_2016.svg.png';
|
||||
|
||||
// Enhanced responsive breakpoints for Metadata Details
|
||||
const BREAKPOINTS = {
|
||||
phone: 0,
|
||||
|
|
@ -233,6 +235,17 @@ const MetadataDetails: React.FC<MetadataDetailsProps> = ({
|
|||
)}
|
||||
{metadata.imdbRating && !isMDBEnabled && (
|
||||
<View style={styles.ratingContainer}>
|
||||
<FastImage
|
||||
source={{ uri: IMDb_LOGO }}
|
||||
style={[
|
||||
styles.imdbLogo,
|
||||
{
|
||||
width: isTV ? 35 : isLargeTablet ? 32 : isTablet ? 30 : 30,
|
||||
height: isTV ? 18 : isLargeTablet ? 16 : isTablet ? 15 : 15
|
||||
}
|
||||
]}
|
||||
resizeMode={FastImage.resizeMode.contain}
|
||||
/>
|
||||
<Text style={[
|
||||
styles.ratingText,
|
||||
{
|
||||
|
|
|
|||
|
|
@ -22,6 +22,8 @@ const BREAKPOINTS = {
|
|||
tv: 1440,
|
||||
};
|
||||
|
||||
const IMDb_LOGO = 'https://upload.wikimedia.org/wikipedia/commons/thumb/6/69/IMDB_Logo_2016.svg/575px-IMDB_Logo_2016.svg.png';
|
||||
|
||||
export const RATING_PROVIDERS = {
|
||||
imdb: {
|
||||
name: 'IMDb',
|
||||
|
|
@ -160,8 +162,8 @@ export const RatingsSection: React.FC<RatingsSectionProps> = ({ imdbId, type })
|
|||
const ratingConfig = {
|
||||
imdb: {
|
||||
name: 'IMDb',
|
||||
icon: null, // No icon for IMDb
|
||||
isImage: false,
|
||||
icon: { uri: IMDb_LOGO },
|
||||
isImage: true,
|
||||
color: '#F5C518',
|
||||
transform: (value: number) => value.toFixed(1)
|
||||
},
|
||||
|
|
@ -245,7 +247,7 @@ export const RatingsSection: React.FC<RatingsSectionProps> = ({ imdbId, type })
|
|||
{config.isImage ? (
|
||||
<Image
|
||||
source={config.icon as any}
|
||||
style={[styles.compactRatingIcon, { width: iconSize, height: iconSize, marginRight: iconTextGap }]}
|
||||
style={[styles.compactRatingIcon, { width: source === 'imdb' ? iconSize * 2 : iconSize, height: iconSize, marginRight: iconTextGap }]}
|
||||
resizeMode="contain"
|
||||
/>
|
||||
) : config.icon ? (
|
||||
|
|
|
|||
|
|
@ -41,6 +41,7 @@ interface SeriesContentProps {
|
|||
const DEFAULT_PLACEHOLDER = 'https://via.placeholder.com/300x450/1a1a1a/666666?text=No+Image';
|
||||
const EPISODE_PLACEHOLDER = 'https://via.placeholder.com/500x280/1a1a1a/666666?text=No+Preview';
|
||||
const TMDB_LOGO = 'https://upload.wikimedia.org/wikipedia/commons/thumb/8/89/Tmdb.new.logo.svg/512px-Tmdb.new.logo.svg.png?20200406190906';
|
||||
const IMDb_LOGO = 'https://upload.wikimedia.org/wikipedia/commons/thumb/6/69/IMDB_Logo_2016.svg/575px-IMDB_Logo_2016.svg.png';
|
||||
|
||||
const SeriesContentComponent: React.FC<SeriesContentProps> = ({
|
||||
episodes,
|
||||
|
|
@ -1166,7 +1167,18 @@ const SeriesContentComponent: React.FC<SeriesContentProps> = ({
|
|||
<View style={styles.ratingContainer}>
|
||||
{isImdbRating ? (
|
||||
<>
|
||||
|
||||
<FastImage
|
||||
source={{ uri: IMDb_LOGO }}
|
||||
style={[
|
||||
styles.tmdbLogo, // Reuse same style for dimensions
|
||||
{
|
||||
width: isTV ? 28 : isLargeTablet ? 26 : isTablet ? 24 : 24,
|
||||
height: isTV ? 16 : isLargeTablet ? 15 : isTablet ? 14 : 14,
|
||||
marginRight: 4
|
||||
}
|
||||
]}
|
||||
resizeMode={FastImage.resizeMode.contain}
|
||||
/>
|
||||
<Text style={[
|
||||
styles.ratingText,
|
||||
{
|
||||
|
|
@ -1422,7 +1434,18 @@ const SeriesContentComponent: React.FC<SeriesContentProps> = ({
|
|||
<View style={styles.ratingContainerHorizontal}>
|
||||
{isImdbRating ? (
|
||||
<>
|
||||
|
||||
<FastImage
|
||||
source={{ uri: IMDb_LOGO }}
|
||||
style={[
|
||||
styles.tmdbLogo, // Reuse same style
|
||||
{
|
||||
width: isTV ? 28 : isLargeTablet ? 26 : isTablet ? 24 : 24,
|
||||
height: isTV ? 16 : isLargeTablet ? 15 : isTablet ? 14 : 14,
|
||||
marginRight: 4
|
||||
}
|
||||
]}
|
||||
resizeMode={FastImage.resizeMode.contain}
|
||||
/>
|
||||
<Text style={[
|
||||
styles.ratingTextHorizontal,
|
||||
{
|
||||
|
|
|
|||
|
|
@ -598,6 +598,20 @@ const KSPlayerCore: React.FC = () => {
|
|||
controls.seekToTime(value);
|
||||
};
|
||||
|
||||
const handleProgress = useCallback((d: any) => {
|
||||
if (!isSliderDragging) {
|
||||
setCurrentTime(d.currentTime);
|
||||
}
|
||||
// Only update buffered if it changed by more than 0.5s to reduce re-renders
|
||||
const newBuffered = d.buffered || 0;
|
||||
setBuffered(prevBuffered => {
|
||||
if (Math.abs(newBuffered - prevBuffered) > 0.5) {
|
||||
return newBuffered;
|
||||
}
|
||||
return prevBuffered;
|
||||
});
|
||||
}, [isSliderDragging, setCurrentTime, setBuffered]);
|
||||
|
||||
return (
|
||||
<View style={{ flex: 1, backgroundColor: '#000000' }}>
|
||||
<StatusBar hidden={true} />
|
||||
|
|
@ -637,16 +651,7 @@ const KSPlayerCore: React.FC = () => {
|
|||
onAudioTracks={(d) => tracks.setKsAudioTracks(d.audioTracks || [])}
|
||||
onTextTracks={(d) => tracks.setKsTextTracks(d.textTracks || [])}
|
||||
onLoad={onLoad}
|
||||
onProgress={(d) => {
|
||||
if (!isSliderDragging) {
|
||||
setCurrentTime(d.currentTime);
|
||||
}
|
||||
// Only update buffered if it changed by more than 0.5s to reduce re-renders
|
||||
const newBuffered = d.buffered || 0;
|
||||
if (Math.abs(newBuffered - buffered) > 0.5) {
|
||||
setBuffered(newBuffered);
|
||||
}
|
||||
}}
|
||||
onProgress={handleProgress}
|
||||
onEnd={async () => {
|
||||
setCurrentTime(duration);
|
||||
await traktAutosync.handlePlaybackEnd(duration, duration, 'ended');
|
||||
|
|
|
|||
|
|
@ -177,15 +177,15 @@ export const useMetadataAssets = (
|
|||
// Only update if request wasn't aborted and component is still mounted
|
||||
if (!isMountedRef.current) return;
|
||||
|
||||
if (metadata?.banner) {
|
||||
finalBanner = metadata.banner;
|
||||
bannerSourceType = 'default';
|
||||
} else if (details?.backdrop_path) {
|
||||
if (details?.backdrop_path) {
|
||||
finalBanner = tmdbService.getImageUrl(details.backdrop_path);
|
||||
bannerSourceType = 'tmdb';
|
||||
if (finalBanner) {
|
||||
FastImage.preload([{ uri: finalBanner }]);
|
||||
}
|
||||
} else if (metadata?.banner) {
|
||||
finalBanner = metadata.banner;
|
||||
bannerSourceType = 'default';
|
||||
} else {
|
||||
finalBanner = bannerImage || null;
|
||||
bannerSourceType = 'default';
|
||||
|
|
|
|||
Loading…
Reference in a new issue