{"version":3,"sources":["assets/worksite.jpg","assets/mapWorksiteHome.png","assets/checkbox-blank-circle.png","assets/bulldozer.png","assets/signInBackground.png","assets/signInImage.png","assets/pdfFile.png","assets/AppStoreBadge_FR_black.svg","assets/google-play-badge.png","components/images.js","components/AppleAppStoreButton.js","components/GooglePlayStoreButton.js","translate/globalTranslate.js","utils/webBrowserOS.web.js","routes/NotFound.js","appConfig.js","url.js","API/api.js","Helper/Helper.js","components/comment.js","components/publication.js","components/tabViewWorksite.js","components/workSiteItemContent.js","routes/workSiteItem.web.js","navigation/navigationBetweenViews.web.js","Helper/GlobalNotif.js","Helper/UserContext.js","App.js","index.js"],"names":["module","exports","Images","imgWorksite","require","imgHome","iconMarker","iconWorksiteMarker","backgroundSignIn","imgSignIn","logoPdf","appStore","playStore","AppleAppStoreButton","widthInWv","maxHeight","Image","href","source","uri","style","width","height","undefined","resizeMode","GooglePlayStoreButton","i18n","fallbacks","locale","Localization","toString","includes","translations","en","SeeWorkSite","SearchWorksite","tabWorksite","tabMap","tabMessages","tabSettings","From","To","Search","Publication","Comments","LastPublications","PublicationDate","WriteComment","PostComment","SendButton","privateMessage","PushNotifUnavailable","OneAddress","OneWorksitePlace","WorksitesInArea","AreaOfInterest","IamSearching","WillBeVisibleAfterModeration","MessageSent","CommentObject","YourComment","WorksitesInMyArea","SubscribedWorksite","Welcome","Subscribe","FindSites","FunctionalityComingSoon","NoReceivedAnyMessage","Hello","WelcomToHelloTravaux","ChooseAPseudonym","MyPseudonym","LetsGo","Me","PleaseEnterAPseudonyme","PseudonymAlreadyTaken","EnteraPseudonymHere","AcceptLegalNotices","ConsultLegalNotice","MyAccount","Pseudonym","RegistrationDate","Geolocation","Activated","Disabled","DeletingMyAccount","DeletingAccountMessage","DeletingCommentMessage","ErrorMessage","ErrorInputMessage","ExtensionErrorMessage","Warning","NoImageAdd","DownloadAppToContinue","DownloadApp","translateApp","t","TabNavigationWorksite","TabNavigationMap","TabNavigationMessage","TabNavigationSettings","StartDate","EndDate","SearchBar","PublicationTab","CommentTab","ButtonSend","getWebBrowserMobileOperatingSystem","userAgent","navigator","vendor","window","opera","test","MSStream","NotFound","webBrowserOS","ImageBackground","styles","backgroundImage","View","container","Text","title","translate","React","Component","StyleSheet","create","fontWeight","fontSize","color","textAlign","marginBottom","absoluteFillObject","opacity","flex","alignItems","justifyContent","BASE_URL","Platform","select","web","process","default","Config","API_BASE_URL","API_WORKSITE_URL","API_WORKSITE_ITEM_URL","API_WORKSITE_NEARBY","API_PUBLICATION_CREATE","API_WORKSITE_INCOMING_NEARBY","API_USER","API_PSEUDO","API_SUBSCRIBED_WORKSITE","API_SUBSCRIBE_WORKSITE","API_UNSUBSCRIBE_WORKSITE","API_GET_NOTIFICATIONS","API_NOTIFICATION_CHANGE_STATUS","API_COMMENTS_ANSWERS_LIST","API_LOCATION_WORKSITE","API_DELETE_MESSAGE","API_PUSH_NOTIFICATION_ENDPOINT","API_DELETE_USER","CryptoJS","getCommonHeaders","deviceId","Constants","installationId","timestamp","Math","floor","Date","now","cryptedKey","HmacSHA256","Accept","appVersion","APP","OS","getFetchAPI","url","fetch","method","headers","then","response","status","json","catch","error","console","warn","getPatchAPI","postFetchAPI","body","JSON","stringify","Delete","alert","Alert","renderImageFullScreen","imageLink","minWidth","resizeMethod","Comment","Props","closeModal","setState","modalVisible","setModalVisible","state","animationType","transparent","visible","this","SafeAreaView","container_view_modal","TouchableOpacity","onPress","button_close","MaterialCommunityIcons","size","name","container_image","suppr","props","com","user","deleteCommentary","URLS","regex","map","i","user_pseudo","id","is_publication","commentDate","createdAt","replace","ext","exec","key","containerStyle","borderRadius","borderColor","main_container","title_container","separator","date","text_container","text","renderImageComment","Linking","openURL","answers","answer","isModerated","renderAnswerVisibilityInfo","is_public","renderImage","Id","WorkSiteId","Name","titleHeader","tabContent","onAuthenticatedLinkPress","navigation","navigate","worksiteId","worksiteName","title_principal","_renderCommentary","Modal","backgroundColor","paddingBottom","fontStyle","paddingLeft","borderWidth","margin","paddingTop","marginTop","borderBottomColor","borderBottomWidth","display","flexDirection","paddingRight","lineHeight","position","top","right","zIndex","publicationAttachments","attachments","attachmentLink","attachment","publicationImage","modal_content","Publications","pub","publications","forEach","publicationDate","imageLink2","imageLink3","imageLink4","push","container_attachments","maxWidth","marginRight","TabComponent","handleIndexChange","index","selectedIndex","handleCustomIndexSelect","prevState","SegmentedControlTab","values","onTabPress","tabsContainerStyle","tab_container","tabStyle","tab","activeTabStyle","tab_active","tabTextStyle","tab_text","activeTabTextStyle","tabText_active","workSiteId","workSiteName","borderTopWidth","borderTopColor","paddingEnd","paddingStart","borderLeftColor","borderRightColor","WorkSiteItemContent","isSubscribed","workSiteItem","subscribe","callback","handleReloadWorksiteSubscribe","itemWorkSiteId","WorksiteId","postfavouriteSite","itemName","itemStartDate","startDate","itemEndDate","endDate","itemPublications","description","ScrollView","image_container","image","LinearGradient","colors","gradient","header","title_text","subButton","_addFavouriteWorksite","content_container","infos","date_container","date_text","description_container","box","alignContent","marginLeft","bottom","flexWrap","alignSelf","left","currentUrl","WorkSiteItem","_loadWorksite","a","async","route","params","workSiteOrStatus","publicPublications","filter","publication","start_date","end_date","headerText","loaderContainer","ActivityIndicator","Stack","createStackNavigator","WorkSiteStackNavigator","Navigator","initialRouteName","Screen","component","options","headerShown","linking","config","screens","WorkSiteDetails","getStateFromPath","path","getPathFromState","RootStack","NavigationContainer","GlobalNotif","singleton","callbacks","value","item","UserContext","createContext","initialState","pseudo","token","updateTokenDevice","log","appName","platform","ios","android","postToken","ok","message","reducer","action","type","payload","Error","UserContextProvider","useReducer","dispatch","Provider","children","App","init","registerRootComponent"],"mappings":"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","file":"static/js/app.6f50e253.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/worksite.473aa4ba.jpg\";","module.exports = __webpack_public_path__ + \"static/media/mapWorksiteHome.c151fc3d.png\";","module.exports = __webpack_public_path__ + \"static/media/checkbox-blank-circle.82067723.png\";","module.exports = __webpack_public_path__ + \"static/media/bulldozer.501a716a.png\";","module.exports = __webpack_public_path__ + \"static/media/signInBackground.f8d87afa.png\";","module.exports = __webpack_public_path__ + \"static/media/signInImage.744490df.png\";","module.exports = __webpack_public_path__ + \"static/media/pdfFile.33fd443d.png\";","module.exports = __webpack_public_path__ + \"static/media/AppStoreBadge_FR_black.080651de.svg\";","module.exports = __webpack_public_path__ + \"static/media/google-play-badge.8402d4a5.png\";","const Images = {\n imgWorksite: require('../assets/worksite.jpg'),\n imgHome: require('../assets/mapWorksiteHome.png'),\n iconMarker: require('../assets/checkbox-blank-circle.png'),\n iconWorksiteMarker: require('../assets/bulldozer.png'),\n backgroundSignIn: require('../assets/signInBackground.png'),\n imgSignIn: require('../assets/signInImage.png'),\n logoPdf: require('../assets/pdfFile.png'),\n appStore: require('../assets/AppStoreBadge_FR_black.svg'),\n playStore: require('../assets/google-play-badge.png'),\n};\n\nexport default Images;\n","import React from 'react';\nimport { Image } from 'react-native';\nimport Images from './images';\n\nconst STORE_LINK = 'https://apps.apple.com/fr/app/hello-travaux/id1482610760';\n\nconst ASPECT_RATIO = 145.5 / 56;\n\nexport const AppleAppStoreButton = ({ widthInWv = 50, maxHeight }) => {\n return (\n \n );\n};\n","import React from 'react';\nimport { Image } from 'react-native';\nimport Images from './images';\n\nconst STORE_LINK =\n 'https://play.google.com/store/apps/details?id=eu.hellotravaux&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1';\n\nconst ASPECT_RATIO = 646 / 250;\n\nexport const GooglePlayStoreButton = ({ widthInWv = 50, maxHeight }) => {\n return (\n \n );\n};\n","import * as Localization from 'expo-localization';\nimport i18n from 'i18n-js';\n\ni18n.fallbacks = true;\ni18n.locale = Localization.locale;\n\nif (i18n.locale.toString().includes('-CH')) {\n i18n.locale = 'fr-FR';\n}\n\ni18n.translations = {\n en: {\n SeeWorkSite: 'See job sites',\n SearchWorksite: 'Search a job site',\n tabWorksite: 'Job sites',\n tabMap: 'Map',\n tabMessages: 'Answers',\n tabSettings: 'Account',\n From: 'From',\n To: 'to',\n Search: 'Search',\n Publication: 'Posts',\n Comments: 'Chat',\n LastPublications: 'Latest posts',\n PublicationDate: 'Posted on',\n WriteComment: 'To write a comment',\n PostComment: 'Post a comment',\n SendButton: 'SEND ',\n privateMessage: 'private message',\n PushNotifUnavailable: 'Notifications are disabled',\n OneAddress: 'An address',\n OneWorksitePlace: 'A construction area',\n WorksitesInArea: 'Job sites in the area',\n AreaOfInterest: 'Which area are you interested in?',\n IamSearching: \"I'm looking for\",\n WillBeVisibleAfterModeration: 'Your message will be visible after moderation',\n MessageSent: 'Message sent',\n CommentObject: 'Object',\n YourComment: 'To write a comment...',\n WorksitesInMyArea: 'Job sites in the area',\n SubscribedWorksite: 'Job sites you have subscribed to',\n Welcome: 'Welcome',\n Subscribe: 'Subscribe to the job sites near you to learn about progress in real time !',\n FindSites: 'Find construction site',\n FunctionalityComingSoon: 'Functionality coming soon!',\n NoReceivedAnyMessage: 'You have not received any messages',\n Hello: 'Hello',\n WelcomToHelloTravaux: 'and welcome to Hello Travaux!',\n ChooseAPseudonym: 'Before you start, choose a pseudonym to communicate with our teams',\n MyPseudonym: 'My pseudonym',\n LetsGo: \"Let's go\",\n Me: 'Me',\n PleaseEnterAPseudonyme: 'Please enter a pseudonyme',\n PseudonymAlreadyTaken: 'This pseudonym is already taken!',\n EnteraPseudonymHere: 'Enter a pseudonym here',\n AcceptLegalNotices:\n 'I have read the personal data policy and I accept the processing of my personal data under the conditions specified in this policy.',\n ConsultLegalNotice: 'To consult the personal data protection policy, please click on this link',\n MyAccount: 'My account',\n Pseudonym: 'Pseudonym',\n RegistrationDate: 'Registration date',\n Geolocation: 'Geolocation',\n Activated: 'activated',\n Disabled: 'disabled',\n DeletingMyAccount: 'Deleting my account',\n DeletingAccountMessage: 'Your account has been deleted',\n DeletingCommentMessage: 'The comment has been deleted',\n ErrorMessage: 'An error occured, please try again later',\n ErrorInputMessage: 'Please complete this field.',\n ExtensionErrorMessage: 'Only png, jpeg, jpg files are allowed',\n Warning: 'Warning !',\n NoImageAdd: 'No file loaded (only images allowed)',\n DownloadAppToContinue: 'Download the app to continue!',\n DownloadApp: 'Download the app',\n },\n 'fr-FR': {\n SeeWorkSite: 'Voir les chantiers',\n SearchWorksite: 'Rechercher un chantier',\n tabWorksite: 'Chantiers',\n tabMap: 'Carte',\n tabMessages: 'Réponses',\n tabSettings: 'Compte',\n From: 'Du',\n To: 'Au',\n Search: 'Rechercher',\n Publication: 'Publications',\n Comments: 'Discussion',\n LastPublications: 'Dernières publications',\n PublicationDate: 'Publié le',\n WriteComment: 'Ecrire un commentaire',\n PostComment: 'Poster un commentaire',\n SendButton: 'ENVOYER ',\n privateMessage: 'message privé',\n PushNotifUnavailable: 'Notifications inactives',\n OneAddress: 'Une adresse',\n OneWorksitePlace: 'Une zone de chantier',\n WorksitesInArea: 'Chantiers de la zone',\n AreaOfInterest: 'Quelle zone vous intéresse ?',\n IamSearching: 'Je recherche',\n WillBeVisibleAfterModeration: 'Votre message sera visible après modération',\n MessageSent: 'Message envoyé',\n CommentObject: 'Objet du commentaire',\n YourComment: 'Votre commentaire ...',\n WorksitesInMyArea: 'Chantiers dans ma zone',\n SubscribedWorksite: 'Chantiers abonnés',\n Welcome: 'Bienvenue',\n Subscribe:\n 'Abonnez vous aux chantiers près de chez vous afin d’être informé en temps réel de l’évolution des travaux !',\n FindSites: 'Trouver des travaux',\n FunctionalityComingSoon: 'Fonctionnalité bientôt disponible !',\n NoReceivedAnyMessage: \"vous n'avez pas encore de message\",\n Hello: 'Bonjour',\n WelcomToHelloTravaux: 'et bienvenue sur Hello Travaux !',\n ChooseAPseudonym:\n 'Avant de commencer choisissez un pseudonyme afin de communiquer avec nos équipes',\n MyPseudonym: 'Mon pseudonyme',\n LetsGo: \"C'est parti\",\n Me: 'Moi',\n PleaseEnterAPseudonyme: 'Veuillez renseigner un pseudonyme',\n PseudonymAlreadyTaken: 'Ce pseudonyme est déjà pris !',\n EnteraPseudonymHere: 'Saisissez un pseudonyme ici',\n AcceptLegalNotices:\n 'J’ai lu la politique de données personnelles et j’accepte le traitement de mes données personnelles dans les conditions détaillées dans cette politique.',\n ConsultLegalNotice:\n 'Pour consulter la politique de protection de données, veuillez cliquer sur ce lien',\n MyAccount: 'Mon compte',\n Pseudonym: 'Pseudonyme',\n RegistrationDate: \"Date d'inscription\",\n Geolocation: 'Géolocalisation',\n Activated: 'Activée',\n Disabled: 'Désactivée',\n DeletingMyAccount: 'Suppression de mon compte',\n DeletingAccountMessage: 'Votre compte a été supprimé',\n DeletingCommentMessage: 'Le commentaire a bien été supprimé',\n ErrorMessage: 'Une erreur est survenue, Veuillez réessayer plus tard',\n ErrorInputMessage: 'Veuillez renseigner ce champ.',\n ExtensionErrorMessage:\n \"Votre fichier n'est pas au bon format. Seuls les fichier png, jpeg, jpg sont autorisés.\",\n Warning: 'Attention !',\n NoImageAdd: 'Aucun fichier chargé (uniquement images autorisées)',\n DownloadAppToContinue: \"Téléchargez l'application pour continuer !\",\n DownloadApp: \"Téléchargez l'application\",\n },\n};\n\nconst translateApp = {\n SeeWorkSite: i18n.t('SeeWorkSite'),\n SearchWorksite: i18n.t('SearchWorksite'),\n TabNavigationWorksite: i18n.t('tabWorksite'),\n TabNavigationMap: i18n.t('tabMap'),\n TabNavigationMessage: i18n.t('tabMessages'),\n TabNavigationSettings: i18n.t('tabSettings'),\n StartDate: i18n.t('From'),\n EndDate: i18n.t('To'),\n SearchBar: i18n.t('Search'),\n PublicationTab: i18n.t('Publication'),\n CommentTab: i18n.t('Comments'),\n LastPublications: i18n.t('LastPublications'),\n PublicationDate: i18n.t('PublicationDate'),\n WriteComment: i18n.t('WriteComment'),\n PostComment: i18n.t('PostComment'),\n ButtonSend: i18n.t('SendButton'),\n privateMessage: i18n.t('privateMessage'),\n PushNotifUnavailable: i18n.t('PushNotifUnavailable'),\n OneAddress: i18n.t('OneAddress'),\n OneWorksitePlace: i18n.t('OneWorksitePlace'),\n WorksitesInArea: i18n.t('WorksitesInArea'),\n AreaOfInterest: i18n.t('AreaOfInterest'),\n IamSearching: i18n.t('IamSearching'),\n WillBeVisibleAfterModeration: i18n.t('WillBeVisibleAfterModeration'),\n MessageSent: i18n.t('MessageSent'),\n CommentObject: i18n.t('CommentObject'),\n YourComment: i18n.t('YourComment'),\n WorksitesInMyArea: i18n.t('WorksitesInMyArea'),\n SubscribedWorksite: i18n.t('SubscribedWorksite'),\n Welcome: i18n.t('Welcome'),\n Subscribe: i18n.t('Subscribe'),\n FindSites: i18n.t('FindSites'),\n FunctionalityComingSoon: i18n.t('FunctionalityComingSoon'),\n NoReceivedAnyMessage: i18n.t('NoReceivedAnyMessage'),\n Hello: i18n.t('Hello'),\n WelcomToHelloTravaux: i18n.t('WelcomToHelloTravaux'),\n ChooseAPseudonym: i18n.t('ChooseAPseudonym'),\n MyPseudonym: i18n.t('MyPseudonym'),\n LetsGo: i18n.t('LetsGo'),\n Me: i18n.t('Me'),\n PleaseEnterAPseudonyme: i18n.t('PleaseEnterAPseudonyme'),\n PseudonymAlreadyTaken: i18n.t('PseudonymAlreadyTaken'),\n EnteraPseudonymHere: i18n.t('EnteraPseudonymHere'),\n AcceptLegalNotices: i18n.t('AcceptLegalNotices'),\n ConsultLegalNotice: i18n.t('ConsultLegalNotice'),\n MyAccount: i18n.t('MyAccount'),\n Pseudonym: i18n.t('Pseudonym'),\n RegistrationDate: i18n.t('RegistrationDate'),\n Geolocation: i18n.t('Geolocation'),\n Disabled: i18n.t('Disabled'),\n Activated: i18n.t('Activated'),\n DeletingMyAccount: i18n.t('DeletingMyAccount'),\n DeletingAccountMessage: i18n.t('DeletingAccountMessage'),\n DeletingCommentMessage: i18n.t('DeletingCommentMessage'),\n ErrorMessage: i18n.t('ErrorMessage'),\n ErrorInputMessage: i18n.t('ErrorInputMessage'),\n ExtensionErrorMessage: i18n.t('ExtensionErrorMessage'),\n Warning: i18n.t('Warning'),\n NoImageAdd: i18n.t('NoImageAdd'),\n DownloadAppToContinue: i18n.t('DownloadAppToContinue'),\n DownloadApp: i18n.t('DownloadApp'),\n};\nexport default translateApp;\n","export const getWebBrowserMobileOperatingSystem = () => {\n // see https://stackoverflow.com/a/21742107/6529098\n const userAgent = navigator.userAgent || navigator.vendor || window.opera;\n\n // Windows Phone must come first because its UA also contains \"Android\"\n if (/windows phone/i.test(userAgent)) {\n return 'windows';\n }\n\n if (/android/i.test(userAgent)) {\n return 'android';\n }\n\n if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) {\n return 'ios';\n }\n\n return 'unknown';\n};\n","import React from 'react';\nimport { StyleSheet, View, ImageBackground, Text } from 'react-native';\nimport { AppleAppStoreButton } from '../components/AppleAppStoreButton';\nimport { GooglePlayStoreButton } from '../components/GooglePlayStoreButton';\nimport Images from '../components/images';\nimport translate from '../translate/globalTranslate';\nimport { getWebBrowserMobileOperatingSystem } from '../utils/webBrowserOS';\n\nclass NotFound extends React.Component {\n render() {\n const webBrowserOS = getWebBrowserMobileOperatingSystem();\n\n return (\n <>\n \n \n {translate.DownloadAppToContinue}\n\n {webBrowserOS !== 'ios' && }\n {webBrowserOS !== 'android' && }\n \n >\n );\n }\n}\n\nconst styles = StyleSheet.create({\n title: {\n fontWeight: 'bold',\n fontSize: 22,\n color: '#000000',\n textAlign: 'center',\n marginBottom: 50,\n },\n backgroundImage: { ...StyleSheet.absoluteFillObject, opacity: 0.1 },\n container: { flex: 1, alignItems: 'center', justifyContent: 'center' },\n});\n\nexport default NotFound;\n","export default {\n VERSION: '11',\n};\n","import Config from '@bam.tech/react-native-config';\nimport { Platform } from 'react-native';\nconst BASE_URL = Platform.select({\n web: process.env.API_BASE_URL,\n default: Config.API_BASE_URL,\n});\n\nexport default {\n API_WORKSITE_URL: `${BASE_URL}/worksites/`,\n API_WORKSITE_ITEM_URL: `${BASE_URL}/worksite/`,\n API_WORKSITE_NEARBY: `${BASE_URL}/worksites/nearby/`,\n API_PUBLICATION_CREATE: `${BASE_URL}/publication`,\n API_WORKSITE_INCOMING_NEARBY: `${BASE_URL}/incoming/worksites/`,\n API_USER: `${BASE_URL}/register`,\n API_PSEUDO: `${BASE_URL}/profile/pseudo`,\n API_SUBSCRIBED_WORKSITE: `${BASE_URL}/subscribed/worksites`,\n API_SUBSCRIBE_WORKSITE: `${BASE_URL}/subscribe`,\n API_UNSUBSCRIBE_WORKSITE: `${BASE_URL}/unsubscribe`,\n API_GET_NOTIFICATIONS: `${BASE_URL}/get/count/notifications`,\n API_NOTIFICATION_CHANGE_STATUS: `${BASE_URL}/change-status`,\n API_COMMENTS_ANSWERS_LIST: `${BASE_URL}/comments/answers`,\n API_LOCATION_WORKSITE: `${BASE_URL}/search/location/`,\n API_DELETE_MESSAGE: `${BASE_URL}/publication/delete/`,\n API_PUSH_NOTIFICATION_ENDPOINT: `${BASE_URL}/push-key`,\n API_DELETE_USER: `${BASE_URL}/revoke/`,\n};\n","import Constants from 'expo-constants';\nimport { Alert, Platform } from 'react-native';\nimport * as Localization from 'expo-localization';\nimport APP from '../appConfig';\nimport URLS from '../url';\nimport translate from '../translate/globalTranslate';\n\nvar CryptoJS = require('crypto-js');\n\n/***** Variables Globales ******/\n\nconst secretKey = '9NiYOZBTfg9oOUSchIuGulTdr6hx7XuL';\n\nconst getCommonHeaders = () => {\n const deviceId = Constants.installationId;\n const timestamp = Math.floor(Date.now() / 1000);\n const cryptedKey = CryptoJS.HmacSHA256(timestamp + '', secretKey);\n\n return {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n locale: Localization.locale,\n appVersion: APP.VERSION,\n timestamp,\n cryptedKey,\n ...(Platform.OS === 'web' ? null : { deviceId }),\n };\n};\n\n/************ GET API ***********/\n\nexport function getWorksites() {\n return getFetchAPI(URLS.API_WORKSITE_URL);\n}\n\nexport function getWorksite(worksiteId) {\n return getFetchAPI(URLS.API_WORKSITE_ITEM_URL + worksiteId);\n}\n\nexport function getWorksitesNearby(lat, lon) {\n return getFetchAPI(URLS.API_WORKSITE_NEARBY + lat + '/' + lon);\n}\n\nexport function getIncomingNearbyWorksites(lat, lon) {\n return getFetchAPI(URLS.API_WORKSITE_INCOMING_NEARBY + lat + '/' + lon);\n}\n\nexport function getStatusSignIn() {\n return getFetchAPI(URLS.API_PSEUDO);\n}\n\nexport function getSubscribeWorksite() {\n return getFetchAPI(URLS.API_SUBSCRIBED_WORKSITE);\n}\n\nexport function getNotifications() {\n return getFetchAPI(URLS.API_GET_NOTIFICATIONS);\n}\n\nexport function getAnswers() {\n return getFetchAPI(URLS.API_COMMENTS_ANSWERS_LIST);\n}\n\nexport function getLocationWorksite(Query) {\n return getFetchAPI(URLS.API_LOCATION_WORKSITE + Query);\n}\n\nfunction getFetchAPI(url) {\n return fetch(url, {\n method: 'GET',\n headers: getCommonHeaders(),\n })\n .then(response => {\n if (response.status === 200) {\n return response.json();\n } else {\n return response.status;\n }\n })\n .catch(error => console.warn('error while: GET', url, error));\n}\n\n/************ PATCH API ***********/\n\nexport function postfavouriteSite(WorksiteId) {\n return getPatchAPI(URLS.API_SUBSCRIBE_WORKSITE + '/' + WorksiteId);\n}\n\nexport function postUnSubscribeFavouriteWorksite(WorksiteId) {\n return getPatchAPI(URLS.API_UNSUBSCRIBE_WORKSITE + '/' + WorksiteId);\n}\n\nexport function changeNotificationStatus(WorksiteId) {\n return getPatchAPI(URLS.API_NOTIFICATION_CHANGE_STATUS + '/' + WorksiteId);\n}\n\nfunction getPatchAPI(url) {\n return fetch(url, {\n method: 'GET',\n headers: getCommonHeaders(),\n }).catch(error => console.error('error while: GET (\"patch\")', url, error));\n}\n\n/************ POST PSEUDO ***********/\n\nexport function postPseudo(pseudo) {\n const lang = Localization.locale;\n return postFetchAPI(URLS.API_USER, { pseudo: pseudo, locale: lang });\n}\n\nexport function postToken(token) {\n return postFetchAPI(URLS.API_PUSH_NOTIFICATION_ENDPOINT, {\n appName: 'HelloTravaux',\n platform: Platform.select({\n ios: 'apns',\n android: 'gcm',\n }),\n deviceId: Constants.installationId,\n token,\n });\n}\n\nfunction postFetchAPI(url, body) {\n return fetch(url, {\n method: 'POST',\n headers: getCommonHeaders(),\n body: JSON.stringify(body),\n }).catch(error => console.error('error while: POST', url, error));\n}\n\n/****** DELETE MESSAGE *********/\nexport function deleteUser(idUser) {\n return Delete(URLS.API_DELETE_USER + idUser);\n}\n\nexport function deleteMessage(idCom) {\n return Delete(URLS.API_DELETE_MESSAGE + idCom);\n}\nfunction Delete(url, body) {\n return fetch(url, {\n method: 'POST',\n headers: getCommonHeaders(),\n body: JSON.stringify(body),\n })\n .then(response => {\n if (response.status === 204 && response.url.includes('publication/delete')) {\n return alert(translate.DeletingCommentMessage);\n } else if (response.status === 204 && response.url.includes('api/revoke/')) {\n alert(translate.DeletingAccountMessage);\n } else {\n return Alert.alert(translate.ErrorMessage);\n }\n })\n .catch(error => {\n console.error('error while: POST (\"delete\")', url, error);\n });\n}\n\n/**** POST COMMENT */\n\nexport function postComment(Data) {\n return postAPI(URLS.API_PUBLICATION_CREATE, Data);\n}\n\nfunction postAPI(url, Data) {\n return fetch(url, {\n method: 'POST',\n body: Data,\n headers: {\n ...getCommonHeaders(),\n 'Content-Type': 'multipart/form-data',\n },\n }).catch(error => console.error('error while: POST', url, error));\n}\n","import React from 'react';\nimport { Text, Image } from 'react-native';\nimport MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';\nimport translate from '../translate/globalTranslate';\n\nexport function renderAnswerVisibilityInfo(isModerated) {\n if (!isModerated) {\n return (\n \n {' '}\n {translate.privateMessage}\n \n );\n }\n}\n\nexport function renderImage(imageLink) {\n if (imageLink) {\n return ;\n }\n}\n\nexport function renderImageFullScreen(imageLink) {\n if (imageLink) {\n return (\n \n );\n }\n}\n\nexport function renderImageComment(imageLink) {\n if (imageLink) {\n return ;\n }\n}\n","import React, { Component } from 'react';\nimport {\n StyleSheet,\n View,\n Text,\n TouchableOpacity,\n Modal,\n SafeAreaView,\n Image,\n Linking,\n Platform,\n} from 'react-native';\nimport { Card } from 'react-native-elements';\nimport MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';\nimport translate from '../translate/globalTranslate';\nimport {\n renderAnswerVisibilityInfo,\n renderImageFullScreen,\n renderImage,\n renderImageComment,\n} from '../Helper/Helper';\nimport { deleteMessage } from '../API/api';\nimport Images from '../components/images';\n\nclass Comment extends Component {\n constructor(Props) {\n super(Props);\n this.state = {\n modalVisible: false,\n imageLink: '',\n };\n }\n\n closeModal = () => {\n this.setState({ modalVisible: false });\n };\n\n Modal() {\n return (\n \n \n {\n this.closeModal(!this.state.modalVisible);\n }}\n style={styles.button_close}\n >\n \n \n {renderImageFullScreen(this.state.imageLink)}\n \n \n );\n }\n\n setModalVisible = imageLink => {\n this.setState({ modalVisible: true, imageLink: imageLink });\n };\n _renderCommentary() {\n let Comments = this.props.com;\n let user = this.props.user;\n let suppr;\n const deleteCommentary = com => {\n deleteMessage(com);\n };\n\n let regex = /(.*)(?:\\.([^.]+))$/;\n\n return Comments.map((com, i) => {\n if (com.user_pseudo === user && com.user_pseudo !== '') {\n suppr = (\n deleteCommentary(com.id)}>\n \n \n );\n }\n if (com.is_publication === false) {\n let commentDate = com.createdAt.replace(/-/g, '/');\n let ext = '';\n if (com.imageLink !== null && com.imageLink !== undefined) {\n let parsedFilename = regex.exec(com.imageLink);\n ext = parsedFilename[2];\n }\n return (\n \n \n \n {com.title}\n {suppr}\n \n\n \n \n {translate.PublicationDate}: {commentDate}\n \n {com.user_pseudo}\n\n \n {com.body}\n {ext === 'png' || ext === 'jpeg' || ext === 'jpg' ? (\n {\n this.setModalVisible(com.imageLink);\n }}\n >\n {renderImageComment(com.imageLink)}\n \n ) : ext === 'pdf' ? (\n {\n Linking.openURL(com.imageLink);\n }}\n >\n \n \n ) : null}\n \n \n {com.answers.map(answer => {\n let ext = '';\n if (answer.imageLink !== null && answer.imageLink !== undefined) {\n let parsedFilename = regex.exec(answer.imageLink);\n ext = parsedFilename[2];\n }\n return (\n \n {renderAnswerVisibilityInfo(com.is_public)}\n \n {answer.body}\n \n \n \n {' '}\n {translate.PublicationDate}: {answer.createdAt.replace(/-/g, '/')}\n \n \n \n {ext === 'png' || ext === 'jpeg' || ext === 'jpg' ? (\n {\n this.setModalVisible(answer.imageLink);\n }}\n >\n {renderImage(answer.imageLink)}\n \n ) : ext === 'pdf' ? (\n {\n Linking.openURL(answer.imageLink);\n }}\n >\n \n \n ) : null}\n \n \n );\n })}\n \n\n \n \n \n );\n }\n });\n }\n\n render() {\n let Id = this.props.WorkSiteId;\n let Name = this.props.titleHeader;\n return (\n \n \n this.props.onAuthenticatedLinkPress()\n : () =>\n this.props.navigation.navigate('Comments', {\n worksiteId: Id,\n worksiteName: Name,\n })\n }\n >\n {translate.WriteComment}...\n \n \n \n {this._renderCommentary()}\n {this.Modal()}\n \n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n tabContent: {\n backgroundColor: '#F7FAFC',\n paddingBottom: 10,\n flex: 2,\n },\n\n title_principal: {\n color: '#000000',\n fontSize: 18,\n fontStyle: 'normal',\n paddingLeft: 20,\n backgroundColor: '#f7f7f7',\n borderColor: '#dcdcdc',\n borderWidth: 1,\n margin: 20,\n paddingBottom: 5,\n paddingTop: 10,\n borderRadius: 5,\n height: 40,\n },\n\n main_container: {\n marginBottom: 10,\n borderColor: 'transparent',\n backgroundColor: '#ffffff',\n },\n\n date: {\n color: '#A6A6A6',\n fontSize: 13,\n marginTop: 10,\n },\n\n separator: {\n borderBottomColor: '#EBEBEB',\n borderBottomWidth: 1,\n },\n\n title_container: {\n paddingTop: 5,\n paddingBottom: 10,\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n\n title: {\n color: '#000000',\n fontSize: 18,\n fontStyle: 'normal',\n fontWeight: 'bold',\n },\n\n text_container: {\n paddingTop: 10,\n marginBottom: 10,\n backgroundColor: '#f7f7f7',\n borderRadius: 5,\n borderWidth: 1,\n borderColor: '#f7f7f7',\n marginTop: 5,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'space-between',\n paddingRight: 10,\n paddingBottom: 10,\n paddingLeft: 10,\n },\n\n text: {\n paddingRight: 10,\n lineHeight: 16,\n color: '#131313',\n fontSize: 13,\n paddingBottom: 5,\n },\n\n user: {\n fontWeight: 'bold',\n fontSize: 14,\n color: '#1a334d',\n },\n button_close: {\n position: 'absolute',\n top: 20,\n right: 10,\n zIndex: 2,\n },\n container_image: {\n display: 'flex',\n marginTop: 25,\n alignItems: 'center',\n flex: 1,\n justifyContent: 'center',\n },\n\n container_view_modal: {\n display: 'flex',\n justifyContent: 'space-between',\n flexDirection: 'column',\n alignItems: 'center',\n flex: 1,\n },\n});\n\nexport default Comment;\n","import React from 'react';\nimport {\n StyleSheet,\n View,\n Text,\n TouchableOpacity,\n Modal,\n SafeAreaView,\n Image,\n Linking,\n} from 'react-native';\nimport { Card } from 'react-native-elements';\nimport MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';\nimport translate from '../translate/globalTranslate';\nimport { renderImage, renderImageFullScreen } from '../Helper/Helper';\nimport Images from '../components/images';\n\nconst ATTACHMENT_THUMBNAIL_HEIGHT = 85;\nclass Publication extends React.Component {\n constructor(Props) {\n super(Props);\n this.state = {\n modalVisible: false,\n imageLink: '',\n };\n }\n\n closeModal = () => {\n this.setState({ modalVisible: false });\n };\n\n Modal() {\n return (\n \n \n \n {\n this.closeModal(!this.state.modalVisible);\n }}\n style={styles.button_close}\n >\n \n \n \n {renderImageFullScreen(this.state.imageLink)}\n \n \n \n \n );\n }\n\n publicationAttachments = attachments => {\n const setModalVisible = imageLink => {\n this.setState({ modalVisible: true, imageLink });\n };\n return attachments.map(function (attachmentLink) {\n let ext = '';\n if (attachmentLink !== null && attachmentLink !== undefined) {\n let re = /(.*)(?:\\.([^.]+))$/;\n let parsedFilename = re.exec(attachmentLink);\n ext = parsedFilename[2];\n\n return (\n <>\n {ext === 'png' || ext === 'jpeg' || ext === 'jpg' ? (\n {\n setModalVisible(attachmentLink);\n }}\n style={styles.attachment}\n >\n \n \n ) : ext === 'pdf' ? (\n {\n Linking.openURL(attachmentLink);\n }}\n style={styles.attachment}\n >\n \n \n ) : null}\n >\n );\n }\n });\n };\n\n Publications() {\n const Publications = this.props.pub;\n let publications = [];\n Publications.forEach((pub, i) => {\n if (pub.is_publication === true) {\n let publicationDate = pub.createdAt.replace(/-/g, '/');\n let attachments = [pub.imageLink, pub.imageLink2, pub.imageLink3, pub.imageLink4];\n publications.push(\n \n \n \n {translate.PublicationDate}: {publicationDate}\n \n \n {pub.title}\n \n \n \n {pub.body}\n \n \n {this.publicationAttachments(attachments)}\n \n \n \n \n );\n }\n });\n return publications;\n }\n\n render() {\n return (\n \n \n {translate.LastPublications}\n \n {this.Publications()}\n {this.Modal()}\n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n tabContent: {\n backgroundColor: '#F7FAFC',\n paddingBottom: 10,\n flex: 1,\n },\n\n main_container: {\n marginBottom: 10,\n borderColor: 'transparent',\n },\n\n date: {\n color: '#A6A6A6',\n fontSize: 13,\n },\n title_principal: {\n color: '#000000',\n fontSize: 18,\n fontStyle: 'normal',\n fontWeight: 'bold',\n paddingLeft: 20,\n paddingTop: 10,\n },\n separator: {\n borderBottomColor: '#EBEBEB',\n borderBottomWidth: 1,\n },\n title_container: {\n paddingTop: 5,\n paddingBottom: 10,\n },\n\n title: {\n color: '#000000',\n fontSize: 18,\n fontStyle: 'normal',\n fontWeight: 'bold',\n },\n\n text_container: {\n paddingTop: 5,\n paddingBottom: 10,\n },\n\n modal_content: {\n width: '100%',\n height: '100%',\n },\n\n button_close: {\n position: 'absolute',\n top: 20,\n right: 10,\n zIndex: 2,\n },\n container_image: {\n display: 'flex',\n marginTop: 25,\n alignItems: 'center',\n flex: 1,\n justifyContent: 'center',\n },\n container_view_modal: {\n display: 'flex',\n justifyContent: 'space-between',\n flexDirection: 'column',\n alignItems: 'center',\n flex: 1,\n },\n container_attachments: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n },\n attachment: {\n flex: 1,\n height: ATTACHMENT_THUMBNAIL_HEIGHT,\n maxWidth: '30%',\n marginRight: 5,\n },\n publicationImage: {\n height: undefined,\n width: undefined,\n flex: 1,\n },\n});\nexport default Publication;\n","import React, { Component } from 'react';\nimport { View, StyleSheet } from 'react-native';\nimport SegmentedControlTab from 'react-native-segmented-control-tab';\nimport translate from '../translate/globalTranslate';\nimport Comment from './comment';\nimport Publication from './publication';\n\nexport default class TabComponent extends Component {\n constructor(props) {\n super(props);\n this.state = {\n selectedIndex: 0,\n };\n }\n\n handleIndexChange = index => {\n this.setState({ ...this.state, selectedIndex: index });\n };\n\n handleCustomIndexSelect = index => {\n this.setState(prevState => ({ ...prevState, selectedIndex: index }));\n };\n\n render() {\n const { selectedIndex } = this.state;\n const { navigation, onAuthenticatedLinkPress } = this.props;\n return (\n \n \n {selectedIndex === 0 && this.props.Publications && (\n \n )}\n {selectedIndex === 1 && this.props.Publications && (\n \n )}\n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n tab_container: {\n height: 55,\n backgroundColor: '#F7FAFC',\n borderTopWidth: 1,\n borderTopColor: '#CAD9E8',\n paddingEnd: 20,\n paddingStart: 20,\n },\n\n tab: {\n backgroundColor: '#F7FAFC',\n borderLeftColor: 'transparent',\n borderRightColor: 'transparent',\n borderTopColor: 'transparent',\n borderBottomWidth: 1,\n borderBottomColor: '#CAD9E8',\n },\n\n tab_active: {\n borderBottomWidth: 3,\n borderBottomColor: '#407EBF',\n backgroundColor: '#F7FAFC',\n },\n\n tab_text: {\n fontSize: 18,\n color: '#868788',\n paddingEnd: 20,\n paddingStart: 20,\n },\n\n tabText_active: {\n color: '#000000',\n fontWeight: 'bold',\n },\n});\n","import React from 'react';\nimport {\n StyleSheet,\n View,\n Text,\n SafeAreaView,\n ScrollView,\n ImageBackground,\n TouchableOpacity,\n Platform,\n} from 'react-native';\nimport { LinearGradient } from 'expo-linear-gradient';\nimport MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';\nimport translate from '../translate/globalTranslate';\n\nimport { postfavouriteSite, postUnSubscribeFavouriteWorksite } from '../API/api';\nimport TabComponent from '../components/tabViewWorksite';\n\n/**\n * for lack of typing check, see expected props here:\n *\n * props: {\n * navigation,\n * workSiteItem?: {\n * workSiteId: string\n * subscribe: boolean,\n * name: string,\n * startDate: string ('dd-MM-yyyy'),\n * endDate: string ('dd-MM-yyyy'),\n * publications: Array<>>\n * description: string\n * imageLink: url\n * },\n * handleReloadWorksiteSubscribe?: Function\n * // either:\n * user?: string\n * onAuthenticatedLinkPress?: Function\n * }\n */\nclass WorkSiteItemContent extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isSubscribed: !!(props.workSiteItem && props.workSiteItem.subscribe),\n };\n }\n\n _addFavouriteWorksite() {\n const callback = this.props.handleReloadWorksiteSubscribe;\n const itemWorkSiteId = this.props.workSiteItem.workSiteId;\n\n const { isSubscribed } = this.state;\n\n if (isSubscribed) {\n postUnSubscribeFavouriteWorksite(itemWorkSiteId);\n this.setState({ isSubscribed: !isSubscribed });\n if (callback && typeof callback === 'function') {\n callback();\n }\n } else {\n postfavouriteSite(itemWorkSiteId);\n this.setState({ isSubscribed: !isSubscribed });\n }\n }\n\n render() {\n const {\n navigation,\n workSiteItem: {\n workSiteId: itemWorkSiteId,\n name: itemName,\n startDate: itemStartDate,\n endDate: itemEndDate,\n publications: itemPublications,\n description,\n imageLink,\n },\n user,\n onAuthenticatedLinkPress = () => {},\n } = this.props;\n\n return (\n \n \n \n \n \n \n \n {itemName}\n onAuthenticatedLinkPress()\n : () => this._addFavouriteWorksite()\n }\n >\n \n \n \n \n \n\n \n \n {itemStartDate && itemEndDate ? (\n <>\n \n \n {translate.StartDate} {itemStartDate.replace(/-/g, '/')} {translate.EndDate}{' '}\n {itemEndDate.replace(/-/g, '/')}\n \n \n \n >\n ) : null}\n \n {description} \n \n \n \n \n \n \n \n \n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n main_container: {\n flex: 1,\n alignContent: 'space-around',\n justifyContent: 'space-between',\n },\n\n content_container: {\n marginLeft: 20,\n marginRight: 20,\n flex: 1,\n },\n\n infos: {\n flex: 2,\n alignItems: 'flex-end',\n alignContent: 'flex-start',\n },\n\n image_container: {\n alignContent: 'flex-start',\n marginBottom: 10,\n height: 190,\n },\n\n image: {\n height: 190,\n width: '100%',\n },\n\n header: {\n paddingLeft: 20,\n bottom: 80,\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingRight: 20,\n },\n\n title_text: {\n fontWeight: 'bold',\n fontSize: 22,\n color: '#000000',\n flexWrap: 'wrap',\n flex: 1,\n },\n\n date_container: {\n flexDirection: 'row',\n alignSelf: 'flex-start',\n },\n\n date_text: {\n textAlign: 'left',\n fontSize: 15,\n marginBottom: 10,\n color: '#A4A4A4',\n },\n\n description_container: {\n alignSelf: 'flex-start',\n },\n\n box: {\n marginTop: 20,\n },\n\n separator: {\n alignSelf: 'flex-start',\n borderBottomColor: '#CAD9E8',\n borderBottomWidth: 1,\n width: 250,\n marginBottom: 15,\n marginTop: 10,\n },\n\n gradient: {\n left: 0,\n right: 0,\n top: 0,\n height: 190,\n },\n\n subButton: {\n backgroundColor: '#ffffff',\n width: 40,\n height: 40,\n borderRadius: 20,\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n\nexport default WorkSiteItemContent;\n","import React from 'react';\nimport { ActivityIndicator, ImageBackground, StyleSheet, Text, View } from 'react-native';\nimport { getWorksite } from '../API/api';\nimport { AppleAppStoreButton } from '../components/AppleAppStoreButton';\nimport { GooglePlayStoreButton } from '../components/GooglePlayStoreButton';\nimport Images from '../components/images';\nimport WorkSiteItemContent from '../components/workSiteItemContent';\nimport translate from '../translate/globalTranslate';\nimport { getWebBrowserMobileOperatingSystem } from '../utils/webBrowserOS';\n\nconst HEADER_HEIGHT = 50;\n\nclass WorkSiteItem extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n workSiteItem: undefined,\n };\n }\n\n componentDidMount() {\n this._loadWorksite();\n }\n\n async _loadWorksite() {\n const { workSiteId } = this.props.route.params;\n\n try {\n const workSiteOrStatus = await getWorksite(workSiteId);\n\n if (typeof workSiteOrStatus === 'number') {\n this.props.navigation.navigate('NotFound');\n return;\n }\n\n // Filter to get only publications (is_publication) and public messages (is_public)\n const publicPublications = workSiteOrStatus.publications\n ? workSiteOrStatus.publications.filter(\n publication => publication.is_publication === true || publication.is_public === true\n )\n : [];\n\n this.setState({\n workSiteItem: {\n workSiteId: workSiteOrStatus.id,\n subscribe: workSiteOrStatus.subscribe,\n name: workSiteOrStatus.name,\n startDate: workSiteOrStatus.start_date,\n endDate: workSiteOrStatus.end_date,\n publications: publicPublications,\n description: workSiteOrStatus.description,\n imageLink: workSiteOrStatus.imageLink,\n },\n });\n } catch {\n this.props.navigation.navigate('NotFound');\n }\n }\n\n render() {\n const { workSiteItem } = this.state;\n\n if (workSiteItem) {\n const webBrowserOS = getWebBrowserMobileOperatingSystem();\n\n return (\n <>\n \n {translate.DownloadApp}\n {webBrowserOS === 'android' ? (\n \n ) : (\n \n )}\n \n this.props.navigation.navigate('NotFound')}\n />\n >\n );\n } else {\n return (\n <>\n \n \n \n \n >\n );\n }\n }\n}\n\nconst styles = StyleSheet.create({\n header: {\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n width: '100%',\n height: HEADER_HEIGHT,\n flexDirection: 'row',\n borderBottomWidth: 2,\n borderBottomColor: '#80808080',\n paddingLeft: 5,\n },\n headerText: {\n fontWeight: 'bold',\n fontSize: 16,\n textAlign: 'left',\n },\n backgroundImage: { ...StyleSheet.absoluteFillObject, opacity: 0.1 },\n loaderContainer: { flex: 1, alignItems: 'center', justifyContent: 'center' },\n});\n\nexport default WorkSiteItem;\n","import React from 'react';\nimport { createStackNavigator } from '@react-navigation/stack';\nimport { getPathFromState, getStateFromPath, NavigationContainer } from '@react-navigation/native';\nimport NotFound from '../routes/NotFound';\nimport WorkSiteItem from '../routes/workSiteItem';\n\nconst Stack = createStackNavigator();\n\nconst WorkSiteStackNavigator = () => {\n return (\n \n \n \n \n );\n};\n\nlet currentUrl;\n\nconst linking = {\n config: {\n screens: {\n WorkSiteDetails: 'WorkSiteDetails/:workSiteId',\n NotFound: '*',\n },\n },\n getStateFromPath: (path, config) => {\n currentUrl = path;\n return getStateFromPath(path, config);\n },\n getPathFromState: (state, config) => {\n const path = getPathFromState(state, config);\n\n return path === '/NotFound' ? currentUrl : path;\n },\n};\n\nexport const RootStack = () => {\n return (\n \n \n \n );\n};\n","class GlobalNotif {\n constructor() {\n GlobalNotif.singleton = this;\n this.callbacks = [];\n }\n\n static register(callback) {\n GlobalNotif.singleton.callbacks.push(callback);\n }\n\n static trigger(value) {\n GlobalNotif.singleton.callbacks.map(item => item(value));\n }\n\n static init() {\n if (GlobalNotif.singleton === undefined) {\n GlobalNotif.singleton = new GlobalNotif();\n }\n }\n}\nexport default GlobalNotif;\n","import React, { useReducer, createContext } from \"react\";\nimport { postToken } from '../API/api';\n\n\nexport const UserContext = createContext();\n\nconst initialState = {\n pseudo: null,\n token: null\n};\n\nfunction updateTokenDevice(token, pseudo) {\n console.log(\"Setting pseudo \" + JSON.stringify(token) + \" for \" + pseudo);\n postToken(token.token).then(function(response) {\n if(response.ok) {\n console.log(\"Token well sent to server\")\n } else {\n console.log(\"Error while sending token to server: \" + response.status);\n }\n })\n .catch(function(error) {\n console.log(\"There was an error usinf fetch: \" + error.message);\n });\n}\n\nconst reducer = (state, action) => {\n switch (action.type) {\n case \"SET_PSEUDO\":\n if (state.token != null) {\n updateTokenDevice(state.token, action.payload);\n }\n return {\n pseudo: action.payload\n };\n case \"SET_TOKEN\":\n if (state.pseudo != null) {\n updateTokenDevice(action.payload, state.pseudo);\n }\n return {\n token: action.payload\n };\n default:\n throw new Error();\n }\n};\n\nexport const UserContextProvider = props => {\n const [state, dispatch] = useReducer(reducer, initialState);\n\n return (\n \n {props.children}\n \n );\n};","import React from 'react';\nimport { SafeAreaProvider } from 'react-native-safe-area-context';\nimport { RootStack } from './navigation/navigationBetweenViews';\nimport GlobalNotif from './Helper/GlobalNotif';\nimport { UserContextProvider } from './Helper/UserContext';\n\nexport default class App extends React.Component {\n\n constructor(props) {\n super(props);\n GlobalNotif.init();\n }\n\n render() {\n return (\n \n \n \n \n \n );\n }\n}\n","import { registerRootComponent } from 'expo';\n\nimport App from './App';\n\n// registerRootComponent calls AppRegistry.registerComponent('main', () => App);\n// It also ensures that whether you load the app in the Expo client or in a native build,\n// the environment is set up appropriately\nregisterRootComponent(App);\n"],"sourceRoot":""}