0% found this document useful (0 votes)
4 views4 pages

React Native Video App Code

The document contains a complete React Native application code for a video streaming platform called 'Tab Treax'. It includes various screens such as Login, Home, Search, Upload, History, Channel, and Player, utilizing React Navigation for navigation and Expo AV for video playback. The app allows users to log in, view uploaded videos, search for videos, upload new videos, and manage their watch history and comments.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
4 views4 pages

React Native Video App Code

The document contains a complete React Native application code for a video streaming platform called 'Tab Treax'. It includes various screens such as Login, Home, Search, Upload, History, Channel, and Player, utilizing React Navigation for navigation and Expo AV for video playback. The app allows users to log in, view uploaded videos, search for videos, upload new videos, and manage their watch history and comments.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Tab Treax - Full React Native Code (Formatted)

import React, { useState } from 'react';


import { View, Text, FlatList, TouchableOpacity, TextInput, Button, ScrollView } from 'react-native';
import { NavigationContainer } from '@react-navigation/native';
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
import { createStackNavigator } from '@react-navigation/stack';
import { Video } from 'expo-av';

// Sample videos array


const sampleVideos = [
{ id: '1', title: 'Sample Video 1', url: '[Link] channel: 'TabTreax Chan
{ id: '2', title: 'Sample Video 2', url: '[Link] channel: 'TabTreax Channe
];

// In-memory database (mock)


let uploadedVideos = [...sampleVideos];
let watchHistory = [];
let commentsDB = {};

// Login Screen
function LoginScreen({ navigation }) {
const [username, setUsername] = useState('');

const handleLogin = () => {


if ([Link]() !== '') {
[Link]('Main');
}
};

return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text style={{ fontSize: 24 }}>Login to Tab Treax</Text>
<TextInput placeholder="Enter username" value={username} onChangeText={setUsername} style={{ borderWidth:
<Button title="Login" onPress={handleLogin} />
</View>
);
}

// Home Screen
function HomeScreen({ navigation }) {
return (
<FlatList
data={uploadedVideos}
keyExtractor={item => [Link]}
renderItem={({ item }) => (
<TouchableOpacity onPress={() => [Link]('Player', { video: item })}>
<View style={{ padding: 10, borderBottomWidth: 1 }}>
<Text style={{ fontSize: 18 }}>{[Link]}</Text>
<Text>{[Link]}</Text>
</View>
</TouchableOpacity>
)}
/>
);
}

// Search Screen
function SearchScreen() {
const [query, setQuery] = useState('');
const [results, setResults] = useState([]);
const handleSearch = () => {
setResults([Link](v => [Link]().includes([Link]())));
};

return (
<View style={{ flex: 1, padding: 10 }}>
<TextInput placeholder="Search videos..." value={query} onChangeText={setQuery} style={{ borderWidth: 1, p
<Button title="Search" onPress={handleSearch} />
<FlatList
data={results}
keyExtractor={item => [Link]}
renderItem={({ item }) => (
<View style={{ padding: 10, borderBottomWidth: 1 }}>
<Text style={{ fontSize: 18 }}>{[Link]}</Text>
</View>
)}
/>
</View>
);
}

// Upload Screen
function UploadScreen({ navigation }) {
const [title, setTitle] = useState('');
const [url, setUrl] = useState('');

const handleUpload = () => {


const newVideo = { id: [Link]().toString(), title, url, channel: 'My Channel' };
[Link](newVideo);
setTitle('');
setUrl('');
[Link]('Home');
};

return (
<View style={{ flex: 1, padding: 20 }}>
<TextInput placeholder="Video Title" value={title} onChangeText={setTitle} style={{ borderWidth: 1, paddin
<TextInput placeholder="Video URL" value={url} onChangeText={setUrl} style={{ borderWidth: 1, padding: 8,
<Button title="Upload Video" onPress={handleUpload} />
</View>
);
}

// History Screen
function HistoryScreen() {
return (
<FlatList
data={watchHistory}
keyExtractor={item => [Link]}
renderItem={({ item }) => (
<View style={{ padding: 10, borderBottomWidth: 1 }}>
<Text style={{ fontSize: 18 }}>{[Link]}</Text>
<Text>{[Link]}</Text>
</View>
)}
/>
);
}

// Channel Screen
function ChannelScreen() {
return (
<View style={{ flex: 1, justifyContent: 'center', alignItems: 'center' }}>
<Text style={{ fontSize: 22 }}>My Channel</Text>
</View>
);
}

// Player Screen
function PlayerScreen({ route }) {
const { video } = [Link];
const [comment, setComment] = useState('');
const [comments, setComments] = useState(commentsDB[[Link]] || []);

[Link](() => {
watchHistory = [video, ...[Link](v => [Link] !== [Link])];
}, []);

const handleAddComment = () => {


const newComments = [...comments, comment];
commentsDB[[Link]] = newComments;
setComments(newComments);
setComment('');
};

return (
<ScrollView style={{ flex: 1 }}>
<Video source={{ uri: [Link] }} rate={1.0} volume={1.0} resizeMode="contain" useNativeControls style={{
<Text style={{ fontSize: 20, padding: 10 }}>{[Link]}</Text>
<Text style={{ paddingHorizontal: 10 }}>{[Link]}</Text>

<View style={{ padding: 10 }}>


<Text style={{ fontWeight: 'bold', marginBottom: 5 }}>Comments:</Text>
{[Link]((c, i) => (
<Text key={i} style={{ paddingVertical: 2 }}>- {c}</Text>
))}
<TextInput placeholder="Add a comment..." value={comment} onChangeText={setComment} style={{ borderWidth
<Button title="Post Comment" onPress={handleAddComment} />
</View>
</ScrollView>
);
}

const Tab = createBottomTabNavigator();


function MainTabs() {
return (
<[Link]>
<[Link] name="Home" component={HomeScreen} />
<[Link] name="Search" component={SearchScreen} />
<[Link] name="Upload" component={UploadScreen} />
<[Link] name="History" component={HistoryScreen} />
<[Link] name="Channel" component={ChannelScreen} />
</[Link]>
);
}

const Stack = createStackNavigator();


export default function App() {
return (
<NavigationContainer>
<[Link] screenOptions={{ headerShown: false }}>
<[Link] name="Login" component={LoginScreen} />
<[Link] name="Main" component={MainTabs} />
<[Link] name="Player" component={PlayerScreen} />
</[Link]>
</NavigationContainer>
);
}

You might also like