diff --git a/App.js b/App.js index 232615f..4dd4934 100644 --- a/App.js +++ b/App.js @@ -19,7 +19,7 @@ Sentry.init({ dsn: "https://8d6c3de1940a4e4f8b81cf4d2150bdea@o492140.ingest.sentry.io/5558869", enableInExpoDevelopment: true, - debug: true, // Sentry will try to print out useful debugging information if something goes wrong with sending an event. Set this to `false` in production. + // debug: true, // Sentry will try to print out useful debugging information if something goes wrong with sending an event. Set this to `false` in production. }); Sentry.Native.nativeCrash(); @@ -38,11 +38,6 @@ export default class App extends React.Component { ...Ionicons.font, }); this.setState({ isReady: true }); - // await FileSystem.makeDirectoryAsync( - // FileSystem.documentDirectory + "photos" - // ).catch((e) => { - // console.log(e, "Directory already exists"); - // }); } render() { diff --git a/components/job-list-item/job-list-item.component.jsx b/components/job-list-item/job-list-item.component.jsx index 2fc019e..62c9b76 100644 --- a/components/job-list-item/job-list-item.component.jsx +++ b/components/job-list-item/job-list-item.component.jsx @@ -1,7 +1,7 @@ import { Ionicons } from "@expo/vector-icons"; import { useNavigation } from "@react-navigation/native"; import { Body, H3, Icon, ListItem, Right } from "native-base"; -import React from "react"; +import React, { useRef } from "react"; import { useTranslation } from "react-i18next"; import { Animated, Text } from "react-native"; import { TouchableOpacity } from "react-native-gesture-handler"; @@ -11,9 +11,7 @@ import { createStructuredSelector } from "reselect"; import { setCameraJob, setCameraJobId } from "../../redux/app/app.actions"; import styles from "../styles"; -const mapStateToProps = createStructuredSelector({ - //currentUser: selectCurrentUser -}); +const mapStateToProps = createStructuredSelector({}); const mapDispatchToProps = (dispatch) => ({ setCameraJobId: (id) => dispatch(setCameraJobId(id)), setCameraJob: (job) => dispatch(setCameraJob(job)), @@ -22,34 +20,7 @@ const mapDispatchToProps = (dispatch) => ({ export function JobListItem({ setCameraJob, setCameraJobId, item }) { const { t } = useTranslation(); const navigation = useNavigation(); - - // useEffect(() => { - // (async () => { - // if (Platform.OS !== "web") { - // const { - // status, - // } = await ImagePicker.requestMediaLibraryPermissionsAsync(); - // if (status !== "granted") { - // alert("Sorry, we need camera roll permissions to make this work!"); - // } - // } - // })(); - // }, []); - - // const pickImage = async () => { - // let result = await ImagePicker.launchImageLibraryAsync({ - // mediaTypes: ImagePicker.MediaTypeOptions.All, - // allowsEditing: true, - // aspect: [4, 3], - // quality: 1, - // }); - - // console.log(result); - - // if (!result.cancelled) { - // // setImage(result.uri); - // } - // }; + const _swipeableRow = useRef(null); const RenderRightAction = (progress, dragX) => { const scale = dragX.interpolate({ @@ -64,51 +35,19 @@ export function JobListItem({ setCameraJob, setCameraJobId, item }) { setCameraJobId(item.id); setCameraJob(item); navigation.navigate("MediaBrowserTab"); + _swipeableRow.current.close(); }} > - + ); }; - // const RenderLeftAction = (progress, dragX) => { - // const scale = dragX.interpolate({ - // inputRange: [0, 100], - // outputRange: [0, 1], - // extrapolate: "clamp", - // }); - - // return ( - // { - // setCameraJobId(item.id); - // setCameraJob(item); - // navigation.push("MediaBrowser"); - // //pickImage(item.id); - // }} - // > - // - // Add - // - // - // ); - // }; const onPress = () => { navigation.push("JobDetail", { @@ -119,8 +58,9 @@ export function JobListItem({ setCameraJob, setCameraJobId, item }) { return ( diff --git a/components/screen-job-detail/screen-job-detail.component.jsx b/components/screen-job-detail/screen-job-detail.component.jsx index c4f0f30..9276cea 100644 --- a/components/screen-job-detail/screen-job-detail.component.jsx +++ b/components/screen-job-detail/screen-job-detail.component.jsx @@ -2,16 +2,15 @@ import { useQuery } from "@apollo/client"; import { Tab, Tabs } from "native-base"; import React from "react"; import { useTranslation } from "react-i18next"; -import { Text } from "react-native"; import { GET_JOB_BY_PK } from "../../graphql/jobs.queries"; import ErrorDisplay from "../error-display/error-display.component"; -import JobTombstone from "../job-tombstone/job-tombstone.component"; -import LoadingDisplay from "../loading-display/loading-display.component"; -import JobNotes from "../job-notes/job-notes.component"; import JobDocuments from "../job-documents/job-documents.component"; import JobLines from "../job-lines/job-lines.component"; +import JobNotes from "../job-notes/job-notes.component"; +import JobTombstone from "../job-tombstone/job-tombstone.component"; +import LoadingDisplay from "../loading-display/loading-display.component"; -export default function ScreenJobDetail({ navigation, route, ...restProps }) { +export default function ScreenJobDetail({ route }) { const { params: { jobId }, } = route; diff --git a/components/screen-main/screen-main.component.jsx b/components/screen-main/screen-main.component.jsx index d989624..aa7c2b5 100644 --- a/components/screen-main/screen-main.component.jsx +++ b/components/screen-main/screen-main.component.jsx @@ -4,6 +4,7 @@ import { NavigationContainer } from "@react-navigation/native"; import { createStackNavigator } from "@react-navigation/stack"; import i18n from "i18next"; import React, { useEffect } from "react"; +import { SafeAreaView } from "react-native-safe-area-context"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; import { @@ -15,21 +16,14 @@ import { selectBodyshop, selectCurrentUser, } from "../../redux/user/user.selectors"; -//import ScreenCamera from "../screen-camera/screen-camera"; import ScreenJobDetail from "../screen-job-detail/screen-job-detail.component"; import ScreenJobList from "../screen-job-list/screen-job-list.component"; import ScreenMediaBrowser from "../screen-media-browser/screen-media-browser.component"; -//import ScreenMediaCache from "../screen-media-cache/screen-media-cache.component"; -//import ScreenMessagingConversation from "../screen-messaging-conversation/screen-messaging-conversation.component"; -//import ScreenMessagingList from "../screen-messaging-list/screen-messaging-list.component"; import ScreenSettingsComponent from "../screen-settings/screen-settings.component"; import ScreenSignIn from "../screen-sign-in/screen-sign-in.component"; import ScreenSplash from "../screen-splash/screen-splash.component"; const JobStack = createStackNavigator(); -//const CameraStack = createStackNavigator(); -//const MessagingStack = createStackNavigator(); -//const MediaCacheStack = createStackNavigator(); const MoreStack = createStackNavigator(); const BottomTabs = createBottomTabNavigator(); const MediaBrowserStack = createStackNavigator(); @@ -64,38 +58,9 @@ const JobStackNavigator = () => ( i18n.t("joblist.labels.detail"), })} /> - {/* ({ - // title: - // (route.params && route.params.title) || - // i18n.t("joblist.labels.detail"), - // })} - /> */} ); -// const CameraStackNavigator = () => ( -// -// -// -// ); - -// const MediaCacheStackNavigator = () => ( -// -// -// -// ); - const MediaBrowserStackNavigator = () => ( ( ); -// const MessagingStackNavigator = () => ( -// -// -// -// -// ); - const MoreStackNavigator = () => ( ( let iconName; if (route.name === "JobTab") { iconName = "ios-list"; - } else if (route.name === "MessagingTab") { - iconName = "ios-chatboxes"; } else if (route.name === "MoreTab") { iconName = "ios-settings"; - } else if (route.name === "CameraTab") { - iconName = "ios-camera"; - } else if ( - route.name === "MediaCacheTab" || - route.name === "MediaBrowserTab" - ) { + } else if (route.name === "MediaBrowserTab") { iconName = "ios-photos"; } else { //iconName = "customerservice"; @@ -172,20 +117,6 @@ const BottomTabsNavigator = () => ( options={{ title: i18n.t("mediabrowser.titles.mediabrowsertab") }} component={MediaBrowserStackNavigator} /> - {/* */} - {/* */} - {currentUser.authorized === null ? ( - - ) : currentUser.authorized ? ( - bodyshop ? ( - - ) : ( + + + {currentUser.authorized === null ? ( - ) - ) : ( - - )} - + ) : currentUser.authorized ? ( + bodyshop ? ( + + ) : ( + + ) + ) : ( + + )} + + ); } export default connect( diff --git a/components/screen-media-browser/screen-media-browser.component.jsx b/components/screen-media-browser/screen-media-browser.component.jsx index 2846395..7b047a4 100644 --- a/components/screen-media-browser/screen-media-browser.component.jsx +++ b/components/screen-media-browser/screen-media-browser.component.jsx @@ -3,6 +3,7 @@ import { AssetsSelector } from "expo-images-picker"; import * as MediaLibrary from "expo-media-library"; import _ from "lodash"; import { H3 } from "native-base"; +import plimit from "p-limit"; import React, { useCallback, useState } from "react"; import { useTranslation } from "react-i18next"; import { StyleSheet, Text, View } from "react-native"; @@ -20,7 +21,6 @@ import { handleUpload } from "../../util/document-upload.utility"; import CameraSelectJob from "../camera-select-job/camera-select-job.component"; import UploadDeleteSwitch from "../upload-delete-switch/upload-delete-switch.component"; import UploadProgress from "../upload-progress/upload-progress.component"; -import plimit from "p-limit"; const limit = plimit(2); @@ -31,7 +31,6 @@ const mapStateToProps = createStructuredSelector({ deleteAfterUpload: selectDeleteAfterUpload, }); -export default connect(mapStateToProps, null)(ImageBrowserScreen); export function ImageBrowserScreen({ currentUser, bodyshop, @@ -49,6 +48,7 @@ export function ImageBrowserScreen({ const forceRerender = useCallback(() => { setTick((tick) => tick + 1); }, []); + async function handleOnSuccess(uri, id) { console.log("Succesful upload!", uri); if (deleteAfterUpload) { @@ -70,9 +70,6 @@ export function ImageBrowserScreen({ //Appears to work for android. //iOS provides the filename, android doe snot. filename = p.filename || p.uri.split("/").pop(); - - //File name for ios - actions.push( limit( handleUpload( @@ -130,7 +127,7 @@ export function ImageBrowserScreen({ //maxSelections: 5, margin: 3, portraitCols: 4, - landscapeCols: 5, + landscapeCols: 6, widgetWidth: 100, widgetBgColor: "white", selectedBgColor: "#adadad", @@ -209,3 +206,5 @@ const styles = StyleSheet.create({ function handleOnError(...props) { console.log("HandleOnError", props); } + +export default connect(mapStateToProps, null)(ImageBrowserScreen); diff --git a/components/screen-settings/screen-settings.component.jsx b/components/screen-settings/screen-settings.component.jsx index 4f7a784..d15d9a9 100644 --- a/components/screen-settings/screen-settings.component.jsx +++ b/components/screen-settings/screen-settings.component.jsx @@ -1,15 +1,12 @@ import React from "react"; -import { View, Text, SafeAreaView, Button } from "react-native"; -import SignOutButton from "../sign-out-button/sign-out-button.component"; +import { Button, View } from "react-native"; import { purgeStoredState } from "redux-persist"; +import SignOutButton from "../sign-out-button/sign-out-button.component"; export default function ScreenSettingsComponent() { return ( - - - The settings Screen - -