diff --git a/README.md b/README.md index 0343f01..fb0d8e0 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# UpSnap Mobile +# Jumpstart - Client for UpSnap A React Native Expo app that connects to an UpSnap server and provides mobile access to all Wake-on-LAN features. diff --git a/app.json b/app.json index 34426dd..e8d4812 100644 --- a/app.json +++ b/app.json @@ -1,6 +1,6 @@ { "expo": { - "name": "Remote WoL", + "name": "Jumpstart", "slug": "remote-wol", "version": "1.0.0", "orientation": "portrait", diff --git a/app/(tabs)/settings.tsx b/app/(tabs)/settings.tsx index 7434fae..a6ae4f8 100644 --- a/app/(tabs)/settings.tsx +++ b/app/(tabs)/settings.tsx @@ -1,250 +1,231 @@ -import React from "react"; +import React from 'react'; import { - Alert, - ScrollView, - StyleSheet, - Text, - TouchableOpacity, - View, -} from "react-native"; -import { useColorScheme } from "../../hooks/use-color-scheme"; -import { useAuth } from "../../src/context/AuthContext"; -import { useRouter } from "expo-router"; + Alert, + ScrollView, + StyleSheet, + Text, + TouchableOpacity, + View, +} from 'react-native'; +import { useColorScheme } from '../../hooks/use-color-scheme'; +import { useAuth } from '../../src/context/AuthContext'; +import { useRouter } from 'expo-router'; +import Constants from 'expo-constants'; export default function SettingsScreen() { - const { user, serverAddress, logout } = useAuth(); - const router = useRouter(); - const colorScheme = useColorScheme() ?? "light"; - const isDark = colorScheme === "dark"; - const bgColor = isDark ? "#0b0b0d" : "#f5f5f5"; - const sectionBg = isDark ? "#1c1c1e" : "#fff"; - const sectionTitleBg = isDark ? "#111111" : "#f9f9f9"; - const textColor = isDark ? "#fff" : "#333"; - const subTextColor = isDark ? "#c6c6c8" : "#666"; - const primary = isDark ? "#0A84FF" : "#007AFF"; - const destructiveColor = "#f44336"; + const { user, serverAddress, logout } = useAuth(); + const router = useRouter(); + const colorScheme = useColorScheme() ?? 'light'; + const isDark = colorScheme === 'dark'; + const bgColor = isDark ? '#0b0b0d' : '#f5f5f5'; + const sectionBg = isDark ? '#1c1c1e' : '#fff'; + const sectionTitleBg = isDark ? '#111111' : '#f9f9f9'; + const textColor = isDark ? '#fff' : '#333'; + const subTextColor = isDark ? '#c6c6c8' : '#666'; + const primary = isDark ? '#0A84FF' : '#007AFF'; + const destructiveColor = '#f44336'; - const handleLogout = () => { - Alert.alert("Logout", "Are you sure you want to logout?", [ - { text: "Cancel", style: "cancel" }, - { - text: "Logout", - style: "destructive", - onPress: async () => { - router.replace("/login"); - await logout(); - }, - }, - ]); - }; + const handleLogout = () => { + Alert.alert('Logout', 'Are you sure you want to logout?', [ + { text: 'Cancel', style: 'cancel' }, + { + text: 'Logout', + style: 'destructive', + onPress: async () => { + router.replace('/login'); + await logout(); + }, + }, + ]); + }; - const SettingItem = ({ - label, - value, - onPress, - }: { - label: string; - value?: string; - onPress?: () => void; - }) => ( - - {label} - - - {value} - - - - ); + const SettingItem = ({ + label, + value, + onPress, + }: { + label: string; + value?: string; + onPress?: () => void; + }) => ( + + {label} + + + {value} + + + + ); - const ActionButton = ({ - title, - onPress, - destructive = false, - }: { - title: string; - onPress: () => void; - destructive?: boolean; - }) => ( - - {title} - - ); + const ActionButton = ({ + title, + onPress, + destructive = false, + }: { + title: string; + onPress: () => void; + destructive?: boolean; + }) => ( + + {title} + + ); - return ( - - - - - User Information - - - - - + return ( + + + + + Information + + + + + + - - - App Info - - - - + + + Actions + + + - - - Actions - - - - - - - UpSnap Mobile App - - - Connect to your UpSnap server - - - - - ); + + + UpSnap Mobile App + + + Connect to your UpSnap server + + + + + ); } const styles = StyleSheet.create({ - container: { - flex: 1, - backgroundColor: "#f5f5f5", - }, - content: { - padding: 20, - }, - section: { - backgroundColor: "#fff", - borderRadius: 12, - marginBottom: 20, - overflow: "hidden", - shadowColor: "#000", - shadowOffset: { width: 0, height: 2 }, - shadowOpacity: 0.1, - shadowRadius: 4, - elevation: 3, - }, - sectionTitle: { - fontSize: 14, - fontWeight: "bold", - color: "#666", - paddingHorizontal: 15, - paddingTop: 15, - paddingBottom: 10, - backgroundColor: "#f9f9f9", - borderTopLeftRadius: 12, - borderTopRightRadius: 12, - }, - settingItem: { - flexDirection: "row", - justifyContent: "space-between", - alignItems: "center", - paddingHorizontal: 15, - paddingVertical: 15, - borderBottomWidth: 1, - borderBottomColor: "#f0f0f0", - }, - settingLabel: { - fontSize: 16, - color: "#333", - flex: 1, - }, - settingValueContainer: { - flex: 1, - alignItems: "flex-end", - }, - settingValue: { - fontSize: 14, - color: "#666", - maxWidth: 200, - }, - actionButton: { - backgroundColor: "#007AFF", - margin: 15, - padding: 15, - borderRadius: 8, - alignItems: "center", - }, - actionButtonDestructive: { - backgroundColor: "#f44336", - }, - actionButtonText: { - color: "#fff", - fontSize: 16, - fontWeight: "bold", - }, - actionButtonTextDestructive: { - color: "#fff", - }, - footer: { - alignItems: "center", - paddingVertical: 30, - }, - footerText: { - fontSize: 14, - color: "#999", - marginBottom: 5, - }, + container: { + flex: 1, + backgroundColor: '#f5f5f5', + }, + content: { + padding: 20, + }, + section: { + backgroundColor: '#fff', + borderRadius: 12, + marginBottom: 20, + overflow: 'hidden', + shadowColor: '#000', + shadowOffset: { width: 0, height: 2 }, + shadowOpacity: 0.1, + shadowRadius: 4, + elevation: 3, + }, + sectionTitle: { + fontSize: 14, + fontWeight: 'bold', + color: '#666', + paddingHorizontal: 15, + paddingTop: 15, + paddingBottom: 10, + backgroundColor: '#f9f9f9', + borderTopLeftRadius: 12, + borderTopRightRadius: 12, + }, + settingItem: { + flexDirection: 'row', + justifyContent: 'space-between', + alignItems: 'center', + paddingHorizontal: 15, + paddingVertical: 15, + borderBottomWidth: 1, + borderBottomColor: '#f0f0f0', + }, + settingLabel: { + fontSize: 16, + color: '#333', + flex: 1, + }, + settingValueContainer: { + flex: 1, + alignItems: 'flex-end', + }, + settingValue: { + fontSize: 14, + color: '#666', + maxWidth: 200, + }, + actionButton: { + backgroundColor: '#007AFF', + margin: 15, + padding: 15, + borderRadius: 8, + alignItems: 'center', + }, + actionButtonDestructive: { + backgroundColor: '#f44336', + }, + actionButtonText: { + color: '#fff', + fontSize: 16, + fontWeight: 'bold', + }, + actionButtonTextDestructive: { + color: '#fff', + }, + footer: { + alignItems: 'center', + paddingVertical: 30, + }, + footerText: { + fontSize: 14, + color: '#999', + marginBottom: 5, + }, }); diff --git a/app/login.tsx b/app/login.tsx index 1cdda6f..ea0febd 100644 --- a/app/login.tsx +++ b/app/login.tsx @@ -55,7 +55,7 @@ export default function LoginScreen() { > - Remote WoL + Jumpstart Mobile Frontend for UpSnap diff --git a/assets/remotewol-ios.icon/Assets/Image.png b/assets/remotewol-ios.icon/Assets/Image.png new file mode 100644 index 0000000..391371e Binary files /dev/null and b/assets/remotewol-ios.icon/Assets/Image.png differ diff --git a/assets/remotewol-ios.icon/Assets/display 2.png b/assets/remotewol-ios.icon/Assets/display 2.png new file mode 100644 index 0000000..8783a71 Binary files /dev/null and b/assets/remotewol-ios.icon/Assets/display 2.png differ diff --git a/assets/remotewol-ios.icon/Assets/display 3.png b/assets/remotewol-ios.icon/Assets/display 3.png new file mode 100644 index 0000000..210fbd3 Binary files /dev/null and b/assets/remotewol-ios.icon/Assets/display 3.png differ diff --git a/assets/remotewol-ios.icon/Assets/display.png b/assets/remotewol-ios.icon/Assets/display.png new file mode 100644 index 0000000..5c2a731 Binary files /dev/null and b/assets/remotewol-ios.icon/Assets/display.png differ diff --git a/assets/remotewol-ios.icon/Assets/gopher.svg b/assets/remotewol-ios.icon/Assets/gopher.svg deleted file mode 100644 index ce565eb..0000000 --- a/assets/remotewol-ios.icon/Assets/gopher.svg +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - PACKAGE - - - - - - - - - - - - - - - - - - - - diff --git a/assets/remotewol-ios.icon/icon.json b/assets/remotewol-ios.icon/icon.json index 861340b..ebdf087 100644 --- a/assets/remotewol-ios.icon/icon.json +++ b/assets/remotewol-ios.icon/icon.json @@ -1,19 +1,48 @@ { "fill" : { - "automatic-gradient" : "extended-srgb:0.00000,0.53333,1.00000,1.00000" + "automatic-gradient" : "extended-gray:1.00000,1.00000" }, "groups" : [ { "layers" : [ { - "glass" : true, - "image-name" : "gopher.svg", - "name" : "gopher", + "hidden" : false, + "image-name" : "Image.png", + "name" : "Image", "position" : { - "scale" : 0.45, + "scale" : 0.65, "translation-in-points" : [ - -6.017952794793246, - -0.4600234584925147 + 0, + -52.942187500000045 + ] + } + }, + { + "fill-specializations" : [ + { + "appearance" : "dark", + "value" : "none" + } + ], + "image-name-specializations" : [ + { + "value" : "display 2.png" + }, + { + "appearance" : "dark", + "value" : "display.png" + }, + { + "appearance" : "tinted", + "value" : "display 3.png" + } + ], + "name" : "display 3", + "position" : { + "scale" : 1.25, + "translation-in-points" : [ + 0, + -10.625 ] } }