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;