From 62951d0b801069ad60fe693f7495fbeeb55d4b82 Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 2 Nov 2020 16:40:41 -0600 Subject: [PATCH 01/11] initial add --- .expo-shared/assets.json | 4 + .gitignore | 18 + App.js | 28 + app.json | 32 + assets/icon.png | Bin 0 -> 1091 bytes assets/splash.png | Bin 0 -> 7178 bytes babel.config.js | 6 + package.json | 31 + src/screens/AboutScreen.js | 28 + src/screens/FilesScreen.js | 74 + src/screens/HomeScreen.js | 74 + src/screens/SettingsScreen.js | 63 + yarn.lock | 5467 +++++++++++++++++++++++++++++++++ 13 files changed, 5825 insertions(+) create mode 100755 .expo-shared/assets.json create mode 100755 .gitignore create mode 100755 App.js create mode 100755 app.json create mode 100755 assets/icon.png create mode 100755 assets/splash.png create mode 100755 babel.config.js create mode 100755 package.json create mode 100644 src/screens/AboutScreen.js create mode 100644 src/screens/FilesScreen.js create mode 100644 src/screens/HomeScreen.js create mode 100644 src/screens/SettingsScreen.js create mode 100755 yarn.lock diff --git a/.expo-shared/assets.json b/.expo-shared/assets.json new file mode 100755 index 0000000..17ad228 --- /dev/null +++ b/.expo-shared/assets.json @@ -0,0 +1,4 @@ +{ + "f9155ac790fd02fadcdeca367b02581c04a353aa6d5aa84409a59f6804c87acd": true, + "89ed26367cdb9b771858e026f2eb95bfdb90e5ae943e716575327ec325f39c44": true +} \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..a25907f --- /dev/null +++ b/.gitignore @@ -0,0 +1,18 @@ +node_modules/**/* +.expo/* +npm-debug.* +*.jks +*.p8 +*.p12 +*.key +*.mobileprovision +*.orig.* +web-build/ +web-report/ + +# macOS +.DS_Store + +# more stuff +*.bash + diff --git a/App.js b/App.js new file mode 100755 index 0000000..e199bde --- /dev/null +++ b/App.js @@ -0,0 +1,28 @@ +// Nav stuff + +import { createAppContainer } from 'react-navigation'; +import { createStackNavigator } from 'react-navigation-stack'; + +// Screens one per file to keep things clean + +import HomeScreen from './src/screens/HomeScreen'; +import AboutScreen from './src/screens/AboutScreen'; +import SettingsScreen from './src/screens/SettingsScreen'; +import FilesScreen from './src/screens/FilesScreen'; + +// Clean up of code before I fix the last little issue with it + + +const AppNavigator = createStackNavigator( + { + Home: HomeScreen, + About: AboutScreen, + Files: FilesScreen, + Settings: SettingsScreen, + }, + { + initialRouteName: 'Home', + } +); + +export default createAppContainer(AppNavigator); \ No newline at end of file diff --git a/app.json b/app.json new file mode 100755 index 0000000..bbaec8d --- /dev/null +++ b/app.json @@ -0,0 +1,32 @@ +{ + "expo": { + "name": "csrv", + "slug": "csrv", + "privacy": "public", + "sdkVersion": "36.0.0", + "platforms": [ + "android" + ], + "version": "1.2.0", + "orientation": "portrait", + "icon": "./assets/icon.png", + "splash": { + "image": "./assets/splash.png", + "resizeMode": "contain", + "backgroundColor": "#ffffff" + }, + "updates": { + "fallbackToCacheTimeout": 0 + }, + "assetBundlePatterns": [ + "**/*" + ], + "ios": { + "supportsTablet": true + }, + "android": { + "package": "com.rpicsrv.csrv", + "versionCode": 2 + } + } +} diff --git a/assets/icon.png b/assets/icon.png new file mode 100755 index 0000000000000000000000000000000000000000..7f5e01c5e594f57cb27becf0679fe120754a7187 GIT binary patch literal 1091 zcmeAS@N?(olHy`uVBq!ia0vp^2SAtuNHCOdH@*#|SkfJR9T^xl_H+M9WCijSl0AZa z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YDR+ueoXe|!I#{Xiaj ziKnkC`(tK45g7x8Un`6l7?{01T^vIyZoR#GK3gVL=J?0&pWoyp31{nEG!eQT;pP2x zLc{(HQI{jTSx^37Vg7MR$dc9o?~O~@GIbqurK&T$H}3M?G~4If$AmJWBhF=Ff6ge+ zzn+wS~|_bt@( z@mrhPUk}b5eOXqzC`;3P`KlRrU%mXhgl+C@t6h5|WqFvkRcX$fwrAO4YtEJ1x0VYC zIqaX^aPH~Oa5eR=U*Z4wr|h+tpErw%zsW6WO{MKtn#F-Z}JtP=GK?rm?qf`YxRPu)e~6L5HL5p$w-pf7%s} zO{;3TxFzYtFF7v7OJV$mU1k%@8qV2%RXKc{)oC`P2relKJH-25|qJ@3A6XDVlvzx$D!@aM6x!`H%J zM=sqwVENU%+N1b!%VzKT^ZUQcHaxeF`tx$>mhuh%KQ5Zsf9U1A=*!K`i>m5=)n3Z8 z|N48C__u&0o{e7*HVW4>+W!2(zE?lE5SY_cOI#yLQW8s2t&)pUffR$0fuW_Yfw8Wk yNr<6^m63&&iG{X-k(GhL))VnjC>nC}Q!>*kacej-_4zZP1_n=8KbLh*2~7Y=cHpl7 literal 0 HcmV?d00001 diff --git a/assets/splash.png b/assets/splash.png new file mode 100755 index 0000000000000000000000000000000000000000..4f9ade699a4dc43aaf3c97ad983115cccd0e0640 GIT binary patch literal 7178 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 Fe*iU3xyt|m literal 0 HcmV?d00001 diff --git a/babel.config.js b/babel.config.js new file mode 100755 index 0000000..2900afe --- /dev/null +++ b/babel.config.js @@ -0,0 +1,6 @@ +module.exports = function(api) { + api.cache(true); + return { + presets: ['babel-preset-expo'], + }; +}; diff --git a/package.json b/package.json new file mode 100755 index 0000000..e59a184 --- /dev/null +++ b/package.json @@ -0,0 +1,31 @@ +{ + "main": "node_modules/expo/AppEntry.js", + "scripts": { + "start": "expo start", + "android": "expo start --android", + "ios": "expo start --ios", + "web": "expo start --web", + "eject": "expo eject" + }, + "dependencies": { + "@react-native-community/masked-view": "0.1.5", + "axios": "^0.19.2", + "expo": "~36.0.0", + "react": "~16.9.0", + "react-dom": "~16.9.0", + "react-native": "https://github.com/expo/react-native/archive/sdk-36.0.0.tar.gz", + "react-native-elements": "^1.2.7", + "react-native-gesture-handler": "^1.5.3", + "react-native-reanimated": "~1.4.0", + "react-native-safe-area-context": "0.6.0", + "react-native-screens": "2.0.0-alpha.12", + "react-native-web": "~0.11.7", + "react-navigation": "^4.0.10", + "react-navigation-stack": "^2.0.16" + }, + "devDependencies": { + "@babel/core": "^7.0.0", + "babel-preset-expo": "~8.0.0" + }, + "private": true +} diff --git a/src/screens/AboutScreen.js b/src/screens/AboutScreen.js new file mode 100644 index 0000000..056fd82 --- /dev/null +++ b/src/screens/AboutScreen.js @@ -0,0 +1,28 @@ +import React from 'react'; +import { + View, + Text, + } from 'react-native'; + +class AboutScreen extends React.Component { + static navigationOptions = ({ navigation }) => { + return { + title: navigation.getParam('otherParam', 'About'), + headerStyle: { + backgroundColor: '#3333ff', + }, + headerTintColor: '#fff', + }; + }; + + render() { + return ( + + About Screen{"\n"}{"\n"} + RPI Media Center Control v 1.0 beta + + ); + } + } + + export default AboutScreen; \ No newline at end of file diff --git a/src/screens/FilesScreen.js b/src/screens/FilesScreen.js new file mode 100644 index 0000000..911ce9e --- /dev/null +++ b/src/screens/FilesScreen.js @@ -0,0 +1,74 @@ +import React from 'react'; +import axios from 'axios'; + +import { + View, + Text, + FlatList, // Solves the problem with the 5 movie limit in the app + } from 'react-native'; + + // these imports make headers and buttons look better + import { + Header, + Button, + } from 'react-native-elements'; + +function play(name) { + // Play handler + axios.get('http://192.168.1.158:8080/play/'+name) + .then(res => { + // Still don't care about response + }) + + } + +class FilesScreen extends React.Component { + + constructor(props){ + super(props); + this.state ={ data: []}; + } + static navigationOptions = ({ navigation }) => { + return { + title: navigation.getParam('otherParam', 'File Selection'), + headerStyle: { + backgroundColor: '#3333ff', + }, + headerTintColor: '#fff', + }; + }; + + componentDidMount() { + axios.get('http://192.168.1.158:8080/list/') + .then(res => { + this.setState({ + data: res.data.data, + }) + }) + + } + + + + render() { + let movies = this.state.data + + return ( + + + Pick a movie + movies} + data={movies} + renderItem={({ item }) => { + return