diff --git a/android/app/build.gradle b/android/app/build.gradle index 0e7c89b..a2458cd 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -95,8 +95,8 @@ android { applicationId 'com.nuvio.app' minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 30 - versionName "1.3.2" + versionCode 31 + versionName "1.3.3" buildConfigField "String", "REACT_NATIVE_RELEASE_LEVEL", "\"${findProperty('reactNativeReleaseLevel') ?: 'stable'}\"" } @@ -118,7 +118,7 @@ android { def abiVersionCodes = ['armeabi-v7a': 1, 'arm64-v8a': 2, 'x86': 3, 'x86_64': 4] applicationVariants.all { variant -> variant.outputs.each { output -> - def baseVersionCode = 30 // Current versionCode 30 from defaultConfig + def baseVersionCode = 31 // Current versionCode 31 from defaultConfig def abiName = output.getFilter(com.android.build.OutputFile.ABI) def versionCode = baseVersionCode * 100 // Base multiplier diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 944c969..f01e08f 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -3,5 +3,5 @@ contain false dark - 1.3.2 + 1.3.3 \ No newline at end of file diff --git a/app.json b/app.json index e6d5517..74d3950 100644 --- a/app.json +++ b/app.json @@ -2,7 +2,7 @@ "expo": { "name": "Nuvio", "slug": "nuvio", - "version": "1.3.2", + "version": "1.3.3", "orientation": "default", "backgroundColor": "#020404", "icon": "./assets/ios/AppIcon.appiconset/Icon-App-60x60@3x.png", @@ -17,7 +17,7 @@ "ios": { "supportsTablet": true, "icon": "./assets/ios/AppIcon.appiconset/Icon-App-60x60@3x.png", - "buildNumber": "30", + "buildNumber": "31", "infoPlist": { "NSAppTransportSecurity": { "NSAllowsArbitraryLoads": true @@ -51,7 +51,7 @@ "android.permission.WRITE_SETTINGS" ], "package": "com.nuvio.app", - "versionCode": 30, + "versionCode": 31, "architectures": [ "arm64-v8a", "armeabi-v7a", @@ -98,6 +98,6 @@ "fallbackToCacheTimeout": 30000, "url": "https://ota.nuvioapp.space/api/manifest" }, - "runtimeVersion": "1.3.2" + "runtimeVersion": "1.3.3" } } \ No newline at end of file diff --git a/src/components/home/ContinueWatchingSection.tsx b/src/components/home/ContinueWatchingSection.tsx index aad1b84..120ec53 100644 --- a/src/components/home/ContinueWatchingSection.tsx +++ b/src/components/home/ContinueWatchingSection.tsx @@ -670,7 +670,7 @@ const ContinueWatchingSection = React.forwardRef((props, re type: 'movie', progress: item.progress, lastUpdated: pausedAt, - addonId: progress.addonId, + addonId: undefined, } as ContinueWatchingItem); logger.log(`📺 [TraktPlayback] Adding movie ${item.movie.title} with ${item.progress.toFixed(1)}% progress`); @@ -704,7 +704,7 @@ const ContinueWatchingSection = React.forwardRef((props, re season: item.episode.season, episode: item.episode.number, episodeTitle: item.episode.title || `Episode ${item.episode.number}`, - addonId: progress.addonId, + addonId: undefined, } as ContinueWatchingItem); processedShows.add(showImdb); @@ -773,7 +773,7 @@ const ContinueWatchingSection = React.forwardRef((props, re season: nextEpisodeVideo.season, episode: nextEpisodeVideo.episode, episodeTitle: `Episode ${nextEpisodeVideo.episode}`, - addonId: progress.addonId, + addonId: undefined, } as ContinueWatchingItem); } } diff --git a/src/components/player/KSPlayerCore.tsx b/src/components/player/KSPlayerCore.tsx index bac87e7..6f9f147 100644 --- a/src/components/player/KSPlayerCore.tsx +++ b/src/components/player/KSPlayerCore.tsx @@ -145,18 +145,18 @@ const KSPlayerCore: React.FC = () => { // Track previous video session to reset subtitle offset only when video actually changes const previousVideoRef = useRef<{ uri?: string; episodeId?: string }>({}); - + // Reset subtitle offset when starting a new video session useEffect(() => { const currentVideo = { uri, episodeId }; const previousVideo = previousVideoRef.current; - + // Only reset if this is actually a new video (uri or episodeId changed) - if (previousVideo.uri !== undefined && - (previousVideo.uri !== currentVideo.uri || previousVideo.episodeId !== currentVideo.episodeId)) { + if (previousVideo.uri !== undefined && + (previousVideo.uri !== currentVideo.uri || previousVideo.episodeId !== currentVideo.episodeId)) { customSubs.setSubtitleOffsetSec(0); } - + // Update the ref for next comparison previousVideoRef.current = currentVideo; // eslint-disable-next-line react-hooks/exhaustive-deps @@ -750,6 +750,7 @@ const KSPlayerCore: React.FC = () => { visible={speedControl.showSpeedActivatedOverlay} opacity={speedControl.speedActivatedOverlayOpacity} speed={speedControl.holdToSpeedValue} + screenDimensions={screenDimensions} /> { vote_average: tmdbEpisode.vote_average || 0, still_path: tmdbEpisode.still_path || null, season_poster_path: tmdbEpisode.season_poster_path || null, - addonId: episodeData.addonId || series.addonId, + addonId: (episodeData as any).addonId || series.addonId, }; @@ -247,7 +247,7 @@ export const useCalendarData = (): UseCalendarDataReturn => { vote_average: 0, still_path: null, season_poster_path: null, - addonId: episodeData?.addonId || series.addonId, + addonId: (episodeData as any)?.addonId || series.addonId, } }; } @@ -268,7 +268,7 @@ export const useCalendarData = (): UseCalendarDataReturn => { vote_average: 0, still_path: null, season_poster_path: null, - addonId: episodeData?.addonId || series.addonId, + addonId: series.addonId, } }; } diff --git a/src/hooks/useTraktIntegration.ts b/src/hooks/useTraktIntegration.ts index 6d143cc..2a992b3 100644 --- a/src/hooks/useTraktIntegration.ts +++ b/src/hooks/useTraktIntegration.ts @@ -523,7 +523,7 @@ export function useTraktIntegration() { // Fetch both playback progress and recently watched movies const [traktProgress, watchedMovies, watchedShows] = await Promise.all([ getTraktPlaybackProgress(), - traktService.getWatchedMovies() + traktService.getWatchedMovies(), traktService.getWatchedShows() ]); @@ -616,7 +616,8 @@ export function useTraktIntegration() { } } catch (error) { logger.error('[useTraktIntegration] Error preparing watched show update:', error); - + } + } // Execute all updates in parallel await Promise.all(updatePromises); diff --git a/src/utils/version.ts b/src/utils/version.ts index b744aab..a55f42e 100644 --- a/src/utils/version.ts +++ b/src/utils/version.ts @@ -1,7 +1,7 @@ // Single source of truth for the app version displayed in Settings // Update this when bumping app version -export const APP_VERSION = '1.3.2'; +export const APP_VERSION = '1.3.3'; export function getDisplayedAppVersion(): string { return APP_VERSION;