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 () => {
|
||||
try {
|
||||
const savedSize = await AsyncStorage.getItem(SUBTITLE_SIZE_KEY);
|
||||
if (savedSize) {
|
||||
setSubtitleSize(parseInt(savedSize, 10));
|
||||
// Prefer scoped subtitle settings
|
||||
const saved = await storageService.getSubtitleSettings();
|
||||
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) {
|
||||
logger.error('[AndroidVideoPlayer] Error loading subtitle size:', error);
|
||||
|
|
@ -1564,8 +1579,11 @@ const AndroidVideoPlayer: React.FC = () => {
|
|||
|
||||
const saveSubtitleSize = async (size: number) => {
|
||||
try {
|
||||
await AsyncStorage.setItem(SUBTITLE_SIZE_KEY, size.toString());
|
||||
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) {
|
||||
logger.error('[AndroidVideoPlayer] Error saving subtitle size:', error);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1288,9 +1288,24 @@ const VideoPlayer: React.FC = () => {
|
|||
|
||||
const loadSubtitleSize = async () => {
|
||||
try {
|
||||
const savedSize = await AsyncStorage.getItem(SUBTITLE_SIZE_KEY);
|
||||
if (savedSize) {
|
||||
setSubtitleSize(parseInt(savedSize, 10));
|
||||
// Prefer scoped subtitle settings
|
||||
const saved = await storageService.getSubtitleSettings();
|
||||
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) {
|
||||
logger.error('[VideoPlayer] Error loading subtitle size:', error);
|
||||
|
|
@ -1299,8 +1314,11 @@ const VideoPlayer: React.FC = () => {
|
|||
|
||||
const saveSubtitleSize = async (size: number) => {
|
||||
try {
|
||||
await AsyncStorage.setItem(SUBTITLE_SIZE_KEY, size.toString());
|
||||
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) {
|
||||
logger.error('[VideoPlayer] Error saving subtitle size:', error);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1186,42 +1186,7 @@ const PluginsScreen: React.FC = () => {
|
|||
<RefreshControl refreshing={isRefreshing} onRefresh={loadScrapers} />
|
||||
}
|
||||
>
|
||||
{/* Quick Setup for New Users */}
|
||||
{!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>
|
||||
)}
|
||||
{/* Quick Setup banner removed */}
|
||||
|
||||
{/* Enable Local Scrapers */}
|
||||
<CollapsibleSection
|
||||
|
|
|
|||
Loading…
Reference in a new issue