subtitle fix

This commit is contained in:
tapframe 2025-09-15 14:09:26 +05:30
parent 3ea069926b
commit 22a118c383
4 changed files with 46 additions and 45 deletions

@ -1 +1 @@
Subproject commit e6c0e8c0d75a8595031fe450e29db0c40969b5b8 Subproject commit c2435eb4a7467fc13eb232526ab6fea867062c22

View file

@ -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);
} }

View file

@ -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);
} }

View file

@ -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