mirror of
https://github.com/tapframe/NuvioStreaming.git
synced 2026-01-11 20:10:25 +00:00
subtitle fix
This commit is contained in:
parent
3ea069926b
commit
22a118c383
4 changed files with 46 additions and 45 deletions
|
|
@ -1 +1 @@
|
||||||
Subproject commit e6c0e8c0d75a8595031fe450e29db0c40969b5b8
|
Subproject commit c2435eb4a7467fc13eb232526ab6fea867062c22
|
||||||
|
|
@ -1553,9 +1553,24 @@ const AndroidVideoPlayer: React.FC = () => {
|
||||||
|
|
||||||
const loadSubtitleSize = async () => {
|
const loadSubtitleSize = async () => {
|
||||||
try {
|
try {
|
||||||
const savedSize = await AsyncStorage.getItem(SUBTITLE_SIZE_KEY);
|
// Prefer scoped subtitle settings
|
||||||
if (savedSize) {
|
const saved = await storageService.getSubtitleSettings();
|
||||||
setSubtitleSize(parseInt(savedSize, 10));
|
if (saved && typeof saved.subtitleSize === 'number') {
|
||||||
|
setSubtitleSize(saved.subtitleSize);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// One-time migrate legacy key if present
|
||||||
|
const legacy = await AsyncStorage.getItem(SUBTITLE_SIZE_KEY);
|
||||||
|
if (legacy) {
|
||||||
|
const migrated = parseInt(legacy, 10);
|
||||||
|
if (!Number.isNaN(migrated) && migrated > 0) {
|
||||||
|
setSubtitleSize(migrated);
|
||||||
|
try {
|
||||||
|
const merged = { ...(saved || {}), subtitleSize: migrated };
|
||||||
|
await storageService.saveSubtitleSettings(merged);
|
||||||
|
} catch {}
|
||||||
|
}
|
||||||
|
try { await AsyncStorage.removeItem(SUBTITLE_SIZE_KEY); } catch {}
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error('[AndroidVideoPlayer] Error loading subtitle size:', error);
|
logger.error('[AndroidVideoPlayer] Error loading subtitle size:', error);
|
||||||
|
|
@ -1564,8 +1579,11 @@ const AndroidVideoPlayer: React.FC = () => {
|
||||||
|
|
||||||
const saveSubtitleSize = async (size: number) => {
|
const saveSubtitleSize = async (size: number) => {
|
||||||
try {
|
try {
|
||||||
await AsyncStorage.setItem(SUBTITLE_SIZE_KEY, size.toString());
|
|
||||||
setSubtitleSize(size);
|
setSubtitleSize(size);
|
||||||
|
// Persist via scoped subtitle settings so it survives restarts and account switches
|
||||||
|
const saved = await storageService.getSubtitleSettings();
|
||||||
|
const next = { ...(saved || {}), subtitleSize: size };
|
||||||
|
await storageService.saveSubtitleSettings(next);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error('[AndroidVideoPlayer] Error saving subtitle size:', error);
|
logger.error('[AndroidVideoPlayer] Error saving subtitle size:', error);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1288,9 +1288,24 @@ const VideoPlayer: React.FC = () => {
|
||||||
|
|
||||||
const loadSubtitleSize = async () => {
|
const loadSubtitleSize = async () => {
|
||||||
try {
|
try {
|
||||||
const savedSize = await AsyncStorage.getItem(SUBTITLE_SIZE_KEY);
|
// Prefer scoped subtitle settings
|
||||||
if (savedSize) {
|
const saved = await storageService.getSubtitleSettings();
|
||||||
setSubtitleSize(parseInt(savedSize, 10));
|
if (saved && typeof saved.subtitleSize === 'number') {
|
||||||
|
setSubtitleSize(saved.subtitleSize);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// One-time migrate legacy key if present
|
||||||
|
const legacy = await AsyncStorage.getItem(SUBTITLE_SIZE_KEY);
|
||||||
|
if (legacy) {
|
||||||
|
const migrated = parseInt(legacy, 10);
|
||||||
|
if (!Number.isNaN(migrated) && migrated > 0) {
|
||||||
|
setSubtitleSize(migrated);
|
||||||
|
try {
|
||||||
|
const merged = { ...(saved || {}), subtitleSize: migrated };
|
||||||
|
await storageService.saveSubtitleSettings(merged);
|
||||||
|
} catch {}
|
||||||
|
}
|
||||||
|
try { await AsyncStorage.removeItem(SUBTITLE_SIZE_KEY); } catch {}
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error('[VideoPlayer] Error loading subtitle size:', error);
|
logger.error('[VideoPlayer] Error loading subtitle size:', error);
|
||||||
|
|
@ -1299,8 +1314,11 @@ const VideoPlayer: React.FC = () => {
|
||||||
|
|
||||||
const saveSubtitleSize = async (size: number) => {
|
const saveSubtitleSize = async (size: number) => {
|
||||||
try {
|
try {
|
||||||
await AsyncStorage.setItem(SUBTITLE_SIZE_KEY, size.toString());
|
|
||||||
setSubtitleSize(size);
|
setSubtitleSize(size);
|
||||||
|
// Persist via scoped subtitle settings so it survives restarts and account switches
|
||||||
|
const saved = await storageService.getSubtitleSettings();
|
||||||
|
const next = { ...(saved || {}), subtitleSize: size };
|
||||||
|
await storageService.saveSubtitleSettings(next);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
logger.error('[VideoPlayer] Error saving subtitle size:', error);
|
logger.error('[VideoPlayer] Error saving subtitle size:', error);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1186,42 +1186,7 @@ const PluginsScreen: React.FC = () => {
|
||||||
<RefreshControl refreshing={isRefreshing} onRefresh={loadScrapers} />
|
<RefreshControl refreshing={isRefreshing} onRefresh={loadScrapers} />
|
||||||
}
|
}
|
||||||
>
|
>
|
||||||
{/* Quick Setup for New Users */}
|
{/* Quick Setup banner removed */}
|
||||||
{!hasRepository && (
|
|
||||||
<View style={styles.quickSetupContainer}>
|
|
||||||
<Text style={styles.quickSetupTitle}>🚀 Quick Start with Official Plugins</Text>
|
|
||||||
<Text style={styles.quickSetupText}>
|
|
||||||
Get instant access to 9+ premium streaming scrapers from Tapframe's official repository. Enable local scrapers and start streaming movies and TV shows immediately.
|
|
||||||
</Text>
|
|
||||||
<TouchableOpacity
|
|
||||||
style={styles.quickSetupButton}
|
|
||||||
onPress={async () => {
|
|
||||||
try {
|
|
||||||
setIsLoading(true);
|
|
||||||
// Add the official tapframe repository
|
|
||||||
const tapframeInfo = localScraperService.getTapframeRepositoryInfo();
|
|
||||||
const repoId = await localScraperService.addRepository(tapframeInfo);
|
|
||||||
|
|
||||||
// Switch to the new repository and refresh it
|
|
||||||
await localScraperService.setCurrentRepository(repoId);
|
|
||||||
await loadRepositories();
|
|
||||||
await loadScrapers();
|
|
||||||
|
|
||||||
Alert.alert('Success', 'Official repository added! Enable local scrapers above to start using plugins.');
|
|
||||||
} catch (error) {
|
|
||||||
logger.error('[PluginsScreen] Failed to add tapframe repository:', error);
|
|
||||||
Alert.alert('Error', 'Failed to add official repository');
|
|
||||||
} finally {
|
|
||||||
setIsLoading(false);
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Text style={styles.quickSetupButtonText}>
|
|
||||||
{isLoading ? 'Adding Repository...' : 'Add Official Repository'}
|
|
||||||
</Text>
|
|
||||||
</TouchableOpacity>
|
|
||||||
</View>
|
|
||||||
)}
|
|
||||||
|
|
||||||
{/* Enable Local Scrapers */}
|
{/* Enable Local Scrapers */}
|
||||||
<CollapsibleSection
|
<CollapsibleSection
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue