{"version":3,"file":"static/js/main.bc4c8a93.js","mappings":"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","sources":["configuration.ts","src/services/translations.ts","src/languages/language_mapping.ts","src/services/features.ts","src/services/formUtil.ts","src/services/api/user.api.ts","src/store/user.ts","src/services/api/usersubadmin.ts","src/ScreenNames.ts","src/types.ts","src/store/action.ts","src/styles/appColor.js","src/styles/globalStyle.js","src/components/atomic/AppText.tsx","src/components/atomic/AppButton.tsx","src/components/atomic/FilePicker.tsx","src/services/utils.tsx","src/services/api/version.api.ts","src/store/version.ts","src/services/storage.tsx","src/services/api/login.ts","src/services/api/base.ts","src/services/api/messaging.api.ts","src/store/messaging.ts","src/store/reducer.ts","src/store/store.ts","src/hooks/useLoggedUser.ts","src/components/atomic/HypertextLink.tsx","src/styles/spaces.tsx","src/components/atomic/AppTextInput.tsx","src/services/api/llm.api.ts","src/components/molecules/AIModal.tsx","src/components/atomic/Chip.tsx","src/components/atomic/AppRTEEditor.web.tsx","src/components/atomic/AppDateTimePicker.web.tsx","src/components/atomic/FormField.tsx","src/components/atomic/AppLanguagePicker.tsx","src/components/atomic/formik/LoginField.tsx","src/components/containers/MaxWidthScreen.tsx","src/components/atomic/Logo.tsx","src/entities/AuthenticationMode.ts","src/screens/guest/Login.tsx","src/hooks/useDeviceSize.ts","src/components/containers/TwoColumnsLayout.tsx","src/components/atomic/ValidationCodeField.tsx","src/components/containers/FormButtons.tsx","src/components/containers/FormBody.tsx","src/screens/guest/ValidationCode.tsx","src/components/atomic/AppCheckbox.tsx","src/screens/guest/Registration.tsx","src/screens/guest/NoProfessionalAddress.tsx","src/components/atomic/BackIcon.tsx","src/components/atomic/formik/Form.tsx","src/components/atomic/formik/TextField.tsx","src/components/atomic/formik/SubmitButton.tsx","src/screens/guest/ResetPasswordSendCode.tsx","src/screens/guest/ResetPassword.tsx","src/screens/guest/ResetPasswordSendCodeSuccess.tsx","src/routes/GuestRoute.tsx","src/services/assets.ts","src/components/containers/AppScreen.tsx","src/services/api/company.api.ts","src/components/containers/AppSafeAreaView.tsx","src/components/atomic/BackButton.tsx","src/services/url.utils.tsx","src/models/Media.ts","src/utils/Medias.tsx","src/components/containers/medias/Youtube.web.tsx","src/services/api/helper.api.ts","src/components/atomic/ProfilePicture.tsx","src/components/atomic/AppModalOverlay.web.tsx","src/components/containers/TwoActionsButtonPopup.tsx","src/components/containers/Header2.tsx","src/components/containers/ResponsiveView.tsx","src/components/containers/ResponsiveRow.tsx","src/components/containers/ResponsiveColumn.tsx","src/screens/loggedIn/ProfileScreen.tsx","src/components/atomic/ProfileRow.tsx","src/components/atomic/DataTableHeader.tsx","src/components/atomic/TextInput.tsx","src/components/atomic/SearchTextInput.tsx","src/components/containers/HorizontalList.tsx","src/services/api/contributions.tsx","src/components/molecules/UserFilters.tsx","src/services/licences.ts","src/components/molecules/UsersList.tsx","src/hooks/useIsSsoEmail.ts","src/utils/Messaging.ts","src/components/atomic/TeamsButton.tsx","src/components/atomic/GoogleChatButton.tsx","src/components/atomic/SlackButton.tsx","src/components/atomic/UserProfileOverlay.tsx","src/components/atomic/CloseButton.tsx","src/utils/Utils.tsx","src/components/atomic/PdfZoomed.web.tsx","src/components/atomic/Pdf.web.tsx","src/components/atomic/FadeInView.tsx","src/components/molecules/UnsplashPicker.tsx","src/hooks/useUnsplash.ts","src/components/atomic/Image.web.tsx","src/components/molecules/GiphyPicker.tsx","src/hooks/useGiphy.ts","src/components/atomic/PhotoPicker.tsx","src/components/atomic/formik/AvatarField.tsx","src/components/atomic/AppRadioGroup.tsx","src/components/atomic/formik/RadioGroupField.tsx","src/components/atomic/AppSwitch.tsx","src/components/atomic/formik/SwitchField.tsx","src/components/atomic/formik/LanguagePickerField.tsx","src/components/atomic/formik/SelectField.tsx","src/components/atomic/formik/DateField.tsx","src/components/atomic/formik/MultiSelectField.tsx","src/components/molecules/UserFormFields.tsx","src/components/molecules/CreateUserForm.tsx","src/screens/loggedIn/admin/CreateUserScreen.tsx","src/screens/loggedIn/DirectoryScreen.tsx","src/components/atomic/AppListSwitch.tsx","src/components/atomic/UserSubRow.tsx","src/components/atomic/ImageWithFooterText.tsx","src/components/atomic/Label.tsx","src/components/atomic/ContributionLabel.tsx","src/services/api/formData.api.ts","src/services/api/getContributionsMode.ts","src/services/api/news.contributions.api.tsx","src/components/atomic/EditButton.tsx","src/services/api/event.contributions.api.tsx","src/services/api/formation.contributions.api.tsx","src/services/api/contribution.api.ts","src/components/atomic/RemoveButton.tsx","src/components/atomic/SpreadingChipsList.tsx","src/components/atomic/ImagesCounter.tsx","src/components/atomic/ContributionItemSquare.tsx","src/components/atomic/AppMapView.web.tsx","src/services/api/category.api.ts","src/utils/Category.ts","src/components/atomic/CategoryChip.tsx","src/components/atomic/Separator.tsx","src/components/containers/CategoriesList.tsx","src/hooks/usePaginatedList.tsx","src/components/atomic/ResponsiveFlatList.tsx","src/hooks/useContributionListRefresh.ts","src/screens/loggedIn/contribution/ContributionsMainScreen.tsx","src/screens/loggedIn/contribution/FloatingButtons.tsx","src/components/molecules/ChatbotButton.web.tsx","src/screens/loggedIn/contribution/ContributionListScreen.tsx","src/routes/SuggestionsAdministrationRoute.tsx","src/routes/CompanyNewsAdministrationRoute.tsx","src/components/atomic/ContributionToValidateItem.tsx","src/screens/loggedIn/contribution/survey/SurveyToValidateAdminListScreen.tsx","src/components/atomic/ContributionValidatedItem.tsx","src/screens/loggedIn/contribution/survey/SurveyValidatedAdminListScreen.tsx","src/routes/SurveyAdministrationRoute.tsx","src/screens/loggedIn/EditPasswordScreen.tsx","src/screens/categories/CategoriesContext.tsx","src/components/atomic/formik/ColorPickerField.tsx","src/components/molecules/CreateCategoryForm.tsx","src/services/api/custom.module.api.tsx","src/hooks/useCustomModules.ts","src/screens/categories/CreateCategoryScreen.tsx","src/screens/categories/EditCategory.tsx","src/screens/categories/ManageCategoriesOrder.tsx","src/screens/categories/ManageCategoryScreen.tsx","src/routes/CategoriesAdministrationRoute.tsx","src/hooks/useTodayDateTime.ts","src/routes/CustomDrawerContent.tsx","src/components/atomic/Hoverable.tsx","src/components/atomic/AppAutoComplete.web.tsx","src/components/atomic/AddressAutocomplete.tsx","src/components/atomic/UserAutocomplete.tsx","src/components/atomic/PickUsers.tsx","src/components/atomic/formik/ContributionSpreadingField.tsx","src/components/atomic/formik/RichTextField.tsx","src/components/atomic/formik/ContributionAuthorizationsField.tsx","src/entities/CSondageQuestion.ts","src/components/containers/Media.tsx","src/utils/Carousel.ts","src/components/atomic/Carousel.tsx","src/components/molecules/ContributionPhotoList.tsx","src/components/containers/PhotoListFormField.tsx","src/components/atomic/formik/PhotoListField.tsx","src/screens/loggedIn/contribution/survey/SurveyFormFields.tsx","src/services/api/survey.contributions.api.tsx","src/screens/loggedIn/contribution/survey/UpdateSurveyScreen.tsx","src/screens/loggedIn/contribution/ContributionFormScreen.tsx","src/components/atomic/EventItemRow.tsx","src/components/atomic/CategoryPicker.tsx","src/screens/loggedIn/contribution/EventsMainScreen.tsx","src/services/api/suggestions.contributions.api.tsx","src/screens/loggedIn/SuggestionBoxScreen.tsx","src/screens/loggedIn/contribution/survey/CreateSurveyScreen.tsx","src/routes/ContributionRouter.tsx","src/components/containers/ContentWithImageHeaderScreen.tsx","src/services/api/interest.contributions.api.tsx","src/components/atomic/Html.web.tsx","src/components/atomic/HtmlText.tsx","src/components/atomic/RemoveLittleButton.tsx","src/components/atomic/CommentBubble.tsx","src/services/api/comment.api.ts","src/components/atomic/IconButton.tsx","src/components/molecules/NewCommentForm.tsx","src/components/molecules/CommentList.tsx","src/components/atomic/AppLoader.tsx","src/components/atomic/formik/RadioButtonGroupField.tsx","src/components/molecules/SurveyRespondForm.tsx","src/screens/loggedIn/contribution/survey/SurveyDetailsScreen.tsx","src/components/molecules/ContactUserButton.tsx","src/components/atomic/ProfileCard.tsx","src/components/molecules/ContributionInterestedUserList.tsx","src/screens/loggedIn/contribution/ContributionItemDetailScreen.tsx","src/screens/loggedIn/LoggedInHomeScreen.tsx","src/screens/loggedIn/admin/CompanyAdminMainScreen.tsx","src/components/molecules/OrganizationalChartForm.tsx","src/services/api/organizational.chart.api.ts","src/screens/loggedIn/admin/organizationalChart/CreateOrganizationalChartScreen.tsx","src/utils/OrganizationalChart.ts","src/screens/loggedIn/admin/organizationalChart/ListOrganizationalChartsScreen.tsx","src/screens/loggedIn/admin/organizationalChart/UpdateOrganizationalChartScreen.tsx","src/routes/OrganizationalChartAdminRouter.tsx","src/components/atomic/formik/UserAutocompleteField.tsx","src/components/molecules/CompanyGroupFormFields.tsx","src/services/api/company.group.api.ts","src/screens/loggedIn/admin/companyGroup/CreateCompanyGroupScreen.tsx","src/utils/CompanyGroup.ts","src/screens/loggedIn/admin/companyGroup/ListCompanyGroupsScreen.tsx","src/screens/loggedIn/admin/companyGroup/UpdateCompanyGroupScreen.tsx","src/routes/CompanyGroupAdminRouter.tsx","src/screens/loggedIn/admin/validationMap/ListValidationMapScreen.tsx","src/screens/loggedIn/admin/validationMap/UpdateValidationMapScreen.tsx","src/routes/ValidationMapAdministrationRoute.tsx","src/services/api/statistics.api.ts","src/components/atomic/StatisticSquare.tsx","src/entities/ContributionsCountByIntervalStatistics.ts","src/components/atomic/ContributionsByIntervalLineChart.tsx","src/components/molecules/NewsCountStatistics.tsx","src/components/molecules/ContributionCountStatistics.tsx","src/components/atomic/Table.tsx","src/components/molecules/TopAuthorChart.tsx","src/components/molecules/TopAuthorStatistics.tsx","src/screens/loggedIn/admin/StatisticsScreen.tsx","src/services/api/tv.api.ts","src/screens/loggedIn/admin/konecteamPlay/ScreenPlaylistListScreen.tsx","src/screens/loggedIn/admin/konecteamPlay/ScreenSettingsListScreen.tsx","src/components/containers/PhotoFormField.tsx","src/components/atomic/formik/PhotoField.tsx","src/components/molecules/CreateScreenPlaylistMedia.tsx","src/screens/loggedIn/admin/konecteamPlay/ScreenMediasListScreen.tsx","src/routes/AdminScreenTabsRoute.tsx","src/entities/ScreenPlaylistScreenPlaylistItem.ts","src/components/molecules/ScreenPlaylistFormFields.tsx","src/screens/loggedIn/admin/konecteamPlay/ScreenPlaylistCreateScreen.tsx","src/screens/loggedIn/admin/konecteamPlay/ScreenPlaylistEditScreen.tsx","src/components/atomic/formik/LocationField.tsx","src/components/molecules/ScreenSettingsFormFields.tsx","src/screens/loggedIn/admin/konecteamPlay/ScreenSettingsCreateScreen.tsx","src/screens/loggedIn/admin/konecteamPlay/ScreenSettingsUpdateScreen.tsx","src/routes/AdminScreenRoute.tsx","src/screens/loggedIn/admin/EditSiteGeoScreenSettings.tsx","src/screens/loggedIn/admin/BirthdaysScreen.tsx","src/services/api/booking.contribution.api.ts","src/screens/loggedIn/admin/booking/ListBookingResourcesScreen.tsx","src/screens/loggedIn/admin/booking/BookingResourcesFormFields.tsx","src/screens/loggedIn/admin/booking/UpdateBookingResourcesScreen.tsx","src/screens/loggedIn/admin/booking/CreateBookingResourcesScreen.tsx","src/routes/BookingAdminRouter.tsx","src/routes/AdminRoute.tsx","src/components/containers/FormLoading.tsx","src/hooks/useCategories.ts","src/components/atomic/PublicationModePicker.tsx","src/components/atomic/formik/PublicationModeField.tsx","src/components/atomic/LanguageSelector.tsx","src/components/atomic/formik/TranslationsField.tsx","src/entities/SpreadingType.ts","src/screens/loggedIn/contribution/news/NewsFormFields.tsx","src/screens/loggedIn/contribution/news/CreateNewsScreen.tsx","src/components/molecules/NewsInterestedUserList.tsx","src/screens/loggedIn/contribution/news/NewsDetailScreen.tsx","src/components/atomic/Badge.tsx","src/components/atomic/MessagingButton.tsx","src/entities/UserToken.ts","src/services/api/notification.api.ts","src/utils/Notification.ts","src/components/atomic/NotificationButton.tsx","src/components/atomic/HeaderButtons.tsx","src/components/atomic/ReponsiveStackNavigator.tsx","src/components/atomic/MessagingThreadRow.tsx","src/hooks/useMessagingThreads.ts","src/screens/messaging/MessagingMainScreen.tsx","src/screens/messaging/MessagingCreateThread.tsx","src/hooks/useMessagingThreadMessages.ts","src/services/api/file.api.ts","src/components/atomic/FilePreview.tsx","src/components/atomic/ChatBubble.tsx","src/components/molecules/MessageList.tsx","src/components/atomic/AutoExpandingTextInput.tsx","src/components/molecules/NewMessageForm.tsx","src/screens/messaging/MessagingThreadScreen.tsx","src/routes/MessagingRoute.tsx","src/components/atomic/Zoomable.web.tsx","src/screens/loggedIn/OrganizationChartsScreen.tsx","src/components/atomic/formik/FileField.tsx","src/services/api/document.contributions.api.tsx","src/components/atomic/ListItemRow.tsx","src/components/atomic/DocumentItemRow.tsx","src/components/atomic/BrowseFolderDialog.tsx","src/components/atomic/formik/FolderPickerField.tsx","src/screens/loggedIn/contribution/documents/DocumentFormFields.tsx","src/screens/loggedIn/contribution/documents/CreateDocumentScreen.tsx","src/screens/loggedIn/contribution/documents/FolderFormFields.tsx","src/screens/loggedIn/contribution/documents/CreateFolderScreen.tsx","src/screens/loggedIn/contribution/documents/DocumentsMainScreen.tsx","src/screens/loggedIn/contribution/documents/UpdateDocumentScreen.tsx","src/screens/loggedIn/contribution/documents/UpdateFolderScreen.tsx","src/routes/DocumentsRouter.tsx","src/screens/loggedIn/contribution/custom/AdminListCustomModuleContributionScreen.tsx","src/components/atomic/formik/CategoryField.tsx","src/screens/loggedIn/contribution/custom/CustomModuleContributionFormFields.tsx","src/screens/loggedIn/contribution/custom/CreateCustomModuleContributionScreen.tsx","src/screens/loggedIn/contribution/custom/ListCustomModuleContributionScreen.tsx","src/screens/loggedIn/contribution/custom/UpdateCustomModuleContributionScreen.tsx","src/routes/CustomModuleRouter.tsx","src/screens/loggedIn/contribution/custom/DetailsCustomModuleContributionScreen.tsx","src/services/api/sms.emergency.api.ts","src/screens/loggedIn/emergencySms/EmergencySmsListTemplatesScreen.tsx","src/screens/loggedIn/emergencySms/EmergencySmsListMyTemplatesScreen.tsx","src/screens/loggedIn/emergencySms/EmergencySmsTemplateFormFields.tsx","src/screens/loggedIn/emergencySms/EmergencySmsCreateTemplateScreen.tsx","src/screens/loggedIn/emergencySms/EmergencySmsUpdateTemplateScreen.tsx","src/components/atomic/formik/SmsSendContributionSpreadingField.tsx","src/screens/loggedIn/emergencySms/EmergencySmsSendScreen.tsx","src/screens/loggedIn/emergencySms/EmergencySmsSendTemplateScreen.tsx","src/routes/EmergencySmsRouter.tsx","src/components/atomic/DrawerToggleButton.tsx","src/entities/ModuleSettings.ts","src/screens/loggedIn/contribution/news/UpdateNewsScreen.tsx","src/screens/loggedIn/contribution/news/DuplicateNewsScreen.tsx","src/components/molecules/BookingCalendar.tsx","src/screens/loggedIn/contribution/booking/ListBookingScreen.tsx","src/components/atomic/formik/FieldHelper.tsx","src/screens/loggedIn/contribution/booking/BookingFormFields.tsx","src/screens/loggedIn/contribution/booking/CreateBookingScreen.tsx","src/screens/loggedIn/contribution/booking/UpdateBookingScreen.tsx","src/routes/BookingRouter.tsx","src/routes/LoggedInDrawerNavigation.tsx","src/services/module.ts","src/components/molecules/EditUserForm.tsx","src/screens/loggedIn/admin/EditUserScreen.tsx","src/components/atomic/AcceptCGUModal.tsx","src/screens/loggedIn/LoginEditProfileScreen.tsx","src/screens/loggedIn/EditMyProfileScreen.tsx","src/components/atomic/PushNotificationProvider.web.tsx","src/routes/LoggedInRoute.tsx","src/hooks/usePushNotifications.ts","src/routes/UserStatusRoute.tsx","src/OfferAppDownloadBanner.tsx","src/screens/UnsupportedVersionScreen.tsx","src/Main.tsx","src/LoginAs.tsx","src/utils/Ignore.web.tsx","App.tsx","index.js","FetchFonts.tsx","webpack/bootstrap","webpack/runtime/chunk loaded","webpack/runtime/compat get default export","webpack/runtime/create fake namespace object","webpack/runtime/define property getters","webpack/runtime/global","webpack/runtime/harmony module decorator","webpack/runtime/hasOwnProperty shorthand","webpack/runtime/make namespace object","webpack/runtime/node module decorator","webpack/runtime/publicPath","webpack/runtime/jsonp chunk loading","webpack/startup"],"sourcesContent":["import { Platform } from 'react-native';\nimport { match } from 'ts-pattern';\n\nconst isDev = false;\nconst dev = isDev ? '-dev' : '';\n\nconst localUrl = undefined; // 'clean-islands-dig-90-26-7-161.loca.lt'\n// const localUrl = '192.168.45.74:5000';\n// const localUrl = 'localhost:5050';\n\nexport const apiUrlBase = localUrl !== undefined ? `http://${localUrl}/api/` : `https://api${dev}.konecteam.fr/api/`;\nexport const urlBase = localUrl !== undefined ? `http://${localUrl}/` : `https://api${dev}.konecteam.fr/`;\nexport const domainUrl = isDev ? 'https://preprod.konecteam.fr/' : 'https://myapp.konecteam.fr/';\nexport const googlePlayUrl = 'https://play.google.com/store/apps/details?id=com.konecteam_app';\nexport const appleStoreUrl = 'https://apps.apple.com/fr/app/konecteam/id1551801133';\nexport const apiTimeZone = 'Europe/Paris';\nexport const unsplashAccessKey = 'U1ApE3vhb7jJ4NAZxUQVtGSzZulMXndAZzDW1n02JAg';\nexport const giphyAccessKey = match(Platform.OS)\n .with('web', () => 'oJzppOTQfM0JkCj585IbIXelm02bWQrz')\n .with('android', () => 'LQRyoyBKN7RKKD1uczgQUeVgwGNA0abv')\n .with('ios', () => 'cwVt1rpwriIAhu6oCbDvd328q7cmWR5d')\n .otherwise(() => 'oJzppOTQfM0JkCj585IbIXelm02bWQrz');\nexport const apiVersion = '1.4';\nexport const vapidKey = 'BJUHq-QEq-iPiLU60DNG4BL3UktLsETUHLZtnGUkP5x7vseVLZ3OROVC7NF7nlkT3tslkMjckajfxGqvAeKN3dI';\nexport const linkingPrefixes = [\n 'https://preprod.konecteam.fr',\n 'http://preprod.konecteam.fr',\n 'https://myapp.konecteam.fr',\n 'http://myapp.konecteam.fr',\n 'https://myapp.konecteam.com',\n 'http://myapp.konecteam.com',\n 'https://app.konecteam.fr',\n 'http://app.konecteam.fr',\n];\n","import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport { fr, uk, de, es, it } from 'date-fns/locale';\n\nimport 'dayjs/locale/en';\nimport 'dayjs/locale/fr';\nimport 'dayjs/locale/de';\nimport 'dayjs/locale/es';\nimport 'dayjs/locale/it';\n\n// the translations\n// (tip move them in a JSON file and import them,\n// or even better, manage them via a UI: https://react.i18next.com/guides/multiple-translation-files#manage-your-translations-with-a-management-gui)\nconst resources = {\n en: {\n translation: require('../languages/en.json'),\n },\n fr: {\n translation: require('../languages/fr.json'),\n },\n de: {\n translation: require('../languages/de.json'),\n },\n es: {\n translation: require('../languages/es.json'),\n },\n it: {\n translation: require('../languages/it.json'),\n },\n};\n\ni18n\n .use(initReactI18next) // passes i18n down to react-i18next\n .init({\n resources,\n //lng: Localization.locale,\n lng: 'fr-FR',\n // language to use, more information here: https://www.i18next.com/overview/configuration-options#languages-namespaces-resources\n // you can use the i18n.changeLanguage function to change the language manually: https://www.i18next.com/overview/api#changelanguage\n // if you're using a language detector, do not define the lng option\n fallbackLng: 'fr-FR',\n interpolation: {\n escapeValue: false, // react already safes from xss\n },\n });\n\nexport const t = (key: string, params?: { [key: string]: any }) => i18n.t(key, params) as any as string;\nexport const changeLanguage = (key: any) => i18n.changeLanguage(key);\nexport const language = () => {\n // if (!PROFILE_LANGUAGE_ENABLED)\n // return \"fr-FR\"\n return availableLanguages.filter((v, i) => v.code == i18n.language).length > 0\n ? i18n.language\n : availableLanguages[0].code;\n};\n\nexport const dateLocale = () => {\n return availableLanguages.filter((v, i) => v.code == i18n.language).length > 0 ? fr : availableLanguages[0].dateFns;\n};\n\nexport const availableLanguages = [\n {\n code: 'fr-FR',\n text: 'Français 🇫🇷',\n dateFns: fr,\n },\n {\n code: 'en-GB',\n text: 'English 🇬🇧 🇺🇸',\n dateFns: uk,\n },\n {\n code: 'de-DE',\n text: 'Deutsch 🇩🇪',\n dateFns: de,\n },\n {\n code: 'es-ES',\n text: 'Español 🇪🇸',\n dateFns: es,\n },\n {\n code: 'it-IT',\n text: 'Italiano 🇮🇹',\n dateFns: it,\n },\n];\n","export const language_mapping = [\n {\n id: 1,\n code: 'fr-FR',\n libelle: 'Français',\n },\n {\n id: 2,\n code: 'en-GB',\n libelle: 'English',\n },\n {\n id: 3,\n code: 'es-ES',\n libelle: 'Español',\n },\n {\n id: 4,\n code: 'de-DE',\n libelle: 'Deutsch',\n },\n {\n id: 5,\n code: 'it-IT',\n libelle: 'Italiano',\n },\n];\n\nexport function getIdFromCode(code: string) {\n for (const lng of language_mapping) {\n if (lng.code.startsWith(code)) return lng.id;\n }\n return 0;\n}\n\nexport function getLibelleFromCode(code: string) {\n for (const lng of language_mapping) {\n if (lng.code.startsWith(code)) return lng.libelle;\n }\n return 0;\n}\n\nexport function getCodeFromId(id: number) {\n for (const lng of language_mapping) {\n if (lng.id == id) return lng.code;\n }\n return 'fr-FR';\n}\n","export const NEWS_TRANSLATION_ENABLED = false;\nexport const REMOVE_ACCOUNT_ENABLED = false;\nexport const PROFILE_LANGUAGE_ENABLED = false;\nexport const NEWS_PUBLICATION_MODE_ENABLED = false;\nexport const NEWS_INTERESTS_ENABLED = true;\nexport const NEWS_VIEWS_COUNT_ENABLED = false;\nexport const TV_SETTINGS_ENABLED = true;\nexport const ALL_CONTRIBUTIONS_BROADCAST_ENABLED = true;\n","export function objectToFormData(data: { [key: string]: any }) {\n const formData = new FormData();\n\n for (var key in data) {\n if (data.hasOwnProperty(key)) {\n appendFormData(data[key], key, formData);\n }\n }\n\n return formData;\n}\n\nfunction appendFormData(data: any, root: string, formData: FormData) {\n root = root || '';\n if (data instanceof Blob) {\n formData.append(root, data);\n } else if (data instanceof Date) {\n formData.append(root, data.toISOString());\n } else if (data instanceof Set) {\n const arrayData = Array.from(data);\n for (var i = 0; i < arrayData.length; i++) {\n appendFormData(arrayData[i], root + '[' + i + ']', formData);\n }\n } else if (Array.isArray(data)) {\n for (var i = 0; i < data.length; i++) {\n appendFormData(data[i], root + '[' + i + ']', formData);\n }\n } else if (data instanceof Object && data) {\n // Special case, if data is a blob/file or a react native picked file\n // add it directly and skip encoding\n if (data.uri && data.type && data.name) {\n formData.append(root, data);\n } else {\n for (var key in data) {\n if (data.hasOwnProperty(key)) {\n if (root === '') {\n appendFormData(data[key], key, formData);\n } else {\n appendFormData(data[key], root + '.' + key, formData);\n }\n }\n }\n }\n } else {\n if (data !== null && typeof data !== 'undefined') {\n formData.append(root, data);\n }\n }\n}\n\nexport const emailRegex =\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n","import { Platform } from 'react-native';\nimport axios from './base';\nimport { apiUrlBase } from '../../../configuration';\nimport { headers } from './base';\nimport { getIdFromCode } from '../../languages/language_mapping';\nimport { User } from '../../entities/User';\nimport { UserSaved } from '../storage';\nimport { AspNetUsers } from '../../entities/AspNetUsers';\nimport { REMOVE_ACCOUNT_ENABLED } from '../features';\nimport { ErrorReason } from './login';\nimport { objectToFormData } from '../formUtil';\nimport { GetUsersFilters } from '../../entities/GetUsersFilters';\nimport { GetBirthDays } from '../../entities/GetBirthDays';\n\nfunction addPhotoToFormData(photo, formData) {\n if (Platform.OS === 'android' && !photo.type) {\n return;\n }\n\n formData.append('files', photo);\n}\n\nexport async function getMe(token: string): Promise {\n return axios\n .get(`${apiUrlBase}Users/me`, {\n headers: headers(token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function searchUsers(user: UserSaved, query: string): Promise {\n if (query.length === 0) {\n return Promise.resolve([]);\n }\n\n return axios\n .get(`${apiUrlBase}Users/search/${encodeURIComponent(query)}`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function getCompanyUsers(user: UserSaved) {\n return getCompanyUsersFromCompanyId(user.entreprise?.id!, user?.token!);\n}\n\nexport async function getCompanyUsersFromCompanyId(companyId: string | number, token: string): Promise {\n return axios\n .get(apiUrlBase + 'Users/entreprise/' + companyId, {\n headers: headers(token),\n })\n .then((response) => response.data);\n}\n\nexport async function getUsersByIds(user: UserSaved, ids: number[]): Promise {\n return axios\n .get(`${apiUrlBase}Users/many/${ids.join(',')}`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function removeUser(user: UserSaved, aspNetUsers: AspNetUsers) {\n return axios.delete(apiUrlBase + 'AspNetUsers', {\n headers: headers(user.token),\n data: {\n id: aspNetUsers.id,\n userName: aspNetUsers.userName,\n email: aspNetUsers.email,\n },\n });\n}\n\nexport async function getUserProfile(userId: number | string, token: string): Promise {\n return axios\n .get(`${apiUrlBase}Users/${userId}`, {\n headers: headers(token),\n })\n .then((r) => r.data);\n}\n\nexport async function createUserProfile(token: string, userData, photo) {\n let formData = objectToFormData({\n prenom: userData.firstName,\n nom: userData.lastName,\n serviceid: userData.service + '',\n sitegeoid: userData.geoSite + '',\n groups: userData.groups,\n fonction: userData.jobTitle === '' ? JSON.stringify(null) : userData.jobTitle,\n telephone:\n userData.landlineNumber === '' || !userData.landlineNumber ? JSON.stringify(null) : userData.landlineNumber,\n portable: userData.mobileNumber === '' || !userData.mobileNumber ? JSON.stringify(null) : userData.mobileNumber,\n birthDate: userData.birthDate?.toISOString(),\n seniorityDate: userData.seniorityDate?.toISOString(),\n visibleZone: userData.visibleZone,\n email: userData.email,\n langueId: getIdFromCode(userData.language),\n dateSend: userData.dateSend,\n languageCode: userData.languageCode,\n });\n\n if (photo !== null && photo.fileName !== null) {\n addPhotoToFormData(photo, formData);\n }\n\n return axios\n .put(apiUrlBase + 'Contributions/user/create/', formData, {\n headers: headers(token, 'multipart/form-data'),\n })\n .then((response) => {\n return response.data.json;\n })\n .catch((error) => {\n if (error.response.status === 400 && error.response.data.code === 'email_already_registered') {\n throw Error(ErrorReason.EMAIL_ALREADY_REGISTERED);\n }\n throw error;\n });\n}\n\nexport async function updateUserProfile(userId: number | string, token: string, userData, photo) {\n let newUserData = objectToFormData({\n userId: Number(userId),\n prenom: userData.firstName,\n nom: userData.lastName,\n email: userData.email,\n serviceid: userData.service + '',\n sitegeoid: userData.geoSite + '',\n groups: userData.groups,\n fonction: userData.jobTitle === '' ? JSON.stringify(null) : userData.jobTitle,\n telephone:\n userData.landlineNumber === '' || !userData.landlineNumber ? JSON.stringify(null) : userData.landlineNumber,\n portable: userData.mobileNumber === '' || !userData.mobileNumber ? JSON.stringify(null) : userData.mobileNumber,\n birthDate: userData.birthDate,\n seniorityDate: userData.seniorityDate,\n visibleZone: userData.visibleZone,\n langueId: getIdFromCode(userData.language),\n hideEmail: userData.hideEmail,\n hidePhone: userData.hidePhone,\n hasAcceptedCGU: userData.hasAcceptedCGU,\n languageCode: userData.languageCode,\n });\n\n if (photo !== null && photo.fileName !== null) {\n addPhotoToFormData(photo, newUserData);\n }\n\n return axios\n .put(\n `${apiUrlBase}Contributions/user/update/${userId}`,\n\n newUserData,\n {\n headers: headers(token, 'multipart/form-data'),\n }\n )\n .then((response) => response.data.json);\n}\n\nexport async function putNewPassword(user: UserSaved, previousPassword: string, password: string) {\n return axios.post(\n apiUrlBase + 'Auth/updatePassword/' + user.aspNetUsers.id,\n JSON.stringify({\n // email: user.aspNetUsers.email,\n currentPassword: previousPassword,\n newPassword: password,\n }),\n {\n headers: headers(user.token),\n }\n );\n}\n\nexport async function acceptCGU(user: UserSaved) {\n return axios.post(\n apiUrlBase + 'users/acceptCGU/' + user.id,\n {},\n {\n headers: headers(user.token),\n }\n );\n}\n\nexport const removeAccount = (user: UserSaved, token: string) => {\n if (!REMOVE_ACCOUNT_ENABLED) return Promise.resolve();\n return axios.delete(apiUrlBase + 'Users/' + user.id, {\n headers: headers(token),\n });\n};\n\nexport function getUserBirthDays(user: UserSaved, filters: GetUsersFilters): Promise {\n return axios\n .get(apiUrlBase + 'Users/birthdays', {\n headers: headers(user.token),\n params: {\n ...filters,\n search: filters.search?.length ? filters.search : undefined,\n },\n })\n .then((r) => r.data);\n}\n\nexport function getUsersExportCsvUrl(user: UserSaved) {\n return `${apiUrlBase}Users/csv?access_token=${user.token}`;\n}\n","import { Dispatch } from 'redux';\nimport { match } from 'ts-pattern';\nimport { RootState, UserSaved } from '../services/storage';\nimport { ActionType } from './action';\n\nexport type UserState = {\n user: UserSaved | null;\n};\n\nexport const defaultUserState = {\n user: null as UserSaved | null,\n};\n\nexport type UserActionType = {\n type: 'SET_USER';\n payload: UserSaved | null;\n};\n\nexport function userReducer(state: RootState, action: ActionType): RootState {\n return match(action)\n .with({ type: 'SET_USER' }, (action) => ({\n ...state,\n user: {\n ...state.user,\n user: action.payload,\n },\n }))\n .otherwise(() => state);\n}\n\nexport function setUser(user: UserSaved | null, dispatch: Dispatch) {\n dispatch({ type: 'SET_USER', payload: user });\n}\n","import axios from './base';\nimport { headers } from './base';\nimport { apiUrlBase } from '../../../configuration';\nimport { User } from '../../entities/User';\nimport { UserSubAdmin } from '../../entities/UserSubAdmin';\nimport { UserSubAdminMap } from '../../entities/UserSubAdminMap';\nimport { UserSaved } from '../storage';\n\nexport async function getSingleUserSubAdmins(token: string): Promise {\n return axios\n .get(`${apiUrlBase}UserSubAdmins/getSingle`, {\n headers: headers(token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function getUserSubAdmins(user: UserSaved): Promise {\n return axios\n .get(`${apiUrlBase}UserSubAdmins`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function getUsersByUserSubAdmin(user: UserSaved, id: number, type: string): Promise {\n return axios\n .get(`${apiUrlBase}UserSubAdmins/getUsers/${type}/${id}`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function updateValidationMap(user: UserSaved, id: number, type: string, userIds: number[]): Promise {\n return axios\n .put(`${apiUrlBase}UserSubAdmins/${type}/${id}`, userIds, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n","export const ScreenNames = {\n CompanyNewsScreen: 'news',\n ContributionsAllScreen: 'all',\n Login: 'login',\n LoginAs: 'loginas',\n Main: 'main',\n Logout: 'logout',\n Registration: 'registration',\n ValidationCode: 'validation-code',\n AdminRoute: 'administration',\n ResetPasswordSendCode: 'reset-password-send-code',\n ResetPasswordSendCodeSuccess: 'reset-password-send-code-success',\n ResetPassword: 'reset-password',\n NoProfessionalAddress: 'NoProfessionalAddress',\n ContributionListScreenOffers: 'Offers',\n ContributionListScreenRequests: 'Requests',\n ContributionFormScreen: 'Publish',\n ContributionListScreenMine: 'CurrentUserList',\n ContributionListScreen: 'List',\n ContributionListScreenParticipation: 'Participation',\n SuggestionBoxScreen: 'Suggestion',\n ContributionTabs: 'Tabs',\n ContributionEditFormScreen: 'edit',\n SuggestionsToApproveList: 'SuggestionsToApprove',\n ReviewedSuggestionsList: 'Reviewed',\n CompanyNewsToApproveList: 'NewsToApprove',\n ReviewedCompanyNewsList: 'ReviewedCompanyNewsList',\n SurveysToApproveList: 'SurveysToApprove',\n ApprovedSurveysList: 'ApprovedSurveys',\n LoggedInHome: 'home',\n CompanyAdminMain: 'administration',\n SellMainRouter: 'sell',\n ActivityMainRouter: 'activity',\n MutualAidMainRouter: 'mutual-aid',\n CarPoolMainRouter: 'carpool',\n EventMainRouter: 'event',\n TrainingMainRouter: 'training',\n BookingRouter: 'booking',\n OrganizationCharts: 'organization-charts',\n LostPropertyMainRouter: 'lost-property',\n SurveyMainRouter: 'survey',\n SuggestionMainRouter: 'suggestionMain',\n DocumentMainRouter: 'document',\n EmergencySmsRouter: 'emergency-sms',\n Directory: 'directory',\n LoggedInDrawerNavigation: 'navigation',\n Profile: 'Profile',\n EditMyProfile: 'EditMyProfile',\n EditUser: 'EditUser',\n EditPasswordScreen: 'EditPassword',\n ContributionItemDetailScreen: 'detail',\n StatisticsAdministration: 'statistics',\n SuggestionsAdministration: 'suggestions',\n DirectoryAdministration: 'directory',\n UserBirthDays: 'birth-days',\n ContributionsAdministration: 'contributions',\n CompanyNewsAdministration: 'company-news',\n SurveyAdministration: 'surveys',\n Messaging: 'messaging',\n MessagingMain: 'messaging-main',\n MessagingThread: 'messaging-thread',\n MessagingCreateThread: 'messaging-create-thread',\n OrganizationalChartAdmin: 'organizational-chart',\n OrganizationalChartAdminMain: 'organizational-chart-main',\n OrganizationalChartAdminCreate: 'organizational-chart-create',\n OrganizationalChartAdminUpdate: 'organizational-chart-update',\n BookingAdmin: 'booking',\n BookingAdminMain: 'list',\n BookingAdminCreate: 'create',\n BookingAdminUpdate: 'update',\n BookingMain: 'list',\n BookingCreate: 'create',\n BookingUpdate: 'update',\n CompanyGroupAdmin: 'company-group',\n CompanyGroupAdminMain: 'company-group-main',\n CompanyGroupAdminCreate: 'company-group-create',\n CompanyGroupAdminUpdate: 'company-group-update',\n CategoriesAdministration: 'categories',\n CreateCategory: 'category-creation',\n ManageCategories: 'categories-manage',\n ValidationMap: 'validation-map',\n ValidationMapUpdate: 'validation-map-update',\n\n // Screen Settings\n InternScreenAdmin: 'intern-screen',\n ScreenAdmin: 'screen',\n ScreenSettingsList: 'settings',\n ScreenSettingsCreate: 'settings-create',\n ScreenSettingsUpdate: 'settings-update',\n ScreenPlaylistList: 'playlists',\n ScreenPlaylistCreate: 'playlist-create',\n ScreenPlaylistUpdate: 'playlist-update',\n ScreenMediasList: 'medias',\n\n // Users\n ContributeurList: 'contributeur-list',\n ContributeurCreate: 'contributeur-create',\n\n // Kiosk\n KiosqueFolder: 'folder',\n KiosqueCreateDocument: 'create-document',\n KiosqueCreateFolder: 'create-folder',\n KiosqueUpdateDocument: 'update-document',\n KiosqueUpdateFolder: 'update-folder',\n\n // Forms\n CreateCompanyNews: 'create-company-news',\n EditCompanyNews: 'edit-company-news',\n DuplicateCompanyNews: 'duplicate-company-news',\n\n // Details\n DetailCompanyNews: 'company-news',\n\n // Survey\n SurveyList: 'list',\n SurveyDetails: 'details',\n SurveyAdminList: 'admin',\n SurveyCreate: 'create',\n SurveyUpdate: 'update',\n\n // Custom modules\n CustomModuleTabs: 'tabs',\n CustomModuleList: 'list',\n CustomModuleDetails: 'custom-details',\n CustomModuleAdminList: 'admin',\n CustomModuleCreate: 'create',\n CustomModuleUpdate: 'update',\n\n // Emergency SMS\n EmergencySmsTabs: 'tabs',\n EmergencySmsListTemplates: 'templates',\n EmergencySmsListMyTemplates: 'my-templates',\n EmergencySmsCreateTemplate: 'create',\n EmergencySmsUpdateTemplate: 'update',\n EmergencySmsSend: 'send',\n EmergencySmsSendTemplate: 'send-template',\n};\n","import { Category } from './entities/Category';\nimport { ContributionCovoiturage } from './entities/ContributionCovoiturage';\nimport { ContributionEvenement } from './entities/ContributionEvenement';\nimport { ContributionHobbie } from './entities/ContributionHobbie';\nimport { ContributionKiosque } from './entities/ContributionKiosque';\nimport { ContributionObjet } from './entities/ContributionObjet';\nimport { ContributionService } from './entities/ContributionService';\nimport { ContributionVente } from './entities/ContributionVente';\nimport { CSondage } from './entities/CSondage';\nimport { MActuPost } from './entities/MActuPost';\nimport { ScreenNames } from './ScreenNames';\n\nexport enum SelectMode {\n MANUAL,\n EVERYONE,\n BY_SERVICE,\n BY_GEOSITE,\n BY_GEOSITE_AND_SERVICE,\n BY_GROUP,\n}\n\nexport type UserProfileData = {\n nom: string;\n prenom: string;\n telephone: string;\n portable: string;\n aspNetUsers: { email: string };\n entrepriseSiteGeo: { siteGeo: string };\n entrepriseService: { libelle: string };\n fonction: any;\n entreprise: { fichierIdLogo: string };\n fichierIdProfil: string;\n};\n\nexport enum SpreadingType {\n ENTREPRISE,\n USERS,\n SERVICES,\n SITES,\n SITES_AND_SERVICES,\n GROUPS,\n}\n\nexport function SelectModeToSpreadingType(selectMode: SelectMode | undefined): SpreadingType | undefined {\n switch (selectMode) {\n case SelectMode.EVERYONE:\n return SpreadingType.ENTREPRISE;\n case SelectMode.MANUAL:\n return SpreadingType.USERS;\n case SelectMode.BY_SERVICE:\n return SpreadingType.SERVICES;\n case SelectMode.BY_GEOSITE:\n return SpreadingType.SITES;\n case SelectMode.BY_GEOSITE_AND_SERVICE:\n return SpreadingType.SITES_AND_SERVICES;\n case SelectMode.BY_GROUP:\n return SpreadingType.GROUPS;\n default:\n return undefined;\n }\n}\n\nexport function spreadingTypeToSelectMode(selectMode: SpreadingType | undefined): SelectMode | undefined {\n switch (selectMode) {\n case SpreadingType.ENTREPRISE:\n return SelectMode.EVERYONE;\n case SpreadingType.USERS:\n return SelectMode.MANUAL;\n case SpreadingType.SERVICES:\n return SelectMode.BY_SERVICE;\n case SpreadingType.SITES:\n return SelectMode.BY_GEOSITE;\n case SpreadingType.SITES_AND_SERVICES:\n return SelectMode.BY_GEOSITE_AND_SERVICE;\n case SpreadingType.GROUPS:\n return SelectMode.BY_GROUP;\n default:\n return undefined;\n }\n}\n\nexport enum ContributionType {\n UNDEFINED,\n SUGGESTION,\n CARPOOL,\n LOCAL_ECONOMY,\n EVENT,\n ACTIVITY,\n LOST_PROPERTY,\n MUTUAL_AID,\n SURVEY,\n SELL,\n DOCUMENT,\n COMPANY_NEWS,\n ALL,\n UNKNOWN,\n FORMATION,\n CUSTOM_MODULE,\n}\n\nexport interface ContribTypeInfo {\n key: string;\n screenName: string;\n contributionIdSelector?: (item: any) => number;\n categoryIdSelector?: (item: any) => number;\n categorySelector?: (item: any) => Category;\n titleSelector?: (item: any) => string;\n formScreen?: string;\n detailScreen?: string;\n}\n\nexport const GetContributionId = (type: ContributionType, data: any) =>\n ContributionTypesInfos[type].contributionIdSelector?.(data) ?? data.contributionId;\n\nexport const ContributionTypesInfos: {\n [key: number]: ContribTypeInfo;\n} = {\n [ContributionType.ALL]: {\n key: 'contribution_all',\n screenName: ScreenNames.LoggedInHome,\n },\n [ContributionType.CARPOOL]: {\n key: 'contribution_carpool',\n screenName: ScreenNames.CarPoolMainRouter,\n titleSelector: (item: ContributionCovoiturage) => item.description,\n },\n [ContributionType.COMPANY_NEWS]: {\n key: 'company_news',\n screenName: ScreenNames.LoggedInHome,\n contributionIdSelector: (item) => item.mActuId,\n categoryIdSelector: (item) => item.mActu?.categoryId,\n categorySelector: (item) => item.mActu?.category,\n titleSelector: (item: MActuPost) => item.titre,\n formScreen: ScreenNames.EditCompanyNews,\n detailScreen: ScreenNames.DetailCompanyNews,\n },\n [ContributionType.DOCUMENT]: {\n key: 'contribution_document',\n screenName: ScreenNames.DocumentMainRouter,\n titleSelector: (item: ContributionKiosque) => item.title,\n },\n [ContributionType.SELL]: {\n key: 'contribution_sell',\n screenName: ScreenNames.SellMainRouter,\n categoryIdSelector: (item) => item.contribution?.categoryId,\n categorySelector: (item) => item.contribution?.category,\n titleSelector: (item: ContributionVente) => item.titre,\n },\n [ContributionType.EVENT]: {\n key: 'contribution_event',\n screenName: ScreenNames.EventMainRouter,\n categoryIdSelector: (item) => item.contribution?.categoryId,\n categorySelector: (item) => item.contribution?.category,\n titleSelector: (item: ContributionEvenement) => item.titre,\n },\n [ContributionType.FORMATION]: {\n key: 'contribution_training',\n screenName: ScreenNames.TrainingMainRouter,\n categoryIdSelector: (item) => item.contribution?.categoryId,\n categorySelector: (item) => item.contribution?.category,\n titleSelector: (item: ContributionEvenement) => item.titre,\n },\n [ContributionType.ACTIVITY]: {\n key: 'contribution_activity',\n screenName: ScreenNames.ActivityMainRouter,\n categoryIdSelector: (item) => item.contribution?.categoryId,\n categorySelector: (item) => item.contribution?.category,\n titleSelector: (item: ContributionHobbie) => item.activite,\n },\n [ContributionType.MUTUAL_AID]: {\n key: 'contribution_mutual_aid',\n screenName: ScreenNames.MutualAidMainRouter,\n categoryIdSelector: (item) => item.contribution?.categoryId,\n categorySelector: (item) => item.contribution?.category,\n titleSelector: (item: ContributionService) => item.theme,\n },\n [ContributionType.SUGGESTION]: {\n key: 'contribution_suggestion',\n screenName: ScreenNames.SuggestionsToApproveList,\n },\n [ContributionType.SURVEY]: {\n key: 'contribution_survey',\n screenName: ScreenNames.SurveyMainRouter,\n titleSelector: (item: CSondage) => item.titre,\n },\n [ContributionType.LOST_PROPERTY]: {\n key: 'contribution_lost_property',\n screenName: ScreenNames.LostPropertyMainRouter,\n titleSelector: (item: ContributionObjet) => item.lieu,\n },\n};\n\nexport function IntToContributionType(value?: string): ContributionType {\n for (const ct in ContributionType) {\n if (ContributionType[ct] == value || ContributionType[ct] == value)\n return ContributionType[ct] as unknown as ContributionType;\n }\n return ContributionType.UNKNOWN;\n}\n\nexport type User = {\n id: string;\n token: string;\n entrepriseId: string;\n};\n","import { Contributions } from '../services/storage';\nimport { ContributionType } from '../types';\nimport { MessagingActionType } from './messaging';\nimport { UserActionType } from './user';\nimport { VersionActionType } from './version';\n\nexport type ActionType =\n | {\n type: 'SET_CONTRIBUTIONS';\n payload: Contributions;\n }\n | {\n type: 'SET_DETAIL_CONTRIBUTION_TYPE';\n payload: ContributionType | undefined;\n }\n | {\n type: 'SET_IS_NOTIF';\n payload: boolean;\n }\n | {\n type: 'SET_FORCE_BACK';\n payload: boolean;\n }\n | {\n type: 'SET_CURRENT_CONTRIBUTION';\n payload: any;\n }\n | {\n type: 'SET_PHONE_MODE';\n payload: boolean;\n }\n | {\n type: 'SET_LOADING';\n payload: boolean;\n }\n | {\n type: 'MESSAGING_UNSEEN_MESSAGE_COUNT_FETCH_END';\n payload: number;\n }\n | {\n type: 'setContributionsListNeedsRefresh';\n payload: boolean;\n }\n | {\n type: 'setDirectoryListNeedsRefresh';\n payload: boolean;\n }\n | {\n type: 'setValidationMapListNeedsRefresh';\n payload: boolean;\n }\n | {\n type: 'setContributeurListNeedsRefresh';\n payload: boolean;\n }\n | UserActionType\n | MessagingActionType\n | VersionActionType;\n\nexport const setContributions = (contributions: Contributions): ActionType => {\n return { type: 'SET_CONTRIBUTIONS', payload: contributions };\n};\n\nexport const setDetailContributionType = (contributionType: ContributionType | undefined): ActionType => {\n return { type: 'SET_DETAIL_CONTRIBUTION_TYPE', payload: contributionType };\n};\n\nexport const setIsNotif = (notif: boolean): ActionType => {\n return { type: 'SET_IS_NOTIF', payload: notif };\n};\n\nexport const setForceBack = (forceBack: boolean): ActionType => {\n return { type: 'SET_FORCE_BACK', payload: forceBack };\n};\n\nexport const setCurrentContribution = (contribution: any): ActionType => {\n return { type: 'SET_CURRENT_CONTRIBUTION', payload: contribution };\n};\n\nexport const setPhoneMode = (isPhoneMode: boolean): ActionType => {\n return {\n type: 'SET_PHONE_MODE',\n payload: isPhoneMode,\n };\n};\n\nexport const setLoading = (isLoading: boolean): ActionType => {\n return {\n type: 'SET_LOADING',\n payload: isLoading,\n };\n};\n\nexport const setContributionsListNeedsRefresh = (value: boolean): ActionType => {\n return {\n type: 'setContributionsListNeedsRefresh',\n payload: value,\n };\n};\n\nexport const setValidationMapListNeedsRefresh = (value: boolean): ActionType => {\n return {\n type: 'setValidationMapListNeedsRefresh',\n payload: value,\n };\n};\n\nexport const setContributeurListNeedsRefresh = (value: boolean): ActionType => {\n return {\n type: 'setContributeurListNeedsRefresh',\n payload: value,\n };\n};\n\nexport const setDirectoryListNeedsRefresh = (value: boolean): ActionType => {\n return {\n type: 'setDirectoryListNeedsRefresh',\n payload: value,\n };\n};\n","export const PRIMARY_COLOR = '#45AFE8ff';\nexport const PRIMARY_COLOR_LIGHT = '#addaf1ff';\nexport const PRIMARY_COLOR_DARKEN = '#1b465c';\nexport const SECONDARY_COLOR = '#4FDFC4ff';\nexport const SECONDARY_COLOR_LIGHT = '#95ebdb';\nexport const SECONDARY_COLOR_DARKEN = '#17423a';\nexport const LIGHT_GRAY = '#cccccc';\nexport const GRAY = '#999999';\nexport const SMOKE_WHITE = '#eeeeee';\nexport const WHITE = '#ffffff';\nexport const DARK_GRAY = '#333333';\nexport const ALPHA_WHITE = 'rgba(255, 255, 255, 0.5)';\nexport const FORM_LIGHT_GRAY = '#E8E7E7';\nexport const ALERT_COLOR = '#ad1d1f';\n// export const BACKGROUND_COLOR = '#eff4fa';\nexport const BACKGROUND_COLOR = '#ffffff';\n","import { StyleSheet } from 'react-native';\nimport { FORM_LIGHT_GRAY, PRIMARY_COLOR_LIGHT } from './appColor';\n\nexport const FONT_FAMILY_DEFAULT = {\n regular: 'Montserrat-Regular',\n bold: 'Montserrat-SemiBold',\n light: 'Montserrat-Light',\n};\n\nexport const globalStyle = StyleSheet.create({\n container: {\n flex: 1,\n fontFamily: FONT_FAMILY_DEFAULT.regular,\n },\n safeArea: {\n flex: 1,\n },\n screen: {\n flex: 1,\n },\n logo: {\n width: '100%',\n height: 100,\n },\n formItemTitle: {\n marginTop: 50,\n },\n formHorizontalSpaced: {\n height: 10,\n },\n forgottenPassword: {\n marginTop: 20,\n },\n two_columns_layout: {\n flex: 1,\n flexDirection: 'row',\n },\n column: {\n backgroundColor: '#fff',\n flex: 1,\n },\n checkboxContainer: {\n flexDirection: 'row',\n },\n checkbox: {\n width: 30,\n height: 30,\n alignSelf: 'center',\n },\n appText: {\n fontSize: 14,\n textAlignVertical: 'center',\n color: '#272727',\n fontFamily: FONT_FAMILY_DEFAULT.regular,\n },\n textInput: {\n backgroundColor: 'white',\n borderTopWidth: 0,\n borderRightWidth: 0,\n borderLeftWidth: 0,\n borderBottomColor: FORM_LIGHT_GRAY,\n borderBottomWidth: 1,\n fontSize: 14,\n paddingLeft: 10,\n marginTop: 0,\n paddingTop: 10,\n paddingBottom: 3,\n },\n textInputContained: {\n backgroundColor: 'white',\n borderColor: FORM_LIGHT_GRAY,\n borderWidth: 1,\n fontSize: 14,\n padding: 10,\n borderRadius: 8,\n },\n pickerTextInput: {\n backgroundColor: 'white',\n borderWidth: 0,\n borderTopWidth: 0,\n borderRightWidth: 0,\n borderLeftWidth: 0,\n borderBottomWidth: 1,\n borderBottomColor: FORM_LIGHT_GRAY,\n fontSize: 14,\n width: '100%',\n },\n pickerTextInputWeb: {\n backgroundColor: 'white',\n borderWidth: 0,\n borderBottomWidth: 1,\n height: 30,\n borderBottomColor: FORM_LIGHT_GRAY,\n fontSize: 14,\n width: '100%',\n maxWidth: 300,\n },\n listRow: {\n paddingBottom: 18,\n paddingTop: 18,\n borderBottomWidth: 1,\n borderBottomColor: FORM_LIGHT_GRAY,\n },\n hypertextLink: {\n color: '#272727',\n fontSize: 14,\n fontFamily: FONT_FAMILY_DEFAULT.bold,\n textDecorationLine: 'underline',\n },\n buttonDisabled: {\n backgroundColor: '#CCCCCC',\n },\n button: {\n maxWidth: 315,\n width: '100%',\n alignSelf: 'center',\n },\n button_content: {\n minHeight: 25,\n padding: 3,\n width: '100%',\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: 8,\n },\n button_primary: {\n borderRadius: 8,\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 1,\n },\n shadowOpacity: 0.22,\n shadowRadius: 2.22,\n\n elevation: 3,\n },\n button_light: {\n borderWidth: 2,\n borderColor: PRIMARY_COLOR_LIGHT,\n borderRadius: 8,\n },\n button_ultra_light: {\n borderWidth: 1,\n borderColor: '#d4d4d4',\n borderRadius: 8,\n },\n guest_form_pc: {\n flex: 1,\n maxWidth: 600,\n padding: 10,\n paddingTop: 110,\n },\n guest_form_mobile: {\n flex: 1,\n padding: 10,\n },\n main_column: {\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center',\n flex: 1,\n },\n guest_form: {},\n overlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: '#ffffffcc',\n },\n overlayBackground: {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n backgroundColor: '#00000033',\n },\n avatarPicker: {\n position: 'absolute',\n backgroundColor: '#fff',\n top: '20%',\n left: '20%',\n right: '20%',\n bottom: '20%',\n flexWrap: 'wrap',\n alignItems: 'center',\n justifyContent: 'center',\n flexDirection: 'row',\n },\n textInputMultiline: {\n height: 100,\n borderWidth: 1,\n borderColor: FORM_LIGHT_GRAY,\n borderTopWidth: 1,\n borderRightWidth: 1,\n borderLeftWidth: 1,\n borderBottomWidth: 1,\n borderRadius: 8,\n },\n detailRow: {\n padding: 18,\n borderBottomWidth: 1,\n borderBottomColor: FORM_LIGHT_GRAY,\n },\n});\n","import { FONT_FAMILY_DEFAULT, globalStyle } from '../../styles/globalStyle';\nimport { StyleProp, Text, TextStyle } from 'react-native';\nimport React from 'react';\n\nexport enum Mode {\n NORMAL,\n ERROR,\n BOLD,\n HEADER1,\n HEADER2,\n SMALL,\n}\n\nexport type AppTextProps = {\n numberOfLines?: number;\n children: any;\n onPress?: any;\n style?: StyleProp;\n mode?: Mode;\n};\n\nexport default function AppText(props: AppTextProps) {\n let style = {};\n switch (props.mode) {\n case Mode.ERROR:\n style = { color: 'red' };\n break;\n case Mode.BOLD:\n style = {\n fontFamily: FONT_FAMILY_DEFAULT.bold,\n fontWeight: 'bold',\n };\n break;\n case Mode.HEADER1:\n style = {\n fontFamily: FONT_FAMILY_DEFAULT.bold,\n fontSize: 30,\n marginBottom: 20,\n };\n break;\n case Mode.HEADER2:\n style = {\n fontFamily: FONT_FAMILY_DEFAULT.bold,\n fontWeight: 'bold',\n fontSize: 20,\n marginBottom: 30,\n };\n break;\n case Mode.SMALL:\n style = {\n fontFamily: FONT_FAMILY_DEFAULT.light,\n fontSize: 11,\n };\n break;\n }\n\n return (\n \n {props.children}\n \n );\n}\n","import { StyleProp, TextStyle, TouchableOpacity, View, ViewStyle } from 'react-native';\nimport { FONT_FAMILY_DEFAULT, globalStyle } from '../../styles/globalStyle';\nimport AppText from './AppText';\nimport React from 'react';\nimport { LinearGradient } from 'expo-linear-gradient';\nimport { PRIMARY_COLOR, SECONDARY_COLOR } from '../../styles/appColor';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\n\nexport enum Type {\n PRIMARY,\n LIGHT,\n ULTRA_LIGHT,\n}\n\nexport function AppButton(props: {\n textStyle?: TextStyle;\n title: string;\n onPress?: () => void;\n enabled?: boolean;\n type?: Type;\n style?: StyleProp;\n icon?: string;\n iconOnTopEdge?: boolean;\n fontSize?: number;\n colors?: string[];\n}) {\n const isEnabled = props.enabled || props.enabled == null;\n\n let typeStyle = {};\n let colors = [];\n let textColor = '';\n let iconColor = PRIMARY_COLOR;\n switch (props.type) {\n case Type.PRIMARY:\n typeStyle = globalStyle.button_primary;\n colors = [PRIMARY_COLOR, SECONDARY_COLOR];\n textColor = '#fff';\n iconColor = '#fff';\n break;\n case Type.ULTRA_LIGHT:\n typeStyle = globalStyle.button_light;\n colors = ['#fff', '#fff'];\n textColor = '#bfbfbf';\n break;\n default:\n case Type.LIGHT:\n typeStyle = globalStyle.button_light;\n colors = ['#fff', '#fff'];\n textColor = PRIMARY_COLOR;\n break;\n }\n if (!isEnabled) {\n colors = ['#ccc', '#ccc'];\n }\n\n if (props.colors) {\n colors = props.colors;\n }\n\n return (\n \n \n {props.icon !== undefined ? (\n \n \n \n ) : null}\n \n {props.title}\n \n \n \n );\n}\n","import { AppButton } from './AppButton';\nimport { t } from '../../services/translations';\nimport React, { useState } from 'react';\nimport * as DocumentPicker from 'expo-document-picker';\nimport { Platform, View } from 'react-native';\nimport AppText from './AppText';\nimport { match } from 'ts-pattern';\n\nexport const megabyte = 1048576;\nexport type FileErrorMessage = 'file_too_large' | 'file_type_incorrect';\n\nexport type FilePickerProps = {\n setFile: (value: ((prevState: undefined) => undefined) | undefined) => void;\n file: any;\n defaultFilename: any;\n maxSizeMB?: number;\n error?: string;\n setError?: (value: FileErrorMessage | undefined) => void;\n allowedExtensions?: string[];\n};\n\nexport function FilePicker(props: FilePickerProps) {\n const [error, setError] = useState(undefined);\n\n async function _pickFile() {\n DocumentPicker.getDocumentAsync().then((result) => {\n if (props.setError !== undefined) {\n props.setError(undefined);\n }\n\n setError(undefined);\n\n if (result.canceled) {\n throw new Error('File must be defined');\n }\n\n const fileResult = result.assets[0];\n if (!fileResult) {\n throw new Error('File must be defined');\n }\n\n if (props.maxSizeMB !== undefined && (fileResult.size || 0) > props.maxSizeMB * megabyte) {\n if (props.setError !== undefined) {\n props.setError('file_too_large');\n }\n\n setError('file_too_large');\n return;\n }\n\n let { name, size, uri } = fileResult;\n let nameParts = name.split('.');\n let fileType = nameParts[nameParts.length - 1];\n\n if (\n props.allowedExtensions &&\n props.allowedExtensions.find((e) => e.toLowerCase() === fileType.toLowerCase()) === undefined\n ) {\n setError('file_type_incorrect');\n props.setError && props.setError('file_type_incorrect');\n } else {\n if (Platform.OS === 'web' && fileResult.file !== undefined && fileResult.file !== null) {\n props.setFile(fileResult.file);\n } else {\n if (Platform.OS === 'android' && uri[0] === '/') {\n uri = `file://${uri}`;\n uri = uri.replace(/%/g, '%25');\n }\n\n const fileToUpload = {\n name: name,\n size: size,\n uri: uri,\n type: 'application/' + fileType,\n };\n props.setFile(fileToUpload);\n }\n }\n });\n }\n\n return (\n \n \n {props.maxSizeMB && (\n <>\n {(error || props.error) && (\n \n {error &&\n match(error)\n .with('file_too_large', () => t('file_too_large'))\n .with('file_type_incorrect', () =>\n t('file_type_incorrect', { types: props.allowedExtensions?.join(', ') })\n )\n .exhaustive()}\n {!error && props.error}\n \n )}\n \n {t('max_size')} {props.maxSizeMB} {t('mb')}\n \n {props.allowedExtensions?.length && error !== 'file_type_incorrect' && (\n \n {t('accepted_file_types', { types: props.allowedExtensions?.join(', ') })}\n \n )}\n \n )}\n \n );\n}\n","import { Alert, Linking, Platform } from 'react-native';\nimport React, { Dispatch } from 'react';\nimport { ContributionType, ContributionTypesInfos } from '../types';\nimport { intersection, last } from 'lodash';\nimport * as ImagePicker from 'expo-image-picker';\nimport * as DocumentPicker from 'expo-document-picker';\nimport * as FileSystem from 'expo-file-system';\nimport * as ImageManipulator from 'expo-image-manipulator';\nimport { decode as atob } from 'base-64';\nimport { t } from './translations';\nimport 'intl';\nimport 'intl/locale-data/jsonp/en';\nimport 'intl/locale-data/jsonp/fr';\nimport 'intl/locale-data/jsonp/es';\nimport 'intl/locale-data/jsonp/de';\nimport 'intl/locale-data/jsonp/it';\nimport { ScreenNames } from '../ScreenNames';\nimport { setContributionsListNeedsRefresh } from '../store/action';\nimport { UserSaved } from './storage';\nimport { NavigationContainerRef } from '@react-navigation/native';\nimport { MActu } from '../entities/MActu';\nimport { Contribution } from '../entities/Contribution';\nimport { DateTime } from 'luxon';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport { megabyte } from '../components/atomic/FilePicker';\nimport * as Localization from 'expo-localization';\n\nexport function isMailValid(email: string) {\n const expression =\n /(?!.*\\.{2})^([a-z\\d!#$%&'*+\\-\\/=?^_`{|}~\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+(\\.[a-z\\d!#$%&'*+\\-\\/=?^_`{|}~\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+)*|\"((([\\t]*\\r\\n)?[\\t]+)?([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))*(([\\t]*\\r\\n)?[\\t]+)?\")@(([a-z\\d\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]|[a-z\\d\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF][a-z\\d\\-._~\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]*[a-z\\d\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])\\.)+([a-z\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]|[a-z\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF][a-z\\d\\-._~\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]*[a-z\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])\\.?$/i;\n return expression.test(email.toString().toLowerCase());\n}\n\nexport const openURL = (url: string, newTab = true) => {\n if (Platform.OS === 'web' && newTab) {\n window.open(forceURLPrefix(url), '_blank');\n } else if (Platform.OS === 'web') {\n window.open(forceURLPrefix(url), '_self');\n } else {\n Linking.openURL(forceURLPrefix(url));\n }\n};\n\nconst forceURLPrefix = (url: string) => {\n let PROTOCOL_WHITELIST = ['http:', 'https:', 'mailto:', 'tel:'];\n for (let i = 0; i < PROTOCOL_WHITELIST.length; i++) {\n if (url.startsWith(PROTOCOL_WHITELIST[i])) {\n return url;\n }\n }\n\n return `https://${url}`;\n};\n\nexport const isMobile = () => {\n return Platform.OS !== 'web';\n //return React.View !== undefined\n};\n\nexport const isAdmin = (user: UserSaved) => user.lovIdType === 13;\n\nexport const hasSubAdminRight = (user: UserSaved, services?: number[], sitegeo?: number[], groups?: number[]) => {\n // First case, we check if the user is a sub-admin over everything\n if (\n (user.userSubAdmins?.filter(\n (e) => e.entrepriseGroupId == null && e.entrepriseServiceId == null && e.entrepriseSiteGeoId == null\n ).length || 0) > 0\n ) {\n return true;\n }\n\n // Second case, we check if the user is a sub-admin over the spreading\n const subAdminGroupIds = user.userSubAdmins\n ?.filter((a) => a.entrepriseGroupId != null)\n .map((a) => a.entrepriseGroupId);\n\n const subAdminServiceIds = user.userSubAdmins\n ?.filter((a) => a.entrepriseServiceId != null)\n .map((a) => a.entrepriseServiceId);\n\n const subAdminSiteGeoIds = user.userSubAdmins\n ?.filter((a) => a.entrepriseSiteGeoId != null)\n .map((a) => a.entrepriseSiteGeoId);\n\n const subAdminGroupIdsInUserRight = intersection(subAdminGroupIds, groups || []);\n const subAdminServiceIdsInUserRight = intersection(subAdminServiceIds, services || []);\n const subAdminSiteGeoIdsInUserRight = intersection(subAdminSiteGeoIds, sitegeo || []);\n\n return (\n (subAdminGroupIdsInUserRight.length === groups?.length && subAdminGroupIdsInUserRight.length !== 0) ||\n (subAdminServiceIdsInUserRight.length === services?.length && subAdminServiceIdsInUserRight.length !== 0) ||\n (subAdminSiteGeoIdsInUserRight.length === sitegeo?.length && subAdminSiteGeoIdsInUserRight.length !== 0)\n );\n};\n\nexport const isSubAdmin = (user: UserSaved) => user.userSubAdmins !== undefined && user.userSubAdmins.length > 0;\n\nexport function getReadablePercent(number: number) {\n if (isNaN(number)) {\n return '-';\n }\n\n return (number * 100).toFixed(0) + '%';\n}\n\nexport function getPlural(value: number, singular: string, plural: string) {\n if (value === 0 || value === 1) {\n return singular;\n }\n\n return plural;\n}\n\nexport const combineNames = (userProfileData: { nom: string; prenom: string }) => {\n return (\n (userProfileData.prenom == null ? '' : userProfileData.prenom) +\n ' ' +\n (userProfileData.nom == null ? '' : userProfileData.nom)\n );\n};\n\nexport function drawerIcon(iconName: string) {\n return () => ;\n}\n\nexport async function _compressImage(result: any) {\n return ImageManipulator.manipulateAsync(result.assets[0].uri, [{ resize: { width: 512 } }], {\n format: ImageManipulator.SaveFormat.PNG,\n });\n}\n\nexport const getFileInfo = async (fileURI: string) => {\n try {\n let fileInfo;\n if (Platform.OS !== 'web') {\n fileInfo = await FileSystem.getInfoAsync(fileURI);\n } else {\n var base64str = fileURI.split('base64,')[1];\n var decoded = atob(base64str);\n fileInfo = {\n size: decoded.length,\n };\n }\n return fileInfo;\n } catch (error) {\n console.error(error);\n }\n};\n\nexport const isLessThanTheMB = (fileSize: number, smallerThanSizeMB: number) => {\n const isOk = fileSize / 1024 / 1024 < smallerThanSizeMB;\n return isOk;\n};\n\nexport type PickPhotoOrDocumentResult = PickPhotoResult | PickDocumentResult;\n\nexport interface PickPhotoResult {\n name: string;\n fileName: string;\n type: string;\n width: number;\n height: number;\n uri: string;\n}\n\nasync function processPhoto(asset: ImagePicker.ImagePickerAsset, sizeLimit?: number) {\n if (sizeLimit !== undefined) {\n const fileInfo = await getFileInfo(asset.uri);\n\n if (!fileInfo?.size) {\n throw Error(\"Can't select this file as the size is unknown.\");\n }\n\n const validSize = isLessThanTheMB(fileInfo.size, sizeLimit);\n if (!validSize) {\n throw Error(`Image size must be smaller than ${sizeLimit}MB!`);\n }\n }\n\n const compressedResult = await ImageManipulator.manipulateAsync(asset.uri, [{ resize: { width: 512 } }], {\n format: ImageManipulator.SaveFormat.PNG,\n });\n\n if (Platform.OS === 'web') {\n let blob = await fetch(compressedResult.uri).then((r) => r.blob());\n let metadata = {\n type: 'image/png',\n lastModified: Date.now(),\n };\n\n let file = new File([blob], 'mypicture.png', metadata);\n file.uri = compressedResult.uri;\n\n return file;\n } else {\n var newPhoto = {\n name: 'mypicture.jpg',\n fileName: 'mypicture.jpg',\n type: (compressedResult as any).type || 'image/png',\n height: compressedResult.height,\n width: compressedResult.width,\n uri: compressedResult.uri,\n };\n }\n\n return newPhoto;\n}\n\nexport async function pickPhoto(sizeLimit?: number): Promise {\n if (Platform.OS !== 'web') {\n const { status } = await ImagePicker.requestCameraPermissionsAsync();\n if (status !== 'granted') {\n alertInfo(t('failed_camera_access'));\n throw Error('Failed to retrieve picture');\n }\n }\n\n let result = await ImagePicker.launchImageLibraryAsync({\n mediaTypes: ImagePicker.MediaTypeOptions.Images,\n allowsEditing: true,\n aspect: [1, 1],\n quality: 1,\n base64: false,\n });\n\n if (!result.canceled && result.assets && result.assets.length >= 1) {\n return processPhoto(result.assets[0], sizeLimit);\n }\n\n throw Error('Failed to retrieve picture');\n}\n\nexport async function pickManyPhotos(sizeLimit?: number): Promise {\n if (Platform.OS !== 'web') {\n const { status } = await ImagePicker.requestCameraPermissionsAsync();\n if (status !== 'granted') {\n alertInfo(t('failed_camera_access'));\n throw Error('Failed to retrieve picture');\n }\n }\n\n let result = await ImagePicker.launchImageLibraryAsync({\n mediaTypes: ImagePicker.MediaTypeOptions.Images,\n allowsEditing: false,\n aspect: [1, 1],\n quality: 1,\n base64: false,\n allowsMultipleSelection: true,\n });\n\n if (result.canceled || !result.assets) {\n throw Error('Failed to retrieve picture');\n }\n\n const resultPromises = result.assets.map((asset) => processPhoto(asset, sizeLimit));\n return Promise.all(resultPromises) as Promise;\n}\n\nexport type PickDocumentResult = {\n name: string;\n fileName: string;\n type: string;\n uri: string;\n size: number;\n};\n\nexport async function pickDocument(\n sizeLimitMB?: number | undefined,\n allowedExtensions?: string[] | undefined\n): Promise {\n const result = await DocumentPicker.getDocumentAsync({ type: allowedExtensions });\n\n if (result.canceled === false) {\n const fileResult = result.assets[0];\n\n if (!fileResult) {\n throw new Error('File must be defined');\n }\n\n if (sizeLimitMB !== undefined && fileResult.size && fileResult.size > sizeLimitMB * megabyte) {\n throw Error(t('file_too_large'));\n }\n\n let { name, size, uri } = fileResult;\n let nameParts = name.split('.');\n let fileType = nameParts[nameParts.length - 1];\n\n if (allowedExtensions && allowedExtensions.find((e) => e.toLowerCase() === fileType.toLowerCase()) === undefined) {\n throw Error(t('file_type_incorrect', { types: allowedExtensions }));\n } else {\n if (Platform.OS === 'web' && fileResult.file !== undefined && fileResult.file !== null) {\n return fileResult.file;\n } else {\n if (Platform.OS === 'android' && uri[0] === '/') {\n uri = `file://${uri}`;\n uri = uri.replace(/%/g, '%25');\n }\n\n return {\n name,\n fileName: name,\n type: fileResult.mimeType || 'application/' + fileType,\n uri: uri,\n size: size || 0,\n };\n }\n }\n } else {\n throw new Error('File must be defined');\n }\n}\n\nexport async function takePhoto(): Promise {\n if (Platform.OS !== 'web') {\n const { status } = await ImagePicker.requestCameraPermissionsAsync();\n if (status !== 'granted') {\n alertInfo(t('failed_camera_access'));\n throw Error('Failed to retrieve picture');\n }\n }\n\n let result = await ImagePicker.launchCameraAsync({\n mediaTypes: ImagePicker.MediaTypeOptions.Images,\n allowsEditing: true,\n aspect: [1, 1],\n quality: 1,\n });\n if (!result.canceled && result.assets && result.assets.length >= 1) {\n const compressedResult = await _compressImage(result);\n\n var newPhoto = {\n name: 'mypicture.jpg',\n fileName: 'mypicture.jpg',\n type: (compressedResult as any).type || 'image/png',\n height: compressedResult.height,\n width: compressedResult.width,\n uri: compressedResult.uri,\n };\n return Promise.resolve(newPhoto);\n }\n throw Error('Failed to retrieve picture');\n}\n\nexport function _getInterestId(\n contribution: Contribution | MActu,\n userId: number | undefined,\n contributionId: number,\n type: ContributionType\n) {\n if (contribution !== undefined) {\n if (type === ContributionType.COMPANY_NEWS) {\n const interestsList = (contribution as MActu).mActuInterest;\n for (const key in interestsList) {\n if (interestsList[key].user.id === userId && interestsList[key].mActuId === contributionId) {\n return interestsList[key].id;\n }\n }\n } else {\n const interestsList = (contribution as Contribution).cinterest;\n for (const key in interestsList) {\n if (interestsList[key].user.id === userId && interestsList[key].contributionId === contributionId) {\n return interestsList[key].id;\n }\n }\n }\n }\n\n return undefined;\n}\n\nexport function wait(ms: number) {\n return new Promise((res) => setTimeout(res, ms));\n}\n\nexport const applyDateOffset = (date: Date) => {\n const newDate = new Date(date);\n const offset = newDate.getTimezoneOffset() * 60000;\n return new Date(newDate.getTime() - offset);\n};\n\nexport const forceUTCToLocal = (date: string) =>\n DateTime.fromISO(date.substring(0, 'YYYY-MM-DDTHH:MM:SS.mmm'.length), {\n zone: 'UTC',\n })\n .toLocal()\n .toISO();\n\nexport function getReadableDate(\n dateText?: string | null,\n withTime?: boolean,\n forceUtc?: boolean,\n recentFormat?: boolean\n) {\n if (!dateText) {\n return '';\n }\n let date = forceUtc\n ? DateTime.fromISO(dateText.substring(0, 'YYYY-MM-DDTHH:MM:SS.mmm'.length), { zone: 'UTC' }).toLocal().toJSDate()\n : new Date(dateText);\n\n if (!forceUtc && Platform.OS === 'android') {\n const calendars = Localization.getCalendars();\n const timezone = last(calendars)?.timeZone || 'Europe/Paris';\n const offset = DateTime.local().setZone(timezone).offset;\n date = new Date(date.getTime() - offset * 60 * 1000);\n }\n\n const today = new Date();\n const isNotRecent =\n (recentFormat === undefined || recentFormat) && (today.getTime() - date.getTime()) / (1000 * 60 * 60 * 24) > 2;\n\n if (isNotRecent) {\n return formatDateToTimeAgo(date);\n } else {\n return withTime\n ? DateTime.fromJSDate(date).toFormat('dd/MM/yyyy HH:mm')\n : DateTime.fromJSDate(date).toFormat('dd/MM/yyyy');\n }\n}\n\nexport function applyTimeZoneOnAndroid(dateOrText: string | Date) {\n let dateText = typeof dateOrText === 'string' ? dateOrText : dateOrText.toISOString();\n let date = new Date(dateText);\n\n if (Platform.OS === 'android') {\n const calendars = Localization.getCalendars();\n const timezone = last(calendars)?.timeZone || 'Europe/Paris';\n const offset = DateTime.local().setZone(timezone).offset;\n date = new Date(date.getTime() - offset * 60 * 1000);\n }\n\n return date;\n}\n\nexport function getReadableHour(dateOrText?: string | Date | null, forceUtc?: boolean) {\n if (!dateOrText) {\n return '';\n }\n\n let dateText = typeof dateOrText === 'string' ? dateOrText : dateOrText.toISOString();\n let date = forceUtc\n ? DateTime.fromISO(dateText.substring(0, 'YYYY-MM-DDTHH:MM:SS.mmm'.length), { zone: 'UTC' }).toLocal().toJSDate()\n : new Date(dateText);\n\n if (!forceUtc && Platform.OS === 'android') {\n const calendars = Localization.getCalendars();\n const timezone = last(calendars)?.timeZone || 'Europe/Paris';\n const offset = DateTime.local().setZone(timezone).offset;\n date = new Date(date.getTime() - offset * 60 * 1000);\n }\n\n return DateTime.fromJSDate(date).toFormat('HH:mm');\n}\n\nexport function formatDateToTimeAgo(date: Date) {\n if (!date) {\n return '';\n }\n\n const difference = (new Date().getTime() - date.getTime()) / 1000;\n const seconds = Math.floor(difference);\n\n if (seconds < 60) {\n return t('now');\n } else if (seconds < 3600) {\n return t('minutes_ago', { minutes: Math.floor(seconds / 60) });\n } else if (seconds < 86400) {\n return t('hours_ago', { hours: Math.floor(seconds / 3600) });\n } else if (seconds < 172800) {\n return t('yesterday');\n } else if (seconds < 604800) {\n return t('days_ago', { days: Math.floor(seconds / 86400) });\n } else if (seconds < 1209600) {\n return t('last_week');\n } else if (seconds < 2592000) {\n return t('weeks_ago', { weeks: Math.floor(seconds / 604800) });\n } else if (seconds < 5184000) {\n return t('last_month');\n } else if (seconds < 31536000) {\n return t('months_ago', { months: Math.floor(seconds / 2592000) });\n } else if (seconds < 63072000) {\n return t('last_year');\n } else if (seconds) {\n return t('years_ago', { years: Math.floor(seconds / 31536000) });\n }\n}\n\nexport function getReadableTime(dateText?: string, forceUtc?: boolean) {\n if (!dateText) {\n return '';\n }\n\n const date = forceUtc\n ? DateTime.fromISO(dateText.substring(0, 'YYYY-MM-DDTHH:MM:SS.mmm'.length), { zone: 'UTC' }).toLocal().toJSDate()\n : new Date(dateText);\n\n return DateTime.fromJSDate(date).toFormat('HH:mm');\n}\n\nexport function getRouteFromContributionType(type: ContributionType) {\n return ContributionTypesInfos[type]?.screenName ?? ScreenNames.LoggedInHome;\n}\n\nexport const submitButtonText = (\n user: UserSaved,\n id: number | undefined,\n type: ContributionType,\n services?: number[],\n sitegeo?: number[],\n groups?: number[]\n): string => {\n if (!id) {\n if (type === ContributionType.DOCUMENT) {\n return t('put');\n }\n\n if (\n (type === ContributionType.SURVEY || type === ContributionType.COMPANY_NEWS) &&\n !isAdmin(user) &&\n !hasSubAdminRight(user, services || [], sitegeo || [], groups || [])\n ) {\n return t('send_for_validation');\n }\n\n return t('publish_button');\n }\n return t('update_button');\n};\n\nexport const sendSuccessText = (user: UserSaved, type: ContributionType, hasRights: boolean) => {\n // If the user don't have any visible informations to be contacted,\n // we prefer to display a specific message to warn the user\n const hasEmail = !user.hideEmail && !!user.aspNetUsers?.email;\n const hasPortable = !user.hidePhone && user.portable != null && user.portable?.length !== 0;\n const hasPhone = !user.hidePhone && user.telephone != null && user.telephone?.length !== 0;\n const isContactable = hasEmail || hasPortable || hasPhone;\n\n if (\n !isContactable &&\n [\n ContributionType.SELL,\n ContributionType.ACTIVITY,\n ContributionType.MUTUAL_AID,\n ContributionType.CARPOOL,\n ContributionType.LOST_PROPERTY,\n ].includes(type)\n ) {\n return t('send_contribution_success_no_contact');\n }\n\n switch (type) {\n case ContributionType.COMPANY_NEWS:\n if (hasRights) {\n return t('published_company_news');\n } else {\n return t('send_for_validation_company_news');\n }\n }\n return t('send_contribution_success');\n};\n\nexport function routeFromNotification(\n dispatch: Dispatch,\n notificationTitle: string,\n notificationDescription: string,\n contributionId: number,\n contributionType: ContributionType\n) {\n if (dispatch != null) {\n dispatch(setContributionsListNeedsRefresh(true));\n }\n\n switch (notificationTitle) {\n case 'Intérêt':\n break;\n case 'Idée':\n navigationRef.current?.navigate(ScreenNames.SuggestionsAdministration, {\n screen: ScreenNames.SuggestionsToApproveList,\n });\n break;\n case 'Événement':\n case 'Evénement':\n navigationRef.current?.navigate(ScreenNames.LoggedInDrawerNavigation, {\n screen: ScreenNames.EventMainRouter,\n params: {\n screen: ScreenNames.ContributionTabs,\n params: { screen: ScreenNames.ContributionListScreen },\n },\n });\n break;\n case 'Achats/Ventes':\n navigationRef.current?.navigate(ScreenNames.LoggedInDrawerNavigation, {\n screen: ScreenNames.SellMainRouter,\n params: {\n screen: ScreenNames.ContributionTabs,\n params: { screen: ScreenNames.ContributionListScreen },\n },\n });\n break;\n case 'Kiosque':\n navigationRef.current?.navigate(ScreenNames.LoggedInDrawerNavigation, {\n screen: ScreenNames.DocumentMainRouter,\n params: {\n screen: ScreenNames.ContributionTabs,\n params: { screen: ScreenNames.ContributionListScreen },\n },\n });\n break;\n case 'Entraide':\n navigationRef.current?.navigate(ScreenNames.LoggedInDrawerNavigation, {\n screen: ScreenNames.MutualAidMainRouter,\n params: {\n screen: ScreenNames.ContributionTabs,\n params: { screen: ScreenNames.ContributionListScreen },\n },\n });\n break;\n case 'Covoiturage':\n navigationRef.current?.navigate(ScreenNames.LoggedInDrawerNavigation, {\n screen: ScreenNames.CarPoolMainRouter,\n params: {\n screen: ScreenNames.ContributionTabs,\n params: { screen: ScreenNames.ContributionListScreen },\n },\n });\n break;\n case 'Objets trouvés':\n navigationRef.current?.navigate(ScreenNames.LoggedInDrawerNavigation, {\n screen: ScreenNames.LostPropertyMainRouter,\n params: {\n screen: ScreenNames.ContributionTabs,\n params: { screen: ScreenNames.ContributionListScreen },\n },\n });\n break;\n case 'Activité':\n navigationRef.current?.navigate(ScreenNames.LoggedInDrawerNavigation, {\n screen: ScreenNames.ActivityMainRouter,\n params: {\n screen: ScreenNames.ContributionTabs,\n params: { screen: ScreenNames.ContributionListScreen },\n },\n });\n break;\n case 'Sondage':\n if (notificationDescription.includes('en attente')) {\n navigationRef.current?.navigate(ScreenNames.SurveyAdministration);\n } else {\n navigationRef.current?.navigate(ScreenNames.LoggedInDrawerNavigation, {\n screen: ScreenNames.SurveyMainRouter,\n params: {\n screen: ScreenNames.ContributionTabs,\n params: { screen: ScreenNames.ContributionListScreen },\n },\n });\n }\n break;\n case 'Modération':\n navigationRef.current?.navigate(ScreenNames.ContributionsAdministration);\n break;\n case 'Actus':\n if (notificationDescription.includes('en attente')) {\n navigationRef.current?.navigate(ScreenNames.CompanyNewsAdministration);\n } else {\n navigationRef.current?.navigate(ScreenNames.LoggedInDrawerNavigation, {\n screen: ScreenNames.LoggedInHome,\n });\n }\n break;\n default:\n console.warn('Failed to route notification. Notification title: ' + notificationTitle);\n break;\n }\n}\n\nexport const navigationRef = React.createRef>();\n\nexport function isDateValid(date: string, iso: boolean) {\n if (date === undefined || date === null) {\n return false;\n }\n\n if (!iso) {\n const expression = /\\d\\d?\\/\\d\\d?\\/\\d\\d\\d\\d/i;\n return expression.test(date.toString().toLowerCase());\n } else {\n const expression = /\\d\\d\\d\\d\\-\\d\\d?\\-\\d\\d?.*/i;\n return expression.test(date.toString().toLowerCase());\n }\n}\n\nexport function responsiveStyle(smallScreenStyle: any, bigScreenStyle: any) {\n if (isMobile()) {\n return smallScreenStyle;\n }\n\n return bigScreenStyle;\n}\n\nexport function getGoogleAPIKey() {\n switch (Platform.OS) {\n case 'android':\n return 'AIzaSyA3JBE4tIfleYbo_ykSYHa_kXN5SFsH4B0';\n case 'ios':\n return 'AIzaSyAvMR-QqZz6oVxZZCmb1PcDyHNQRN-EUZY';\n default:\n return 'AIzaSyCZtjYYxCtn0Ass0rXt13w0WHiHTYqiMf0';\n }\n}\n\nexport function alertInfo(text: string) {\n if (isMobile()) {\n Alert.alert(t('information'), text);\n } else {\n alert(text);\n }\n}\n\nexport function latitude(coordinates: string) {\n return Number(coordinates.split(';')[0]);\n}\n\nexport function longitude(coordinates: string) {\n return Number(coordinates.split(';')[1]);\n}\n\nexport function distincts(items: T[], selector: (item: T) => string): T[] {\n if (items === undefined) {\n return [];\n }\n\n const uniques: { [key: string]: T } = {};\n for (const item of items) {\n if (item) {\n uniques[selector(item)] = item;\n }\n }\n return Object.values(uniques);\n}\n\nexport async function uriToFile(uri: string, filename: string): Promise {\n let response = await fetch(uri, {\n mode: 'no-cors',\n });\n const blob = await response.blob();\n const file = new File([blob], 'filename', { type: blob.type });\n file.uri = uri;\n file.fileName = filename;\n\n return file;\n}\n","import axios from './base';\nimport { apiUrlBase } from '../../../configuration';\nimport { headers } from './base';\nimport { UserSaved } from '../storage';\n\nexport async function getMinimumVersion(): Promise {\n return axios\n .get(`${apiUrlBase}version/minimum`, {\n headers: headers(),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n","import { Dispatch } from 'redux';\nimport { match } from 'ts-pattern';\nimport { getMinimumVersion } from '../services/api/version.api';\nimport { RootState } from '../services/storage';\nimport { ActionType } from './action';\n\nexport type VersionState = {\n minimumVersion: string;\n};\n\nexport const defaultVersionState = {\n minimumVersion: '1.0',\n};\n\nexport type VersionActionType = {\n type: 'VERSION_MINIMUM_RECEIVED';\n payload: string;\n};\n\nexport function versionReducer(state: RootState, action: ActionType): RootState {\n return match(action)\n .with({ type: 'VERSION_MINIMUM_RECEIVED' }, (action) => ({\n ...state,\n version: {\n ...state.version,\n minimumVersion: action.payload,\n },\n }))\n .otherwise(() => state);\n}\n\nexport async function fetchMinimumApiVersion(dispatch: Dispatch) {\n const result = await getMinimumVersion();\n\n dispatch({ type: 'VERSION_MINIMUM_RECEIVED', payload: result });\n}\n","import AsyncStorage from '@react-native-async-storage/async-storage';\nimport { ActionType } from '../store/action';\nimport { getSingleUserSubAdmins } from './api/usersubadmin';\nimport { changeLanguage } from './translations';\nimport { UserData } from './api/login';\nimport { ContributionKiosque } from '../entities/ContributionKiosque';\nimport { ContributionVente } from '../entities/ContributionVente';\nimport { ContributionEvenement } from '../entities/ContributionEvenement';\nimport { ContributionCovoiturage } from '../entities/ContributionCovoiturage';\nimport { ContributionHobbie } from '../entities/ContributionHobbie';\nimport { ContributionService } from '../entities/ContributionService';\nimport { ContributionSignalement } from '../entities/ContributionSignalement';\nimport { CBoiteIdee } from '../entities/CBoiteIdee';\nimport { CEcoLocale } from '../entities/CEcoLocale';\nimport { CSondage } from '../entities/CSondage';\nimport { MActuPost } from '../entities/MActuPost';\nimport { MActuNews } from '../entities/MActuNews';\nimport { ContributionType } from '../types';\nimport { MessagingState } from '../store/messaging';\nimport { alertInfo, isMobile } from './utils';\nimport { fetchMinimumApiVersion, VersionState } from '../store/version';\nimport { Dispatch } from 'redux';\nimport { setUser, UserState } from '../store/user';\nimport { getMe } from './api/user.api';\n\ndeclare var Storage: any;\n\nexport const loadAppState = async (dispatch: Dispatch) => {\n // Check if browser supports HTML5 localStorage to avoid issues with smartTVs\n if (!isMobile() && typeof Storage === 'undefined') {\n return Promise.resolve();\n }\n\n // Fetch minimum supported API version\n await fetchMinimumApiVersion(dispatch);\n\n // Load user token\n // It use user.token cause of legacy code\n const storedUser = await AsyncStorage.getItem('user');\n\n const token = storedUser ? JSON.parse(storedUser)?.token || null : null;\n\n if (token) {\n await fetchUserData(token, dispatch);\n }\n};\n\nexport async function fetchUserData(token: string, dispatch: Dispatch) {\n try {\n const user = await getMe(token);\n const userSubAdmins = await getSingleUserSubAdmins(token);\n\n let userData = {\n token: token,\n userSubAdmins,\n ...user,\n };\n\n setUser(userData, dispatch);\n } catch (err: any) {\n alertInfo(err.message);\n }\n}\n\nexport function saveToken(token: string) {\n // Check if browser supports HTML5 localStorage to avoid issues with smartTVs\n if (!isMobile() && typeof Storage === 'undefined') {\n return Promise.resolve();\n }\n\n return AsyncStorage.setItem('user', JSON.stringify({ token }));\n}\n\nexport function forgetToken() {\n // Check if browser supports HTML5 localStorage to avoid issues with smartTVs\n if (!isMobile() && typeof Storage === 'undefined') {\n return Promise.resolve();\n }\n\n return AsyncStorage.removeItem('user');\n}\n\nexport const CURRENT_SAVE_VERSION = 5;\n\nexport interface UserSaved extends UserData {}\n\nexport interface Contributions {\n kiosques?: ContributionKiosque[];\n ventes?: ContributionVente[];\n evenements?: ContributionEvenement[];\n formations?: ContributionEvenement[];\n covoiturages?: ContributionCovoiturage[];\n hobbies?: ContributionHobbie[];\n services?: ContributionService[];\n signalements?: ContributionSignalement[];\n cBoiteIdees?: CBoiteIdee[];\n cEcoLocales?: CEcoLocale[];\n cSondages?: CSondage[];\n mActuPosts?: MActuPost[];\n mActuNews?: MActuNews[];\n}\n\nexport type RootState = {\n isLoading?: boolean;\n detailContributionType?: ContributionType;\n currentContribution?: any;\n isNotif?: boolean;\n forceBack?: boolean;\n isPhoneMode: boolean;\n contributions: Contributions;\n contributionsListNeedsRefresh?: boolean;\n validationMapListNeedsRefresh?: boolean;\n contributeursListNeedsRefresh?: boolean;\n directoryListNeedsRefresh?: boolean;\n user: UserState;\n messaging: MessagingState;\n version: VersionState;\n};\n\nexport const saveLanguage = (lng: string) => {\n // Check if browser supports HTML5 localStorage to avoid issues with smartTVs\n if (!isMobile() && typeof Storage === 'undefined') {\n return Promise.resolve();\n }\n\n if (lng === null || lng === undefined) {\n return Promise.resolve();\n }\n\n changeLanguage(lng);\n return AsyncStorage.setItem('language', lng);\n};\n\nexport const retrievedSavedLanguage = () => {\n // Check if browser supports HTML5 localStorage to avoid issues with smartTVs\n if (!isMobile() && typeof Storage === 'undefined') {\n return Promise.resolve();\n }\n\n return AsyncStorage.getItem('language');\n};\n","import axios from './base';\nimport { headers } from './base';\nimport { UserSubAdmin } from '../../entities/UserSubAdmin';\nimport { getUserProfile } from './user.api';\nimport { apiUrlBase } from '../../../configuration';\nimport { User } from '../../entities/User';\nimport { setUser } from '../../store/user';\nimport { ActionType } from '../../store/action';\nimport { Dispatch } from 'redux';\nimport { forgetToken } from '../storage';\nimport { openURL } from '../utils';\nimport { AuthenticationMode } from '../../entities/AuthenticationMode';\nimport { Entreprise } from '../../entities/Entreprise';\n\nconst authUrl = apiUrlBase + 'Auth/';\n\nexport const logout = async (dispatch: Dispatch) => {\n await setUser(null, dispatch);\n await forgetToken();\n};\n\nexport enum ErrorReason {\n INVALID_CREDENTIALS = 'invalid_credentials',\n UNKNOWN_ERROR = 'unknown_error',\n MAIL_NOT_VALIDATED = 'mail_not_validated',\n INVALID_COMPANY_CODE = 'invalide_company_code',\n ACCOUNT_ALREADY_EXISTS = 'account_already_exists',\n EMAIL_ALREADY_REGISTERED = 'email_already_registered',\n}\n\nexport interface UserData extends User {\n token: string;\n userSubAdmins?: UserSubAdmin[];\n}\n\nexport async function getAuthenticationMode(email: string) {\n return axios\n .get(`${apiUrlBase}Auth/authentication-mode`, {\n headers: headers(),\n params: {\n email: email,\n },\n })\n .then((response) => {\n return response.data as AuthenticationMode;\n });\n}\n\nexport async function login(username: string, password: string): Promise {\n try {\n const response = await axios.post(\n `${apiUrlBase}Auth/authenticate`,\n {\n username: username,\n password: password,\n },\n {\n headers: headers(),\n }\n );\n\n if (response.data.title === 'Mail non confirmé') {\n throw Error(ErrorReason.MAIL_NOT_VALIDATED);\n }\n\n let userData = {\n id: response.data.userId,\n token: response.data.token,\n };\n\n const userProfile = await getUserProfile(userData.id, userData.token);\n const userSaved = {\n ...userProfile,\n ...userData,\n };\n\n return userSaved;\n } catch (err: any) {\n if (err?.response?.status === 401) {\n throw Error(ErrorReason.INVALID_CREDENTIALS);\n } else if (err?.message === ErrorReason.MAIL_NOT_VALIDATED) {\n throw err;\n } else {\n throw Error(ErrorReason.UNKNOWN_ERROR);\n }\n }\n}\n\nexport function redirectToAuthenticateWithSso(email: string) {\n openURL(`${authUrl}authenticate/sso?email=${email}`, false);\n}\n\nexport async function register(\n emailAddress: string,\n password: string,\n hasCGUBeenApproved: boolean,\n hasRGDPConsent: boolean\n) {\n return axios\n .post(\n `${apiUrlBase}Auth/register`,\n {\n Email: emailAddress,\n MotDePasse: password,\n CGU: hasCGUBeenApproved,\n RGPD: hasRGDPConsent,\n },\n {\n headers: headers(),\n }\n )\n .then((response) => {\n return response.data.id;\n })\n .catch((error) => {\n if (error.response.status === 400 && error.response.data.code === 'account_already_exists') {\n throw Error(ErrorReason.ACCOUNT_ALREADY_EXISTS);\n }\n\n throw new Error(ErrorReason.UNKNOWN_ERROR);\n });\n}\n\nexport async function registerWithCompanyCode(\n emailAddress: string,\n password: string,\n hasCGUBeenApproved: boolean,\n hasRGDPConsent: boolean,\n code: string\n) {\n return axios\n .post(\n `${authUrl}register-code`,\n {\n Email: emailAddress,\n MotDePasse: password,\n CGU: hasCGUBeenApproved ? 'true' : 'false',\n RGPD: hasRGDPConsent ? 'true' : 'false',\n Code: code,\n },\n {\n headers: headers(),\n }\n )\n .then((response) => {\n if (response.status !== 200) {\n throw new Error(ErrorReason.UNKNOWN_ERROR);\n }\n\n return response.data;\n })\n .then((json) => {\n return Promise.resolve(json.id);\n });\n}\n\nexport async function generateValidationCode(mail: string) {\n return axios.get(apiUrlBase + 'auth/generation/' + mail, {\n headers: headers(),\n });\n}\n\nexport async function validate(emailAddress: string, validationCode: string) {\n return axios\n .post(\n `${apiUrlBase}Auth/confirmation`,\n {\n Email: emailAddress,\n Code: validationCode,\n },\n {\n headers: headers(),\n }\n )\n .then((response) => {\n return response.data;\n })\n .then((text) => {\n if (text !== 'Erreur') {\n return Promise.resolve();\n } else {\n throw Error(ErrorReason.UNKNOWN_ERROR);\n }\n });\n}\n\nexport async function checkCompanyCode(code: string) {\n return axios\n .get(`${authUrl}check-code/${code}`, {\n headers: headers(),\n })\n .then((response) => {\n if (response.status !== 200) {\n throw Error(ErrorReason.INVALID_COMPANY_CODE);\n }\n\n return response.data as Entreprise;\n })\n .catch(() => {\n throw Error(ErrorReason.INVALID_COMPANY_CODE);\n });\n}\n\nexport async function sendRequestForgottenPassword(emailAddress: string) {\n return axios\n .post(\n `${apiUrlBase}Auth/confirmationperdumail`,\n {\n Email: emailAddress,\n },\n {\n headers: headers(),\n }\n )\n .then((response) => {\n return response.data;\n })\n .then((json) => {\n if (json.title === 'Mail Confirmé !') {\n return Promise.resolve();\n } else {\n throw Error(ErrorReason.UNKNOWN_ERROR);\n }\n });\n}\n\nexport async function resetPasswordSendCode(email: string) {\n return axios\n .post(\n apiUrlBase + 'Auth/reset-password/send-code',\n {\n email,\n },\n {\n headers: headers(),\n }\n )\n .then((response) => {\n if (response.status === 200) {\n return response.data;\n } else {\n return null;\n }\n });\n}\n\nexport async function resetPasswordCheckCode(email: string, code: string) {\n return axios\n .post(\n `${apiUrlBase}Auth/reset-password/check-code`,\n {\n email,\n code,\n },\n {\n headers: headers(),\n }\n )\n .then((response) => {\n return response.data;\n })\n .then((response) => {\n if (response.status === 200) {\n return response.data;\n } else {\n return null;\n }\n });\n}\n\nexport async function resetPassword(email: string, code: string, newPassword: string) {\n return axios\n .post(\n `${apiUrlBase}Auth/reset-password`,\n {\n email,\n code,\n newPassword,\n },\n {\n headers: headers(),\n }\n )\n .then((response) => {\n if (response.status === 200) {\n return response.data;\n } else {\n return null;\n }\n });\n}\n","import axios, { AxiosRequestHeaders } from 'axios';\nimport { apiVersion } from '../../../configuration';\nimport { language } from '../../services/translations';\nimport store from '../../store/store';\nimport { logout } from './login';\n\nexport type ContentType = 'application/json' | 'multipart/form-data';\n\nconst api = axios.create({});\n\napi.interceptors.response.use(\n (response) => response,\n (error) => {\n if (error.response?.status === 403) {\n const dispatch = store.dispatch;\n logout(dispatch);\n }\n\n return Promise.reject(error);\n }\n);\n\nexport default api;\n\nexport function headers(token?: string, contentType?: ContentType): AxiosRequestHeaders {\n if (token) {\n return {\n Accept: 'application/json',\n 'Content-Type': contentType || 'application/json',\n Authorization: `Bearer ${token}`,\n 'Language-Code': language(),\n 'X-Version': apiVersion,\n };\n } else {\n return {\n Accept: 'application/json',\n 'Content-Type': contentType || 'application/json',\n 'Language-Code': language(),\n 'X-Version': apiVersion,\n };\n }\n}\n","import axios from './base';\nimport { AxiosError } from 'axios';\nimport { headers } from './base';\nimport { apiUrlBase } from '../../../configuration';\nimport { MessagingMessage } from '../../entities/MessagingMessage';\nimport { MessagingThread } from '../../entities/MessagingThread';\nimport { MessagingThreadMember } from '../../entities/MessagingThreadMember';\nimport { Paginated } from '../../entities/Paginated';\nimport { UserSaved } from '../storage';\nimport { objectToFormData } from '../formUtil';\n\nexport async function getMessagingThreads(\n user: UserSaved,\n cursor: string | null,\n search?: string | null\n): Promise> {\n return axios\n .get(`${apiUrlBase}Messagerie`, {\n headers: headers(user.token),\n params: { cursor, search },\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function getMessagingThreadMessages(\n user: UserSaved,\n threadId: number,\n cursor: string | null\n): Promise> {\n return axios\n .get(`${apiUrlBase}Messagerie/${threadId}`, {\n headers: headers(user.token),\n params: { cursor },\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function getThreadIdByContactId(user: UserSaved, contactId: number): Promise {\n return axios\n .get(`${apiUrlBase}Messagerie/contact/${contactId}`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function getThreadMembers(user: UserSaved, threadId: number): Promise {\n return axios\n .get(`${apiUrlBase}Messagerie/${threadId}/members`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function getUnseenMessageCount(user: UserSaved): Promise {\n return axios\n .get(`${apiUrlBase}Messagerie/unseen_count`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function postNewThread(\n user: UserSaved,\n contactId: number,\n body: { message: string | null; file: Blob | null }\n): Promise {\n return axios\n .post(`${apiUrlBase}Messagerie/thread`, objectToFormData({ contactId, ...body }), {\n headers: headers(user.token, 'multipart/form-data'),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function postThreadMessage(\n user: UserSaved,\n threadId: number,\n body: { message: string | null; file: Blob | null }\n): Promise {\n return axios\n .post(`${apiUrlBase}Messagerie/${threadId}`, objectToFormData(body), {\n headers: headers(user.token, 'multipart/form-data'),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n })\n .catch((error: AxiosError) => {\n return null;\n });\n}\n\nexport async function markThreadAsSeen(user: UserSaved, threadId: number): Promise {\n return axios\n .put(\n `${apiUrlBase}Messagerie/${threadId}/seen`,\n {},\n {\n headers: headers(user.token),\n }\n )\n .then((response) => {\n if (response.status == 200) return response.data;\n else return 0;\n });\n}\n\nexport async function deleteMessagingThread(user: UserSaved, threadId: number): Promise {\n return axios\n .delete(`${apiUrlBase}Messagerie/${threadId}`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n","import { utcToZonedTime, zonedTimeToUtc } from 'date-fns-tz';\nimport { Dispatch } from 'redux';\nimport { match } from 'ts-pattern';\nimport * as Localization from 'expo-localization';\nimport { MessagingMessage } from '../entities/MessagingMessage';\nimport { MessagingThread } from '../entities/MessagingThread';\nimport { MessagingThreadMember } from '../entities/MessagingThreadMember';\nimport {\n getMessagingThreadMessages,\n getMessagingThreads,\n getThreadMembers,\n getUnseenMessageCount,\n markThreadAsSeen,\n postThreadMessage,\n deleteMessagingThread as apiDeleteMessagingThread,\n} from '../services/api/messaging.api';\nimport { RootState, UserSaved } from '../services/storage';\nimport { ActionType } from './action';\nimport { apiTimeZone } from '../../configuration';\n\nexport type NotificationMessage = {\n id: number;\n threadId: number;\n content: string | null;\n fileId: number | null;\n dateCreated: string;\n userId: number;\n profileFileId: number;\n firstName: string;\n lastName: string;\n};\n\nexport type ThreadMessages = {\n [key: number]: {\n messages: (MessagingMessage & {\n isLoading: boolean;\n })[];\n members: MessagingThreadMember[];\n nextCursor: string | null;\n isLoading: boolean;\n };\n};\n\nexport type MessagingState = {\n unseenMessageCount: number;\n threads: MessagingThread[];\n nextCursor: string | null;\n isLoading: boolean;\n threadMessages: ThreadMessages;\n};\n\nexport const defaultThreadMessageState = {\n messages: [],\n nextCursor: null,\n isLoading: false,\n members: [],\n};\n\nexport const defaultMessagingState = {\n unseenMessageCount: 0,\n threads: [],\n nextCursor: null,\n isLoading: false,\n threadMessages: {},\n};\n\nexport type MessagingActionType =\n | {\n type: 'MESSAGING_NEW_MESSAGE_RECEIVED';\n payload: NotificationMessage;\n }\n | {\n type: 'MESSAGING_THREAD_SEEN_RECEIVED';\n threadId: number;\n userId: number;\n date: Date;\n }\n | {\n type: 'MESSAGING_UNSEEN_MESSAGE_COUNT_FETCH_START';\n }\n | {\n type: 'MARK_THREAD_AS_SEEN_START';\n threadId: number;\n }\n | {\n type: 'MARK_THREAD_AS_SEEN_END';\n threadId: number;\n unseenMessageCount: number;\n }\n | {\n type: 'MESSAGING_UNSEEN_MESSAGE_COUNT_FETCH_END';\n payload: number;\n }\n | {\n type: 'MESSAGING_THREADS_FETCH_START';\n }\n | {\n type: 'MESSAGING_THREADS_FETCH_END';\n threads: MessagingThread[];\n nextCursor: string | null;\n }\n | {\n type: 'MESSAGING_THREADS_RESET_START';\n }\n | {\n type: 'MESSAGING_THREADS_RESET_END';\n threads: MessagingThread[];\n nextCursor: string | null;\n }\n | {\n type: 'MESSAGING_THREAD_MESSAGES_FETCH_START';\n threadId: number;\n }\n | {\n type: 'MESSAGING_THREAD_MESSAGES_FETCH_END';\n threadId: number;\n messages: MessagingMessage[];\n nextCursor: string | null;\n }\n | {\n type: 'MESSAGING_THREAD_MESSAGES_RESET_START';\n threadId: number;\n }\n | {\n type: 'MESSAGING_THREAD_MESSAGES_RESET_END';\n threadId: number;\n messages: MessagingMessage[];\n nextCursor: string | null;\n }\n | {\n type: 'MESSAGING_THREAD_MESSAGES_SEND_NEW_MESSAGE_START';\n threadId: number;\n identifier: number;\n message: string | null;\n file: Blob | null;\n user: UserSaved;\n }\n | {\n type: 'MESSAGING_THREAD_MESSAGES_SEND_NEW_MESSAGE_END';\n threadId: number;\n identifier: number;\n message: MessagingMessage;\n }\n | {\n type: 'MESSAGING_THREAD_MEMBERS_FETCH_START';\n threadId: number;\n }\n | {\n type: 'MESSAGING_THREAD_MEMBERS_FETCH_END';\n threadId: number;\n members: MessagingThreadMember[];\n }\n | {\n type: 'MESSAGING_THREAD_DELETE_START';\n threadId: number;\n }\n | {\n type: 'MESSAGING_THREAD_DELETE_END';\n threadId: number;\n };\n\nexport function messagingReducer(state: RootState, action: ActionType): RootState {\n return match(action)\n .with(\n { type: 'MESSAGING_NEW_MESSAGE_RECEIVED' },\n (action) =>\n ({\n ...state,\n messaging: {\n ...state.messaging,\n unseenMessageCount: state.messaging.unseenMessageCount + 1,\n threads: state.messaging.threads.map((e) =>\n e.id === action.payload.threadId\n ? {\n ...e,\n lastMessage: action.payload.content,\n seen: false,\n unseenCount: e.unseenCount + 1,\n }\n : e\n ),\n threadMessages: {\n ...state.messaging.threadMessages,\n [action.payload.threadId]: {\n ...(state.messaging.threadMessages[action.payload.threadId] || defaultThreadMessageState),\n messages: state.messaging.threadMessages[action.payload.threadId]?.messages?.length\n ? [\n {\n user: {\n id: action.payload.userId,\n profileFileId: action.payload.profileFileId,\n firstName: action.payload.firstName,\n lastName: action.payload.lastName,\n },\n id: action.payload.id,\n content: action.payload.content,\n fileId: null,\n dateCreated: action.payload.dateCreated,\n isLoading: false,\n },\n ...(state.messaging.threadMessages[action.payload.threadId]?.messages.filter(\n (e) => e.id !== action.payload.id\n ) || []),\n ]\n : [],\n },\n },\n },\n } as RootState)\n )\n .with(\n { type: 'MESSAGING_THREAD_SEEN_RECEIVED' },\n (action) =>\n ({\n ...state,\n messaging: {\n ...state.messaging,\n threadMessages: {\n ...state.messaging.threadMessages,\n [action.threadId]: {\n ...(state.messaging.threadMessages[action.threadId] || defaultThreadMessageState),\n members: state.messaging.threadMessages[action.threadId]?.members?.map((e) =>\n e.userId === action.userId ? { ...e, lastSeen: action.date.toISOString() } : e\n ),\n },\n },\n },\n } as RootState)\n )\n .with(\n { type: 'MARK_THREAD_AS_SEEN_START' },\n (action) =>\n ({\n ...state,\n messaging: {\n ...state.messaging,\n unseenMessageCount: state.messaging.unseenMessageCount + 1,\n threads: state.messaging.threads.map((e) =>\n e.id == action.threadId\n ? {\n ...e,\n seen: true,\n unseenCount: 0,\n }\n : e\n ),\n },\n } as RootState)\n )\n .with(\n { type: 'MARK_THREAD_AS_SEEN_END' },\n (action) =>\n ({\n ...state,\n messaging: {\n ...state.messaging,\n unseenMessageCount: action.unseenMessageCount,\n },\n } as RootState)\n )\n .with(\n { type: 'MESSAGING_UNSEEN_MESSAGE_COUNT_FETCH_END' },\n (action) =>\n ({\n ...state,\n messaging: {\n ...state.messaging,\n unseenMessageCount: action.payload,\n },\n } as RootState)\n )\n .with(\n { type: 'MESSAGING_THREADS_FETCH_START' },\n () =>\n ({\n ...state,\n messaging: {\n ...state.messaging,\n isLoading: true,\n nextCursor: null,\n },\n } as RootState)\n )\n .with(\n { type: 'MESSAGING_THREADS_FETCH_END' },\n (action) =>\n ({\n ...state,\n messaging: {\n ...state.messaging,\n threads: [\n ...state.messaging.threads,\n ...action.threads.filter(\n (thread) => state.messaging.threads.find((other) => thread.id === other.id) !== null\n ),\n ],\n isLoading: false,\n nextCursor: action.nextCursor,\n },\n } as RootState)\n )\n .with(\n { type: 'MESSAGING_THREADS_RESET_START' },\n () =>\n ({\n ...state,\n messaging: {\n ...state.messaging,\n isLoading: true,\n nextCursor: null,\n },\n } as RootState)\n )\n .with(\n { type: 'MESSAGING_THREADS_RESET_END' },\n (action) =>\n ({\n ...state,\n messaging: {\n ...state.messaging,\n threads: action.threads,\n isLoading: false,\n nextCursor: action.nextCursor,\n },\n } as RootState)\n )\n .with(\n { type: 'MESSAGING_THREAD_MESSAGES_FETCH_START' },\n (action) =>\n ({\n ...state,\n messaging: {\n ...state.messaging,\n threadMessages: {\n ...state.messaging.threadMessages,\n [action.threadId]: {\n ...(state.messaging.threadMessages[action.threadId] || defaultThreadMessageState),\n isLoading: true,\n nextCursor: null,\n },\n },\n },\n } as RootState)\n )\n .with(\n { type: 'MESSAGING_THREAD_MESSAGES_FETCH_END' },\n (action) =>\n ({\n ...state,\n messaging: {\n ...state.messaging,\n threadMessages: {\n ...state.messaging.threadMessages,\n [action.threadId]: {\n ...(state.messaging.threadMessages[action.threadId] || defaultThreadMessageState),\n messages: [\n ...(state.messaging.threadMessages[action.threadId]?.messages || []),\n ...action.messages.map((data) => ({\n ...data,\n isLoading: false,\n })),\n ],\n nextCursor: action.nextCursor,\n isLoading: false,\n },\n },\n },\n } as RootState)\n )\n .with(\n { type: 'MESSAGING_THREAD_MESSAGES_RESET_START' },\n (action) =>\n ({\n ...state,\n messaging: {\n ...state.messaging,\n threadMessages: {\n ...state.messaging.threadMessages,\n [action.threadId]: {\n ...(state.messaging.threadMessages[action.threadId] || defaultThreadMessageState),\n isLoading: true,\n nextCursor: null,\n },\n },\n },\n } as RootState)\n )\n .with(\n { type: 'MESSAGING_THREAD_MESSAGES_RESET_END' },\n (action) =>\n ({\n ...state,\n messaging: {\n ...state.messaging,\n threadMessages: {\n ...state.messaging.threadMessages,\n [action.threadId]: {\n ...(state.messaging.threadMessages[action.threadId] || defaultThreadMessageState),\n messages: action.messages.map((data) => ({\n ...data,\n isLoading: false,\n })),\n isLoading: false,\n nextCursor: action.nextCursor,\n },\n threads: state.messaging.threads.map((e) =>\n e.id == action.threadId\n ? {\n ...e,\n lastMessage: action.messages[0]?.content,\n }\n : e\n ),\n },\n },\n } as RootState)\n )\n .with(\n { type: 'MESSAGING_THREAD_MESSAGES_SEND_NEW_MESSAGE_START' },\n (action) =>\n ({\n ...state,\n messaging: {\n ...state.messaging,\n threadMessages: {\n ...state.messaging.threadMessages,\n [action.threadId]: {\n ...(state.messaging.threadMessages[action.threadId] || defaultThreadMessageState),\n messages: [\n {\n user: {\n id: action.user.id,\n profileFileId: action.user.fichierIdProfil,\n firstName: action.user.prenom,\n lastName: action.user.nom,\n },\n id: -action.identifier,\n content: action.message,\n fileId: null,\n dateCreated: !isNaN(\n utcToZonedTime(zonedTimeToUtc(new Date(), Localization.timezone), apiTimeZone).getTime()\n )\n ? utcToZonedTime(zonedTimeToUtc(new Date(), Localization.timezone), apiTimeZone).toISOString()\n : null,\n isLoading: true,\n },\n ...(state.messaging.threadMessages[action.threadId]?.messages || []),\n ],\n },\n },\n },\n } as RootState)\n )\n .with(\n { type: 'MESSAGING_THREAD_MESSAGES_SEND_NEW_MESSAGE_END' },\n (action) =>\n ({\n ...state,\n messaging: {\n ...state.messaging,\n threadMessages: {\n ...state.messaging.threadMessages,\n [action.threadId]: {\n ...state.messaging.threadMessages[action.threadId],\n messages: state.messaging.threadMessages[action.threadId].messages.map((message) =>\n message.id === -action.identifier\n ? {\n ...action.message,\n isLoading: false,\n }\n : message\n ),\n },\n },\n threads: state.messaging.threads.map((e) =>\n e.id == action.threadId\n ? {\n ...e,\n lastMessage: action.message.content,\n }\n : e\n ),\n },\n } as RootState)\n )\n .with(\n { type: 'MESSAGING_THREAD_MEMBERS_FETCH_END' },\n (action) =>\n ({\n ...state,\n messaging: {\n ...state.messaging,\n threadMessages: {\n ...state.messaging.threadMessages,\n [action.threadId]: {\n ...(state.messaging.threadMessages[action.threadId] || defaultThreadMessageState),\n members: action.members,\n },\n },\n },\n } as RootState)\n )\n .with(\n { type: 'MESSAGING_THREAD_DELETE_START' },\n (action) =>\n ({\n ...state,\n messaging: {\n ...state.messaging,\n threads: state.messaging.threads.filter((e) => e.id !== action.threadId),\n },\n } as RootState)\n )\n .otherwise(() => state);\n}\n\nexport async function messagingMessageReceived(dispatch: Dispatch, message: NotificationMessage) {\n dispatch({ type: 'MESSAGING_NEW_MESSAGE_RECEIVED', payload: message });\n}\n\nexport async function messagingThreadSeenReceived(\n dispatch: Dispatch,\n threadId: number,\n userId: number,\n date: Date\n) {\n dispatch({ type: 'MESSAGING_THREAD_SEEN_RECEIVED', threadId, userId, date });\n}\n\nexport async function fetchUnseenMessagingMessageCount(dispatch: Dispatch, user: UserSaved) {\n dispatch({ type: 'MESSAGING_UNSEEN_MESSAGE_COUNT_FETCH_START' });\n\n const result = await getUnseenMessageCount(user);\n\n dispatch({ type: 'MESSAGING_UNSEEN_MESSAGE_COUNT_FETCH_END', payload: result });\n}\n\nexport async function markMessagingThreadAsSeen(\n dispatch: Dispatch,\n user: UserSaved,\n threadId: number\n) {\n dispatch({ type: 'MARK_THREAD_AS_SEEN_START', threadId });\n\n const unseenMessageCount = await markThreadAsSeen(user, threadId);\n\n dispatch({ type: 'MARK_THREAD_AS_SEEN_END', threadId, unseenMessageCount });\n}\n\nexport async function fetchNextMessagingThreads(\n dispatch: Dispatch,\n user: UserSaved,\n nextCursor: string,\n searchFilter?: string | null\n) {\n dispatch({ type: 'MESSAGING_THREADS_FETCH_START' });\n\n const result = await getMessagingThreads(user, nextCursor, searchFilter);\n\n dispatch({ type: 'MESSAGING_THREADS_FETCH_END', threads: result.data, nextCursor: result.nextCursor });\n}\n\nexport async function resetMessagingThreads(\n dispatch: Dispatch,\n user: UserSaved,\n searchFilter?: string | null\n) {\n dispatch({ type: 'MESSAGING_THREADS_RESET_START' });\n\n const result = await getMessagingThreads(user, null, searchFilter);\n\n dispatch({ type: 'MESSAGING_THREADS_RESET_END', threads: result.data, nextCursor: result.nextCursor });\n}\n\nexport async function fetchNextMessagingThreadMessages(\n dispatch: Dispatch,\n user: UserSaved,\n threadId: number,\n nextCursor: string\n) {\n dispatch({ type: 'MESSAGING_THREAD_MESSAGES_FETCH_START', threadId });\n\n const result = await getMessagingThreadMessages(user, threadId, nextCursor);\n\n dispatch({\n type: 'MESSAGING_THREAD_MESSAGES_FETCH_END',\n threadId,\n messages: result.data,\n nextCursor: result.nextCursor,\n });\n}\n\nexport async function resetMessagingThreadMessages(\n dispatch: Dispatch,\n user: UserSaved,\n threadId: number\n) {\n dispatch({ type: 'MESSAGING_THREAD_MESSAGES_RESET_START', threadId });\n\n const result = await getMessagingThreadMessages(user, threadId, null);\n\n dispatch({\n type: 'MESSAGING_THREAD_MESSAGES_RESET_END',\n threadId,\n messages: result.data,\n nextCursor: result.nextCursor,\n });\n}\n\nexport async function sendNewMessagingMessage(\n dispatch: Dispatch,\n user: UserSaved,\n identifier: number,\n threadId: number,\n body: { message: string | null; file: Blob | null }\n) {\n dispatch({ type: 'MESSAGING_THREAD_MESSAGES_SEND_NEW_MESSAGE_START', threadId, identifier, ...body, user });\n\n const result = await postThreadMessage(user, threadId, body);\n\n dispatch({ type: 'MESSAGING_THREAD_MESSAGES_SEND_NEW_MESSAGE_END', threadId, identifier, message: result });\n}\n\nexport async function fetchMessagingThreadMembers(\n dispatch: Dispatch,\n user: UserSaved,\n threadId: number\n) {\n dispatch({ type: 'MESSAGING_THREAD_MEMBERS_FETCH_START', threadId });\n\n const members = await getThreadMembers(user, threadId);\n\n dispatch({ type: 'MESSAGING_THREAD_MEMBERS_FETCH_END', threadId, members });\n}\n\nexport async function deleteMessagingThread(\n dispatch: Dispatch,\n user: UserSaved,\n threadId: number\n) {\n dispatch({ type: 'MESSAGING_THREAD_DELETE_START', threadId });\n\n await apiDeleteMessagingThread(user, threadId);\n\n dispatch({ type: 'MESSAGING_THREAD_DELETE_END', threadId });\n}\n","import { RootState } from '../services/storage';\nimport { ActionType } from './action';\nimport { defaultMessagingState, messagingReducer } from './messaging';\nimport { defaultUserState, userReducer } from './user';\nimport { defaultVersionState, versionReducer } from './version';\n\nexport const initialState: RootState = {\n contributions: {},\n isPhoneMode: false,\n user: defaultUserState,\n messaging: defaultMessagingState,\n version: defaultVersionState,\n};\n\nexport const appStateReducer = (state: RootState = initialState, action: ActionType): RootState => {\n switch (action.type) {\n case 'SET_CONTRIBUTIONS':\n return {\n ...state,\n contributions: action.payload,\n };\n case 'SET_DETAIL_CONTRIBUTION_TYPE':\n return {\n ...state,\n detailContributionType: action.payload,\n };\n case 'SET_IS_NOTIF':\n return {\n ...state,\n isNotif: action.payload,\n };\n case 'SET_FORCE_BACK':\n return {\n ...state,\n forceBack: action.payload,\n };\n case 'SET_CURRENT_CONTRIBUTION':\n return {\n ...state,\n currentContribution: action.payload,\n };\n case 'SET_PHONE_MODE':\n return {\n ...state,\n isPhoneMode: action.payload,\n };\n case 'SET_LOADING':\n return {\n ...state,\n isLoading: action.payload,\n };\n case 'setContributionsListNeedsRefresh':\n return {\n ...state,\n contributionsListNeedsRefresh: action.payload,\n };\n case 'setValidationMapListNeedsRefresh':\n return {\n ...state,\n validationMapListNeedsRefresh: action.payload,\n };\n case 'setContributeurListNeedsRefresh':\n return {\n ...state,\n contributeursListNeedsRefresh: action.payload,\n };\n case 'setDirectoryListNeedsRefresh':\n return {\n ...state,\n directoryListNeedsRefresh: action.payload,\n };\n default:\n return userReducer(messagingReducer(versionReducer(state, action), action), action);\n }\n};\n","import { createStore } from 'redux';\nimport { RootState } from '../services/storage';\nimport { ActionType } from './action';\nimport { appStateReducer } from './reducer';\n\nconst store = createStore(appStateReducer);\n\nexport default store;\n","import { useSelector } from 'react-redux';\nimport { RootState, UserSaved } from '../services/storage';\n\nexport default function useLoggedUser() {\n return useSelector((state) => {\n if (!state || !state.user.user) {\n return null;\n } else {\n return state.user.user;\n }\n }) as UserSaved;\n}\n","import AppText, { AppTextProps } from './AppText';\nimport { globalStyle } from '../../styles/globalStyle';\nimport React from 'react';\n\nexport type HypertextLinkProps = Omit & {\n text: string;\n};\n\nexport function HypertextLink({ style, text, ...props }: HypertextLinkProps) {\n return (\n \n {text}\n \n );\n}\n","import { View } from 'react-native';\nimport React from 'react';\n\nconst Space = (height: number) => {\n return ;\n};\n\nexport const Space1 = () => {\n return Space(15);\n};\n\nexport const Space2 = () => {\n return Space(30);\n};\n\nexport const Space3 = () => {\n return Space(45);\n};\n\nexport const SpaceFiller = () => {\n return ;\n};\n","import {\n Keyboard,\n KeyboardType,\n NativeSyntheticEvent,\n StyleProp,\n StyleSheet,\n TextInput,\n TextInputFocusEventData,\n TextInputSelectionChangeEventData,\n TextInputSubmitEditingEventData,\n View,\n ViewStyle,\n} from 'react-native';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { globalStyle } from '../../styles/globalStyle';\nimport AppText from './AppText';\nimport { t } from '../../services/translations';\nimport { match } from 'ts-pattern';\nimport { FORM_LIGHT_GRAY, GRAY, LIGHT_GRAY } from '../../styles/appColor';\n\nexport type AppTextInputProps = {\n mandatory?: boolean;\n placeholder?: string;\n style?: StyleProp;\n selectionPosition?: { start: number; end?: number | undefined };\n maxLength?: number;\n displayOnly?: boolean;\n multiline?: boolean;\n onSubmitEditing?: (e: NativeSyntheticEvent) => void;\n onChangeText: (text: string) => void;\n onSelectionChange?: (e: NativeSyntheticEvent) => void;\n defaultValue?: string;\n value?: string;\n variant?: 'default' | 'contained';\n autoCapitalize?: 'none' | 'sentences' | 'words' | 'characters' | undefined;\n keyboardType?: KeyboardType;\n secureTextEntry?: boolean;\n onFocus?: () => void;\n onBlur?: (e: NativeSyntheticEvent) => void;\n autoFocus?: boolean;\n};\n\nexport function AppTextInput(props: AppTextInputProps) {\n const textLength = !props.value ? 0 : props.value.length;\n const [filledField, setFilledField] = useState(true);\n\n const _onChangeText = (text: string) => {\n setFilledField(text !== '');\n props.onChangeText(text);\n };\n\n const localInputRef = useRef();\n\n /*const keyboardDidHideCallback = useCallback(() => {\n if (!props.autoFocus) {\n localInputRef.current?.blur();\n }\n }, [props.autoFocus]);*/\n\n useEffect(() => {\n if (props.autoFocus && localInputRef.current) {\n localInputRef.current.focus();\n }\n }, [props.autoFocus]);\n\n /*useEffect(() => {\n const keyboardDidHideSubscription = Keyboard.addListener('keyboardDidHide', keyboardDidHideCallback);\n\n return () => {\n keyboardDidHideSubscription?.remove();\n };\n }, [keyboardDidHideCallback]);*/\n\n const style = match(props.variant)\n .with('default', () => globalStyle.textInput)\n .with('contained', () => globalStyle.textInputContained)\n .otherwise(() => globalStyle.textInput);\n\n return (\n \n {\n localInputRef && (localInputRef.current = ref as any);\n }}\n autoCapitalize={\n props.autoCapitalize ? props.autoCapitalize : props.keyboardType === 'email-address' ? 'none' : undefined\n }\n placeholder={props.placeholder}\n multiline={props.multiline}\n onFocus={props.onFocus}\n editable={!props.displayOnly}\n secureTextEntry={props.secureTextEntry}\n keyboardType={props.keyboardType}\n style={[style, props.multiline ? globalStyle.textInputMultiline : null]}\n defaultValue={props.defaultValue}\n value={props.value}\n onChangeText={_onChangeText}\n maxLength={props.maxLength}\n onSubmitEditing={props.onSubmitEditing}\n onSelectionChange={props.onSelectionChange}\n selection={props.selectionPosition}\n autoFocus={props.autoFocus}\n onBlur={props.onBlur}\n placeholderTextColor={GRAY}\n />\n {props.mandatory && !filledField && {t('please_fill_this_field')}}\n {props.maxLength !== undefined ? (\n \n {textLength}/{props.maxLength}\n \n ) : null}\n \n );\n}\n\nconst styles = StyleSheet.create({\n errorMessage: {\n color: 'red',\n },\n lengthText: {\n textAlign: 'right',\n marginTop: 7,\n },\n});\n","import axios, { headers } from './base';\nimport { apiUrlBase } from '../../../configuration';\nimport { LLMRequest } from '../../entities/LLMRequest';\nimport { LLMResponse } from '../../entities/LLMResponse';\nimport { UserSaved } from '../storage';\n\nexport async function generateLLM(user: UserSaved, request: LLMRequest): Promise {\n return axios\n .post(`${apiUrlBase}LLM`, request, {\n headers: headers(user.token),\n })\n .then((response) => response.data);\n}\n","import React, { useState } from 'react';\nimport { Modal, Pressable, StyleSheet, TouchableOpacity, View } from 'react-native';\nimport * as Yup from 'yup';\nimport { t } from '../../services/translations';\nimport { useMutation } from '@tanstack/react-query';\nimport { generateLLM } from '../../services/api/llm.api';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport { BACKGROUND_COLOR, DARK_GRAY, LIGHT_GRAY } from '../../styles/appColor';\nimport { AppButton, Type } from '../atomic/AppButton';\nimport { FormField } from '../atomic/FormField';\nimport { AppTextInput } from '../atomic/AppTextInput';\nimport { Icon } from '@rneui/base';\n\nexport type FormType = {\n prompt: string;\n};\n\nexport const schema = Yup.object({\n prompt: Yup.string().min(1, t('field_required')).required(t('field_required')),\n});\n\nexport type AIModalProps = {\n isVisible: boolean;\n onGenerated: (value: string) => void;\n onClose: () => void;\n};\n\nexport function AIModal({ isVisible, onGenerated, onClose }: AIModalProps) {\n const loggedUser = useLoggedUser();\n const [prompt, setPrompt] = useState('');\n\n const { mutate, isLoading } = useMutation({\n mutationFn: (values: FormType) =>\n generateLLM(loggedUser, {\n messages: [\n {\n role: 'system',\n content: t('preprompt_no_introduction_or_ending'),\n },\n {\n role: 'user',\n content: values.prompt,\n },\n ],\n }),\n onSuccess: (response) => {\n onGenerated(response.content);\n onClose();\n },\n });\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n mutate({ prompt })}\n enabled={!!prompt && !isLoading}\n />\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n background: {\n flex: 1,\n backgroundColor: 'rgba(0,0,0,0.5)',\n justifyContent: 'center',\n alignItems: 'center',\n padding: 20,\n },\n closeBackground: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n container: {\n maxWidth: 420,\n backgroundColor: BACKGROUND_COLOR,\n width: '100%',\n padding: 20,\n borderRadius: 10,\n borderWidth: 1,\n borderColor: LIGHT_GRAY,\n },\n closeContainer: {\n flexDirection: 'row',\n justifyContent: 'flex-end',\n },\n title: { textAlign: 'center', paddingVertical: 20, fontSize: 25 },\n opacityHalf: {\n opacity: 0.5,\n },\n});\n","import React from 'react';\nimport { StyleProp, TouchableOpacity, ViewStyle } from 'react-native';\nimport AppText from './AppText';\n\nexport interface ChipProps {\n text: string;\n subtext?: string | undefined | null;\n color: string;\n style?: StyleProp;\n onPress?: () => void;\n disable?: boolean;\n selected?: boolean;\n small?: boolean;\n inverted?: boolean;\n}\n\nexport const Chip = ({ text, subtext, color, style, disable, onPress, selected, small, inverted }: ChipProps) => (\n \n \n {text}\n \n {!!subtext && (\n \n {subtext}\n \n )}\n \n);\n","import React, { createRef, useCallback, useEffect, useRef, useState } from 'react';\nimport { KeyboardType, StyleSheet, Text, View } from 'react-native';\nimport ReactQuill, { Quill } from 'react-quill';\nimport 'react-quill/dist/quill.snow.css';\nimport Picker, { EmojiClickData } from 'emoji-picker-react';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport { t } from 'i18next';\nimport { DARK_GRAY, PRIMARY_COLOR } from '../../styles/appColor';\nimport { AIModal } from '../molecules/AIModal';\nimport { useMutation } from '@tanstack/react-query';\nimport { generateLLM } from '../../services/api/llm.api';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport { Chip } from './Chip';\nimport { setLoading } from '../../store/action';\nimport { useDispatch } from 'react-redux';\n\nexport const colors = [\n '#000000',\n '#e60000',\n '#ff9900',\n '#ffff00',\n '#008a00',\n '#0066cc',\n '#9933ff',\n '#ffffff',\n '#facccc',\n '#ffebcc',\n '#ffffcc',\n '#cce8cc',\n '#cce0f5',\n '#ebd6ff',\n '#bbbbbb',\n '#f06666',\n '#ffc266',\n '#ffff66',\n '#66b966',\n '#66a3e0',\n '#c285ff',\n '#888888',\n '#a10000',\n '#b26b00',\n '#b2b200',\n '#006100',\n '#0047b2',\n '#6b24b2',\n '#444444',\n '#5c0000',\n '#663d00',\n '#666600',\n '#003700',\n '#002966',\n '#3d1466',\n];\n\nvar Link = Quill.import('formats/link');\nvar builtInFunc = Link.sanitize;\nLink.sanitize = function customSanitizeLinkInput(linkValueInput: string) {\n let PROTOCOL_WHITELIST = ['http:', 'https:', 'mailto:'];\n for (let i = 0; i < PROTOCOL_WHITELIST.length; i++) {\n if (linkValueInput.startsWith(PROTOCOL_WHITELIST[i])) {\n return builtInFunc.call(this, linkValueInput);\n }\n }\n\n return builtInFunc.call(this, `https://${linkValueInput}`);\n};\n\nlet id = 0;\n\nconst getId = (): number => {\n id += 1;\n return id;\n};\n\nexport function AppRTEEditor(props: {\n maxLength?: number;\n displayOnly?: boolean;\n style: any;\n onSubmitEditing?: any;\n title: any;\n defaultValue: string;\n onChangeText: any;\n keyboardType?: KeyboardType;\n secureTextEntry?: boolean;\n}) {\n const loggedUser = useLoggedUser();\n const reactQuill = createRef();\n const containerRef = useRef(null);\n const dispatch = useDispatch();\n const [openEmoji, setOpenEmoji] = useState(false);\n const [displayAIModal, setDisplayAIModal] = useState(false);\n const [hasUsedAi, setHasUsedAi] = useState(false);\n const [id] = useState(getId().toString());\n\n // Refresh after 100ms\n // Sometimes, the quill editor is not initialized correctly, so we refresh it\n const [, setRefresh] = useState(false);\n useEffect(() => {\n const interval = setInterval(() => {\n setRefresh(true);\n }, 100);\n\n return () => clearInterval(interval);\n }, []);\n\n const onEmojiClick = useCallback(\n (data: EmojiClickData) => {\n if (!reactQuill.current) {\n return;\n }\n const quill = reactQuill.current.getEditor();\n if (!quill) {\n return null;\n }\n const position = quill.getSelection()?.index ?? quill.getLength() - 1;\n\n quill.insertText(position, data.emoji, 'silent');\n setOpenEmoji(false);\n },\n [reactQuill]\n );\n\n const Toolbar = useCallback(\n () => (\n
\n \n \n
\n ),\n [id, setOpenEmoji]\n );\n\n const { mutate: autocompleteWithAi, isLoading: isLoadingAi } = useMutation({\n mutationFn: (prompt: string) =>\n generateLLM(loggedUser, {\n messages: [\n {\n role: 'system',\n content: t('preprompt_no_introduction_or_ending'),\n },\n {\n role: 'user',\n content: props.defaultValue,\n },\n {\n role: 'user',\n content: prompt,\n },\n ],\n }),\n onSuccess: (response) => {\n props.onChangeText(response.content);\n },\n });\n\n useEffect(() => {\n dispatch(setLoading(isLoadingAi));\n }, [dispatch, isLoadingAi]);\n\n return (\n \n {openEmoji && }\n {displayAIModal && (\n {\n props.onChangeText(value);\n setHasUsedAi(true);\n }}\n onClose={() => setDisplayAIModal(false)}\n />\n )}\n \n {containerRef.current && (\n setOpenEmoji(false)}\n value={props.defaultValue ?? ''}\n onChange={props.onChangeText}\n style={styles.quill}\n />\n )}\n {hasUsedAi && (\n \n autocompleteWithAi(t('shorter_prompt'))}\n disable={isLoadingAi}\n style={isLoadingAi ? styles.opacityHalf : undefined}\n small\n />\n autocompleteWithAi(t('more_long_prompt'))}\n disable={isLoadingAi}\n style={isLoadingAi ? styles.opacityHalf : undefined}\n small\n />\n autocompleteWithAi(t('more_formal_prompt'))}\n disable={isLoadingAi}\n style={isLoadingAi ? styles.opacityHalf : undefined}\n small\n />\n autocompleteWithAi(t('less_formal_prompt'))}\n disable={isLoadingAi}\n style={isLoadingAi ? styles.opacityHalf : undefined}\n small\n />\n \n )}\n \n );\n}\n\nconst styles = StyleSheet.create({\n container: { flex: 1, minHeight: 400, marginBottom: 100 },\n quill: { minHeight: 300 },\n aiButton: { width: 'auto', fontSize: 12, alignItems: 'center', display: 'flex' },\n aiButtonView: { flexDirection: 'row', borderWidth: 1, borderColor: DARK_GRAY, borderRadius: 4, padding: 4, gap: 4 },\n aiButtonLabel: { color: DARK_GRAY, fontSize: 12, alignItems: 'center' },\n suggestionsContainer: {\n flexDirection: 'row',\n gap: 10,\n flexWrap: 'wrap',\n marginTop: 20,\n justifyContent: 'center',\n },\n opacityHalf: {\n opacity: 0.5,\n },\n});\n","import React, { createElement } from 'react';\nimport { globalStyle } from '../../styles/globalStyle';\nimport { t } from '../../services/translations';\n\nfunction digits2(digit: number) {\n return (digit < 10 ? '0' : '') + digit;\n}\n\nexport function AppDateTimePicker(props: {\n withTime?: boolean;\n formattedDate: Date;\n onChangeText(date: string): void;\n onBlur?: () => void;\n}) {\n const day = props.formattedDate && props.formattedDate.getDate();\n const month = props.formattedDate && props.formattedDate.getMonth() + 1;\n const year = props.formattedDate && props.formattedDate.getFullYear();\n const dateValue = props.formattedDate ? year + '-' + digits2(month) + '-' + digits2(day) : t('date_placeholder');\n const timeValue = props.formattedDate\n ? digits2(props.formattedDate.getHours()) + ':' + digits2(props.formattedDate.getMinutes())\n : '';\n\n const dateInput = createElement('input', {\n type: 'date',\n value: dateValue,\n style: globalStyle.textInput,\n onChange: function (syntheticEvent) {\n const dateText = syntheticEvent.target.value.split('-');\n\n let newDate = props.formattedDate ? new Date(props.formattedDate) : new Date();\n newDate.setDate(dateText[2] as unknown as number);\n newDate.setMonth((dateText[1] as unknown as number) - 1);\n newDate.setFullYear(dateText[0] as unknown as number);\n\n props.onChangeText(newDate.toISOString());\n },\n });\n\n const timeInput = createElement('input', {\n type: 'time',\n value: timeValue,\n style: globalStyle.textInput,\n onBlur: props.onBlur,\n onChange: function (syntheticEvent) {\n const timeText = syntheticEvent.target.value.split(':');\n\n let newDate = props.formattedDate ? new Date(props.formattedDate) : new Date();\n newDate.setHours(timeText[0], timeText[1]);\n props.onChangeText(newDate.toISOString());\n },\n });\n\n return (\n <>\n {dateInput}\n {props.withTime && timeInput}\n \n );\n}\n","import {\n KeyboardType,\n NativeSyntheticEvent,\n StyleProp,\n StyleSheet,\n Text,\n TextInputFocusEventData,\n View,\n ViewStyle,\n} from 'react-native';\nimport AppText, { Mode } from './AppText';\nimport React, { LegacyRef, ReactNode, useCallback, useEffect, useState } from 'react';\nimport { AppTextInput, AppTextInputProps } from './AppTextInput';\nimport { Chevron } from 'react-native-shapes';\nimport { globalStyle } from '../../styles/globalStyle';\nimport 'intl';\nimport 'intl/locale-data/jsonp/en';\nimport 'intl/locale-data/jsonp/fr';\nimport 'intl/locale-data/jsonp/es';\nimport { AppRTEEditor } from './AppRTEEditor';\nimport { AppDateTimePicker } from './AppDateTimePicker';\nimport { ALERT_COLOR, PRIMARY_COLOR } from '../../styles/appColor';\nimport SelectDropdown from 'react-native-select-dropdown';\nimport { t } from '../../services/translations';\nimport { Picker } from '@react-native-picker/picker';\nimport { isMobile } from '../../services/utils';\n\nexport function FormField(props: {\n ref?: LegacyRef;\n children: ReactNode;\n style?: StyleProp;\n title?: string;\n}) {\n return (\n \n {props.title !== undefined && (\n \n {props.title}\n \n )}\n {props.children}\n \n );\n}\n\nexport type TextFormFieldProps = {\n mandatory?: boolean;\n placeholder?: string;\n maxLength?: number;\n displayOnly?: boolean;\n multiline?: boolean;\n style?: StyleProp;\n onSubmitEditing?: any;\n title?: string;\n defaultValue?: string;\n value?: string;\n autoCapitalize?: 'none' | 'sentences' | 'words' | 'characters' | undefined;\n onChangeText: (data: string) => void;\n keyboardType?: KeyboardType;\n secureTextEntry?: boolean;\n onBlur?: (e: NativeSyntheticEvent) => void;\n} & AppTextInputProps;\n\nexport function TextFormField({ title, style, ...props }: TextFormFieldProps) {\n return (\n \n \n \n );\n}\n\nexport type NumberFormFieldProps = Omit, 'onChangeText'> & {\n value: number | null;\n onChange: (value: number | null) => void;\n};\n\nexport function NumberFormField({ value, onChange, style, title, onBlur, ...rest }: NumberFormFieldProps) {\n const [text, setText] = useState('');\n const [invalid, setInvalid] = useState(false);\n\n // Reset text when numeric value change\n useEffect(() => {\n if (value !== null) {\n setText(value.toString());\n }\n }, [value]);\n\n const handleBlur = useCallback(() => {\n const parsed = parseInt(text);\n setInvalid(isNaN(parsed));\n onChange(parsed);\n }, [onBlur, onChange, text]);\n\n return (\n \n \n {invalid && {t('incorrect_number')}}\n \n );\n}\n\nexport function RTEFormField(props: {\n style?: StyleProp;\n defaultValue?: string;\n onChangeText: (data: string) => void;\n title: string;\n}) {\n return (\n \n \n \n );\n}\n\nexport type DateFieldProps = {\n withTime?: boolean;\n displayOnly?: boolean;\n style?: StyleProp;\n title: string;\n defaultValue?: string;\n onChangeText(text: string): void;\n onBlur?: () => void;\n};\n\nexport function DateField(props: DateFieldProps) {\n let formattedDate = new Date();\n if (props.defaultValue !== undefined && props.defaultValue !== null) {\n formattedDate = new Date(props.defaultValue);\n }\n\n useEffect(() => {\n setTimeout(() => {\n props.onChangeText(formattedDate.toISOString());\n }, 100);\n }, []);\n\n return (\n \n \n \n );\n}\n\nexport function AppPickerSelect(props: {\n pickerStyle?: StyleProp;\n displayOnly?: boolean;\n defaultValue?: T;\n defaultChoiceOnMobile?: boolean;\n defaultButtonText?: string;\n hideDefaultButton?: boolean;\n onChangeText(data: T | null): void;\n data: { label: string; value: T | null }[];\n}) {\n const textStyle = { ...globalStyle.appText };\n\n if (isMobile()) {\n return (\n item.label}\n rowTextForSelection={(item) => item.label}\n defaultValue={props.data.filter((v, k) => v.value === props.defaultValue)[0]}\n onSelect={(item) => {\n props.onChangeText(item.value);\n }}\n disabled={props.displayOnly}\n defaultButtonText={props.defaultButtonText || t('select_an_item')}\n buttonStyle={Object.assign({}, globalStyle.pickerTextInput, props.pickerStyle)}\n buttonTextStyle={textStyle}\n rowTextStyle={textStyle}\n renderDropdownIcon={() => }\n />\n );\n } else {\n const dataContainsDefaultValue = props.data.filter((v, k) => v.value === props.defaultValue).length > 0;\n\n return (\n {\n if (props.hideDefaultButton) {\n itemIndex = itemIndex + 1;\n }\n\n if (itemIndex === 0) {\n props.onChangeText(null);\n } else {\n const item = props.data[itemIndex - 1];\n props.onChangeText(item.value);\n }\n }}\n selectedValue={dataContainsDefaultValue ? props.defaultValue : 'null_or_undefined'}\n >\n {!props.hideDefaultButton && (\n \n )}\n {props.data.map((v, k) => (\n \n ))}\n \n );\n }\n}\n\nexport type FormFieldPickerProps = {\n displayOnly?: boolean;\n inputStyle?: StyleProp;\n style?: StyleProp;\n onSubmitEditing?: any;\n defaultChoiceOnMobile?: boolean;\n defaultButtonText?: string;\n title: string;\n defaultValue: T | undefined;\n onChangeText(data: T): void;\n data: { label: string; value: T }[];\n};\n\nexport function FormFieldPicker(props: FormFieldPickerProps) {\n return (\n \n \n \n pickerStyle={props.inputStyle}\n displayOnly={props.displayOnly}\n defaultChoiceOnMobile={props.defaultChoiceOnMobile}\n defaultValue={props.defaultValue}\n onChangeText={props.onChangeText}\n data={props.data}\n defaultButtonText={props.defaultButtonText}\n />\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n errorLabel: {\n color: ALERT_COLOR,\n fontSize: 12,\n paddingLeft: 8,\n },\n});\n","import { AppPickerSelect } from './FormField';\nimport React, { useState } from 'react';\nimport { PROFILE_LANGUAGE_ENABLED } from '../../services/features';\nimport { StyleProp, ViewStyle } from 'react-native';\n\nexport interface AppLanguagePickerProps {\n defaultValue?: string;\n containerStyle?: StyleProp;\n onLanguageChanged?: (language: string) => void;\n}\n\nexport const AppLanguagePicker = (props: AppLanguagePickerProps) => (\n \n displayOnly={PROFILE_LANGUAGE_ENABLED}\n pickerStyle={props.containerStyle}\n defaultValue={props.defaultValue}\n onChangeText={(itemValue) => props.onLanguageChanged?.(itemValue)}\n data={[\n { label: 'Français 🇫🇷', value: 'fr-FR' },\n { label: 'English 🇬🇧 🇺🇸', value: 'en-GB' },\n { label: 'Deutsch 🇩🇪', value: 'de-DE' },\n { label: 'Español 🇪🇸', value: 'es-ES' },\n { label: 'Italiano 🇮🇹', value: 'it-IT' },\n ]}\n >\n);\n","import React from 'react';\nimport { StyleSheet, View, TextInput, TouchableOpacity, ActivityIndicator } from 'react-native';\nimport { Field, useField, useFormikContext } from 'formik';\nimport { t } from '../../../services/translations';\nimport { ALERT_COLOR, DARK_GRAY, LIGHT_GRAY, SMOKE_WHITE } from '../../../styles/appColor';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport Animated, { interpolate, useAnimatedStyle, useSharedValue, withTiming } from 'react-native-reanimated';\nimport AppText, { Mode } from '../AppText';\n\nexport type LoginFieldProps = {\n emailName: string;\n passwordName: string;\n passwordVisible?: boolean;\n isLoading?: boolean;\n onNext?: (email: string) => void;\n onEmailChange?: () => void;\n};\n\nexport function LoginField({\n emailName,\n passwordName,\n passwordVisible,\n isLoading,\n onNext,\n onEmailChange,\n}: LoginFieldProps) {\n const [emailField, emailState, emailHelper] = useField(emailName);\n const [passwordField, passwordState, passwordHelper] = useField(passwordName);\n const { submitForm } = useFormikContext();\n\n let passwordViewOpacity = useSharedValue(0);\n const animatedStyles = useAnimatedStyle(() => {\n return {\n display: passwordVisible ? 'flex' : 'none',\n height: interpolate(passwordViewOpacity.value, [0, 1], [0, 44]),\n overflow: passwordViewOpacity.value === 1 ? 'visible' : 'hidden',\n };\n });\n\n const handleSubmit = !isLoading\n ? passwordVisible\n ? submitForm\n : () => onNext && onNext(emailField.value)\n : undefined;\n\n const isEmailValid = !emailState.error;\n\n // Password grow when it becomes visible\n React.useEffect(() => {\n passwordViewOpacity.value = withTiming(passwordVisible ? 1 : 0, { duration: 1000 });\n }, [passwordVisible, passwordViewOpacity]);\n\n return (\n \n \n {\n emailHelper.setValue(value.toLowerCase(), true);\n onEmailChange && onEmailChange();\n }}\n onBlur={() => emailHelper.setTouched(true)}\n as={TextInput}\n onSubmitEditing={handleSubmit}\n placeholder={t('email_address')}\n keyboardType=\"email-address\"\n autoCapitalize=\"none\"\n style={[\n styles.input,\n passwordVisible ? styles.inputTop : styles.inputSingle,\n emailState.touched && emailState.error ? styles.inputError : {},\n ]}\n />\n \n {passwordVisible && (\n <>\n {\n passwordHelper.setValue(value, true);\n }}\n onBlur={() => passwordHelper.setTouched(true)}\n placeholder={t('password')}\n as={TextInput}\n onSubmitEditing={handleSubmit}\n secureTextEntry\n style={[\n styles.input,\n styles.inputBottom,\n passwordState.touched && passwordState.error ? styles.inputError : {},\n ]}\n editable={!isLoading}\n autoFocus\n />\n \n )}\n \n \n {isLoading ? (\n \n ) : (\n \n )}\n \n \n {emailState.touched && emailState.error}\n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n width: '100%',\n },\n doubleInput: {\n width: '100%',\n borderRadius: 16,\n padding: 1,\n },\n input: {\n borderWidth: 1,\n borderColor: DARK_GRAY,\n padding: 12,\n fontSize: 18,\n },\n inputError: {\n borderColor: ALERT_COLOR,\n borderWidth: 2,\n },\n inputSingle: {\n borderRadius: 16,\n },\n inputTop: {\n borderBottomWidth: 0,\n borderTopLeftRadius: 16,\n borderTopRightRadius: 16,\n },\n inputDisabled: {\n color: LIGHT_GRAY,\n backgroundColor: SMOKE_WHITE,\n },\n inputBottom: {\n borderTopColor: LIGHT_GRAY,\n borderTopWidth: 1,\n borderWidth: 1,\n borderBottomLeftRadius: 16,\n borderBottomRightRadius: 16,\n height: '100%',\n width: '100%',\n },\n nextButton: {\n position: 'absolute',\n right: 0,\n bottom: 0,\n height: 44,\n width: 44,\n justifyContent: 'center',\n alignItems: 'center',\n },\n});\n","import React, { ReactNode } from 'react';\nimport { SafeAreaView, StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\nimport { BACKGROUND_COLOR } from '../../styles/appColor';\n\nexport type MaxWidthScreenProps = {\n children: ReactNode;\n style?: StyleProp;\n};\n\nexport function MaxWidthScreen({ style, children }: MaxWidthScreenProps) {\n return (\n \n {children}\n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: BACKGROUND_COLOR,\n },\n content: {\n width: '100%',\n flex: 1,\n maxWidth: 480,\n padding: 20,\n },\n});\n","import React from 'react';\nimport { Image } from 'react-native';\nimport { globalStyle } from '../../styles/globalStyle';\n\nexport default function Logo(props: { style?: any }) {\n return (\n \n );\n}\n","export enum AuthenticationMode {\n EmailAndPassword = 0,\n NeedRegistration = 1,\n Sso = 2,\n}\n","import React, { useState } from 'react';\nimport { Modal, TouchableOpacity } from 'react-native';\nimport { WebView } from 'react-native-webview';\nimport * as Yup from 'yup';\nimport { language, t } from '../../services/translations';\nimport { HypertextLink } from '../../components/atomic/HypertextLink';\nimport { AppButton, Type } from '../../components/atomic/AppButton';\nimport { alertInfo } from '../../services/utils';\nimport { useDispatch } from 'react-redux';\nimport { match } from 'ts-pattern';\nimport { loadAppState, saveLanguage, saveToken } from '../../services/storage';\nimport { Space1 } from '../../styles/spaces';\nimport { login, ErrorReason, getAuthenticationMode, redirectToAuthenticateWithSso } from '../../services/api/login';\nimport { AppLanguagePicker } from '../../components/atomic/AppLanguagePicker';\nimport { ScreenNames } from '../../ScreenNames';\nimport { setUser } from '../../store/user';\nimport { LoginField } from '../../components/atomic/formik/LoginField';\nimport { MaxWidthScreen } from '../../components/containers/MaxWidthScreen';\nimport { Platform, StyleSheet, View } from 'react-native';\nimport Logo from '../../components/atomic/Logo';\nimport { AuthenticationMode } from '../../entities/AuthenticationMode';\nimport { FormikContext, FormikHelpers, useFormik } from 'formik';\nimport { apiUrlBase } from '../../../configuration';\nimport { Header, Icon } from '@rneui/themed';\nimport { PRIMARY_COLOR } from '../../styles/appColor';\nimport { setLoading } from '../../store/action';\n\nexport const schema = Yup.object({\n email: Yup.string().min(1).required(t('field_required')),\n password: Yup.string().min(4).required(t('field_required')),\n});\n\ntype FormValues = {\n email: string;\n password: string;\n};\n\nexport function Login(props: { navigation: any }) {\n let [, forceRefresh] = useState({});\n const dispatch = useDispatch();\n\n const [authenticationMode, setAuthenticationMode] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n const [webViewUrl, setWebViewUrl] = useState(null);\n\n const handleSubmit = async (values: FormValues, formikHelpers: FormikHelpers) => {\n try {\n var userData = await login(values.email, values.password);\n await saveToken(userData.token);\n setUser({ ...userData }, dispatch);\n } catch (err: any) {\n if (err.message === ErrorReason.INVALID_CREDENTIALS) {\n formikHelpers.setFieldError('email', t('invalid_credentials'));\n } else if (err.message === ErrorReason.MAIL_NOT_VALIDATED) {\n formikHelpers.setFieldError('email', t('mail_not_validated'));\n } else {\n console.error(err);\n alertInfo(t('unknown_error'));\n }\n }\n };\n\n const formik = useFormik({\n initialValues: {\n email: '',\n password: '',\n },\n onSubmit: handleSubmit as any,\n validationSchema: schema,\n validateOnMount: true,\n });\n\n const fetchAuthenticationMode = async (email: string) => {\n try {\n setIsLoading(true);\n let mode = await getAuthenticationMode(email);\n\n match(mode as AuthenticationMode)\n .with(AuthenticationMode.EmailAndPassword, () => setAuthenticationMode(mode))\n .with(AuthenticationMode.Sso, () => {\n if (Platform.OS === 'android') {\n // On android, redirection is not always working\n // So we use a webview to authenticate instead of a redirection\n setWebViewUrl(`${apiUrlBase}Auth/authenticate/sso?email=${email}`);\n } else {\n redirectToAuthenticateWithSso(email);\n }\n })\n .otherwise(() => {\n formik.setFieldError('email', t('invalid_email'));\n });\n } catch (err) {\n setIsLoading(false);\n throw err;\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n \n \n \n \n \n \n {\n formik.setFieldValue('password', '');\n setAuthenticationMode(null);\n }}\n />\n \n {\n saveLanguage(lng).then(() => {\n forceRefresh({});\n });\n }}\n defaultValue={language()}\n />\n \n props.navigation.navigate(ScreenNames.ResetPasswordSendCode)}\n text={t('forgotten_password')}\n />\n \n \n props.navigation.navigate(ScreenNames.Registration)}\n enabled={true}\n type={Type.LIGHT}\n />\n {webViewUrl && (\n \n setWebViewUrl(null)}>\n \n \n }\n leftContainerStyle={styles.headingLeftContainer}\n />\n {\n if (state.url.includes('/main?accessToken=')) {\n const asyncFunction = async () => {\n dispatch(setLoading(true));\n setWebViewUrl(null);\n\n try {\n let token = state.url.split('accessToken=')[1];\n await saveToken(token);\n await loadAppState(dispatch);\n } catch (err) {\n } finally {\n dispatch(setLoading(false));\n }\n };\n\n asyncFunction();\n }\n }}\n />\n \n )}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n languagePicker: {\n alignSelf: 'center',\n width: 200,\n },\n headingLeftContainer: {\n justifyContent: 'center',\n },\n});\n","import { useMemo } from 'react';\nimport { useWindowDimensions } from 'react-native';\n\nexport function useDeviceSize() {\n let screenWidth = useWindowDimensions().width;\n\n const deviceSize = useMemo(() => {\n if (screenWidth < 600) {\n return 'extra-small';\n } else if (screenWidth < 768) {\n return 'small';\n } else if (screenWidth < 992) {\n return 'medium';\n } else if (screenWidth < 1200) {\n return 'large';\n } else {\n return 'extra-large';\n }\n }, [screenWidth]);\n\n const isSmallDevice = deviceSize == 'extra-small' || deviceSize == 'small';\n const isMediumDevice = deviceSize == 'medium';\n const isLargeDevice = deviceSize == 'extra-large' || deviceSize == 'large';\n const isSmallMediumDevice = deviceSize == 'extra-small' || deviceSize == 'small' || deviceSize == 'medium';\n\n return {\n deviceSize,\n isSmallDevice,\n isMediumDevice,\n isLargeDevice,\n isSmallMediumDevice,\n };\n}\n","import { Image, ImageBackground, SafeAreaView, View } from 'react-native';\nimport { globalStyle } from '../../styles/globalStyle';\nimport React, { ReactNode } from 'react';\nimport Logo from '../atomic/Logo';\nimport { Space3 } from '../../styles/spaces';\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';\nimport { isMobile } from '../../services/utils';\nimport { useDeviceSize } from '../../hooks/useDeviceSize';\n\nconst mobileBackground = require('../../../assets/background-white-shapes.png');\n\nexport function TwoColumnsLayout(props: { children: ReactNode; background: any; contentOnRight?: boolean }) {\n const { isSmallDevice } = useDeviceSize();\n const isInCompactMode = isSmallDevice || isMobile();\n\n const column1 = (\n <>\n {isInCompactMode ? (\n \n ) : (\n \n \n \n )}\n \n );\n\n const column2 = (\n \n \n \n \n \n \n {props.children}\n \n \n \n \n );\n\n if (props.contentOnRight)\n return (\n \n {column1}\n {column2}\n \n );\n return (\n \n {column2}\n {column1}\n \n );\n}\n","import { TextInput } from 'react-native';\nimport { LIGHT_GRAY } from '../../styles/appColor';\nimport React from 'react';\nimport { FONT_FAMILY_DEFAULT } from '../../styles/globalStyle';\n\nexport function ValidationCodeField(props: { onCodeEntered: (value: string) => void }) {\n return (\n (value.length == 4 ? props.onCodeEntered(value) : null)}\n keyboardType=\"number-pad\"\n style={{\n borderWidth: 1,\n borderColor: LIGHT_GRAY,\n width: 100,\n height: 50,\n textAlign: 'center',\n textAlignVertical: 'center',\n borderRadius: 8,\n fontSize: 40,\n fontFamily: FONT_FAMILY_DEFAULT.bold,\n alignSelf: 'center',\n }}\n />\n );\n}\n","import React, { ReactNode } from 'react';\nimport { View } from 'react-native';\n\nexport function FormButtons(props: { children: ReactNode }) {\n return {props.children};\n}\n","import React, { ReactNode } from 'react';\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';\n\nexport function FormBody(props: { children: ReactNode }) {\n return {props.children};\n}\n","import React from 'react';\nimport { NavigationProp, ParamListBase, RouteProp } from '@react-navigation/native';\nimport { t } from '../../services/translations';\nimport { AppButton } from '../../components/atomic/AppButton';\nimport { useDispatch } from 'react-redux';\nimport { setLoading } from '../../store/action';\nimport { TwoColumnsLayout } from '../../components/containers/TwoColumnsLayout';\nimport AppText, { Mode } from '../../components/atomic/AppText';\nimport { Space1, Space3 } from '../../styles/spaces';\nimport { ValidationCodeField } from '../../components/atomic/ValidationCodeField';\nimport { FormButtons } from '../../components/containers/FormButtons';\nimport { FormBody } from '../../components/containers/FormBody';\nimport { validate } from '../../services/api/login';\nimport { alertInfo } from '../../services/utils';\nimport { setUser } from '../../store/user';\nimport { ScreenNames } from '../../ScreenNames';\n\nconst registrationBackground = require('../../../assets/registration-background.png');\n\nexport type ValidationCodeProps = {\n route: RouteProp;\n navigation: NavigationProp;\n};\n\nexport function ValidationCode({ route, navigation }: ValidationCodeProps) {\n const dispatch = useDispatch();\n const email = route?.params?.email as string;\n\n function _validate(code: string) {\n dispatch(setLoading(true));\n validate(email, code)\n .then(() => {\n alertInfo(t('mail_validated_successfully'));\n return setUser(null, dispatch);\n })\n .then(() => navigation.navigate(ScreenNames.Login))\n .catch((e) => {\n alertInfo(t('invalid_code'));\n })\n .finally(() => dispatch(setLoading(false)));\n }\n\n return (\n \n \n {t('enter_validation_code')}\n \n {t('your_4_digit_code')}\n \n \n \n \n navigation.goBack()} />\n \n \n );\n}\n","import { TouchableOpacity, View } from 'react-native';\nimport React from 'react';\nimport AppText, { Mode } from './AppText';\nimport { LIGHT_GRAY, PRIMARY_COLOR_LIGHT } from '../../styles/appColor';\n\nexport type AppCheckboxProps = {\n title: string | React.ReactNode;\n subtitle?: string;\n onValueChange: any;\n value: boolean;\n};\n\nexport function AppCheckbox(props: AppCheckboxProps) {\n return (\n {\n props.onValueChange(!props.value);\n }}\n style={{ flexDirection: 'row', alignContent: 'flex-start' }}\n >\n \n \n {props.title}\n \n {props.subtitle}\n \n \n \n );\n}\n\nfunction TickableBox(props: { value: boolean; onValueChange: any }) {\n return (\n \n {props.value ? : null}\n \n );\n}\n","import React, { useState } from 'react';\nimport { language, t } from '../../services/translations';\nimport { TextFormField } from '../../components/atomic/FormField';\nimport { AppCheckbox } from '../../components/atomic/AppCheckbox';\nimport { AppButton, Type } from '../../components/atomic/AppButton';\nimport { alertInfo, isMailValid, openURL } from '../../services/utils';\nimport { useDispatch } from 'react-redux';\nimport { saveLanguage, saveToken } from '../../services/storage';\nimport { setLoading } from '../../store/action';\nimport AppText, { Mode } from '../../components/atomic/AppText';\nimport { HypertextLink } from '../../components/atomic/HypertextLink';\nimport { TwoColumnsLayout } from '../../components/containers/TwoColumnsLayout';\nimport { Space1, Space2 } from '../../styles/spaces';\nimport { FormBody } from '../../components/containers/FormBody';\nimport { FormButtons } from '../../components/containers/FormButtons';\nimport {\n checkCompanyCode,\n ErrorReason,\n generateValidationCode,\n login,\n register,\n registerWithCompanyCode,\n} from '../../services/api/login';\nimport { AppLanguagePicker } from '../../components/atomic/AppLanguagePicker';\nimport { ScreenNames } from '../../ScreenNames';\nimport { ActivityIndicator, View, Platform, KeyboardType, StyleSheet } from 'react-native';\nimport { Icon } from '@rneui/base';\nimport { PRIMARY_COLOR } from '../../styles/appColor';\nimport { urlBase } from '../../../configuration';\nimport { setUser } from '../../store/user';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport { Entreprise } from '../../entities/Entreprise';\n\nconst registrationBackground = require('../../../assets/registration-background.png');\n\nexport function Registration() {\n const navigation = useNavigation>();\n const [emailAddress, setEmailAddress] = useState(__DEV__ ? 'alexandre.perles@gmail.com' : '');\n const [password, setPassword] = useState(__DEV__ ? 'testtest' : '');\n const [passwordConfirmation, setPasswordConfirmation] = useState(__DEV__ ? 'testtest' : '');\n const [hasCGUBeenApproved, setCGUApproved] = useState(false);\n const [hasRGDPConsent, setRGPDConsent] = useState(false);\n const [codeShown, setCodeShown] = useState(false);\n const [companyCode, setCompanyCode] = useState('');\n const [companyCodeCorresponding, setCompanyCodeCorresponding] = useState(undefined);\n const [companyCodeConfirmation, setCompanyCodeConfirmation] = useState(undefined);\n const [companyCodeLoading, setCompanyCodeLoading] = useState(false);\n const dispatch = useDispatch();\n\n const validateCompanyCode = async () => {\n setCompanyCodeLoading(true);\n\n try {\n const entreprise = await checkCompanyCode(companyCode);\n setCompanyCodeCorresponding(entreprise);\n setCompanyCodeConfirmation(true);\n } catch (e) {\n setCompanyCodeCorresponding(undefined);\n setCompanyCodeConfirmation(false);\n } finally {\n setCompanyCodeLoading(false);\n }\n };\n\n async function _register() {\n if (!isFormReadyToBeSent()) {\n return;\n }\n\n dispatch(setLoading(true));\n\n if (codeShown) {\n try {\n await registerWithCompanyCode(emailAddress, password, hasCGUBeenApproved, hasRGDPConsent, companyCode);\n const userData = await login(emailAddress, password);\n saveToken(userData.token);\n setUser({ ...userData }, dispatch);\n } catch (e) {\n alertInfo(t('unknown_error'));\n } finally {\n dispatch(setLoading(false));\n }\n } else {\n try {\n await register(emailAddress, password, hasCGUBeenApproved, hasRGDPConsent);\n await generateValidationCode(emailAddress);\n navigation.navigate(ScreenNames.ValidationCode, { email: emailAddress });\n } catch (e: any) {\n if (e.message === ErrorReason.ACCOUNT_ALREADY_EXISTS) {\n alertInfo(t('account_already_exists'));\n } else {\n alertInfo(t('unknown_error'));\n }\n } finally {\n dispatch(setLoading(false));\n }\n }\n }\n\n const isFormReadyToBeSent = () => {\n let isValid =\n isMailValid(emailAddress) &&\n password.length >= 4 &&\n password === passwordConfirmation &&\n hasCGUBeenApproved &&\n hasRGDPConsent;\n\n if (codeShown) {\n isValid = isValid && (companyCodeConfirmation || false);\n }\n\n return isValid;\n };\n\n let [, forceRefresh] = useState({});\n\n return (\n \n \n \n\n \n \n \n \n {password !== passwordConfirmation && passwordConfirmation.length > 0 ? (\n {t('passwords_dont_match')}\n ) : null}\n \n \n {codeShown && (\n <>\n \n {\n const newV = v.replace(/\\W/g, '').toUpperCase();\n setCompanyCode(newV);\n setCompanyCodeConfirmation(undefined);\n }}\n onBlur={() => {\n validateCompanyCode();\n }}\n />\n {companyCodeLoading && (\n \n \n \n )}\n {companyCodeConfirmation !== undefined && !companyCodeLoading && (\n <>\n {companyCodeConfirmation ? (\n \n \n \n \n \n {t('code_valid')}\n {companyCodeCorresponding ? ' : ' + companyCodeCorresponding.nom : ''}\n \n \n ) : (\n \n \n \n \n {t('code_invalid')}\n \n )}\n \n )}\n \n )}\n \n \n {t('read_and_accept') + ' '}\n {\n openURL(`${urlBase}assets/documents/CGU-KonecTeam_2022.pdf`);\n }}\n text={t('cgu')}\n />\n \n }\n />\n \n \n {t('rgpd_text_1') + ' '}\n {\n openURL(`${urlBase}assets/documents/Politique-de-confidentialité-2022.pdf`);\n }}\n text={t('privacy')}\n />\n .\n \n }\n subtitle={t('rgpd_text_2')}\n />\n \n\n \n \n \n \n navigation.navigate(ScreenNames.Login)} />\n \n {\n saveLanguage(lng).then(() => {\n forceRefresh({});\n });\n }}\n defaultValue={language()}\n />\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n activityIndicator: { flexDirection: 'row', alignItems: 'center' },\n companyCodeConfirmation: { flexDirection: 'row', alignItems: 'center' },\n companyCodeConfirmationIcon: {\n borderWidth: 1,\n borderRadius: 100,\n height: 24,\n width: 24,\n alignItems: 'center',\n justifyContent: 'center',\n borderColor: 'green',\n },\n companyCodeConfirmationText: { color: 'green', fontWeight: 'bold', marginLeft: 6 },\n companyCodeFailure: { flexDirection: 'row', alignItems: 'center' },\n companyCodeFailureIcon: {\n borderWidth: 1,\n borderRadius: 100,\n height: 24,\n width: 24,\n alignItems: 'center',\n justifyContent: 'center',\n borderColor: 'red',\n },\n companyCodeFailureText: { color: 'red', fontWeight: 'bold', marginLeft: 6 },\n languagePicker: { alignSelf: 'center', width: 200 },\n});\n","import React, { useState } from 'react';\nimport { t } from '../../services/translations';\nimport { TextFormField } from '../../components/atomic/FormField';\nimport { AppButton, Type } from '../../components/atomic/AppButton';\nimport { isMailValid } from '../../services/utils';\nimport { TwoColumnsLayout } from '../../components/containers/TwoColumnsLayout';\nimport { FormButtons } from '../../components/containers/FormButtons';\nimport { FormBody } from '../../components/containers/FormBody';\nimport { Space2 } from '../../styles/spaces';\n\nconst registrationBackground = require('../../../assets/registration-background.png');\n\nexport function NoProfessionalAddress(props: { route; navigation }) {\n const [emailAddress, setEmailAddress] = useState('');\n const [company, setCompany] = useState('');\n\n const _send = () => {\n if (!isMailValid(emailAddress)) return;\n };\n return (\n \n \n \n \n \n \n \n \n props.navigation.goBack()} enabled={true} />\n \n \n );\n}\n","import React from 'react';\nimport { Platform, StyleSheet } from 'react-native';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\n\nexport type BackIconProps = {\n tintColor: string;\n};\n\nexport default function BackIcon({ tintColor, ...props }: BackIconProps) {\n return (\n \n );\n}\n\nconst styles = StyleSheet.create({\n icon: {\n marginLeft: 10,\n },\n});\n","import React from 'react';\nimport { Formik, FormikConfig, FormikValues } from 'formik';\n\nexport type FormProps = Omit, 'children'> & {\n children: React.ReactNode;\n};\n\nexport default function Form({ children, ...rest }: FormProps) {\n return (\n {...rest}>\n <>{children}\n \n );\n}\n","import React from 'react';\nimport { Field, useField } from 'formik';\nimport { AppTextInput, AppTextInputProps } from '../AppTextInput';\nimport { FormField } from '../FormField';\nimport AppText, { Mode } from '../AppText';\n\nexport type TextFieldProps = Omit, 'onChangeText'>, 'onBlur'> & {\n name: string;\n title: string;\n required?: boolean;\n};\n\nexport default function TextField({ name, title, required, style, ...rest }: TextFieldProps) {\n const [field, meta, helper] = useField(name);\n\n return (\n \n helper.setTouched(true)}\n as={AppTextInput}\n />\n {meta.touched && meta.error && {meta.error}}\n \n );\n}\n","import React, { useCallback, useEffect } from 'react';\nimport { useFormikContext } from 'formik';\nimport { StyleProp, View, ViewStyle } from 'react-native';\nimport { useDispatch } from 'react-redux';\nimport { AppButton, Type } from '../AppButton';\nimport { setLoading } from '../../../store/action';\nimport { useNavigation } from '@react-navigation/native';\n\nexport type SubmitButtonProps = {\n text: string;\n type?: Type;\n style?: StyleProp;\n};\n\nexport default function SubmitButton({ text, type, style }: SubmitButtonProps) {\n const { submitForm, validateForm, isValid, isSubmitting, resetForm } = useFormikContext();\n const dispatch = useDispatch();\n const navigation = useNavigation();\n\n // Display big loading indicator if loading\n useEffect(() => {\n dispatch(setLoading(isSubmitting));\n }, [isSubmitting, dispatch]);\n\n const handleSubmitForm = useCallback(async () => {\n if (await validateForm()) {\n submitForm();\n }\n }, [submitForm]);\n\n useEffect(() => {\n const unsubscribe = navigation.addListener('focus', () => {\n resetForm();\n });\n\n return unsubscribe;\n }, [navigation, resetForm]);\n\n return (\n \n \n \n );\n}\n","import React from 'react';\nimport * as Yup from 'yup';\nimport { t } from '../../services/translations';\nimport { AppButton } from '../../components/atomic/AppButton';\nimport { alertInfo } from '../../services/utils';\nimport { TwoColumnsLayout } from '../../components/containers/TwoColumnsLayout';\nimport AppText, { Mode } from '../../components/atomic/AppText';\nimport { Space1, Space2 } from '../../styles/spaces';\nimport { FormButtons } from '../../components/containers/FormButtons';\nimport { FormBody } from '../../components/containers/FormBody';\nimport { ScreenNames } from '../../ScreenNames';\nimport Form from '../../components/atomic/formik/Form';\nimport { emailRegex } from '../../services/formUtil';\nimport { useMutation } from '@tanstack/react-query';\nimport { resetPasswordSendCode } from '../../services/api/login';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport TextField from '../../components/atomic/formik/TextField';\nimport SubmitButton from '../../components/atomic/formik/SubmitButton';\n\nconst registrationBackground = require('../../../assets/registration-background.png');\n\nexport const schema = Yup.object({\n email: Yup.string().min(1).required(t('field_required')).matches(emailRegex, t('invalid_email')),\n});\n\nexport type FormValues = {\n email: string;\n};\n\nexport function ResetPasswordSendCode() {\n const navigation = useNavigation>();\n\n const { mutateAsync } = useMutation({\n mutationFn: async (values: FormValues) => {\n await resetPasswordSendCode(values.email);\n navigation.navigate(ScreenNames.ResetPasswordSendCodeSuccess);\n },\n onError: () => {\n alertInfo(t('unknown_error'));\n },\n });\n\n return (\n \n \n \n {t('forgotten_password_step_1_title')}\n {t('forgotten_password_step_1_text')}\n \n \n \n \n \n \n navigation.navigate(ScreenNames.Login)} enabled={true} />\n \n \n \n );\n}\n","import React from 'react';\nimport * as Yup from 'yup';\nimport { t } from '../../services/translations';\nimport { AppButton } from '../../components/atomic/AppButton';\nimport AppText, { Mode } from '../../components/atomic/AppText';\nimport { TwoColumnsLayout } from '../../components/containers/TwoColumnsLayout';\nimport { Space1, Space2 } from '../../styles/spaces';\nimport { FormButtons } from '../../components/containers/FormButtons';\nimport { FormBody } from '../../components/containers/FormBody';\nimport { alertInfo } from '../../services/utils';\nimport { ScreenNames } from '../../ScreenNames';\nimport Form from '../../components/atomic/formik/Form';\nimport SubmitButton from '../../components/atomic/formik/SubmitButton';\nimport { useMutation } from '@tanstack/react-query';\nimport { login, resetPassword } from '../../services/api/login';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport TextField from '../../components/atomic/formik/TextField';\nimport { saveToken } from '../../services/storage';\nimport { useDispatch } from 'react-redux';\nimport { setUser } from '../../store/user';\n\nconst registrationBackground = require('../../../assets/registration-background.png');\n\nexport const schema = Yup.object({\n password: Yup.string().min(4, t('field_required')).required(t('field_required')),\n passwordConfirmation: Yup.string()\n .required(t('field_required'))\n .when('password', (password, schema) => {\n if (password !== undefined) {\n return schema.test('password-confirmation', t('passwords_dont_match'), (value: string) => {\n return value === password;\n });\n }\n return schema;\n }),\n});\n\nexport type FormValues = {\n password: string;\n passwordConfirmation: string;\n};\n\nexport type ResetPasswordProps = {\n route: {\n params: {\n email: string;\n code: string;\n };\n };\n};\n\nexport function ResetPassword({ route }: ResetPasswordProps) {\n const dispatch = useDispatch();\n const navigation = useNavigation>();\n const email = route.params.email;\n const code = route.params.code;\n\n const { mutateAsync } = useMutation({\n mutationFn: async (values: FormValues) => {\n await resetPassword(email, code, values.password);\n\n var userData = await login(email, values.password);\n await saveToken(userData.token);\n setUser({ ...userData }, dispatch);\n },\n onSuccess: () => {\n alertInfo(t('new_password_success'));\n navigation.navigate(ScreenNames.Main);\n },\n onError: () => {\n alertInfo(t('unknown_error'));\n },\n });\n\n return (\n \n \n \n {t('forgotten_password_step_3_title')}\n {t('forgotten_password_step_3_text')}\n \n \n \n \n \n \n \n \n navigation.navigate(ScreenNames.Login)} enabled={true} />\n \n \n \n );\n}\n","import React from 'react';\nimport { t } from '../../services/translations';\nimport { AppButton } from '../../components/atomic/AppButton';\nimport { TwoColumnsLayout } from '../../components/containers/TwoColumnsLayout';\nimport AppText, { Mode } from '../../components/atomic/AppText';\nimport { Space2 } from '../../styles/spaces';\nimport { FormButtons } from '../../components/containers/FormButtons';\nimport { FormBody } from '../../components/containers/FormBody';\nimport { ScreenNames } from '../../ScreenNames';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\n\nconst registrationBackground = require('../../../assets/registration-background.png');\n\nexport function ResetPasswordSendCodeSuccess() {\n const navigation = useNavigation>();\n\n return (\n \n \n {t('forgotten_password_step_2_title')}\n {t('forgotten_password_step_2_text')}\n \n \n \n navigation.navigate(ScreenNames.Login)} enabled={true} />\n \n \n );\n}\n","import React from 'react';\nimport { Login } from '../screens/guest/Login';\nimport { t } from '../services/translations';\nimport { ValidationCode } from '../screens/guest/ValidationCode';\nimport { Registration } from '../screens/guest/Registration';\nimport { createStackNavigator } from '@react-navigation/stack';\nimport { NoProfessionalAddress } from '../screens/guest/NoProfessionalAddress';\nimport { ScreenNames } from '../ScreenNames';\nimport BackIcon from '../components/atomic/BackIcon';\nimport { ResetPasswordSendCode } from '../screens/guest/ResetPasswordSendCode';\nimport { ResetPassword } from '../screens/guest/ResetPassword';\nimport { ResetPasswordSendCodeSuccess } from '../screens/guest/ResetPasswordSendCodeSuccess';\nimport { BACKGROUND_COLOR } from '../styles/appColor';\n\nconst Stack = createStackNavigator();\n\nexport default function GuestRoute() {\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n","export const sellImage = require('../../assets/drawable/Vente.jpg');\nexport const activityImage = require('../../assets/drawable/hobbies.png');\nexport const mutualAidImage = require('../../assets/drawable/Entraide.jpeg');\nexport const carPoolImage = require('../../assets/drawable/covoiturage.jpg');\nexport const eventImage = require('../../assets/drawable/event.jpg');\nexport const lostPropertyImage = require('../../assets/drawable/perdu.jpg');\nexport const surveyImage = require('../../assets/drawable/sondage.jpg');\nexport const suggestionImage = require('../../assets/drawable/idee.jpg');\nexport const newsImage = require('../../assets/drawable/news-actualite.png');\nexport const customImage = require('../../assets/drawable/custom.png');\nexport const documentImage = require('../../assets/drawable/document.jpg');\nexport const headerBackgroundPopup = require('../../assets/drawable/backgrd-popup.png');\nexport const genericBackground = require('../../assets/generic-background.png');\nexport const genericBackgroundHeader = require('../../assets/generic-background-header.png');\nexport const teams = require('../../assets/drawable/teams.png');\nexport const slack = require('../../assets/drawable/slack.png');\nexport const googleChat = require('../../assets/drawable/google-chat.png');\nexport const youtube = require('../../assets/drawable/youtube.png');\nexport const poweredByGiphy = require('../../assets/drawable/powered-by-giphy.png');\n\nexport const qrcodeStoreImage = require('../../assets/onlink_to_x9fqhu_small.png');\n","import React from 'react';\nimport { ImageBackground, StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\nimport { genericBackground } from '../../services/assets';\nimport { isMobile } from '../../services/utils';\nimport { BACKGROUND_COLOR } from '../../styles/appColor';\n\nexport function DefaultBackground(props: { children?: React.ReactNode; style?: StyleProp }) {\n return (\n \n {props.children}\n \n );\n}\n\nexport function AppScreen(props: {\n children: React.ReactNode;\n header?: React.ReactNode;\n style?: StyleProp;\n headerStyle?: StyleProp;\n}) {\n const padding = isMobile() ? 10 : 30;\n\n return (\n \n {props.header && (\n \n {props.header}\n \n )}\n \n {props.children}\n
\n \n );\n}\n\nconst styles = StyleSheet.create({\n header: {\n paddingTop: 10,\n },\n body: {\n paddingTop: 10,\n flex: 1,\n flexDirection: 'column',\n },\n});\n","import axios from './base';\nimport { apiUrlBase } from '../../../configuration';\nimport { headers } from './base';\n\nexport interface CompanyServiceReduced {\n id: number;\n libelle: string;\n count?: number;\n}\n\nexport async function getCompanyServices(companyId: number | string, token: string): Promise {\n return axios\n .get(apiUrlBase + 'EntrepriseServices/entreprise/' + companyId, {\n headers: headers(token),\n })\n .then((response) => response.data)\n .then((response: any[]) => response.map((r) => ({ id: r.id, libelle: r.libelle })));\n}\n\nexport async function getCompanyServicesWithCount(\n companyId: number | string,\n token: string\n): Promise {\n return axios\n .get(apiUrlBase + 'EntrepriseServices/entrepriseWithCount/' + companyId, {\n headers: headers(token),\n })\n .then((response) => response.data)\n .then((response: any[]) => response.map((r) => ({ id: r.service.id, libelle: r.service.libelle, count: r.count })));\n}\n\nexport interface CompanyGeoSiteReduced {\n id: number;\n geoSite: string;\n count?: number;\n}\n\nexport async function getCompanyGeoSites(companyId: number | string, token: string): Promise {\n return axios\n .get(apiUrlBase + 'EntrepriseSiteGeos/entreprise/' + companyId, {\n headers: headers(token),\n })\n .then((response) => response.data)\n .then((response: any[]) => response.map((r) => ({ id: r.id, geoSite: r.siteGeo })));\n}\n\nexport async function getCompanyGeoSitesWithCount(\n companyId: number | string,\n token: string\n): Promise {\n return axios\n .get(apiUrlBase + 'EntrepriseSiteGeos/entrepriseWithCount/' + companyId, {\n headers: headers(token),\n })\n .then((response) => response.data)\n .then((response: any[]) => response.map((r) => ({ id: r.sitegeo.id, geoSite: r.sitegeo.siteGeo, count: r.count })));\n}\n\nexport async function getCompanyGeoSitesWithServices(\n companyId: number | string,\n token: string\n): Promise> {\n return axios\n .get(apiUrlBase + 'EntrepriseSiteGeos/entreprise/' + companyId + '/services', {\n headers: headers(token),\n })\n .then((response) => response.data);\n}\n\nexport async function getCompanyGeoSitesWithServicesWithCount(\n companyId: number | string,\n token: string\n): Promise<{\n [key: number]: { service: number; count: number }[];\n}> {\n return axios\n .get(apiUrlBase + 'EntrepriseSiteGeos/entreprise/' + companyId + '/servicesWithCount', {\n headers: headers(token),\n })\n .then((response) => response.data);\n}\n\nexport interface CompanyGroupReduced {\n id: number;\n label: string;\n count?: number;\n}\n\nexport async function getCompanyGroups(token: string): Promise {\n return axios\n .get(apiUrlBase + 'EntrepriseGroup', {\n headers: headers(token),\n })\n .then((response) => response.data)\n .then((response: any[]) => response.map((r) => ({ id: r.id, label: r.label })));\n}\n\nexport async function getLoggedUserCompanyGroups(token: string): Promise {\n return axios\n .get(apiUrlBase + 'EntrepriseGroup/logged-user', {\n headers: headers(token),\n })\n .then((response) => response.data)\n .then((response: any[]) => response.map((r) => ({ id: r.id, label: r.label })));\n}\n\nexport async function getLoggedUserCompanyGroupsWithCount(token: string): Promise {\n return axios\n .get(apiUrlBase + 'EntrepriseGroup/logged-userWithCount', {\n headers: headers(token),\n })\n .then((response) => response.data)\n .then((response: any[]) => response.map((r) => ({ id: r.group.id, label: r.group.label, count: r.count })));\n}\n\nexport async function getCompany(companyId: number | string): Promise {\n return axios.get(apiUrlBase + 'Entreprises/' + companyId, {\n headers: headers(),\n });\n}\n\nexport async function getCompanyUsersCount(companyId: number | string, token: string): Promise {\n return axios\n .get(apiUrlBase + 'Entreprises/userentreprisecount/' + companyId, {\n headers: headers(token),\n })\n .then((r) => r.data);\n}\n\nexport type CompanyResponse = {\n id: number;\n fichierIdLogo: number;\n};\n","import React from 'react';\nimport { Platform, SafeAreaView, StatusBar } from 'react-native';\n\nexport function AppSafeAreaView(props: { style: any; children: any }) {\n return (\n \n {props.children}\n \n );\n}\n","import { TouchableOpacity } from 'react-native';\nimport { Icon } from '@rneui/base';\nimport React from 'react';\nimport { AppSafeAreaView } from '../containers/AppSafeAreaView';\nimport { ScreenNames } from '../../ScreenNames';\nimport { useSelector } from 'react-redux';\nimport { RootState } from '../../services/storage';\nimport { ContributionType } from '../../types';\nimport { getRouteFromContributionType } from '../../services/utils';\nimport { useNavigation } from '@react-navigation/native';\n\nexport function BackButton(props: {\n // navigation?: DrawerNavigationProp;\n goBack?: () => void;\n absoluteScreenName?: string;\n navigationDetails?: any;\n higher?: boolean;\n relative?: boolean;\n}) {\n const detailContributionType = useSelector(\n (state) => state.detailContributionType\n );\n const currentContribution = useSelector((state) => state.currentContribution);\n const isNotif = useSelector((state) => state.isNotif);\n const forceBack = useSelector((state) => state.forceBack);\n const navigation = useNavigation();\n\n const handlePress = props.goBack\n ? props.goBack\n : () => {\n if (detailContributionType === ContributionType.SURVEY && forceBack) {\n if (currentContribution.lovIdEtat === 57) {\n navigation.reset({\n index: 0,\n routes: [\n {\n name: ScreenNames.AdminRoute,\n state: {\n index: 1,\n routes: [\n { name: ScreenNames.CompanyAdminMain },\n {\n name: ScreenNames.SurveyAdministration,\n params: {\n screen: ScreenNames.SurveysToApproveList,\n },\n },\n ],\n },\n },\n ],\n });\n } else {\n navigation.reset({\n index: 0,\n routes: [\n {\n name: ScreenNames.AdminRoute,\n state: {\n index: 1,\n routes: [\n { name: ScreenNames.CompanyAdminMain },\n {\n name: ScreenNames.SurveyAdministration,\n params: {\n screen: ScreenNames.ApprovedSurveysList,\n },\n },\n ],\n },\n },\n ],\n });\n }\n } else if (props.absoluteScreenName) {\n navigation.navigate(props.absoluteScreenName, props.navigationDetails);\n } else if ((!isNotif || !detailContributionType || !!forceBack) && navigation.canGoBack()) {\n navigation.goBack();\n } else if (!!detailContributionType) {\n if (detailContributionType === ContributionType.COMPANY_NEWS && currentContribution?.lovIdEtat === 42) {\n navigation.reset({\n index: 0,\n routes: [\n {\n name: ScreenNames.AdminRoute,\n state: {\n index: 1,\n routes: [{ name: ScreenNames.CompanyAdminMain }, { name: ScreenNames.CompanyNewsAdministration }],\n },\n },\n ],\n });\n } else if (detailContributionType === ContributionType.SUGGESTION) {\n navigation.reset({\n index: 0,\n routes: [\n {\n name: ScreenNames.AdminRoute,\n state: {\n index: 1,\n routes: [\n { name: ScreenNames.CompanyAdminMain },\n {\n name: ScreenNames.SuggestionsAdministration,\n params: {\n screen: ScreenNames.SuggestionsToApproveList,\n },\n },\n ],\n },\n },\n ],\n });\n } else if (detailContributionType === ContributionType.CUSTOM_MODULE && currentContribution) {\n navigation.reset({\n index: 0,\n routes: [\n {\n name: currentContribution.module?.identifier || '',\n state: {\n index: 0,\n routes: [{ name: ScreenNames.CustomModuleTabs }],\n },\n },\n ],\n });\n } else {\n navigation.navigate(getRouteFromContributionType(detailContributionType));\n }\n } else {\n navigation.navigate(ScreenNames.LoggedInHome);\n }\n };\n\n let renderedButton = (\n \n \n \n );\n\n return props.relative ? (\n renderedButton\n ) : (\n {renderedButton}\n );\n}\n","import hex_sha1 from 'react-native-uuid/dist/sha1';\nimport { urlBase } from '../../configuration';\nimport { DateTime } from 'luxon';\n\nexport function generateKey(siteGeoId: any, companyId: any) {\n return hex_sha1(siteGeoId + ' ' + companyId + ' konecteam-internal-secret-key');\n}\n\nexport function generateTVInternLink(salt: string) {\n return `${urlBase}tv-screen?type=intern&code=${salt}`;\n}\n\nexport function generateTVPublicLink(salt: string) {\n return `${urlBase}tv-screen?type=public&code=${salt}`;\n}\n\nfunction generateUrl(baseUrl: string, parameters: { [key: string]: string }): string {\n return (\n baseUrl +\n '?' +\n Object.entries(parameters)\n .map(([key, value]) => key + '=' + value)\n .join('&')\n );\n}\n\nfunction dateToGoogleString(date: DateTime): string {\n return date.toFormat(\"yyyyMMdd'T'HHmmss'Z'\");\n}\n\nexport function generateGoogleAgenda(title: string, description: string, date: string, duration: number): string {\n const startDate = DateTime.fromISO(date); // keep as utc\n const endDate = startDate.plus({ seconds: duration });\n const url = generateUrl('https://www.google.com/calendar/render', {\n action: 'TEMPLATE',\n text: encodeURIComponent(title),\n details: encodeURIComponent(description),\n dates: dateToGoogleString(startDate) + '%2F' + dateToGoogleString(endDate),\n });\n\n return url;\n}\n\nexport function generateOutlookAgenda(title: string, description: string, date: string, duration: number): string {\n const startDate = DateTime.fromISO(date, { zone: 'utc' });\n const endDate = startDate.plus({ seconds: duration });\n const url = generateUrl('https://outlook.office.com/calendar/0/deeplink/compose', {\n allday: 'false',\n subject: encodeURIComponent(title),\n body: encodeURIComponent(description),\n location: '',\n path: encodeURIComponent('/calendar/action/compose'),\n rru: 'addevent',\n startdt: encodeURIComponent(startDate.toISO()),\n enddt: encodeURIComponent(endDate.toISO()),\n });\n\n return url;\n}\n\nexport function generateTeams(email: string): string {\n return `https://teams.microsoft.com/l/chat/0/0?users=${email}`;\n}\n\nexport function generateSlack(teamId: string, userId: string): string {\n return `https://slack.com/app_redirect?team=${teamId}&channel=${userId}`;\n}\n\nexport function generateGoogleChat(userId: string): string {\n return `https://chat.google.com/u/0/dm/${userId}`;\n}\n\nconst YOUTUBE_REGEX =\n /^(?:(?:https?:)?\\/\\/)?(?:(?:(?:www|m(?:usic)?)\\.)?youtu(?:\\.be|be\\.com)\\/(?:shorts\\/|live\\/|v\\/|e(?:mbed)?\\/|watch(?:\\/|\\?(?:\\S+=\\S+&)*v=)|oembed\\?url=https?%3A\\/\\/(?:www|m(?:usic)?)\\.youtube\\.com\\/watch\\?(?:\\S+=\\S+&)*v%3D|attribution_link\\?(?:\\S+=\\S+&)*u=(?:\\/|%2F)watch(?:\\?|%3F)v(?:=|%3D))?|www\\.youtube-nocookie\\.com\\/embed\\/)([\\w-]{11})[\\?&#]?\\S*$/;\n\nexport function isValidYoutubeUrl(url: string) {\n return url.match(YOUTUBE_REGEX);\n}\n","import { isValidYoutubeUrl } from '../services/url.utils';\n\nexport interface BaseMediaProps {\n url: string;\n width?: number;\n height?: number;\n}\n\nexport function getYoutubeIdFromURL(url: string): string | undefined {\n // Replace https://youtube.com/shorts/VIDEO_ID\n if (url.includes('youtube.com/shorts/')) {\n const id = url.split('youtube.com/shorts/')[1];\n return id;\n }\n\n // Replace https://www.youtube.com/watch?v=VIDEO_ID with VIDEO_ID youtu.be/VIDEO_ID\n if (url.includes('youtube.com') && url.includes('watch') && url.includes('v=')) {\n const arr = url.split('?');\n const query = arr[1];\n const pairs = query.split('&').map((pair) => pair.split('='));\n const vParam = pairs.find((pair) => pair[0] === 'v');\n if (vParam) {\n return vParam[1];\n }\n }\n\n // Check if the url is a youtube url\n if (!isValidYoutubeUrl(url)) {\n return undefined;\n }\n\n if (url.includes('?')) {\n const arr = url.split('?');\n arr.pop();\n\n url = arr[0];\n }\n const arr = url.split(/(vi\\/|v%3D|v=|\\/v\\/|youtu\\.be\\/|\\/embed\\/|\\/shorts\\/)/);\n const youtubeId = undefined !== arr[2] ? arr[2].split(/[^\\w-]/i)[0] : arr[0];\n\n return youtubeId;\n}\n","import React from 'react';\nimport { ImageSourcePropType } from 'react-native';\nimport Youtube from '../components/containers/medias/Youtube';\nimport { BaseMediaProps, getYoutubeIdFromURL } from '../models/Media';\nimport { youtube } from '../services/assets';\n\nexport interface MediaInfoProps {\n imagePreview: (url: string) => string;\n isMedia: (url: string) => boolean;\n component: (props: BaseMediaProps) => JSX.Element;\n logo?: ImageSourcePropType;\n}\n\nexport const ExtractUri = (media: string) => SplitMedia(media)[1];\n\nexport const MediaToPictureSource = (media: string) => {\n const [mediaName, url] = SplitMedia(media);\n\n return { uri: MediasInfos[mediaName].imagePreview(url) };\n};\n\nexport const MediaComponent = (key: string, url: string, width?: number, height?: number) => {\n const Component = MediasInfos[key].component;\n\n return ;\n};\n\nexport const SplitMedia = (media: string) => {\n const idx = media.indexOf(':');\n const mediaName = media.substring(0, idx);\n const url = media.substring(idx + 1);\n\n return [mediaName, url];\n};\n\nexport const GetMediaInfo = (url: string): MediaInfoProps | undefined => {\n for (var mediaInfoName of Object.keys(MediasInfos)) {\n const mediaInfo = MediasInfos[mediaInfoName];\n if (mediaInfo.isMedia(url)) return mediaInfo;\n }\n return undefined;\n};\n\nexport const MediasInfos: { [key: string]: MediaInfoProps } = {\n Youtube: {\n imagePreview: (url) => `http://img.youtube.com/vi/${getYoutubeIdFromURL(url)}/0.jpg`,\n isMedia: (url) => getYoutubeIdFromURL(url) !== '' && getYoutubeIdFromURL(url) !== undefined,\n component: Youtube,\n logo: youtube,\n },\n};\n","import React from 'react';\nimport { View } from 'react-native';\nimport { BaseMediaProps, getYoutubeIdFromURL } from '../../../models/Media';\n\nexport interface YoutubeProps extends BaseMediaProps {}\n\nconst Youtube = ({ url, width, height }: YoutubeProps) => (\n \n \n \n);\n\nexport default Youtube;\n","import {\n activityImage,\n carPoolImage,\n documentImage,\n eventImage,\n lostPropertyImage,\n mutualAidImage,\n newsImage,\n sellImage,\n suggestionImage,\n surveyImage,\n} from '../assets';\nimport { apiUrlBase } from '../../../configuration';\nimport { ContributionType } from '../../types';\nimport { MediaToPictureSource } from '../../utils/Medias';\nconst defaultProfilePic = require('../../../assets/avDefault.png');\n\nexport function getPictureURI(pictureId: number | string) {\n if (pictureId == null || pictureId == undefined || Number(pictureId) < 0) return defaultProfilePic;\n return { uri: apiUrlBase + 'Fichiers/image/' + pictureId };\n}\n\nexport function getPictureSource(pictureId?: number | string | null) {\n if (pictureId == null || pictureId == undefined || Number(pictureId) < 0) return defaultProfilePic;\n return { uri: apiUrlBase + 'Fichiers/image/' + pictureId };\n}\nexport function getDocumentURI(id: string | number) {\n return apiUrlBase + 'Fichiers/image/' + id;\n}\n\nexport function _getPrefixByContributionType(contributionType: ContributionType) {\n let urlPrefixType = '';\n\n switch (contributionType) {\n case ContributionType.SELL:\n urlPrefixType = 'Ventes';\n break;\n case ContributionType.ACTIVITY:\n urlPrefixType = 'Hobbies';\n break;\n case ContributionType.MUTUAL_AID:\n urlPrefixType = 'Services';\n break;\n case ContributionType.CARPOOL:\n urlPrefixType = 'Covoiturages';\n break;\n case ContributionType.EVENT:\n urlPrefixType = 'Evenements';\n break;\n case ContributionType.FORMATION:\n urlPrefixType = 'Formations';\n break;\n case ContributionType.LOST_PROPERTY:\n urlPrefixType = 'Objets';\n break;\n case ContributionType.SURVEY:\n urlPrefixType = 'Sondages';\n break;\n case ContributionType.SUGGESTION:\n urlPrefixType = 'Idees';\n break;\n case ContributionType.COMPANY_NEWS:\n urlPrefixType = 'CompanyNews';\n break;\n case ContributionType.DOCUMENT:\n urlPrefixType = 'Kiosques';\n break;\n default:\n throw Error('Contribution type is not set');\n }\n return urlPrefixType;\n}\n\nexport function _postPrefixByContributionType(contributionType: ContributionType) {\n let urlPrefixType = '';\n switch (contributionType) {\n case ContributionType.SELL:\n urlPrefixType = 'vente';\n break;\n case ContributionType.ACTIVITY:\n urlPrefixType = 'hobbies';\n break;\n case ContributionType.MUTUAL_AID:\n urlPrefixType = 'service';\n break;\n case ContributionType.CARPOOL:\n urlPrefixType = 'covoiturage';\n break;\n case ContributionType.EVENT:\n urlPrefixType = 'event';\n break;\n case ContributionType.FORMATION:\n urlPrefixType = 'training';\n break;\n case ContributionType.LOST_PROPERTY:\n urlPrefixType = 'objet';\n break;\n case ContributionType.SURVEY:\n urlPrefixType = 'sondage';\n break;\n default:\n throw Error('Contribution type is not set');\n }\n return urlPrefixType;\n}\n\nexport function getContributionImageSource(\n id: string | number | undefined,\n contributionType: ContributionType,\n typedData?: any\n) {\n if (id === null || id === undefined) {\n switch (contributionType) {\n case ContributionType.SELL:\n return sellImage;\n case ContributionType.ACTIVITY:\n return activityImage;\n case ContributionType.MUTUAL_AID:\n return mutualAidImage;\n case ContributionType.CARPOOL:\n return carPoolImage;\n case ContributionType.EVENT:\n return eventImage;\n case ContributionType.FORMATION:\n return eventImage;\n case ContributionType.LOST_PROPERTY:\n return lostPropertyImage;\n case ContributionType.SURVEY:\n return surveyImage;\n case ContributionType.SUGGESTION:\n return suggestionImage;\n case ContributionType.COMPANY_NEWS:\n if (!!typedData?.media) return MediaToPictureSource(typedData.media);\n return newsImage;\n case ContributionType.DOCUMENT:\n return documentImage;\n }\n return newsImage;\n }\n return getPictureURI(id);\n}\n\nexport function isAnonymous(item: any, contributionType: ContributionType) {\n if (contributionType === ContributionType.SUGGESTION) {\n return item.anonyme;\n }\n\n return false;\n}\n","import { Image, ImageStyle, StyleProp, View, ViewStyle } from 'react-native';\nimport { getPictureSource } from '../../services/api/helper.api';\nimport React from 'react';\n\nexport function ProfilePicture(props: {\n borderStyle?: ViewStyle;\n borderColor?: string;\n pictureId?: number | string | null;\n style?: StyleProp;\n size: 'small' | 'regular' | 'small-medium' | 'medium' | 'big';\n}) {\n let size = 24;\n switch (props.size) {\n case 'small':\n size = 24;\n break;\n case 'regular':\n size = 78;\n break;\n case 'small-medium':\n size = 50;\n break;\n case 'medium':\n size = 60;\n break;\n case 'big':\n size = 90;\n break;\n }\n return (\n \n \n
\n );\n}\n","import React, { ReactNode } from 'react';\nimport { Modal, StyleProp, ViewStyle } from 'react-native';\nimport { Overlay } from '@rneui/base';\nimport { BACKGROUND_COLOR } from '../../styles/appColor';\n\nexport function AppModalOverlay(props: {\n onBackdropPress?(): void;\n isVisible: boolean;\n children: ReactNode;\n overlayStyle?: StyleProp;\n}) {\n return (\n \n {props.children}\n \n );\n}\n\nconst styles = {\n defaultOverlay: {\n backgroundColor: BACKGROUND_COLOR,\n },\n};\n","import React, { useState } from 'react';\nimport AppText, { Mode } from '../atomic/AppText';\nimport { t } from '../../services/translations';\nimport { StyleProp, TouchableOpacity, View, ViewStyle } from 'react-native';\nimport { AppButton } from '../atomic/AppButton';\nimport { AppModalOverlay } from '../atomic/AppModalOverlay';\n\nexport function TwoActionsButtonPopup(props: {\n initialButtonTitle: string;\n title: string;\n button1Title: string;\n button2Title: string;\n onPressButton1;\n onPressButton2;\n}) {\n const [visible, setVisible] = useState(false);\n\n return (\n \n setVisible(true)} />\n setVisible(false)}>\n {props.title}\n \n {\n props.onPressButton1();\n setVisible(false);\n }}\n style={{ width: 80, marginRight: 10 }}\n />\n {\n props.onPressButton2();\n setVisible(false);\n }}\n style={{ width: 80 }}\n />\n \n \n \n );\n}\nexport function TwoActionsGenericPopup(props: {\n children;\n title: string;\n description?: string;\n button1Title: string;\n button2Title: string;\n onPressButton1;\n onPressButton2;\n style?: StyleProp;\n}) {\n const [visible, setVisible] = useState(false);\n\n return (\n \n setVisible(true)}>\n {props.children}\n \n setVisible(false)}>\n {props.title}\n {props.description !== undefined && (\n \n {props.description}\n \n )}\n \n {\n props.onPressButton1();\n setVisible(false);\n }}\n style={{ width: 80, marginRight: 10 }}\n textStyle={{ fontSize: 10 }}\n />\n {\n props.onPressButton2();\n setVisible(false);\n }}\n style={{ width: 80 }}\n textStyle={{ fontSize: 10 }}\n />\n \n \n \n );\n}\n","import React, { ReactNode } from 'react';\nimport AppText, { Mode } from '../atomic/AppText';\n\nexport function Header2(props: { children: ReactNode }) {\n return {props.children};\n}\n","import { View, Dimensions, StyleProp, ViewStyle } from 'react-native';\nimport React, { ReactNode } from 'react';\nimport { isMobile } from '../../services/utils';\n\nexport interface ResponsiveViewProps {\n style?: StyleProp;\n bigScreenStyle?: StyleProp;\n children: ReactNode;\n breakpoint?: any;\n}\n\nexport function ResponsiveView(props: ResponsiveViewProps) {\n const windowWidth = Dimensions.get('window').width;\n\n return (\n \n {props.children}\n \n );\n}\n","import React, { ReactNode } from 'react';\nimport { ResponsiveView } from './ResponsiveView';\n\nexport function ResponsiveRow(props: { children: ReactNode; breakpoint?: any }) {\n return (\n \n {props.children}\n \n );\n}\n","import React, { ReactNode } from 'react';\nimport { StyleProp, ViewStyle } from 'react-native';\nimport { ResponsiveView } from './ResponsiveView';\n\nexport interface ResponsiveColumnProps {\n children?: ReactNode;\n first?: boolean;\n bigScreenStyle?: StyleProp;\n}\n\nexport function ResponsiveColumn(props: ResponsiveColumnProps) {\n return (\n \n {props.children}\n \n );\n}\n","import { Dimensions, ScrollView, View } from 'react-native';\nimport React, { useEffect, useState } from 'react';\nimport { TextFormField } from '../../components/atomic/FormField';\nimport AppText, { Mode } from '../../components/atomic/AppText';\nimport { t } from '../../services/translations';\nimport { useDispatch } from 'react-redux';\nimport { setLoading } from '../../store/action';\nimport { Image } from '@rneui/base';\nimport { AppScreen } from '../../components/containers/AppScreen';\nimport { AppButton, Type } from '../../components/atomic/AppButton';\nimport {\n CompanyGeoSiteReduced,\n CompanyGroupReduced,\n CompanyServiceReduced,\n getCompanyGeoSites,\n getCompanyServices,\n getLoggedUserCompanyGroups,\n} from '../../services/api/company.api';\nimport { alertInfo, isMobile } from '../../services/utils';\nimport { Space2 } from '../../styles/spaces';\nimport { BackButton } from '../../components/atomic/BackButton';\nimport { ProfilePicture } from '../../components/atomic/ProfilePicture';\nimport { genericBackgroundHeader, headerBackgroundPopup } from '../../services/assets';\nimport { logout } from '../../services/api/login';\nimport { TwoActionsGenericPopup } from '../../components/containers/TwoActionsButtonPopup';\nimport { Header2 } from '../../components/containers/Header2';\nimport { ResponsiveRow } from '../../components/containers/ResponsiveRow';\nimport { ResponsiveColumn } from '../../components/containers/ResponsiveColumn';\nimport { LinearGradient } from 'expo-linear-gradient';\nimport { PRIMARY_COLOR, SECONDARY_COLOR } from '../../styles/appColor';\nimport { ScreenNames } from '../../ScreenNames';\nimport { removeAccount } from '../../services/api/user.api';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\n\nexport function ProfileScreen(props: { navigation }) {\n const [companyServices, setCompanyServices] = useState([]);\n const [companyGeoSites, setCompanyGeoSites] = useState([]);\n const [companyGroups, setCompanyGroups] = useState([]);\n\n const dispatch = useDispatch();\n const user = useLoggedUser();\n const navigation = useNavigation>();\n\n const goBack = () => {\n if (navigation.canGoBack()) {\n navigation.goBack();\n } else {\n navigation.navigate(ScreenNames.LoggedInDrawerNavigation, {\n screen: ScreenNames.LoggedInHome,\n });\n }\n };\n\n useEffect(() => {\n dispatch(setLoading(true));\n\n const companyServicePromise = getCompanyServices(user.entrepriseId, user.token!).then(setCompanyServices);\n const companyGeoSitesPromise = getCompanyGeoSites(user.entrepriseId, user.token!).then(setCompanyGeoSites);\n const companyGroupsPromise = getLoggedUserCompanyGroups(user.token!).then(setCompanyGroups);\n const promise = Promise.all([companyServicePromise, companyGeoSitesPromise, companyGroupsPromise]);\n promise.finally(() => dispatch(setLoading(false)));\n }, []);\n\n let service = companyServices.filter((v) => v.id === user.entrepriseServiceId).pop()?.libelle;\n let geoSite = companyGeoSites.filter((v) => v.id === user.entrepriseSiteGeoId).pop()?.geoSite;\n let group = companyGroups\n .filter((v) => user.entrepriseGroups.find((e) => e.entrepriseGroupId === v.id) !== undefined)\n .reverse()\n .pop()?.label;\n\n return (\n \n \n \n {isMobile() ? (\n <>\n \n\n \n \n ) : (\n <>\n \n \n \n \n \n )}\n \n \n \n {user.prenom} {user.nom}\n \n props.navigation.navigate(ScreenNames.EditMyProfile)}\n />\n {t('personal_information')}\n \n \n {}} />\n \n \n {}} />\n \n \n \n {t('professional_information')}\n\n \n \n {}} />\n \n \n \n\n \n \n {}} />\n \n \n {}} />\n \n \n {}} />\n \n \n {\n removeAccount(user, user.token as string).then(() => {\n return logout(dispatch).then(() => {\n alertInfo(t('account_has_been_removed'));\n });\n });\n }}\n onPressButton2={() => {}}\n >\n \n {t('remove_my_account')}\n \n \n \n \n \n \n );\n}\n","import React from 'react';\nimport { StyleProp, TouchableOpacity, View, ViewStyle } from 'react-native';\nimport { Icon, Image } from '@rneui/base';\nimport AppText from './AppText';\nimport { alertInfo, combineNames, getReadableDate, isMobile } from '../../services/utils';\nimport { ProfilePicture } from './ProfilePicture';\nimport { setDirectoryListNeedsRefresh, setLoading } from '../../store/action';\nimport { t } from '../../services/translations';\nimport { PRIMARY_COLOR } from '../../styles/appColor';\nimport { useDispatch } from 'react-redux';\nimport { TwoActionsGenericPopup } from '../containers/TwoActionsButtonPopup';\nimport { removeUser } from '../../services/api/user.api';\nimport { FONT_FAMILY_DEFAULT, globalStyle } from '../../styles/globalStyle';\nimport { User } from '../../entities/User';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport { ScreenNames } from '../../ScreenNames';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport SimpleLineIcons from 'react-native-vector-icons/SimpleLineIcons';\nimport { useMutation } from '@tanstack/react-query';\nimport { resetPasswordSendCode } from '../../services/api/login';\n\nconst logoFile = require('../../../assets/adaptive-icon.png');\n\nexport function ProfileRow(props: {\n user: User;\n onPress?: () => void;\n allowEdit?: boolean;\n simple?: boolean;\n small?: boolean;\n showAdminTag?: boolean;\n showRecoveryEmail?: boolean;\n style?: StyleProp;\n}) {\n const dispatch = useDispatch();\n const navigation = useNavigation>();\n const userSaved = useLoggedUser();\n const _allowEdit = props.allowEdit === undefined ? false : props.allowEdit;\n\n const { mutateAsync: sendRecoveryEmail } = useMutation({\n mutationFn: async (email: string) => {\n await resetPasswordSendCode(email);\n },\n onSuccess: () => {\n alertInfo(t('recovery_email_sent'));\n },\n onError: () => {\n alertInfo(t('unknown_error'));\n },\n });\n\n const content = (\n \n {isMobile() && (\n \n {/*{props.allowEdit && !props.simple &&*/}\n {props.showAdminTag && props.user.lovIdType == 13 && (\n \n \n \n Responsable\n \n \n )}\n {/*{props.allowEdit && !props.simple && */}\n {props.showAdminTag && props.user.lovIdType != 13 && props.user.userSubAdmins?.length > 0 && (\n \n \n \n Administrateur\n \n \n )}\n \n \n {props.allowEdit &&\n !props.simple &&\n getReadableDate(props.user.dateInscription, undefined, undefined, false)}\n {/*{!(props.allowEdit && !props.simple) && props.showAdminTag && props.user.lovIdType == 13 && */}\n {/* */}\n {/* Responsable*/}\n {/*}*/}\n {/*{!(props.allowEdit && !props.simple) && props.showAdminTag && props.user.lovIdType != 13 && props.user.userSubAdmins.length > 0 && */}\n {/* */}\n {/* Administrateur*/}\n {/*}*/}\n \n \n \n )}\n \n \n \n \n \n {combineNames(props.user)}\n \n {!props.simple && (\n <>\n {props.user.fonction}\n {props.user.hideEmail ? '' : props.user.aspNetUsers.email}\n \n )}\n \n \n {!isMobile() && (\n \n \n \n \n {props.allowEdit && !props.simple\n ? getReadableDate(props.user.dateInscription, undefined, undefined, false)\n : '\\n'}\n \n \n {props.showAdminTag && props.user.lovIdType == 13 && (\n \n \n \n Responsable\n \n \n )}\n {props.showAdminTag && props.user.lovIdType != 13 && props.user.userSubAdmins?.length > 0 && (\n \n \n \n Administrateur\n \n \n )}\n \n \n )}\n {_allowEdit ? (\n <>\n {\n navigation.navigate(ScreenNames.EditUser, {\n id: props.user.id,\n });\n }}\n >\n \n \n {props.showRecoveryEmail && (\n {\n sendRecoveryEmail(props.user.aspNetUsers.email);\n }}\n onPressButton2={() => {}}\n >\n \n \n )}\n {\n dispatch(setLoading(true));\n removeUser(userSaved, props.user.aspNetUsers)\n .then(() => alertInfo(t('removed_ok')))\n .finally(() => {\n dispatch(setDirectoryListNeedsRefresh(true));\n dispatch(setLoading(false));\n });\n }}\n onPressButton2={() => {}}\n >\n \n \n \n ) : null}\n \n \n );\n\n return props.onPress ? (\n \n \n {content}\n \n \n ) : (\n {content}\n );\n}\n","import React, { ReactNode } from 'react';\nimport { StyleSheet, TouchableOpacity, View, ViewStyle } from 'react-native';\nimport { Icon } from '@rneui/base';\nimport { LIGHT_GRAY, PRIMARY_COLOR } from '../../styles/appColor';\nimport { FONT_FAMILY_DEFAULT } from '../../styles/globalStyle';\nimport AppText from './AppText';\n\nexport type DataTableHeaderProps = {\n children: ReactNode;\n sortKey?: keyof T;\n sortBy?: null | { key: string; order: 'asc' | 'desc' };\n setSortBy?: (value: null | { key: keyof T; order: 'asc' | 'desc' }) => void;\n containerStyle?: ViewStyle;\n style?: ViewStyle;\n};\n\nexport function DataTableHeader({\n children,\n sortKey,\n sortBy,\n setSortBy,\n style,\n containerStyle,\n}: DataTableHeaderProps) {\n const content = (\n \n {setSortBy && sortKey && (\n \n )}\n {children}\n \n );\n\n return setSortBy && sortKey ? (\n {\n if (!sortBy || sortBy.key !== sortKey) {\n setSortBy({ key: sortKey, order: 'desc' });\n } else if (sortBy.order === 'desc') {\n setSortBy({ key: sortKey, order: 'asc' });\n } else {\n setSortBy(null);\n }\n }}\n >\n {content}\n \n ) : (\n {content}\n );\n}\n\nconst styles = StyleSheet.create({\n text: {\n fontSize: 12,\n marginBottom: 11,\n color: PRIMARY_COLOR,\n },\n sorted: {\n fontFamily: FONT_FAMILY_DEFAULT.bold,\n },\n sortIcon: {\n paddingRight: 10,\n },\n});\n","import {\n KeyboardType,\n NativeSyntheticEvent,\n Platform,\n StyleProp,\n TextInput as ReactTextInput,\n TextInputContentSizeChangeEventData,\n View,\n ViewStyle,\n} from 'react-native';\nimport React from 'react';\nimport { Icon } from '@rneui/base';\nimport { PRIMARY_COLOR } from '../../styles/appColor';\nimport { FONT_FAMILY_DEFAULT } from '../../styles/globalStyle';\n\nexport type TextInputProps = {\n style?: StyleProp;\n inputStyle?: StyleProp;\n displayOnly?: boolean;\n onContentSizeChange?: ((e: NativeSyntheticEvent) => void) | undefined;\n onSubmitEditing?: () => void;\n onChangeText: (text: string) => void;\n defaultValue?: string;\n value?: string;\n keyboardType?: KeyboardType;\n secureTextEntry?: boolean;\n leftIcon?: string;\n placeholder?: string;\n textColor?: string;\n borderColor?: string;\n onPressIcon?: () => void;\n multiline?: boolean;\n numberOfLines?: number;\n};\n\nexport function TextInput({\n style,\n inputStyle,\n displayOnly,\n onContentSizeChange,\n onSubmitEditing,\n onChangeText,\n defaultValue,\n value,\n keyboardType,\n secureTextEntry,\n leftIcon,\n placeholder,\n textColor,\n borderColor,\n onPressIcon,\n multiline,\n numberOfLines,\n}: TextInputProps) {\n return (\n \n {leftIcon && }\n \n
\n );\n}\n","import React from 'react';\nimport { t } from '../../services/translations';\nimport { TextInput, TextInputProps } from './TextInput';\n\nexport function SearchTextInput({ leftIcon, placeholder, ...props }: TextInputProps) {\n return ;\n}\n","import React, { createRef, useState } from 'react';\nimport { FlatList, ListRenderItem, TouchableOpacity, View } from 'react-native';\nimport { Icon } from '@rneui/base';\nimport { PRIMARY_COLOR } from '../../styles/appColor';\n\nexport interface HorizontalFlatListProps {\n data: T[];\n renderItem: ListRenderItem;\n keyExtractor: (item: T) => string;\n}\n\nexport default function HorizontalFlatList({ data, renderItem, keyExtractor }: HorizontalFlatListProps) {\n const ref = createRef>();\n const [currentX, setCurrentX] = useState(0);\n const [layoutX, setLayoutX] = useState(0);\n const [contentWidth, setContentWidth] = useState(undefined);\n\n const onLeft = () => {\n ref.current?.scrollToOffset({ animated: true, offset: currentX - layoutX });\n };\n\n const onRight = () => {\n ref.current?.scrollToOffset({ animated: true, offset: currentX + layoutX });\n };\n\n return (\n \n \n ref={ref}\n data={data}\n renderItem={renderItem}\n keyExtractor={keyExtractor}\n horizontal\n showsHorizontalScrollIndicator={false}\n onContentSizeChange={setContentWidth}\n onLayout={(event) => setLayoutX(event.nativeEvent.layout.width)}\n onScroll={(event) => setCurrentX(event.nativeEvent.contentOffset.x)}\n />\n {!!contentWidth && (\n <>\n {currentX > 0 && (\n \n \n \n )}\n {currentX + layoutX < contentWidth && (\n \n \n \n )}\n \n )}\n \n );\n}\n","import { ContributionType, IntToContributionType } from '../../types';\nimport { t } from '../translations';\n\nexport function getDataContentByType(data: any, contributionType: ContributionType) {\n switch (contributionType) {\n case ContributionType.SELL:\n return data?.vente;\n case ContributionType.ACTIVITY:\n return data?.hobbie;\n case ContributionType.MUTUAL_AID:\n case ContributionType.CARPOOL:\n case ContributionType.EVENT:\n case ContributionType.FORMATION:\n case ContributionType.LOST_PROPERTY:\n case ContributionType.SURVEY:\n case ContributionType.SUGGESTION:\n case ContributionType.COMPANY_NEWS:\n case ContributionType.DOCUMENT:\n return data;\n }\n}\n\nexport function getTitleByType(typedData: any, contributionType: ContributionType) {\n switch (contributionType) {\n case ContributionType.ACTIVITY:\n if (typedData.activite === undefined) {\n return typedData.contributionHobbie[0].activite;\n }\n return typedData.activite;\n case ContributionType.MUTUAL_AID:\n if (typedData.theme === undefined) {\n return typedData.contributionService[0].theme;\n }\n return typedData.theme;\n case ContributionType.CARPOOL:\n if (typedData.libelleDepart === undefined)\n return (\n typedData.contributionCovoiturage[0].libelleDepart + '-' + typedData.contributionCovoiturage[0].libelleArrivee\n );\n else return typedData.libelleDepart + '-' + typedData.libelleArrivee;\n case ContributionType.LOST_PROPERTY:\n if (typedData.description === undefined) {\n return typedData.contributionObjet[0].description;\n }\n return typedData.description;\n case ContributionType.EVENT:\n if (typedData.titre === undefined) {\n return typedData.contributionEvenement[0].titre;\n }\n return typedData.titre;\n case ContributionType.FORMATION:\n if (typedData.titre === undefined) {\n return typedData.contributionEvenement[0].titre;\n }\n return typedData.titre;\n case ContributionType.SELL:\n if (typedData.titre === undefined) {\n return typedData.contributionVente[0].titre;\n }\n return typedData.titre;\n case ContributionType.DOCUMENT:\n if (typedData.title === undefined) {\n return typedData.contributionKiosque[0].title;\n }\n return typedData.titre;\n case ContributionType.SURVEY:\n if (typedData.titre === undefined) {\n return typedData.cSondage[0].titre;\n }\n return typedData.titre;\n case ContributionType.COMPANY_NEWS:\n if (typedData.titre === undefined) {\n return t('company_news');\n }\n\n return typedData.titre;\n case ContributionType.SUGGESTION:\n return typedData.titre;\n default:\n return '';\n }\n}\n\nexport function getDescriptionByType(typedData: any, contributionType: ContributionType) {\n switch (contributionType) {\n case ContributionType.ACTIVITY:\n if (typedData.activite === undefined) {\n return typedData.contributionHobbie[0].description;\n }\n return typedData.description;\n case ContributionType.MUTUAL_AID:\n if (typedData.theme === undefined) {\n return typedData.contributionService[0].description;\n }\n return typedData.description;\n case ContributionType.CARPOOL:\n if (typedData.libelleDepart === undefined) return typedData.contributionCovoiturage[0].description;\n else return typedData.description;\n case ContributionType.LOST_PROPERTY:\n if (typedData.description === undefined) {\n return typedData.contributionObjet[0].description;\n }\n return typedData.description;\n case ContributionType.EVENT:\n if (typedData.titre === undefined) {\n return typedData.contributionEvenement[0].description;\n }\n return typedData.description;\n case ContributionType.FORMATION:\n if (typedData.titre === undefined) {\n return typedData.contributionEvenement[0].description;\n }\n return typedData.description;\n case ContributionType.SELL:\n if (typedData.titre === undefined) {\n return typedData.contributionVente[0].description;\n }\n return typedData.description;\n case ContributionType.DOCUMENT:\n if (typedData.description === undefined) {\n return typedData.contributionKiosque[0].description;\n }\n return typedData.description;\n case ContributionType.SURVEY:\n if (typedData.titre === undefined) {\n return typedData.cSondage[0].texte;\n }\n return typedData.texte;\n case ContributionType.COMPANY_NEWS:\n if (typedData.texte === undefined) {\n console.error('Failed to retrieve company news');\n console.error(typedData);\n return t('company_news');\n }\n return typedData.texte;\n case ContributionType.SUGGESTION:\n return typedData.texte;\n default:\n return '';\n }\n}\n\nexport function resolveContributionType(item: any) {\n try {\n if (item.contributionTypeId != null) {\n let typeFromId = IntToContributionType(item.contributionTypeId);\n if (typeFromId !== ContributionType.UNKNOWN) {\n return typeFromId;\n }\n }\n\n if (item.contributionVente != null && item.contributionVente.length !== 0) {\n return ContributionType.SELL;\n }\n\n if (item.contributionCovoiturage != null && item.contributionCovoiturage.length !== 0) {\n return ContributionType.CARPOOL;\n }\n\n if (\n item.contributionEvenement != null &&\n item.contributionEvenement.length !== 0 &&\n item.contributionEvenement[0].type === 0\n // && [null, ContributionEvenementType.EVENT].includes(item.contributionEvenement[0].type)\n ) {\n return ContributionType.EVENT;\n }\n\n if (\n item.contributionEvenement != null &&\n item.contributionEvenement.length !== 0 &&\n item.contributionEvenement[0].type === 1\n ) {\n return ContributionType.FORMATION;\n }\n\n if (item.contributionHobbie != null && item.contributionHobbie.length !== 0) {\n return ContributionType.ACTIVITY;\n }\n if (item.contributionObjet != null && item.contributionObjet.length !== 0) {\n return ContributionType.LOST_PROPERTY;\n }\n if (item.contributionService != null && item.contributionService.length !== 0) {\n return ContributionType.MUTUAL_AID;\n }\n if (item.cSondage != null && item.cSondage.length !== 0) {\n return ContributionType.SURVEY;\n }\n if (item.contributionKiosque != null && item.contributionKiosque.length !== 0) {\n return ContributionType.DOCUMENT;\n }\n\n return ContributionType.UNKNOWN;\n } catch (e) {\n console.error(e);\n return ContributionType.UNKNOWN;\n }\n}\n\nexport function getIdFromItem(item, contributionType: ContributionType) {\n let base = item;\n switch (contributionType) {\n case ContributionType.ACTIVITY:\n if (item.contributionHobbie?.length > 0) {\n base = item.contributionHobbie[0];\n }\n break;\n case ContributionType.MUTUAL_AID:\n if (item.contributionService?.length > 0) {\n base = item.contributionService[0];\n }\n break;\n case ContributionType.CARPOOL:\n if (item.contributionCovoiturage?.length > 0) {\n base = item.contributionCovoiturage[0];\n }\n break;\n case ContributionType.LOST_PROPERTY:\n if (item.contributionObjet?.length > 0) {\n base = item.contributionObjet[0];\n }\n break;\n case ContributionType.EVENT:\n if (item.contributionEvenement?.length > 0) {\n base = item.contributionEvenement[0];\n }\n break;\n case ContributionType.FORMATION:\n if (item.contributionEvenement?.length > 0) {\n base = item.contributionEvenement[0];\n }\n break;\n case ContributionType.SELL:\n if (item.contributionVente?.length > 0) {\n base = item.contributionVente[0];\n }\n break;\n case ContributionType.SURVEY:\n if (item.cSondage?.length > 0) {\n base = item.cSondage[0];\n }\n break;\n case ContributionType.COMPANY_NEWS:\n default:\n break;\n }\n return base.id;\n}\n\n/**\n * The structure of the response of the api changes depending on the endpoint.\n * This function returns a formatted type for requests to retrieve multiple contribution types.\n * @param data\n * @param contributionType The type of the contribution. Generally, resolveContributionType is called before.\n */\nexport function extractContributionFromResponse(data: any, contributionType: ContributionType) {\n switch (contributionType) {\n case ContributionType.EVENT:\n return data.contributionEvenement[0];\n case ContributionType.FORMATION:\n return data.contributionEvenement[0];\n case ContributionType.SELL:\n return data.contributionVente[0];\n case ContributionType.ACTIVITY:\n return data.contributionHobbie[0];\n case ContributionType.MUTUAL_AID:\n return data.contributionService[0];\n case ContributionType.CARPOOL:\n return data.contributionCovoiturage[0];\n case ContributionType.LOST_PROPERTY:\n return data.contributionObjet[0];\n case ContributionType.SURVEY:\n return data.cSondage[0];\n case ContributionType.DOCUMENT:\n return data.contributionKiosque[0];\n case ContributionType.SUGGESTION:\n case ContributionType.COMPANY_NEWS:\n case ContributionType.ALL:\n case ContributionType.UNKNOWN:\n default:\n return data;\n }\n}\n\nexport function contributionTypeToText(_contributionType: ContributionType) {\n switch (_contributionType) {\n case ContributionType.SELL:\n return t('contribution_sell');\n case ContributionType.ACTIVITY:\n return t('contribution_activity');\n case ContributionType.MUTUAL_AID:\n return t('contribution_mutual_aid');\n case ContributionType.CARPOOL:\n return t('contribution_carpool');\n case ContributionType.EVENT:\n return t('contribution_event');\n case ContributionType.FORMATION:\n return t('contribution_training');\n case ContributionType.LOST_PROPERTY:\n return t('contribution_lost_property');\n case ContributionType.SURVEY:\n return t('contribution_survey_label');\n case ContributionType.SUGGESTION:\n return t('contribution_suggestion');\n case ContributionType.COMPANY_NEWS:\n return t('contribution_company_news');\n case ContributionType.DOCUMENT:\n return t('contribution_document');\n case ContributionType.UNKNOWN:\n return t('contribution_unknown');\n case ContributionType.ALL:\n default:\n return t('contribution_all');\n }\n}\n\nexport const contributionColors = {\n [ContributionType.SELL]: '#e1b5f5',\n [ContributionType.ACTIVITY]: '#515c59',\n [ContributionType.MUTUAL_AID]: '#b0ca41',\n [ContributionType.CARPOOL]: '#47a0a7',\n [ContributionType.EVENT]: '#e0d03c',\n [ContributionType.FORMATION]: '#e04c3c',\n [ContributionType.LOST_PROPERTY]: '#170386',\n [ContributionType.SURVEY]: '#55ae48',\n [ContributionType.UNKNOWN]: '#4F5ADF',\n [ContributionType.COMPANY_NEWS]: '#F49550',\n [ContributionType.DOCUMENT]: '#6ef450',\n [ContributionType.SUGGESTION]: '#4F5ADF',\n [ContributionType.ALL]: '#4F5ADF',\n};\n\nexport function contributionTypeToColor(_contributionType: ContributionType): string {\n return (contributionColors as any)[_contributionType] || '#4F5ADF';\n}\n","import React from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { useQuery } from '@tanstack/react-query';\nimport { GetUsersFilters } from '../../entities/GetUsersFilters';\nimport { SearchTextInput } from '../atomic/SearchTextInput';\nimport HorizontalFlatList from '../containers/HorizontalList';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport { getCompanyGeoSites, getCompanyServices } from '../../services/api/company.api';\nimport { Chip } from '../atomic/Chip';\nimport { contributionColors } from '../../services/api/contributions';\n\nexport type UserFiltersProps = {\n right?: React.ReactNode;\n filters: GetUsersFilters;\n onChange(filters: GetUsersFilters): void;\n};\n\nconst colorList = Object.values(contributionColors);\n\nexport default function UserFilters({ right, filters, onChange }: UserFiltersProps) {\n const loggedUser = useLoggedUser();\n const { data: companyServices } = useQuery(['company-service', loggedUser.entrepriseId], () =>\n getCompanyServices(loggedUser.entrepriseId, loggedUser.token)\n );\n const { data: companySiteGeos } = useQuery(['company-site-geos', loggedUser.entrepriseId], () =>\n getCompanyGeoSites(loggedUser.entrepriseId, loggedUser.token)\n );\n\n return (\n <>\n \n {\n onChange({ ...filters, search: text });\n }}\n defaultValue={filters.search || ''}\n />\n {right}\n \n item.id.toString()}\n renderItem={({ item, index }) => (\n {\n if (filters.services?.includes(item.id)) {\n onChange({ ...filters, services: filters.services?.filter((id) => id !== item.id) });\n } else {\n onChange({ ...filters, services: [...(filters.services || []), item.id] });\n }\n }}\n selected={filters.services?.includes(item.id)}\n />\n )}\n />\n item.id.toString()}\n renderItem={({ item, index }) => (\n {\n if (filters.siteGeos?.includes(item.id)) {\n onChange({ ...filters, siteGeos: filters.siteGeos?.filter((id) => id !== item.id) });\n } else {\n onChange({ ...filters, siteGeos: [...(filters.siteGeos || []), item.id] });\n }\n }}\n selected={filters.siteGeos?.includes(item.id)}\n />\n )}\n />\n \n );\n}\n\nconst styles = StyleSheet.create({\n headerContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n searchInput: { flex: 1, height: 60 },\n filterInput: {\n borderBottomWidth: 0,\n borderTopWidth: 0,\n borderLeftWidth: 0,\n borderRightWidth: 0,\n marginTop: 0,\n },\n chip: { marginLeft: 8 },\n});\n","import { Licence } from '../entities/Licence';\nimport { UserSaved } from './storage';\n\nexport const hasLicence = (user: UserSaved, selector: (licence: Licence) => boolean): boolean => {\n if (user?.entreprise?.entreprisesLicences === undefined) return false;\n\n for (const licence of user.entreprise.entreprisesLicences) {\n if (selector(licence.licence)) return true;\n }\n\n return false;\n};\n\nexport const hasLicenceSell = (user: UserSaved) => {\n if (user?.entreprise?.entreprisesLicences === undefined) return false;\n return user.entreprise.entreprisesLicences[0].licence.contributionVente;\n};\n\nexport const hasLicenceActivity = (user: UserSaved) => {\n if (user?.entreprise?.entreprisesLicences === undefined) return false;\n return user.entreprise.entreprisesLicences[0].licence.contributionHobbie;\n};\n\nexport const hasLicenceMutualAid = (user: UserSaved) => {\n if (user?.entreprise?.entreprisesLicences === undefined) return false;\n return user.entreprise.entreprisesLicences[0].licence.contributionService;\n};\n\nexport const hasLicenceCarPool = (user: UserSaved) => {\n if (user?.entreprise?.entreprisesLicences === undefined) return false;\n return user.entreprise.entreprisesLicences[0].licence.contributionCovoiturage;\n};\n\nexport const hasLicenceEvent = (user: UserSaved) => {\n if (user?.entreprise?.entreprisesLicences === undefined) return false;\n return user.entreprise.entreprisesLicences[0].licence.contributionEvenement;\n};\n\nexport const hasLicenceTraining = (user: UserSaved) => {\n if (user?.entreprise?.entreprisesLicences === undefined) return false;\n return user.entreprise.entreprisesLicences[0].licence.contributionFormation;\n};\n\nexport const hasLicenceOrganizationalChart = (user: UserSaved) => {\n if (user?.entreprise?.entreprisesLicences === undefined) return false;\n return user.entreprise.entreprisesLicences[0].licence.contributionOrganigrame;\n};\n\nexport const hasLicenceBooking = (user: UserSaved) => {\n if (user?.entreprise?.entreprisesLicences === undefined) return false;\n return user.entreprise.entreprisesLicences[0].licence.contributionBooking;\n};\n\nexport const hasLicenceLostProperty = (user: UserSaved) => {\n if (user?.entreprise?.entreprisesLicences === undefined) return false;\n return user.entreprise.entreprisesLicences[0].licence.contributionObjet;\n};\n\nexport const hasLicenceSurveyOrSuggestion = (user: UserSaved) => {\n if (user?.entreprise?.entreprisesLicences === undefined) return false;\n return (\n user.entreprise.entreprisesLicences[0].licence.cSondage || user.entreprise.entreprisesLicences[0].licence.cBoiteIdee\n );\n};\n\nexport const hasLicenceSurvey = (user: UserSaved) => {\n if (user?.entreprise?.entreprisesLicences === undefined) return false;\n return user.entreprise.entreprisesLicences[0].licence.cSondage;\n};\n\nexport const hasLicenceSuggestion = (user: UserSaved) => {\n if (user?.entreprise?.entreprisesLicences === undefined) return false;\n return user.entreprise.entreprisesLicences[0].licence.cBoiteIdee;\n};\n\nexport const hasLicenceDocument = (user: UserSaved) => hasLicence(user, (x) => x.contributionKiosque ?? true);\n\nexport const hasLicenceTeams = (user: UserSaved) => hasLicence(user, (x) => x.teams);\n\nexport const hasLicenceSlack = (user: UserSaved) => hasLicence(user, (x) => x.slack);\n\nexport const hasLicenceGoogleChat = (user: UserSaved) => hasLicence(user, (x) => x.googleChat);\n\nexport const hasLicenceMessaging = (user: UserSaved) => hasLicence(user, (x) => x.messagerie);\n\nexport const hasLicenceExternalScreen = (user: UserSaved) => hasLicence(user, (x) => x.externalScreen);\n\nexport const hasLicenceEmergencySms = (user: UserSaved) => hasLicence(user, (x) => x.emergencySms);\n","import React, { useEffect, useMemo, useState } from 'react';\nimport * as Sharing from 'expo-sharing';\nimport * as FileSystem from 'expo-file-system';\nimport { useQuery } from '@tanstack/react-query';\nimport { AppScreen } from '../../components/containers/AppScreen';\nimport { useDispatch, useSelector } from 'react-redux';\nimport * as _ from 'lodash';\nimport { RootState } from '../../services/storage';\nimport { FlatList, RefreshControl, StyleSheet, TouchableOpacity, View } from 'react-native';\nimport { ProfileRow } from '../../components/atomic/ProfileRow';\nimport { t } from '../../services/translations';\nimport { setContributeurListNeedsRefresh, setDirectoryListNeedsRefresh, setLoading } from '../../store/action';\nimport { getCompanyUsers, getUsersExportCsvUrl } from '../../services/api/user.api';\nimport { User } from '../../entities/User';\nimport { DataTableHeader } from '../atomic/DataTableHeader';\nimport { isMobile } from '../../services/utils';\nimport { PRIMARY_COLOR } from '../../styles/appColor';\nimport AppText from '../atomic/AppText';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport { GetUsersFilters } from '../../entities/GetUsersFilters';\nimport UserFilters from './UserFilters';\nimport useIsSsoEmail from '../../hooks/useIsSsoEmail';\n\nexport type UsersListProps = {\n allowEdit?: boolean;\n onPress?: (user: User) => void;\n showAdminTag?: boolean;\n};\n\nexport function UsersList({ allowEdit, onPress, showAdminTag }: UsersListProps) {\n const dispatch = useDispatch();\n const user = useLoggedUser();\n const isSsoEmail = useIsSsoEmail();\n\n const [filters, setFilters] = useState({\n search: '',\n services: [],\n siteGeos: [],\n });\n\n const [sortBy, setSortBy] = useState(null);\n const directoryListNeedsRefresh = useSelector((state) => state.directoryListNeedsRefresh);\n const contributeursListNeedsRefresh = useSelector((state) => state.contributeursListNeedsRefresh);\n\n const {\n data: usersList,\n isLoading,\n isRefetching,\n refetch: refresh,\n } = useQuery(['users', user.entrepriseId], () => getCompanyUsers(user));\n\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n // Refresh after an update\n useEffect(() => {\n if (directoryListNeedsRefresh) {\n refresh();\n dispatch(setDirectoryListNeedsRefresh(false));\n }\n }, [refresh, dispatch, directoryListNeedsRefresh]);\n\n // Refresh after an update\n useEffect(() => {\n if (contributeursListNeedsRefresh) {\n refresh();\n dispatch(setContributeurListNeedsRefresh(false));\n }\n }, [refresh, dispatch, contributeursListNeedsRefresh]);\n\n async function exportToCsv() {\n let fileUrl = getUsersExportCsvUrl(user);\n\n if (!isMobile()) {\n window.open(fileUrl, '_blank');\n } else {\n let uri = FileSystem.documentDirectory + 'export.csv';\n await FileSystem.downloadAsync(fileUrl, uri);\n await Sharing.shareAsync(uri, { dialogTitle: 'CSV' });\n }\n }\n\n const filteredData = useMemo(() => {\n let data = usersList || [];\n\n const search = filters.search || '';\n if (search.length > 0) {\n data = data.filter((u) => {\n return (\n (u.prenom && u.prenom.toLowerCase().includes(search.toLowerCase())) ||\n (u.nom && u.nom.toLowerCase().includes(search.toLowerCase()))\n );\n });\n }\n\n const services = filters.services || [];\n if (services.length > 0) {\n data = data.filter((u) => services.includes(u.entrepriseServiceId));\n }\n\n const siteGeos = filters.siteGeos || [];\n if (siteGeos.length > 0) {\n data = data.filter((u) => siteGeos.includes(u.entrepriseSiteGeoId));\n }\n\n if (sortBy) {\n data = _.sortBy(data, (item) => item[sortBy.key]);\n\n if (sortBy.order === 'asc') {\n data.reverse();\n }\n }\n\n return data;\n }, [usersList, filters, sortBy]);\n\n return (\n \n \n \n {t('export')}\n \n )\n }\n filters={filters}\n onChange={setFilters}\n />\n \n style={styles.userNameCountContainer}>\n {allowEdit && }\n {t('users_count', { count: filteredData.length })}\n \n {allowEdit && (\n \n sortKey=\"dateInscription\"\n containerStyle={styles.dateContainer}\n sortBy={sortBy}\n setSortBy={setSortBy}\n >\n {t('register_date')}\n \n )}\n \n \n }\n >\n (\n onPress(u.item))}\n />\n )}\n keyExtractor={(item) => item.id.toString()}\n refreshControl={}\n />\n \n );\n}\n\nconst styles = StyleSheet.create({\n headerContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n exportContainer: { alignItems: 'center', marginLeft: 24, marginBottom: 14 },\n exportLabel: { fontSize: 10 },\n dateContainer: {\n flex: 1,\n alignItems: 'center',\n marginRight: 50,\n },\n userNameCountContainer: { width: 250 },\n userIcon: { paddingRight: 10 },\n list: {\n marginTop: 10,\n },\n});\n","import { useCallback } from 'react';\nimport useLoggedUser from './useLoggedUser';\nimport { hasLicence } from '../services/licences';\n\nexport default function useIsSsoEmail() {\n const loggedUser = useLoggedUser();\n\n return useCallback(\n (email: string) => {\n if (!email) {\n return false;\n }\n\n const entreprise = loggedUser.entreprise;\n const hasSsoLicence = hasLicence(loggedUser, (x) => x.ssoAuth);\n\n if (!hasSsoLicence) {\n return false;\n }\n\n const emailDomain = email.split('@')[1];\n const emailEntrepriseDomain = entreprise.entrepriseNomDomaine.find((e) => e.nomDomaine === emailDomain);\n\n return !!(emailEntrepriseDomain && emailEntrepriseDomain.hasSsoAuth);\n },\n [loggedUser]\n );\n}\n","import { NavigationProp } from '@react-navigation/native';\nimport { User } from '../entities/User';\nimport { ScreenNames } from '../ScreenNames';\n\nexport const navigateToMessaging = (navigation: NavigationProp) => {\n navigation.navigate(ScreenNames.Messaging);\n};\n\nexport const navigateToMessagingCreateThread = (navigation: NavigationProp) => {\n navigation.navigate(ScreenNames.Messaging, { screen: ScreenNames.MessagingCreateThread });\n};\n\nexport const navigateToMessagingNewThread = (navigation: NavigationProp, user: User) => {\n navigateToMessaging(navigation);\n navigation.navigate(ScreenNames.Messaging, {\n screen: ScreenNames.MessagingThread,\n params: {\n contactId: user.id,\n threadName: `${user.prenom} ${user.nom}`,\n },\n });\n};\n\nexport const navigateToMessagingThread = (\n navigation: NavigationProp,\n thread: {\n id: number;\n contactLastName: string;\n contactFirstName: string;\n }\n) => {\n navigation.navigate(ScreenNames.Messaging, {\n screen: ScreenNames.MessagingThread,\n params: {\n threadId: thread.id,\n threadName: `${thread.contactFirstName} ${thread.contactLastName}`,\n },\n });\n};\n","import React from 'react';\nimport { Image, StyleSheet } from 'react-native';\nimport { TouchableOpacity } from 'react-native-gesture-handler';\nimport { isMobile, openURL } from '../../services/utils';\nimport { generateTeams } from '../../services/url.utils';\nimport { teams } from '../../services/assets';\n\nexport type TeamsButtonProps = {\n email: string;\n visible: boolean;\n};\n\nexport function TeamsButton({ email, visible }: TeamsButtonProps) {\n if (!visible) {\n return null;\n } else {\n return (\n openURL(generateTeams(email))}>\n \n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: { width: isMobile() ? 250 : undefined },\n image: { width: isMobile() ? 250 : undefined, height: 56 },\n});\n","import React from 'react';\nimport { Image } from 'react-native';\nimport { TouchableOpacity } from 'react-native-gesture-handler';\nimport { isMobile, openURL } from '../../services/utils';\nimport { generateGoogleChat } from '../../services/url.utils';\nimport { googleChat } from '../../services/assets';\n\nexport type GoogleChatButtonProps = {\n userId: string;\n visible: boolean;\n};\n\nexport function GoogleChatButton({ userId, visible }: GoogleChatButtonProps) {\n if (!visible) {\n return null;\n } else {\n return (\n openURL(generateGoogleChat(userId))}\n >\n \n \n );\n }\n}\n","import React from 'react';\nimport { Image } from 'react-native';\nimport { TouchableOpacity } from 'react-native-gesture-handler';\nimport { isMobile, openURL } from '../../services/utils';\nimport { generateSlack } from '../../services/url.utils';\nimport { slack } from '../../services/assets';\n\nexport type SlackButtonProps = {\n teamId: string;\n userId: string;\n visible: boolean;\n};\n\nexport function SlackButton({ teamId, userId, visible }: SlackButtonProps) {\n if (!visible) {\n return null;\n } else {\n return (\n openURL(generateSlack(teamId, userId))}\n >\n \n \n );\n }\n}\n","import { Image, ScrollView, View } from 'react-native';\nimport { getPictureURI } from '../../services/api/helper.api';\nimport { FONT_FAMILY_DEFAULT } from '../../styles/globalStyle';\nimport AppText, { Mode } from './AppText';\nimport { HypertextLink } from './HypertextLink';\nimport { combineNames, isMobile, openURL } from '../../services/utils';\nimport React, { ReactNode } from 'react';\nimport { ProfilePicture } from './ProfilePicture';\nimport { AppModalOverlay } from './AppModalOverlay';\nimport { headerBackgroundPopup } from '../../services/assets';\nimport { SECONDARY_COLOR } from '../../styles/appColor';\nimport { t } from '../../services/translations';\nimport { User } from '../../entities/User';\nimport { hasLicenceGoogleChat, hasLicenceMessaging, hasLicenceTeams } from '../../services/licences';\nimport { navigateToMessagingNewThread } from '../../utils/Messaging';\nimport { AppButton, Type } from './AppButton';\nimport { TeamsButton } from './TeamsButton';\nimport { GoogleChatButton } from './GoogleChatButton';\nimport { SlackButton } from './SlackButton';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\n\nexport function AttributeRow(props: { iconName: string; children: ReactNode; visible: boolean }) {\n if (!props.visible) {\n return null;\n }\n\n return (\n \n \n \n \n {props.children}\n \n );\n}\n\nconst logoFile = require('../../../assets/adaptive-icon.png');\n\nexport function UserProfileOverlay(props: {\n onBackdropPress: any;\n userProfileData: User;\n isVisible?: boolean;\n showAdminTag?: boolean;\n}) {\n const user = useLoggedUser();\n const navigation = useNavigation>();\n\n if (props.userProfileData == undefined) {\n return <>;\n }\n\n const email = props.userProfileData.hideEmail ? '' : props.userProfileData.aspNetUsers?.email;\n const service =\n props.userProfileData.entrepriseService?.libelle === undefined\n ? ''\n : props.userProfileData.entrepriseService?.libelle;\n const siteGeo =\n props.userProfileData.entrepriseSiteGeo?.siteGeo === undefined\n ? ''\n : props.userProfileData.entrepriseSiteGeo?.siteGeo;\n\n const hasPortable =\n !props.userProfileData.hidePhone &&\n props.userProfileData.portable != null &&\n props.userProfileData.portable?.length !== 0;\n\n const hasPhone =\n !props.userProfileData.hidePhone &&\n props.userProfileData.telephone != null &&\n props.userProfileData.telephone?.length !== 0;\n\n return (\n \n \n \n \n \n {(props.showAdminTag || true) && (\n \n {props.userProfileData.lovIdType == 13 && (\n \n \n \n Responsable\n \n \n )}\n {props.userProfileData.lovIdType != 13 && props.userProfileData.userSubAdmins?.length > 0 && (\n \n \n \n Administrateur\n \n \n )}\n \n )}\n \n\n \n {combineNames(props.userProfileData)}\n \n \n \n {props.userProfileData.fonction}\n \n {service}\n \n \n {props.userProfileData.entrepriseSiteGeo?.siteGeo}\n \n \n openURL('mailto:' + email)} text={email} numberOfLines={1} />\n \n \n openURL('tel:' + props.userProfileData.portable)}\n text={props.userProfileData.portable}\n numberOfLines={1}\n />\n \n \n openURL('tel:' + props.userProfileData.telephone)}\n text={props.userProfileData.telephone}\n numberOfLines={1}\n />\n \n \n \n \n {hasLicenceMessaging(user) && (\n navigateToMessagingNewThread(navigation, props.userProfileData)}\n enabled\n />\n )}\n \n \n \n \n );\n}\n","import { TouchableOpacity } from 'react-native';\nimport { Icon } from '@rneui/base';\nimport React from 'react';\nimport { PRIMARY_COLOR, SECONDARY_COLOR } from '../../styles/appColor';\nimport { LinearGradient } from 'expo-linear-gradient';\nimport { AppSafeAreaView } from '../containers/AppSafeAreaView';\n\nexport function CloseButton(props: { onPress }) {\n return (\n \n \n \n \n \n \n \n );\n}\n","import sanitizeHtml from 'sanitize-html';\nimport { zonedTimeToUtc } from 'date-fns-tz';\n\nexport function htmlTextToNeutralText(text: string) {\n let filteredText = text;\n filteredText = sanitizeHtml(text, {\n allowedTags: [],\n });\n return filteredText;\n}\n\nexport function removeAccentsAndLower(str: string) {\n return str\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .toLowerCase();\n}\n\n// Transform a list into a list of list following the given predicate\n// For example, this [1, 3, 5, 2, 4, 6, 7, 8, 9, 10, 42] become [[1, 3, 5], [2, 4, 6], [7], [8], [9], [10, 42]]\n// Given the following predicate: function (a) { return a % 2; }\nexport function groupByAdjacent(array: T[], fn: (val: T) => C): T[][] {\n let fn_prev = null;\n let acc: T[][] = [];\n\n for (let val of ([] as T[]).concat(array)) {\n let fn_curr = fn(val);\n\n if (!acc.length || fn_curr !== fn_prev) {\n acc.push([val]);\n } else {\n acc[acc.length - 1].push(val);\n }\n fn_prev = fn_curr;\n }\n\n return acc;\n}\n\nexport function newDateWithTimezone(timeZone: string) {\n const date = new Date();\n return zonedTimeToUtc(date, timeZone);\n}\n\nexport function formatUrl(url: string) {\n if (!/^https?:\\/\\//i.test(url)) {\n return 'http://' + url;\n } else {\n return url;\n }\n}\n\nexport function compareVersionStrings(str1: string, str2: string) {\n const split1 = str1.split('.');\n const split2 = str2.split('.');\n\n for (let i = 0; i < split1.length; i++) {\n const num1 = parseInt(split1[i]);\n const num2 = parseInt(split2[i]);\n if (num1 > num2) {\n return 1;\n } else if (num1 < num2) {\n return -1;\n }\n }\n\n return 0;\n}\n\nexport function fileToBase64(file: Blob): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n resolve(reader.result as string);\n };\n\n reader.readAsDataURL(file);\n reader.onerror = reject;\n });\n}\n","import React, { useEffect, useState } from 'react';\nimport { StyleSheet, View, Text } from 'react-native';\nimport { Viewer, SpecialZoomLevel, Plugin, RenderViewer, Icon, MinimalButton } from '@react-pdf-viewer/core';\nimport { PickPhotoOrDocumentResult } from '../../services/utils';\nimport { pageNavigationPlugin, RenderGoToPageProps } from '@react-pdf-viewer/page-navigation';\nimport { isString } from 'lodash';\nimport { fileToBase64 } from '../../utils/Utils';\n\nexport type PdfZoomedProps = {\n source: PickPhotoOrDocumentResult | string;\n};\n\nexport default function PdfZoomed({ source }: PdfZoomedProps) {\n const [base64, setBase64] = useState(null);\n const disableScrollPluginInstance = disableScrollPlugin();\n const pageNavigationPluginInstance = pageNavigationPlugin();\n const { GoToNextPage, GoToPreviousPage } = pageNavigationPluginInstance;\n const [page, setPage] = useState(1);\n const [totalPage, setTotalPage] = useState(1);\n\n useEffect(() => {\n if (isString(source)) {\n setBase64(source);\n } else {\n fileToBase64(source).then(setBase64);\n }\n }, [source]);\n\n return base64 ? (\n \n \n \n {(props: RenderGoToPageProps) => (\n \n \n \n \n \n )}\n \n {\n setPage(props.currentPage + 1);\n }}\n onDocumentLoad={(props) => {\n setTotalPage(props.doc.numPages);\n }}\n />\n \n {(props: RenderGoToPageProps) => (\n \n \n \n \n \n )}\n \n \n \n {page} / {totalPage}\n \n \n ) : (\n \n );\n}\n\nconst styles = StyleSheet.create({\n pdfContainer: {\n backgroundColor: '#fff',\n maxWidth: 600,\n width: '100%',\n paddingTop: 10,\n },\n horizontalContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n backgroundColor: '#fff',\n width: '100%',\n },\n pageCounter: {\n width: '100%',\n textAlign: 'center',\n },\n});\n\nconst disableScrollPlugin = (): Plugin => {\n const renderViewer = (props: RenderViewer) => {\n const { slot } = props;\n\n const pageWidth = props.pageSizes[0]?.pageWidth || undefined;\n const pageHeight = props.pageSizes[0]?.pageHeight || undefined;\n const pageRatio = pageWidth && pageHeight && pageHeight / pageWidth;\n const containerWidth = props.containerRef?.current?.clientWidth;\n const height = pageRatio && containerWidth && containerWidth * pageRatio;\n\n if (slot.attrs && slot.attrs.style) {\n slot.attrs.style = Object.assign({}, slot.attrs.style, {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n });\n }\n\n if (slot.subSlot && slot.subSlot.attrs && slot.subSlot.attrs.style) {\n slot.subSlot.attrs.style = Object.assign({}, slot.subSlot.attrs.style, {\n // Disable scrolling in the pages container\n overflow: 'hidden',\n maxHeight: height,\n flex: 1,\n });\n }\n\n return slot;\n };\n\n return {\n renderViewer,\n };\n};\n","import React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';\nimport { Modal, StyleSheet, TouchableOpacity, View, ViewStyle } from 'react-native';\nimport { Worker, Viewer, SpecialZoomLevel, Plugin, RenderViewer } from '@react-pdf-viewer/core';\nimport { pageNavigationPlugin } from '@react-pdf-viewer/page-navigation';\nimport { PickPhotoOrDocumentResult } from '../../services/utils';\nimport { isString } from 'lodash';\nimport { CloseButton } from './CloseButton';\nimport { match } from 'ts-pattern';\nimport { fileToBase64 } from '../../utils/Utils';\nimport PdfZoomed from './PdfZoomed';\n\nimport '@react-pdf-viewer/core/lib/styles/index.css';\nimport '@react-pdf-viewer/page-navigation/lib/styles/index.css';\n\nexport type PdfRef = {\n goToNextPage: () => void;\n goToPreviousPage: () => void;\n};\n\nexport type PdfProps = {\n source: PickPhotoOrDocumentResult;\n style: ViewStyle;\n // The following props works only on Web\n fit?: 'width' | 'page' | 'actual_size';\n darkBackground?: boolean;\n autoPlayDelay?: number;\n noModal?: boolean;\n onAutoPlayEnd?: () => void;\n onPreviewPageChange?: (page: number) => void;\n onTotalPageChange?: (page: number) => void;\n};\n\nexport function Pdf(\n {\n source,\n style,\n fit,\n darkBackground,\n autoPlayDelay,\n noModal,\n onAutoPlayEnd,\n onPreviewPageChange,\n onTotalPageChange,\n }: PdfProps,\n ref: React.Ref\n) {\n const viewerRef = useRef(null);\n const [modalVisible, setModalVisible] = useState(false);\n const [base64, setBase64] = useState(null);\n const disableScrollPluginInstance = disableScrollPlugin();\n const previewPageNavigationPluginInstance = pageNavigationPlugin();\n const { jumpToNextPage: previewJumpToNextPage, jumpToPreviousPage: previewJumpToPreviousPage } =\n previewPageNavigationPluginInstance;\n const [isPreviewOnLastPage, setIsPreviewOnLastPage] = useState(false);\n const [totalPage, setTotalPage] = useState(1);\n\n useEffect(() => {\n onTotalPageChange?.(totalPage);\n }, [totalPage, onTotalPageChange]);\n\n useEffect(() => {\n if (isString(source)) {\n setBase64(source);\n } else {\n fileToBase64(source).then(setBase64);\n }\n }, [source]);\n\n useEffect(() => {\n if (autoPlayDelay && isPreviewOnLastPage) {\n const timeout = setTimeout(() => {\n onAutoPlayEnd?.();\n setModalVisible(false);\n }, autoPlayDelay);\n\n return () => {\n clearTimeout(timeout);\n };\n } else if (autoPlayDelay) {\n const interval = setInterval(() => {\n previewJumpToNextPage();\n }, autoPlayDelay);\n\n return () => {\n clearInterval(interval);\n };\n }\n }, [autoPlayDelay, onAutoPlayEnd, isPreviewOnLastPage, previewJumpToNextPage]);\n\n useImperativeHandle(ref, () => ({\n goToNextPage: previewJumpToNextPage,\n goToPreviousPage: previewJumpToPreviousPage,\n }));\n\n return base64 ? (\n <>\n setModalVisible(true)}>\n {\n setTotalPage(props.doc.numPages);\n }}\n defaultScale={match(fit)\n .with('actual_size', () => SpecialZoomLevel.ActualSize)\n .with('page', () => SpecialZoomLevel.PageFit)\n .otherwise(() => SpecialZoomLevel.PageWidth)}\n onPageChange={(props) => {\n setIsPreviewOnLastPage(props.currentPage === props.doc.numPages - 1);\n onPreviewPageChange?.(props.currentPage);\n }}\n />\n \n setModalVisible(false)}>\n \n \n setModalVisible(false)} />\n \n \n \n ) : (\n \n );\n}\n\nexport default forwardRef(Pdf);\n\nconst styles = StyleSheet.create({\n modal: {\n flex: 1,\n backgroundColor: 'rgba(0,0,0,0.5)',\n padding: 40,\n justifyContent: 'center',\n alignItems: 'center',\n },\n});\n\nexport type PdfProviderProps = {\n children: React.ReactNode;\n};\n\nexport function PdfProvider({ children }: PdfProviderProps) {\n return {children};\n}\n\nconst disableScrollPlugin = (): Plugin => {\n const renderViewer = (props: RenderViewer) => {\n const { slot } = props;\n\n const pageWidth = props.pageSizes[0]?.pageWidth || undefined;\n const pageHeight = props.pageSizes[0]?.pageHeight || undefined;\n const pageRatio = pageWidth && pageHeight && pageHeight / pageWidth;\n const containerWidth = props.containerRef?.current?.clientWidth;\n const height = pageRatio && containerWidth && containerWidth * pageRatio;\n\n if (slot.attrs && slot.attrs.style) {\n slot.attrs.style = Object.assign({}, slot.attrs.style, {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n });\n }\n\n if (slot.subSlot && slot.subSlot.attrs && slot.subSlot.attrs.style) {\n slot.subSlot.attrs.style = Object.assign({}, slot.subSlot.attrs.style, {\n // Disable scrolling in the pages container\n overflow: 'hidden',\n maxHeight: height,\n flex: 1,\n });\n }\n\n return slot;\n };\n\n return {\n renderViewer,\n };\n};\n","import { PropsWithChildren, useEffect, useRef } from 'react';\nimport { Animated, ViewStyle } from 'react-native';\n\ntype FadeInViewProps = PropsWithChildren<{ style: ViewStyle }> & {\n isVisible: boolean;\n};\n\nexport default function FadeInView({ isVisible, style, children, ...rest }: FadeInViewProps) {\n const fadeAnim = useRef(new Animated.Value(0)).current; // Initial value for opacity: 0\n\n useEffect(() => {\n Animated.timing(fadeAnim, {\n toValue: isVisible ? 1 : 0,\n duration: 300,\n useNativeDriver: true,\n }).start();\n }, [fadeAnim, isVisible]);\n\n return (\n \n {children}\n \n );\n}\n","import React, { useCallback, useEffect, useState } from 'react';\nimport {\n ActivityIndicator,\n FlatList,\n Image,\n Linking,\n Platform,\n Pressable,\n StyleSheet,\n Text,\n TouchableOpacity,\n TouchableWithoutFeedback,\n View,\n} from 'react-native';\nimport { Asset } from 'expo-asset';\nimport { t } from 'i18next';\nimport useUnsplash, { UnsplashImage } from '../../hooks/useUnsplash';\nimport { _compressImage, isMobile, PickPhotoOrDocumentResult } from '../../services/utils';\nimport AppText from '../atomic/AppText';\nimport FadeInView from '../atomic/FadeInView';\nimport { PRIMARY_COLOR, WHITE } from '../../styles/appColor';\nimport { FONT_FAMILY_DEFAULT } from '../../styles/globalStyle';\n\nexport type UnsplashPickerProps = {\n searchQuery: string;\n setPhoto: (photo: PickPhotoOrDocumentResult) => void;\n onDone: () => void;\n};\n\nexport default function UnsplashPicker({ searchQuery, setPhoto, onDone }: UnsplashPickerProps) {\n const { images, isLoading, notifyImageDownload, searchImages, fetchNext } = useUnsplash();\n const [hoveredIndex, setHoveredIndex] = useState(null);\n\n // Initial search with an empty query\n useEffect(() => {\n if (searchImages) {\n searchImages('');\n }\n }, [searchImages]);\n\n // Search when query is updated, three characters minimum\n useEffect(() => {\n if (searchImages && (searchQuery.length > 2 || searchQuery.length === 0)) {\n searchImages(searchQuery);\n }\n }, [searchQuery, searchImages]);\n\n const handleImagePressed = useCallback(\n (item: UnsplashImage) => async () => {\n notifyImageDownload && item.id && notifyImageDownload(item.id);\n\n if (Platform.OS === 'web') {\n const [result] = await Asset.loadAsync((item.file || item.uri) as any);\n let blob = await fetch(result.uri).then((r) => r.blob());\n let metadata = {\n type: 'image/png',\n };\n let file = new File([blob], 'mypicture.png', { ...metadata, lastModified: Date.now() });\n (file as any).uri = result.uri;\n\n setPhoto(file as any);\n } else {\n const [result] = await Asset.loadAsync(item.uri);\n const compressedResult = await _compressImage({ assets: [result] });\n\n var newPhoto = {\n name: 'mypicture.png',\n fileName: 'mypicture.png',\n type: 'image/png',\n height: compressedResult.height,\n width: compressedResult.width,\n uri: compressedResult.uri,\n };\n\n setPhoto(newPhoto);\n }\n onDone();\n },\n [notifyImageDownload]\n );\n\n return (\n \n \n {isLoading ? (\n \n ) : (\n item.uri}\n refreshing={isLoading}\n ListEmptyComponent={{t('no_image_found')}}\n renderItem={({ item, index }) => (\n \n setHoveredIndex(index)}\n onHoverOut={() => setHoveredIndex(null)}\n >\n \n {!isMobile() && item.author && item.url && (\n \n \n By{' '}\n {\n ev.preventDefault();\n Linking.openURL(\n item.url || 'https://unsplash.com/?utm_source=Konecteam&utm_medium=referral'\n );\n }}\n >\n {item.author}\n {' '}\n on{' '}\n {\n ev.preventDefault();\n Linking.openURL('https://unsplash.com/?utm_source=Konecteam&utm_medium=referral');\n }}\n >\n Unsplash\n \n \n \n )}\n \n \n )}\n />\n )}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: { flex: 1 },\n listContainer: { flex: 1 },\n listContentContainer: {\n flexWrap: 'wrap',\n justifyContent: 'center',\n alignItems: 'center',\n flexDirection: 'row',\n },\n listEmptyLabel: { margin: 10 },\n listItemContainer: {\n backgroundColor: 'transparent',\n },\n listItemPressable: {\n margin: 5,\n },\n listItemImage: {\n width: 100,\n height: 100,\n },\n listItemImageCaption: { color: WHITE, fontFamily: FONT_FAMILY_DEFAULT.bold, fontSize: 8 },\n authorOverlay: {\n position: 'absolute',\n width: '100%',\n height: '100%',\n backgroundColor: 'rgba(0,0,0,0.4)',\n justifyContent: 'flex-end',\n padding: 5,\n zIndex: 5,\n },\n underline: { textDecorationLine: 'underline' },\n});\n","import axios from 'axios';\nimport { useCallback, useEffect, useState } from 'react';\nimport { ImageSourcePropType } from 'react-native';\nimport { unsplashAccessKey } from '../../configuration';\n\nexport type UnsplashImage = {\n file: ImageSourcePropType;\n uri: string;\n author: string;\n url: string;\n id: string;\n};\n\nexport default function useUnsplash() {\n const [, setQuery] = useState('');\n const [, setLastQuery] = useState('');\n const [, setPage] = useState(0);\n const [, setLastPage] = useState(0);\n const [images, setImages] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n\n const searchForUnsplash = useCallback(async (query: string, page: number) => {\n setIsLoading(true);\n\n const isQueryEmpty = !query || query.trim().length === 0;\n\n try {\n const response = !isQueryEmpty\n ? await axios.get('https://api.unsplash.com/search/photos', {\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n params: { query, client_id: unsplashAccessKey, page: page + 1 },\n })\n : await axios.get('https://api.unsplash.com/photos', {\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n params: { client_id: unsplashAccessKey },\n });\n\n if (response.status === 200) {\n const results = response.data.results || response.data;\n const images = results.map((image: any) => ({\n uri: image.urls.small,\n id: image.id,\n author: image.user.name,\n url: `${image.user.links.html}?utm_source=Konecteam&utm_medium=referral`,\n })) as UnsplashImage[];\n\n if (page === 0) {\n setImages(images);\n } else {\n setImages((old) => {\n const newArr = [...old];\n newArr.splice(page * 10, 10, ...images);\n\n return newArr;\n });\n }\n }\n } catch (err: any) {\n } finally {\n setIsLoading(false);\n setLastQuery(query);\n setLastPage(page);\n }\n }, []);\n\n // Search every seconds to avoid over-requesting\n useEffect(() => {\n const intervalId = setInterval(async () => {\n setQuery((query) => {\n setLastQuery((lastQuery) => {\n setPage((page) => {\n setLastPage((lastPage) => {\n if (query !== lastQuery || page !== lastPage) {\n if (query !== lastQuery) {\n setPage(0);\n setLastPage(0);\n }\n\n searchForUnsplash(query, query !== lastQuery ? 0 : page);\n }\n\n return lastPage;\n });\n\n return page;\n });\n\n return lastQuery;\n });\n\n return query;\n });\n }, 1000);\n\n return () => {\n clearInterval(intervalId);\n };\n }, [searchForUnsplash]);\n\n const searchImages = useCallback(async (query: string) => {\n setPage(0);\n setIsLoading(query !== '');\n setQuery(query);\n setImages([]);\n }, []);\n\n const fetchNext = useCallback(() => {\n setPage((page) => page + 1);\n }, []);\n\n const notifyImageDownload = useCallback(async (id: string) => {\n await axios.get(`https://api.unsplash.com/photos/${id}/download`, {\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n params: { client_id: unsplashAccessKey },\n });\n }, []);\n\n return {\n images,\n isLoading,\n notifyImageDownload,\n searchImages,\n fetchNext,\n };\n}\n","import React from 'react';\nimport { Image as RNImage, ImageProps as RNImageProps } from 'react-native';\n\nexport type ImageProps = Omit;\n\nexport default function Image(props: ImageProps) {\n return ;\n}\n","import React, { useCallback, useEffect } from 'react';\nimport { FlatList, Platform, StyleSheet, TouchableOpacity, View } from 'react-native';\nimport { Asset } from 'expo-asset';\nimport { t } from 'i18next';\nimport useGiphy, { GiphyImage } from '../../hooks/useGiphy';\nimport { _compressImage, PickPhotoOrDocumentResult } from '../../services/utils';\nimport AppText from '../atomic/AppText';\nimport { PRIMARY_COLOR, WHITE } from '../../styles/appColor';\nimport { FONT_FAMILY_DEFAULT } from '../../styles/globalStyle';\nimport { ActivityIndicator } from 'react-native';\nimport Image from '../atomic/Image';\n\nexport type GiphyPickerProps = {\n searchQuery: string;\n setPhoto: (photo: PickPhotoOrDocumentResult) => void;\n onDone: () => void;\n};\n\nexport default function GiphyPicker({ searchQuery, setPhoto, onDone }: GiphyPickerProps) {\n const { images, isLoading, searchImages, fetchNext } = useGiphy();\n\n // Initial search with an empty query\n useEffect(() => {\n if (searchImages) {\n searchImages('');\n }\n }, [searchImages]);\n\n // Search when query is updated, three characters minimum\n useEffect(() => {\n if (searchImages && (searchQuery.length > 2 || searchQuery.length === 0)) {\n searchImages(searchQuery);\n }\n }, [searchQuery, searchImages]);\n\n const handleImagePressed = useCallback(\n (item: GiphyImage) => async () => {\n if (Platform.OS === 'web') {\n const [result] = await Asset.loadAsync((item.file || item.uri) as any);\n let blob = await fetch(result.uri).then((r) => r.blob());\n let metadata = {\n type: 'image/png',\n };\n let file = new File([blob], 'mypicture.png', { ...metadata, lastModified: Date.now() });\n (file as any).uri = result.uri;\n\n setPhoto(file as any);\n } else {\n const [result] = await Asset.loadAsync(item.uri);\n\n var newPhoto = {\n name: 'mypicture.gif',\n fileName: 'mypicture.gif',\n type: 'image/gif',\n height: result.height,\n width: result.width,\n uri: result.uri,\n };\n\n setPhoto(newPhoto);\n }\n onDone();\n },\n []\n );\n\n return (\n \n \n {isLoading ? (\n \n ) : (\n item.id}\n refreshing={isLoading}\n ListEmptyComponent={{t('no_image_found')}}\n renderItem={({ item }) => (\n \n \n \n )}\n />\n )}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: { flex: 1 },\n listContainer: { flex: 1 },\n listContentContainer: {\n flexWrap: 'wrap',\n justifyContent: 'center',\n alignItems: 'center',\n flexDirection: 'row',\n },\n listEmptyLabel: { margin: 10 },\n listItemContainer: {\n backgroundColor: 'transparent',\n margin: 5,\n },\n listItemImage: {\n width: 100,\n height: 100,\n },\n listItemImageCaption: { color: WHITE, fontFamily: FONT_FAMILY_DEFAULT.bold, fontSize: 8 },\n underline: { textDecorationLine: 'underline' },\n});\n","import axios from 'axios';\nimport { useCallback, useEffect, useState } from 'react';\nimport { ImageSourcePropType } from 'react-native';\nimport { giphyAccessKey } from '../../configuration';\n\nexport type GiphyImage = {\n file: ImageSourcePropType;\n uri: string;\n url: string;\n id: string;\n};\n\nexport default function useGiphy() {\n const [, setQuery] = useState('');\n const [, setLastQuery] = useState('');\n const [, setPage] = useState(0);\n const [, setLastPage] = useState(0);\n const [images, setImages] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n\n const searchForGiphy = useCallback(async (query: string, page: number) => {\n setIsLoading(true);\n\n const isQueryEmpty = !query || query.trim().length === 0;\n\n try {\n const response = !isQueryEmpty\n ? await axios.get('https://api.giphy.com/v1/gifs/search', {\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n params: { q: query, api_key: giphyAccessKey, offset: page * 20, limit: 20 },\n })\n : await axios.get('https://api.giphy.com/v1/gifs/trending', {\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n params: { api_key: giphyAccessKey },\n });\n\n if (response.status === 200) {\n const results = response.data.data;\n const images = results.map((image: any) => ({\n uri: image.images.original.url,\n id: image.id,\n url: image.url,\n })) as GiphyImage[];\n\n if (page === 0) {\n setImages(images);\n } else {\n setImages((old) => {\n const newArr = [...old];\n newArr.splice(page * 20, 20, ...images);\n\n return newArr;\n });\n }\n }\n } catch (err: any) {\n } finally {\n setIsLoading(false);\n setLastQuery(query);\n setLastPage(page);\n }\n }, []);\n\n // Search every seconds to avoid over-requesting\n useEffect(() => {\n const intervalId = setInterval(async () => {\n setQuery((query) => {\n setLastQuery((lastQuery) => {\n setPage((page) => {\n setLastPage((lastPage) => {\n if (query !== lastQuery || page !== lastPage) {\n if (query !== lastQuery) {\n setPage(0);\n setLastPage(0);\n }\n\n searchForGiphy(query, query !== lastQuery ? 0 : page);\n }\n\n return lastPage;\n });\n\n return page;\n });\n\n return lastQuery;\n });\n\n return query;\n });\n }, 1000);\n\n return () => {\n clearInterval(intervalId);\n };\n }, [searchForGiphy]);\n\n const searchImages = useCallback(async (query: string) => {\n setPage(0);\n setIsLoading(query !== '');\n setQuery(query);\n setImages([]);\n }, []);\n\n const fetchNext = useCallback(() => {\n setPage((page) => page + 1);\n }, []);\n\n return {\n images,\n isLoading,\n searchImages,\n fetchNext,\n };\n}\n","import React, { forwardRef, useCallback, useImperativeHandle, useMemo, useState } from 'react';\nimport { Image, ImageSourcePropType, StyleSheet, View, TouchableOpacity, FlatList, Platform } from 'react-native';\nimport { ButtonGroup, TabView } from '@rneui/themed';\nimport { AppButton, Type } from './AppButton';\nimport { t } from '../../services/translations';\nimport {\n alertInfo,\n isMobile,\n pickDocument,\n pickPhoto,\n PickPhotoOrDocumentResult,\n takePhoto,\n pickManyPhotos,\n} from '../../services/utils';\nimport { AppModalOverlay } from './AppModalOverlay';\nimport { LIGHT_GRAY, PRIMARY_COLOR } from '../../styles/appColor';\nimport AppText from './AppText';\nimport { Icon } from '@rneui/base';\nimport Pdf from './Pdf';\nimport UnsplashPicker from '../molecules/UnsplashPicker';\nimport GiphyPicker from '../molecules/GiphyPicker';\nimport { match } from 'ts-pattern';\nimport { SearchTextInput } from './SearchTextInput';\nimport { poweredByGiphy } from '../../services/assets';\nimport { Asset } from 'expo-asset';\n\nexport type PhotoPickerProps = {\n photo: PickPhotoOrDocumentResult | null | undefined;\n defaultPhoto?: ImageSourcePropType;\n extraOption?: {\n label: string;\n icon: string;\n onPress: () => void;\n }[];\n allowPdf?: boolean;\n photosGallery?: { file: ImageSourcePropType; uri: string }[];\n setPhoto: (photo: PickPhotoOrDocumentResult) => void;\n};\n\nexport function PhotoPicker({ photo, defaultPhoto, extraOption, allowPdf, photosGallery, setPhoto }: PhotoPickerProps) {\n // If photo is a File, we compute the uri as base64\n let photoUri = useMemo(() => {\n if (photo && photo.type === 'application/pdf') {\n return photo.uri;\n } else if (photo && photo.uri) {\n return photo.uri;\n } else if (photo instanceof File) {\n return URL.createObjectURL(photo);\n } else {\n return undefined;\n }\n }, [photo]);\n\n return (\n \n {photo && photo.type === 'application/pdf' ? (\n \n ) : (\n (photoUri !== null || defaultPhoto !== undefined) && (\n \n )\n )}\n \n \n );\n}\n\nexport type PhotoPickButtonsRef = {\n pressButton: (label: string) => void;\n};\n\nexport type PhotoPickButtonsProps = {\n modalText: string;\n extraOption?: {\n label: string;\n icon: string;\n onPress: () => void;\n }[];\n allowPdf?: boolean;\n multiple?: boolean;\n photosGallery?: { file: ImageSourcePropType; uri: string }[];\n setPhoto: (photo: PickPhotoOrDocumentResult | PickPhotoOrDocumentResult[]) => void;\n onButtonPressed?: (label: string) => void;\n};\n\nexport const PhotoPickButtons = forwardRef(\n ({ modalText, extraOption, allowPdf, multiple, photosGallery, setPhoto, onButtonPressed }, ref) => {\n const [modalVisible, setModalVisible] = useState(false);\n const [mobileOptionChoiceModal, setMobileOptionChoiceModal] = useState(false);\n\n const options = useMemo(\n () =>\n !isMobile()\n ? [\n {\n label: allowPdf ? t('photos_documents') : t('import_image'),\n icon: 'upload',\n onPress: () => {\n if (allowPdf) {\n pickDocument(undefined, ['png', 'jpg', 'jpeg', 'bmp', 'gif', 'webp', 'svg', 'pdf'])\n .then((document) => {\n setPhoto(document);\n })\n .catch((e) => {\n console.error(e);\n alertInfo(e?.message);\n });\n } else {\n pickPhoto().then((photo) => {\n setPhoto(photo);\n });\n }\n },\n },\n {\n label: modalText || t('image_bank'),\n icon: 'image',\n onPress: () => setModalVisible(true),\n },\n ...(extraOption || []),\n ]\n : [\n {\n label: t('take_a_picture'),\n icon: 'camera',\n onPress: () => {\n takePhoto()\n .then((photo) => {\n setPhoto(photo);\n })\n .catch((e) => {\n console.error(e?.message);\n })\n .finally(() => {\n setMobileOptionChoiceModal(false);\n });\n },\n },\n {\n label: allowPdf ? t('photos_documents') : t('import_image'),\n icon: 'upload',\n onPress: () => {\n const promise = match(multiple)\n .with(true, () => pickManyPhotos())\n .otherwise(() => pickPhoto());\n\n promise\n .then((photo) => {\n setPhoto(photo as any);\n })\n /*.catch((e) => {\n console.error(e?.message);\n })*/\n .finally(() => {\n setMobileOptionChoiceModal(false);\n });\n },\n },\n {\n label: modalText || t('image_bank'),\n icon: 'image',\n onPress: () => {\n setModalVisible(true);\n setMobileOptionChoiceModal(false);\n },\n },\n ],\n [allowPdf, extraOption, modalText, multiple, setPhoto]\n );\n\n useImperativeHandle(\n ref,\n () => {\n return {\n pressButton: (label: string) => {\n const option = options.find((e) => e.label === label);\n\n if (option) {\n option.onPress();\n }\n },\n };\n },\n [options]\n );\n\n return (\n <>\n \n {!isMobile() ? (\n options.map((elem) => (\n {\n onButtonPressed && onButtonPressed(elem.label);\n elem.onPress();\n }}\n icon={elem.icon}\n iconOnTopEdge\n />\n ))\n ) : (\n <>\n setMobileOptionChoiceModal(true)}\n icon=\"image\"\n iconOnTopEdge\n />\n {extraOption?.map((elem) => (\n {\n onButtonPressed && onButtonPressed(elem.label);\n elem.onPress();\n }}\n icon={elem.icon}\n iconOnTopEdge\n />\n ))}\n \n )}\n \n setModalVisible(false)}\n />\n {isMobile() && (\n \n )}\n \n );\n }\n);\n\ntype PhotoPickerModalProps = {\n isVisible: boolean;\n modalText: string;\n photosGallery?: { file: ImageSourcePropType; uri: string }[];\n setPhoto: (photo: PickPhotoOrDocumentResult) => void;\n close: () => void;\n};\n\nfunction PhotoPickerModal({ modalText, isVisible, photosGallery, setPhoto, close }: PhotoPickerModalProps) {\n const [source, setSource] = useState<'unsplash' | 'giphy'>('unsplash');\n const [searchQuery, setSearchQuery] = useState('');\n\n const handleImagePressed = useCallback(\n (value: { file: ImageSourcePropType; uri: string }) => async () => {\n if (Platform.OS === 'web') {\n const [result] = await Asset.loadAsync(value.file as any);\n let blob = await fetch(result.uri).then((r) => r.blob());\n let metadata = {\n type: 'image/png',\n };\n let file = new File([blob], 'mypicture.png', { ...metadata, lastModified: Date.now() });\n (file as any).uri = result.uri;\n\n setPhoto(file as any);\n } else {\n const result = await Asset.fromURI(value.uri);\n\n var newPhoto = {\n name: 'mypicture.png',\n fileName: 'mypicture.png',\n type: 'image/png',\n height: result.height,\n width: result.width,\n uri: result.uri,\n };\n\n setPhoto(newPhoto as any);\n }\n\n close();\n },\n []\n );\n\n return (\n \n \n \n \n {modalText}\n {photosGallery ? (\n item.uri}\n ListEmptyComponent={{t('no_image_found')}}\n renderItem={({ item }) => (\n \n \n \n )}\n />\n ) : (\n <>\n \n setSource(\n match(index)\n .with(0, () => 'unsplash' as 'unsplash')\n .with(1, () => 'giphy' as 'giphy')\n .otherwise(() => 'unsplash' as 'unsplash')\n )\n }\n selectedIndex={match(source)\n .with('unsplash', () => 0)\n .with('giphy', () => 1)\n .exhaustive()}\n buttons={[t('images'), t('gif')]}\n buttonContainerStyle={{ backgroundColor: 'transparent' }}\n buttonStyle={{ borderWidth: 0, borderRadius: 0 }}\n textStyle={{ fontSize: 12 }}\n containerStyle={{ height: 20 }}\n selectedButtonStyle={{ backgroundColor: PRIMARY_COLOR }}\n />\n \n \n \n \n 0)\n .with('giphy', () => 1)\n .exhaustive()}\n onChange={(index) =>\n setSource(\n match(index)\n .with(0, () => 'unsplash' as 'unsplash')\n .with(1, () => 'giphy' as 'giphy')\n .otherwise(() => 'unsplash' as 'unsplash')\n )\n }\n containerStyle={{ overflow: 'hidden' }}\n >\n \n {source === 'unsplash' && (\n \n )}\n \n \n {source === 'giphy' && }\n \n \n \n \n \n \n {source === 'giphy' && (\n \n \n \n )}\n \n )}\n \n );\n}\n\nexport type MobileOptionChoiceModalProps = {\n options: {\n label: string;\n icon: string;\n onPress: () => void;\n }[];\n visible: boolean;\n setVisible: (value: boolean) => void;\n};\n\nexport function MobileOptionChoiceModal({ options, visible, setVisible }: MobileOptionChoiceModalProps) {\n return (\n setVisible(false)}>\n {options.map((option, index) => (\n <>\n {index > 0 && }\n \n \n {option.label}\n \n \n ))}\n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n },\n image: {\n width: 150,\n height: 150,\n marginBottom: 10,\n borderRadius: 20,\n },\n document: {\n width: 150,\n marginBottom: 10,\n },\n buttonContainer: {\n flexDirection: 'row',\n flexWrap: 'wrap',\n justifyContent: 'center',\n },\n button: {\n width: 150,\n margin: 10,\n },\n divider: {\n width: '100%',\n height: 1,\n backgroundColor: LIGHT_GRAY,\n },\n overlayStyle: isMobile()\n ? {\n width: '90%',\n padding: 0,\n position: 'absolute',\n bottom: 0,\n }\n : { borderRadius: 20, padding: 0 },\n searchContainer: { paddingHorizontal: 20, paddingBottom: 10 },\n search: { marginTop: 10, marginBottom: 0 },\n searchInput: {\n marginHorizontal: 7.5,\n marginVertical: 7.5,\n },\n listContentContainer: {\n flexWrap: 'wrap',\n justifyContent: 'center',\n alignItems: 'center',\n flexDirection: 'row',\n },\n listEmptyLabel: { margin: 10 },\n listItemContainer: {\n backgroundColor: 'transparent',\n margin: 5,\n },\n listItemImage: {\n width: 100,\n height: 100,\n },\n});\n","import React from 'react';\nimport { useField } from 'formik';\nimport { Image, ImageSourcePropType, View } from 'react-native';\nimport { PhotoPickButtons } from '../PhotoPicker';\nimport { t } from 'i18next';\n\nexport type AvatarFieldProps = {\n name: string;\n};\n\nexport default function AvatarField({ name }: AvatarFieldProps) {\n const [field, , helper] = useField(name);\n\n return (\n \n \n {\n helper.setValue(photo);\n }}\n />\n \n );\n}\n\nexport const avatars = [\n {\n file: require('../../../../assets/av1.png'),\n uri: 'https://www.konecteam.fr/wp-content/uploads/2021/02/av1.png',\n },\n {\n file: require('../../../../assets/av2.png'),\n uri: 'https://www.konecteam.fr/wp-content/uploads/2021/02/av2.png',\n },\n {\n file: require('../../../../assets/av3.png'),\n uri: 'https://www.konecteam.fr/wp-content/uploads/2021/02/av3.png',\n },\n {\n file: require('../../../../assets/av4.png'),\n uri: 'https://www.konecteam.fr/wp-content/uploads/2021/02/av4.png',\n },\n {\n file: require('../../../../assets/av5.png'),\n uri: 'https://www.konecteam.fr/wp-content/uploads/2021/02/av5.png',\n },\n {\n file: require('../../../../assets/av6.png'),\n uri: 'https://www.konecteam.fr/wp-content/uploads/2021/02/av6.png',\n },\n {\n file: require('../../../../assets/av7.png'),\n uri: 'https://www.konecteam.fr/wp-content/uploads/2021/02/av7.png',\n },\n {\n file: require('../../../../assets/av8.png'),\n uri: 'https://www.konecteam.fr/wp-content/uploads/2021/02/av8.png',\n },\n] as {\n file: ImageSourcePropType;\n uri: string;\n}[];\n","import React from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { CheckBox } from '@rneui/base';\nimport { useDeviceSize } from '../../hooks/useDeviceSize';\nimport { LIGHT_GRAY, PRIMARY_COLOR } from '../../styles/appColor';\nimport { FormField } from './FormField';\n\nexport type AppRadioGroupProps = {\n title: string;\n value: T;\n onChange: (value: T) => void;\n options: {\n value: T;\n label: string;\n }[];\n renderLeft?: () => React.ReactElement | null;\n vertical?: boolean;\n};\n\nexport default function AppRadioGroup({ value, onChange, options, renderLeft, vertical }: AppRadioGroupProps) {\n const { deviceSize } = useDeviceSize();\n\n return (\n \n \n {options &&\n options.map((option) => (\n onChange(option.value)}\n containerStyle={[style.radio, deviceSize !== 'extra-large' ? style.radioSmall : undefined]}\n />\n ))}\n {renderLeft && renderLeft()}\n \n );\n}\n\nconst style = StyleSheet.create({\n radioTitle: {},\n radio: {\n backgroundColor: 'transparent',\n border: 'none',\n borderColor: 'transparent',\n alignItems: 'flex-start',\n marginVertical: 0,\n paddingVertical: 0,\n marginHorizontal: 0,\n },\n radioSmall: {\n padding: 0,\n paddingBottom: 10,\n },\n radioContainer: {\n flexDirection: 'row',\n alignItems: 'flex-start',\n },\n radioContainerSmall: {\n flexDirection: 'column',\n },\n verticalRadioContainer: {\n flexDirection: 'row',\n },\n});\n","import React from 'react';\nimport { useField } from 'formik';\nimport AppRadioGroup, { AppRadioGroupProps } from '../AppRadioGroup';\n\nexport type RadioGroupFieldProps = Omit, 'value'>, 'onChange'> & {\n name: string;\n};\n\nexport default function RadioGroupField({ name, ...rest }: RadioGroupFieldProps) {\n const [field, , helper] = useField(name);\n\n return ;\n}\n","import React from 'react';\nimport { Switch, SwitchProps } from 'react-native';\nimport { LIGHT_GRAY, SECONDARY_COLOR } from '../../styles/appColor';\n\nexport default function AppSwitch(props: SwitchProps) {\n return ;\n}\n","import React from 'react';\nimport { SwitchProps } from 'react-native';\nimport { useField } from 'formik';\nimport AppSwitch from '../AppSwitch';\n\nexport type SwitchFieldProps = Omit, 'onValueChange'> & {\n name: string;\n};\n\nexport default function SwitchField({ name, ...rest }: SwitchFieldProps) {\n const [field, , helper] = useField(name);\n\n return ;\n}\n","import { useField } from 'formik';\nimport { AppLanguagePicker, AppLanguagePickerProps } from '../AppLanguagePicker';\nimport { FormField } from '../FormField';\nimport { t } from '../../../services/translations';\nimport AppText, { Mode } from '../AppText';\n\nexport type LanguagePickerFieldProps = Omit, 'onLanguageChanged'> & {\n name: string;\n title: string;\n required?: boolean;\n};\n\nexport function LanguagePickerField({ name, title, required, ...rest }: LanguagePickerFieldProps) {\n const [field, meta, helper] = useField(name);\n\n return (\n \n \n {meta.touched && meta.error && {meta.error}}\n \n );\n}\n","import React from 'react';\nimport { StyleProp, View, ViewStyle } from 'react-native';\nimport { useField } from 'formik';\nimport { AppPickerSelect, FormField, FormFieldPickerProps } from '../FormField';\nimport AppText, { Mode } from '../AppText';\n\nexport type SelectFieldProps = Omit, 'defaultValue'>, 'onChangeText'>, 'title'> & {\n name: string;\n title?: string;\n required?: boolean;\n style?: StyleProp;\n onSelected?: (value: T) => void;\n};\n\nexport function SelectField({\n name,\n title,\n required,\n style,\n displayOnly,\n onSelected,\n ...rest\n}: SelectFieldProps) {\n const [field, meta, helper] = useField(name);\n\n const handleChangeText = (value: T) => {\n helper.setValue(value);\n if (onSelected) {\n onSelected(value);\n }\n };\n\n const selectComponent = (\n \n {...rest}\n displayOnly={displayOnly}\n defaultValue={field.value}\n onChangeText={handleChangeText}\n />\n );\n\n if (!title) {\n return selectComponent;\n } else {\n return (\n \n {selectComponent}\n {meta.touched && meta.error && {meta.error}}\n \n );\n }\n}\n","import React from 'react';\nimport { StyleProp, ViewStyle } from 'react-native';\nimport { useField } from 'formik';\nimport { FormField } from '../FormField';\nimport AppText, { Mode } from '../AppText';\nimport { AppDateTimePicker, AppDateTimePickerProps } from '../AppDateTimePicker';\n\nexport type DateFieldProps = Omit, 'onChangeText'> & {\n name: string;\n title: string;\n required?: boolean;\n style?: StyleProp;\n};\n\nexport default function DateField({ name, title, required, style, ...rest }: DateFieldProps) {\n const [field, meta, helper] = useField(name);\n\n return (\n \n {\n helper.setValue(new Date(isoDate));\n }}\n {...rest}\n />\n {meta.touched && meta.error && {meta.error}}\n \n );\n}\n","import React, { ReactNode, useMemo } from 'react';\nimport { FlatList, StyleProp, StyleSheet, TouchableOpacity, View, ViewStyle } from 'react-native';\nimport { useField } from 'formik';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport { AppPickerSelect, FormField, FormFieldPickerProps } from '../FormField';\nimport AppText, { Mode } from '../AppText';\nimport { LIGHT_GRAY, PRIMARY_COLOR } from '../../../styles/appColor';\n\nexport type MultiSelectFieldProps = Omit<\n FormFieldPickerProps,\n 'defaultValue' | 'data' | 'onChangeText' | 'onChangeText' | 'title'\n> & {\n name: string;\n title?: string;\n required?: boolean;\n style?: StyleProp;\n emptyText?: string;\n data: T[];\n valueExtractor: (item: T) => V;\n labelExtractor: (item: T) => string;\n renderItem: (item: T) => ReactNode;\n};\n\nexport function MultiSelectField({\n name,\n title,\n required,\n style,\n displayOnly,\n data,\n emptyText,\n valueExtractor,\n labelExtractor,\n renderItem,\n ...rest\n}: MultiSelectFieldProps) {\n const [field, meta, helper] = useField(name);\n\n const handleChangeText = (value: V) => {\n helper.setValue([...field.value, value]);\n };\n\n const onRemove = (item: T) => {\n helper.setValue(field.value.filter((e) => e !== valueExtractor(item)));\n };\n\n const filteredData = useMemo(() => {\n return data.filter((e) => !field.value.includes(valueExtractor(e)));\n }, [data, field.value]);\n\n const content = (\n \n \n {...rest}\n data={filteredData.map((e) => ({ value: valueExtractor(e), label: labelExtractor(e) }))}\n displayOnly={displayOnly}\n onChangeText={handleChangeText}\n />\n \n data={field.value}\n keyExtractor={(e) => e.toString()}\n renderItem={(args) => {\n const item = data.find((e) => valueExtractor(e) === args.item);\n\n return item ? (\n \n {renderItem(item)}\n {!displayOnly && (\n onRemove(item)}>\n \n \n )}\n \n ) : (\n <>\n );\n }}\n ListEmptyComponent={emptyText ? {emptyText} : undefined}\n />\n \n );\n\n if (!title) {\n return content;\n } else {\n return (\n \n {content}\n {meta.touched && meta.error && {meta.error}}\n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n itemContainer: {\n flexDirection: 'row',\n gap: 8,\n width: '100%',\n justifyContent: 'space-between',\n maxWidth: 300,\n alignItems: 'center',\n },\n emptyText: {\n textAlign: 'center',\n color: LIGHT_GRAY,\n },\n});\n","import React, { useEffect, useState } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport * as Yup from 'yup';\nimport AppText, { Mode } from '../atomic/AppText';\nimport { t } from '../../services/translations';\nimport AvatarField from '../atomic/formik/AvatarField';\nimport { Header2 } from '../containers/Header2';\nimport { ResponsiveRow } from '../containers/ResponsiveRow';\nimport { ResponsiveColumn } from '../containers/ResponsiveColumn';\nimport TextField from '../atomic/formik/TextField';\nimport RadioGroupField from '../atomic/formik/RadioGroupField';\nimport { Space2 } from '../../styles/spaces';\nimport SwitchField from '../atomic/formik/SwitchField';\nimport SubmitButton from '../atomic/formik/SubmitButton';\nimport { LanguagePickerField } from '../atomic/formik/LanguagePickerField';\nimport { SelectField } from '../atomic/formik/SelectField';\nimport {\n CompanyGeoSiteReduced,\n CompanyGroupReduced,\n CompanyServiceReduced,\n getCompanyGeoSites,\n getCompanyServices,\n getLoggedUserCompanyGroups,\n} from '../../services/api/company.api';\nimport { emailRegex } from '../../services/formUtil';\nimport { useField, useFormikContext } from 'formik';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport DateField from '../atomic/formik/DateField';\nimport { PRIMARY_COLOR } from '../../styles/appColor';\nimport { differenceInYears } from 'date-fns';\nimport { MultiSelectField } from '../atomic/formik/MultiSelectField';\n\nexport const schema = Yup.object({\n email: Yup.string().min(1).required(t('field_required')).matches(emailRegex, t('invalid_email')),\n firstName: Yup.string().min(1).required(t('field_required')),\n lastName: Yup.string().min(1).required(t('field_required')),\n service: Yup.number().required(t('field_required')),\n geoSite: Yup.number().required(t('field_required')),\n languageCode: Yup.string().required(t('field_required')),\n});\n\nexport type UserFormFieldsProps = {\n title?: string;\n displayEmailWarning?: boolean;\n allowAvatarEdit?: boolean;\n allowEmailEdit?: boolean;\n displayHideEmail?: boolean;\n displayGender?: boolean;\n};\n\nexport default function UserFormFields({\n title,\n displayEmailWarning,\n allowAvatarEdit,\n allowEmailEdit,\n displayHideEmail,\n displayGender,\n}: UserFormFieldsProps) {\n const user = useLoggedUser();\n const userToken = user?.token;\n const companyId = user?.entrepriseId;\n const initialValues = useFormikContext().initialValues;\n const [{ value: seniorityDate }] = useField('seniorityDate');\n\n const [companyServices, setCompanyServices] = useState([]);\n const [companyGeoSites, setCompanyGeoSites] = useState([]);\n const [companyGroups, setCompanyGroups] = useState([]);\n\n useEffect(() => {\n const asyncFunc = async () => {\n const companyServicePromise = getCompanyServices(companyId, userToken!).then(setCompanyServices);\n const companyGeoSitesPromise = getCompanyGeoSites(companyId, userToken!).then(setCompanyGeoSites);\n const companyGroupsPromise = getLoggedUserCompanyGroups(userToken!).then(setCompanyGroups);\n\n await Promise.all([companyServicePromise, companyGeoSitesPromise, companyGroupsPromise]);\n };\n\n asyncFunc();\n }, [userToken, companyId]);\n\n const seniorityYears = seniorityDate && differenceInYears(new Date(), seniorityDate);\n\n return (\n <>\n {title && {title}}\n {allowAvatarEdit && }\n {t('personal_information')}\n \n \n \n \n \n {displayHideEmail && (\n \n \n \n \n {t('hide_email')}\n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {t('hide_phone')}\n \n {displayGender && (\n \n \n \n \n \n )}\n\n \n {t('important_dates')}\n \n \n \n \n \n \n \n \n {seniorityDate && seniorityYears && seniorityYears > 0 ? (\n \n \n {seniorityYears > 1\n ? t('seniority_x_years', { count: seniorityYears })\n : t('seniority_x_year', { count: seniorityYears })}\n \n \n ) : undefined}\n \n \n\n \n {t('professional_information')}\n\n \n \n \n \n \n \n\n \n \n {\n return { label: v.libelle, value: v.id };\n })}\n displayOnly={!allowEmailEdit && !!initialValues.service}\n />\n \n \n {\n return { label: s.geoSite, value: s.id };\n })}\n displayOnly={!allowEmailEdit && !!initialValues.geoSite}\n />\n \n \n\n \n \n \n \n \n \n name=\"groups\"\n title={t('groups')}\n data={companyGroups}\n displayOnly={!allowEmailEdit}\n valueExtractor={(item) => item.id}\n labelExtractor={(item) => item.label}\n renderItem={(item) => {item.label}}\n />\n \n \n {displayEmailWarning && (\n \n \n {t('take_care_email_exists')}\n \n \n )}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n title: {\n marginVertical: 22,\n fontSize: 20,\n textAlign: 'center',\n },\n switchContainer: {\n flexDirection: 'row',\n marginTop: 20,\n marginBottom: 20,\n alignItems: 'center',\n },\n switchLabel: {\n marginLeft: 10,\n fontSize: 12,\n },\n seniorityContainer: {\n flex: 1,\n marginLeft: 10,\n justifyContent: 'center',\n },\n seniorityLabel: {\n color: PRIMARY_COLOR,\n },\n flex: {\n flex: 1,\n },\n groupText: {\n paddingVertical: 10,\n },\n});\n","import React, { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useMutation } from '@tanstack/react-query';\nimport { createUserProfile } from '../../services/api/user.api';\nimport { setLoading } from '../../store/action';\nimport { _compressImage, alertInfo } from '../../services/utils';\nimport { t } from '../../services/translations';\nimport Form from '../atomic/formik/Form';\nimport UserFormFields, { UserFormFieldsProps, schema } from './UserFormFields';\nimport { avatars } from '../atomic/formik/AvatarField';\nimport { Asset } from 'expo-asset';\nimport { Platform } from 'react-native';\nimport { ErrorReason } from '../../services/api/login';\nimport useLoggedUser from '../../hooks/useLoggedUser';\n\nexport type CreateUserFormProps = {\n onSubmitEnd?: (values: any) => Promise;\n} & UserFormFieldsProps;\n\nexport function CreateUserForm({ onSubmitEnd, ...rest }: CreateUserFormProps) {\n const user = useLoggedUser();\n const token = user?.token;\n const dispatch = useDispatch();\n\n const mutation = useMutation({\n mutationFn: async (values: any) => {\n dispatch(setLoading(true));\n\n try {\n const avatarData = await getAvatarData(values.gender);\n await createUserProfile(\n token,\n {\n ...values,\n visibleZone: JSON.stringify(values.visibleZone),\n },\n avatarData\n );\n\n if (onSubmitEnd) {\n await onSubmitEnd(values);\n }\n } catch (err: any) {\n console.error(err);\n\n if (err.message === ErrorReason.EMAIL_ALREADY_REGISTERED) {\n alertInfo(t('email_already_registered'));\n } else {\n alertInfo(t('error_occurred'));\n }\n } finally {\n dispatch(setLoading(false));\n }\n },\n });\n\n const handleSubmit = async (values: any, { resetForm }: { resetForm: () => void }) => {\n await mutation.mutateAsync(values);\n resetForm();\n };\n\n const isLoading = mutation.isLoading;\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n const initialValues = {\n email: '',\n firstName: '',\n lastName: '',\n service: undefined,\n geoSite: undefined,\n groups: [],\n jobTitle: '',\n landlineNumber: '',\n mobileNumber: '',\n visibleZone: false,\n languageCode: undefined,\n photo: null,\n hideEmail: false,\n hidePhone: false,\n };\n\n return (\n
\n \n \n );\n}\n\nasync function getAvatarData(gender: 'F' | 'H') {\n const avatar = gender === 'F' ? avatars[0] : avatars[2];\n\n const [result] = await Asset.loadAsync(Platform.OS === 'web' ? avatar.file : (avatar.uri as any));\n const compressedResult = await _compressImage({ assets: [result] });\n\n if (Platform.OS === 'web') {\n let blob = await fetch(compressedResult.uri).then((r) => r.blob());\n let metadata = {\n type: 'image/png',\n };\n\n let file = new File([blob], 'mypicture.png', metadata);\n file.uri = result.uri;\n\n return file;\n } else {\n return {\n name: 'mypicture.jpg',\n fileName: 'mypicture.jpg',\n type: (compressedResult as any).type || 'image/png',\n height: compressedResult.height,\n width: compressedResult.width,\n uri: compressedResult.uri,\n };\n }\n}\n","import React, { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport { setDirectoryListNeedsRefresh } from '../../../store/action';\nimport { alertInfo } from '../../../services/utils';\nimport { AppScreen } from '../../../components/containers/AppScreen';\nimport { AppSafeAreaView } from '../../../components/containers/AppSafeAreaView';\nimport Form from '../../../components/atomic/formik/Form';\nimport { ScrollView } from 'react-native-gesture-handler';\nimport { CreateUserForm } from '../../../components/molecules/CreateUserForm';\nimport { t } from '../../../services/translations';\n\nexport default function CreateUserScreen() {\n const navigation = useNavigation>();\n const dispatch = useDispatch();\n\n const handleSubmitEnd = useCallback(async (values: any) => {\n alertInfo(t('profile_created'));\n navigation.goBack();\n dispatch(setDirectoryListNeedsRefresh(true));\n }, []);\n\n return (\n \n \n
{}} initialValues={{}}>\n \n \n \n
\n
\n
\n );\n}\n","import { createMaterialTopTabNavigator } from '@react-navigation/material-top-tabs';\nimport React, { useState } from 'react';\nimport { RouteProp } from '@react-navigation/native';\nimport { UsersList } from '../../components/molecules/UsersList';\nimport { UserProfileOverlay } from '../../components/atomic/UserProfileOverlay';\nimport { User } from '../../entities/User';\nimport { ScreenNames } from '../../ScreenNames';\nimport { t } from '../../services/translations';\nimport { isMobile } from '../../services/utils';\nimport CreateUserScreen from './admin/CreateUserScreen';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport { BACKGROUND_COLOR } from '../../styles/appColor';\n\nexport type DirectoryScreenProps = {\n route: RouteProp;\n};\n\nexport function DirectoryScreen(props: DirectoryScreenProps) {\n const Tab = createMaterialTopTabNavigator();\n const user = useLoggedUser();\n\n return user.lovIdType !== 13 && (user.userSubAdmins?.length ?? 0) === 0 ? (\n \n ) : (\n \n \n \n \n );\n}\n\nexport function DirectoryList({ route }: DirectoryScreenProps) {\n const user = useLoggedUser();\n const allowEdit = route.params?.allowEdit === undefined ? false : route.params?.allowEdit;\n const [showProfileUser, setShowProfileUser] = useState(null);\n\n return (\n <>\n 0)}\n onPress={setShowProfileUser}\n />\n {showProfileUser && (\n setShowProfileUser(null)}\n userProfileData={showProfileUser}\n isVisible={!!showProfileUser}\n />\n )}\n \n );\n}\n","import React from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport AppText from './AppText';\nimport { LIGHT_GRAY, PRIMARY_COLOR } from '../../styles/appColor';\nimport AppSwitch from './AppSwitch';\nimport { FONT_FAMILY_DEFAULT } from '../../styles/globalStyle';\n\nexport function AppListSwitch(props: {\n onValueChange: (value: boolean) => void;\n value: boolean;\n firstOptionText: string;\n secondOptionText: string;\n design?: 'native' | 'ios';\n}) {\n return (\n \n {props.firstOptionText}\n \n {props.secondOptionText}\n \n );\n}\n\nconst style = StyleSheet.create({\n selected: {\n fontFamily: FONT_FAMILY_DEFAULT.bold,\n fontSize: 15,\n color: PRIMARY_COLOR,\n },\n notSelected: {\n fontSize: 15,\n color: LIGHT_GRAY,\n },\n});\n","import React from 'react';\nimport { StyleSheet, View, ViewStyle } from 'react-native';\nimport { ProfilePicture } from './ProfilePicture';\nimport AppText from './AppText';\nimport { combineNames } from '../../services/utils';\nimport { globalStyle } from '../../styles/globalStyle';\nimport { AspNetUsers } from '../../entities/AspNetUsers';\nimport { t } from '../../services/translations';\nimport { MActu } from '../../entities/MActu';\nimport { User } from '../../entities/User';\n\nexport type UserSubRowProps = {\n user: {\n fichierIdProfil: number;\n nom: string;\n prenom: string;\n deletedAt?: string;\n aspNetUsers?: AspNetUsers;\n mActu?: MActu;\n userIdCreateurNavigation?: User;\n };\n withPicture?: boolean;\n style?: ViewStyle;\n textColor?: string;\n textSize?: number;\n};\n\nexport function UserSubRow({ user, withPicture, style, textColor, textSize }: UserSubRowProps) {\n if (!user) {\n return <>;\n }\n\n if (\n user.deletedAt ||\n user.aspNetUsers?.deletedAt ||\n user.mActu?.userIdCreateurNavigation?.aspNetUsers?.deletedAt ||\n user.userIdCreateurNavigation?.aspNetUsers?.deletedAt\n ) {\n return (\n \n \n \n {t('inactive_user')}\n \n \n \n );\n }\n\n return (\n \n {withPicture ? : null}\n \n \n {combineNames(user)}\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n textContainer: {\n marginLeft: 10,\n flex: 1,\n },\n});\n","import { View, Dimensions, StyleProp, ViewStyle, ImageSourcePropType, StyleSheet } from 'react-native';\nimport { LinearGradient } from 'expo-linear-gradient';\nimport { UserSubRow } from './UserSubRow';\nimport AppText from './AppText';\nimport { getReadableDate, isMobile } from '../../services/utils';\nimport React, { ReactNode } from 'react';\nimport { User } from '../../entities/User';\nimport Image from './Image';\n\nfunction ImageWithFooterTextUnmemo(props: {\n imageSource: ImageSourcePropType;\n author: User;\n date: string;\n height?: number;\n header?: ReactNode;\n style?: StyleProp;\n}) {\n return (\n \n \n {props.header}\n \n \n \n \n {getReadableDate(props.date, true)}\n \n \n \n );\n}\n\nexport const ImageWithFooterText = React.memo(ImageWithFooterTextUnmemo);\n\nImageWithFooterTextUnmemo.defaultProps = {\n height: 200,\n};\n\nexport type TextSize = undefined | 'small' | 'medium' | 'large';\n\nconst getSize = (textSize: TextSize) => {\n switch (textSize) {\n case 'small':\n return 12;\n case 'medium':\n return 18;\n case 'large':\n return 24;\n default:\n return 12;\n }\n};\n\nexport function ImageWithFooterTextUnder(props: {\n imageSource;\n author;\n date;\n height?;\n style;\n textSize: TextSize;\n radius?: number;\n}) {\n return (\n \n \n \n \n \n {getReadableDate(props.date, true)}\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n width: '100%',\n height: isMobile() ? Dimensions.get('window').width - 50 : 290,\n borderRadius: 20,\n backgroundColor: '#161616',\n overflow: 'hidden',\n },\n backgroundImage: {\n ...StyleSheet.absoluteFillObject,\n borderRadius: 20,\n resizeMode: 'cover',\n },\n emptySpace: { flex: 1 },\n});\n","import * as React from 'react';\nimport { View, ViewStyle, StyleSheet } from 'react-native';\nimport AppText from './AppText';\n\nexport function Label(props: { icon?: React.ReactNode; text: string; color?: string; style?: ViewStyle }) {\n return (\n \n \n {props.icon ? {props.icon} : null}\n {props.text}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n paddingVertical: 5,\n paddingHorizontal: 10,\n borderRadius: 80,\n },\n text: {\n color: 'white',\n flex: 0,\n },\n icon: {\n marginRight: 8,\n },\n});\n","import { ContributionType } from '../../types';\nimport { Label } from './Label';\nimport React from 'react';\nimport { contributionTypeToColor, contributionTypeToText } from '../../services/api/contributions';\n\nexport function ContributionLabel(props: { contributionType: ContributionType }) {\n return (\n \n );\n}\n","import { ContributionType } from '../../types';\nimport {\n SellPostData,\n SpreadingData,\n ActivityPostData,\n MutualAidPostData,\n CarPoolPostData,\n LostPropertyPostData,\n EventPostData,\n} from '../../models/Contribution';\n\nexport function getSpreadingFormData(data: SpreadingData) {\n return {\n userIds: Array.from(data.users),\n users: Array.from(data.users),\n entrepriseServiceIds: Array.from(data.services),\n entrepriseSiteGeoIds: Array.from(data.siteGeos),\n entrepriseGroupIds: Array.from(data.groups),\n spreadingType: data.spreadingType,\n categoryId: data.categoryId,\n };\n}\n\nexport function getFormDataSell(data: SellPostData) {\n return {\n userId: data.userId,\n entrepriseId: data.companyId,\n type: 'Vente',\n description: data.description,\n titre: data.title,\n prix: data.price === undefined || data.price === null ? '' : data.price.toString(),\n marque: data.brand === undefined || data.brand === null ? '' : data.brand,\n images: data.images,\n commentsActivated: data.commentsActivated,\n notifActivated: data.notifActivated,\n emailActivated: data.emailActivated,\n ...getSpreadingFormData(data),\n };\n}\n\nexport function getFormDataActivity(data: ActivityPostData) {\n return {\n userId: data.userId,\n entrepriseId: data.companyId,\n type: 'Hobbies',\n activite: data.title,\n description: data.description,\n images: data.images,\n commentsActivated: data.commentsActivated,\n notifActivated: data.notifActivated,\n emailActivated: data.emailActivated,\n ...getSpreadingFormData(data),\n };\n}\n\nexport function getFormDataMutualAid(data: MutualAidPostData) {\n return {\n contribution: {\n entrepriseId: data.companyId,\n userIdCreateur: data.userId,\n visibleZone: false,\n },\n entrepriseId: data.companyId,\n service: {\n description: data.description,\n theme: data.title,\n },\n images: data.images,\n commentsActivated: data.commentsActivated,\n notifActivated: data.notifActivated,\n emailActivated: data.emailActivated,\n ...getSpreadingFormData(data),\n };\n}\n\nexport function getFormDataCarPool(data: CarPoolPostData) {\n return {\n contribution: {\n entrepriseId: data.companyId,\n userIdCreateur: data.userId,\n visibleZone: false,\n },\n covoit: {\n description: data.description,\n libelleDepart: data.start,\n adresseDepart: data.startCoordinates,\n libelleArrivee: data.end,\n adresseArrivee: data.endCoordinates,\n lovIdOffre: 25,\n lovIdType: data.permanent ? 22 : 23,\n },\n entrepriseId: data.companyId,\n commentsActivated: data.commentsActivated,\n notifActivated: data.notifActivated,\n emailActivated: data.emailActivated,\n ...getSpreadingFormData(data),\n };\n}\n\nexport function getFormDataEvent(data: EventPostData) {\n const users = data.users !== undefined && data.users !== null ? data.users : [];\n return {\n userId: data.userId,\n entrepriseId: data.companyId,\n type: 'Evenement',\n titre: data.title,\n description: data.description,\n date: data.date,\n cagnotte: data.moneyPool,\n place: data.place,\n url: data.url,\n availableSeats: data.availableSeats,\n lovIdType: users.length === 0 ? 20 : 21,\n visibleZone: false,\n nomCreateur: 'Prenom Nom',\n images: data.images,\n commentsActivated: data.commentsActivated,\n notifActivated: data.notifActivated,\n emailActivated: data.emailActivated,\n ...getSpreadingFormData(data),\n };\n}\n\nexport function getFormDataLostProperty(data: LostPropertyPostData) {\n return {\n userId: data.userId,\n entrepriseId: data.companyId,\n type: 'Objet',\n lieu: data.location,\n description: data.title,\n date: data.date,\n lovIdType: data.lost ? 19 : 18,\n images: data.images,\n commentsActivated: data.commentsActivated,\n notifActivated: data.notifActivated,\n emailActivated: data.emailActivated,\n ...getSpreadingFormData(data),\n };\n}\n\nexport function getFormDataByContributionType(item: any, contributionType: ContributionType) {\n let newUserData;\n switch (contributionType) {\n case ContributionType.SELL:\n newUserData = getFormDataSell(item);\n break;\n case ContributionType.ACTIVITY:\n newUserData = getFormDataActivity(item);\n break;\n case ContributionType.MUTUAL_AID:\n newUserData = getFormDataMutualAid(item);\n break;\n case ContributionType.CARPOOL:\n newUserData = getFormDataCarPool(item);\n break;\n case ContributionType.EVENT:\n newUserData = getFormDataEvent(item);\n break;\n case ContributionType.FORMATION:\n newUserData = getFormDataEvent(item);\n break;\n case ContributionType.LOST_PROPERTY:\n newUserData = getFormDataLostProperty(item);\n break;\n }\n return newUserData;\n}\n","export enum GetContributionsMode {\n all,\n mine,\n interested,\n requests,\n offers,\n participation,\n toApprove,\n reviewed,\n approved,\n reported,\n ADMIN_VIEW,\n not_set,\n admin_all,\n}\n\nexport function IntToGetContributionsMode(value: string) {\n for (let gcm in GetContributionsMode) {\n if (GetContributionsMode[gcm] == value) return GetContributionsMode[gcm] as any as GetContributionsMode;\n }\n\n return GetContributionsMode.not_set;\n}\n","import axios from './base';\nimport { apiUrlBase } from '../../../configuration';\nimport { headers } from './base';\nimport { getSpreadingFormData } from './formData.api';\nimport { GetContributionsMode } from './getContributionsMode';\nimport { CompanyNewPostData } from '../../models/Contribution';\nimport { objectToFormData } from '../formUtil';\nimport { UserSaved } from '../storage';\nimport { MActuPostDetails } from '../../entities/MActuPostDetails';\nimport { CompanyNewsUpload } from '../../models/CompanyNews';\nimport { MActuFavoriteUpdate } from '../../entities/MActuFavoriteUpdate';\nimport { MActuInterestUpdate } from '../../entities/MActuInterestUpdate';\nimport { User } from '../../entities/User';\nimport { Paginated } from '../../entities/Paginated';\n\nexport async function removeCompanyNews(user: UserSaved, id: number) {\n return axios\n .put(\n apiUrlBase + 'MActu/sup/' + id,\n {},\n {\n headers: headers(user.token),\n }\n )\n .then((response) => {\n return response;\n });\n}\n\nexport async function setApproveNews(user: UserSaved, newsId: number) {\n return axios\n .put(\n apiUrlBase + 'MActu/dovalider/' + newsId,\n {},\n {\n headers: headers(user.token),\n }\n )\n .then((response) => {\n return response;\n });\n}\n\nexport function getCompanyNewsDetail(user: UserSaved, id?: number) {\n return axios\n .get(`${apiUrlBase}MActu/detail/${id}`, { headers: headers(user.token) })\n .then((response) => {\n return response.data;\n });\n}\n\nexport function getCompanyNews(user: UserSaved, getContributionsMode: GetContributionsMode) {\n let url = '';\n switch (getContributionsMode) {\n case GetContributionsMode.all:\n url = apiUrlBase + 'MActu/user/' + user.id + '/paginated';\n break;\n case GetContributionsMode.toApprove:\n url = apiUrlBase + 'MActu/avalider/' + user.entrepriseId + '/paginated';\n break;\n default:\n case GetContributionsMode.approved:\n url = apiUrlBase + 'MActu/valider/' + user.entrepriseId + '/paginated';\n break;\n }\n return axios\n .get(url, {\n headers: headers(user.token),\n })\n .then((response) => response.data);\n}\n\nexport const postCompanyNews = (user: UserSaved, data: CompanyNewsUpload) => {\n const formData = objectToFormData({ ...data, visibleZone: false });\n\n return axios.post(`${apiUrlBase}mactu/mactu`, formData, { headers: headers(user.token, 'multipart/form-data') });\n};\n\nexport const putCompanyNews = (user: UserSaved, id: number, data: CompanyNewsUpload) => {\n const formData = objectToFormData({ ...data, visibleZone: false });\n\n return axios.put(`${apiUrlBase}mactu/mactu/update/${id}`, formData, {\n headers: headers(user.token, 'multipart/form-data'),\n });\n};\n\nexport function publishNews(data: CompanyNewPostData) {\n const body: any = {\n userId: data.user.id,\n entrepriseId: data.user.entreprise.id,\n images: data.images,\n titre: data.title,\n texte: data.description,\n visibleZone: false,\n highlightedDays: data.highlightedDays,\n traduction: JSON.stringify(data.translations),\n DateDebutPublication: undefined,\n DateFinPublication: undefined,\n visibleStartDate: data.visibleStartDate,\n visibleEndDate: data.visibleEndDate,\n translations: data.translations,\n notifActivated: data.notifActivated,\n emailActivated: data.emailActivated,\n ...getSpreadingFormData(data),\n };\n\n if (data.visibleStartDate !== undefined) {\n body.DateDebutPublication = data.visibleStartDate;\n\n if (data.visibleEndDate !== undefined) {\n body.DateFinPublication = data.visibleEndDate;\n }\n }\n\n const formData = objectToFormData(body);\n\n try {\n return axios.post(apiUrlBase + 'mactu/mactu', formData, {\n headers: headers(data.user.token, 'multipart/form-data'),\n });\n } catch (e) {}\n}\n\nexport function updateNews(id: number, data: CompanyNewPostData) {\n const body: any = {\n userId: data.user.id,\n entrepriseId: data.user.entreprise.id,\n titre: data.title,\n texte: data.description,\n visibleZone: false,\n highlightedDays: data.highlightedDays,\n traduction: JSON.stringify(data.translations),\n DateDebutPublication: undefined,\n DateFinPublication: undefined,\n visibleStartDate: data.visibleStartDate,\n visibleEndDate: data.visibleEndDate,\n translations: data.translations,\n notifActivated: data.notifActivated,\n emailActivated: data.emailActivated,\n ...getSpreadingFormData(data),\n };\n body.DateDebutPublication = data.visibleStartDate;\n body.DateFinPublication = data.visibleEndDate;\n\n const formData = objectToFormData(body);\n\n return axios.put(apiUrlBase + 'MActu/mactu/update/' + id, formData, {\n headers: headers(data.user.token, 'multipart/form-data'),\n });\n}\n\nexport const getNewsViewCount = (user: UserSaved, id: number) =>\n axios\n .get(`${apiUrlBase}MActuUserViews/${id}`, {\n headers: headers(user.token),\n })\n .then((d) => Number(d.data))\n .catch(() => 0);\n\nexport async function listNewsInterestedUsers(\n user: UserSaved,\n id: number,\n cursor: string | null\n): Promise> {\n return axios\n .get(`${apiUrlBase}MActu/${id}/interested`, {\n headers: headers(user.token),\n params: { cursor },\n })\n .then((d) => d.data)\n .catch(() => []);\n}\n\nexport async function setInterestedNews(user: UserSaved, id: number, body: MActuInterestUpdate) {\n return axios\n .put(`${apiUrlBase}MActu/${id}/interested`, body, {\n headers: headers(user.token),\n })\n .then((response) => {\n return response;\n });\n}\n\nexport async function setFavoriteNews(user: UserSaved, mActuId: number, body: MActuFavoriteUpdate) {\n return axios\n .put(`${apiUrlBase}MActu/${mActuId}/favorite`, body, {\n headers: headers(user.token),\n })\n .then((response) => {\n return response;\n });\n}\n","import React from 'react';\nimport { TouchableOpacity } from 'react-native';\nimport { ScreenNames } from '../../ScreenNames';\nimport { getIdFromItem } from '../../services/api/contributions';\nimport { PRIMARY_COLOR } from '../../styles/appColor';\nimport { ContributionType, ContributionTypesInfos } from '../../types';\nimport { NavigationProp, ParamListBase, useNavigation } from '@react-navigation/native';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\n\nexport function EditButton(props: {\n item: any;\n contributionType: ContributionType;\n navigation: NavigationProp;\n}) {\n const item = props.item;\n const contributionType = props.contributionType;\n const id = getIdFromItem(item, contributionType);\n useNavigation();\n return (\n \n props.navigation.navigate(ScreenNames.LoggedInDrawerNavigation, {\n screen: ContributionTypesInfos[contributionType].formScreen ?? ScreenNames.ContributionEditFormScreen,\n params: {\n id: id,\n contributionType: props.contributionType,\n },\n })\n }\n >\n \n \n );\n}\n","import axios from './base';\nimport { apiUrlBase } from '../../../configuration';\nimport { headers } from './base';\nimport { getSpreadingFormData } from './formData.api';\nimport { EventPostData } from '../../models/Contribution';\nimport { objectToFormData } from '../formUtil';\nimport { UserSaved } from '../storage';\n\nconst getDuration = (startDate: string | undefined, endDate: string | undefined) => {\n if (!!startDate && !!endDate) {\n const start = new Date(startDate).getTime() / 1000;\n const end = new Date(endDate).getTime() / 1000;\n if (end >= start) {\n return Math.floor(end - start);\n }\n }\n\n return 3600; // 1 hour fallback\n};\n\nexport function sendEvent(item: EventPostData, token: string, users: number[]) {\n let _users = users !== undefined && users !== null ? [...users] : [];\n const formData = objectToFormData({\n userId: item.userId,\n entrepriseId: item.companyId,\n type: 'Evenement',\n titre: item.title,\n description: item.description,\n date: item.date,\n images: item.images,\n duration: getDuration(item.date, item.endDate),\n cagnotte: item.moneyPool,\n place: item.place,\n url: item.url,\n availableSeats: item.availableSeats,\n lovIdType: _users.length !== 0 ? 21 : 20,\n visibleZone: false,\n nomCreateur: item.user.prenom + ' ' + item.user.nom,\n notifActivated: item.notifActivated,\n emailActivated: item.emailActivated,\n ...getSpreadingFormData(item),\n });\n\n return axios.post(apiUrlBase + 'Contributions/event', formData, {\n headers: headers(token, 'multipart/form-data'),\n });\n}\n\nexport function updateEvent(id: number, item: EventPostData, token: string, users: number[]) {\n let _users = users !== undefined && users !== null ? [...users] : [];\n const formData = objectToFormData({\n userId: item.userId,\n entrepriseId: item.companyId,\n type: 'Evenement',\n titre: item.title,\n description: item.description,\n date: item.date,\n images: item.images,\n duration: getDuration(item.date, item.endDate),\n cagnotte: item.moneyPool,\n place: item.place,\n url: item.url,\n availableSeats: item.availableSeats,\n lovIdType: _users.length !== 0 ? 21 : 20,\n visibleZone: false,\n nomCreateur: item.user.prenom + ' ' + item.user.nom,\n notifActivated: item.notifActivated,\n emailActivated: item.emailActivated,\n ...getSpreadingFormData(item),\n });\n\n return axios.put(apiUrlBase + 'Contributions/event/update/' + id, formData, {\n headers: headers(token, 'multipart/form-data'),\n });\n}\n\nexport async function setAttendEvent(user: UserSaved, eventId: number, attend: boolean) {\n return axios\n .put(\n apiUrlBase + 'ContributionEvenementsUsers/user/' + user.id + '/contributionEvent/' + eventId,\n {\n contributionEvenementId: eventId,\n userId: user.id,\n reponse: attend,\n },\n {\n headers: headers(user.token),\n }\n )\n .then((response) => {\n return response;\n });\n}\n\nexport function recallEventNotification(user: UserSaved, id: number) {\n return axios\n .post(\n `${apiUrlBase}ContributionEvenements/recall-notification/${id}`,\n {},\n {\n headers: headers(user.token, 'multipart/form-data'),\n }\n )\n .then((response) => {\n if (response.status === 200) {\n return response.data;\n } else {\n return null;\n }\n });\n}\n\nexport function getEventExportPdfUrl(user: UserSaved, id: number) {\n return `${apiUrlBase}ContributionEvenements/pdf/${id}?access_token=${user.token}`;\n}\n","import axios from './base';\nimport { apiUrlBase } from '../../../configuration';\nimport { headers } from './base';\nimport { getSpreadingFormData } from './formData.api';\nimport { EventPostData } from '../../models/Contribution';\nimport { objectToFormData } from '../formUtil';\nimport { UserSaved } from '../storage';\n\nconst getDuration = (startDate: string | undefined, endDate: string | undefined) => {\n if (!!startDate && !!endDate) {\n const start = new Date(startDate).getTime() / 1000;\n const end = new Date(endDate).getTime() / 1000;\n if (end >= start) {\n return Math.floor(end - start);\n }\n }\n\n return 3600; // 1 hour fallback\n};\n\nexport function sendTraining(item: EventPostData, token: string, users: any) {\n let _users = users !== undefined && users !== null ? [...users] : [];\n const formData = objectToFormData({\n userId: item.userId,\n entrepriseId: item.companyId,\n type: 'Evenement',\n titre: item.title,\n description: item.description,\n date: item.date,\n images: item.images,\n duration: getDuration(item.date, item.endDate),\n cagnotte: item.moneyPool,\n place: item.place,\n url: item.url,\n availableSeats: item.availableSeats,\n lovIdType: _users.length !== 0 ? 21 : 20,\n visibleZone: false,\n nomCreateur: item.user.prenom + ' ' + item.user.nom,\n notifActivated: item.notifActivated,\n emailActivated: item.emailActivated,\n ...getSpreadingFormData(item),\n });\n\n return axios.post(apiUrlBase + 'Contributions/training', formData, {\n headers: headers(token, 'multipart/form-data'),\n });\n}\n\nexport function updateTraining(id: number, item: EventPostData, token: string, users: number[]) {\n let _users = users !== undefined && users !== null ? [...users] : [];\n const formData = objectToFormData({\n userId: item.userId,\n entrepriseId: item.companyId,\n type: 'Formation',\n titre: item.title,\n description: item.description,\n date: item.date,\n images: item.images,\n duration: getDuration(item.date, item.endDate),\n cagnotte: item.moneyPool,\n place: item.place,\n url: item.url,\n availableSeats: item.availableSeats,\n lovIdType: _users.length !== 0 ? 21 : 20,\n visibleZone: false,\n nomCreateur: item.user.prenom + ' ' + item.user.nom,\n notifActivated: item.notifActivated,\n emailActivated: item.emailActivated,\n ...getSpreadingFormData(item),\n });\n\n return axios.put(apiUrlBase + 'Contributions/training/update/' + id, formData, {\n headers: headers(token, 'multipart/form-data'),\n });\n}\n\nexport async function setAttendFormation(user: UserSaved, eventId: number, attend: boolean) {\n return axios\n .put(\n apiUrlBase + 'ContributionEvenementsUsers/user/' + user.id + '/contributionEvent/' + eventId,\n {\n contributionEvenementId: eventId,\n userId: user.id,\n reponse: attend,\n },\n {\n headers: headers(user.token),\n }\n )\n .then((response) => {\n return response;\n });\n}\n\nexport function recallFormationNotification(user: UserSaved, id: number) {\n return axios\n .post(\n `${apiUrlBase}ContributionFormations/recall-notification/${id}`,\n {},\n {\n headers: headers(user.token, 'multipart/form-data'),\n }\n )\n .then((response) => {\n if (response.status === 200) {\n return response.data;\n } else {\n return null;\n }\n });\n}\n","import axios from './base';\nimport { apiUrlBase } from '../../../configuration';\nimport { headers } from './base';\nimport { ContributionType, User } from '../../types';\nimport { objectToFormData } from '../formUtil';\nimport { UserSaved } from '../storage';\nimport { alertInfo } from '../utils';\nimport { sendEvent, updateEvent } from './event.contributions.api';\nimport { sendTraining, updateTraining } from './formation.contributions.api';\nimport { getFormDataByContributionType } from './formData.api';\nimport { GetContributionsMode } from './getContributionsMode';\nimport { _getPrefixByContributionType, _postPrefixByContributionType } from './helper.api';\nimport { publishNews, updateNews } from './news.contributions.api';\nimport { Paginated } from '../../entities/Paginated';\n\nif (__DEV__) {\n axios.interceptors.response.use((response) => {\n return response;\n });\n}\n\nexport async function report(user: UserSaved, contributionId: number, title: string) {\n return axios\n .post(\n apiUrlBase + 'ContributionSignalements',\n {\n contributionId,\n userIdSignaler: user.id,\n title,\n },\n {\n headers: headers(user.token),\n }\n )\n .then((response) => {\n return response.data;\n });\n}\n\nexport async function unreport(user: UserSaved, contributionId: number) {\n return axios\n .delete(apiUrlBase + 'ContributionSignalements/' + contributionId, {\n headers: headers(user.token),\n })\n .then((response) => {\n return response.data;\n });\n}\n\nexport type GetContributionsListOptions = {\n favorites?: boolean;\n filterByService?: boolean;\n filterByGeoSite?: boolean;\n categoryId?: number;\n};\n\nexport async function getContributionsList(\n user: UserSaved,\n mode: GetContributionsMode,\n contributionType: ContributionType,\n search: string,\n cursor: string | null,\n limit?: number,\n options: GetContributionsListOptions = {}\n) {\n let url = '';\n\n if (contributionType === ContributionType.ALL && mode !== GetContributionsMode.admin_all) {\n url = apiUrlBase + 'Contributions/view/user/' + user.id + '/paginated';\n } else if (contributionType === ContributionType.COMPANY_NEWS) {\n switch (mode) {\n case GetContributionsMode.all:\n url = apiUrlBase + 'MActu/user/' + user.id + '/paginated';\n break;\n case GetContributionsMode.toApprove:\n url = apiUrlBase + 'MActu/avalider/' + user.entrepriseId + '/paginated';\n break;\n default:\n case GetContributionsMode.approved:\n url = apiUrlBase + 'MActu/valider/' + user.entrepriseId + '/paginated';\n break;\n }\n } else {\n let urlPrefixType = GetContributionsMode.admin_all === mode ? '' : _getPrefixByContributionType(contributionType);\n switch (mode) {\n case GetContributionsMode.admin_all:\n url = apiUrlBase + 'Contributions/view/entreprise/' + user.id + '/paginated';\n break;\n case GetContributionsMode.all:\n url = apiUrlBase + 'Contribution' + urlPrefixType + '/view/user/' + user.id + '/paginated';\n break;\n case GetContributionsMode.mine:\n url = apiUrlBase + 'Contribution' + urlPrefixType + '/user/' + user.id + '/paginated';\n break;\n case GetContributionsMode.interested:\n url = apiUrlBase + 'Contribution' + urlPrefixType + '/interest/user/' + user.id + '/paginated';\n break;\n case GetContributionsMode.requests:\n url = apiUrlBase + 'Contribution' + urlPrefixType + '/view/demande/' + user.id + '/paginated';\n break;\n case GetContributionsMode.offers:\n url = apiUrlBase + 'Contribution' + urlPrefixType + '/view/offre/' + user.id + '/paginated';\n break;\n case GetContributionsMode.participation:\n url = apiUrlBase + 'Contribution' + urlPrefixType + '/view/participation/' + user.id + '/paginated';\n break;\n case GetContributionsMode.toApprove:\n url = apiUrlBase + 'Contribution' + urlPrefixType + '/avalider/entreprise/' + user.entrepriseId + '/paginated';\n break;\n case GetContributionsMode.reviewed:\n case GetContributionsMode.approved:\n url = apiUrlBase + 'Contribution' + urlPrefixType + '/valide/entreprise/' + user.entrepriseId + '/paginated';\n break;\n }\n }\n\n return axios\n .get(url, {\n headers: headers(user.token),\n params: { search: search && search.length > 0 ? search : undefined, cursor, limit, ...options },\n })\n .then((response) => {\n if (response.status === 200) {\n return response.data;\n } else {\n return null;\n }\n });\n}\n\nexport async function getContributionItem(user: UserSaved, itemId: number, contributionType: ContributionType) {\n let urlPrefixType = _getPrefixByContributionType(contributionType);\n let url = apiUrlBase + 'Contribution' + urlPrefixType + '/detail/' + itemId + '/user/' + user.id;\n if (contributionType === ContributionType.SUGGESTION) {\n url = apiUrlBase + 'Contribution' + urlPrefixType + '/' + itemId;\n }\n\n if (contributionType === ContributionType.DOCUMENT) {\n url = apiUrlBase + 'Contribution' + urlPrefixType + '/document/' + itemId;\n }\n\n if (contributionType === ContributionType.COMPANY_NEWS) {\n url = apiUrlBase + 'MActu/detail/' + itemId;\n }\n\n if (contributionType === ContributionType.EVENT || contributionType === ContributionType.FORMATION) {\n url = apiUrlBase + 'Contribution' + urlPrefixType + '/' + itemId;\n }\n\n return axios\n .get(url, {\n headers: headers(user.token),\n })\n .then((response) => {\n return response.data;\n })\n .catch((e) => alertInfo(e));\n}\n\nasync function post(url: string, body: any, token: string) {\n return axios.post(url, body, {\n headers: headers(token),\n });\n}\n\nasync function put(url: string, body: any, token: string) {\n return axios.put(url, body, {\n headers: headers(token),\n });\n}\n\nasync function postWithPhoto(url: string, body: any, token: string) {\n const formData = objectToFormData(body);\n\n return axios\n .post(url, formData, {\n headers: headers(token, 'multipart/form-data'),\n })\n .then((response) => response.data.json);\n}\n\nasync function putWithPhoto(url: string, body: any, token: string) {\n const formData = objectToFormData(body);\n\n return axios\n .put(url, formData, {\n headers: headers(token, 'multipart/form-data'),\n })\n .then((response) => response.data.json);\n}\n\nexport async function sendContribution(item: any, token: string, users: number[], contributionType: ContributionType) {\n if (contributionType === ContributionType.EVENT) {\n return sendEvent(item, token, users);\n }\n if (contributionType === ContributionType.FORMATION) {\n return sendTraining(item, token, users);\n }\n if (contributionType === ContributionType.COMPANY_NEWS) {\n return publishNews({ ...item });\n }\n\n let body = getFormDataByContributionType(item, contributionType);\n\n if (contributionType === ContributionType.MUTUAL_AID) {\n return postWithPhoto(apiUrlBase + 'Contributions/' + _postPrefixByContributionType(contributionType), body, token);\n }\n if (contributionType === ContributionType.CARPOOL) {\n return post(apiUrlBase + 'Contributions/' + _postPrefixByContributionType(contributionType), body, token);\n } else {\n return postWithPhoto(apiUrlBase + 'Contributions/' + _postPrefixByContributionType(contributionType), body, token);\n }\n}\n\nexport async function sendUpdateContribution(\n id: number,\n item: any,\n token: string,\n users: number[],\n contributionType: ContributionType\n) {\n if (contributionType === ContributionType.EVENT) {\n return updateEvent(id, item, token, users);\n }\n if (contributionType === ContributionType.FORMATION) {\n return updateTraining(id, item, token, users);\n }\n if (contributionType === ContributionType.COMPANY_NEWS) {\n return updateNews(id, item);\n }\n\n if (contributionType === ContributionType.MUTUAL_AID) {\n let body = getFormDataByContributionType(item, contributionType);\n return putWithPhoto(\n apiUrlBase + 'Contributions/' + _postPrefixByContributionType(contributionType) + '/update/' + id,\n body,\n token\n );\n }\n\n if (contributionType === ContributionType.CARPOOL) {\n return put(\n apiUrlBase + 'Contributions/' + _postPrefixByContributionType(contributionType) + '/update/' + id,\n item,\n token\n );\n } else {\n let body = getFormDataByContributionType(item, contributionType);\n return putWithPhoto(\n apiUrlBase + 'Contributions/' + _postPrefixByContributionType(contributionType) + '/update/' + id,\n body,\n token\n );\n }\n}\n\nexport async function removeContribution(user: UserSaved, contributionId: number) {\n return axios\n .delete(apiUrlBase + 'Contributions/' + contributionId, {\n headers: headers(user.token),\n })\n .then((response) => {\n return response;\n });\n}\n\nexport async function setApproveContribution(\n user: UserSaved,\n id: number,\n approved: boolean,\n contributionType: ContributionType\n) {\n let urlPrefixType = _getPrefixByContributionType(contributionType);\n if (approved) {\n return axios\n .put(\n apiUrlBase + 'Contribution' + urlPrefixType + '/valider/' + id,\n {},\n {\n headers: headers(user.token),\n }\n )\n .then((response) => {\n return response;\n });\n } else {\n const refuseSegment = contributionType === ContributionType.SURVEY ? 'decline' : 'refuser';\n\n return axios\n .put(\n `${apiUrlBase}Contribution${urlPrefixType}/${refuseSegment}/${id}`,\n {},\n {\n headers: headers(user.token),\n }\n )\n .then((response) => {\n return response;\n });\n }\n}\n\nexport async function listContributionInterestedUsers(\n user: UserSaved,\n contributionId: number,\n cursor: string | null\n): Promise> {\n return axios\n .get(`${apiUrlBase}Contributions/${contributionId}/interested`, {\n headers: headers(user.token),\n params: { cursor },\n })\n .then((d) => d.data)\n .catch(() => []);\n}\n","import React from 'react';\nimport { useDispatch } from 'react-redux';\nimport { removeContribution } from '../../services/api/contribution.api';\nimport { UserSaved } from '../../services/storage';\nimport { t } from '../../services/translations';\nimport { alertInfo } from '../../services/utils';\nimport { setContributionsListNeedsRefresh, setLoading } from '../../store/action';\nimport { PRIMARY_COLOR } from '../../styles/appColor';\nimport { TwoActionsGenericPopup } from '../containers/TwoActionsButtonPopup';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\n\nexport type RemoveButtonProps = { item: any; user: UserSaved };\n\nexport function RemoveButton({ item, user }: RemoveButtonProps) {\n const dispatch = useDispatch();\n\n return (\n {\n dispatch(setLoading(true));\n removeContribution(user, item.contributionId)\n .then(() => alertInfo(t('removed_ok')))\n .finally(() => {\n dispatch(setContributionsListNeedsRefresh(true));\n dispatch(setLoading(false));\n });\n }}\n onPressButton2={() => {}}\n >\n \n \n );\n}\n","import React, { useCallback, useMemo, useState } from 'react';\nimport { Pressable, StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\nimport { match } from 'ts-pattern';\nimport { MActuEntrepriseService } from '../../entities/MActuEntrepriseService';\nimport { MActuEntrepriseSiteGeo } from '../../entities/MActuEntrepriseSiteGeo';\nimport { MActuEntrepriseGroup } from '../../entities/MActuEntrepriseGroup';\nimport { contributionColors } from '../../services/api/contributions';\nimport { t } from '../../services/translations';\nimport { SpreadingType } from '../../types';\nimport { Chip } from './Chip';\nimport { ContributionEntrepriseGroup } from '../../entities/ContributionEntrepriseGroup';\nimport { ContributionEntrepriseSiteGeo } from '../../entities/ContributionEntrepriseSiteGeo';\nimport { ContributionEntrepriseService } from '../../entities/ContributionEntrepriseService';\n\nconst colorList = Object.values(contributionColors);\n\nexport type SpreadingChipListProps = {\n item: {\n id: number;\n spreadingType: SpreadingType;\n entrepriseServices: (MActuEntrepriseService | ContributionEntrepriseService)[];\n entrepriseSiteGeos: (MActuEntrepriseSiteGeo | ContributionEntrepriseSiteGeo)[];\n entrepriseGroups: (MActuEntrepriseGroup | ContributionEntrepriseGroup)[];\n };\n monocolor?: boolean;\n maxItems?: number;\n chipStyle?: StyleProp;\n};\n\nexport default function SpreadingChipList({ item, monocolor, maxItems, chipStyle }: SpreadingChipListProps) {\n const [moreHovered, setMoreHovered] = useState(false);\n\n const spreadingItems = useMemo(\n () =>\n match(item)\n .with({ spreadingType: SpreadingType.ENTREPRISE }, () => [t('company_wide')])\n .with({ spreadingType: SpreadingType.USERS }, () => [t('some_users')])\n .with({ spreadingType: SpreadingType.SERVICES }, () =>\n item.entrepriseServices.map((e) => e.entrepriseService.libelle)\n )\n .with({ spreadingType: SpreadingType.SITES }, () =>\n item.entrepriseSiteGeos.map((e) => e.entrepriseSiteGeo.siteGeo)\n )\n .with({ spreadingType: SpreadingType.SITES_AND_SERVICES }, () => [\n ...item.entrepriseServices.map((e) => e.entrepriseService.libelle),\n ...item.entrepriseSiteGeos.map((e) => e.entrepriseSiteGeo.siteGeo),\n ])\n .with({ spreadingType: SpreadingType.GROUPS }, () => item.entrepriseGroups.map((e) => e.entrepriseGroup.label))\n .otherwise(() => [t('company_wide')]),\n [item]\n );\n\n const limitedSpreadingItems = useMemo(() => {\n if (maxItems === undefined) {\n return spreadingItems;\n }\n\n if (spreadingItems.length <= maxItems) {\n return spreadingItems;\n } else {\n return spreadingItems.slice(0, maxItems - 1);\n }\n }, [spreadingItems, maxItems]);\n\n const getLabelColor = useCallback((label: string) => {\n if (label.length === 0) {\n return colorList[0];\n }\n\n let hash = 0;\n for (let i = 0; i < label.length; i++) {\n const char = label.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash;\n }\n\n return colorList[Math.abs(hash) % colorList.length];\n }, []);\n\n return (\n <>\n {limitedSpreadingItems.map((item) => (\n \n ))}\n {maxItems && spreadingItems.length > maxItems && (\n setMoreHovered(true)} onHoverOut={() => setMoreHovered(false)}>\n \n \n )}\n \n {maxItems && moreHovered && (\n \n {spreadingItems.slice(maxItems - 1).map((item) => (\n \n ))}\n \n )}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n chip: {\n margin: 5,\n },\n moreChipAnchor: {\n width: '100%',\n zIndex: 10,\n },\n moreChipContainer: {\n position: 'absolute',\n top: 5,\n gap: 5,\n width: '100%',\n paddingRight: 10,\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n});\n","import React from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport AppText from './AppText';\nimport { ALPHA_WHITE, DARK_GRAY } from '../../styles/appColor';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport { match } from 'ts-pattern';\n\nexport type ImagesCounterProps = {\n imagesCount: number;\n position: 'top-left' | 'top-right';\n};\n\nexport function ImagesCounter({ imagesCount, position }: ImagesCounterProps) {\n if (imagesCount <= 1) {\n return <>;\n }\n\n return (\n styles.topLeft)\n .with('top-right', () => styles.topRight)\n .exhaustive(),\n ]}\n >\n +{imagesCount - 1}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n position: 'absolute',\n backgroundColor: ALPHA_WHITE,\n borderRadius: 1000,\n width: 40,\n height: 40,\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center',\n gap: 4,\n },\n topLeft: {\n top: 10,\n left: 10,\n },\n topRight: {\n top: 10,\n right: 10,\n },\n text: {\n textAlign: 'center',\n color: DARK_GRAY,\n },\n});\n","import { Dimensions, StyleSheet, TouchableOpacity, View } from 'react-native';\nimport AppText, { Mode } from './AppText';\nimport { setContributionsListNeedsRefresh, setLoading } from '../../store/action';\nimport { dateLocale, t } from '../../services/translations';\nimport React, { ReactNode, useMemo } from 'react';\nimport {\n extractContributionFromResponse,\n getDescriptionByType,\n getTitleByType,\n resolveContributionType,\n} from '../../services/api/contributions';\nimport * as Localization from 'expo-localization';\nimport { apiTimeZone } from '../../../configuration';\nimport { ContributionType } from '../../types';\nimport { PRIMARY_COLOR, SECONDARY_COLOR, WHITE } from '../../styles/appColor';\nimport { alertInfo, combineNames, getReadableDate, hasSubAdminRight, isAdmin, isMobile } from '../../services/utils';\nimport { ProfilePicture } from './ProfilePicture';\nimport { FONT_FAMILY_DEFAULT } from '../../styles/globalStyle';\nimport { UserSubRow } from './UserSubRow';\nimport { LinearGradient } from 'expo-linear-gradient';\nimport { useDispatch } from 'react-redux';\nimport { AppButton } from './AppButton';\nimport { getContributionImageSource, isAnonymous } from '../../services/api/helper.api';\nimport { TwoActionsGenericPopup } from '../containers/TwoActionsButtonPopup';\nimport { ImageWithFooterText } from './ImageWithFooterText';\nimport { ContributionLabel } from './ContributionLabel';\nimport { removeCompanyNews, setApproveNews } from '../../services/api/news.contributions.api';\nimport { GetContributionsMode } from '../../services/api/getContributionsMode';\nimport { ScreenNames } from '../../ScreenNames';\nimport { EditButton } from './EditButton';\nimport { RemoveButton } from './RemoveButton';\nimport { GetMediaInfo } from '../../utils/Medias';\nimport SpreadingChipList from './SpreadingChipsList';\nimport { formatInTimeZone, zonedTimeToUtc } from 'date-fns-tz';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport Octicons from 'react-native-vector-icons/Octicons';\nimport { Label } from './Label';\nimport { format } from 'date-fns';\nimport { ImagesCounter } from './ImagesCounter';\nimport Image from './Image';\n\nfunction RemoveButtonCompanyNews(props: { item; user; dispatch }) {\n return (\n {\n props.dispatch(setLoading(true));\n removeCompanyNews(props.user, props.item.id)\n .then(() => alertInfo(t('removed_ok')))\n .finally(() => {\n props.dispatch(setContributionsListNeedsRefresh(true));\n props.dispatch(setLoading(false));\n });\n }}\n onPressButton2={() => {}}\n >\n \n \n );\n}\n\nexport function SquareTouchableWrapper(props: { children: ReactNode; numColumns?: number; onPress: () => void }) {\n return (\n \n {props.children}\n \n );\n}\n\nexport function ContributionItemSquare(\n item: any,\n getContributionsMode: GetContributionsMode,\n navigation,\n user,\n contributionType: ContributionType,\n onPress\n) {\n return (\n \n {/*{contributionType != ContributionType.SURVEY && (*/}\n \n {/*)}*/}\n \n \n ) : null\n }\n labelContent={\n isMobile() || contributionType !== ContributionType.ALL ? null : (\n \n )\n }\n title={getTitleByType(item, contributionType)}\n overlayContent={\n !isMobile() && (\n <>\n {!isAnonymous(item, contributionType) && (\n \n )}\n \n {getReadableDate(item.visibleStartDate ? item.visibleStartDate : item.contribution.dateCreation, true)}\n \n \n )\n }\n imageURI={getContributionImageSource(item.fichierIdPhoto, contributionType)}\n videoUrl={item?.videoUrl}\n onPress={onPress}\n imagesCount={item.contribution?.contributionMedias?.length || 0}\n />\n );\n}\n\nexport type ContributionPreviewItemProps = {\n additionalButtons: any;\n labelContent: any;\n title: any;\n overlayContent: any;\n imageURI: any;\n onPress: () => void;\n style?: any;\n allImage?: boolean;\n videoUrl?: string | null | undefined;\n imagesCount: number;\n};\n\nexport function ContributionPreviewItem(props: ContributionPreviewItemProps) {\n const mediaLogo = useMemo(() => (props.videoUrl ? GetMediaInfo(props.videoUrl)?.logo : undefined), [props.videoUrl]);\n\n return (\n \n \n \n \n \n \n \n {props.overlayContent}\n \n \n\n \n \n {props.title}\n \n {props.labelContent}\n \n \n {!!mediaLogo && }\n \n \n {props.additionalButtons}\n \n );\n}\n\nexport function ContributionItemRowBigPicture(props: {\n item;\n getContributionsMode: GetContributionsMode;\n navigation;\n user;\n contributionType: ContributionType;\n isAdminView?: boolean;\n onPress;\n style?;\n}) {\n let author = {};\n let date = '';\n const item = props.item;\n if (item.contribution !== undefined) {\n author = item.contribution.userIdCreateurNavigation;\n date = item.visibleStartDate ? item.visibleStartDate : item.contribution.dateCreation;\n } else {\n author = item.userIdCreateurNavigation;\n date = item.visibleStartDate ? item.visibleStartDate : item.dateCreation;\n }\n let _contributionType = props.contributionType;\n let allImage = _contributionType === ContributionType.ALL;\n if (_contributionType === ContributionType.ALL) {\n _contributionType = resolveContributionType(item);\n }\n /**\n * As the response of the API is inconsistent, it is sometimes impossible to determine the type of contribution.\n * Once the API has been updated, the function resolveContributionType should be updated too.\n */\n if (_contributionType === ContributionType.UNKNOWN) return <>;\n\n const typedData = extractContributionFromResponse(item, _contributionType);\n\n return (\n \n \n \n \n ) : null\n }\n labelContent={}\n title={getTitleByType(item, _contributionType)}\n videoUrl={typedData?.videoUrl}\n style={props.style}\n allImage={allImage}\n overlayContent={\n <>\n {!isAnonymous(item, _contributionType) && (\n \n )}\n \n {getReadableDate(date, true)}\n \n \n }\n onPress={props.onPress}\n imageURI={getContributionImageSource(typedData?.fichierIdPhoto, _contributionType)}\n imagesCount={[item?.contributionMedias || item.contribution?.contributionMedias || []].length}\n />\n );\n}\n\nexport function ContributionItemRowCompanyNews(props: { item; navigation; isAdminView: boolean; onPress; style? }) {\n const user = useLoggedUser();\n const author = props.item.userIdCreateurNavigation\n ? props.item.userIdCreateurNavigation\n : props.item.mActu.userIdCreateurNavigation;\n const locale = dateLocale();\n\n const dispatch = useDispatch();\n\n const isApproved = props.item.lovIdEtat === 39;\n\n function _approveNews() {\n dispatch(setLoading(true));\n setApproveNews(user, props.item.id)\n .then((response) => {\n dispatch(setContributionsListNeedsRefresh(true));\n })\n .catch((e) => {\n alertInfo(t('error_occurred'));\n })\n .finally(() => {\n dispatch(setLoading(false));\n props.navigation.navigate(ScreenNames.LoggedInDrawerNavigation, {\n screen: ScreenNames.LoggedInHome,\n params: { screen: ScreenNames.CompanyNewsScreen, params: { screen: ScreenNames.ContributionListScreen } },\n });\n });\n }\n\n function _disapproveNews() {\n dispatch(setLoading(true));\n removeCompanyNews(user, props.item.id)\n .then(() => alertInfo(t('removed_ok')))\n .finally(() => {\n dispatch(setContributionsListNeedsRefresh(true));\n dispatch(setLoading(false));\n });\n }\n\n const mediaLogo = useMemo(() => {\n if (!props.item.videoUrl) return undefined;\n return GetMediaInfo(props.item.videoUrl)?.logo;\n }, [props.item]);\n\n const publicationDate =\n props?.item?.visibleStartDate?.split('.')[0] !== props?.item?.mActu?.dateCreation?.split('.')[0]\n ? (props?.item?.visibleStartDate as string | undefined)\n : undefined;\n\n return (\n \n \n \n \n {props.item.validator && isApproved && (\n }\n text={`${props.item.validator.prenom} ${props.item.validator.nom}`}\n color={PRIMARY_COLOR}\n />\n )}\n {props.item.dateValidation && isApproved && (\n }\n text={format(new Date(props.item.dateValidation), 'dd/MM/yyyy', { locale })}\n color={PRIMARY_COLOR}\n />\n )}\n \n ) : props?.item?.highlighted ? (\n \n \n ) : null\n }\n />\n {!!mediaLogo && }\n \n \n \n \n {getTitleByType(props.item, ContributionType.COMPANY_NEWS)}\n \n \n \n {getDescriptionByType(props.item, ContributionType.COMPANY_NEWS)}\n \n \n \n \n {!!props.isAdminView && (\n <>\n {!isApproved && (\n \n )}\n {isAdmin(user) ||\n hasSubAdminRight(\n user,\n props.item.mActu.entrepriseServices.map((e) => e.entrepriseServiceId),\n props.item.mActu.entrepriseSiteGeos.map((e) => e.entrepriseSiteGeoId),\n props.item.mActu.entrepriseGroups.map((e) => e.entrepriseGroupId)\n ) ? (\n \n \n {isApproved && (\n {\n props.navigation.navigate(ScreenNames.LoggedInDrawerNavigation, {\n screen: ScreenNames.DuplicateCompanyNews,\n params: {\n id: props.item.id,\n action: 'duplicate',\n },\n });\n }}\n >\n \n \n )}\n {isApproved && }\n \n ) : null}\n {!isApproved && (\n \n )}\n {!isApproved && (\n \n \n {t('publication_mode')}\n \n \n {!publicationDate\n ? t('immediate_posting')\n : formatInTimeZone(\n zonedTimeToUtc(publicationDate, apiTimeZone),\n Localization.timezone,\n 'd MMMM yyyy HH:mm',\n {\n locale,\n }\n )}\n \n \n )}\n \n )}\n \n \n );\n}\n\nexport function ContributionItemRowCarPool({\n item,\n getContributionsMode,\n navigation,\n user,\n contributionType,\n onPress,\n}) {\n const author = item.contribution.userIdCreateurNavigation;\n const permanent = item.lovIdType === 22;\n return (\n \n \n \n \n \n \n \n \n \n \n \n {item.libelleDepart}\n \n \n \n \n {item.libelleArrivee}\n \n \n \n \n \n {combineNames(author)}\n \n \n \n \n \n {permanent ? t('permanent') : t('temporary')}\n \n \n \n \n {getContributionsMode === GetContributionsMode.mine ? (\n \n \n \n \n ) : null}\n \n );\n}\n\nconst styles = StyleSheet.create({\n carPoolRow: {\n borderRadius: 8,\n marginBottom: 24,\n padding: 24,\n flexDirection: 'row',\n },\n permanentRow: {\n backgroundColor: '#4FDFC41A',\n },\n temporaryRow: {\n backgroundColor: '#45AFE81A',\n },\n backgroundImage: {\n ...StyleSheet.absoluteFillObject,\n borderRadius: 20,\n resizeMode: 'cover',\n },\n});\n","import MapView, { PROVIDER_DEFAULT } from 'react-native-web-maps';\nimport React from 'react';\nimport { View } from 'react-native';\nimport { latitude, longitude } from '../../services/utils';\nimport { AppMapViewProps } from './AppMapView';\n\nexport function AppMapView({ data, markers, fullWidth, setSelectedItem }: AppMapViewProps) {\n function _getColor(index: number) {\n const colors = ['#db67cc', '#18e6d2', '#52e605', '#1248ed', '#766892', '#314c53', '#ccce62'];\n return colors[index % colors.length];\n }\n\n return (\n \n {data &&\n data.map((marker, index) => {\n if (marker.isEmpty) {\n return undefined;\n }\n return (\n \n \n\n setSelectedItem(marker)}\n />\n\n setSelectedItem(marker)}\n />\n \n );\n })}\n {markers &&\n markers.map((marker, index) => {\n if (!marker) {\n return undefined;\n } else {\n return (\n \n \n \n );\n }\n })}\n \n );\n}\n","import axios from './base';\nimport { apiUrlBase } from '../../../configuration';\nimport { headers } from './base';\nimport { Category } from '../../entities/Category';\nimport { ContributionType, ContributionTypesInfos } from '../../types';\nimport { UserSaved } from '../storage';\n\nexport const getCategories = (companyId: number | string, token: string): Promise<{ [key: string]: Category[] }> =>\n axios\n .get(apiUrlBase + `categories/${companyId}`, {\n headers: headers(token),\n })\n .then((r) => r.data);\n\nexport async function getCategoriesByType(\n companyId: number | string,\n type: ContributionType,\n user: UserSaved\n): Promise {\n const result = await axios\n .get(apiUrlBase + `categories/${companyId}/${ContributionTypesInfos[type].key}`, {\n headers: headers(user.token),\n })\n .then((r) => r.data as Category[]);\n\n if (type === ContributionType.COMPANY_NEWS) {\n return [...result];\n } else {\n return result;\n }\n}\n\nexport async function getCategoriesByCustomModuleIdentifier(\n companyId: number | string,\n customModuleIdentifier: string,\n user: UserSaved\n): Promise {\n const result = await axios\n .get(apiUrlBase + `categories/${companyId}/by_custom_module/${customModuleIdentifier}`, {\n headers: headers(user.token),\n })\n .then((r) => r.data as Category[]);\n\n return result;\n}\n\nexport interface PostCategory {\n type?: string | null;\n customModuleId?: number | null;\n name: string;\n color: string;\n}\n\nexport const postCategory = (companyId: number | string, category: PostCategory, token: string): Promise =>\n axios.post(`${apiUrlBase}categories/${companyId}`, category, {\n headers: headers(token),\n });\n\nexport const postOrderCategory = (orders: { [key: string]: number }, token: string): Promise =>\n axios.post(`${apiUrlBase}categories`, orders, {\n headers: headers(token),\n });\n\nexport interface PutCategory {\n name: string;\n color: string;\n}\n\nexport const putCategory = (id: number, category: PutCategory, token: string): Promise =>\n axios.put(`${apiUrlBase}categories/${id}`, category, {\n headers: headers(token),\n });\n\nexport const deleteCategory = (id: number, token: string): Promise =>\n axios.delete(`${apiUrlBase}categories/${id}`, {\n headers: headers(token),\n });\n","import { Category } from '../entities/Category';\nimport { t } from '../services/translations';\nimport { ContributionType } from '../types';\n\nexport const CategoriesContributions = [\n ContributionType.COMPANY_NEWS,\n ContributionType.SELL,\n ContributionType.ACTIVITY,\n ContributionType.MUTUAL_AID,\n ContributionType.EVENT,\n ContributionType.FORMATION,\n];\n\nexport const GLOBAL_CATEGORY: Category = {\n id: -1,\n color: '#45AFE8',\n name: t('global_category'),\n order: -1,\n type: 'all',\n companyId: 0,\n};\n\nexport const SERVICE_CATEGORY: Category = {\n id: -2,\n color: '#45AFE8',\n name: t('service'),\n order: -1,\n type: 'service',\n companyId: 0,\n};\n\nexport const GEOSITE_CATEGORY: Category = {\n id: -3,\n color: '#45AFE8',\n name: t('geo_site'),\n order: -1,\n type: 'geo_site',\n companyId: 0,\n};\n\nexport const hasCategories = (type: ContributionType) => CategoriesContributions.findIndex((c) => c === type) >= 0;\n","import React from 'react';\nimport { StyleProp, ViewStyle } from 'react-native';\nimport { Category } from '../../entities/Category';\nimport { Chip } from './Chip';\n\nexport interface CategoryChipProps {\n category: Category;\n style?: StyleProp;\n onPress?: () => void;\n disable?: boolean;\n selected?: boolean;\n}\n\nexport const CategoryChip = ({ category, style, disable, onPress, selected }: CategoryChipProps) => (\n \n);\n","import React from 'react';\nimport { StyleSheet, View, ViewStyle } from 'react-native';\nimport { SMOKE_WHITE } from '../../styles/appColor';\n\nexport type SeparatorProps = {\n vertical?: boolean;\n style?: ViewStyle;\n};\n\nexport default function Separator({ vertical, style }: SeparatorProps) {\n return ;\n}\n\nconst styles = StyleSheet.create({\n separatorHorizontal: {\n width: '100%',\n height: 1,\n backgroundColor: SMOKE_WHITE,\n },\n separatorVertical: {\n width: 1,\n height: '100%',\n backgroundColor: SMOKE_WHITE,\n },\n});\n","import React, { useEffect, useState } from 'react';\nimport { Category } from '../../entities/Category';\nimport { GLOBAL_CATEGORY } from '../../utils/Category';\nimport { CategoryChip } from '../atomic/CategoryChip';\nimport HorizontalFlatList from './HorizontalList';\nimport { StyleSheet } from 'react-native';\nimport Separator from '../atomic/Separator';\nimport { match } from 'ts-pattern';\n\nexport interface CategoriesListProps {\n categories: (Category | 'separator')[];\n onSelect?: (category?: Category) => void;\n}\n\nexport const CategoriesList = ({ categories, onSelect }: CategoriesListProps) => {\n const [selectedCategory, setSelectedCategory] = useState();\n\n const onPress = (category: Category) => {\n if (category.id === GLOBAL_CATEGORY.id || category.id === selectedCategory?.id) {\n setSelectedCategory(undefined);\n } else {\n setSelectedCategory(category);\n }\n };\n\n useEffect(() => {\n onSelect?.(selectedCategory);\n }, [selectedCategory, onSelect]);\n\n return (\n \n match(category)\n .with('separator', () => )\n .otherwise((category: Category) => (\n onPress(category)}\n category={category}\n />\n ))\n }\n keyExtractor={(category) =>\n match(category)\n .with('separator', () => 'separator')\n .otherwise((category: Category) => category.id.toString())\n }\n />\n );\n};\n\nconst styles = StyleSheet.create({\n chip: {\n marginEnd: 10,\n },\n separator: {\n marginEnd: 10,\n height: 32,\n },\n});\n","import { DependencyList, useCallback, useEffect, useState } from 'react';\nimport { Paginated } from '../entities/Paginated';\nimport { t } from '../services/translations';\nimport { alertInfo } from '../services/utils';\n\nexport type PaginatedListResult = {\n data: TItem[];\n isLoading: boolean;\n isRefreshing: boolean;\n totalCount: number;\n fetchNext: () => Promise;\n refresh: () => Promise;\n};\n\nexport type PaginatedListResultOptions = {\n firstFetchLimit?: number;\n};\n\nexport default function usePaginatedList(\n fetchByCursor: (cursor: TCursor | null, limit: number | null) => Promise | TItem[]>,\n deps?: DependencyList,\n { firstFetchLimit }: PaginatedListResultOptions = {}\n): PaginatedListResult {\n const [data, setData] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n const [isRefreshing, setIsRefreshing] = useState(false);\n const [nextCursor, setNextCursor] = useState(null);\n const [totalCount, setTotalCount] = useState(0);\n\n const fetchNext = useCallback(async () => {\n if (nextCursor) {\n setIsLoading(true);\n\n try {\n let result = await fetchByCursor(nextCursor, null);\n\n if (Array.isArray(result)) {\n setData(result);\n setNextCursor(null);\n setTotalCount(result.length);\n } else {\n setData([...data, ...result.data]);\n setNextCursor(result.nextCursor);\n setTotalCount(result.totalCount);\n }\n } catch (e) {\n alertInfo(t('error_occurred'));\n }\n\n setIsLoading(false);\n }\n }, [fetchByCursor, data, nextCursor]);\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n setIsRefreshing(true);\n\n try {\n let result = await fetchByCursor(null, firstFetchLimit || null);\n\n if (Array.isArray(result)) {\n setData(result);\n setNextCursor(null);\n setTotalCount(result.length);\n } else {\n setData(result.data);\n setNextCursor(result.nextCursor);\n setTotalCount(result.totalCount);\n }\n } catch (e) {\n alertInfo(t('error_occurred'));\n }\n\n setIsLoading(false);\n setIsRefreshing(false);\n }, [fetchByCursor, firstFetchLimit, nextCursor]);\n\n // Initialize by fetching\n useEffect(() => {\n refresh();\n }, deps || []);\n\n return {\n data,\n isLoading,\n isRefreshing,\n totalCount,\n fetchNext,\n refresh,\n };\n}\n","import React, { useState } from 'react';\nimport { FlatList, FlatListProps, View } from 'react-native';\n\nexport type ResponsiveFlatListProps = FlatListProps;\n\nexport function ResponsiveFlatList({\n renderItem,\n columnWrapperStyle,\n numColumns,\n ...rest\n}: FlatListProps) {\n const [containerWidth, setContainerWidth] = useState(undefined);\n const internNumColumns = numColumns || (containerWidth && Math.max(1, Math.floor(containerWidth / 300)));\n\n return (\n {\n setContainerWidth(event.nativeEvent.layout.width);\n }}\n style={{ flexDirection: 'row', flex: 1 }}\n >\n {internNumColumns && (\n \n key={internNumColumns || 0}\n columnWrapperStyle={internNumColumns && internNumColumns > 1 ? columnWrapperStyle : undefined}\n numColumns={internNumColumns}\n renderItem={(item) => {\n return (\n \n {renderItem && renderItem(item)}\n \n );\n }}\n {...rest}\n />\n )}\n \n );\n}\n","import { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { RootState } from '../services/storage';\nimport { setContributionsListNeedsRefresh } from '../store/action';\n\nexport default function useContributionListRefresh(refreshCallback: () => Promise) {\n const dispatch = useDispatch();\n const contributionsListNeedsRefresh = useSelector(\n (state) => state.contributionsListNeedsRefresh\n );\n\n useEffect(() => {\n if (contributionsListNeedsRefresh) {\n refreshCallback().finally(() => {\n dispatch(setContributionsListNeedsRefresh(false));\n });\n }\n }, [contributionsListNeedsRefresh]);\n}\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { AppScreen } from '../../../components/containers/AppScreen';\nimport { useDispatch } from 'react-redux';\nimport { t } from '../../../services/translations';\nimport { RefreshControl, View, ActivityIndicator, StyleSheet } from 'react-native';\nimport { setLoading } from '../../../store/action';\nimport { SearchTextInput } from '../../../components/atomic/SearchTextInput';\nimport { AppListSwitch } from '../../../components/atomic/AppListSwitch';\nimport { isAdmin, isMobile } from '../../../services/utils';\nimport AppText from '../../../components/atomic/AppText';\nimport { LIGHT_GRAY, PRIMARY_COLOR } from '../../../styles/appColor';\nimport { ContributionType } from '../../../types';\nimport { AppModalOverlay } from '../../../components/atomic/AppModalOverlay';\nimport { ContributionItemRowCarPool } from '../../../components/atomic/ContributionItemSquare';\nimport { AppMapView, AppMapViewDataItem } from '../../../components/atomic/AppMapView';\nimport { GetContributionsMode } from '../../../services/api/getContributionsMode';\nimport { resolveContributionType } from '../../../services/api/contributions';\nimport { ContributionKiosque } from '../../../entities/ContributionKiosque';\nimport { Category } from '../../../entities/Category';\nimport { getCategoriesByType } from '../../../services/api/category.api';\nimport { GEOSITE_CATEGORY, hasCategories, SERVICE_CATEGORY } from '../../../utils/Category';\nimport { CategoriesList } from '../../../components/containers/CategoriesList';\nimport { NavigationProp, ParamListBase } from '@react-navigation/native';\nimport usePaginatedList from '../../../hooks/usePaginatedList';\nimport { getContributionsList } from '../../../services/api/contribution.api';\nimport { ResponsiveFlatList } from '../../../components/atomic/ResponsiveFlatList';\nimport { useDeviceSize } from '../../../hooks/useDeviceSize';\nimport useLoggedUser from '../../../hooks/useLoggedUser';\nimport useContributionListRefresh from '../../../hooks/useContributionListRefresh';\n\nexport function ContributionsMainScreen(props: {\n contributionType: ContributionType;\n contributionMode: GetContributionsMode;\n contributionModeSecondView?: GetContributionsMode;\n navigation: NavigationProp;\n numColumns?: number;\n isAdminView: boolean;\n hideCategory?: boolean;\n isSignaled?: boolean;\n getRenderItem: (item: any, contributionMode: GetContributionsMode, onPress: (item: any) => void) => JSX.Element;\n onPress: (item: any) => void;\n}) {\n const user = useLoggedUser();\n const dispatch = useDispatch();\n const [showLost, setShowLost] = useState(false);\n const [showReported, setShowReported] = useState(props.isSignaled ?? false);\n const [showMap, setShowMap] = useState(false);\n const [search, setSearch] = useState('');\n const [categories, setCategories] = useState([]);\n const [selectedCategory, setSelectedCategory] = useState(undefined);\n const [displaySecondView, setDisplaySecondView] = useState(false);\n const [filterFavorites, setFilterFavorites] = useState(false);\n const [filterByService, setFilterByService] = useState(false);\n const [filterByGeoSite, setFilterByGeoSite] = useState(false);\n const { isSmallMediumDevice } = useDeviceSize();\n\n const {\n data: items,\n isLoading,\n isRefreshing,\n fetchNext,\n refresh,\n } = usePaginatedList(\n async (cursor: string | null) => {\n return getContributionsList(\n user,\n !displaySecondView ? props.contributionMode : props.contributionModeSecondView || props.contributionMode,\n props.contributionType,\n search,\n cursor,\n undefined,\n { favorites: filterFavorites, filterByService, filterByGeoSite, categoryId: selectedCategory?.id }\n );\n },\n [\n search,\n displaySecondView,\n props.contributionMode,\n props.contributionModeSecondView,\n props.contributionType,\n selectedCategory?.id,\n filterFavorites,\n filterByService,\n filterByGeoSite,\n ]\n );\n\n useEffect(() => {\n if (hasCategories(props.contributionType)) {\n getCategoriesByType(user.entreprise?.id!, props.contributionType, user).then(setCategories);\n }\n }, [user.entreprise?.id, props.contributionType, user]);\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isRefreshing));\n }, [isRefreshing, dispatch]);\n\n // Refresh after an update\n useContributionListRefresh(refresh);\n\n const containValidContribution = useCallback(\n (row: any) => {\n return (\n props.contributionType !== ContributionType.ALL || resolveContributionType(row) !== ContributionType.UNKNOWN\n );\n },\n [props.contributionType]\n );\n\n const data = useMemo(() => {\n let first = items.filter((row) => containValidContribution(row));\n let second = first.filter(\n (row: any) =>\n props.contributionType !== ContributionType.LOST_PROPERTY ||\n (showLost ? row.lovIdType === 19 : row.lovIdType === 18)\n );\n\n let third = second.filter(\n (row: any) =>\n props.contributionType !== ContributionType.ALL ||\n (showReported ? row.contributionSignalement != null && row.contributionSignalement?.length > 0 : true)\n );\n\n return [...third];\n }, [items, props.contributionType, showReported, showLost, containValidContribution]);\n\n const _onPress = (item: any) => {\n if (props.contributionType === ContributionType.DOCUMENT) {\n const doc = item as ContributionKiosque;\n if (doc.id < 0) {\n setSearch(t('folder') + ':' + doc.tag);\n } else {\n props.onPress(item);\n }\n } else {\n props.onPress(item);\n }\n };\n\n /*\n Currently, map plugins are not completely compatible with web. Therefore, we disable the map until it is made compatible.\n https://docs.expo.dev/versions/latest/sdk/map-view/\n */\n const mapIsVisible =\n (showMap || (!isMobile() && !isSmallMediumDevice)) && props.contributionType === ContributionType.CARPOOL;\n const listIsVisible = !isMobile() || !showMap;\n\n return (\n \n \n\n {props.contributionType === ContributionType.COMPANY_NEWS &&\n props.contributionMode === GetContributionsMode.all && (\n \n )}\n {props.contributionModeSecondView === undefined ||\n props.contributionModeSecondView === GetContributionsMode.not_set ? null : (\n \n )}\n {props.contributionType === ContributionType.LOST_PROPERTY ? (\n setShowLost(value)}\n value={showLost}\n firstOptionText={t('found')}\n secondOptionText={t('lost')}\n />\n ) : null}\n {props.contributionType === ContributionType.ALL && props.isAdminView && isAdmin(user) ? (\n setShowReported(value)}\n value={showReported}\n firstOptionText={t('all')}\n secondOptionText={t('reported')}\n />\n ) : null}\n {props.contributionType === ContributionType.CARPOOL && isMobile() ? (\n setShowMap(value)}\n value={showMap}\n firstOptionText={t('list')}\n secondOptionText={t('map')}\n />\n ) : null}\n\n {!props.hideCategory && hasCategories(props.contributionType) && (\n {\n if (category?.id === SERVICE_CATEGORY.id) {\n setFilterByService(true);\n setFilterByGeoSite(false);\n setSelectedCategory(undefined);\n } else if (category?.id === GEOSITE_CATEGORY.id) {\n setFilterByGeoSite(true);\n setFilterByService(false);\n setSelectedCategory(undefined);\n } else {\n setFilterByService(false);\n setFilterByGeoSite(false);\n setSelectedCategory(category);\n }\n }}\n />\n )}\n \n {listIsVisible && (\n \n windowSize={1000000}\n maxToRenderPerBatch={100000}\n extraData={isLoading}\n style={{\n marginRight: mapIsVisible ? 10 : 0,\n }}\n // columnWrapperStyle={isMobile() && numColumns !== 1 ? { justifyContent: 'flex-start' } : undefined}\n columnWrapperStyle={styles.columnWrapperStyle}\n numColumns={props.numColumns}\n contentContainerStyle={\n !isMobile()\n ? {\n /*flexDirection: props.contributionType == ContributionType.CARPOOL ? 'column' : 'row',\n maxWidth: listMaxWidth,\n marginHorizontal: 'auto',*/\n }\n : {}\n }\n ListEmptyComponent={{t('no_contributions')}}\n data={data}\n renderItem={(item) => {\n return props.getRenderItem(item.item, props.contributionMode, () => _onPress(item.item));\n }}\n keyExtractor={(item) => item.id.toString()}\n refreshControl={}\n scrollEventThrottle={400}\n onEndReached={fetchNext}\n />\n )}\n {mapIsVisible && (\n \n )}\n \n {isLoading && (\n \n \n \n )}\n \n );\n}\n\ntype AppContributionMapViewProps = {\n data: any[];\n contributionMode: GetContributionsMode;\n navigation: NavigationProp;\n onPress: (item: any) => void;\n contributionType: ContributionType;\n};\n\nfunction AppContributionMapView({\n data,\n contributionMode,\n navigation,\n onPress,\n contributionType,\n}: AppContributionMapViewProps) {\n const [selectedItem, setSelectedItem] = useState(undefined);\n const user = useLoggedUser();\n\n return (\n \n \n {selectedItem && (\n setSelectedItem(undefined)}\n >\n onPress(selectedItem)}\n contributionType={contributionType}\n />\n \n )}\n \n );\n}\n\nconst styles = StyleSheet.create({\n searchField: { marginBottom: 10 },\n listContainer: { flex: 1, flexDirection: 'row' },\n columnWrapperStyle: { justifyContent: 'flex-start' },\n loadingIndicator: { padding: 20 },\n emptyListLabel: { textAlign: 'center', color: LIGHT_GRAY },\n mapContainer: { flex: 1, marginBottom: 10, maxWidth: 500 },\n mapOverlay: { width: '100%', maxWidth: 500, padding: 20, paddingBottom: 0 },\n});\n","import { Platform, View } from 'react-native';\nimport { FloatingAction } from 'react-native-floating-action';\nimport { TouchableOpacity } from 'react-native-gesture-handler';\nimport AppText from '../../../components/atomic/AppText';\nimport { PRIMARY_COLOR } from '../../../styles/appColor';\nimport { isMobile } from '../../../services/utils';\nimport React from 'react';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\n\nexport function FloatingButtons(props: { onPress }) {\n const actions = [\n {\n text: 'Accessibility',\n icon: require('../../../../assets/plus.png'),\n name: 'bt_plus',\n position: 1,\n },\n ];\n return (\n \n );\n}\n\nexport function FloatingButtonsNews(props: { onPress }) {\n const actions = [\n {\n text: 'Accessibility',\n icon: require('../../../../assets/plus.png'),\n name: 'bt_plus',\n position: 1,\n },\n ];\n return (\n \n \n \n \n Rédiger une actualité\n \n \n \n );\n}\n","export default function ChatbotButton() {\n return null;\n}\n","import React from 'react';\nimport { ContributionsMainScreen } from './ContributionsMainScreen';\nimport {\n ContributionItemRowBigPicture,\n ContributionItemRowCarPool,\n ContributionItemRowCompanyNews,\n ContributionItemSquare,\n} from '../../../components/atomic/ContributionItemSquare';\nimport { ContributionType, ContributionTypesInfos, IntToContributionType } from '../../../types';\nimport { extractContributionFromResponse, resolveContributionType } from '../../../services/api/contributions';\nimport { isMobile } from '../../../services/utils';\nimport { GetContributionsMode, IntToGetContributionsMode } from '../../../services/api/getContributionsMode';\nimport { FloatingButtonsNews } from './FloatingButtons';\nimport { ScreenNames } from '../../../ScreenNames';\nimport { View } from 'react-native';\nimport { NavigationProp, ParamListBase } from '@react-navigation/native';\nimport ChatbotButton from '../../../components/molecules/ChatbotButton';\nimport useLoggedUser from '../../../hooks/useLoggedUser';\n\nexport function ContributionListScreen(props: { navigation: NavigationProp; route: any }) {\n const contributionMode = IntToGetContributionsMode(props.route.params.getContributionsMode);\n const contributionModeSecondView = IntToGetContributionsMode(props.route.params.getContributionsModeSecondView);\n const isAdminView = props.route.params?.isAdminView;\n const hideCategory = props.route.params?.hideCategory;\n const isSignaled = props.route.params?.isSignaled;\n const user = useLoggedUser();\n const contributionType: ContributionType = IntToContributionType(props.route.params.contributionType);\n\n function _getRenderItem(\n item: any,\n user: any,\n contributionType: ContributionType,\n contributionMode: GetContributionsMode,\n onPress: (item: any) => void\n ) {\n if (item.isEmpty) {\n return ;\n }\n switch (contributionType) {\n case ContributionType.CARPOOL:\n return (\n \n );\n case ContributionType.EVENT:\n case ContributionType.FORMATION:\n case ContributionType.LOST_PROPERTY:\n case ContributionType.ACTIVITY:\n case ContributionType.SELL:\n case ContributionType.MUTUAL_AID:\n case ContributionType.SURVEY:\n case ContributionType.SUGGESTION:\n case ContributionType.DOCUMENT:\n return ContributionItemSquare(item, contributionMode, props.navigation, user, contributionType, onPress);\n case ContributionType.ALL:\n return (\n \n );\n case ContributionType.COMPANY_NEWS:\n return (\n \n );\n default:\n return <>;\n }\n }\n\n function _getNumColumns(contributionType: any) {\n if (!isMobile()) {\n if (contributionType === ContributionType.CARPOOL) return 1;\n return undefined;\n }\n switch (contributionType) {\n case ContributionType.LOST_PROPERTY:\n case ContributionType.ACTIVITY:\n case ContributionType.SELL:\n case ContributionType.MUTUAL_AID:\n case ContributionType.SURVEY:\n case ContributionType.SUGGESTION:\n case ContributionType.EVENT:\n case ContributionType.FORMATION:\n return 2;\n default:\n case ContributionType.DOCUMENT:\n case ContributionType.CARPOOL:\n case ContributionType.COMPANY_NEWS:\n case ContributionType.ALL:\n return 1;\n }\n }\n\n return (\n <>\n \n _getRenderItem(item, user, contributionType, contributionMode, onPress)\n }\n onPress={(item) => {\n let _contributionType = contributionType;\n let _id = item.id;\n if (_contributionType == ContributionType.ALL) {\n _contributionType = resolveContributionType(item);\n _id = extractContributionFromResponse(item, _contributionType).id;\n }\n\n props.navigation.push(ScreenNames.LoggedInDrawerNavigation, {\n screen: ContributionTypesInfos[contributionType].detailScreen ?? ScreenNames.ContributionItemDetailScreen,\n params: {\n id: _id,\n contributionType: _contributionType,\n isNotif: false,\n isAdminView,\n },\n });\n }}\n />\n {contributionType === ContributionType.COMPANY_NEWS && (\n <>\n {\n props.navigation.navigate(ScreenNames.CreateCompanyNews);\n }}\n />\n \n )}\n \n \n );\n}\n","import React from 'react';\nimport { ContributionListScreen } from '../screens/loggedIn/contribution/ContributionListScreen';\nimport { createMaterialTopTabNavigator } from '@react-navigation/material-top-tabs';\nimport { ContributionType } from '../types';\nimport { t } from '../services/translations';\nimport { GetContributionsMode } from '../services/api/getContributionsMode';\nimport { isMobile } from '../services/utils';\nimport { ScreenNames } from '../ScreenNames';\nimport { BACKGROUND_COLOR } from '../styles/appColor';\n\nexport function SuggestionsAdministrationRoute(props: { route }) {\n const Tab = createMaterialTopTabNavigator();\n return (\n \n \n \n \n );\n}\n","import React from 'react';\nimport { ContributionListScreen } from '../screens/loggedIn/contribution/ContributionListScreen';\nimport { createMaterialTopTabNavigator } from '@react-navigation/material-top-tabs';\nimport { ContributionType } from '../types';\nimport { t } from '../services/translations';\nimport { GetContributionsMode } from '../services/api/getContributionsMode';\nimport { isMobile } from '../services/utils';\nimport { ScreenNames } from '../ScreenNames';\nimport { BACKGROUND_COLOR } from '../styles/appColor';\n\nexport function CompanyNewsAdministrationRoute() {\n const Tab = createMaterialTopTabNavigator();\n return (\n \n \n \n \n );\n}\n","import React from 'react';\nimport { TouchableOpacity, View } from 'react-native';\nimport { ContributionPreviewItem, ContributionPreviewItemProps } from './ContributionItemSquare';\nimport { AppButton } from './AppButton';\nimport { t } from '../../services/translations';\nimport { PRIMARY_COLOR } from '../../styles/appColor';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\n\nexport type ContributionToValidateItemProps = ContributionPreviewItemProps & {\n onEdit: () => void;\n onApprove: () => void;\n onDisapprove: () => void;\n};\n\nexport default function ContributionToValidateItem({\n onEdit,\n onApprove,\n onDisapprove,\n ...rest\n}: ContributionToValidateItemProps) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport { AppScreen } from '../../../../components/containers/AppScreen';\nimport { SearchTextInput } from '../../../../components/atomic/SearchTextInput';\nimport usePaginatedList from '../../../../hooks/usePaginatedList';\nimport { getContributionsList, setApproveContribution } from '../../../../services/api/contribution.api';\nimport { GetContributionsMode } from '../../../../services/api/getContributionsMode';\nimport { ContributionType } from '../../../../types';\nimport { setContributionsListNeedsRefresh, setLoading } from '../../../../store/action';\nimport { ResponsiveFlatList } from '../../../../components/atomic/ResponsiveFlatList';\nimport { alertInfo, isMobile } from '../../../../services/utils';\nimport ContributionToValidateItem from '../../../../components/atomic/ContributionToValidateItem';\nimport { CSondage } from '../../../../entities/CSondage';\nimport { ScreenNames } from '../../../../ScreenNames';\nimport { getPictureURI } from '../../../../services/api/helper.api';\nimport { surveyImage } from '../../../../services/assets';\nimport AppText from '../../../../components/atomic/AppText';\nimport { StyleSheet } from 'react-native';\nimport { LIGHT_GRAY } from '../../../../styles/appColor';\nimport { t } from '../../../../services/translations';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport useContributionListRefresh from '../../../../hooks/useContributionListRefresh';\n\nexport function SurveyToValidateAdminListScreen() {\n const user = useLoggedUser();\n const navigation = useNavigation>();\n const dispatch = useDispatch();\n const [search, setSearch] = useState('');\n\n const {\n data: contributions,\n isLoading,\n fetchNext,\n refresh,\n } = usePaginatedList(\n (cursor: string | null) =>\n getContributionsList(user, GetContributionsMode.toApprove, ContributionType.SURVEY, search, cursor),\n [search, user]\n );\n\n function approveContribution(id: number, value: boolean) {\n dispatch(setLoading(true));\n setApproveContribution(user, id, value, ContributionType.SURVEY)\n .then(() => {\n dispatch(setContributionsListNeedsRefresh(true));\n refresh();\n })\n .catch(() => {\n alertInfo(t('error_occurred'));\n })\n .finally(() => {\n dispatch(setLoading(false));\n });\n }\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n // Refresh after an update\n useContributionListRefresh(refresh);\n\n return (\n \n setSearch('')}\n leftIcon=\"arrow-back\"\n onChangeText={setSearch}\n value={search}\n style={{ marginBottom: 10 }}\n />\n {\n return (\n {\n navigation.navigate(ScreenNames.ContributionItemDetailScreen, {\n id: item.id,\n contributionType: ContributionType.SURVEY,\n isNotif: false,\n isAdminView: true,\n });\n }}\n overlayContent={<>}\n additionalButtons={<>}\n labelContent={<>}\n onEdit={() =>\n navigation.navigate(ScreenNames.ContributionEditFormScreen, {\n id: item.id,\n contributionType: ContributionType.SURVEY,\n isAdminView: true,\n })\n }\n onApprove={() => approveContribution(item.id, true)}\n onDisapprove={() => approveContribution(item.id, false)}\n imagesCount={item.contribution?.contributionMedias?.length || 0}\n />\n );\n }}\n ListEmptyComponent={{t('no_contributions')}}\n onEndReached={fetchNext}\n />\n \n );\n}\n\nconst styles = StyleSheet.create({\n emptyText: {\n textAlign: 'center',\n color: LIGHT_GRAY,\n },\n});\n","import React from 'react';\nimport { TouchableOpacity, View } from 'react-native';\nimport { ContributionPreviewItem, ContributionPreviewItemProps } from './ContributionItemSquare';\nimport { t } from '../../services/translations';\nimport { PRIMARY_COLOR } from '../../styles/appColor';\nimport { TwoActionsGenericPopup } from '../containers/TwoActionsButtonPopup';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\n\nexport type ContributionValidatedItemProps = ContributionPreviewItemProps & {\n onEdit: () => void;\n onRemove: () => void;\n};\n\nexport default function ContributionValidatedItem({ onEdit, onRemove, ...rest }: ContributionValidatedItemProps) {\n return (\n \n \n \n \n \n \n \n {}}\n >\n \n \n \n \n \n );\n}\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport { AppScreen } from '../../../../components/containers/AppScreen';\nimport { SearchTextInput } from '../../../../components/atomic/SearchTextInput';\nimport usePaginatedList from '../../../../hooks/usePaginatedList';\nimport { getContributionsList, removeContribution } from '../../../../services/api/contribution.api';\nimport { GetContributionsMode } from '../../../../services/api/getContributionsMode';\nimport { ContributionType } from '../../../../types';\nimport { setContributionsListNeedsRefresh, setLoading } from '../../../../store/action';\nimport { ResponsiveFlatList } from '../../../../components/atomic/ResponsiveFlatList';\nimport { alertInfo, isMobile } from '../../../../services/utils';\nimport { CSondage } from '../../../../entities/CSondage';\nimport { ScreenNames } from '../../../../ScreenNames';\nimport { getPictureURI } from '../../../../services/api/helper.api';\nimport { surveyImage } from '../../../../services/assets';\nimport AppText from '../../../../components/atomic/AppText';\nimport { StyleSheet } from 'react-native';\nimport { LIGHT_GRAY } from '../../../../styles/appColor';\nimport { t } from '../../../../services/translations';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport useContributionListRefresh from '../../../../hooks/useContributionListRefresh';\nimport ContributionValidatedItem from '../../../../components/atomic/ContributionValidatedItem';\n\nexport function SurveyValidatedAdminListScreen() {\n const user = useLoggedUser();\n const navigation = useNavigation>();\n const dispatch = useDispatch();\n const [search, setSearch] = useState('');\n\n const {\n data: contributions,\n isLoading,\n fetchNext,\n refresh,\n } = usePaginatedList(\n (cursor: string | null) =>\n getContributionsList(user, GetContributionsMode.approved, ContributionType.SURVEY, search, cursor),\n [search, user]\n );\n\n function handleRemoveContribution(id: number) {\n dispatch(setLoading(true));\n removeContribution(user, id)\n .then(() => {\n dispatch(setContributionsListNeedsRefresh(true));\n refresh();\n })\n .catch(() => {\n alertInfo(t('error_occurred'));\n })\n .finally(() => {\n dispatch(setLoading(false));\n });\n }\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n // Refresh after an update\n useContributionListRefresh(refresh);\n\n return (\n \n setSearch('')}\n leftIcon=\"arrow-back\"\n onChangeText={setSearch}\n value={search}\n style={{ marginBottom: 10 }}\n />\n {\n return (\n {\n navigation.navigate(ScreenNames.ContributionItemDetailScreen, {\n id: item.id,\n contributionType: ContributionType.SURVEY,\n isNotif: false,\n isAdminView: true,\n });\n }}\n overlayContent={<>}\n additionalButtons={<>}\n labelContent={<>}\n onEdit={() =>\n navigation.navigate(ScreenNames.ContributionEditFormScreen, {\n id: item.id,\n contributionType: ContributionType.SURVEY,\n isAdminView: true,\n })\n }\n onRemove={() => handleRemoveContribution(item.contribution.id)}\n imagesCount={item.contribution?.contributionMedias?.length || 0}\n />\n );\n }}\n ListEmptyComponent={{t('no_contributions')}}\n onEndReached={fetchNext}\n />\n \n );\n}\n\nconst styles = StyleSheet.create({\n emptyText: {\n textAlign: 'center',\n color: LIGHT_GRAY,\n },\n});\n","import React from 'react';\nimport { createMaterialTopTabNavigator } from '@react-navigation/material-top-tabs';\nimport { t } from '../services/translations';\nimport { isMobile } from '../services/utils';\nimport { ScreenNames } from '../ScreenNames';\nimport { SurveyToValidateAdminListScreen } from '../screens/loggedIn/contribution/survey/SurveyToValidateAdminListScreen';\nimport { SurveyValidatedAdminListScreen } from '../screens/loggedIn/contribution/survey/SurveyValidatedAdminListScreen';\nimport { BACKGROUND_COLOR } from '../styles/appColor';\n\nexport function SurveyAdministrationRoute() {\n const Tab = createMaterialTopTabNavigator();\n return (\n \n \n \n \n );\n}\n","import React, { useMemo, useState } from 'react';\nimport { AppScreen } from '../../components/containers/AppScreen';\nimport { TextFormField } from '../../components/atomic/FormField';\nimport { t } from '../../services/translations';\nimport { AppSafeAreaView } from '../../components/containers/AppSafeAreaView';\nimport AppText from '../../components/atomic/AppText';\nimport { BackButton } from '../../components/atomic/BackButton';\nimport { AppButton, Type } from '../../components/atomic/AppButton';\nimport { putNewPassword } from '../../services/api/user.api';\nimport { useDispatch } from 'react-redux';\nimport { setLoading } from '../../store/action';\nimport { alertInfo } from '../../services/utils';\nimport { ScreenNames } from '../../ScreenNames';\nimport useLoggedUser from '../../hooks/useLoggedUser';\n\nexport function EditPasswordScreen(props: { navigation }) {\n const [previousPassword, setPreviousPassword] = useState('');\n const [password, setPassword] = useState('');\n const [passwordConfirmation, setPasswordConfirmation] = useState('');\n\n const user = useLoggedUser();\n const dispatch = useDispatch();\n\n function _updatePassword() {\n dispatch(setLoading(true));\n putNewPassword(user, previousPassword, password)\n .then(() => {\n alertInfo(t('password_changed_successfully'));\n props.navigation.navigate(ScreenNames.Profile);\n })\n .catch((error) => {\n if (error.response) {\n alertInfo(t(error.response.data));\n } else {\n alertInfo(t('unknown_error'));\n }\n })\n .finally(() => {\n dispatch(setLoading(false));\n });\n }\n\n const valid = useMemo(() => {\n return previousPassword.length > 0 && password == passwordConfirmation && password.length > 0;\n }, [previousPassword, password, passwordConfirmation]);\n\n return (\n \n \n {t('change_password')}\n \n \n \n \n \n \n \n );\n}\n","import React, { createContext } from \"react\";\n\ninterface categoriesContextProps {\n register(callback: () => void): void;\n unregister(callback: () => void): void;\n call(): void;\n}\n\nexport const CategoriesContext = createContext({\n call: () => {},\n register: (_: () => void) => {},\n unregister: (_: () => void) => {},\n});","import React from 'react';\nimport { FormField } from '../FormField';\nimport { t } from '../../../services/translations';\nimport { isMobile } from '../../../services/utils';\nimport { StyleSheet, TouchableOpacity, View } from 'react-native';\nimport { useField } from 'formik';\nimport TextField from './TextField';\n\nexport type ColorPickerProps = {\n name: string;\n title: string;\n colors: string[];\n required?: boolean;\n style?: any;\n};\n\nexport default function ColorPickerField({ name, title, colors, required, style }: ColorPickerProps) {\n const [field, , helper] = useField(name);\n\n return (\n \n \n {colors.map((color) => (\n helper.setValue(color)}\n />\n ))}\n {field.value && CSS.supports('color', field.value) && !colors.includes(field.value) && (\n \n )}\n \n {!isMobile() && }\n \n );\n}\n\nconst styles = StyleSheet.create({\n container: { marginBottom: 48 },\n content: { flexDirection: 'row', flexWrap: 'wrap', maxWidth: !isMobile() ? '70%' : undefined },\n color: {\n width: 64,\n height: 24,\n borderColor: 'black',\n borderWidth: 0,\n },\n colorSelected: {\n borderWidth: 2,\n },\n customColorField: { marginTop: 16 },\n});\n","import React, { useEffect, useState } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport * as Yup from 'yup';\nimport { ContributionType, ContributionTypesInfos } from '../../types';\nimport AppText from '../atomic/AppText';\nimport { CustomModule } from '../../entities/CustomModule';\nimport { t } from '../../services/translations';\nimport Form from '../atomic/formik/Form';\nimport { useMutation } from '@tanstack/react-query';\nimport { postCategory } from '../../services/api/category.api';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport { setLoading } from '../../store/action';\nimport { useDispatch } from 'react-redux';\nimport SubmitButton from '../atomic/formik/SubmitButton';\nimport TextField from '../atomic/formik/TextField';\nimport { categoriesColors } from '../../screens/categories/CreateCategoryScreen';\nimport ColorPickerField from '../atomic/formik/ColorPickerField';\n\nexport type CreateCategoryFormProps = {\n contributionType?: ContributionType;\n customModule?: CustomModule;\n onSuccess?: () => void;\n};\n\ntype FormValues = {\n name: string;\n color: string;\n};\n\nconst schema = Yup.object({\n name: Yup.string().min(1, t('field_required')).required(t('field_required')),\n color: Yup.string()\n .min(1, t('field_required'))\n .test('is-color', t('field_invalid'), function (value) {\n return CSS.supports('color', value);\n })\n .required(t('field_required')),\n});\n\nexport default function CreateCategoryForm({ contributionType, customModule, onSuccess }: CreateCategoryFormProps) {\n const loggedUser = useLoggedUser();\n const dispatch = useDispatch();\n const [resetKey, setResetKey] = useState(0);\n\n const { mutateAsync, isLoading } = useMutation({\n mutationFn: async (values: FormValues) => {\n await postCategory(\n loggedUser.entreprise?.id!,\n {\n type: contributionType ? ContributionTypesInfos[contributionType].key : null,\n customModuleId: customModule?.id,\n name: values.name,\n color: values.color,\n },\n loggedUser.token!\n );\n },\n onSuccess: () => {\n onSuccess?.();\n setResetKey(resetKey + 1);\n },\n });\n\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [dispatch, isLoading]);\n\n return (\n \n \n {customModule && {customModule.title}}\n {contributionType && {t(ContributionTypesInfos[contributionType].key)}}\n \n \n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n title: {\n fontWeight: 'bold',\n fontSize: 16,\n marginVertical: 18,\n },\n});\n","import axios from './base';\nimport { apiUrlBase } from '../../../configuration';\nimport { headers } from './base';\nimport { UserSaved } from '../storage';\nimport { CustomModule } from '../../entities/CustomModule';\nimport { Paginated } from '../../entities/Paginated';\nimport { ContributionCustomModule } from '../../entities/ContributionCustomModule';\nimport { ContributionCustomModuleCreate } from '../../entities/ContributionCustomModuleCreate';\nimport { ContributionCustomModuleUpdate } from '../../entities/ContributionCustomModuleUpdate';\nimport { objectToFormData } from '../formUtil';\n\nexport async function listCustomModules(user: UserSaved): Promise {\n return axios\n .get(`${apiUrlBase}CustomModule`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function getModuleDetails(user: UserSaved, moduleIdentifier: string): Promise {\n return axios\n .get(`${apiUrlBase}CustomModule/${moduleIdentifier}/details`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport type GetCustomModuleContributionsListOptions = {\n categoryId?: number;\n};\n\nexport async function listCustomModuleContributions(\n user: UserSaved,\n moduleIdentifier: string,\n cursor: string | null,\n search?: string | null,\n options: GetCustomModuleContributionsListOptions = {}\n): Promise> {\n return axios\n .get(`${apiUrlBase}CustomModule/${moduleIdentifier}`, {\n headers: headers(user.token),\n params: { ...options, cursor, search },\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function listCustomModuleContributionsAdmin(\n user: UserSaved,\n moduleIdentifier: string,\n cursor: string | null,\n search?: string | null\n): Promise> {\n return axios\n .get(`${apiUrlBase}CustomModule/${moduleIdentifier}/admin`, {\n headers: headers(user.token),\n params: { cursor, search },\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function getCustomModuleContributionsDetails(\n user: UserSaved,\n id: number\n): Promise {\n return axios\n .get(`${apiUrlBase}CustomModule/contribution/${id}`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport function createCustomModuleContributions(\n user: UserSaved,\n moduleIdentifier: string,\n args: ContributionCustomModuleCreate\n) {\n return axios\n .post(`${apiUrlBase}CustomModule/${moduleIdentifier}`, objectToFormData(args), {\n headers: headers(user.token, 'multipart/form-data'),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport function updateCustomModuleContributions(user: UserSaved, id: number, args: ContributionCustomModuleUpdate) {\n return axios\n .put(`${apiUrlBase}CustomModule/contribution/${id}`, objectToFormData(args), {\n headers: headers(user.token, 'multipart/form-data'),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n","import { useQuery } from '@tanstack/react-query';\nimport { listCustomModules } from '../services/api/custom.module.api';\nimport useLoggedUser from './useLoggedUser';\n\nexport default function useCustomModules() {\n let loggedUser = useLoggedUser();\n\n const {\n data: customModules,\n isFetched: isCustomModulesFetched,\n isError: isCustomModulesError,\n } = useQuery(['customModules'], () => listCustomModules(loggedUser), {\n // Refetch every minute\n refetchInterval: 60000,\n });\n\n return { customModules, isCustomModulesFetched, isCustomModulesError };\n}\n","import React, { useContext, useState } from 'react';\nimport { ScrollView, StyleSheet } from 'react-native';\nimport AppText from '../../components/atomic/AppText';\nimport { t } from '../../services/translations';\nimport { PRIMARY_COLOR } from '../../styles/appColor';\nimport { CategoriesContext } from './CategoriesContext';\nimport { CategoriesContributions } from '../../utils/Category';\nimport { AppScreen } from '../../components/containers/AppScreen';\nimport CreateCategoryForm from '../../components/molecules/CreateCategoryForm';\nimport useCustomModules from '../../hooks/useCustomModules';\n\nexport const categoriesColors: string[] = [\n '#03579b',\n '#0488d1',\n '#03a9f4',\n '#4fc3f7',\n '#253137',\n '#455a64',\n '#607d8b',\n '#90a4ae',\n '#19237e',\n '#303f9f',\n '#3f51b5',\n '#7986cb',\n '#4a198c',\n '#7b21a2',\n '#9c27b0',\n '#ba68c8',\n '#88144f',\n '#c21f5b',\n '#e92663',\n '#f06292',\n '#bf360c',\n '#e64a18',\n '#ff5722',\n '#ff8a65',\n '#f67f17',\n '#fbc02c',\n '#33691d',\n '#689f38',\n '#8bc34a',\n];\n\nexport function CreateCategoryScreen() {\n const { call } = useContext(CategoriesContext);\n const [success, setSuccess] = useState(false);\n const { customModules } = useCustomModules();\n\n return (\n \n \n {success && {t('category_creation_successful')}}\n {CategoriesContributions.map((categoryContribution) => (\n {\n call();\n setSuccess(true);\n }}\n />\n ))}\n {customModules?.map((customModule) => (\n {\n call();\n setSuccess(true);\n }}\n />\n ))}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n padding: 16,\n },\n title: { fontWeight: 'bold', color: PRIMARY_COLOR },\n});\n","import React, { useState } from 'react';\nimport { TouchableOpacity, View } from 'react-native';\nimport { Icon } from '@rneui/base';\nimport { useDispatch } from 'react-redux';\nimport { AppButton, Type } from '../../components/atomic/AppButton';\nimport AppText from '../../components/atomic/AppText';\nimport { FormField, TextFormField } from '../../components/atomic/FormField';\nimport { Category } from '../../entities/Category';\nimport { putCategory } from '../../services/api/category.api';\nimport { t } from '../../services/translations';\nimport { isMobile } from '../../services/utils';\nimport { setLoading } from '../../store/action';\nimport { categoriesColors } from './CreateCategoryScreen';\nimport useLoggedUser from '../../hooks/useLoggedUser';\n\nexport const EditCategory = ({ category, close }: { category: Category; close(): void }) => {\n const dispatch = useDispatch();\n const user = useLoggedUser();\n\n const [name, setName] = useState(category.name);\n const [color, setColor] = useState(category.color);\n const [customColor, setCustomColor] = useState();\n\n const onCustomColor = (customColor: string) => {\n if (!!customColor && CSS.supports('color', customColor)) {\n setCustomColor(customColor);\n setColor(customColor);\n }\n };\n\n const updateCategory = () => {\n dispatch(setLoading(true));\n putCategory(category.id, { color, name: name.trim() }, user.token!)\n .then(close)\n .finally(() => dispatch(setLoading(false)));\n };\n\n return (\n \n \n \n {t(category.type)}\n \n \n \n \n {categoriesColors.map((col) => (\n setColor(col)}\n />\n ))}\n {!!customColor && (\n setColor(customColor)}\n />\n )}\n \n \n {!isMobile() && (\n \n )}\n \n \n );\n};\n","import React, { useCallback, useContext, useEffect, useRef, useState } from 'react';\nimport { ScrollView, View } from 'react-native';\nimport { Icon } from '@rneui/base';\nimport { useDispatch } from 'react-redux';\nimport AppText from '../../components/atomic/AppText';\nimport { CategoryChip } from '../../components/atomic/CategoryChip';\nimport { Category } from '../../entities/Category';\nimport { deleteCategory, getCategories, postOrderCategory } from '../../services/api/category.api';\nimport { t } from '../../services/translations';\nimport { isMobile } from '../../services/utils';\nimport { setLoading } from '../../store/action';\nimport { PRIMARY_COLOR } from '../../styles/appColor';\nimport { ContributionType, ContributionTypesInfos } from '../../types';\nimport { CategoriesContributions, GLOBAL_CATEGORY, SERVICE_CATEGORY, GEOSITE_CATEGORY } from '../../utils/Category';\nimport { CategoriesContext } from './CategoriesContext';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport useCustomModules from '../../hooks/useCustomModules';\n\nconst EditableChip = ({\n first,\n last,\n category,\n onLeft,\n onRight,\n onEdit,\n onDelete,\n}: {\n first: boolean;\n last: boolean;\n category: Category;\n onLeft(): void;\n onRight(): void;\n onEdit(category: Category): void;\n onDelete(category: Category): void;\n}) => {\n return (\n \n \n {!first && (\n \n {'<'}\n \n )}\n \n {!last && (\n \n {'>'}\n \n )}\n \n \n onEdit(category)}\n style={{ marginRight: 24 }}\n name=\"edit\"\n size={18}\n color={PRIMARY_COLOR}\n type=\"feather\"\n />\n onDelete(category)} name=\"trash-alt\" size={18} color={PRIMARY_COLOR} />\n \n \n );\n};\n\nexport const ManageCategoriesOrder = ({ onEdit }: { onEdit(category: Category): void }) => {\n const dispatch = useDispatch();\n const loggedUser = useLoggedUser();\n\n const { register, unregister } = useContext(CategoriesContext);\n const { customModules } = useCustomModules();\n\n const fetchCategories = useCallback(() => {\n dispatch(setLoading(true));\n getCategories(loggedUser.entreprise?.id!, loggedUser.token!)\n .then((cat) => setCategories(cat))\n .finally(() => dispatch(setLoading(false)));\n }, [dispatch, loggedUser.token, loggedUser.entreprise?.id]);\n\n useEffect(() => {\n const callback = () => {\n fetchCategories();\n };\n register(callback);\n\n () => unregister(callback);\n }, []);\n\n const [categories, setCategories] = useState<{ [key: string]: Category[] } | undefined>(undefined);\n\n useEffect(fetchCategories, [fetchCategories]);\n\n if (!categories) {\n return null;\n }\n\n return (\n \n \n {t('existing_categories')}\n \n {t('existing_categories_details')}\n {CategoriesContributions.map((categoryContribution) => (\n \n ))}\n {customModules?.map((customModule) => (\n \n ))}\n \n );\n};\n\nexport type ManageCategoriesOrderItemProps = {\n title: string;\n identifier: string;\n contributionType?: ContributionType;\n categories: { [key: string]: Category[] };\n onEdit(category: Category): void;\n setCategories: React.Dispatch<\n React.SetStateAction<\n | {\n [key: string]: Category[];\n }\n | undefined\n >\n >;\n};\n\nexport function ManageCategoriesOrderItem({\n title,\n identifier,\n contributionType,\n categories,\n onEdit,\n setCategories,\n}: ManageCategoriesOrderItemProps) {\n const timeoutRef = useRef();\n const dispatch = useDispatch();\n const loggedUser = useLoggedUser();\n\n const move = (type: string, id: number, delta: number) => {\n const categoryIndex = categories[type].findIndex((x) => x.id === id);\n const category = categories[type][categoryIndex];\n const filtered = categories[type].filter((x) => x.id !== id);\n\n filtered.splice(categoryIndex + delta, 0, category);\n\n setCategories((prev) => ({ ...prev, [type]: filtered }));\n\n if (!!timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n timeoutRef.current = setTimeout(() => {\n dispatch(setLoading(true));\n postOrderCategory(\n filtered.reduce((prev, cat, idx) => ({ ...prev, [cat.id.toString()]: idx }), {}),\n loggedUser.token!\n ).finally(() => dispatch(setLoading(false)));\n }, 3000);\n };\n\n const onLeft = (type: string, id: number) => move(type, id, -1);\n\n const onRight = (type: string, id: number) => move(type, id, 1);\n\n const onDelete = (category: Category) => {\n dispatch(setLoading(true));\n deleteCategory(category.id, loggedUser.token!)\n .then(() => {\n setCategories((prev) => ({\n ...prev,\n [category.type]: prev![category.type].filter((x) => x.id !== category.id),\n }));\n })\n .finally(() => dispatch(setLoading(false)));\n };\n\n return (\n \n {title}\n \n \n {contributionType === ContributionType.COMPANY_NEWS && (\n <>\n \n \n \n )}\n {(categories[identifier] ?? []).map((cat, idx) => (\n onLeft(identifier, cat.id)}\n onRight={() => onRight(identifier, cat.id)}\n onEdit={onEdit}\n onDelete={onDelete}\n />\n ))}\n \n \n );\n}\n","import React, { useState } from 'react';\nimport { NavigationProp, ParamListBase } from '@react-navigation/native';\nimport { EditCategory } from './EditCategory';\nimport { ManageCategoriesOrder } from './ManageCategoriesOrder';\nimport { Category } from '../../entities/Category';\nimport { AppScreen } from '../../components/containers/AppScreen';\n\nexport function ManageCategoryScreen(props: { navigation: NavigationProp }) {\n const [categoryEditing, setCategoryEditing] = useState(undefined);\n\n const display = !!categoryEditing ? (\n setCategoryEditing(undefined)} category={categoryEditing} />\n ) : (\n \n );\n\n return {display};\n}\n","import React, { useState } from 'react';\nimport { createMaterialTopTabNavigator } from '@react-navigation/material-top-tabs';\nimport { t } from '../services/translations';\nimport { isMobile } from '../services/utils';\nimport { ScreenNames } from '../ScreenNames';\nimport { CreateCategoryScreen } from '../screens/categories/CreateCategoryScreen';\nimport { ManageCategoryScreen } from '../screens/categories/ManageCategoryScreen';\nimport { CategoriesContext } from '../screens/categories/CategoriesContext';\nimport { BACKGROUND_COLOR } from '../styles/appColor';\n\nexport function CategoriesAdministrationRoute() {\n const Tab = createMaterialTopTabNavigator();\n const [callbacks, setCallbacks] = useState<(() => void)[]>([]);\n\n const call = () => {\n for (const callback of callbacks) {\n callback();\n }\n };\n\n const register = (callback: () => void) => setCallbacks((prev) => [...prev, callback]);\n\n const unregister = (callback: () => void) => setCallbacks((prev) => prev.filter((c) => c !== callback));\n\n return (\n \n \n \n \n \n \n );\n}\n","import { useEffect, useState } from 'react';\nimport { language } from '../services/translations';\n\nconst ephemeris = require('../ephemeris.json');\n\nexport default function useTodayDateTime() {\n const [date, setDate] = useState(new Date());\n const ephemerisOfTheDay = ephemeris[date.getMonth()][date.getDate() - 1];\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setDate(new Date());\n }, 60000);\n return () => clearTimeout(timer);\n }, [date]);\n\n return {\n date: new Intl.DateTimeFormat(language(), {\n day: '2-digit',\n year: 'numeric',\n month: 'long',\n weekday: 'long',\n }).format(date),\n shortDate: new Intl.DateTimeFormat(language(), {\n day: '2-digit',\n year: 'numeric',\n month: '2-digit',\n }).format(date),\n time: new Intl.DateTimeFormat(language(), {\n hour: 'numeric',\n minute: 'numeric',\n }).format(date),\n ephemerisOfTheDay: ephemerisOfTheDay[1] + ' ' + ephemerisOfTheDay[0],\n };\n}\n","import {\n DrawerContentComponentProps,\n DrawerContentScrollView,\n DrawerItem,\n DrawerItemList,\n} from '@react-navigation/drawer';\nimport React, { useMemo } from 'react';\nimport { t } from '../services/translations';\nimport Logo from '../components/atomic/Logo';\nimport { useDispatch } from 'react-redux';\nimport AppText from '../components/atomic/AppText';\nimport { combineNames, drawerIcon, isMobile, openURL } from '../services/utils';\nimport { ProfilePicture } from '../components/atomic/ProfilePicture';\nimport { Dimensions, Image, TouchableOpacity, View } from 'react-native';\nimport { getPictureURI } from '../services/api/helper.api';\nimport { LIGHT_GRAY } from '../styles/appColor';\nimport { logout } from '../services/api/login';\nimport useTodayDateTime from '..//hooks/useTodayDateTime';\nimport { ScreenNames } from '../ScreenNames';\nimport useLoggedUser from '../hooks/useLoggedUser';\n\nfunction Separator() {\n return ;\n}\n\nexport function CustomDrawerContent(props: DrawerContentComponentProps) {\n const dispatch = useDispatch();\n const user = useLoggedUser();\n const todayDateTime = useTodayDateTime();\n\n let windowHeight = Dimensions.get('window').height;\n\n useMemo(() => {\n windowHeight = Dimensions.get('window').height;\n }, [Dimensions.get('window').height]);\n\n const { state, ...rest } = props;\n\n return (\n \n {\n props.navigation.navigate(ScreenNames.Profile);\n }}\n >\n \n \n \n {combineNames(user)}\n \n \n \n \n {!isMobile() && (\n \n \n {todayDateTime.date}\n \n {todayDateTime.time}\n {todayDateTime.ephemerisOfTheDay}\n \n )}\n \n \n\n \n\n {\n props.navigation.navigate(ScreenNames.Profile);\n }}\n />\n\n {\n openURL(\n 'https://support-konecteam.notion.site/Guide-contributeur-KonecTeam-2d68f95557e34a26ae7bf0cc84ca4255?pvs=4'\n );\n }}\n />\n\n {\n logout(dispatch);\n }}\n />\n \n \n );\n}\n","import { ReactNode } from 'react';\nimport { StyleSheet } from 'react-native';\nimport { isMobile } from '../../services/utils';\n\nexport type HoverableProps = {\n children: ReactNode;\n onHoverChange: (value: boolean) => void;\n};\n\nexport default function Hoverable({ children, onHoverChange }: HoverableProps) {\n if (isMobile()) {\n return <>{children};\n } else {\n return (\n
onHoverChange(true)} onMouseLeave={() => onHoverChange(false)}>\n {children}\n
\n );\n }\n}\n","import React, { createRef, ForwardedRef, useCallback, useEffect, useImperativeHandle, useMemo, useState } from 'react';\nimport {\n FlatList,\n ListRenderItem,\n RefreshControl,\n StyleProp,\n StyleSheet,\n TouchableOpacity,\n View,\n ViewStyle,\n} from 'react-native';\nimport OutsidePressHandler from 'react-native-outside-press';\nimport { PRIMARY_COLOR } from '../../styles/appColor';\nimport { AppTextInput } from './AppTextInput';\nimport { FormField } from './FormField';\nimport Hoverable from './Hoverable';\n\nexport type AutoCompleteProps = {\n title?: string;\n placeholder: string;\n style?: StyleProp;\n defaultQuery?: string;\n noModal?: boolean;\n renderItem: ListRenderItem;\n onSelect: (item: TItem) => void;\n search: (q: string) => PromiseLike;\n keyExtractor: (item: TItem) => string;\n};\n\nexport type AutoCompleteHandle = {\n setQuery: (value: string) => void;\n};\n\nexport default React.forwardRef(\n (\n {\n title,\n placeholder,\n style,\n defaultQuery,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n noModal,\n renderItem,\n onSelect,\n search,\n keyExtractor,\n }: AutoCompleteProps,\n ref: ForwardedRef\n ) => {\n const [items, setItems] = useState([]);\n const [show, setShow] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n const [hoveredIndex, setHoveredIndex] = useState(0);\n const [query, setQuery] = useState('');\n const flatListRef = createRef();\n\n useImperativeHandle(ref, () => ({\n setQuery,\n }));\n\n useEffect(() => setQuery(defaultQuery ?? ''), [defaultQuery]);\n\n const reload = useCallback(async () => {\n setIsLoading(true);\n\n try {\n setItems(await search(query));\n } catch (e) {\n console.error(e);\n } finally {\n setIsLoading(false);\n }\n }, [query, search]);\n\n useEffect(() => {\n reload();\n }, [reload]);\n\n const handleQueryChange = useCallback(\n (text: string) => {\n setQuery(text);\n setHoveredIndex(0);\n setShow(true);\n },\n [setQuery, setHoveredIndex]\n );\n\n const handleSelect = useCallback(\n (item: TItem) => {\n onSelect(item);\n setShow(false);\n },\n [onSelect, setShow]\n );\n\n const autocompleteList = useMemo(\n () => (\n \n ref={flatListRef}\n data={items}\n renderItem={({ item, index, separators }) => (\n {\n if (value) {\n setHoveredIndex(index);\n }\n }}\n >\n handleSelect(item)}\n style={[styles.item, index === hoveredIndex ? styles.hoveredItem : undefined]}\n >\n {renderItem({ item, index, separators })}\n \n \n )}\n keyExtractor={keyExtractor}\n refreshControl={}\n />\n ),\n [flatListRef, items, hoveredIndex, isLoading, handleSelect, renderItem, keyExtractor, reload]\n );\n\n return (\n \n \n setShow(false)}>\n setShow(true)}\n />\n {show && query.length > 0 && items.length > 0 && {autocompleteList}}\n \n \n \n );\n }\n);\n\nconst styles = StyleSheet.create({\n container: { position: 'relative', borderWidth: 0, zIndex: 10000000 },\n item: {\n padding: 4,\n },\n hoveredItem: {\n backgroundColor: 'lightgray',\n },\n list: {\n position: 'absolute',\n backgroundColor: 'white',\n zIndex: 2000,\n top: '100%',\n width: '100%',\n borderWidth: 1,\n borderColor: PRIMARY_COLOR,\n borderRadius: 4,\n elevation: 20,\n maxHeight: 200,\n },\n modal: {\n backgroundColor: 'white',\n },\n});\n","import React, { useCallback, useMemo } from 'react';\nimport { Text, View, ViewStyle } from 'react-native';\nimport uuid from 'react-native-uuid';\nimport { globalStyle } from '../../styles/globalStyle';\nimport { getGoogleAPIKey, isMobile } from '../../services/utils';\nimport AppAutoComplete from './AppAutoComplete';\nimport axios from 'axios';\n\ndeclare var google: any;\n\nexport type AddressAutocompleteProps = {\n title: string;\n value: string;\n style?: ViewStyle;\n setValue: (a: string) => void;\n setCoordinates: (a: string) => void;\n};\n\nexport type PlaceResult = {\n description: string;\n matched_substrings: {\n length: number;\n offset: number;\n }[];\n place_id: string;\n reference: string;\n structured_formatting: {\n main_text: string;\n main_text_matched_substrings: {\n length: number;\n offset: number;\n }[];\n secondary_text: string;\n };\n terms: {\n offset: number;\n value: string;\n }[];\n types: string[];\n};\n\nasync function getLatitudeLongitudeFromPlaceId(googleApiKey: string, placeId: string): Promise {\n if (isMobile()) {\n const result = await axios\n .get('https://maps.googleapis.com/maps/api/place/details/json', {\n params: {\n place_id: placeId,\n key: googleApiKey,\n language: 'fr',\n fields: ['geometry'],\n },\n withCredentials: true,\n })\n .then((response) => {\n if (response?.data?.result?.geometry?.location) {\n return `${response?.data?.result?.geometry?.location?.lat};${response?.data?.result?.geometry?.location?.lng}`;\n } else {\n return '';\n }\n });\n\n return result;\n } else {\n return new Promise((resolve, reject) => {\n const geocoder = new google.maps.Geocoder();\n geocoder.geocode({ placeId }, (results: any, status: any) => {\n if (status === 'OK') {\n if (results[0]) {\n resolve(`${results[0].geometry.location.lat()};${results[0].geometry.location.lng()}`);\n } else {\n resolve('');\n }\n } else {\n resolve('');\n }\n });\n });\n }\n}\n\nexport default function AddressAutocomplete({\n title,\n value,\n style,\n setValue,\n setCoordinates,\n}: AddressAutocompleteProps) {\n const key = useMemo(() => getGoogleAPIKey(), []);\n const sessionToken = useMemo(() => uuid.v4() as string, []);\n const language = 'fr';\n\n const handleSearch = useCallback(\n async (query: string) => {\n if (!query || query.length < 2) {\n return [];\n }\n\n if (isMobile()) {\n const result = await axios\n .get('https://maps.googleapis.com/maps/api/place/autocomplete/json', {\n params: {\n input: query,\n key,\n sessiontoken: sessionToken,\n language,\n },\n withCredentials: true,\n })\n .then((response) => response?.data?.predictions || []);\n\n return result as PlaceResult[];\n } else {\n const service = new google.maps.places.AutocompleteService();\n const result = await service.getPlacePredictions(\n {\n input: query,\n key,\n sessiontoken: sessionToken,\n language,\n },\n () => {}\n );\n\n return (result?.predictions || []) as PlaceResult[];\n }\n },\n [key, language, sessionToken]\n );\n\n return (\n \n title={title}\n defaultQuery={value}\n placeholder=\"\"\n style={style}\n renderItem={({ item }) => (\n \n {item.description}\n \n )}\n onSelect={(item) => {\n setValue(item.description);\n\n getLatitudeLongitudeFromPlaceId(key, item.place_id).then((coordinates) => {\n setCoordinates(coordinates);\n });\n }}\n search={handleSearch}\n keyExtractor={(item) => item.place_id.toString()}\n noModal\n />\n );\n}\n","import React, { useCallback } from 'react';\nimport { StyleProp, ViewStyle } from 'react-native';\nimport { User } from '../../entities/User';\nimport { searchUsers } from '../../services/api/user.api';\nimport { t } from '../../services/translations';\nimport AppAutoComplete from './AppAutoComplete';\nimport { ProfileRow } from './ProfileRow';\nimport useLoggedUser from '../../hooks/useLoggedUser';\n\nexport type UserAutocompleteProps = {\n title?: string;\n style?: StyleProp;\n selectedIds: number[];\n onSelect: (user: User) => void;\n updateNumSelected?: (n: number) => void;\n};\n\nexport default function UserAutocomplete({ title, style, selectedIds, onSelect }: UserAutocompleteProps) {\n const user = useLoggedUser();\n\n const handleSearch = useCallback(\n async (query: string) => (await searchUsers(user, query)).filter((e) => !selectedIds.includes(e.id)),\n [user, selectedIds]\n );\n\n return (\n \n title={title}\n placeholder={t('search_user')}\n style={style}\n renderItem={({ item }) => }\n onSelect={onSelect}\n search={handleSearch}\n keyExtractor={(item) => item.id.toString()}\n />\n );\n}\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { StyleSheet, TouchableOpacity, View } from 'react-native';\nimport { useDispatch } from 'react-redux';\nimport { User } from '../../entities/User';\nimport {\n CompanyGeoSiteReduced,\n CompanyGroupReduced,\n CompanyServiceReduced,\n getCompanyGeoSitesWithCount,\n getCompanyGeoSitesWithServicesWithCount,\n getCompanyServicesWithCount,\n getCompanyUsersCount,\n getLoggedUserCompanyGroupsWithCount,\n} from '../../services/api/company.api';\nimport { getCompanyUsersFromCompanyId, getUsersByIds } from '../../services/api/user.api';\nimport { t } from '../../services/translations';\nimport { alertInfo, hasSubAdminRight, isAdmin, isMobile } from '../../services/utils';\nimport { setLoading } from '../../store/action';\nimport { PRIMARY_COLOR } from '../../styles/appColor';\nimport { SpreadingType } from '../../types';\nimport AppSwitch from './AppSwitch';\nimport AppText, { Mode } from './AppText';\nimport { FormFieldPicker } from './FormField';\nimport { ProfileRow } from './ProfileRow';\nimport UserAutocomplete from './UserAutocomplete';\nimport { uniq } from 'lodash';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\n\nexport type PickUsersProps = {\n enabled: boolean;\n filterByUserRights?: boolean;\n subAdminCanShareWithEveryone?: boolean;\n left?: React.ReactNode;\n spreadingType: SpreadingType | undefined;\n pickedUsers: number[];\n pickedServices: number[];\n pickedGeoSites: number[];\n pickedGroups: number[];\n setSpreadingType: (s: SpreadingType | undefined) => void;\n setPickedUsers: (ids: number[]) => void;\n setPickedServices: (ids: number[]) => void;\n setPickedGeoSites: (ids: number[]) => void;\n setPickedGroups: (ids: number[]) => void;\n onNeedsValidationChange?: (hasAdminRight: boolean) => void;\n};\n\nexport function PickUsers({\n enabled,\n filterByUserRights,\n subAdminCanShareWithEveryone,\n left,\n spreadingType,\n pickedUsers,\n pickedServices,\n pickedGeoSites,\n pickedGroups,\n setSpreadingType,\n setPickedUsers,\n setPickedServices,\n setPickedGeoSites,\n setPickedGroups,\n onNeedsValidationChange,\n}: PickUsersProps) {\n const dispatch = useDispatch();\n const user = useLoggedUser();\n\n const [companyServices, setCompanyServices] = useState([]);\n const [companyGeoSites, setCompanyGeoSites] = useState([]);\n const [companyGeoSitesWithServices, setCompanyGeoSitesWithServices] = useState<{\n [key: number]: { service: number; count: number }[];\n }>({});\n const [companyGroups, setCompanyGroups] = useState([]);\n const [users, setUsers] = useState([]);\n const [entrepriseUserCount, setEntrepriseUserCount] = useState(0);\n const [collapsedGeoSites, setCollapsedGeoSites] = useState([]);\n\n const [pickedGeoSiteServices, setPickedGeoSiteServices] = useState<{ siteId: number; serviceId: number }[]>([]);\n\n // Filter by user rights\n const spreadingTypeOptions = useMemo(() => {\n const isAdmin = !filterByUserRights || user.lovIdType === 13;\n const isServiceSubAdmin = isAdmin || user.userSubAdmins?.find((e) => !!e.entrepriseServiceId) !== undefined;\n const isSiteGeoSubAdmin = isAdmin || user.userSubAdmins?.find((e) => !!e.entrepriseSiteGeoId) !== undefined;\n const isGroupSubAdmin = isAdmin || user.userSubAdmins?.find((e) => !!e.entrepriseGroup) !== undefined;\n\n return [\n ...(isAdmin || subAdminCanShareWithEveryone\n ? [{ label: t('company_wide') + ' - ' + user.entreprise.nom, value: SpreadingType.ENTREPRISE }]\n : []),\n ...(isServiceSubAdmin ? [{ label: t('by_service'), value: SpreadingType.SERVICES }] : []),\n ...(isSiteGeoSubAdmin ? [{ label: t('by_geo_site'), value: SpreadingType.SITES }] : []),\n ...(isServiceSubAdmin && isSiteGeoSubAdmin\n ? [{ label: t('by_geo_site_and_service'), value: SpreadingType.SITES_AND_SERVICES }]\n : []),\n ...(isGroupSubAdmin && !!companyGroups?.length ? [{ label: t('by_group'), value: SpreadingType.GROUPS }] : []),\n ...(isAdmin ? [{ label: t('manual'), value: SpreadingType.USERS }] : []),\n ];\n }, [filterByUserRights, user, companyGroups, subAdminCanShareWithEveryone]);\n\n const filteredServices = useMemo(() => {\n const isAdmin = !filterByUserRights || user.lovIdType === 13;\n\n if (isAdmin) {\n return companyServices;\n } else {\n return companyServices.filter(\n (e) => !!user.userSubAdmins?.find((subAdmin) => subAdmin.entrepriseServiceId === e.id)\n );\n }\n }, [companyServices, filterByUserRights, user]);\n\n const filteredGeoSites = useMemo(() => {\n const isAdmin = !filterByUserRights || user.lovIdType === 13;\n\n if (isAdmin) {\n return companyGeoSites;\n } else {\n return companyGeoSites.filter(\n (e) => !!user.userSubAdmins?.find((subAdmin) => subAdmin.entrepriseSiteGeoId === e.id)\n );\n }\n }, [companyGeoSites, filterByUserRights, user]);\n\n const filteredGroups = useMemo(() => {\n const isAdmin = !filterByUserRights || user.lovIdType === 13;\n\n if (isAdmin) {\n return companyGroups;\n } else {\n return companyGroups.filter((e) => !!user.userSubAdmins?.find((subAdmin) => subAdmin.entrepriseGroupId === e.id));\n }\n }, [companyGroups, filterByUserRights, user]);\n\n // Fill users with initial values\n useEffect(() => {\n if (spreadingType === SpreadingType.USERS) {\n getUsersByIds(user, pickedUsers).then((users) => setUsers(users));\n }\n }, []);\n\n // Fill geo sites and services with initial values\n useEffect(() => {\n const newPickedGeoSiteServices: { siteId: number; serviceId: number }[] = [];\n\n pickedGeoSites.forEach((siteId) => {\n pickedServices.forEach((serviceId) => {\n newPickedGeoSiteServices.push({ siteId, serviceId });\n });\n });\n\n setPickedGeoSiteServices(newPickedGeoSiteServices);\n }, []);\n\n // Update geo sites and services when picking a new geo site/service\n useEffect(() => {\n if (spreadingType === SpreadingType.SITES_AND_SERVICES) {\n let pickedSites = uniq(pickedGeoSiteServices.map((e) => e.siteId));\n let pickedServices = uniq(pickedGeoSiteServices.map((e) => e.serviceId));\n\n setPickedGeoSites(pickedSites);\n setPickedServices(pickedServices);\n }\n }, [pickedGeoSiteServices]);\n\n // Get company data about users, services, geo sites and groups\n useEffect(() => {\n setLoading(true);\n getCompanyUsersFromCompanyId(user.entreprise?.id!, user.token!)\n .then(() => getCompanyUsersCount(user.entreprise?.id!, user.token!).then(setEntrepriseUserCount))\n .then(() => getCompanyServicesWithCount(user.entreprise?.id!, user.token!).then(setCompanyServices))\n .then(() => getCompanyGeoSitesWithCount(user.entreprise?.id!, user.token!).then(setCompanyGeoSites))\n .then(() =>\n getCompanyGeoSitesWithServicesWithCount(user.entreprise?.id!, user.token!).then(setCompanyGeoSitesWithServices)\n )\n .then(() => getLoggedUserCompanyGroupsWithCount(user.token!).then(setCompanyGroups))\n .catch((e) => {\n alertInfo(t('unknown_error'));\n })\n .finally(() => dispatch(setLoading(false)));\n }, []);\n\n function selectUser(user: User) {\n const newUsers = [...users, user];\n setUsers(newUsers);\n setPickedUsers(newUsers.map((e) => e.id));\n }\n\n function unselectUser(user: User) {\n const newUsers = users.filter((e) => e.id !== user.id);\n setUsers(newUsers);\n setPickedUsers(newUsers.map((e) => e.id));\n }\n\n function setServiceSelected(id: number, value: boolean) {\n if (value) {\n setPickedServices([...pickedServices, id]);\n } else {\n setPickedServices(pickedServices.filter((e) => e !== id));\n }\n }\n\n function setGeoSiteSelected(id: number, value: boolean) {\n if (value) {\n setPickedGeoSites([...pickedGeoSites, id]);\n } else {\n setPickedGeoSites(pickedGeoSites.filter((e) => e !== id));\n }\n }\n\n function setGroupSelected(id: number, value: boolean) {\n if (value) {\n setPickedGroups([...pickedGroups, id]);\n } else {\n setPickedGroups(pickedGroups.filter((e) => e !== id));\n }\n }\n\n const audienceCount = useMemo(() => {\n switch (spreadingType) {\n case SpreadingType.ENTREPRISE:\n return entrepriseUserCount;\n case SpreadingType.SITES:\n return companyGeoSites != null\n ? pickedGeoSites.map((id) => companyGeoSites.find((s) => s.id === id)?.count || 0).reduce((a, b) => a + b, 0)\n : 0;\n case SpreadingType.SERVICES:\n return companyServices != null\n ? pickedServices.map((id) => companyServices.find((s) => s.id === id)?.count || 0).reduce((a, b) => a + b, 0)\n : 0;\n case SpreadingType.SITES_AND_SERVICES:\n return companyGeoSitesWithServices != null\n ? pickedGeoSiteServices\n .map(({ serviceId, siteId }) => {\n return companyGeoSitesWithServices[siteId]?.find((e) => e.service == serviceId)?.count || 0;\n })\n .reduce((a, b) => a + b, 0)\n : 0;\n case SpreadingType.GROUPS:\n return companyGroups != null\n ? pickedGroups.map((id) => companyGroups.find((s) => s.id === id)?.count || 0).reduce((a, b) => a + b, 0)\n : 0;\n case SpreadingType.USERS:\n return users.length;\n }\n return 0;\n }, [users, pickedGroups, pickedServices, pickedGeoSites, spreadingType]);\n\n const needsValidation =\n !isAdmin(user) &&\n !hasSubAdminRight(\n user,\n companyServices.map((e) => e.id),\n companyGeoSites.map((e) => e.id),\n companyGroups.map((e) => e.id)\n );\n\n useEffect(() => {\n if (onNeedsValidationChange) {\n onNeedsValidationChange(needsValidation);\n }\n }, [needsValidation, onNeedsValidationChange]);\n\n return (\n \n \n {\n if (itemValue != SpreadingType.USERS) {\n setPickedUsers([]);\n setPickedServices([]);\n setPickedGeoSites([]);\n setPickedGroups([]);\n }\n\n setSpreadingType(parseInt(itemValue as any) as SpreadingType);\n }}\n data={spreadingTypeOptions}\n title={t('spreading') + '*' + (enabled ? '' : ' ' + t('available_soon'))}\n >\n {spreadingType == SpreadingType.SERVICES\n ? filteredServices.map((item) => {\n return (\n \n setServiceSelected(item.id, value)}\n value={pickedServices.includes(item.id)}\n />\n {item.libelle}\n \n );\n })\n : null}\n {spreadingType == SpreadingType.SITES\n ? filteredGeoSites.map((item) => {\n return (\n \n setGeoSiteSelected(item.id, value)}\n value={pickedGeoSites.includes(item.id)}\n />\n {item.geoSite}\n \n );\n })\n : null}\n {spreadingType == SpreadingType.SITES_AND_SERVICES\n ? filteredGeoSites.map((geoSite) => {\n return (\n \n \n collapsedGeoSites.includes(geoSite.id)\n ? setCollapsedGeoSites(collapsedGeoSites.filter((e) => e != geoSite.id))\n : setCollapsedGeoSites([geoSite.id, ...collapsedGeoSites])\n }\n >\n \n {collapsedGeoSites.includes(geoSite.id) ? 'â–¼' : 'â–²'} {geoSite.geoSite}\n \n \n {collapsedGeoSites.includes(geoSite.id) &&\n filteredServices\n .filter(\n (service) =>\n companyGeoSitesWithServices[geoSite.id]?.find((e) => e.service == service.id) !== undefined\n )\n .map((service) => {\n return (\n \n {\n if (value) {\n setPickedGeoSiteServices([\n ...pickedGeoSiteServices,\n { siteId: geoSite.id, serviceId: service.id },\n ]);\n } else {\n setPickedGeoSiteServices(\n pickedGeoSiteServices.filter(\n (e) => e.siteId !== geoSite.id || e.serviceId !== service.id\n )\n );\n }\n }}\n value={\n pickedGeoSiteServices.find(\n (e) => e.siteId === geoSite.id && e.serviceId === service.id\n ) !== undefined\n }\n />\n {service.libelle}\n \n );\n })}\n \n );\n })\n : null}\n {spreadingType == SpreadingType.GROUPS\n ? filteredGroups.map((item) => {\n return (\n \n setGroupSelected(item.id, value)}\n value={pickedGroups.includes(item.id)}\n />\n {item.label}\n \n );\n })\n : null}\n {spreadingType == SpreadingType.USERS && (\n <>\n selectUser(user)} selectedIds={users.map((e) => e.id)} />\n {users.map((item) => (\n \n \n \n \n unselectUser(item)}>\n \n \n \n ))}\n \n )}\n \n {left ? (\n left\n ) : (\n \n \n {t('chosen_audience')}\n \n \n {audienceCount} contributeur{audienceCount > 1 ? 's' : ''}\n \n \n )}\n \n );\n}\n\nconst styles = StyleSheet.create({\n userPickRow: {\n flexDirection: 'row',\n marginBottom: 10,\n alignItems: 'center',\n },\n switchText: {\n marginLeft: 10,\n },\n profileRow: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n profileContainer: {\n flex: 1,\n },\n trashIcon: {\n marginLeft: 10,\n marginRight: 24,\n },\n});\n","import React from 'react';\nimport { useField } from 'formik';\nimport * as Yup from 'yup';\nimport { PickUsers } from '../PickUsers';\nimport { SpreadingType } from '../../../types';\nimport { t } from '../../../services/translations';\n\nexport type ContributionSpreadingFieldProps = {\n filterByUserRights?: boolean;\n subAdminCanShareWithEveryone?: boolean;\n left?: React.ReactNode;\n onNeedsValidationChange?: (hasAdminRight: boolean) => void;\n};\n\nexport const contributionSpreadingFieldValidators = {\n spreadingType: Yup.mixed().required(t('field_required')),\n userIds: Yup.array().when('spreadingType', {\n is: (spreadingType: SpreadingType) => spreadingType === SpreadingType.USERS,\n then: Yup.array().min(1, t('field_required')),\n }),\n entrepriseServiceIds: Yup.array().when('spreadingType', {\n is: (spreadingType: SpreadingType) =>\n spreadingType === SpreadingType.SERVICES || spreadingType === SpreadingType.SITES_AND_SERVICES,\n then: Yup.array().min(1, t('field_required')).required(t('field_required')),\n }),\n entrepriseSiteGeoIds: Yup.array().when('spreadingType', {\n is: (spreadingType: SpreadingType) =>\n spreadingType === SpreadingType.SITES || spreadingType === SpreadingType.SITES_AND_SERVICES,\n then: Yup.array().min(1, t('field_required')).required(t('field_required')),\n }),\n entrepriseGroupIds: Yup.array().when('spreadingType', {\n is: (spreadingType: SpreadingType) => spreadingType === SpreadingType.GROUPS,\n then: Yup.array().min(1, t('field_required')).required(t('field_required')),\n }),\n};\n\nexport default function ContributionSpreadingField({\n filterByUserRights,\n subAdminCanShareWithEveryone,\n left,\n onNeedsValidationChange,\n}: ContributionSpreadingFieldProps) {\n const [spreadingTypeField, , spreadingTypeHelper] = useField('spreadingType');\n const [usersField, , usersHelper] = useField('userIds');\n const [servicesField, , servicesHelper] = useField('entrepriseServiceIds');\n const [siteGeosField, , siteGeosHelper] = useField('entrepriseSiteGeoIds');\n const [groupsField, , groupsHelper] = useField('entrepriseGroupIds');\n\n return (\n \n );\n}\n","import React from 'react';\nimport { useField } from 'formik';\nimport { FormField } from '../FormField';\nimport AppText, { Mode } from '../AppText';\nimport { AppRTEEditor } from '../AppRTEEditor';\n\nexport type RichTextFieldProps = {\n name: string;\n title: string;\n required?: boolean;\n};\n\nexport default function RichTextField({ name, title, required, ...rest }: RichTextFieldProps) {\n const [field, meta, helper] = useField(name);\n\n return (\n \n \n {meta.touched && meta.error && {meta.error}}\n \n );\n}\n","import React from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport AppText from '../AppText';\nimport { t } from '../../../services/translations';\nimport SwitchField from './SwitchField';\nimport useLoggedUser from '../../../hooks/useLoggedUser';\n\nexport type ContributionAuthorizationsFieldProps = {\n hideEmailActivated?: boolean;\n};\n\nexport default function ContributionAuthorizationsField({ hideEmailActivated }: ContributionAuthorizationsFieldProps) {\n const user = useLoggedUser();\n const isAdmin = user.lovIdType === 13;\n\n return (\n \n \n \n {t('authorize_comments')}\n \n \n \n {t('generate_notif')}\n \n {isAdmin && !hideEmailActivated && (\n \n \n {t('generate_email')}\n \n )}\n \n );\n}\n\nconst styles = StyleSheet.create({\n container: { flexDirection: 'row', flexWrap: 'wrap', gap: 40 },\n switchGroup: { flexDirection: 'row', gap: 28 },\n});\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { CSondage } from './CSondage';\r\nimport { Fichier } from './Fichier';\r\nimport { Lov } from './Lov';\r\nimport { CSondageReponse } from './CSondageReponse';\r\nimport { CSondageReponseUsers } from './CSondageReponseUsers';\r\n\r\nexport enum CSondageQuestionType {\r\n SINGLE,\r\n MULTIPLE,\r\n TEXT,\r\n}\r\n\r\nexport interface CSondageQuestion {\r\n id: number;\r\n cSondageId: number;\r\n lovIdEtat: number;\r\n lovIdType: number;\r\n fichierIdImage: number;\r\n titre: string;\r\n texte: string;\r\n requis: boolean;\r\n ordre: number;\r\n type: CSondageQuestionType;\r\n cSondage: CSondage;\r\n fichierIdImageNavigation: Fichier;\r\n lovIdEtatNavigation: Lov;\r\n lovIdTypeNavigation: Lov;\r\n cSondageReponse: CSondageReponse[];\r\n cSondageReponseUsers: CSondageReponseUsers[];\r\n}\r\n","import React from 'react';\nimport { View } from 'react-native';\nimport { MediaComponent, SplitMedia } from '../../utils/Medias';\n\nexport interface MediaProps {\n media: string;\n width?: number;\n height?: number;\n}\n\nconst Media = ({ media, width, height }: MediaProps) => {\n const [mediaName, url] = SplitMedia(media);\n\n return {MediaComponent(mediaName, url, width, height)};\n};\n\nexport default Media;\n","import { Extrapolation, interpolate, SharedValue } from 'react-native-reanimated';\nimport type { IComputedDirectionTypes } from 'react-native-reanimated-carousel';\n\ninterface TBaseConfig {\n size: number;\n vertical: boolean;\n}\n\nexport interface ILayoutConfig {\n /**\n * control prev/next item offset.\n * @default 100\n */\n parallaxScrollingOffset?: number;\n /**\n * control prev/current/next item offset.\n * @default 0.8\n */\n parallaxScrollingScale?: number;\n /**\n * control prev/next item offset.\n * @default Math.pow(parallaxScrollingScale, 2)\n */\n parallaxAdjacentItemScale?: number;\n}\n\nexport type TParallaxModeProps = IComputedDirectionTypes<{\n /**\n * Carousel Animated transitions.\n */\n mode?: 'parallax';\n modeConfig?: ILayoutConfig;\n}>;\n\nexport function parallaxLayout(baseConfig: TBaseConfig, modeConfig: ILayoutConfig = {}) {\n const { size, vertical } = baseConfig;\n const {\n parallaxScrollingOffset = 100,\n parallaxScrollingScale = 0.8,\n parallaxAdjacentItemScale = parallaxScrollingScale ** 2,\n } = modeConfig;\n\n return (value: number) => {\n 'worklet';\n const translate = interpolate(\n value,\n [-1, 0, 1],\n [-size + parallaxScrollingOffset, 0, size - parallaxScrollingOffset]\n );\n\n const zIndex = interpolate(value, [-1, 0, 1], [0, size, 0], Extrapolation.CLAMP);\n\n const scale = interpolate(\n value,\n [-1, 0, 1],\n [parallaxAdjacentItemScale, parallaxScrollingScale, parallaxAdjacentItemScale],\n Extrapolation.CLAMP\n );\n\n const opacity = interpolate(value, [-2, -1, 0, 1, 2], [0, 1, 1, 1, 0], Extrapolation.CLAMP);\n\n return {\n transform: [\n vertical\n ? {\n translateY: translate,\n }\n : {\n translateX: translate,\n },\n {\n scale,\n },\n ],\n opacity,\n zIndex,\n };\n };\n}\n\nexport type TTinderBaseConfig = {\n dataLength: number;\n pageWidth: number;\n directionAnimVal: SharedValue;\n};\n\nexport function tinderLayout(baseConfig: TTinderBaseConfig) {\n const { dataLength, pageWidth, directionAnimVal } = baseConfig;\n\n return (value: number) => {\n 'worklet';\n const translateY = interpolate(value, [0, 1], [0, -18]);\n\n const translateX = interpolate(value, [-1, 0], [pageWidth, 0], Extrapolation.CLAMP) * directionAnimVal.value;\n\n const rotateZ = interpolate(value, [-1, 0], [15, 0], Extrapolation.CLAMP) * directionAnimVal.value;\n\n const zIndex = interpolate(\n value,\n [0, 1, 2, 3, 4],\n [0, 1, 2, 3, 4].map((v) => (dataLength - v) * 10),\n Extrapolation.CLAMP\n );\n\n const scale = interpolate(value, [0, 1], [1, 0.95]);\n\n const opacity = interpolate(value, [-1, -0.8, 0, 1], [0, 0.9, 1, 0.85], Extrapolation.EXTEND);\n\n return {\n transform: [{ translateY }, { translateX }, { rotateZ: `${rotateZ}deg` }, { scale }],\n zIndex,\n opacity,\n };\n };\n}\n","import React, { isValidElement, useEffect, useRef, useState } from 'react';\nimport { StyleSheet, TouchableOpacity, View } from 'react-native';\nimport { match } from 'ts-pattern';\nimport RNCarousel, { ICarouselInstance } from 'react-native-reanimated-carousel';\nimport { parallaxLayout, tinderLayout } from '../../utils/Carousel';\nimport { useSharedValue } from 'react-native-reanimated';\nimport AppText from './AppText';\nimport { DARK_GRAY, WHITE } from '../../styles/appColor';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\n\nexport type CarouselRenderItemProps = {\n item: T;\n index: number;\n selected: boolean;\n width: number;\n height: number;\n};\n\nexport type CarouselProps = {\n data: T[];\n extraItems?: React.ReactElement[];\n mode: 'parallax' | 'tinder' | 'parallax-simple';\n width?: number;\n height?: number;\n displayImageNumber?: boolean;\n defaultIndex?: number;\n buttonsPosition?: 'far' | 'near' | 'inside';\n renderEmptyComponent?: ({ width, height }: { width: number; height: number }) => React.ReactElement;\n renderItem: (item: CarouselRenderItemProps) => React.ReactElement;\n};\n\nexport default function Carousel({\n data,\n extraItems,\n mode,\n width = 150,\n height = 150,\n displayImageNumber = false,\n defaultIndex,\n buttonsPosition = 'far',\n renderEmptyComponent,\n renderItem,\n}: CarouselProps) {\n const carouselRef = useRef(null);\n const [currentIndex, setCurrentIndex] = useState(0);\n const [lastLength, setLastLength] = useState(null);\n const [rerender, setRerender] = useState(0);\n const directionAnimVal = useSharedValue(0);\n\n // Navigate to the new item if just added\n useEffect(() => {\n if (data.length > 0 && lastLength !== null && lastLength < data.length) {\n carouselRef.current?.scrollTo({ index: data.length - 1, count: data.length, animated: true });\n setCurrentIndex(data.length - 1);\n setLastLength(data.length);\n } else if (lastLength !== null && lastLength > data.length) {\n carouselRef.current?.scrollTo({ index: 0, count: data.length });\n setLastLength(data.length);\n setRerender((value) => value + 1);\n setCurrentIndex(0);\n }\n }, [data.length, lastLength]);\n\n useEffect(() => {\n if (data.length > 0 && lastLength === null) {\n setLastLength(data.length);\n }\n }, [data.length, lastLength]);\n\n if (!data || data.length === 0) {\n return {renderEmptyComponent && renderEmptyComponent({ width, height })};\n }\n\n if (data.length + (extraItems || []).length === 1) {\n return (\n {renderItem({ item: data[0], index: 0, selected: true, width, height })}\n );\n }\n\n return (\n \n 1}\n defaultIndex={defaultIndex}\n renderItem={({ item, index }) => {\n if (isValidElement(item)) {\n return item;\n } else {\n return renderItem({\n item: item as T,\n index,\n selected: index === currentIndex,\n width,\n height,\n });\n }\n }}\n customAnimation={match(mode)\n .with('parallax', () =>\n parallaxLayout(\n {\n size: width,\n vertical: false,\n },\n {\n parallaxScrollingScale: 1,\n parallaxAdjacentItemScale: 0.5,\n parallaxScrollingOffset: 40,\n }\n )\n )\n .with('tinder', () =>\n tinderLayout({\n dataLength: data.length,\n pageWidth: width,\n directionAnimVal: directionAnimVal,\n })\n )\n .with('parallax-simple', () => undefined)\n .exhaustive()}\n mode={match(mode)\n .with('parallax', () => undefined)\n .with('tinder', () => undefined)\n .with('parallax-simple', () => 'parallax' as 'parallax')\n .exhaustive()}\n modeConfig={match(mode)\n .with('parallax', () => undefined)\n .with('tinder', () => undefined)\n .with('parallax-simple', () => ({\n parallaxScrollingScale: 0.9,\n parallaxScrollingOffset: 50,\n }))\n .exhaustive()}\n scrollAnimationDuration={400}\n onSnapToItem={setCurrentIndex}\n loop={false}\n />\n {displayImageNumber && (\n \n {currentIndex + 1}/{data.length}\n \n )}\n {data.length > 1 && (\n <>\n {\n setCurrentIndex((currentIndex) => currentIndex - 1);\n carouselRef.current?.prev();\n }}\n style={[\n styles.prevButton,\n { top: (height - 30) / 2 },\n match(buttonsPosition)\n .with('far', () => ({\n left: -100,\n }))\n .with('near', () => ({\n left: -34,\n }))\n .with('inside', () => styles.insideButton)\n .exhaustive(),\n currentIndex === 0 ? styles.disabled : undefined,\n ]}\n disabled={currentIndex === 0}\n >\n \n \n {\n setCurrentIndex((currentIndex) => currentIndex + 1);\n carouselRef.current?.next();\n }}\n style={[\n styles.nextButton,\n { top: (height - 30) / 2 },\n match(buttonsPosition)\n .with('far', () => ({\n right: -100,\n }))\n .with('near', () => ({\n right: -34,\n }))\n .with('inside', () => styles.insideButton)\n .exhaustive(),\n currentIndex === data.length - 1 ? styles.disabled : undefined,\n ]}\n disabled={currentIndex === data.length - 1}\n >\n \n \n \n )}\n \n );\n}\n\nconst styles = StyleSheet.create({\n carousel: { overflow: 'visible' },\n carouselContainer: {\n width: '100%',\n justifyContent: 'center',\n alignItems: 'center',\n marginBottom: 10,\n },\n imageNumber: {\n fontSize: 12,\n textAlign: 'center',\n color: DARK_GRAY,\n },\n insideButton: {\n backgroundColor: WHITE,\n borderRadius: 8,\n borderColor: DARK_GRAY,\n borderWidth: 1,\n },\n prevButton: {\n position: 'absolute',\n left: 30,\n zIndex: 10,\n width: 34,\n height: 34,\n justifyContent: 'center',\n alignItems: 'center',\n },\n nextButton: {\n position: 'absolute',\n right: 30,\n zIndex: 10,\n width: 34,\n height: 34,\n justifyContent: 'center',\n alignItems: 'center',\n },\n disabled: {\n opacity: 0.5,\n },\n});\n","import React, { ReactNode, useEffect, useRef, useState } from 'react';\nimport { PhotoListFormFieldItem } from '../containers/PhotoListFormField';\nimport { ImageRequireSource, ImageURISource, StyleSheet, TouchableOpacity, View } from 'react-native';\nimport { MediasInfos, SplitMedia } from '../../utils/Medias';\nimport { getContributionImageSource, getDocumentURI, getPictureURI } from '../../services/api/helper.api';\nimport Pdf, { PdfRef } from '../atomic/Pdf';\nimport { isMobile, PickPhotoOrDocumentResult } from '../../services/utils';\nimport Media from '../containers/Media';\nimport { BACKGROUND_COLOR, DARK_GRAY, PRIMARY_COLOR, WHITE } from '../../styles/appColor';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport Carousel, { CarouselProps } from '../atomic/Carousel';\nimport { AppModalOverlay } from '../atomic/AppModalOverlay';\nimport { CloseButton } from '../atomic/CloseButton';\nimport { ContributionType } from '../../types';\nimport Animated, { SlideInRight, SlideInLeft } from 'react-native-reanimated';\nimport Image from '../atomic/Image';\n\nexport type ContributionPhotoListProps = Omit, 'renderItem' | 'data'> & {\n photos: PhotoListFormFieldItem[];\n noInteractions?: boolean;\n noBorderRadius?: boolean;\n contributionType: ContributionType;\n renderActions?: (props: { index: number; item: PhotoListFormFieldItem }) => ReactNode;\n onAddPressed?: () => void;\n};\n\nexport type ContributionPhotoListItemProps = {\n item: PhotoListFormFieldItem;\n width: number;\n height: number;\n index: number;\n selected: boolean;\n noInteractions: boolean;\n noBorderRadius: boolean;\n setZoomedIndex: (index: number) => void;\n};\n\nexport function ContributionPhotoList({\n photos,\n contributionType,\n noInteractions = false,\n noBorderRadius = false,\n renderActions,\n onAddPressed,\n ...rest\n}: ContributionPhotoListProps) {\n const [zoomedIndex, setZoomedIndex] = useState(undefined);\n const [lastZoomedIndex, setLastZoomedIndex] = useState(undefined);\n const [modalDimensions, setModalDimensions] = useState<{ width: number; height: number } | undefined>(undefined);\n const [itemDimensions, setItemDimensions] = useState<{ width: number; height: number } | undefined>(undefined);\n const contributionImagesSource = getContributionImageSource(undefined, contributionType);\n\n useEffect(() => {\n setTimeout(() => {\n setLastZoomedIndex(zoomedIndex);\n }, 500);\n }, [zoomedIndex]);\n\n return (\n \n {\n return (\n \n {\n setZoomedIndex(index);\n setLastZoomedIndex(index);\n }}\n />\n {renderActions && selected && renderActions({ index, item })}\n \n );\n }}\n extraItems={\n onAddPressed\n ? [\n \n \n \n \n ,\n ]\n : undefined\n }\n renderEmptyComponent={({ width, height }) => (\n \n )}\n />\n {\n setZoomedIndex(undefined);\n setLastZoomedIndex(undefined);\n }}\n overlayStyle={styles.modal}\n >\n {zoomedIndex !== undefined && (\n {\n const { width, height } = event.nativeEvent.layout;\n setModalDimensions({ width, height });\n }}\n >\n \n setItemDimensions(event.nativeEvent.layout)}>\n {lastZoomedIndex !== undefined && lastZoomedIndex !== zoomedIndex && itemDimensions && (\n \n \n \n )}\n {zoomedIndex !== undefined && lastZoomedIndex !== undefined && itemDimensions && (\n \n \n \n \n \n )}\n {itemDimensions && (\n <>\n setZoomedIndex((i) => (i !== undefined ? i - 1 : undefined))}\n style={[\n styles.prevButton,\n { top: (itemDimensions.height - 30) / 2 },\n styles.insideButton,\n zoomedIndex === 0 ? styles.disabled : undefined,\n ]}\n disabled={zoomedIndex === 0}\n >\n \n \n setZoomedIndex((i) => (i !== undefined ? i + 1 : undefined))}\n style={[\n styles.nextButton,\n { top: (itemDimensions.height - 30) / 2 },\n styles.insideButton,\n zoomedIndex === photos.length - 1 ? styles.disabled : undefined,\n ]}\n disabled={zoomedIndex === photos.length - 1}\n >\n \n \n \n )}\n \n \n {\n setZoomedIndex(undefined);\n setLastZoomedIndex(undefined);\n }}\n />\n \n )}\n \n \n );\n}\n\nfunction ContributionPhotoListItem({\n index,\n item,\n width,\n height,\n selected,\n noInteractions,\n noBorderRadius,\n setZoomedIndex,\n}: ContributionPhotoListItemProps) {\n const pdfRef = useRef(null);\n const [pdfPage, setPdfPage] = useState(1);\n const [pdfTotalPage, setPdfTotalPage] = useState(1);\n\n if (item.videoUrl) {\n if (noInteractions || !selected) {\n for (const mediaName in MediasInfos) {\n const [, url] = SplitMedia(item.videoUrl);\n const mediaInfo = MediasInfos[mediaName];\n if (mediaInfo.isMedia(url)) {\n const mediaLogo = mediaInfo.logo;\n\n return (\n \n \n {!!mediaLogo && }\n \n );\n }\n }\n\n return ;\n } else {\n return (\n \n \n \n );\n }\n } else if (\n item.file &&\n typeof item.file === 'object' &&\n (item.file as PickPhotoOrDocumentResult).type === 'application/pdf'\n ) {\n return ;\n } else if (item.file && typeof item.file === 'object') {\n const file = item.file as ImageURISource;\n\n // If photo is a File, we compute the uri as base64\n let photoUri: string | null = null;\n if (file && typeof file === 'object' && file.uri) {\n photoUri = file.uri;\n } else if (file instanceof File) {\n photoUri = URL.createObjectURL(file);\n }\n\n return (\n \n );\n } else if (item.documentId) {\n if (noInteractions) {\n return ;\n } else {\n const hasPreviousPage = pdfPage > 0;\n const hasNextPage = pdfPage < pdfTotalPage - 1;\n\n return (\n item.imageId && setZoomedIndex(index)}>\n {pdfRef.current && (\n <>\n \n \n \n \n \n \n \n )}\n \n \n );\n }\n } else if (item.imageId) {\n if (noInteractions) {\n return (\n \n );\n } else {\n return (\n item.imageId && setZoomedIndex(index)}\n style={[styles.image, noBorderRadius ? {} : styles.borderRadius]}\n >\n \n \n );\n }\n } else {\n return ;\n }\n}\n\nfunction ContributionPhotoListItemZoomed({\n item,\n width,\n height,\n selected,\n}: Omit) {\n const pdfRef = useRef(null);\n const [pdfPage, setPdfPage] = useState(1);\n const [pdfTotalPage, setPdfTotalPage] = useState(1);\n\n if (item.videoUrl) {\n if (!selected) {\n for (const mediaName in MediasInfos) {\n const [, url] = SplitMedia(item.videoUrl);\n const mediaInfo = MediasInfos[mediaName];\n if (mediaInfo.isMedia(url)) {\n const mediaLogo = mediaInfo.logo;\n\n return (\n \n \n {!!mediaLogo && }\n \n );\n }\n }\n\n return ;\n } else {\n return (\n \n \n \n );\n }\n } else if (\n item.file &&\n typeof item.file === 'object' &&\n (item.file as PickPhotoOrDocumentResult).type === 'application/pdf'\n ) {\n return ;\n } else if (item.file && typeof item.file === 'object') {\n const file = item.file as ImageURISource;\n\n // If photo is a File, we compute the uri as base64\n let photoUri: string | null = null;\n if (file && typeof file === 'object' && file.uri) {\n photoUri = file.uri;\n } else if (file instanceof File) {\n photoUri = URL.createObjectURL(file);\n }\n\n return (\n \n );\n } else if (item.documentId) {\n const hasPreviousPage = pdfPage > 0;\n const hasNextPage = pdfPage < pdfTotalPage - 1;\n\n return (\n \n {pdfRef.current && (\n <>\n \n \n \n \n \n \n \n )}\n \n \n );\n } else if (item.imageId) {\n return ;\n } else {\n return ;\n }\n}\n\nconst styles = StyleSheet.create({\n defaultImage: {\n marginBottom: 10,\n borderRadius: 20,\n },\n addContainer: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n },\n itemContainer: {\n flex: 1,\n },\n mediaLogo: { position: 'absolute', width: 50, height: 50, right: 10, bottom: 0 },\n video: {\n flex: 1,\n overflow: 'hidden',\n },\n image: {\n flex: 1,\n },\n document: {\n flex: 1,\n },\n topButton: {\n position: 'absolute',\n top: 30,\n zIndex: 10,\n width: 34,\n height: 34,\n justifyContent: 'center',\n alignItems: 'center',\n },\n bottomButton: {\n position: 'absolute',\n bottom: 30,\n zIndex: 10,\n width: 34,\n height: 34,\n justifyContent: 'center',\n alignItems: 'center',\n },\n insideButton: {\n backgroundColor: WHITE,\n borderRadius: 8,\n borderColor: DARK_GRAY,\n borderWidth: 1,\n },\n prevButton: {\n position: 'absolute',\n left: 30,\n zIndex: 10,\n width: 34,\n height: 34,\n justifyContent: 'center',\n alignItems: 'center',\n },\n nextButton: {\n position: 'absolute',\n right: 30,\n zIndex: 10,\n width: 34,\n height: 34,\n justifyContent: 'center',\n alignItems: 'center',\n },\n disabled: {\n opacity: 0.5,\n },\n borderRadius: {\n borderRadius: 20,\n overflow: 'hidden',\n },\n modal: {\n width: '100%',\n maxWidth: !isMobile() ? 700 : undefined,\n overflow: 'hidden',\n flex: 1,\n marginVertical: !isMobile() ? 20 : 0,\n backgroundColor: isMobile() ? 'black' : BACKGROUND_COLOR,\n },\n modalContainer: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n modalItemContainer: {},\n modalItemLayer: {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n },\n modalItemSubcontainer: {\n width: '100%',\n height: '100%',\n justifyContent: 'center',\n },\n});\n","import React, { useCallback, useRef, useState } from 'react';\nimport { ImageSourcePropType, StyleSheet, View } from 'react-native';\nimport { t } from '../../services/translations';\nimport { PickPhotoOrDocumentResult } from '../../services/utils';\nimport { ALERT_COLOR, DARK_GRAY, PRIMARY_COLOR, WHITE } from '../../styles/appColor';\nimport { FONT_FAMILY_DEFAULT } from '../../styles/globalStyle';\nimport { MediasInfos } from '../../utils/Medias';\nimport AppText, { Mode } from '../atomic/AppText';\nimport { AppModalOverlay } from '../atomic/AppModalOverlay';\nimport { TextFormField } from '../atomic/FormField';\nimport { PhotoPickButtons, PhotoPickButtonsRef } from '../atomic/PhotoPicker';\nimport { ContributionMedia } from '../../entities/ContributionMedia';\nimport { ContributionPhotoList } from '../molecules/ContributionPhotoList';\nimport { ContributionType } from '../../types';\nimport { TouchableOpacity } from 'react-native-gesture-handler';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\n\nexport type PhotoListFormFieldItem = Partial & {\n file?: PickPhotoOrDocumentResult | ImageSourcePropType;\n};\n\nexport interface PhotoListFormFieldProps {\n value?: PhotoListFormFieldItem[];\n allowPdf?: boolean;\n contributionType: ContributionType;\n photosGallery?: { file: ImageSourcePropType; uri: string }[];\n onChanged: (photos: PhotoListFormFieldItem[]) => void;\n}\n\nexport default function PhotoListFormField({\n value,\n allowPdf,\n contributionType,\n photosGallery,\n onChanged,\n}: PhotoListFormFieldProps) {\n const picksButtonsRef = useRef(null);\n const [lastClickedButton, setLastClickedButton] = useState(null);\n const [showVideoPopup, setShowVideoPopup] = useState(false);\n const [invalidVideoUrl, setInvalidVideoUrl] = useState(false);\n const [videoUrl, setVideoUrl] = useState(null);\n const noInteractions = true;\n\n const onVideoUrlChanged = useCallback(\n (videoUrl: string) => {\n setInvalidVideoUrl(false);\n\n for (const mediaName in MediasInfos) {\n const mediaInfo = MediasInfos[mediaName];\n if (mediaInfo.isMedia(videoUrl)) {\n setVideoUrl('');\n setShowVideoPopup(false);\n onChanged([...(value || []), { videoUrl: `${mediaName}:${videoUrl}` }]);\n return;\n }\n }\n\n setVideoUrl(videoUrl);\n setInvalidVideoUrl(true);\n },\n [value, onChanged]\n );\n\n return (\n \n {t('accepted_formats')}\n {`${t('ideal_format')} : 540 x 540 px`}\n \n (\n value && onChanged(value.filter((_, i) => i !== index))}\n containerStyle={styles.deleteButton}\n >\n \n \n )}\n onAddPressed={() => {\n picksButtonsRef.current?.pressButton(lastClickedButton || t('photos_documents'));\n }}\n />\n \n {\n if (Array.isArray(photo)) {\n onChanged([...(value || []), ...photo.map((photo) => ({ file: photo }))]);\n } else {\n onChanged([...(value || []), { file: photo }]);\n }\n }}\n extraOption={[\n {\n label: t('choose_a_video'),\n icon: 'video',\n onPress: () => setShowVideoPopup(true),\n },\n ]}\n allowPdf={allowPdf}\n multiple\n photosGallery={photosGallery}\n onButtonPressed={setLastClickedButton}\n />\n setShowVideoPopup(false)}>\n \n {t('insert_video_link')}\n \n \n {invalidVideoUrl ? t('invalid_link') : ''}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n marginBottom: 20,\n },\n acceptedFormatsText: {\n fontFamily: FONT_FAMILY_DEFAULT.light,\n fontSize: 11,\n color: DARK_GRAY,\n paddingBottom: 10,\n },\n idealFormatText: {\n paddingBottom: 30,\n fontFamily: FONT_FAMILY_DEFAULT.light,\n fontSize: 11,\n color: DARK_GRAY,\n },\n photosContainer: {\n marginBottom: 10,\n },\n videoModalTitle: {\n textAlign: 'center',\n color: PRIMARY_COLOR,\n },\n videoModalTextField: {\n width: 280,\n paddingTop: 16,\n },\n videoModalErrorLabel: {\n color: ALERT_COLOR,\n fontSize: 12,\n paddingLeft: 8,\n },\n deleteButton: {\n position: 'absolute',\n top: 8,\n right: 8,\n zIndex: 10,\n width: 30,\n height: 30,\n backgroundColor: WHITE,\n borderRadius: 6,\n borderWidth: 1,\n borderColor: ALERT_COLOR,\n justifyContent: 'center',\n alignItems: 'center',\n },\n});\n","import React from 'react';\nimport { useField } from 'formik';\nimport PhotoListFormField, { PhotoListFormFieldProps } from '../../containers/PhotoListFormField';\n\nexport type PhotoListFieldProps = Omit & {\n name: string;\n};\n\nexport default function PhotoListField({ name, ...rest }: PhotoListFieldProps) {\n const [field, , helper] = useField(name);\n\n return ;\n}\n","import React, { useState } from 'react';\nimport { StyleSheet, TouchableOpacity, View } from 'react-native';\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';\nimport * as Yup from 'yup';\nimport ContributionSpreadingField, {\n contributionSpreadingFieldValidators,\n} from '../../../../components/atomic/formik/ContributionSpreadingField';\nimport { t } from '../../../../services/translations';\nimport { AppScreen } from '../../../../components/containers/AppScreen';\nimport TextField from '../../../../components/atomic/formik/TextField';\nimport RichTextField from '../../../../components/atomic/formik/RichTextField';\nimport ContributionAuthorizationsField from '../../../../components/atomic/formik/ContributionAuthorizationsField';\nimport SubmitButton from '../../../../components/atomic/formik/SubmitButton';\nimport SwitchField from '../../../../components/atomic/formik/SwitchField';\nimport DateField from '../../../../components/atomic/formik/DateField';\nimport { FormField } from '../../../../components/atomic/FormField';\nimport { useField } from 'formik';\nimport { Card } from '@rneui/base';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport { CreateSurveyQuestion } from '../../../../entities/CreateSurvey';\nimport { PRIMARY_COLOR } from '../../../../styles/appColor';\nimport { AppButton, Type } from '../../../../components/atomic/AppButton';\nimport { CSondageQuestionType } from '../../../../entities/CSondageQuestion';\nimport RadioGroupField from '../../../../components/atomic/formik/RadioGroupField';\nimport { isMobile } from '../../../../services/utils';\nimport { ContributionType } from '../../../../types';\nimport PhotoListField from '../../../../components/atomic/formik/PhotoListField';\n\nexport const schema = Yup.object({\n title: Yup.string().min(1).required(t('field_required')),\n description: Yup.string().min(1).required(t('field_required')),\n image: Yup.mixed(),\n endDate: Yup.date().required(t('field_required')),\n isAnonym: Yup.boolean().required(t('field_required')),\n questions: Yup.array()\n .of(\n Yup.object({\n text: Yup.string().min(1).required(t('field_required')),\n answers: Yup.mixed().when('type', {\n is: (type: CSondageQuestionType) => type !== CSondageQuestionType.TEXT,\n then: Yup.array().of(Yup.string().min(1).required(t('field_required'))),\n }),\n type: Yup.number().required(t('field_required')),\n })\n )\n .min(1)\n .required(t('field_required')),\n commentsActivated: Yup.boolean().required(t('field_required')),\n notifActivated: Yup.boolean().required(t('field_required')),\n emailActivated: Yup.boolean().required(t('field_required')),\n ...contributionSpreadingFieldValidators,\n});\n\nexport type SurveyFormFieldsProps = {\n isEditing?: boolean | undefined;\n};\n\nexport default function SurveyFormFields({ isEditing }: SurveyFormFieldsProps) {\n const [field, , helper] = useField('questions');\n const [needsValidation, setNeedsValidation] = useState(false);\n\n return (\n \n \n \n \n \n \n \n \n \n {field.value.map((question: CreateSurveyQuestion, index: number) => {\n return (\n \n \n {t('question') + ' ' + (index + 1)}\n {field.value.length > 1 && (\n {\n helper.setValue(field.value.filter((_: any, i: number) => i !== index));\n }}\n >\n \n \n )}\n \n \n \n \n {question.type !== CSondageQuestionType.TEXT && (\n <>\n {question.answers.map((answer: string, answerIndex: number) => {\n return (\n \n \n {question.answers.length > 1 && (\n {\n const newAnswers = question.answers.filter((_, i) => i !== answerIndex);\n helper.setValue(\n field.value.map((v: CreateSurveyQuestion, k: number) => {\n if (k === index) {\n return {\n ...v,\n answers: newAnswers,\n };\n }\n return v;\n })\n );\n }}\n >\n \n \n )}\n \n );\n })}\n {\n helper.setValue(\n field.value.map((v: CreateSurveyQuestion, k: number) => {\n if (k === index) {\n return {\n ...v,\n answers: [...v.answers, ''],\n };\n }\n return v;\n })\n );\n }}\n />\n \n )}\n \n );\n })}\n {\n helper.setValue([\n ...field.value,\n isEditing\n ? {\n id: null,\n text: '',\n answers: ['', '', ''],\n type: CSondageQuestionType.SINGLE,\n }\n : {\n text: '',\n answers: ['', '', ''],\n type: CSondageQuestionType.SINGLE,\n },\n ]);\n }}\n />\n \n \n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n padding: 10,\n },\n questionTrashButton: { marginLeft: 10, position: 'absolute', right: 10, top: 0 },\n answerTrashButton: {\n marginLeft: 10,\n },\n plusButton: {\n marginVertical: 10,\n },\n answerView: {\n flexDirection: 'row',\n width: '100%',\n alignItems: 'center',\n },\n answerTextField: {\n flex: 1,\n },\n});\n","import axios from './base';\nimport { headers } from './base';\nimport { apiUrlBase } from '../../../configuration';\nimport { objectToFormData } from '../formUtil';\nimport { UserSaved } from '../storage';\nimport { ContributionSondagesOwnerDetails } from '../../entities/ContributionSondagesOwnerDetails';\nimport { ContributionSondagesDetails } from '../../entities/ContributionSondagesDetails';\nimport { CreateSurvey } from '../../entities/CreateSurvey';\nimport { RespondSurvey } from '../../entities/RespondSurvey';\n\nexport function getSurvey(\n user: UserSaved,\n id: number\n): Promise {\n return axios\n .get(apiUrlBase + 'ContributionSondages/' + id, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status === 200) {\n return response.data;\n } else {\n return null;\n }\n });\n}\n\nexport function sendSurvey(user: UserSaved, args: CreateSurvey) {\n return axios.post(apiUrlBase + 'ContributionSondages', objectToFormData(args), {\n headers: headers(user.token, 'multipart/form-data'),\n });\n}\n\nexport function updateSurvey(user: UserSaved, id: number, args: CreateSurvey) {\n return axios.put(apiUrlBase + 'ContributionSondages/' + id, objectToFormData(args), {\n headers: headers(user.token, 'multipart/form-data'),\n });\n}\n\nexport async function respondSurvey(user: UserSaved, surveyId: number, args: RespondSurvey) {\n return axios.put(`${apiUrlBase}ContributionSondages/${surveyId}/respond`, args, {\n headers: headers(user.token),\n });\n}\n\nexport function getSurveyExportPdfUrl(user: UserSaved, id: number) {\n return `${apiUrlBase}ContributionSondages/pdf/${id}?access_token=${user.token}`;\n}\n\nexport function getSurveyExportCsvUrl(user: UserSaved, id: number) {\n return `${apiUrlBase}ContributionSondages/csv/${id}?access_token=${user.token}`;\n}\n\nexport function recallSurveyNotification(user: UserSaved, id: number) {\n return axios.post(\n `${apiUrlBase}ContributionSondages/recall-notification/${id}`,\n {},\n {\n headers: headers(user.token, 'multipart/form-data'),\n }\n );\n}\n","import React, { useEffect, useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { alertInfo } from '../../../../services/utils';\nimport { setContributionsListNeedsRefresh, setCurrentContribution, setLoading } from '../../../../store/action';\nimport { t } from '../../../../services/translations';\nimport Form from '../../../../components/atomic/formik/Form';\nimport SurveyFormFields, { schema } from './SurveyFormFields';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport { getSurvey, updateSurvey } from '../../../../services/api/survey.contributions.api';\nimport { UpdateSurvey } from '../../../../entities/UpdateSurvey';\nimport { View } from 'react-native';\n\nexport type UpdateSurveyScreenProps = {\n id: number;\n};\n\nexport default function UpdateSurveyScreen({ id }: UpdateSurveyScreenProps) {\n const user = useLoggedUser();\n const navigation = useNavigation>();\n const dispatch = useDispatch();\n\n const {\n data,\n isLoading: isLoadingList,\n isFetched,\n isError: isErrorList,\n } = useQuery(['getSurvey', id], () => getSurvey(user, id), {\n cacheTime: 0,\n });\n\n useEffect(() => {\n if (data) {\n dispatch(setCurrentContribution(data));\n }\n }, [data, dispatch]);\n\n const mutation = useMutation({\n mutationFn: async (values: UpdateSurvey) => {\n await updateSurvey(user, id, values);\n dispatch(setContributionsListNeedsRefresh(true));\n navigation.goBack();\n },\n });\n\n const isLoading = isLoadingList || mutation.isLoading;\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n // Display error message if needed\n const isError = isErrorList || mutation.isError;\n useEffect(() => {\n if (isError) {\n alertInfo(t('error_occurred'));\n }\n }, [isError]);\n\n const initialValues = useMemo(\n () => ({\n title: data?.title,\n description: data?.description,\n isAnonym: data?.isAnonymous,\n endDate: data?.endDate ? new Date(data?.endDate) : new Date(),\n questions: data?.questions.map((question) => ({\n id: question.id,\n text: question.text,\n answers: question.answers.map((e) => e.text),\n type: question.type,\n })),\n commentsActivated: data?.commentsActivated,\n notifActivated: data?.notifActivated,\n emailActivated: data?.emailActivated,\n spreadingType: data?.spreadingType,\n userIds: data?.userTargets.map((e) => e.userId),\n images: data?.contributionMedias || [],\n entrepriseServiceIds: data?.entrepriseServices.map((e) => e.entrepriseServiceId),\n entrepriseSiteGeoIds: data?.entrepriseSiteGeos.map((e) => e.entrepriseSiteGeoId),\n entrepriseGroupIds: data?.entrepriseGroups.map((e) => e.entrepriseGroupId),\n }),\n [data]\n );\n\n return isFetched && data ? (\n \n \n \n ) : (\n \n );\n}\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { AppScreen } from '../../../components/containers/AppScreen';\nimport { AppButton, Type } from '../../../components/atomic/AppButton';\nimport { dateLocale, t } from '../../../services/translations';\nimport {\n setContributionsListNeedsRefresh,\n setCurrentContribution,\n setDetailContributionType,\n setForceBack,\n setLoading,\n} from '../../../store/action';\nimport { useDispatch } from 'react-redux';\nimport {\n ContributionType,\n IntToContributionType,\n SelectModeToSpreadingType,\n SpreadingType,\n SelectMode,\n ContributionTypesInfos,\n spreadingTypeToSelectMode,\n} from '../../../types';\nimport {\n DateField,\n FormField,\n FormFieldPicker,\n NumberFormField,\n RTEFormField,\n TextFormField,\n} from '../../../components/atomic/FormField';\nimport { StyleSheet, TouchableOpacity, View } from 'react-native';\nimport AddressAutocomplete from '../../../components/atomic/AddressAutocomplete';\nimport AppText, { Mode } from '../../../components/atomic/AppText';\nimport { PickUsers } from '../../../components/atomic/PickUsers';\nimport { AppTextInput } from '../../../components/atomic/AppTextInput';\nimport { PRIMARY_COLOR } from '../../../styles/appColor';\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';\nimport { getDataContentByType, getDescriptionByType, getTitleByType } from '../../../services/api/contributions';\nimport { getContributionItem, sendContribution, sendUpdateContribution } from '../../../services/api/contribution.api';\nimport {\n alertInfo,\n forceUTCToLocal,\n hasSubAdminRight,\n isAdmin,\n isDateValid,\n isMobile,\n sendSuccessText,\n} from '../../../services/utils';\nimport { AppListSwitch } from '../../../components/atomic/AppListSwitch';\nimport AppSwitch from '../../../components/atomic/AppSwitch';\nimport { ALL_CONTRIBUTIONS_BROADCAST_ENABLED, NEWS_PUBLICATION_MODE_ENABLED } from '../../../services/features';\nimport { DateTime } from 'luxon';\nimport { hasCategories } from '../../../utils/Category';\nimport { Category } from '../../../entities/Category';\nimport { getCategoriesByType } from '../../../services/api/category.api';\nimport { useDeviceSize } from '../../../hooks/useDeviceSize';\nimport AppRadioGroup from '../../../components/atomic/AppRadioGroup';\nimport { addMinutes, formatDistanceStrict } from 'date-fns';\nimport { match } from 'ts-pattern';\nimport { DrawerScreenProps } from '@react-navigation/drawer';\nimport useLoggedUser from '../../../hooks/useLoggedUser';\nimport UpdateSurveyScreen from './survey/UpdateSurveyScreen';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport PhotoListFormField, { PhotoListFormFieldItem } from '../../../components/containers/PhotoListFormField';\nimport { ContributionEntrepriseService } from '../../../entities/ContributionEntrepriseService';\nimport { ContributionEntrepriseSiteGeo } from '../../../entities/ContributionEntrepriseSiteGeo';\nimport { ContributionEntrepriseGroup } from '../../../entities/ContributionEntrepriseGroup';\nimport { ContributionUserTarget } from '../../../entities/ContributionUserTarget';\n\nfunction priceToString(price: number) {\n if (!price) return '';\n return price.toString();\n}\n\nexport function ContributionFormScreen({ navigation, route }: DrawerScreenProps) {\n const dispatch = useDispatch();\n const id = route.params?.id;\n const contributionType: ContributionType = IntToContributionType(route.params?.contributionType);\n\n useEffect(() => {\n dispatch(setDetailContributionType(contributionType));\n if (!!route.params?.isAdminView) dispatch(setForceBack(true));\n\n return () => {\n dispatch(setDetailContributionType(undefined));\n dispatch(setForceBack(false));\n };\n }, [contributionType, dispatch]);\n\n if (contributionType === ContributionType.SURVEY) {\n return ;\n }\n\n const [title, setTitle] = useState(route.params?.title ?? '');\n const [description, setDescription] = useState(route.params?.description);\n const [brand, setBrand] = useState(route.params?.brand);\n const [price, setPrice] = useState(route.params?.price);\n const [start, setStart] = useState(route.params?.start);\n const [startCoordinates, setStartCoordinates] = useState(route.params?.startCoordinates);\n const [end, setEnd] = useState(route.params?.end);\n const [endCoordinates, setEndCoordinates] = useState(route.params?.endCoordinates);\n const [permanent, setPermanent] = useState(route.params?.permanent);\n const [location, setLocation] = useState(route.params?.location);\n const [date, setDate] = useState(new Date().toISOString());\n const [endDate, setEndDate] = useState(\n DateTime.fromISO(new Date().toISOString()).plus({ hour: 1 }).toISO()\n );\n const [anonymous, setAnonymous] = useState(route.params?.anonymous);\n const [dueDate, setDueDate] = useState(route.params?.dueDate);\n const [moneyPool, setMoneyPool] = useState(route.params?.moneyPool ?? '');\n const [place, setPlace] = useState('');\n const [images, setImages] = useState([]);\n const [url, setUrl] = useState(null);\n const [availableSeats, setAvailableSeats] = useState(null);\n const [questions, setQuestions] = useState(route.params?.question);\n const [lost, setLost] = useState(route.params?.lost);\n const [users, setUsers] = useState(route.params?.users);\n const [services, setServices] = useState([]);\n const [geoSites, setGeoSites] = useState([]);\n const [groups, setGroups] = useState([]);\n const [documentTag, setDocumentTag] = useState('');\n const [answers, setAnswers] = useState(route.params?.answers !== undefined ? route.params?.answers : [['', '']]);\n const [selectMode, setSelectMode] = useState();\n const spreadingType: SpreadingType | undefined = useMemo(() => SelectModeToSpreadingType(selectMode), [selectMode]);\n // Company news specific fields\n const [visibleStartDate, setVisibleStartDate] = useState(route.params?.visibleStartDate);\n const [visibleEndDate, setVisibleEndDate] = useState(route.params?.visibleEndDate);\n const [publicationMode, setPublicationMode] = useState(route.params?.publicationMode);\n const [translations, setTranslations] = useState(\n route.params?.translations === undefined ? [] : route.params?.translations\n );\n const [categoryId, setCategoryId] = useState(undefined);\n const [categories, setCategories] = useState([]);\n const [commentsActivated, setCommentsActivated] = useState(true);\n const [notifActivated, setNotifActivated] = useState(true);\n const [emailActivated, setEmailActivated] = useState(false);\n\n const eventType = useMemo(() => {\n if (place === null && url === null) {\n return null;\n } else if (place !== null && url === null) {\n return 'place';\n } else if (place === null && url !== null) {\n return 'remote';\n } else {\n return 'both';\n }\n }, [place, url]);\n\n const dateObject = date && new Date(date);\n const endDateObject = endDate && new Date(endDate);\n const { isLargeDevice, deviceSize } = useDeviceSize();\n\n useEffect(() => {\n if (!!route.params?.date) {\n setDate(route.params?.date);\n setEndDate(DateTime.fromISO(route.params?.date).plus({ hour: 1 }).toISO());\n }\n }, [route.params?.date]);\n\n // Document specific fields\n const [generateAnEmail, setGenerateAnEmail] = useState(false);\n\n // For event and formation, we always want end date to be at least greater than begin date\n const onTimeUpdated = useCallback(() => {\n if (date) {\n if (!endDate || new Date(endDate) < new Date(date)) {\n setEndDate(date);\n }\n }\n }, [date, endDate]);\n\n useEffect(() => {\n if (isMobile()) {\n onTimeUpdated();\n }\n }, [onTimeUpdated]);\n\n const user = useLoggedUser();\n const locale = dateLocale();\n\n useEffect(() => {\n if (id !== undefined) {\n dispatch(setLoading(true));\n getContributionItem(user, id, contributionType)\n .then((json) => {\n const dataContent = getDataContentByType(json, contributionType);\n dispatch(setCurrentContribution(dataContent));\n\n setTitle(getTitleByType(dataContent, contributionType));\n setDescription(getDescriptionByType(dataContent, contributionType));\n setImages(dataContent?.contribution?.contributionMedias || []);\n setCommentsActivated(dataContent?.contribution?.commentsActivated);\n setNotifActivated(dataContent?.contribution?.notifActivated);\n setEmailActivated(dataContent?.contribution?.emailActivated);\n setSelectMode(spreadingTypeToSelectMode(dataContent?.contribution?.spreadingType));\n setUsers(dataContent?.contribution?.userTargets.map((e: ContributionUserTarget) => e.userId) ?? []);\n setServices(\n dataContent?.contribution?.entrepriseServices.map(\n (e: ContributionEntrepriseService) => e.entrepriseServiceId\n ) ?? []\n );\n setGeoSites(\n dataContent?.contribution?.entrepriseSiteGeos.map(\n (e: ContributionEntrepriseSiteGeo) => e.entrepriseSiteGeoId\n ) ?? []\n );\n setGroups(\n dataContent?.contribution?.entrepriseGroups.map((e: ContributionEntrepriseGroup) => e.entrepriseGroupId) ??\n []\n );\n\n if (hasCategories(contributionType))\n setCategoryId(ContributionTypesInfos[contributionType].categoryIdSelector!(dataContent));\n switch (contributionType) {\n case ContributionType.SELL:\n setBrand(dataContent.marque);\n setPrice(dataContent.prix);\n break;\n case ContributionType.CARPOOL:\n setStart(dataContent.libelleDepart);\n setEnd(dataContent.libelleArrivee);\n setStartCoordinates(dataContent.adresseDepart);\n setEndCoordinates(dataContent.adresseArrivee);\n setPermanent(dataContent.lovIdType === 22);\n break;\n case ContributionType.LOST_PROPERTY:\n setLocation(dataContent.lieu);\n setLost(dataContent.lovIdType === 19);\n setDate(forceUTCToLocal(dataContent.date) || undefined);\n break;\n case ContributionType.EVENT:\n case ContributionType.FORMATION:\n let endDate = new Date(forceUTCToLocal(dataContent.date));\n endDate.setSeconds(endDate.getSeconds() + dataContent.duration);\n setDate(forceUTCToLocal(dataContent.date) || undefined);\n setEndDate(endDate.toISOString());\n setMoneyPool(dataContent.cagnotte);\n setPlace(dataContent.place || null);\n setUrl(dataContent.url || null);\n setAvailableSeats(dataContent.availableSeats);\n break;\n case ContributionType.SURVEY:\n setAnonymous(dataContent.canAnonyme);\n setDueDate(dataContent.dateLimite);\n setAnswers(dataContent.cSondageQuestion.map((e) => e.cSondageReponse.map((a, k) => a.titre)));\n setQuestions(dataContent.cSondageQuestion.map((e) => e.titre));\n setUsers(dataContent.cSondageUsers.map((u, k) => u.userId));\n break;\n case ContributionType.COMPANY_NEWS:\n setVisibleStartDate(dataContent.dateDebutPublication);\n setVisibleEndDate(dataContent.dateFinPublication);\n setPublicationMode(\n dataContent.dateDebutPublication == null\n ? 'immediate_posting'\n : dataContent.dateFinPublication == null\n ? 'planned_with_start_date'\n : 'planned_with_start_and_end_date'\n );\n setTranslations(\n dataContent.traduction != null && dataContent.traduction !== undefined\n ? JSON.parse(dataContent.traduction)\n : []\n );\n break;\n }\n })\n .finally(() => dispatch(setLoading(false)));\n } else {\n resetForm();\n }\n\n return () => {\n dispatch(setCurrentContribution(undefined));\n };\n }, [route.params?.id, route]);\n\n useEffect(() => {\n if (hasCategories(contributionType))\n getCategoriesByType(user.entreprise?.id!, contributionType, user).then(setCategories);\n }, [user.entreprise?.id!, contributionType, route, user]);\n\n function resetForm() {\n setTitle('');\n setDescription('');\n setBrand('');\n setPrice('');\n setStart('');\n setEnd('');\n setStartCoordinates('');\n setEndCoordinates('');\n setPermanent(false);\n setLocation('');\n setLost(false);\n setDate(new Date().toISOString());\n setEndDate(DateTime.fromISO(new Date().toISOString()).plus({ hour: 1 }).toISO());\n setMoneyPool('');\n setPlace(null);\n setUrl(null);\n setAvailableSeats(null);\n setUsers([]);\n setAnonymous(false);\n setDueDate(undefined);\n setAnswers([['', '']]);\n setQuestions(['']);\n setVisibleStartDate(undefined);\n setVisibleEndDate(undefined);\n setPublicationMode(undefined);\n setTranslations([]);\n setDocumentTag('');\n setGenerateAnEmail(false);\n setCommentsActivated(true);\n setNotifActivated(true);\n setEmailActivated(false);\n }\n\n function _send() {\n dispatch(setLoading(true));\n sendContribution(\n {\n user,\n userId: user.id,\n companyId: user.entreprise?.id!,\n description,\n title,\n price,\n brand,\n start,\n startCoordinates,\n end,\n endCoordinates,\n permanent,\n location,\n date,\n endDate,\n lost,\n users,\n anonymous,\n dueDate,\n questions,\n answers,\n images,\n moneyPool,\n place,\n url,\n availableSeats,\n commentsActivated,\n notifActivated,\n emailActivated,\n translations,\n tag: documentTag,\n generateAnEmail,\n visibleStartDate,\n visibleEndDate,\n services,\n siteGeos: geoSites,\n groups,\n spreadingType,\n categoryId,\n },\n user.token,\n users,\n contributionType\n )\n .then(() => {\n dispatch(setLoading(false));\n alertInfo(sendSuccessText(user, contributionType, false));\n resetForm();\n dispatch(setContributionsListNeedsRefresh(true));\n navigation.goBack();\n })\n .catch(() => {\n alertInfo(t('error_occurred'));\n })\n .finally(() => dispatch(setLoading(false)));\n }\n\n function _getUpdateSuccessText() {\n switch (contributionType) {\n case ContributionType.COMPANY_NEWS:\n return t('update_company_news_success');\n }\n return t('update_contribution_success');\n }\n function _update() {\n dispatch(setLoading(true));\n sendUpdateContribution(\n id,\n {\n user,\n userId: user.id,\n companyId: user.entreprise?.id,\n description,\n title,\n price,\n brand,\n start,\n startCoordinates,\n end,\n endCoordinates,\n permanent,\n location,\n date,\n endDate,\n lost,\n moneyPool,\n place,\n url,\n availableSeats,\n users,\n anonymous,\n dueDate,\n questions,\n answers,\n images,\n commentsActivated,\n notifActivated,\n emailActivated,\n translations,\n tag: documentTag,\n generateAnEmail,\n visibleStartDate,\n visibleEndDate,\n services,\n siteGeos: geoSites,\n groups,\n spreadingType,\n categoryId,\n },\n user.token,\n users,\n contributionType\n )\n .then((response) => {\n dispatch(setLoading(false));\n alertInfo(_getUpdateSuccessText());\n dispatch(setContributionsListNeedsRefresh(true));\n navigation.goBack();\n })\n .catch((e) => {\n alertInfo(t('error_occurred'));\n })\n .finally(() => dispatch(setLoading(false)));\n }\n\n let hasPhoto =\n contributionType === ContributionType.SELL ||\n contributionType === ContributionType.ACTIVITY ||\n contributionType === ContributionType.LOST_PROPERTY ||\n contributionType === ContributionType.EVENT ||\n contributionType === ContributionType.FORMATION ||\n contributionType === ContributionType.MUTUAL_AID ||\n contributionType === ContributionType.SURVEY;\n let hasTitle =\n contributionType === ContributionType.SELL ||\n contributionType === ContributionType.ACTIVITY ||\n contributionType === ContributionType.MUTUAL_AID ||\n contributionType === ContributionType.LOST_PROPERTY ||\n contributionType === ContributionType.EVENT ||\n contributionType === ContributionType.FORMATION ||\n contributionType === ContributionType.SURVEY ||\n contributionType === ContributionType.COMPANY_NEWS;\n let hasDescription =\n contributionType !== ContributionType.LOST_PROPERTY && contributionType !== ContributionType.COMPANY_NEWS;\n\n let isFormReady = true;\n if (hasTitle) isFormReady = isFormReady && title?.length > 0;\n\n if (hasDescription) isFormReady = isFormReady && description?.length > 0;\n\n if (contributionType === ContributionType.CARPOOL) {\n isFormReady = isFormReady && start?.length > 0;\n isFormReady = isFormReady && startCoordinates?.length > 0;\n isFormReady = isFormReady && end?.length > 0;\n isFormReady = isFormReady && endCoordinates?.length > 0;\n }\n if (contributionType === ContributionType.LOST_PROPERTY) {\n isFormReady = isFormReady && isDateValid(date, true);\n isFormReady = isFormReady && location?.length > 0;\n }\n\n if (contributionType === ContributionType.EVENT || contributionType === ContributionType.FORMATION) {\n isFormReady = isFormReady && isDateValid(date, true);\n isFormReady = isFormReady && (availableSeats === null || !isNaN(availableSeats));\n isFormReady =\n isFormReady &&\n match(eventType)\n .with('both', () => (url?.length || 0) > 0 && (place?.length || 0) > 0)\n .with('place', () => (place?.length || 0) > 0)\n .with('remote', () => (url?.length || 0) > 0)\n .otherwise(() => false);\n }\n\n if (contributionType === ContributionType.SURVEY) {\n isFormReady = isFormReady && isDateValid(dueDate, true);\n isFormReady = isFormReady && questions?.every((e) => e?.length > 0);\n isFormReady = isFormReady && answers.every((e) => e?.length >= 2);\n for (const answersKey in answers) {\n isFormReady = isFormReady && answers[answersKey].every((e) => e.length > 0);\n }\n }\n\n if (selectMode === undefined) {\n isFormReady = false;\n } else {\n if (selectMode === SelectMode.BY_SERVICE) {\n isFormReady = isFormReady && services != undefined && Array.from(services).length > 0;\n }\n\n if (selectMode === SelectMode.BY_GEOSITE) {\n isFormReady = isFormReady && geoSites != undefined && Array.from(geoSites).length > 0;\n }\n\n if (selectMode === SelectMode.BY_GEOSITE_AND_SERVICE) {\n isFormReady = isFormReady && geoSites != undefined && Array.from(geoSites).length > 0;\n isFormReady = isFormReady && services != undefined && Array.from(services).length > 0;\n }\n\n if (selectMode === SelectMode.BY_GROUP) {\n isFormReady = isFormReady && groups != undefined && Array.from(groups).length > 0;\n }\n\n if (selectMode === SelectMode.MANUAL) {\n isFormReady = isFormReady && users != undefined && Array.from(users).length > 0;\n }\n }\n\n useEffect(() => {\n if (publicationMode === 'immediate_posting') {\n setVisibleStartDate(undefined);\n setVisibleEndDate(undefined);\n }\n }, [publicationMode]);\n\n function _needsValidation() {\n switch (contributionType) {\n case ContributionType.SURVEY:\n case ContributionType.COMPANY_NEWS:\n return !isAdmin(user) && !hasSubAdminRight(user, services, geoSites, groups);\n }\n return false;\n }\n\n function _sendButtonText() {\n if (!id) {\n switch (contributionType) {\n default:\n if (_needsValidation()) return t('send_for_validation');\n else return t('publish_button');\n }\n } else {\n return t('update_button');\n }\n }\n\n function _updatePrice(value: string) {\n setPrice(value.replace(/[^\\d.-]/g, ''));\n }\n\n return (\n \n \n {hasPhoto ? (\n \n \n \n ) : null}\n {hasTitle ? : null}\n {hasDescription ? (\n \n ) : null}\n {contributionType === ContributionType.SELL ? (\n <>\n \n \n \n ) : null}\n {contributionType === ContributionType.CARPOOL ? (\n <>\n \n \n \n \n ) : null}\n {contributionType === ContributionType.LOST_PROPERTY ? (\n <>\n \n \n \n \n ) : null}\n {contributionType === ContributionType.EVENT || contributionType === ContributionType.FORMATION ? (\n <>\n \n \n \n {!!dateObject && !!endDateObject && dateObject < endDateObject && (\n \n \n {formatDistanceStrict(dateObject, endDateObject, { locale, roundingMethod: 'ceil' })}\n \n \n )}\n \n \n title={t('event_type') + '*'}\n value={eventType}\n onChange={(value) =>\n match(value)\n .with('both', () => {\n setPlace(place || '');\n setUrl(url || '');\n })\n .with('place', () => {\n setPlace(place || '');\n setUrl(null);\n })\n .with('remote', () => {\n setPlace(null);\n setUrl(url || '');\n })\n .exhaustive()\n }\n options={[\n {\n label: t('event_type_place'),\n value: 'place',\n },\n {\n label: t('event_type_remote'),\n value: 'remote',\n },\n {\n label: t('event_type_both'),\n value: 'both',\n },\n ]}\n renderLeft={() => (\n \n {['place', 'both'].includes(eventType || '') && (\n \n \n {t('event_place') + '*'}\n \n \n \n )}\n {['remote', 'both'].includes(eventType || '') && (\n \n \n {t('event_url') + '*'}\n \n \n \n )}\n \n )}\n />\n \n \n {\n setAvailableSeats(value ? 10 : null);\n }}\n value={availableSeats !== null}\n firstOptionText={t('event_unlimited')}\n secondOptionText={t('event_limited')}\n design=\"ios\"\n />\n {availableSeats !== null && (\n {\n setAvailableSeats(value);\n }}\n value={availableSeats || null}\n title={t('event_available_seats')}\n keyboardType=\"numeric\"\n style={!isLargeDevice ? style.eventSeatsNumberInputSmall : style.eventSeatsNumberInput}\n />\n )}\n \n \n ) : null}\n {contributionType === ContributionType.SURVEY ? (\n <>\n \n \n \n \n {questions?.map((question, i) => {\n return (\n <>\n \n \n \n setQuestions([...questions.slice(0, i), updateQuestion, ...questions.slice(i + 1)])\n }\n value={question}\n />\n {questions.length > 1 && (\n {\n setAnswers([...answers.slice(0, i), ...answers.slice(i + 1)]);\n setQuestions([...questions.slice(0, i), ...questions.slice(i + 1)]);\n }}\n >\n \n \n )}\n \n
\n\n {answers[i]?.map((v, k) => (\n \n \n \n setAnswers([\n ...answers.slice(0, i),\n [...answers[i].slice(0, k), value, ...answers[i].slice(k + 1)],\n ...answers.slice(i + 1),\n ])\n }\n value={v}\n />\n {\n setAnswers([\n ...answers.slice(0, i),\n [...answers[i].slice(0, k), ...answers[i].slice(k + 1)],\n ...answers.slice(i + 1),\n ]);\n }}\n >\n \n \n \n \n ))}\n setAnswers([...answers.slice(0, i), [...answers[i], ''], ...answers.slice(i + 1)])}\n />\n \n );\n })}\n {\n setAnswers([...answers, ['', '']]);\n setQuestions([...questions, '']);\n }}\n />\n \n ) : null}\n setSelectMode(spreadingTypeToSelectMode(value))}\n setPickedUsers={setUsers}\n setPickedServices={setServices}\n setPickedGeoSites={setGeoSites}\n setPickedGroups={setGroups}\n />\n {hasCategories(contributionType) && (\n \n style={{ marginTop: 24 }}\n title={t('categories')}\n displayOnly={NEWS_PUBLICATION_MODE_ENABLED}\n defaultValue={categoryId?.toString()}\n onChangeText={(value) => {\n if (value === t('select_an_item') || value === '' || value === undefined || value === null) {\n setCategoryId(undefined);\n } else {\n setCategoryId(parseInt(value));\n }\n }}\n data={categories.map((category) => ({ label: category.name, value: category.id.toString() }))}\n />\n )}\n \n \n \n {t('authorize_comments')}\n \n \n \n {t('generate_notif')}\n \n {isAdmin(user) && (\n \n \n {t('generate_email')}\n \n )}\n \n {(contributionType === ContributionType.EVENT || contributionType === ContributionType.FORMATION) && id && (\n \n (Attention en modifiant cet évènement / formation vous allez écraser les réponses, merci de faire un export\n des résultats avant la modification)\n \n )}\n \n \n \n \n \n );\n}\n\nconst style = StyleSheet.create({\n eventDateContainer: {\n flexDirection: 'row',\n },\n eventDateContainerSmall: {\n flexDirection: 'column',\n },\n eventDateElem: {\n flex: 1,\n paddingRight: 20,\n },\n eventDateElemSmall: {\n paddingRight: 20,\n },\n eventDateLastElemSmall: {\n paddingVertical: 20,\n width: '100%',\n },\n eventDateDuree: {},\n eventMoneyPool: {\n flexDirection: 'row',\n alignItems: 'center',\n marginBottom: 10,\n flex: 1,\n },\n eventMoneyPoolLabel: {\n paddingRight: 10,\n fontSize: 12,\n color: PRIMARY_COLOR,\n },\n eventMoneyPoolInput: {\n flex: 1,\n },\n eventAvailableSeatsContainer: { alignItems: 'flex-start', flexDirection: 'row' },\n eventAvailableSeatsContainerSmall: {\n padding: 0,\n paddingBottom: 10,\n alignItems: 'flex-start',\n },\n eventAvailableSeats: { paddingRight: 40 },\n eventAvailableSeatsSwitch: { paddingRight: 40 },\n eventSeatsNumberInput: { paddingLeft: 40 },\n eventSeatsNumberInputSmall: { width: '100%' },\n});\n","import React, { useCallback, useMemo } from 'react';\nimport { Image, StyleSheet, Text, TouchableOpacity, View } from 'react-native';\nimport { formatDistanceStrict } from 'date-fns';\nimport { getPictureSource } from '../../services/api/helper.api';\nimport { ContributionEvenementSummary } from '../../entities/ContributionEvenementSummary';\nimport { dateLocale, t } from '../../services/translations';\nimport { FONT_FAMILY_DEFAULT } from '../../styles/globalStyle';\nimport { ALERT_COLOR, DARK_GRAY, PRIMARY_COLOR, SECONDARY_COLOR } from '../../styles/appColor';\nimport { useNavigation } from '@react-navigation/native';\nimport { ScreenNames } from '../../ScreenNames';\nimport { ContributionTypesInfos } from '../../types';\nimport { alertInfo, forceUTCToLocal, getReadableTime } from '../../services/utils';\nimport { useDeviceSize } from '../../hooks/useDeviceSize';\nimport { TwoActionsGenericPopup } from '../containers/TwoActionsButtonPopup';\nimport Feather from 'react-native-vector-icons/Feather';\nimport { useDispatch } from 'react-redux';\nimport { setContributionsListNeedsRefresh, setLoading } from '../../store/action';\nimport { removeContribution } from '../../services/api/contribution.api';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\n\nconst eventImage = require('../../../assets/drawable/event.jpg');\n\nexport type EventItemRowProps = {\n item: ContributionEvenementSummary;\n contributionType: number;\n isAdminView: boolean;\n};\n\nexport function EventItemRow({ item, contributionType, isAdminView }: EventItemRowProps) {\n const locale = dateLocale();\n const navigation = useNavigation();\n const { isSmallMediumDevice } = useDeviceSize();\n const dispatch = useDispatch();\n const user = useLoggedUser();\n\n const seatsLabel = useMemo(() => {\n return item.availableSeats === null ? (\n {t('event_unlimited_seats')}\n ) : item.availableSeats === item.participationCount ? (\n {t('event_no_available_seats')}\n ) : (\n \n {t('event_limited_seats', { count: (item.availableSeats || 0) - item.participationCount })}\n \n );\n }, [item.availableSeats, item.participationCount]);\n\n const eventTypeLabel = useMemo(() => {\n return item.place !== null && item.url !== null\n ? t('event_type_both_short')\n : item.url\n ? t('event_type_remote')\n : t('event_type_place');\n }, [item.place, item.url]);\n\n let endDate = useMemo(() => {\n const endDate = new Date(forceUTCToLocal(item.date));\n endDate.setSeconds(endDate.getSeconds() + item.duration);\n\n return endDate;\n }, [item.date, item.duration]);\n\n const onPress = useCallback(() => {\n navigation.navigate(ScreenNames.LoggedInDrawerNavigation, {\n screen: ContributionTypesInfos[contributionType].detailScreen ?? ScreenNames.ContributionItemDetailScreen,\n params: {\n id: item.id,\n contributionType: contributionType,\n isNotif: false,\n },\n });\n }, [navigation, item]);\n\n const onPressEdit = useCallback(() => {\n navigation.navigate(ScreenNames.LoggedInDrawerNavigation, {\n screen: ContributionTypesInfos[contributionType].formScreen ?? ScreenNames.ContributionEditFormScreen,\n params: {\n id: item.id,\n contributionType: contributionType,\n },\n });\n }, [navigation, contributionType, item]);\n\n const onPressRemove = useCallback(() => {\n dispatch(setLoading(true));\n removeContribution(user, item.contributionId)\n .then(() => alertInfo(t('removed_ok')))\n .finally(() => {\n dispatch(setContributionsListNeedsRefresh(true));\n dispatch(setLoading(false));\n });\n }, [user, dispatch]);\n\n return (\n \n \n \n \n \n \n {item.titre}\n \n {!isAdminView && (\n {seatsLabel}\n )}\n \n \n {getReadableTime(item.date, true)}\n \n {formatDistanceStrict(new Date(forceUTCToLocal(item.date)), endDate, { locale, roundingMethod: 'ceil' })}\n \n {!isAdminView && (\n \n {eventTypeLabel}\n \n )}\n \n \n {isAdminView && (\n \n \n \n \n {}}\n >\n \n \n \n )}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n width: '100%',\n flexDirection: 'row',\n marginVertical: 10,\n },\n picture: {\n width: 80,\n height: 80,\n borderRadius: 10,\n marginRight: 20,\n },\n contentContainer: {\n flex: 1,\n },\n topContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n flex: 1,\n },\n topContainerSmall: {\n flexDirection: 'column',\n flex: 1,\n },\n bottomContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n flex: 1,\n paddingTop: 16,\n },\n title: {\n fontFamily: FONT_FAMILY_DEFAULT.bold,\n fontSize: 16,\n color: DARK_GRAY,\n },\n seatsText: {\n fontFamily: FONT_FAMILY_DEFAULT.bold,\n fontSize: 16,\n },\n seatsTextSmall: {\n fontFamily: FONT_FAMILY_DEFAULT.bold,\n fontSize: 12,\n },\n text: {\n fontFamily: FONT_FAMILY_DEFAULT.regular,\n fontSize: 16,\n color: DARK_GRAY,\n flex: 1,\n },\n textSmall: {\n fontFamily: FONT_FAMILY_DEFAULT.regular,\n fontSize: 14,\n color: DARK_GRAY,\n flex: 1,\n },\n textRight: {\n textAlign: 'right',\n },\n remainingSealsText: {\n color: SECONDARY_COLOR,\n },\n noAvailableSealsText: {\n color: ALERT_COLOR,\n },\n actionsContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n editButton: {\n paddingRight: 10,\n },\n});\n","import React from 'react';\nimport { CategoriesList } from '../containers/CategoriesList';\nimport { Category } from '../../entities/Category';\nimport { useQuery } from '@tanstack/react-query';\nimport { ContributionType } from '../../types';\nimport { getCategoriesByCustomModuleIdentifier, getCategoriesByType } from '../../services/api/category.api';\nimport useLoggedUser from '../../hooks/useLoggedUser';\n\nexport type CategoryPickerProps = {\n contributionType?: ContributionType;\n customModuleIdentifier?: string;\n onSelect: (category?: Category) => void;\n};\n\nexport default function CategoryPicker({ contributionType, customModuleIdentifier, onSelect }: CategoryPickerProps) {\n const loggedUser = useLoggedUser();\n\n const { data: categories } = useQuery(['getCategoriesByType', contributionType], () => {\n if (contributionType) {\n return getCategoriesByType(loggedUser.entreprise?.id!, contributionType, loggedUser);\n } else if (customModuleIdentifier) {\n return getCategoriesByCustomModuleIdentifier(loggedUser.entreprise?.id!, customModuleIdentifier, loggedUser);\n }\n });\n\n if (!categories || !categories.length) {\n return null;\n }\n\n return ;\n}\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { AppScreen } from '../../../components/containers/AppScreen';\nimport { useDispatch } from 'react-redux';\nimport { dateLocale, t } from '../../../services/translations';\nimport { RefreshControl, SectionList, StyleSheet, View } from 'react-native';\nimport { SearchTextInput } from '../../../components/atomic/SearchTextInput';\nimport AppText from '../../../components/atomic/AppText';\nimport { LIGHT_GRAY, PRIMARY_COLOR } from '../../../styles/appColor';\nimport { EventItemRow } from '../../../components/atomic/EventItemRow';\nimport { ContributionEvenementSummary } from '../../../entities/ContributionEvenementSummary';\nimport { getContributionsList } from '../../../services/api/contribution.api';\nimport { groupByAdjacent } from '../../../utils/Utils';\nimport { format } from 'date-fns';\nimport { FONT_FAMILY_DEFAULT } from '../../../styles/globalStyle';\nimport Separator from '../../../components/atomic/Separator';\nimport usePaginatedList from '../../../hooks/usePaginatedList';\nimport { setLoading } from '../../../store/action';\nimport useLoggedUser from '../../../hooks/useLoggedUser';\nimport useContributionListRefresh from '../../../hooks/useContributionListRefresh';\nimport { hasCategories } from '../../../utils/Category';\nimport CategoryPicker from '../../../components/atomic/CategoryPicker';\nimport { Category } from '../../../entities/Category';\n\nexport type EventsMainScreenProps = {\n route: {\n params: {\n contributionType: string;\n contributionsMode: string;\n isAdminView: boolean;\n };\n };\n};\n\nexport function EventsMainScreen({ route }: EventsMainScreenProps) {\n const contributionTypeInt = parseInt(route.params.contributionType, 10);\n const contributionsModeInt = parseInt(route.params.contributionsMode, 10);\n const user = useLoggedUser();\n const dispatch = useDispatch();\n const [search, setSearch] = useState('');\n const locale = dateLocale();\n const [filterCategory, setFilterCategory] = useState(undefined);\n\n const {\n data: items,\n isLoading,\n isRefreshing,\n fetchNext,\n refresh,\n } = usePaginatedList(\n async (cursor: string | null) => {\n return getContributionsList(user, contributionsModeInt, contributionTypeInt, search, cursor, undefined, {\n categoryId: filterCategory?.id,\n });\n },\n [search, filterCategory?.id]\n );\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isRefreshing));\n }, [isRefreshing, dispatch]);\n\n // Refresh after an update\n useContributionListRefresh(refresh);\n\n const data = useMemo(\n () =>\n groupByAdjacent(items, (item) => format(new Date(item.date), 'eeee d MMMM yyyy', { locale })).map((data) => ({\n title: format(new Date(data[0].date), 'eeee d MMMM yyyy', { locale }),\n data,\n })),\n [items, locale]\n );\n\n return (\n \n \n {hasCategories(contributionTypeInt) && (\n \n )}\n \n item.id.toString()}\n showsVerticalScrollIndicator={false}\n renderItem={({ item }) => (\n \n )}\n stickySectionHeadersEnabled={false}\n renderSectionHeader={({ section: { title } }) => {title}}\n ListEmptyComponent={{t('no_contributions')}}\n data={items}\n refreshControl={}\n ItemSeparatorComponent={Separator}\n onEndReached={fetchNext}\n />\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n content: {\n flex: 1,\n flexDirection: 'row',\n },\n searchInput: {\n marginBottom: 10,\n },\n sectionTitle: {\n fontFamily: FONT_FAMILY_DEFAULT.bold,\n fontSize: 20,\n color: PRIMARY_COLOR,\n paddingVertical: 10,\n },\n emptyText: {\n textAlign: 'center',\n color: LIGHT_GRAY,\n },\n});\n","import axios from './base';\nimport { headers } from './base';\nimport { apiUrlBase } from '../../../configuration';\nimport { UserSaved } from '../storage';\n\nexport async function sendSuggestion(user: UserSaved, title: string, description: string, anonymous: boolean) {\n return axios.post(\n apiUrlBase + 'ContributionIdees',\n {\n contribution: {\n entrepriseId: user.entreprise.id,\n userIdCreateur: user.id,\n visibleZone: false,\n entreprise: null,\n lovIdEtatNavigation: null,\n userIdCreateurNavigation: null,\n },\n cBoiteIdee: {\n texte: description,\n titre: title,\n anonyme: anonymous,\n },\n },\n {\n headers: headers(user.token),\n }\n );\n}\n","import React, { useState } from 'react';\nimport { AppScreen } from '../../components/containers/AppScreen';\nimport { TextFormField } from '../../components/atomic/FormField';\nimport { t } from '../../services/translations';\nimport { AppCheckbox } from '../../components/atomic/AppCheckbox';\nimport { AppButton, Type } from '../../components/atomic/AppButton';\nimport { setLoading } from '../../store/action';\nimport { useDispatch } from 'react-redux';\nimport { alertInfo } from '../../services/utils';\nimport { sendSuggestion } from '../../services/api/suggestions.contributions.api';\nimport useLoggedUser from '../../hooks/useLoggedUser';\n\nexport function SuggestionBoxScreen() {\n const [title, setTitle] = useState('');\n const [description, setDescription] = useState('');\n const [anonymous, setAnonymous] = useState(false);\n const dispatch = useDispatch();\n const user = useLoggedUser();\n\n function reset() {\n setTitle('');\n setDescription('');\n setAnonymous(false);\n }\n\n function _send() {\n dispatch(setLoading(true));\n sendSuggestion(user, title, description, anonymous)\n .then((r) => {\n alertInfo(t('suggestion_sent'));\n reset();\n })\n .catch((e) => {\n alertInfo(t('suggestion_error'));\n })\n .finally(() => dispatch(setLoading(false)));\n }\n\n const isFormReady = title.length > 4 && description.length > 4;\n\n return (\n \n \n \n \n \n \n );\n}\n","import { NavigationProp, useNavigation } from '@react-navigation/native';\nimport { useMutation } from '@tanstack/react-query';\nimport React, { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { alertInfo } from '../../../../services/utils';\nimport { setContributionsListNeedsRefresh } from '../../../../store/action';\nimport { t } from '../../../../services/translations';\nimport Form from '../../../../components/atomic/formik/Form';\nimport SurveyFormFields, { schema } from './SurveyFormFields';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport { sendSurvey } from '../../../../services/api/survey.contributions.api';\nimport { CreateSurvey } from '../../../../entities/CreateSurvey';\nimport { CSondageQuestionType } from '../../../../entities/CSondageQuestion';\n\nexport default function CreateSurveyScreen() {\n const user = useLoggedUser();\n const navigation = useNavigation>();\n const dispatch = useDispatch();\n\n const { mutateAsync, isError } = useMutation({\n mutationFn: async (values: CreateSurvey) => {\n await sendSurvey(user, values);\n dispatch(setContributionsListNeedsRefresh(true));\n navigation.goBack();\n },\n });\n\n // Display error message if needed\n useEffect(() => {\n if (isError) {\n alertInfo(t('error_occurred'));\n }\n }, [isError]);\n\n return (\n \n \n \n );\n}\n","import { DrawerScreenProps } from '@react-navigation/drawer';\nimport { createMaterialTopTabNavigator } from '@react-navigation/material-top-tabs';\nimport { createStackNavigator } from '@react-navigation/stack';\nimport React from 'react';\nimport useLoggedUser from '../hooks/useLoggedUser';\nimport { ScreenNames } from '../ScreenNames';\nimport { ContributionFormScreen } from '../screens/loggedIn/contribution/ContributionFormScreen';\nimport { ContributionListScreen } from '../screens/loggedIn/contribution/ContributionListScreen';\nimport { EventsMainScreen } from '../screens/loggedIn/contribution/EventsMainScreen';\nimport { SuggestionBoxScreen } from '../screens/loggedIn/SuggestionBoxScreen';\nimport { GetContributionsMode } from '../services/api/getContributionsMode';\nimport { t } from '../services/translations';\nimport { isMobile } from '../services/utils';\nimport { ContributionType, IntToContributionType } from '../types';\nimport CreateSurveyScreen from '../screens/loggedIn/contribution/survey/CreateSurveyScreen';\nimport BackIcon from '../components/atomic/BackIcon';\nimport { BACKGROUND_COLOR } from '../styles/appColor';\n\nfunction Tabs(props: { route; navigation }) {\n const Tab = createMaterialTopTabNavigator();\n\n const user = useLoggedUser();\n const contributionType: ContributionType = IntToContributionType(props.route.params.contributionType);\n\n function getMyContributionsTitleByType(contributionType: ContributionType) {\n switch (contributionType) {\n case ContributionType.SELL:\n return t('my_sell');\n case ContributionType.ACTIVITY:\n return t('my_activities');\n case ContributionType.MUTUAL_AID:\n return t('my_requests');\n default:\n return t('my_contributions');\n }\n }\n\n switch (contributionType) {\n case ContributionType.CARPOOL:\n return (\n \n \n {/**/}\n \n \n \n );\n case ContributionType.EVENT:\n case ContributionType.FORMATION:\n return (\n \n \n \n \n \n \n );\n case ContributionType.LOST_PROPERTY:\n return (\n \n \n \n \n \n );\n case ContributionType.SURVEY:\n return (\n \n \n \n \n \n );\n case ContributionType.SUGGESTION:\n return ;\n case ContributionType.COMPANY_NEWS:\n return (\n \n );\n default:\n return (\n \n \n \n \n \n );\n }\n}\n\nconst Stack = createStackNavigator();\n\nexport function ContributionRouter(props: DrawerScreenProps) {\n const contributionType: ContributionType = IntToContributionType(props.route.params?.contributionType);\n\n return (\n \n \n \n \n );\n}\n","import React, { ReactNode } from 'react';\nimport { View, Platform, useWindowDimensions } from 'react-native';\nimport { responsiveStyle } from '../../services/utils';\nimport { BackButton } from '../atomic/BackButton';\nimport { ResponsiveView } from './ResponsiveView';\nimport { ResponsiveRow } from './ResponsiveRow';\nimport { ResponsiveColumn } from './ResponsiveColumn';\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';\nimport { ContributionType } from '../../types';\nimport { SafeAreaProvider, SafeAreaView } from 'react-native-safe-area-context';\nimport { ContributionPhotoList } from '../molecules/ContributionPhotoList';\nimport { ContributionMedia } from '../../entities/ContributionMedia';\nimport { MActuPostMedia } from '../../entities/MActuPostMedia';\nimport { useDeviceSize } from '../../hooks/useDeviceSize';\n\nexport function ContentWithImageHeaderScreen(props: {\n contribution:\n | {\n contribution: {\n contributionMedias: ContributionMedia[];\n };\n }\n | {\n contributionMedias: ContributionMedia[];\n }\n | {\n mActuPostMedias: MActuPostMedia[];\n };\n contributionType: ContributionType;\n imageContentOverride?: ReactNode;\n bottomContent?: ReactNode;\n underImageContent?: ReactNode;\n children: ReactNode;\n navigation: any;\n absoluteBackNavigation?: string;\n absoluteBackNavigationDetail?: any;\n}) {\n const screenDimensions = useWindowDimensions();\n const { isSmallDevice } = useDeviceSize();\n\n return (\n \n \n \n \n \n {props.imageContentOverride ? (\n \n {props.imageContentOverride}\n \n ) : (\n \n )}\n {props.underImageContent}\n \n {props.children}\n \n {props.bottomContent}\n \n \n \n \n );\n}\n","import axios from './base';\nimport { headers } from './base';\nimport { apiUrlBase } from '../../../configuration';\nimport { ContributionType } from '../../types';\nimport { UserSaved } from '../storage';\n\nexport async function setContributionInterest(\n user: UserSaved,\n contributionId: number,\n postId: number,\n contributionType: ContributionType,\n title: string\n) {\n let url = apiUrlBase + 'ContributionInterests';\n\n let body: any = {\n contributionId,\n postId,\n userId: user.id,\n title,\n contributionType,\n };\n\n return axios\n .post(url, body, {\n headers: headers(user.token),\n })\n .then((response) => {\n return response;\n });\n}\n\nexport const setCompanyNewsView = (user: UserSaved, id: number) =>\n axios.post(\n `${apiUrlBase}MActuUserViews`,\n { mActuId: id, userId: user.id },\n {\n headers: headers(user.token),\n }\n );\n\nexport async function setContributionView(user: UserSaved, contributionId: number, contributionType: ContributionType) {\n let url = apiUrlBase + 'MActuUserViews';\n\n let body = {\n mActuId: contributionId,\n userId: user.id,\n };\n if (contributionType == ContributionType.COMPANY_NEWS) {\n url = apiUrlBase + 'MActuUserViews';\n body = {\n mActuId: contributionId,\n userId: user.id,\n };\n }\n return axios\n .post(url, body, {\n headers: headers(user.token),\n })\n .then((response) => {\n return response;\n });\n}\n\nexport async function removeContributionInterest(user: UserSaved, interestId: number) {\n let url = apiUrlBase + 'ContributionInterests/' + interestId;\n\n return axios\n .delete(url, {\n headers: headers(user.token),\n })\n .then((response) => {\n return response;\n });\n}\n","import React from 'react';\nimport { RenderHTMLProps } from 'react-native-render-html';\nimport { FONT_FAMILY_DEFAULT } from '../../styles/globalStyle';\n\nexport const Html = (props: RenderHTMLProps) => {\n return (\n \n {props.source?.html && (\n

\n )}\n \n );\n};\n","import { FONT_FAMILY_DEFAULT, globalStyle } from '../../styles/globalStyle';\nimport { Dimensions } from 'react-native';\nimport React, { useMemo } from 'react';\nimport { Html } from './Html';\nimport { MixedStyleDeclaration } from 'react-native-render-html';\n\nexport type HtmlTextProps = {\n text: string;\n style?: MixedStyleDeclaration;\n};\n\nexport function HtmlText({ text, style }: HtmlTextProps) {\n let html = useMemo(() => {\n let filteredText = text;\n filteredText = filteredText.replace(/
/gm, '');\n filteredText = filteredText.replace(//gm, ' ');\n filteredText = filteredText.replace(//gm, ' ');\n filteredText = filteredText.replace(/\\n/gm, '
');\n filteredText = filteredText.replace(/

/gm, '');\n filteredText = filteredText.replace(/<\\/p>/gm, '
');\n\n // Add target=\"_blank\" to links\n filteredText = filteredText.replace(/([^<]*)<\\/a>/gm, '$2');\n\n return filteredText;\n }, [text]);\n\n return (\n \n );\n}\n","import React from 'react';\nimport { StyleSheet } from 'react-native';\nimport { Icon } from '@rneui/base';\nimport { useDispatch } from 'react-redux';\nimport { t } from '../../services/translations';\nimport { alertInfo } from '../../services/utils';\nimport { setLoading } from '../../store/action';\nimport { ALERT_COLOR } from '../../styles/appColor';\nimport { TwoActionsGenericPopup } from '../containers/TwoActionsButtonPopup';\n\nexport type RemoveLittleButtonProps = {\n onPress: () => Promise;\n};\n\nexport default function RemoveLittleButton({ onPress }: RemoveLittleButtonProps) {\n const dispatch = useDispatch();\n\n return (\n {\n dispatch(setLoading(true));\n onPress()\n .then(() => alertInfo(t('removed_ok')))\n .finally(() => {\n dispatch(setLoading(false));\n });\n }}\n onPressButton2={() => {}}\n >\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n icon: {\n marginLeft: 10,\n },\n});\n","import React from 'react';\nimport { StyleSheet, View, Text } from 'react-native';\nimport * as Localization from 'expo-localization';\nimport { formatInTimeZone, zonedTimeToUtc } from 'date-fns-tz';\nimport { DARK_GRAY, SMOKE_WHITE } from '../../styles/appColor';\nimport { apiTimeZone } from '../../../configuration';\nimport { User } from '../../entities/User';\nimport { ProfilePicture } from './ProfilePicture';\nimport { FONT_FAMILY_DEFAULT } from '../../styles/globalStyle';\nimport { dateLocale } from '../../services/translations';\nimport RemoveLittleButton from './RemoveLittleButton';\nimport useLoggedUser from '../../hooks/useLoggedUser';\n\nexport type CommentBubbleProps = {\n content: string;\n user: User;\n date: Date;\n remove?: () => Promise;\n};\n\nexport function CommentBubble({ content, date, user, remove }: CommentBubbleProps) {\n const locale = dateLocale();\n const loggedUser = useLoggedUser();\n const hasEditAccess = loggedUser.lovIdType == 13 || user.id === loggedUser.id;\n\n return (\n \n \n \n \n \n \n {user.prenom} {user.nom}\n \n \n {date && (\n \n {' '}\n {formatInTimeZone(zonedTimeToUtc(date, apiTimeZone), Localization.timezone, 'd MMMM yyyy HH:mm', {\n locale,\n })}\n \n )}\n {remove && hasEditAccess && }\n \n {content}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'row',\n marginVertical: 10,\n flex: 1,\n },\n header: {\n flexDirection: 'row',\n flex: 1,\n },\n contentContainer: {\n padding: 8,\n marginVertical: 4,\n marginLeft: 10,\n borderRadius: 8,\n backgroundColor: SMOKE_WHITE,\n flex: 1,\n },\n author: {\n fontFamily: FONT_FAMILY_DEFAULT.bold,\n fontSize: 12,\n flexWrap: 'nowrap',\n flex: 1,\n },\n text: {\n flexWrap: 'wrap',\n fontSize: 14,\n },\n dateText: {\n color: DARK_GRAY,\n fontSize: 12,\n paddingLeft: 8,\n textAlign: 'right',\n marginLeft: 'auto',\n },\n});\n","import axios from './base';\nimport { apiUrlBase } from '../../../configuration';\nimport { headers } from './base';\nimport { Comment } from '../../entities/Comment';\nimport { Paginated } from '../../entities/Paginated';\nimport { UserSaved } from '../storage';\n\nexport async function getNewsComments(\n user: UserSaved,\n newsId: number,\n cursor: string | null,\n limit: number | null\n): Promise> {\n return axios\n .get(`${apiUrlBase}Comment/news/${newsId}`, {\n headers: headers(user.token),\n params: { cursor, limit },\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function getContributionComments(\n user: UserSaved,\n contributionId: number,\n cursor: string | null,\n limit: number | null\n): Promise> {\n return axios\n .get(`${apiUrlBase}Comment/contribution/${contributionId}`, {\n headers: headers(user.token),\n params: { cursor, limit },\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function postNewsComment(user: UserSaved, newsId: number, text: string): Promise {\n return axios\n .post(\n `${apiUrlBase}Comment/news/${newsId}`,\n { text },\n {\n headers: headers(user.token),\n }\n )\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function postContributionComment(user: UserSaved, contributionId: number, text: string): Promise {\n return axios\n .post(\n `${apiUrlBase}Comment/contribution/${contributionId}`,\n { text },\n {\n headers: headers(user.token),\n }\n )\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function updateComment(user: UserSaved, commentId: number, text: string): Promise {\n return axios\n .post(\n `${apiUrlBase}Comment/${commentId}`,\n { text },\n {\n headers: headers(user.token),\n }\n )\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function deleteComment(user: UserSaved, commentId: number): Promise {\n return axios\n .delete(`${apiUrlBase}Comment/${commentId}`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n","import { Icon } from '@rneui/base';\nimport React from 'react';\nimport { ColorValue, TouchableOpacity, ViewStyle } from 'react-native';\nimport { LIGHT_GRAY, PRIMARY_COLOR } from '../../styles/appColor';\n\nexport type IconButtonProps = {\n icon: string;\n disabled?: boolean;\n reverse?: boolean;\n color?: number | ColorValue;\n style?: ViewStyle;\n size?: number;\n onPress: () => void;\n};\n\nexport function IconButton({ icon, disabled, style, reverse, color, size, onPress }: IconButtonProps) {\n let internalColor = disabled ? LIGHT_GRAY : color || PRIMARY_COLOR;\n\n return (\n \n \n \n );\n}\n","import React, { useCallback, useState } from 'react';\nimport { View, StyleSheet } from 'react-native';\nimport { postContributionComment, postNewsComment } from '../../services/api/comment.api';\nimport { t } from '../../services/translations';\nimport { PRIMARY_COLOR_DARKEN } from '../../styles/appColor';\nimport { IconButton } from '../atomic/IconButton';\nimport { TextInput } from '../atomic/TextInput';\nimport useLoggedUser from '../../hooks/useLoggedUser';\n\nexport type NewCommentFormProps = {\n newsId?: number;\n contributionId?: number;\n onSent?: () => void;\n};\n\nexport function NewCommentForm({ newsId, contributionId, onSent }: NewCommentFormProps) {\n const user = useLoggedUser();\n const [text, setText] = useState('');\n const [isLoading, setIsLoading] = useState(false);\n\n const send = useCallback(async () => {\n setIsLoading(true);\n\n if (newsId) {\n await postNewsComment(user, newsId, text);\n } else if (contributionId) {\n await postContributionComment(user, contributionId, text);\n }\n\n setText('');\n setIsLoading(false);\n onSent && onSent();\n }, [text, user, newsId, contributionId, setText, onSent]);\n\n return (\n \n setText(text)}\n textColor={PRIMARY_COLOR_DARKEN}\n style={styles.input}\n placeholder={t('add_comment')}\n />\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'row',\n paddingBottom: 10,\n },\n input: {\n flex: 1,\n },\n button: {\n marginLeft: 10,\n marginVertical: 2,\n },\n});\n","import React, { useCallback, useState } from 'react';\nimport { View, StyleSheet, RefreshControl } from 'react-native';\nimport { FlatList } from 'react-native-gesture-handler';\nimport { CommentBubble } from '../atomic/CommentBubble';\nimport { FONT_FAMILY_DEFAULT } from '../../styles/globalStyle';\nimport { isMobile } from '../../services/utils';\nimport usePaginatedList from '../../hooks/usePaginatedList';\nimport { getNewsComments, getContributionComments, deleteComment } from '../../services/api/comment.api';\nimport { NewCommentForm } from './NewCommentForm';\nimport AppText, { Mode } from '../atomic/AppText';\nimport { PRIMARY_COLOR } from '../../styles/appColor';\nimport { t } from '../../services/translations';\nimport { AppButton } from '../atomic/AppButton';\nimport useLoggedUser from '../../hooks/useLoggedUser';\n\nexport type CommentListProps = {\n newsId?: number;\n contributionId?: number;\n};\n\nexport function CommentList({ newsId, contributionId }: CommentListProps) {\n const user = useLoggedUser();\n const [displayAll, setDisplayAll] = useState(false);\n\n const { data, isLoading, totalCount, fetchNext, refresh } = usePaginatedList(\n (cursor: string | null, limit: number | null) => {\n if (newsId) {\n return getNewsComments(user, newsId, cursor, limit);\n } else if (contributionId) {\n return getContributionComments(user, contributionId, cursor, limit);\n } else {\n return Promise.resolve({\n data: [],\n nextCursor: null,\n totalCount: 0,\n });\n }\n },\n [],\n {\n firstFetchLimit: displayAll ? undefined : 3,\n }\n );\n\n const displayAllComment = useCallback(() => {\n setDisplayAll(true);\n fetchNext();\n }, [fetchNext]);\n\n const removeComment = useCallback(\n async (id: number) => {\n await deleteComment(user, id);\n refresh();\n },\n [user, refresh]\n );\n\n return (\n \n \n {t('comments')}\n \n \n : undefined}\n onEndReached={displayAll ? fetchNext : undefined}\n data={data}\n keyExtractor={(item) => item.id.toString()}\n style={{ overflow: 'visible' }}\n renderItem={({ item }) => (\n removeComment(item.id)}\n />\n )}\n />\n {!displayAll && totalCount > 3 && (\n \n )}\n \n );\n}\n\nconst styles = StyleSheet.create({\n commonSection: {\n paddingVertical: 8,\n },\n sectionMe: {\n flexDirection: 'row',\n },\n sectionNotMe: {\n flexDirection: 'row-reverse',\n },\n sectionTextArea: {\n justifyContent: 'space-around',\n },\n sectionMeTextArea: {\n paddingLeft: 8,\n },\n sectionNotMeTextArea: {\n paddingRight: 8,\n alignItems: 'flex-end',\n },\n sectionText: {\n fontFamily: FONT_FAMILY_DEFAULT.bold,\n fontSize: 12,\n },\n sectionFooter: {\n paddingBottom: 8,\n },\n commentsContainer: {\n margin: 20,\n },\n commentsTitle: {\n color: PRIMARY_COLOR,\n fontSize: 20,\n marginBottom: 10,\n },\n});\n","import { ActivityIndicator, StyleSheet, View } from 'react-native';\nimport React from 'react';\nimport { BACKGROUND_COLOR, PRIMARY_COLOR } from '../../styles/appColor';\n\nexport function AppLoader() {\n return (\n \n \n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: '#00000066',\n justifyContent: 'center',\n alignItems: 'center',\n alignContent: 'center',\n },\n content: {\n backgroundColor: BACKGROUND_COLOR,\n padding: 30,\n flex: 0,\n borderRadius: 10,\n alignItems: 'center',\n alignContent: 'center',\n justifyContent: 'center',\n },\n});\n","import React from 'react';\nimport { useField } from 'formik';\nimport { StyleSheet, View } from 'react-native';\nimport { AppButton } from '../AppButton';\n\nexport type RadioButtonGroupFieldProps = {\n name: string;\n options: { label: string; value: T }[];\n disabled?: boolean;\n multiple?: boolean;\n};\n\nexport default function RadioButtonGroupField({\n name,\n options,\n disabled,\n multiple,\n}: RadioButtonGroupFieldProps) {\n const [field, , helper] = useField(name);\n\n return (\n \n {options.map((option) => {\n const isChecked = multiple ? (field.value || []).includes(option.value) : field.value === option.value;\n\n return (\n {\n if (multiple) {\n if ((field.value || []).includes(option.value)) {\n helper.setValue((field.value || []).filter((e: T) => e !== option.value));\n } else {\n helper.setValue([...(field.value || []), option.value]);\n }\n } else {\n helper.setValue(option.value);\n }\n }}\n />\n );\n })}\n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n button: {\n marginBottom: 10,\n },\n});\n","import React, { useMemo } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { useDispatch } from 'react-redux';\nimport { useMutation } from '@tanstack/react-query';\nimport * as Yup from 'yup';\nimport { match } from 'ts-pattern';\nimport { ContributionSondagesDetails } from '../../entities/ContributionSondagesDetails';\nimport Form from '../atomic/formik/Form';\nimport { CSondageQuestionType } from '../../entities/CSondageQuestion';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport { setLoading } from '../../store/action';\nimport { respondSurvey } from '../../services/api/survey.contributions.api';\nimport { RespondSurvey } from '../../entities/RespondSurvey';\nimport { alertInfo } from '../../services/utils';\nimport { t } from '../../services/translations';\nimport TextField from '../atomic/formik/TextField';\nimport RadioButtonGroupField from '../atomic/formik/RadioButtonGroupField';\nimport SubmitButton from '../atomic/formik/SubmitButton';\nimport AppText, { Mode } from '../atomic/AppText';\nimport { DARK_GRAY, PRIMARY_COLOR } from '../../styles/appColor';\nimport { globalStyle } from '../../styles/globalStyle';\n\n/*Yup.addMethod(Yup.MixedSchema, 'oneOfSchemas', function (schemas) {\n return this.test('one-of-schemas', 'Not all items in ${path} match one of the allowed schemas', (item) =>\n schemas.some((schema: any) => schema.isValidSync(item, { strict: true }))\n );\n});*/\n\nexport type SurveyRespondFormProps = {\n item: ContributionSondagesDetails;\n onSubmit: () => void;\n};\n\nexport default function SurveyRespondForm({ item, onSubmit }: SurveyRespondFormProps) {\n const user = useLoggedUser();\n const dispatch = useDispatch();\n\n const mutation = useMutation({\n mutationFn: async (values: RespondSurvey) => {\n dispatch(setLoading(true));\n\n try {\n await respondSurvey(user, item.id, values);\n onSubmit && onSubmit();\n } catch (err: any) {\n alertInfo(t('error_occurred'));\n } finally {\n dispatch(setLoading(false));\n }\n },\n });\n\n const schema = useMemo(() => {\n return Yup.object().shape({\n questions: Yup.array().test('all-questions-answered', t('all_questions_answered'), (questions: any) => {\n return questions.every((question: any) => {\n const q = item.questions.find((e) => e.id === question.questionId);\n\n if (q == null) {\n return false;\n }\n\n if (q.type === CSondageQuestionType.TEXT) {\n return question.text;\n }\n\n if (q.type === CSondageQuestionType.SINGLE) {\n return question.answerId;\n }\n\n if (q.type === CSondageQuestionType.MULTIPLE) {\n return question.answerIds.length > 0;\n }\n });\n }),\n });\n }, [item]);\n\n const initialValues = useMemo(() => {\n return {\n questions: item.questions.map((question) => {\n if (question.type === CSondageQuestionType.TEXT) {\n return {\n questionId: question.id,\n text: question.freeText || '',\n };\n }\n if (question.type === CSondageQuestionType.SINGLE) {\n return {\n questionId: question.id,\n answerId: question.answers.find((e) => e.value)?.id,\n };\n }\n if (question.type === CSondageQuestionType.MULTIPLE) {\n return {\n questionId: question.id,\n answerIds: question.answers.filter((e) => e.value).map((e) => e.id),\n };\n }\n }),\n };\n }, [item]);\n\n const hasAlreadyResponded = item.questions.every(\n (question) => !question.answers.every((answer) => !answer.value) || question.freeText\n );\n\n return (\n \n \n {item.questions.map((question, index) => (\n \n \n {question.text}\n \n {match(question.type)\n .with(CSondageQuestionType.TEXT, () => (\n \n ))\n .with(CSondageQuestionType.SINGLE, () => (\n <>\n * {t('single_choice')}\n ({ label: e.text, value: e.id }))}\n disabled={hasAlreadyResponded}\n />\n \n ))\n .with(CSondageQuestionType.MULTIPLE, () => (\n <>\n * {t('multiple_choice')}\n ({ label: e.text, value: e.id }))}\n disabled={hasAlreadyResponded}\n multiple\n />\n \n ))\n .otherwise(() => (\n <>\n ))}\n \n ))}\n {!hasAlreadyResponded && }\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n alignContent: 'center',\n },\n questionText: {\n alignContent: 'center',\n textAlign: 'center',\n color: PRIMARY_COLOR,\n fontSize: 19,\n marginVertical: 10,\n },\n questionSubtext: {\n alignContent: 'center',\n textAlign: 'center',\n color: DARK_GRAY,\n fontSize: 12,\n marginBottom: 5,\n },\n textField: {},\n});\n","import React, { useEffect } from 'react';\nimport { KeyboardAvoidingView, Platform, StyleSheet, View } from 'react-native';\nimport * as FileSystem from 'expo-file-system';\nimport * as Sharing from 'expo-sharing';\nimport { DefaultBackground } from '../../../../components/containers/AppScreen';\nimport { ContentWithImageHeaderScreen } from '../../../../components/containers/ContentWithImageHeaderScreen';\nimport { CommentList } from '../../../../components/molecules/CommentList';\nimport { AppButton } from '../../../../components/atomic/AppButton';\nimport { t } from '../../../../services/translations';\nimport { UserSubRow } from '../../../../components/atomic/UserSubRow';\nimport AppText, { Mode } from '../../../../components/atomic/AppText';\nimport { alertInfo, getPlural, getReadableDate, isMobile } from '../../../../services/utils';\nimport { useNavigation } from '@react-navigation/native';\nimport { BigDetailRow, BigDetailRowInline, ReportButton, SimpleDetailRow } from '../ContributionItemDetailScreen';\nimport { HtmlText } from '../../../../components/atomic/HtmlText';\nimport { ContributionType } from '../../../../types';\nimport {\n getSurvey,\n getSurveyExportCsvUrl,\n getSurveyExportPdfUrl,\n recallSurveyNotification,\n} from '../../../../services/api/survey.contributions.api';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport { useQuery } from '@tanstack/react-query';\nimport { AppLoader } from '../../../../components/atomic/AppLoader';\nimport { TwoActionsGenericPopup } from '../../../../components/containers/TwoActionsButtonPopup';\nimport { FONT_FAMILY_DEFAULT, globalStyle } from '../../../../styles/globalStyle';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport { PRIMARY_COLOR } from '../../../../styles/appColor';\nimport SpreadingChipList from '../../../../components/atomic/SpreadingChipsList';\nimport { useDispatch } from 'react-redux';\nimport { setCurrentContribution, setLoading } from '../../../../store/action';\nimport { CSondageQuestionType } from '../../../../entities/CSondageQuestion';\nimport SurveyRespondForm from '../../../../components/molecules/SurveyRespondForm';\n\ndeclare var window: any;\n\nexport type SurveyDetailsScreenProps = {\n id: number;\n};\n\nexport function SurveyDetailsScreen({ id }: SurveyDetailsScreenProps) {\n const navigation = useNavigation();\n const dispatch = useDispatch();\n const user = useLoggedUser();\n const { data, isLoading, refetch } = useQuery(['survey', id], () => getSurvey(user, id));\n\n // Unlogic navigation needs that\n useEffect(() => {\n if (data) {\n dispatch(setCurrentContribution(data));\n }\n }, [data, dispatch]);\n\n async function exportToPdf() {\n if (data == null) {\n return;\n }\n\n let fileUrl = getSurveyExportPdfUrl(user, data.id);\n\n if (!isMobile()) {\n window.open(fileUrl, '_blank');\n } else {\n let uri = FileSystem.documentDirectory + 'export.pdf';\n await FileSystem.downloadAsync(fileUrl, uri);\n await Sharing.shareAsync(uri, { dialogTitle: 'PDF' });\n }\n }\n\n async function exportToCSV() {\n if (data == null) return;\n\n let fileUrl = getSurveyExportCsvUrl(user, data.id);\n\n if (!isMobile()) {\n window.open(fileUrl, '_blank');\n } else {\n let uri = FileSystem.documentDirectory + 'export.csv';\n await FileSystem.downloadAsync(fileUrl, uri);\n await Sharing.shareAsync(uri, { dialogTitle: 'CSV' });\n }\n }\n\n async function recallNotification() {\n if (data == null) return;\n\n dispatch(setLoading(true));\n try {\n await recallSurveyNotification(user, data.id);\n } catch (e) {\n alertInfo(t('error_occurred'));\n } finally {\n dispatch(setLoading(false));\n }\n }\n\n return isLoading ? (\n \n ) : (\n data && (\n \n \n \n \n \n }\n underImageContent={\n \n \n \n {getReadableDate(data?.creationDate, true, true)}\n \n \n }\n navigation={navigation}\n >\n \n \n \n {data.title}\n \n \n \n }\n title={t('description')}\n />\n {!data?.isOwner ? (\n <>\n \n \n \n ) : (\n <>\n \n \n \n \n {data.questions.map((question) => (\n \n {question.text}} title={t('question')} />\n {\n return (\n \n {answer.text} - {answer.selectedCount}{' '}\n {getPlural(answer.selectedCount, t('vote'), t('votes'))} -{' '}\n {`${Math.round(answer.selectedRate * 100)} %`}\n \n );\n })\n ) : (\n {t('x_answers', { value: question.respondCount })}\n )\n }\n title={t('answers')}\n />\n \n ))}\n \n exportToPdf()}\n style={{ marginBottom: 10 }}\n />\n exportToCSV()}\n style={{ marginBottom: 10 }}\n />\n {data.notifActivated && (\n recallNotification()}\n onPressButton2={() => {}}\n style={[globalStyle.button, globalStyle.button_light, globalStyle.button_content]}\n >\n \n \n {t('recall_notification')}\n \n \n )}\n \n }\n title={t('export_results')}\n />\n \n )}\n \n \n \n }\n title={t('who_can_see')}\n />\n {!!data?.commentsActivated && }\n \n \n \n )\n );\n}\n\nconst styles = StyleSheet.create({\n chipContainer: { flexDirection: 'row', flexWrap: 'wrap', width: '100%' },\n});\n","import { useState } from 'react';\nimport { User } from '../../entities/User';\nimport { t } from '../../services/translations';\nimport { AppButton, Type } from '../atomic/AppButton';\nimport { UserProfileOverlay } from '../atomic/UserProfileOverlay';\n\nexport type ContactUserButtonProps = {\n user: User;\n};\n\nexport default function ContactUserButton({ user }: ContactUserButtonProps) {\n const [visible, setVisible] = useState(false);\n\n return (\n <>\n setVisible(true)}\n />\n setVisible(false)} userProfileData={user} isVisible={visible} />\n \n );\n}\n","import { TouchableOpacity, useWindowDimensions, View } from 'react-native';\nimport AppText from './AppText';\nimport { combineNames, isMobile } from '../../services/utils';\nimport React, { useState } from 'react';\nimport { ProfilePicture } from './ProfilePicture';\nimport { UserProfileOverlay } from './UserProfileOverlay';\nimport { FONT_FAMILY_DEFAULT } from '../../styles/globalStyle';\nimport { User } from '../../entities/User';\nimport { PRIMARY_COLOR } from '../../styles/appColor';\n\nexport interface ProfileCardProps {\n user: User;\n}\n\nexport function ProfileCard(props: ProfileCardProps) {\n const [showProfile, setShowProfile] = useState(false);\n const { width } = useWindowDimensions();\n\n const isDeleted = props.user.aspNetUsers?.deletedAt !== null;\n\n return (\n <>\n setShowProfile(true)}\n style={{ flexDirection: 'row', opacity: isDeleted ? 0.5 : 1 }}\n >\n \n \n \n \n {combineNames(props.user)}\n \n \n \n \n setShowProfile(false)}\n userProfileData={props.user}\n isVisible={showProfile}\n />\n \n );\n}\n","import React from 'react';\nimport { FlatList, RefreshControl, StyleSheet } from 'react-native';\nimport { isMobile } from '../../services/utils';\nimport { ProfileCard } from '../atomic/ProfileCard';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport usePaginatedList from '../../hooks/usePaginatedList';\nimport AppText from '../atomic/AppText';\nimport { LIGHT_GRAY } from '../../styles/appColor';\nimport { t } from '../../services/translations';\nimport { listContributionInterestedUsers } from '../../services/api/contribution.api';\n\nexport type ContributionInterestedUserListProps = {\n id: number;\n};\n\nexport default function ContributionInterestedUserList({ id }: ContributionInterestedUserListProps) {\n const user = useLoggedUser();\n\n const { data, isLoading, fetchNext, refresh } = usePaginatedList(\n (cursor: string | null) => listContributionInterestedUsers(user, id, cursor),\n ['news-interested-users', id]\n );\n\n return (\n }\n keyExtractor={(item) => item.id.toString()}\n refreshControl={}\n ListEmptyComponent={{t('no_contributions')}}\n onEndReached={fetchNext}\n />\n );\n}\n\nconst styles = StyleSheet.create({\n contentContainer: isMobile()\n ? {}\n : {\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n emptyText: {\n textAlign: 'center',\n color: LIGHT_GRAY,\n },\n});\n","import React, { ReactNode, useEffect, useState, useCallback } from 'react';\nimport AppText, { Mode } from '../../../components/atomic/AppText';\nimport { getContributionItem, report, setApproveContribution } from '../../../services/api/contribution.api';\nimport { useDispatch } from 'react-redux';\nimport { AppButton, Type } from '../../../components/atomic/AppButton';\nimport { t } from '../../../services/translations';\nimport {\n setContributionsListNeedsRefresh,\n setCurrentContribution,\n setDetailContributionType,\n setForceBack,\n setIsNotif,\n setLoading,\n} from '../../../store/action';\nimport { Linking, StyleSheet, Text, TouchableOpacity, View, KeyboardAvoidingView, Platform } from 'react-native';\nimport * as Sharing from 'expo-sharing';\nimport * as FileSystem from 'expo-file-system';\nimport { _getInterestId, alertInfo, getReadableDate, isAdmin, isMobile, openURL } from '../../../services/utils';\nimport { ContributionType, ContributionTypesInfos, IntToContributionType } from '../../../types';\nimport {\n contributionTypeToText,\n getDataContentByType,\n getDescriptionByType,\n getIdFromItem,\n getTitleByType,\n} from '../../../services/api/contributions';\nimport { FORM_LIGHT_GRAY, PRIMARY_COLOR } from '../../../styles/appColor';\nimport { getDocumentURI, isAnonymous } from '../../../services/api/helper.api';\nimport { AppModalOverlay } from '../../../components/atomic/AppModalOverlay';\nimport { ContentWithImageHeaderScreen } from '../../../components/containers/ContentWithImageHeaderScreen';\nimport {\n setAttendEvent,\n getEventExportPdfUrl,\n recallEventNotification,\n} from '../../../services/api/event.contributions.api';\nimport { removeContributionInterest, setContributionInterest } from '../../../services/api/interest.contributions.api';\nimport { FONT_FAMILY_DEFAULT, globalStyle } from '../../../styles/globalStyle';\nimport { UserSubRow } from '../../../components/atomic/UserSubRow';\nimport { DefaultBackground } from '../../../components/containers/AppScreen';\nimport { AppMapView } from '../../../components/atomic/AppMapView';\nimport { HtmlText } from '../../../components/atomic/HtmlText';\nimport { NEWS_INTERESTS_ENABLED } from '../../../services/features';\nimport { Contribution } from '../../../entities/Contribution';\nimport { CSondage } from '../../../entities/CSondage';\nimport { CBoiteIdee } from '../../../entities/CBoiteIdee';\nimport { RouteProp } from '@react-navigation/native';\nimport { ContributionVente } from '../../../entities/ContributionVente';\nimport { ContributionKiosque } from '../../../entities/ContributionKiosque';\nimport { ContributionObjet } from '../../../entities/ContributionObjet';\nimport { ContributionCovoiturage } from '../../../entities/ContributionCovoiturage';\nimport { generateGoogleAgenda, generateOutlookAgenda } from '../../../services/url.utils';\nimport { DateTime } from 'luxon';\nimport { hasCategories } from '../../../utils/Category';\nimport { CategoryChip } from '../../../components/atomic/CategoryChip';\nimport { formatUrl } from '../../../utils/Utils';\nimport { CommentList } from '../../../components/molecules/CommentList';\nimport SpreadingChipList from '../../../components/atomic/SpreadingChipsList';\nimport { ContributionEvenementDetails } from '../../../entities/ContributionEvenementDetails';\nimport { recallFormationNotification } from '../../../services/api/formation.contributions.api';\nimport { TwoActionsGenericPopup } from '../../../components/containers/TwoActionsButtonPopup';\nimport useLoggedUser from '../../../hooks/useLoggedUser';\nimport { SurveyDetailsScreen } from './survey/SurveyDetailsScreen';\nimport ContactUserButton from '../../../components/molecules/ContactUserButton';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport { Chip } from '../../../components/atomic/Chip';\nimport ContributionInterestedUserList from '../../../components/molecules/ContributionInterestedUserList';\nimport { MActuNews } from '../../../entities/MActuNews';\nimport { ContributionPhotoList } from '../../../components/molecules/ContributionPhotoList';\n\nexport function SimpleDetailRow(props: {\n content: ReactNode | string | number;\n title: string;\n first?: boolean;\n width?: number;\n bottomBorderWidth?: number;\n flex?: 'row' | 'column';\n}) {\n return (\n \n \n {props.title}\n \n \n {props.content}\n \n \n );\n}\n\nexport function ViewDetailRow(props: {\n content: ReactNode | string | number;\n title: string;\n first?: boolean;\n flex?: 'row' | 'column';\n}) {\n return !isMobile() ? (\n \n \n {props.title}\n \n \n {props.content}\n \n \n ) : (\n \n );\n}\n\nfunction SimpleColumnDetailRow(props: { content: string; title: string }) {\n return (\n \n \n \n {props.title}\n \n {props.content}\n \n \n );\n}\n\nexport function BigDetailRow(props: { content: ReactNode; title?: string | undefined; borderBottomWidth?: number }) {\n return (\n \n \n {props.title !== undefined && (\n \n {props.title}\n \n )}\n {props.content}\n \n \n );\n}\n\nexport function BigDetailRowInline(props: {\n content: ReactNode;\n title?: string | undefined;\n borderBottomWidth?: number;\n}) {\n return (\n \n \n {props.title !== undefined && (\n \n {props.title}\n \n )}\n \n {props.content}\n \n \n \n );\n}\n\nfunction AttendButton(props: {\n title: string;\n onPress: () => void;\n disabled?: boolean;\n activated?: boolean;\n icon: string;\n}) {\n return (\n \n \n \n {props.title}\n \n \n );\n}\n\nexport interface ReportButtonProps {\n buttonTitle: string;\n id: number;\n title: string;\n}\n\nexport function ReportButton(props: ReportButtonProps) {\n const [visible, setVisible] = useState(false);\n const [reported, setReported] = useState(false);\n const user = useLoggedUser();\n const dispatch = useDispatch();\n\n if (reported) {\n return {t('reported')};\n }\n\n return (\n \n setVisible(true)}\n />\n setVisible(false)}>\n {t('wish_report')}\n \n {\n dispatch(setLoading(true));\n report(user, props.id, props.title)\n .then(() => {\n setReported(true);\n dispatch(setContributionsListNeedsRefresh(true));\n })\n .finally(() => dispatch(setLoading(false)));\n }}\n style={{ width: 80, marginRight: 10 }}\n />\n setVisible(false)} style={{ width: 80 }} />\n \n \n \n );\n}\n\nexport type ContributionItemDetailScreenTypedData =\n | CSondage\n | Contribution\n | CBoiteIdee\n | ContributionEvenementDetails\n | ContributionVente\n | ContributionKiosque\n | ContributionObjet\n | ContributionCovoiturage;\n\nexport function ContributionItemDetailScreen(props: { route: RouteProp; navigation: any }) {\n const dispatch = useDispatch();\n const contributionType: ContributionType = IntToContributionType(props.route.params?.contributionType);\n const id =\n props.route.params?.id !== undefined\n ? props.route.params.id\n : getIdFromItem(props.route.params?.item, contributionType);\n\n useEffect(() => {\n dispatch(setDetailContributionType(contributionType));\n\n if (props.route.params?.isNotif) {\n dispatch(setIsNotif(true));\n }\n\n if (props.route.params?.isAdminView) {\n dispatch(setForceBack(true));\n }\n\n props.navigation.setOptions({ title: contributionTypeToText(contributionType) });\n\n return () => {\n dispatch(setDetailContributionType(undefined));\n dispatch(setIsNotif(false));\n dispatch(setForceBack(false));\n };\n }, [dispatch, contributionType, props.route.params?.isNotif, props.route.params?.isAdminView, props.navigation]);\n\n const [interestId, setInterestId] = useState(undefined);\n const user = useLoggedUser();\n const [data, setData] = useState(undefined);\n const [showInterestedPeople, setShowInterestedPeople] = useState(false);\n\n const canBeInteresting =\n contributionType !== ContributionType.LOST_PROPERTY &&\n contributionType !== ContributionType.EVENT &&\n contributionType !== ContributionType.FORMATION &&\n contributionType !== ContributionType.SUGGESTION &&\n (contributionType !== ContributionType.COMPANY_NEWS || NEWS_INTERESTS_ENABLED);\n\n const refresh = useCallback(() => {\n dispatch(setLoading(true));\n getContributionItem(user, id, contributionType)\n .then((json) => {\n setData(json);\n const dataContent = getDataContentByType(json, contributionType);\n dispatch(setCurrentContribution(dataContent));\n\n if (canBeInteresting) {\n let cont = dataContent.contribution ? dataContent.contribution : dataContent.mActu;\n let contId = dataContent.contributionId ? dataContent.contributionId : dataContent.mActu.id;\n setInterestId(_getInterestId(cont, user.id, contId, contributionType));\n } else {\n setInterestId(undefined);\n }\n })\n .catch(() => {\n console.error('Failed to fetch data');\n })\n .finally(() => {\n dispatch(setLoading(false));\n });\n }, [dispatch, id, contributionType, user, canBeInteresting]);\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n let typedData: ContributionItemDetailScreenTypedData = getDataContentByType(data, contributionType);\n\n if (contributionType === ContributionType.SURVEY) {\n return ;\n }\n\n if (!typedData) {\n return null;\n }\n\n const contribution: Contribution =\n (typedData as CSondage).contribution !== undefined && typedData !== null\n ? (typedData as CSondage).contribution\n : (typedData as Contribution);\n const contributionEvenement =\n contributionType === ContributionType.EVENT || contributionType === ContributionType.FORMATION\n ? (typedData as ContributionEvenementDetails)\n : undefined;\n const contributionId = typedData !== undefined ? (typedData as CBoiteIdee).contributionId : undefined;\n\n function _toggleInterest() {\n dispatch(setLoading(true));\n if (interestId === undefined) {\n setContributionInterest(\n user,\n contributionId as number,\n typedData.id,\n contributionType,\n ContributionTypesInfos[contributionType].titleSelector?.(typedData) ?? '?'\n )\n .then(() => {\n dispatch(setContributionsListNeedsRefresh(true));\n refresh();\n })\n .catch(() => {\n alertInfo(t('error_occurred'));\n })\n .finally(() => {\n dispatch(setLoading(false));\n });\n } else {\n removeContributionInterest(user, interestId)\n .then(() => {\n dispatch(setContributionsListNeedsRefresh(true));\n refresh();\n })\n .catch(() => {\n alertInfo(t('error_occurred'));\n })\n .finally(() => {\n dispatch(setLoading(false));\n });\n }\n }\n\n function _attend(value: boolean) {\n dispatch(setLoading(true));\n setAttendEvent(user, typedData.id, value)\n .then(() => {\n dispatch(setContributionsListNeedsRefresh(true));\n refresh();\n })\n .catch(() => {\n alertInfo(t('error_occurred'));\n })\n .finally(() => {\n dispatch(setLoading(false));\n });\n }\n\n function _approveContribution(value: boolean) {\n dispatch(setLoading(true));\n setApproveContribution(user, typedData.id, value, contributionType)\n .then(() => {\n dispatch(setContributionsListNeedsRefresh(true));\n refresh();\n })\n .catch(() => {\n alertInfo(t('error_occurred'));\n })\n .finally(() => {\n dispatch(setLoading(false));\n });\n }\n\n function _isApproved() {\n return (typedData as CBoiteIdee).reponse === true;\n }\n\n function _isDisapproved() {\n return (typedData as CBoiteIdee).reponse === false;\n }\n\n function _canBeReported() {\n return contributionType !== ContributionType.SUGGESTION;\n }\n\n async function exportEventToPdf() {\n let fileUrl = getEventExportPdfUrl(user, typedData.id);\n\n if (!isMobile()) {\n window.open(fileUrl, '_blank');\n } else {\n let uri = FileSystem.documentDirectory + 'export.pdf';\n await FileSystem.downloadAsync(fileUrl, uri);\n await Sharing.shareAsync(uri, { dialogTitle: 'PDF' });\n }\n }\n\n async function recallNotification() {\n dispatch(setLoading(true));\n try {\n if (contributionType === ContributionType.EVENT) {\n await recallEventNotification(user, typedData.id);\n } else if (contributionType === ContributionType.FORMATION) {\n await recallFormationNotification(user, typedData.id);\n }\n } catch (e) {\n alertInfo(t('error_occurred'));\n }\n\n dispatch(setLoading(false));\n }\n\n function getInterestCount() {\n if (typedData.interestCount !== null && typedData.interestCount !== undefined) {\n return typedData.interestCount;\n } else if (contribution.cinterest != null && contribution.cinterest != undefined) {\n return contribution.cinterest?.length;\n } else if (\n (contribution as unknown as MActuNews)?.mActu?.mActuInterest != null &&\n (contribution as unknown as MActuNews)?.mActu?.mActuInterest != undefined\n ) {\n return (contribution as unknown as MActuNews)?.mActu?.mActuInterest?.length;\n } else {\n return 0;\n }\n }\n\n return (\n \n \n \n {_canBeReported() && (\n \n \n \n )}\n \n }\n imageContentOverride={\n contributionType === ContributionType.CARPOOL ? (\n {}} />\n ) : undefined\n }\n underImageContent={\n <>\n \n {isAnonymous(typedData, contributionType) ? (\n \n ) : (\n \n )}\n \n {getReadableDate(contribution.dateCreation, true)}\n \n \n \n }\n navigation={props.navigation}\n >\n \n \n \n {getTitleByType(typedData, contributionType)}\n \n \n {contributionType === ContributionType.SUGGESTION &&\n isAdmin(user) &&\n isAnonymous(typedData, contributionType) ? (\n \n \n \n ) : null}\n {(typedData as ContributionVente).prix !== undefined && (typedData as ContributionVente).prix !== null ? (\n \n \n \n {(typedData as ContributionVente).prix}€\n \n \n \n ) : null}\n\n {hasCategories(contributionType) &&\n !!ContributionTypesInfos[contributionType].categorySelector!(typedData) && (\n \n \n \n )}\n {contributionEvenement ? (\n <>\n {contribution?.userIdCreateurNavigation.id !== user.id && (\n <>\n \n _attend(true)}\n />\n _attend(false)}\n />\n \n \n \n openURL(\n generateGoogleAgenda(\n contributionEvenement.titre,\n contributionEvenement.description,\n contributionEvenement.date,\n contributionEvenement.duration\n )\n )\n }\n title=\"GOOGLE AGENDA\"\n style={{ marginBottom: isMobile() ? 8 : 0 }}\n fontSize={isMobile() ? 16 : undefined}\n />\n \n openURL(\n generateOutlookAgenda(\n contributionEvenement.titre,\n contributionEvenement.description,\n contributionEvenement.date,\n contributionEvenement.duration\n )\n )\n }\n title=\"OUTLOOK AGENDA\"\n fontSize={isMobile() ? 16 : undefined}\n />\n \n \n )}\n \n ) : null}\n {contributionType === ContributionType.SUGGESTION && isAdmin(user) ? (\n <>\n \n _approveContribution(true)}\n />\n _approveContribution(false)}\n />\n \n \n ) : null}\n \n }\n title={t('description')}\n />\n\n {contributionType === ContributionType.DOCUMENT && (\n openURL(getDocumentURI((typedData as ContributionKiosque).fichierIdDocument))}\n />\n }\n title={undefined}\n />\n )}\n\n {contributionType == ContributionType.SELL ? (\n \n {(typedData as ContributionVente).marque == undefined ||\n (typedData as ContributionVente).marque == 'undefined'\n ? ''\n : (typedData as ContributionVente).marque}\n \n }\n title={t('brand')}\n />\n ) : null}\n\n {contributionType === ContributionType.LOST_PROPERTY ? (\n <>\n {(typedData as ContributionObjet).lieu}}\n title={t('where')}\n />\n {getReadableDate((typedData as ContributionObjet).date)}}\n title={t('when')}\n />\n \n ) : null}\n {contributionType === ContributionType.CARPOOL ? (\n <>\n \n \n \n \n ) : null}\n {contributionEvenement ? (\n <>\n {contributionEvenement.cagnotte != undefined &&\n contributionEvenement.cagnotte != 'undefined' &&\n contributionEvenement.cagnotte != '' && (\n openURL(contributionEvenement.cagnotte)}>\n {contributionEvenement.cagnotte}\n \n }\n />\n )}\n \n \n \n {contributionEvenement.url && (\n Linking.openURL(formatUrl(contributionEvenement.url))}>\n \n {formatUrl(contributionEvenement.url)}\n \n \n }\n title={t('event_url')}\n flex=\"column\"\n />\n )}\n {contributionEvenement.place && (\n \n )}\n \n \n \n \n {contribution?.userIdCreateurNavigation.id === user.id && (\n <>\n \n exportEventToPdf()}\n style={{ marginBottom: 10 }}\n />\n {contributionEvenement.contribution.notifActivated && (\n recallNotification()}\n onPressButton2={() => {}}\n style={[globalStyle.button, globalStyle.button_light, globalStyle.button_content]}\n >\n \n \n {t('recall_notification')}\n \n \n )}\n \n }\n title={t('export_results')}\n />\n \n )}\n \n ) : null}\n {contributionType !== ContributionType.SUGGESTION && (\n \n )\n .contribution\n }\n monocolor={true}\n />\n \n }\n title={t('who_can_see')}\n />\n )}\n {canBeInteresting ? (\n <>\n setShowInterestedPeople(!showInterestedPeople)}>\n {t('available_soon')}\n )\n }\n title={t('interested_people')}\n />\n \n {showInterestedPeople && }\n \n ) : null}\n {!isAnonymous(typedData, contributionType) &&\n contribution?.userIdCreateurNavigation !== undefined &&\n contribution?.userIdCreateurNavigation?.aspNetUsers?.deletedAt === null && (\n \n )}\n {canBeInteresting && (\n \n )}\n\n {!!contribution?.commentsActivated && }\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n flexDirection: 'column',\n },\n bottomContentContainer: { flexDirection: 'row', justifyContent: 'flex-end', margin: 18 },\n simpleColumnDetailRowContainer: {\n padding: 6,\n borderBottomWidth: 1,\n borderBottomColor: FORM_LIGHT_GRAY,\n },\n underImageContent: {\n flexDirection: 'row',\n paddingTop: 10,\n paddingLeft: 10,\n paddingRight: 10,\n width: isMobile() ? undefined : 540,\n },\n underImageContentText: { width: isMobile() ? undefined : 200, textAlign: 'right' },\n userSubRow: { flex: 1 },\n userName: { width: isMobile() ? undefined : 200, textAlign: 'right' },\n chipContainer: { flexDirection: 'row', flexWrap: 'wrap', width: '100%' },\n});\n","import React from 'react';\nimport { createMaterialTopTabNavigator } from '@react-navigation/material-top-tabs';\nimport { ContributionListScreen } from './contribution/ContributionListScreen';\nimport { t } from '../../services/translations';\nimport { ContributionType } from '../../types';\nimport { GetContributionsMode } from '../../services/api/getContributionsMode';\nimport { isMobile } from '../../services/utils';\nimport { ScreenNames } from '../../ScreenNames';\nimport { BACKGROUND_COLOR } from '../../styles/appColor';\n\nexport function LoggedInHomeScreen(props: { navigation }) {\n const Tab = createMaterialTopTabNavigator();\n\n return (\n \n \n \n \n );\n}\n","import React from 'react';\nimport { AppScreen } from '../../../components/containers/AppScreen';\nimport { ScrollView, TouchableOpacity, View } from 'react-native';\nimport AppText, { Mode } from '../../../components/atomic/AppText';\nimport { t } from '../../../services/translations';\nimport { globalStyle } from '../../../styles/globalStyle';\nimport { PRIMARY_COLOR } from '../../../styles/appColor';\nimport { ScreenNames } from '../../../ScreenNames';\nimport { Space1, Space2 } from '../../../styles/spaces';\nimport { DARK_GRAY } from '../../../styles/appColor';\nimport { hasLicenceExternalScreen, hasLicenceOrganizationalChart } from '../../../services/licences';\nimport { isMobile, openURL } from '../../../services/utils';\nimport useLoggedUser from '../../../hooks/useLoggedUser';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\n\nfunction ItemRowScreenOpener(props: {\n disabled?: boolean;\n target: string;\n title: string;\n navigation: any;\n icon?: string;\n}) {\n return props.navigation.navigate(props.target)} {...props} />;\n}\n\nfunction ItemRow(props: { disabled?: boolean; title: string; onPress: () => void; icon?: string }) {\n return (\n \n \n {props.icon && }\n \n {props.title}\n \n\n \n \n \n );\n}\n\nexport function CompanyAdminMainScreen(props: { navigation: any }) {\n const user = useLoggedUser();\n const isAdmin = user.lovIdType === 13;\n\n return (\n \n \n \n \n {isAdmin && (\n <>\n \n \n \n )}\n \n {isAdmin && (\n <>\n \n \n \n )}\n \n {isAdmin && hasLicenceOrganizationalChart(user) && (\n \n )}\n \n \n {isAdmin && !isMobile() && (\n <>\n \n {hasLicenceExternalScreen(user) && (\n \n )}\n \n \n )}\n \n openURL(\n 'https://support-konecteam.notion.site/Guide-Responsable-Administrateur-a5a43f20354d4b1d829da8be7ab56f49?pvs=4'\n )\n }\n icon=\"book\"\n />\n {isAdmin && user.entreprise?.registerCode && (\n \n \n \n {t('company_code')}\n \n \n \n {user.entreprise.registerCode}\n \n \n )}\n \n \n );\n}\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { View } from 'react-native';\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';\nimport { t } from '../../services/translations';\nimport { AppButton, Type } from '../atomic/AppButton';\nimport { FileErrorMessage, FilePicker } from '../atomic/FilePicker';\nimport { TextFormField } from '../atomic/FormField';\n\nexport type OrganizationalChartFormProps = {\n initialValues?: {\n label?: string;\n fileName?: string;\n };\n onSubmit: (args: { label: string; file: any }) => Promise;\n};\n\nexport function OrganizationalChartForm({ initialValues, onSubmit }: OrganizationalChartFormProps) {\n const [label, setLabel] = useState('');\n const [file, setFile] = useState(undefined);\n const [defaultFilename, setDefaultFilename] = useState(undefined);\n const [fileError, setFileError] = useState(undefined);\n\n // Check form validity\n const isFormReady = useMemo(() => {\n let isFormReady = true;\n isFormReady = isFormReady && label.length > 0;\n isFormReady = isFormReady && (file !== undefined || defaultFilename !== undefined);\n isFormReady = isFormReady && fileError === undefined;\n\n return isFormReady;\n }, [label, file, fileError]);\n\n // Submit form\n const handleSubmit = useCallback(() => {\n return onSubmit({\n label,\n file,\n });\n }, [onSubmit, label, file]);\n\n // Update form datas\n useEffect(() => {\n if (initialValues?.label) {\n setLabel(initialValues.label);\n }\n\n if (initialValues?.fileName) {\n setDefaultFilename(initialValues.fileName);\n }\n }, [initialValues]);\n\n return (\n \n \n {\n setFile(file);\n setDefaultFilename(undefined);\n }}\n file={file}\n setError={setFileError}\n maxSizeMB={10}\n defaultFilename={defaultFilename}\n allowedExtensions={['png', 'jpg', 'jpeg', 'bmp', 'gif', 'webp', 'pdf']}\n />\n \n \n \n \n );\n}\n","import axios from './base';\nimport { headers } from './base';\nimport { apiUrlBase } from '../../../configuration';\nimport { OrganizationalChart } from '../../entities/OrganizationalChart';\nimport { UserSaved } from '../storage';\n\nexport async function getOrganizationalCharts(user: UserSaved): Promise {\n return axios\n .get(`${apiUrlBase}OrganizationalChart`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function getOrganizationalChartDetails(user: UserSaved, id: number): Promise {\n return axios\n .get(`${apiUrlBase}OrganizationalChart/${id}`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function createOrganizationalChart(\n user: UserSaved,\n label: string,\n file: any\n): Promise {\n let formData = new FormData();\n formData.append('label', label);\n formData.append('file', file);\n\n return axios\n .post(`${apiUrlBase}OrganizationalChart`, formData, {\n headers: headers(user.token, 'multipart/form-data'),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function updateOrganizationalChart(\n user: UserSaved,\n id: number,\n label: string,\n file: any\n): Promise {\n let formData = new FormData();\n formData.append('label', label);\n formData.append('file', file);\n\n return axios\n .put(`${apiUrlBase}OrganizationalChart/${id}`, formData, {\n headers: headers(user.token, 'multipart/form-data'),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function updateOrganizationalChartOrder(\n user: UserSaved,\n id: number,\n index: number\n): Promise {\n return axios\n .put(\n `${apiUrlBase}OrganizationalChart/${id}/order`,\n { index },\n {\n headers: headers(user.token),\n }\n )\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function deleteOrganizationalChart(user: UserSaved, id: number): Promise {\n return axios\n .delete(`${apiUrlBase}OrganizationalChart/${id}`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n","import { useNavigation } from '@react-navigation/native';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { AppScreen } from '../../../../components/containers/AppScreen';\nimport { OrganizationalChartForm } from '../../../../components/molecules/OrganizationalChartForm';\nimport { createOrganizationalChart } from '../../../../services/api/organizational.chart.api';\nimport { t } from '../../../../services/translations';\nimport { alertInfo } from '../../../../services/utils';\nimport { setContributionsListNeedsRefresh, setLoading } from '../../../../store/action';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\n\nexport default function CreateOrganizationalChartScreen() {\n const [isLoading, setIsLoading] = useState(false);\n const user = useLoggedUser();\n const navigation = useNavigation();\n const dispatch = useDispatch();\n\n // Submit form\n const handleSubmit = useCallback(\n async ({ label, file }: { label: string; file: any }) => {\n setIsLoading(true);\n\n try {\n await createOrganizationalChart(user, label, file);\n dispatch(setContributionsListNeedsRefresh(true));\n navigation.goBack();\n } catch (e) {\n alertInfo(t('unknown_error'));\n } finally {\n setIsLoading(false);\n }\n },\n [user]\n );\n\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n return (\n \n \n \n );\n}\n","import { ScreenNames } from '../ScreenNames';\nimport { navigationRef } from '../services/utils';\n\nexport function navigateToAdminOrganizationalChart() {\n navigationRef.current?.navigate(ScreenNames.OrganizationalChartAdmin);\n}\n\nexport function navigateToAdminCreateOrganizationalChart() {\n navigationRef.current?.navigate(ScreenNames.OrganizationalChartAdminCreate);\n}\n\nexport function navigateToAdminUpdateOrganizationalChart(id: number) {\n navigationRef.current?.navigate(ScreenNames.OrganizationalChartAdminUpdate, {\n id,\n });\n}\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { Pressable, StyleSheet, Text, View } from 'react-native';\nimport DraggableFlatList from 'react-native-draggable-flatlist';\nimport { TouchableOpacity } from 'react-native-gesture-handler';\nimport Feather from 'react-native-vector-icons/Feather';\nimport { useDispatch } from 'react-redux';\nimport Separator from '../../../../components/atomic/Separator';\nimport { DefaultBackground } from '../../../../components/containers/AppScreen';\nimport { TwoActionsGenericPopup } from '../../../../components/containers/TwoActionsButtonPopup';\nimport { OrganizationalChart } from '../../../../entities/OrganizationalChart';\nimport {\n deleteOrganizationalChart,\n getOrganizationalCharts,\n updateOrganizationalChartOrder,\n} from '../../../../services/api/organizational.chart.api';\nimport { t } from '../../../../services/translations';\nimport { alertInfo, isMobile } from '../../../../services/utils';\nimport { setLoading } from '../../../../store/action';\nimport { ALERT_COLOR, DARK_GRAY, PRIMARY_COLOR } from '../../../../styles/appColor';\nimport { FONT_FAMILY_DEFAULT } from '../../../../styles/globalStyle';\nimport {\n navigateToAdminCreateOrganizationalChart,\n navigateToAdminUpdateOrganizationalChart,\n} from '../../../../utils/OrganizationalChart';\nimport { FloatingButtons } from '../../contribution/FloatingButtons';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport useContributionListRefresh from '../../../../hooks/useContributionListRefresh';\nimport { useMutation, useQuery } from '@tanstack/react-query';\n\nexport default function ListOrganizationalChartsScreen() {\n const [items, setItems] = useState([]);\n const user = useLoggedUser();\n const dispatch = useDispatch();\n\n const {\n data,\n isLoading,\n refetch: refresh,\n } = useQuery(['organizational-charts', user?.id], () => getOrganizationalCharts(user), {\n onError: () => {\n alertInfo(t('unknown_error'));\n },\n onSuccess: (data) => {\n setItems(data);\n },\n });\n\n const { mutateAsync: updateOrder } = useMutation({\n mutationFn: async (args: { id: number; index: number }) =>\n updateOrganizationalChartOrder(user, args.id, args.index),\n onSuccess: (newEntries) => {\n setItems(newEntries);\n },\n });\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n // Refresh after an update\n useContributionListRefresh(refresh);\n\n const handleDelete = useCallback(\n async (id: number) => {\n await deleteOrganizationalChart(user, id);\n refresh();\n },\n [user, refresh]\n );\n const padding = isMobile() ? 10 : 30;\n\n return (\n \n {\n const itemId = items[from].id;\n setItems(data);\n updateOrder({ id: itemId, index: to });\n }}\n scrollEnabled\n style={styles.scrollView}\n containerStyle={styles.scrollView}\n contentContainerStyle={[\n styles.scrollViewContent,\n {\n paddingHorizontal: padding,\n },\n ]}\n renderItem={({ item, drag }) => (\n \n \n \n \n navigateToAdminUpdateOrganizationalChart(item.id)}\n >\n {item.label}\n \n \n handleDelete(item.id)}\n onPressButton2={() => {}}\n >\n \n \n \n )}\n keyExtractor={(item) => item.id.toString()}\n ItemSeparatorComponent={Separator}\n />\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n scrollView: {\n flex: 1,\n },\n scrollViewContent: {\n paddingTop: 10,\n paddingBottom: 80,\n },\n itemContainer: {\n flexDirection: 'row',\n width: '100%',\n alignItems: 'center',\n },\n itemActions: {\n color: PRIMARY_COLOR,\n minWidth: 24,\n },\n actionIcon: {\n marginRight: 10,\n },\n contentContainer: {\n marginVertical: 10,\n flexDirection: 'row',\n justifyContent: 'space-between',\n flex: 1,\n },\n itemLabel: {\n fontFamily: FONT_FAMILY_DEFAULT.bold,\n fontSize: 16,\n color: DARK_GRAY,\n },\n editButton: {\n marginRight: 10,\n },\n});\n","import { useNavigation } from '@react-navigation/core';\nimport { t } from 'i18next';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { AppScreen } from '../../../../components/containers/AppScreen';\nimport { OrganizationalChartForm } from '../../../../components/molecules/OrganizationalChartForm';\nimport {\n getOrganizationalChartDetails,\n updateOrganizationalChart,\n} from '../../../../services/api/organizational.chart.api';\nimport { alertInfo } from '../../../../services/utils';\nimport { setContributionsListNeedsRefresh, setLoading } from '../../../../store/action';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\n\nexport type UpdateOrganizationalChartScreenProps = {\n route: {\n params: {\n id: string;\n };\n };\n};\n\nexport default function UpdateOrganizationalChartScreen({ route }: UpdateOrganizationalChartScreenProps) {\n const id = parseInt(route.params.id);\n const user = useLoggedUser();\n const dispatch = useDispatch();\n const navigation = useNavigation();\n\n const [isLoading, setIsLoading] = useState(false);\n const [initialValues, setInitialValues] = useState<{\n label?: string;\n fileName?: string;\n }>({});\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n\n try {\n const item = await getOrganizationalChartDetails(user, id);\n setInitialValues({ label: item.label, fileName: item.file.name });\n } catch (e) {\n alertInfo(t('unknown_error'));\n } finally {\n setIsLoading(false);\n }\n }, [user]);\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n // Submit form\n const handleSubmit = useCallback(\n async ({ label, file }: { label: string; file: any }) => {\n setIsLoading(true);\n\n try {\n await updateOrganizationalChart(user, id, label, file);\n dispatch(setContributionsListNeedsRefresh(true));\n navigation.goBack();\n } catch (e) {\n alertInfo(t('unknown_error'));\n } finally {\n setIsLoading(false);\n }\n },\n [id, user]\n );\n\n return (\n \n \n \n );\n}\n","import React from 'react';\nimport { createStackNavigator } from '@react-navigation/stack';\nimport { ScreenNames } from '../ScreenNames';\nimport CreateOrganizationalChartScreen from '../screens/loggedIn/admin/organizationalChart/CreateOrganizationalChartScreen';\nimport ListOrganizationalChartsScreen from '../screens/loggedIn/admin/organizationalChart/ListOrganizationalChartsScreen';\nimport UpdateOrganizationalChartScreen from '../screens/loggedIn/admin/organizationalChart/UpdateOrganizationalChartScreen';\nimport { t } from '../services/translations';\nimport BackIcon from '../components/atomic/BackIcon';\nimport { BACKGROUND_COLOR } from '../styles/appColor';\n\nconst Stack = createStackNavigator();\n\nexport function OrganizationalChartAdminRouter() {\n return (\n \n \n \n \n \n );\n}\n","import React, { useCallback } from 'react';\nimport { FlatList, StyleSheet, TouchableOpacity, View } from 'react-native';\nimport { useField } from 'formik';\nimport UserAutocomplete from '../UserAutocomplete';\nimport { FormField } from '../FormField';\nimport { t } from '../../../services/translations';\nimport { User } from '../../../entities/User';\nimport { ProfileRow } from '../ProfileRow';\nimport { PRIMARY_COLOR } from '../../../styles/appColor';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\n\nexport type UserAutocompleteFieldProps = {\n name: string;\n lockedUsers?: number[];\n};\n\nexport function UserAutocompleteField({ name, lockedUsers }: UserAutocompleteFieldProps) {\n const [field, , helper] = useField(name);\n const users: User[] = field.value || [];\n\n const removeUser = useCallback((user: User) => helper.setValue(users.filter((e) => e.id !== user.id)), [users]);\n\n return (\n <>\n helper.setValue([...users, user])}\n selectedIds={Array.from(users.map((e) => e.id))}\n />\n \n (\n \n \n \n \n\n {(!lockedUsers || !lockedUsers.includes(u.item.id)) && (\n removeUser(u.item)}>\n \n \n )}\n \n )}\n keyExtractor={(item) => item.id.toString()}\n />\n \n );\n}\n\nconst styles = StyleSheet.create({\n profileRow: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n profileContainer: {\n flex: 1,\n },\n trashIcon: {\n marginLeft: 10,\n marginRight: 24,\n },\n});\n","import React, { useMemo } from 'react';\nimport { View } from 'react-native';\nimport * as Yup from 'yup';\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';\nimport { t } from '../../services/translations';\nimport SubmitButton from '../atomic/formik/SubmitButton';\nimport TextField from '../atomic/formik/TextField';\nimport { UserAutocompleteField } from '../atomic/formik/UserAutocompleteField';\nimport useLoggedUser from '../../hooks/useLoggedUser';\n\nexport const schema = Yup.object({\n label: Yup.string().min(1).required(t('field_required')),\n});\n\nexport type CompanyGroupFormFieldsProps = {\n isEditing?: boolean;\n};\n\nexport function CompanyGroupFormFields({ isEditing }: CompanyGroupFormFieldsProps) {\n const user = useLoggedUser();\n const lockedUsers = useMemo(() => (isEditing ? [] : [user.id]), [isEditing, user]);\n\n return (\n \n \n \n \n \n \n \n );\n}\n","import axios from './base';\nimport { headers } from './base';\nimport { apiUrlBase } from '../../../configuration';\nimport { EntrepriseGroup } from '../../entities/EntrepriseGroup';\nimport { UserSaved } from '../storage';\nimport { EntrepriseGroupCreate } from '../../entities/EntrepriseGroupCreate';\nimport { EntrepriseGroupUpdate } from '../../entities/EntrepriseGroupUpdate';\n\nexport async function getCompanyGroups(user: UserSaved): Promise {\n return axios\n .get(`${apiUrlBase}EntrepriseGroup`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function getCompanyGroupDetails(user: UserSaved, id: number): Promise {\n return axios\n .get(`${apiUrlBase}EntrepriseGroup/${id}`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function createCompanyGroup(user: UserSaved, body: EntrepriseGroupCreate): Promise {\n return axios\n .post(`${apiUrlBase}EntrepriseGroup`, body, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function updateCompanyGroup(\n user: UserSaved,\n id: number,\n body: EntrepriseGroupUpdate\n): Promise {\n return axios\n .put(`${apiUrlBase}EntrepriseGroup/${id}`, body, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function deleteCompanyGroup(user: UserSaved, id: number): Promise {\n return axios\n .delete(`${apiUrlBase}EntrepriseGroup/${id}`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n","import React, { useEffect } from 'react';\nimport { useNavigation } from '@react-navigation/native';\nimport { useMutation } from '@tanstack/react-query';\nimport { useDispatch } from 'react-redux';\nimport Form from '../../../../components/atomic/formik/Form';\nimport { AppScreen } from '../../../../components/containers/AppScreen';\nimport { CompanyGroupFormFields, schema } from '../../../../components/molecules/CompanyGroupFormFields';\nimport { User } from '../../../../entities/User';\nimport { createCompanyGroup } from '../../../../services/api/company.group.api';\nimport { t } from '../../../../services/translations';\nimport { alertInfo } from '../../../../services/utils';\nimport { setContributionsListNeedsRefresh } from '../../../../store/action';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\n\nexport default function CreateCompanyGroupScreen() {\n const user = useLoggedUser();\n const navigation = useNavigation();\n const dispatch = useDispatch();\n\n const { mutateAsync, isError } = useMutation({\n mutationFn: async (values: { label: string; users: User[] }) => {\n try {\n await createCompanyGroup(user, { label: values.label, userIds: values.users.map((e) => e.id) });\n dispatch(setContributionsListNeedsRefresh(true));\n navigation.goBack();\n } catch (e) {\n alertInfo(t('unknown_error'));\n }\n },\n });\n\n // Display error message if needed\n useEffect(() => {\n if (isError) {\n alertInfo(t('error_occurred'));\n }\n }, [isError]);\n\n return (\n \n

\n \n \n \n );\n}\n","import { ScreenNames } from '../ScreenNames';\nimport { navigationRef } from '../services/utils';\n\nexport function navigateToAdminCompanyGroup() {\n navigationRef.current?.navigate(ScreenNames.CompanyGroupAdmin);\n}\n\nexport function navigateToAdminCreateCompanyGroup() {\n navigationRef.current?.navigate(ScreenNames.CompanyGroupAdminCreate);\n}\n\nexport function navigateToAdminUpdateCompanyGroup(id: number) {\n navigationRef.current?.navigate(ScreenNames.CompanyGroupAdminUpdate, {\n id,\n });\n}\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { FlatList, StyleSheet, Text, View } from 'react-native';\nimport { TouchableOpacity } from 'react-native-gesture-handler';\nimport Feather from 'react-native-vector-icons/Feather';\nimport { useDispatch } from 'react-redux';\nimport Separator from '../../../../components/atomic/Separator';\nimport { DefaultBackground } from '../../../../components/containers/AppScreen';\nimport { TwoActionsGenericPopup } from '../../../../components/containers/TwoActionsButtonPopup';\nimport { EntrepriseGroup } from '../../../../entities/EntrepriseGroup';\nimport { deleteCompanyGroup, getCompanyGroups } from '../../../../services/api/company.group.api';\nimport { t } from '../../../../services/translations';\nimport { alertInfo, isMobile } from '../../../../services/utils';\nimport { setLoading } from '../../../../store/action';\nimport { ALERT_COLOR, DARK_GRAY, PRIMARY_COLOR } from '../../../../styles/appColor';\nimport { FONT_FAMILY_DEFAULT } from '../../../../styles/globalStyle';\nimport { navigateToAdminCreateCompanyGroup, navigateToAdminUpdateCompanyGroup } from '../../../../utils/CompanyGroup';\nimport { FloatingButtons } from '../../contribution/FloatingButtons';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport useContributionListRefresh from '../../../../hooks/useContributionListRefresh';\n\nexport default function ListCompanyGroupsScreen() {\n const [isLoading, setIsLoading] = useState(false);\n const [items, setItems] = useState([]);\n const user = useLoggedUser();\n const dispatch = useDispatch();\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n\n try {\n setItems(await getCompanyGroups(user));\n } catch (e) {\n alertInfo(t('unknown_error'));\n } finally {\n setIsLoading(false);\n }\n }, [user]);\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n // Refresh after an update\n useContributionListRefresh(refresh);\n\n const handleDelete = useCallback(\n async (id: number) => {\n await deleteCompanyGroup(user, id);\n refresh();\n },\n [user]\n );\n\n const padding = isMobile() ? 10 : 30;\n\n return (\n \n (\n \n navigateToAdminUpdateCompanyGroup(item.id)}\n >\n {item.label}\n \n \n handleDelete(item.id)}\n onPressButton2={() => {}}\n >\n \n \n \n )}\n keyExtractor={(item) => item.id.toString()}\n ItemSeparatorComponent={() => }\n />\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n itemContainer: {\n flexDirection: 'row',\n width: '100%',\n alignItems: 'center',\n },\n contentContainer: {\n flex: 1,\n marginVertical: 10,\n flexDirection: 'row',\n justifyContent: 'space-between',\n },\n itemLabel: {\n fontFamily: FONT_FAMILY_DEFAULT.bold,\n fontSize: 16,\n color: DARK_GRAY,\n },\n editButton: {\n marginRight: 10,\n },\n});\n","import { useNavigation } from '@react-navigation/core';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { t } from 'i18next';\nimport React, { useEffect, useMemo } from 'react';\nimport { View } from 'react-native';\nimport { useDispatch } from 'react-redux';\nimport Form from '../../../../components/atomic/formik/Form';\nimport { AppScreen } from '../../../../components/containers/AppScreen';\nimport { CompanyGroupFormFields, schema } from '../../../../components/molecules/CompanyGroupFormFields';\nimport { User } from '../../../../entities/User';\nimport { getCompanyGroupDetails, updateCompanyGroup } from '../../../../services/api/company.group.api';\nimport { alertInfo } from '../../../../services/utils';\nimport { setContributionsListNeedsRefresh, setLoading } from '../../../../store/action';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\n\nexport type UpdateCompanyGroupScreenProps = {\n route: {\n params: {\n id: string;\n };\n };\n};\n\nexport default function UpdateCompanyGroupScreen({ route }: UpdateCompanyGroupScreenProps) {\n const id = parseInt(route.params.id);\n const user = useLoggedUser();\n const dispatch = useDispatch();\n const navigation = useNavigation();\n\n const {\n data,\n isLoading: isLoadingDetails,\n isFetched,\n isError,\n } = useQuery(['companyGroupDetails', id], () => getCompanyGroupDetails(user, id), { cacheTime: 0 });\n\n const mutation = useMutation({\n mutationFn: async (values: { label: string; users: User[] }) => {\n try {\n await updateCompanyGroup(user, id, { label: values.label, userIds: values.users.map((e) => e.id) });\n dispatch(setContributionsListNeedsRefresh(true));\n navigation.goBack();\n } catch (e) {\n alertInfo(t('unknown_error'));\n }\n },\n });\n\n const isLoading = isLoadingDetails || mutation.isLoading;\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n const initialValues = useMemo(\n () => ({\n label: data?.label || '',\n users: data?.users.map((e) => e.user) || [],\n }),\n [data]\n );\n\n // Display error message if needed\n useEffect(() => {\n if (isError) {\n alertInfo(t('error_occurred'));\n }\n }, [isError]);\n\n return isFetched ? (\n \n \n \n \n \n ) : (\n \n );\n}\n","import React from 'react';\nimport { createStackNavigator } from '@react-navigation/stack';\nimport { ScreenNames } from '../ScreenNames';\nimport CreateCompanyGroupScreen from '../screens/loggedIn/admin/companyGroup/CreateCompanyGroupScreen';\nimport ListCompanyGroupsScreen from '../screens/loggedIn/admin/companyGroup/ListCompanyGroupsScreen';\nimport UpdateCompanyGroupScreen from '../screens/loggedIn/admin/companyGroup/UpdateCompanyGroupScreen';\nimport { t } from '../services/translations';\nimport BackIcon from '../components/atomic/BackIcon';\nimport { BACKGROUND_COLOR } from '../styles/appColor';\n\nconst Stack = createStackNavigator();\n\nexport function CompanyGroupAdminRouter() {\n return (\n \n \n \n \n \n );\n}\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { StyleSheet, Text, View } from 'react-native';\nimport { TouchableOpacity } from 'react-native-gesture-handler';\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';\nimport Feather from 'react-native-vector-icons/Feather';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { AppScreen } from '../../../../components/containers/AppScreen';\nimport { User } from '../../../../entities/User';\nimport { UserSubAdminMap } from '../../../../entities/UserSubAdminMap';\nimport { ScreenNames } from '../../../../ScreenNames';\nimport { getUserSubAdmins } from '../../../../services/api/usersubadmin';\nimport { RootState } from '../../../../services/storage';\nimport { t } from '../../../../services/translations';\nimport { alertInfo, navigationRef } from '../../../../services/utils';\nimport { setLoading, setValidationMapListNeedsRefresh } from '../../../../store/action';\nimport { DARK_GRAY, LIGHT_GRAY, PRIMARY_COLOR } from '../../../../styles/appColor';\nimport { FONT_FAMILY_DEFAULT } from '../../../../styles/globalStyle';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\n\nexport default function ListValidationMapScreen() {\n const [isLoading, setIsLoading] = useState(false);\n const [items, setItems] = useState();\n const user = useLoggedUser();\n const validationMapListNeedsRefresh = useSelector(\n (state) => !!state.validationMapListNeedsRefresh\n );\n const dispatch = useDispatch();\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n try {\n setItems(await getUserSubAdmins(user));\n } catch (e) {\n alertInfo(t('unknown_error'));\n } finally {\n setIsLoading(false);\n }\n }, [user]);\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n // Refresh after an update\n useEffect(() => {\n if (validationMapListNeedsRefresh) {\n refresh();\n dispatch(setValidationMapListNeedsRefresh(false));\n }\n }, [validationMapListNeedsRefresh, refresh]);\n\n return (\n \n {items && (\n \n \n \n {t('validation_map_all')}\n \n navigateToAdminUpdateSubAdmin('all', t('validation_map_all'), 0)}\n >\n \n \n \n \n \n \n \n {t('services')}\n \n \n {items.services.map((e) => (\n \n {e.name}\n 0 ? e.users : items.all} />\n navigateToAdminUpdateSubAdmin('services', e.name, e.id)}\n >\n \n \n \n ))}\n \n \n \n \n \n \n {t('geo_sites')}\n \n \n {items.siteGeo.map((e) => (\n \n {e.name}\n 0 ? e.users : items.all} />\n navigateToAdminUpdateSubAdmin('sitegeo', e.name, e.id)}\n >\n \n \n \n ))}\n \n \n \n \n \n \n {t('groups')}\n \n \n {items.groups.map((e) => (\n \n {e.name}\n 0 ? e.users : items.all} />\n navigateToAdminUpdateSubAdmin('groups', e.name, e.id)}\n >\n \n \n \n ))}\n \n \n \n \n )}\n \n );\n}\n\nfunction NameList(props: { users: User[]; keyProps: string }) {\n return (\n \n {props.users.map((user, i) => (\n \n {user.prenom} {user.nom}\n \n ))}\n \n );\n}\n\nfunction navigateToAdminUpdateSubAdmin(type: 'all' | 'services' | 'sitegeo' | 'groups', key: string, id: number) {\n navigationRef.current?.navigate(ScreenNames.ValidationMapUpdate, {\n type,\n key,\n id,\n });\n}\n\nconst styles = StyleSheet.create({\n nameListView: {\n display: 'flex',\n flexDirection: 'row',\n flex: 1,\n flexWrap: 'wrap',\n marginLeft: 20,\n marginRight: 20,\n },\n subContainerTitle: {\n alignItems: 'flex-end',\n flexDirection: 'row',\n flex: 0.2,\n // width: '100%',\n paddingTop: 20,\n paddingBottom: 20,\n borderBottomColor: LIGHT_GRAY,\n borderBottomWidth: StyleSheet.hairlineWidth,\n },\n subContainer: {\n flexDirection: 'column',\n width: '100%',\n paddingTop: 20,\n paddingBottom: 20,\n },\n lineContainer: {\n alignItems: 'flex-end',\n flexDirection: 'row',\n width: '100%',\n paddingTop: 10,\n paddingBottom: 10,\n },\n itemContainer: {\n flexDirection: 'row',\n width: '100%',\n alignItems: 'center',\n },\n contentContainer: {\n marginLeft: 'auto',\n marginRight: 20,\n },\n title: {\n fontFamily: FONT_FAMILY_DEFAULT.bold,\n fontSize: 18,\n color: PRIMARY_COLOR,\n },\n itemLabel: {\n fontFamily: FONT_FAMILY_DEFAULT.bold,\n fontSize: 16,\n color: DARK_GRAY,\n flex: 0.3,\n },\n itemLabelName: {\n fontFamily: FONT_FAMILY_DEFAULT.bold,\n fontSize: 16,\n color: DARK_GRAY,\n paddingRight: 30,\n },\n editButton: {\n marginRight: 10,\n },\n});\n","import { useNavigation } from '@react-navigation/core';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { FlatList, StyleSheet, Text, View } from 'react-native';\nimport { TouchableOpacity } from 'react-native-gesture-handler';\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';\nimport { useDispatch } from 'react-redux';\nimport { AppButton, Type } from '../../../../components/atomic/AppButton';\nimport { FormField } from '../../../../components/atomic/FormField';\nimport { ProfileRow } from '../../../../components/atomic/ProfileRow';\nimport UserAutocomplete from '../../../../components/atomic/UserAutocomplete';\nimport { AppScreen } from '../../../../components/containers/AppScreen';\nimport { User } from '../../../../entities/User';\nimport { getUsersByUserSubAdmin, updateValidationMap } from '../../../../services/api/usersubadmin';\nimport { alertInfo } from '../../../../services/utils';\nimport { setLoading, setValidationMapListNeedsRefresh } from '../../../../store/action';\nimport { DARK_GRAY, PRIMARY_COLOR } from '../../../../styles/appColor';\nimport { t } from '../../../../services/translations';\nimport { FONT_FAMILY_DEFAULT } from '../../../../styles/globalStyle';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\n\ntype UpdateValidationMapProps = {\n route: {\n params: {\n type: 'all' | 'services' | 'sitegeo' | 'groups';\n key: string;\n id: string;\n };\n };\n};\n\ntype ValidationMapFormProps = {\n baseUsers: User[];\n onSubmit: (userIds: number[]) => Promise;\n};\n\nexport default function UpdateValidationMapScreen({ route }: UpdateValidationMapProps) {\n const id = parseInt(route.params.id);\n const user = useLoggedUser();\n const dispatch = useDispatch();\n const navigation = useNavigation();\n\n const [isLoading, setIsLoading] = useState(false);\n const [users, setUsers] = useState();\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n\n try {\n const item = await getUsersByUserSubAdmin(user, id, route.params.type);\n setUsers(item);\n } catch (e) {\n alertInfo(t('unknown_error'));\n } finally {\n setIsLoading(false);\n }\n }, [user]);\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n // Submit form\n const handleSubmit = useCallback(\n async (userIds: number[]) => {\n setIsLoading(true);\n\n try {\n await updateValidationMap(user, id, route.params.type, userIds);\n dispatch(setValidationMapListNeedsRefresh(true));\n navigation.goBack();\n } catch (e) {\n alertInfo(t('unknown_error'));\n } finally {\n setIsLoading(false);\n }\n },\n [id, user, route.params.type]\n );\n\n return (\n \n {route.params.key}\n {users && }\n \n );\n}\n\nfunction ValidationMapForm({ baseUsers, onSubmit }: ValidationMapFormProps) {\n const [users, setUsers] = useState(baseUsers);\n\n const removeUser = useCallback((user: User) => setUsers(users.filter((e) => e.id !== user.id)), [users]);\n\n // Submit form\n const handleSubmit = useCallback(() => {\n return onSubmit(users.map((user) => user.id));\n }, [onSubmit, users]);\n\n // Update form datas\n useEffect(() => {\n if (baseUsers) {\n setUsers(baseUsers);\n }\n }, [JSON.stringify(baseUsers)]);\n\n return (\n \n {\n if (users.map((u) => u.id).includes(user.id)) {\n return;\n }\n setUsers([...users, user]);\n }}\n selectedIds={Array.from(users.map((e) => e.id))}\n />\n \n (\n \n \n \n \n removeUser(u.item)}>\n \n \n \n )}\n keyExtractor={(item) => item.id.toString()}\n />\n\n \n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n profileRow: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n profileContainer: {\n flex: 1,\n },\n trashIcon: {\n marginLeft: 10,\n marginRight: 24,\n },\n title: {\n fontFamily: FONT_FAMILY_DEFAULT.bold,\n fontSize: 18,\n color: DARK_GRAY,\n paddingTop: 20,\n paddingBottom: 20,\n },\n});\n","import React from 'react';\nimport { createStackNavigator } from '@react-navigation/stack';\nimport { ScreenNames } from '../ScreenNames';\nimport ListValidationMapScreen from '../screens/loggedIn/admin/validationMap/ListValidationMapScreen';\nimport UpdateValidationMapScreen from '../screens/loggedIn/admin/validationMap/UpdateValidationMapScreen';\nimport { t } from '../services/translations';\nimport BackIcon from '../components/atomic/BackIcon';\nimport { BACKGROUND_COLOR } from '../styles/appColor';\n\nconst Stack = createStackNavigator();\n\nexport function ValidationMapAdministrationRoute() {\n return (\n \n \n \n \n );\n}\n","import axios from './base';\nimport { apiUrlBase } from '../../../configuration';\nimport { CompanyStatistics } from '../../entities/CompanyStatistics';\nimport { ContributionsCountByIntervalStatistics } from '../../entities/ContributionsCountByIntervalStatistics';\nimport { ContributionsCountByIntervalStatisticsFilter } from '../../entities/ContributionsCountByIntervalStatisticsFilter';\nimport { NewsCountByIntervalStatisticsFilter } from '../../entities/NewsCountByIntervalStatisticsFilter';\nimport { TopNewsStatistics } from '../../entities/TopNewsStatistics';\nimport { UserSaved } from '../storage';\nimport { headers } from './base';\nimport { GetTopContributionAuthorsFilters } from '../../entities/GetTopContributionAuthorsFilters';\nimport { GetTopAuthors } from '../../entities/GetTopAuthors';\n\nexport async function getCompanyStatistics(user: UserSaved): Promise {\n return axios\n .get(`${apiUrlBase}statistics/company`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status === 200) {\n return response.data;\n } else {\n return null;\n }\n });\n}\n\nexport async function getTopNewsStatistics(user: UserSaved): Promise {\n return axios\n .get(`${apiUrlBase}statistics/top-news`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status === 200) {\n return response.data;\n } else {\n return null;\n }\n });\n}\n\nexport async function getNewsByIntervalStatistics(\n user: UserSaved,\n filters: NewsCountByIntervalStatisticsFilter\n): Promise {\n return axios\n .get(`${apiUrlBase}statistics/news-by-interval`, {\n headers: headers(user.token),\n params: filters,\n })\n .then((response) => {\n if (response.status === 200) {\n return response.data;\n } else {\n return null;\n }\n });\n}\n\nexport async function getContributionsCountByIntervalStatistics(\n user: UserSaved,\n filters: ContributionsCountByIntervalStatisticsFilter\n): Promise {\n return axios\n .get(`${apiUrlBase}statistics/contributions-by-interval`, {\n headers: headers(user.token),\n params: filters,\n })\n .then((response) => {\n if (response.status === 200) {\n return response.data;\n } else {\n return null;\n }\n });\n}\n\nexport async function getTopActuAuthors(\n user: UserSaved,\n filters: GetTopContributionAuthorsFilters\n): Promise {\n return axios\n .get(`${apiUrlBase}statistics/top-actu-authors`, {\n headers: headers(user.token),\n params: filters,\n })\n .then((response) => {\n if (response.status === 200) {\n return response.data;\n } else {\n return [];\n }\n });\n}\n\nexport async function getTopContributionAuthors(\n user: UserSaved,\n filters: GetTopContributionAuthorsFilters\n): Promise {\n return axios\n .get(`${apiUrlBase}statistics/top-contribution-authors`, {\n headers: headers(user.token),\n params: filters,\n })\n .then((response) => {\n if (response.status === 200) {\n return response.data;\n } else {\n return [];\n }\n });\n}\n","import React from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { PRIMARY_COLOR, PRIMARY_COLOR_LIGHT, SECONDARY_COLOR } from '../../styles/appColor';\nimport AppText, { Mode } from './AppText';\n\nexport type StatisticsSquareProps = {\n title: string;\n value: string | React.ReactNode;\n};\n\nexport default function StatisticsSquare({ title, value }: StatisticsSquareProps) {\n return (\n \n \n {title}\n \n \n {value}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n backgroundColor: '#fff',\n borderRadius: 10,\n padding: 10,\n margin: 10,\n width: 150,\n height: 150,\n justifyContent: 'space-around',\n alignItems: 'center',\n elevation: 5,\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 2,\n },\n shadowOpacity: 0.25,\n shadowRadius: 3.84,\n },\n title: {\n color: PRIMARY_COLOR_LIGHT,\n textAlign: 'center',\n },\n value: {\n color: PRIMARY_COLOR,\n textAlign: 'center',\n marginBottom: 0,\n fontSize: 16,\n },\n});\n","export enum ContributionsCountByIntervalStatisticsType {\n MONTH,\n YEAR,\n}\n\nexport interface ContributionsCountByIntervalStatisticsItem {\n date: string;\n count: number;\n}\n\nexport interface ContributionsCountByIntervalStatistics {\n type: ContributionsCountByIntervalStatisticsType;\n items: ContributionsCountByIntervalStatisticsItem[];\n}\n","import React, { useEffect, useRef, useState } from 'react';\nimport * as echarts from 'echarts/core';\nimport { LineChart } from 'echarts/charts';\nimport { GridComponent, TooltipComponent } from 'echarts/components';\nimport { format } from 'date-fns';\nimport { SVGRenderer, SvgChart } from '@wuba/react-native-echarts';\nimport {\n ContributionsCountByIntervalStatistics,\n ContributionsCountByIntervalStatisticsType,\n} from '../../entities/ContributionsCountByIntervalStatistics';\nimport { Platform, StyleSheet, View } from 'react-native';\nimport { GestureHandlerRootView } from 'react-native-gesture-handler';\nimport { ECBasicOption } from 'echarts/types/dist/shared';\nimport { dateLocale } from '../../services/translations';\nimport { match } from 'ts-pattern';\n\necharts.use([SVGRenderer, LineChart, GridComponent, TooltipComponent]);\n\nexport type ContributionsByIntervalLineChartProps = {\n data: ContributionsCountByIntervalStatistics | undefined;\n isLoading?: boolean;\n};\n\nfunction getOptionsFromData(data: ContributionsCountByIntervalStatistics | undefined, locale: Locale): ECBasicOption {\n if (!data) {\n return {\n xAxis: {\n type: 'category',\n data: [],\n },\n yAxis: {\n type: 'value',\n },\n series: [\n {\n data: [],\n type: 'line',\n },\n ],\n };\n } else {\n return {\n tooltip: {\n trigger: 'axis',\n },\n xAxis: {\n type: 'category',\n data: data.items.map((e) =>\n match(data.type)\n .with(ContributionsCountByIntervalStatisticsType.MONTH, () => format(new Date(e.date), 'MMMM', { locale }))\n .with(ContributionsCountByIntervalStatisticsType.YEAR, () => format(new Date(e.date), 'yyyy', { locale }))\n .otherwise(() => format(new Date(e.date), 'MMMM', { locale }))\n ),\n },\n yAxis: {\n type: 'value',\n },\n series: [\n {\n data: data.items.map((e) => e.count),\n type: 'line',\n },\n ],\n };\n }\n}\n\nexport function ContributionsByIntervalLineChart({ data, isLoading }: ContributionsByIntervalLineChartProps) {\n const [containerWidth, setContainerWidth] = useState(undefined);\n const [chart, setChart] = useState(undefined);\n const locale = dateLocale();\n\n const svgRef = useRef(null);\n useEffect(() => {\n let chart: echarts.ECharts | undefined;\n if (svgRef.current) {\n chart = echarts.init(svgRef.current, 'light', {\n renderer: 'svg',\n width: containerWidth,\n height: 400,\n });\n\n chart.setOption(getOptionsFromData(data, locale));\n\n if (!!isLoading) {\n chart.showLoading({ text: '' });\n }\n\n setChart(chart);\n }\n\n return () => chart?.dispose();\n }, []);\n\n useEffect(() => {\n chart?.setOption(getOptionsFromData(data, locale));\n }, [data]);\n\n useEffect(() => {\n if (chart) {\n if (!!isLoading) {\n chart.showLoading({ text: '' });\n } else {\n chart.hideLoading();\n }\n }\n }, [!!isLoading]);\n\n useEffect(() => {\n if (chart) {\n chart.resize({ width: containerWidth, height: 400 });\n }\n }, [containerWidth]);\n\n return (\n \n {\n setContainerWidth(event.nativeEvent.layout.width);\n }}\n >\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n },\n});\n","import React, { useEffect, useState } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { useQuery } from '@tanstack/react-query';\nimport { t } from '../../services/translations';\nimport { CompanyGeoSiteReduced, CompanyServiceReduced } from '../../services/api/company.api';\nimport { ContributionsByIntervalLineChart } from '../atomic/ContributionsByIntervalLineChart';\nimport { FormFieldPicker } from '../atomic/FormField';\nimport { getNewsByIntervalStatistics } from '../../services/api/statistics.api';\nimport { alertInfo } from '../../services/utils';\nimport useLoggedUser from '../../hooks/useLoggedUser';\n\nexport type NewsCountStatisticsProps = {\n years: {\n label: string;\n value: number;\n }[];\n services: CompanyServiceReduced[];\n siteGeos: CompanyGeoSiteReduced[];\n};\n\nexport function NewsCountStatistics({ years, services, siteGeos }: NewsCountStatisticsProps) {\n const user = useLoggedUser();\n\n const [year, setYear] = useState(null);\n const [contributionsServiceId, setContributionsServiceId] = useState(null);\n const [contributionsSiteGeoId, setContributionsSiteGeoId] = useState(null);\n\n const {\n data: contributionsData,\n isLoading: isLoadingContributions,\n isError,\n } = useQuery(['news-count-by-interval', year, contributionsServiceId, contributionsSiteGeoId], () =>\n getNewsByIntervalStatistics(user, {\n year,\n serviceId: contributionsServiceId,\n siteGeoId: contributionsSiteGeoId,\n })\n );\n\n // Display error message if needed\n useEffect(() => {\n if (isError) {\n alertInfo(t('error_occurred'));\n }\n }, [isError]);\n\n return (\n <>\n \n {\n setYear(!Number.isNaN(parseInt(value.toString())) ? parseInt(value.toString()) : null);\n }}\n data={years.map((year) => ({ label: year.label, value: year.value })) || []}\n title={t('time_interval')}\n defaultButtonText={t('since_launch')}\n />\n {\n setContributionsServiceId(!Number.isNaN(parseInt(value.toString())) ? parseInt(value.toString()) : null);\n }}\n data={\n services?.map((service) => ({\n label: service.libelle,\n value: service.id,\n })) || []\n }\n title={t('service')}\n />\n {\n setContributionsSiteGeoId(!Number.isNaN(parseInt(value.toString())) ? parseInt(value.toString()) : null);\n }}\n data={\n siteGeos?.map((siteGeo) => ({\n label: siteGeo.geoSite,\n value: siteGeo.id,\n })) || []\n }\n title={t('geo_site')}\n />\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n filtersContainer: {\n flexDirection: 'row',\n },\n filtersDropdown: {\n padding: 10,\n flex: 1,\n },\n});\n","import React, { useEffect, useState } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { useQuery } from '@tanstack/react-query';\nimport { t } from '../../services/translations';\nimport { CompanyGeoSiteReduced, CompanyServiceReduced } from '../../services/api/company.api';\nimport { ContributionsByIntervalLineChart } from '../atomic/ContributionsByIntervalLineChart';\nimport { FormFieldPicker } from '../atomic/FormField';\nimport { getContributionsCountByIntervalStatistics } from '../../services/api/statistics.api';\nimport { alertInfo } from '../../services/utils';\nimport { contributionTypeToText } from '../../services/api/contributions';\nimport { ContributionType } from '../../types';\nimport useLoggedUser from '../../hooks/useLoggedUser';\n\nexport type ContributionCountStatisticsProps = {\n years: {\n label: string;\n value: number;\n }[];\n services: CompanyServiceReduced[];\n siteGeos: CompanyGeoSiteReduced[];\n};\n\nconst contributionTypes = [\n { label: contributionTypeToText(ContributionType.SELL), value: ContributionType.SELL },\n { label: contributionTypeToText(ContributionType.ACTIVITY), value: ContributionType.ACTIVITY },\n { label: contributionTypeToText(ContributionType.MUTUAL_AID), value: ContributionType.MUTUAL_AID },\n { label: contributionTypeToText(ContributionType.CARPOOL), value: ContributionType.CARPOOL },\n { label: contributionTypeToText(ContributionType.EVENT), value: ContributionType.EVENT },\n { label: contributionTypeToText(ContributionType.FORMATION), value: ContributionType.FORMATION },\n { label: contributionTypeToText(ContributionType.LOST_PROPERTY), value: ContributionType.LOST_PROPERTY },\n { label: contributionTypeToText(ContributionType.SURVEY), value: ContributionType.SURVEY },\n { label: contributionTypeToText(ContributionType.SUGGESTION), value: ContributionType.SUGGESTION },\n { label: contributionTypeToText(ContributionType.DOCUMENT), value: ContributionType.DOCUMENT },\n];\n\nexport function ContributionCountStatistics({ years, services, siteGeos }: ContributionCountStatisticsProps) {\n const user = useLoggedUser();\n\n const [contributionType, setContributionType] = useState(null);\n const [year, setYear] = useState(null);\n const [contributionsServiceId, setContributionsServiceId] = useState(null);\n const [contributionsSiteGeoId, setContributionsSiteGeoId] = useState(null);\n\n const {\n data: contributionsData,\n isLoading: isLoadingContributions,\n isError,\n } = useQuery(\n ['contributions-count-by-interval', year, contributionsServiceId, contributionsSiteGeoId, contributionType],\n () =>\n getContributionsCountByIntervalStatistics(user, {\n type: contributionType,\n year,\n serviceId: contributionsServiceId,\n siteGeoId: contributionsSiteGeoId,\n })\n );\n\n // Display error message if needed\n useEffect(() => {\n if (isError) {\n alertInfo(t('error_occurred'));\n }\n }, [isError]);\n\n return (\n <>\n \n {\n setContributionType(!Number.isNaN(parseInt(value.toString())) ? parseInt(value.toString()) : null);\n }}\n data={contributionTypes}\n title={t('contribution_type')}\n />\n {\n setYear(!Number.isNaN(parseInt(value.toString())) ? parseInt(value.toString()) : null);\n }}\n data={years}\n title={t('time_interval')}\n defaultButtonText={t('since_launch')}\n />\n {\n setContributionsServiceId(!Number.isNaN(parseInt(value.toString())) ? parseInt(value.toString()) : null);\n }}\n data={services.map((service) => ({\n label: service.libelle,\n value: service.id,\n }))}\n title={t('service')}\n />\n {\n setContributionsSiteGeoId(!Number.isNaN(parseInt(value.toString())) ? parseInt(value.toString()) : null);\n }}\n data={siteGeos.map((siteGeo) => ({\n label: siteGeo.geoSite,\n value: siteGeo.id,\n }))}\n title={t('geo_site')}\n />\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n filtersContainer: {\n flexDirection: 'row',\n },\n filtersDropdown: {\n padding: 10,\n flex: 1,\n },\n});\n","import React, { createContext, useContext, useState } from 'react';\nimport { LayoutChangeEvent, ScrollView, StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\nimport AppText, { Mode } from './AppText';\nimport { PRIMARY_COLOR } from '../../styles/appColor';\nimport { isMobile } from '../../services/utils';\n\ntype TableContextType = {\n minColumnWidths: number[];\n setMinColumnWidth: (column: number, width: number) => void;\n};\n\nconst TableContext = createContext({\n minColumnWidths: [],\n setMinColumnWidth: () => {},\n});\n\nexport type TableProps = {\n children: React.ReactNode | React.ReactNode[];\n onLayout?: (event: LayoutChangeEvent) => void;\n style?: StyleProp;\n};\n\nexport default function Table({ children, onLayout, style }: TableProps) {\n const [minColumnWidths, setMinColumnWidths] = useState([]);\n\n const setMinColumnWidth = (column: number, width: number) => {\n setMinColumnWidths((prev) => {\n const next = [...prev];\n next[column] = Math.max(next[column] || 0, width);\n return next;\n });\n };\n\n return (\n \n \n {children}\n \n \n );\n}\n\nexport type TableRowProps = {\n children: React.ReactNode | React.ReactNode[];\n style?: StyleProp;\n};\n\nconst TableRow = ({ children, style }: TableRowProps) => {\n return {children};\n};\n\nexport type TableHeaderProps = {\n column: number;\n text: string;\n ignoreMinWidth?: boolean;\n onLayout?: (event: LayoutChangeEvent) => void;\n style?: StyleProp;\n};\n\nconst TableHeader = ({ column, text, ignoreMinWidth, onLayout, style }: TableHeaderProps) => {\n return (\n \n \n {text}\n \n \n );\n};\n\nexport type TableCellProps = {\n column: number;\n children: React.ReactNode | React.ReactNode[];\n ignoreMinWidth?: boolean;\n onLayout?: (event: LayoutChangeEvent) => void;\n style?: StyleProp;\n};\n\nconst TableCell = ({ column, children, ignoreMinWidth, onLayout, style }: TableCellProps) => {\n const { minColumnWidths, setMinColumnWidth } = useContext(TableContext);\n\n return (\n {\n const width = ev.nativeEvent.layout.width;\n setMinColumnWidth(column, width);\n\n if (onLayout) {\n onLayout(ev);\n }\n }}\n >\n {children}\n \n );\n};\n\nTable.Cell = TableCell;\nTable.Row = TableRow;\nTable.Header = TableHeader;\n\nconst styles = StyleSheet.create({\n tableContainer: {\n flexGrow: 0,\n },\n table: {\n flexDirection: 'column',\n flex: 1,\n paddingHorizontal: isMobile() ? 10 : 30,\n },\n row: {\n flexDirection: 'row',\n },\n cell: {\n padding: 8,\n },\n headerText: {\n color: PRIMARY_COLOR,\n },\n});\n","import React, { useState } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { TopAuthor } from '../../entities/TopAuthor';\nimport AppText from '../atomic/AppText';\nimport { t } from '../../services/translations';\nimport { PRIMARY_COLOR } from '../../styles/appColor';\nimport Table from '../atomic/Table';\nimport { AppLoader } from '../atomic/AppLoader';\n\nexport type TopAuthorChartProps = {\n data: TopAuthor[] | undefined;\n isLoading: boolean;\n};\n\nexport default function TopAuthorChart({ data, isLoading }: TopAuthorChartProps) {\n const [chartWidth, setChartWidth] = useState(0);\n const maxCount = data?.reduce((acc, author) => Math.max(acc, author.contributionCount), 0) || 1;\n\n return (\n <>\n {isLoading && (\n \n \n \n )}\n \n \n \n \n \n \n {\n setChartWidth(event.nativeEvent.layout.width);\n }}\n />\n \n {!isLoading &&\n data &&\n data.map((author) => (\n \n \n {author.name}\n \n \n {author.serviceName}\n \n \n {author.siteName}\n \n \n {author.contributionCount}\n \n \n \n \n \n ))}\n
\n \n );\n}\n\nconst styles = StyleSheet.create({\n hidden: {\n opacity: 0,\n },\n table: {\n paddingBottom: 20,\n },\n textCell: {\n maxWidth: 200,\n },\n chartCell: {\n minWidth: 100,\n flex: 1,\n },\n chartBar: {\n height: 20,\n backgroundColor: PRIMARY_COLOR,\n },\n});\n","import React, { useEffect, useState } from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport TopAuthorChart from './TopAuthorChart';\nimport { StyleSheet, View } from 'react-native';\nimport { FormFieldPicker } from '../atomic/FormField';\nimport { isMobile } from '../../services/utils';\nimport { UserSaved } from '../../services/storage';\nimport { GetTopAuthors } from '../../entities/GetTopAuthors';\nimport AppText, { Mode } from '../atomic/AppText';\nimport { PRIMARY_COLOR } from '../../styles/appColor';\n\nexport type TopAuthorStatisticsProps = {\n queryKey: string;\n messageBuilder?: (data: GetTopAuthors) => string;\n fetch: (user: UserSaved, args: { limit: number }) => Promise;\n};\n\nexport default function TopAuthorStatistics({ queryKey, messageBuilder, fetch }: TopAuthorStatisticsProps) {\n const user = useLoggedUser();\n const [limit, setLimit] = useState(10);\n\n const { data, isLoading, refetch } = useQuery([user.token, queryKey], () => fetch(user, { limit }));\n\n useEffect(() => {\n refetch();\n }, [limit, refetch]);\n\n return (\n \n \n {\n setLimit(!Number.isNaN(parseInt(value.toString(), 10)) ? parseInt(value.toString(), 10) : 10);\n }}\n data={[\n { label: 'Top 10', value: 10 },\n { label: 'Top 25', value: 25 },\n { label: 'Top 50', value: 50 },\n ]}\n title={''}\n />\n {messageBuilder && data && (\n \n {messageBuilder(data)}\n \n )}\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n filters: {\n paddingHorizontal: isMobile() ? 10 : 30,\n paddingTop: 20,\n flexDirection: 'row',\n gap: 20,\n },\n message: {\n color: PRIMARY_COLOR,\n alignContent: 'flex-end',\n marginBottom: 20,\n },\n});\n","import React, { useEffect, useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { FlatList, StyleSheet, View } from 'react-native';\nimport { useQuery } from '@tanstack/react-query';\nimport { CountUp } from 'use-count-up';\nimport { format } from 'date-fns';\nimport { DefaultBackground } from '../../../components/containers/AppScreen';\nimport {\n getCompanyStatistics,\n getTopActuAuthors,\n getTopContributionAuthors,\n getTopNewsStatistics,\n} from '../../../services/api/statistics.api';\nimport { setLoading } from '../../../store/action';\nimport { alertInfo, isMobile } from '../../../services/utils';\nimport { dateLocale, t } from '../../../services/translations';\nimport StatisticsSquare from '../../../components/atomic/StatisticSquare';\nimport AppText, { Mode } from '../../../components/atomic/AppText';\nimport { LIGHT_GRAY, PRIMARY_COLOR } from '../../../styles/appColor';\nimport { ContributionItemRowCompanyNews } from '../../../components/atomic/ContributionItemSquare';\nimport { useNavigation } from '@react-navigation/native';\nimport { ScreenNames } from '../../../ScreenNames';\nimport { ContributionType } from '../../../types';\nimport { StackNavigationProp } from '@react-navigation/stack';\nimport { ScrollView, TouchableOpacity } from 'react-native-gesture-handler';\nimport { getCompanyGeoSites, getCompanyServices } from '../../../services/api/company.api';\nimport { NewsCountStatistics } from '../../../components/molecules/NewsCountStatistics';\nimport { ContributionCountStatistics } from '../../../components/molecules/ContributionCountStatistics';\nimport useLoggedUser from '../../../hooks/useLoggedUser';\nimport TopAuthorStatistics from '../../../components/molecules/TopAuthorStatistics';\nimport { NewsSummary } from '../../../entities/NewsSummary';\nimport { TopNewsStatisticsItem } from '../../../entities/TopNewsStatistics';\nimport { Chip } from '../../../components/atomic/Chip';\n\nexport default function StatisticsScreen() {\n const user = useLoggedUser();\n const dispatch = useDispatch();\n const navigation = useNavigation>();\n const locale = dateLocale();\n const entrepriseId = user?.entrepriseId || 0;\n\n const newDate = new Date();\n const newDateMinusOneYear = new Date(newDate);\n newDateMinusOneYear.setFullYear(newDateMinusOneYear.getFullYear() - 1);\n\n const {\n data: services,\n isLoading: isLoadingServices,\n isError: isErrorServices,\n } = useQuery(['services', entrepriseId], () => getCompanyServices(entrepriseId, user.token));\n\n const {\n data: siteGeos,\n isLoading: isLoadingSiteGeos,\n isError: isErrorSiteGeos,\n } = useQuery(['siteGeos', entrepriseId], () => getCompanyGeoSites(entrepriseId, user.token));\n\n // List years from company creation date to now\n const years = useMemo(() => {\n let companyCreationDate = new Date(user.entreprise.dateCreation);\n let companyCreationYear = companyCreationDate.getFullYear();\n let nowYear = new Date().getFullYear();\n\n return [...Array(nowYear - companyCreationYear + 1).keys()].map((i) => {\n return {\n label: (companyCreationYear + i).toString(),\n value: companyCreationYear + i,\n };\n });\n }, [user]);\n\n const {\n data: generalData,\n isLoading: isLoadingGeneral,\n isError: isErrorGeneral,\n } = useQuery(['statistics-general'], async () => ({\n company: await getCompanyStatistics(user),\n topNews: await getTopNewsStatistics(user),\n }));\n\n const isLoading = isLoadingGeneral || isLoadingServices || isLoadingSiteGeos;\n const isError = isErrorGeneral || isErrorServices || isErrorSiteGeos;\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n // Display error message if needed\n useEffect(() => {\n if (isError) {\n alertInfo(t('error_occurred'));\n }\n }, [isError]);\n\n const onPressNews = (news: NewsSummary) => () => {\n navigation.push(ScreenNames.LoggedInDrawerNavigation, {\n screen: ScreenNames.DetailCompanyNews,\n params: {\n id: news.id,\n contributionType: ContributionType.COMPANY_NEWS,\n isNotif: false,\n isAdminView: false,\n },\n });\n };\n\n return (\n \n \n \n {generalData && (\n <>\n \n {t('general_statistics')}\n \n \n \n }\n />\n }\n />\n }\n />\n \n \n )}\n \n \n {t('news_count')}\n \n \n \n \n \n {t('contribution_count')}\n \n \n \n {generalData && generalData.topNews.topSeen && (\n <>\n \n {t('most_seen_news')}\n \n t('seen_count', { count: item.count || 0 })}\n onPressNews={onPressNews}\n />\n \n )}\n {generalData && generalData.topNews.topInterest && (\n <>\n \n {t('most_interesting_news')}\n \n t('interested_count', { count: item.count || 0 })}\n onPressNews={onPressNews}\n />\n \n )}\n {generalData && generalData.topNews.topCommented && (\n <>\n \n {t('most_commented_news')}\n \n t('comment_count', { count: item.count || 0 })}\n onPressNews={onPressNews}\n />\n \n )}\n \n \n \n {t('top_contributors_news')}\n \n t('x_contributors_created_news', { count: data?.totalCount })}\n fetch={getTopActuAuthors}\n />\n \n \n \n {t('top_contributors_others')}\n \n t('x_contributors_created_others', { count: data?.totalCount })}\n fetch={getTopContributionAuthors}\n />\n \n \n \n );\n}\n\ntype TopNewsList = {\n data: TopNewsStatisticsItem[];\n countLabelExtractor: (item: TopNewsStatisticsItem) => string;\n onPressNews: (news: NewsSummary) => () => void;\n};\n\nfunction TopNewsListScreen({ data, countLabelExtractor, onPressNews }: TopNewsList) {\n const navigation = useNavigation>();\n\n return (\n {\n return (\n \n \n \n \n \n \n );\n }}\n ListEmptyComponent={{t('no_contributions')}}\n />\n );\n}\n\nconst styles = StyleSheet.create({\n screen: {},\n content: {\n paddingVertical: 16,\n paddingHorizontal: isMobile() ? 10 : 30,\n },\n generalContainer: {\n flexDirection: 'row',\n justifyContent: 'flex-start',\n flexWrap: 'wrap',\n },\n subtitle: {\n color: PRIMARY_COLOR,\n },\n chartContainer: {\n marginVertical: 16,\n },\n topNewsContainer: {\n marginTop: 16,\n },\n topNewsItemContainer: {\n alignItems: 'center',\n gap: 10,\n },\n newsChip: {\n position: 'absolute',\n top: 12,\n left: 16,\n padding: 10,\n minHeight: 36,\n },\n newsSquare: {\n width: 320,\n },\n topAuthors: {\n paddingHorizontal: isMobile() ? 10 : 30,\n },\n emptyListLabel: { textAlign: 'center', color: LIGHT_GRAY },\n chartBarContainer: {\n flex: 1,\n },\n chartBar: {\n height: 20,\n backgroundColor: PRIMARY_COLOR,\n },\n chartBarLabel: {\n color: PRIMARY_COLOR,\n },\n});\n","import { apiUrlBase } from '../../../configuration';\nimport axios from './base';\nimport { headers } from './base';\nimport { UserSaved } from '../storage';\nimport { ScreenPlaylistMedia } from '../../entities/ScreenPlaylistMedia';\nimport { CreateScreenPlaylistMedia } from '../../entities/CreateScreenPlaylistMedia';\nimport { objectToFormData } from '../formUtil';\nimport { ScreenPlaylistSummary } from '../../entities/ScreenPlaylistSummary';\nimport { ScreenPlaylistDetails } from '../../entities/ScreenPlaylistDetails';\nimport { CreateScreenPlaylist } from '../../entities/CreateScreenPlaylist';\nimport { UpdateScreenPlaylist } from '../../entities/UpdateScreenPlaylist';\nimport { SiteGeoScreenSettingsList } from '../../entities/SiteGeoScreenSettingsList';\nimport { UpdateSiteGeoScreenSettings } from '../../entities/UpdateSiteGeoScreenSettings';\nimport { PlaylistScreenSettingsSummary } from '../../entities/PlaylistScreenSettingsSummary';\nimport { PlaylistScreenSettingsDetails } from '../../entities/PlaylistScreenSettingsDetails';\nimport { UpdatePlaylistScreenSettings } from '../../entities/UpdatePlaylistScreenSettings';\nimport { CreatePlaylistScreenSettings } from '../../entities/CreatePlaylistScreenSettings';\n\nexport async function listSiteGeoScreenSettings(user: UserSaved): Promise {\n return axios\n .get(`${apiUrlBase}Screens/sitegeos`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function updateSiteGeoScreenSettings(\n user: UserSaved,\n args: UpdateSiteGeoScreenSettings\n): Promise {\n return axios\n .put(`${apiUrlBase}Screens/sitegeos`, args, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function listPlaylistScreenSettings(\n user: UserSaved,\n search: string\n): Promise {\n return axios\n .get(`${apiUrlBase}Screens/playlist-screens`, {\n headers: headers(user.token),\n params: {\n search,\n },\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function getPlaylistScreenSettings(user: UserSaved, id: number): Promise {\n return axios\n .get(`${apiUrlBase}Screens/playlist-screens/${id}`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function createPlaylistScreenSettings(\n user: UserSaved,\n args: CreatePlaylistScreenSettings\n): Promise {\n return axios\n .post(`${apiUrlBase}Screens/playlist-screens`, args, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function updatePlaylistScreenSettings(\n user: UserSaved,\n id: number,\n args: UpdatePlaylistScreenSettings\n): Promise {\n return axios\n .put(`${apiUrlBase}Screens/playlist-screens/${id}`, args, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\nexport async function deletePlaylistScreenSettings(user: UserSaved, id: number): Promise {\n return axios\n .delete(`${apiUrlBase}Screens/playlist-screens/${id}`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function listScreenPlaylist(\n user: UserSaved,\n search: string | null = null\n): Promise {\n return axios\n .get(`${apiUrlBase}Screens/playlists`, {\n headers: headers(user.token),\n params: {\n search,\n },\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function getScreenPlaylist(user: UserSaved, id: number): Promise {\n return axios\n .get(`${apiUrlBase}Screens/playlists/${id}`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport function createScreenPlaylist(user: UserSaved, args: CreateScreenPlaylist) {\n return axios\n .post(`${apiUrlBase}Screens/playlists`, args, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport function updateScreenPlaylist(user: UserSaved, id: number, args: UpdateScreenPlaylist) {\n return axios\n .put(`${apiUrlBase}Screens/playlists/${id}`, args, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function deleteScreenPlaylist(user: UserSaved, id: number): Promise {\n return axios\n .delete(`${apiUrlBase}Screens/playlists/${id}`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return true;\n else return false;\n });\n}\n\nexport async function listScreenMedias(user: UserSaved, search: string | null = null): Promise {\n return axios\n .get(`${apiUrlBase}Screens/medias`, {\n headers: headers(user.token),\n params: {\n search,\n },\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport function createScreenMedia(user: UserSaved, args: CreateScreenPlaylistMedia) {\n return axios\n .post(`${apiUrlBase}Screens/medias`, objectToFormData(args), {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function deleteScreenMedia(user: UserSaved, id: number): Promise {\n return axios\n .delete(`${apiUrlBase}Screens/medias/${id}`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return true;\n else return false;\n });\n}\n\nexport type SiteGeoTVSettingsRequestData = {\n latitude: number | null;\n longitude: number | null;\n rssFeed: string;\n facebookPageUrl: string | null;\n linkedInPageUrl: string | null;\n entrepriseSiteGeoId: number;\n};\n\nexport type TVSettingsRequestBody = {\n siteGeoScreenSettings: SiteGeoTVSettingsRequestData[];\n};\n\nexport type SiteGeoTVSettings = {\n latitude: number | null;\n longitude: number | null;\n rssFeed: string;\n facebookPageUrl: string | null;\n linkedInPageUrl: string | null;\n entrepriseSiteGeoId: number;\n salt: string;\n};\n\nexport type TVSettingsResponseBody = {\n id: number;\n entrepriseId: number;\n siteGeoScreenSettings: SiteGeoTVSettings[];\n};\n\n// function createFormData(body: TVSettingsRequestBody) {\n// let formData = new FormData();\n// Object.keys(body).forEach((key) => {\n// formData.append(key, body[key]);\n// });\n// return formData\n// }\n","import { useCallback, useEffect, useState } from 'react';\nimport {\n ActivityIndicator,\n FlatList,\n RefreshControl,\n ScrollView,\n StyleSheet,\n TouchableOpacity,\n View,\n} from 'react-native';\nimport { useQuery } from '@tanstack/react-query';\nimport { useNavigation } from '@react-navigation/native';\nimport Feather from 'react-native-vector-icons/Feather';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport { FAB } from '@rneui/base';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport { deleteScreenPlaylist, listScreenPlaylist } from '../../../../services/api/tv.api';\nimport { AppScreen } from '../../../../components/containers/AppScreen';\nimport { getReadableDate, isMobile } from '../../../../services/utils';\nimport { SearchTextInput } from '../../../../components/atomic/SearchTextInput';\nimport { ALERT_COLOR, LIGHT_GRAY, PRIMARY_COLOR, BACKGROUND_COLOR } from '../../../../styles/appColor';\nimport AppText from '../../../../components/atomic/AppText';\nimport { ScreenNames } from '../../../../ScreenNames';\nimport { TwoActionsGenericPopup } from '../../../../components/containers/TwoActionsButtonPopup';\nimport { t } from '../../../../services/translations';\nimport Separator from '../../../../components/atomic/Separator';\n\nexport default function ScreenPlaylistListScreen() {\n const [search, setSearch] = useState('');\n const navigation = useNavigation();\n const user = useLoggedUser();\n const {\n data,\n isLoading: isLoadingList,\n refetch: refresh,\n } = useQuery(['listScreenPlaylist', search], () => listScreenPlaylist(user, search), { cacheTime: 0 });\n\n // Refresh when coming back to this screen\n useEffect(() => {\n const unsubscribe = navigation.addListener('focus', () => {\n refresh();\n });\n\n return unsubscribe;\n }, [navigation, refresh]);\n\n const handleDelete = useCallback(\n async (id: number) => {\n await deleteScreenPlaylist(user, id);\n refresh();\n },\n [user]\n );\n\n const isLoading = isLoadingList;\n\n return (\n <>\n \n \n \n {isLoading ? (\n \n ) : (\n }\n data={data}\n keyExtractor={(item) => item.id.toString()}\n ListHeaderComponent={\n \n {t('my_playlists')}\n {t('published_date')}\n \n \n }\n renderItem={({ item }) => (\n \n {item.name}\n \n {getReadableDate(item.dateCreated, undefined, undefined, false)}\n \n \n {\n navigation.navigate(ScreenNames.ScreenPlaylistUpdate, {\n id: item.id,\n });\n }}\n >\n \n \n handleDelete(item.id)}\n onPressButton2={() => {}}\n >\n \n \n \n \n )}\n ItemSeparatorComponent={() => }\n ListEmptyComponent={{t('no_screens')}}\n />\n )}\n \n \n }\n onPress={() => {\n navigation.navigate(ScreenNames.ScreenPlaylistCreate);\n }}\n placement=\"left\"\n />\n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: BACKGROUND_COLOR,\n },\n searchInput: {\n marginBottom: 10,\n },\n emptyText: {\n textAlign: 'center',\n color: LIGHT_GRAY,\n },\n itemContainer: {\n flexDirection: 'row',\n marginVertical: 10,\n },\n tableHeader: {\n color: PRIMARY_COLOR,\n flex: 1,\n },\n itemColumn: {\n flex: 1,\n },\n itemActions: {\n minWidth: 78,\n flexDirection: 'row',\n },\n actionIcon: {\n marginRight: 10,\n },\n});\n","import React from 'react';\nimport {\n ActivityIndicator,\n FlatList,\n RefreshControl,\n ScrollView,\n StyleSheet,\n TouchableOpacity,\n View,\n} from 'react-native';\nimport { useQuery } from '@tanstack/react-query';\nimport { deletePlaylistScreenSettings, listPlaylistScreenSettings } from '../../../../services/api/tv.api';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport AppText, { Mode } from '../../../../components/atomic/AppText';\nimport { ALERT_COLOR, LIGHT_GRAY, PRIMARY_COLOR, BACKGROUND_COLOR } from '../../../../styles/appColor';\nimport { t } from '../../../../services/translations';\nimport { AppScreen } from '../../../../components/containers/AppScreen';\nimport { isMobile, openURL } from '../../../../services/utils';\nimport { SearchTextInput } from '../../../../components/atomic/SearchTextInput';\nimport { useCallback, useEffect, useState } from 'react';\nimport { generateTVPublicLink } from '../../../../services/url.utils';\nimport { HypertextLink } from '../../../../components/atomic/HypertextLink';\nimport Separator from '../../../../components/atomic/Separator';\nimport Feather from 'react-native-vector-icons/Feather';\nimport { TwoActionsGenericPopup } from '../../../../components/containers/TwoActionsButtonPopup';\nimport { useNavigation } from '@react-navigation/native';\nimport { FAB } from '@rneui/base';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport { ScreenNames } from '../../../../ScreenNames';\n\nexport default function ScreenSettingsListScreen() {\n const [search, setSearch] = useState('');\n const navigation = useNavigation();\n const user = useLoggedUser();\n const {\n data,\n isLoading: isLoadingList,\n refetch: refresh,\n } = useQuery(['listPlaylistScreenSettings', search], () => listPlaylistScreenSettings(user, search), {\n cacheTime: 0,\n });\n\n // Refresh when coming back to this screen\n useEffect(() => {\n const unsubscribe = navigation.addListener('focus', () => {\n refresh();\n });\n\n return unsubscribe;\n }, [navigation, refresh]);\n\n const handleDelete = useCallback(\n async (id: number) => {\n await deletePlaylistScreenSettings(user, id);\n refresh();\n },\n [user]\n );\n\n const isLoading = isLoadingList;\n\n return (\n <>\n \n \n \n {isLoading ? (\n \n ) : (\n }\n data={data}\n keyExtractor={(item) => item.id.toString()}\n renderItem={({ item }) => (\n \n \n \n {item.title}\n \n \n \n \n {t('playlists')}\n \n {t('screen_url')}\n \n \n {item.pLaylistName}\n {\n openURL(generateTVPublicLink(item.code));\n }}\n />\n \n \n \n \n {\n navigation.navigate(ScreenNames.ScreenSettingsUpdate, {\n id: item.id,\n });\n }}\n >\n \n \n handleDelete(item.id)}\n onPressButton2={() => {}}\n >\n \n \n \n \n )}\n ItemSeparatorComponent={() => }\n ListEmptyComponent={{t('no_screens')}}\n />\n )}\n \n \n }\n onPress={() => {\n navigation.navigate(ScreenNames.ScreenSettingsCreate);\n }}\n placement=\"left\"\n />\n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: BACKGROUND_COLOR,\n },\n searchInput: {\n marginBottom: 10,\n },\n emptyText: {\n textAlign: 'center',\n color: LIGHT_GRAY,\n },\n columnContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n column0: {\n paddingRight: 10,\n },\n column: {\n flex: 1,\n },\n columnRow: {\n paddingBottom: 10,\n },\n itemContainer: {\n flexDirection: 'row',\n marginVertical: 10,\n },\n itemContentContainer: {\n flex: 1,\n },\n actionsContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n itemTitle: {\n color: PRIMARY_COLOR,\n marginBottom: 10,\n },\n actionIcon: {\n marginRight: 10,\n },\n});\n","import React, { useEffect, useState } from 'react';\nimport { ImageSourcePropType, StyleSheet, View } from 'react-native';\nimport { t } from '../../services/translations';\nimport { PickPhotoOrDocumentResult, PickPhotoResult } from '../../services/utils';\nimport { ALERT_COLOR, DARK_GRAY, PRIMARY_COLOR } from '../../styles/appColor';\nimport { FONT_FAMILY_DEFAULT } from '../../styles/globalStyle';\nimport { MediasInfos } from '../../utils/Medias';\nimport { AppModalOverlay } from '../atomic/AppModalOverlay';\nimport AppText, { Mode } from '../atomic/AppText';\nimport { TextFormField } from '../atomic/FormField';\nimport { PhotoPicker } from '../atomic/PhotoPicker';\n\nexport interface PhotoFormFieldProps {\n defaultPhoto?: ImageSourcePropType;\n photo: PickPhotoOrDocumentResult | null | undefined;\n videoUrl: string | null | undefined;\n allowPdf?: boolean;\n onPhotoChanged: (photo: PickPhotoOrDocumentResult | null) => void;\n onVideoUrlChanged: (videoUrl: string | null) => void;\n}\n\nexport default function PhotoFormField({\n defaultPhoto,\n photo,\n videoUrl,\n allowPdf,\n onPhotoChanged,\n onVideoUrlChanged,\n}: PhotoFormFieldProps) {\n const [showVideoPopup, setShowVideoPopup] = useState(false);\n const [invalidVideoUrl, setInvalidVideoUrl] = useState(false);\n\n useEffect(() => {\n setInvalidVideoUrl(false);\n\n if (videoUrl) {\n for (const mediaName in MediasInfos) {\n const mediaInfo = MediasInfos[mediaName];\n if (mediaInfo.isMedia(videoUrl)) {\n setShowVideoPopup(false);\n onPhotoChanged({ uri: mediaInfo.imagePreview(videoUrl) } as PickPhotoResult);\n } else {\n setInvalidVideoUrl(true);\n }\n }\n }\n }, [videoUrl, onPhotoChanged]);\n\n return (\n \n {t('accepted_formats')}\n {`${t('ideal_format')} : 540 x 540 px`}\n {\n onPhotoChanged(value);\n onVideoUrlChanged(null);\n }}\n extraOption={[\n {\n label: t('choose_a_video'),\n icon: 'video',\n onPress: () => setShowVideoPopup(true),\n },\n ]}\n allowPdf={allowPdf}\n />\n setShowVideoPopup(false)}>\n \n {t('insert_video_link')}\n \n \n {invalidVideoUrl ? t('invalid_link') : ' '}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n marginBottom: 20,\n },\n acceptedFormatsText: {\n fontFamily: FONT_FAMILY_DEFAULT.light,\n fontSize: 11,\n color: DARK_GRAY,\n paddingBottom: 10,\n },\n idealFormatText: {\n paddingBottom: 30,\n fontFamily: FONT_FAMILY_DEFAULT.light,\n fontSize: 11,\n color: DARK_GRAY,\n },\n videoModalTitle: {\n textAlign: 'center',\n color: PRIMARY_COLOR,\n },\n videoModalTextField: {\n width: 280,\n paddingTop: 16,\n },\n videoModalErrorLabel: {\n color: ALERT_COLOR,\n fontSize: 12,\n paddingLeft: 8,\n },\n});\n","import React, { useCallback, useState } from 'react';\nimport { useField } from 'formik';\nimport PhotoFormField, { PhotoFormFieldProps } from '../../containers/PhotoFormField';\nimport { PickPhotoOrDocumentResult } from '../../../services/utils';\n\nexport type PhotoFieldProps = Omit<\n Omit, 'onPhotoChanged'>, 'videoUrl'>,\n 'onVideoUrlChanged'\n> & {\n name: string;\n};\n\nexport default function PhotoField({ name, ...rest }: PhotoFieldProps) {\n const [, , helper] = useField(name);\n const [videoUrlField, , videoUrlHelper] = useField('videoUrl');\n const [, , imageIdHelper] = useField('imageId');\n const [, , documentIdHelper] = useField('documentId');\n const [photo, setPhoto] = useState(null);\n\n const onPhotoChanged = useCallback(\n (file: PickPhotoOrDocumentResult | null) => {\n helper.setValue(file || undefined, true);\n imageIdHelper.setValue(undefined);\n documentIdHelper.setValue(undefined);\n setPhoto(file);\n },\n [helper, imageIdHelper, documentIdHelper]\n );\n\n const onVideoUrlChanged = useCallback(\n (videoUrl: string | null) => {\n videoUrlHelper.setValue(videoUrl, true);\n imageIdHelper.setValue(undefined);\n documentIdHelper.setValue(undefined);\n },\n [videoUrlHelper, imageIdHelper, documentIdHelper]\n );\n\n return (\n \n );\n}\n","import React, { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useMutation } from '@tanstack/react-query';\nimport * as Yup from 'yup';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport { setLoading } from '../../store/action';\nimport { alertInfo } from '../../services/utils';\nimport { t } from '../../services/translations';\nimport Form from '../atomic/formik/Form';\nimport TextField from '../atomic/formik/TextField';\nimport SubmitButton from '../atomic/formik/SubmitButton';\nimport { createScreenMedia } from '../../services/api/tv.api';\nimport PhotoField from '../atomic/formik/PhotoField';\n\nexport const schema = Yup.object({\n name: Yup.string().required(t('field_required')),\n file: Yup.mixed().required(t('field_required')),\n});\n\nexport type CreateScreenPlaylistMediaProps = {\n onSubmitEnd?: () => void;\n};\n\nexport default function CreateScreenPlaylistMedia({ onSubmitEnd }: CreateScreenPlaylistMediaProps) {\n const user = useLoggedUser();\n const dispatch = useDispatch();\n\n const mutation = useMutation({\n mutationFn: async (values: any) => {\n dispatch(setLoading(true));\n\n try {\n await createScreenMedia(user, values);\n } catch (err: any) {\n alertInfo(t('error_occurred'));\n } finally {\n dispatch(setLoading(false));\n }\n },\n });\n\n const handleSubmit = async (values: any, { resetForm }: { resetForm: () => void }) => {\n await mutation.mutateAsync(values);\n resetForm();\n onSubmitEnd && onSubmitEnd();\n };\n\n const isLoading = mutation.isLoading;\n\n const initialValues = {\n name: '',\n file: null,\n };\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n return (\n
\n <>\n \n \n \n \n \n );\n}\n","import { useCallback, useState } from 'react';\nimport { ActivityIndicator, FlatList, Image, ScrollView, StyleSheet, View } from 'react-native';\nimport { useDispatch } from 'react-redux';\nimport { useQuery } from '@tanstack/react-query';\nimport Feather from 'react-native-vector-icons/Feather';\nimport { AppScreen } from '../../../../components/containers/AppScreen';\nimport { alertInfo, getReadableDate } from '../../../../services/utils';\nimport { SearchTextInput } from '../../../../components/atomic/SearchTextInput';\nimport CreateScreenPlaylistMedia from '../../../../components/molecules/CreateScreenPlaylistMedia';\nimport Separator from '../../../../components/atomic/Separator';\nimport { TwoActionsGenericPopup } from '../../../../components/containers/TwoActionsButtonPopup';\nimport { t } from '../../../../services/translations';\nimport { ALERT_COLOR, BACKGROUND_COLOR, LIGHT_GRAY, PRIMARY_COLOR } from '../../../../styles/appColor';\nimport AppText from '../../../../components/atomic/AppText';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport { deleteScreenMedia, listScreenMedias } from '../../../../services/api/tv.api';\nimport { setLoading } from '../../../../store/action';\nimport { getPictureSource } from '../../../../services/api/helper.api';\n\nexport default function ScreenMediasListScreen() {\n const user = useLoggedUser();\n const dispatch = useDispatch();\n const [search, setSearch] = useState('');\n const {\n data,\n isLoading: isLoadingList,\n refetch: refresh,\n } = useQuery(['listScreenMedias', search], () => listScreenMedias(user, search), { cacheTime: 0 });\n\n const handleDelete = useCallback(\n async (id: number) => {\n dispatch(setLoading(true));\n try {\n await deleteScreenMedia(user, id);\n refresh();\n } catch (err: any) {\n alertInfo(t('error_occurred'));\n } finally {\n dispatch(setLoading(false));\n }\n },\n [user]\n );\n\n return (\n \n \n \n \n {isLoadingList ? (\n \n ) : (\n item.id.toString()}\n ListHeaderComponent={\n \n {t('preview')}\n {t('my_medias')}\n {t('published_date')}\n \n \n }\n renderItem={({ item }) => (\n \n \n {item.name}\n \n {getReadableDate(item.dateCreated, undefined, undefined, false)}\n \n \n handleDelete(item.id)}\n onPressButton2={() => {}}\n >\n \n \n \n \n )}\n ItemSeparatorComponent={() => }\n ListEmptyComponent={() => {t('no_document')}}\n />\n )}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: BACKGROUND_COLOR,\n },\n searchInput: {\n marginBottom: 10,\n },\n emptyText: {\n textAlign: 'center',\n color: LIGHT_GRAY,\n },\n itemContainer: {\n flexDirection: 'row',\n marginVertical: 10,\n alignItems: 'center',\n },\n previewHeader: {\n color: PRIMARY_COLOR,\n width: 64,\n marginRight: 10,\n },\n tableHeader: {\n color: PRIMARY_COLOR,\n flex: 1,\n },\n itemPreview: {\n width: 64,\n height: 64,\n marginRight: 10,\n resizeMode: 'contain',\n },\n itemColumn: {\n flex: 1,\n },\n itemActions: {\n minWidth: 24,\n },\n});\n","import React from 'react';\nimport { createMaterialTopTabNavigator } from '@react-navigation/material-top-tabs';\nimport { ScreenNames } from '../ScreenNames';\nimport { isMobile } from '../services/utils';\nimport { t } from '../services/translations';\nimport ScreenPlaylistListScreen from '../screens/loggedIn/admin/konecteamPlay/ScreenPlaylistListScreen';\nimport ScreenSettingsListScreen from '../screens/loggedIn/admin/konecteamPlay/ScreenSettingsListScreen';\nimport ScreenMediasListScreen from '../screens/loggedIn/admin/konecteamPlay/ScreenMediasListScreen';\nimport { BACKGROUND_COLOR } from '../styles/appColor';\n\nconst Tab = createMaterialTopTabNavigator();\n\nexport default function AdminScreenTabsRoute() {\n return (\n \n \n \n \n \n );\n}\n","import { ScreenPlaylist } from './ScreenPlaylist';\nimport { ScreenPlaylistMedia } from './ScreenPlaylistMedia';\n\nexport enum ScreenPlaylistScreenPlaylistItemType {\n Media,\n Meteo,\n Facebook,\n LinkedIn,\n}\n\nexport interface ScreenPlaylistScreenPlaylistItem {\n id: number;\n order: number;\n delay: number;\n type: ScreenPlaylistScreenPlaylistItemType;\n screenPlaylistId: number;\n screenPlaylistMediaId?: number;\n screenPlaylist?: ScreenPlaylist;\n screenPlaylistMedia?: ScreenPlaylistMedia;\n}\n","import React from 'react';\nimport { Pressable, StyleSheet, TouchableOpacity, View } from 'react-native';\nimport { useQuery } from '@tanstack/react-query';\nimport { useField } from 'formik';\nimport * as Yup from 'yup';\nimport Feather from 'react-native-vector-icons/Feather';\nimport { t } from '../../services/translations';\nimport TextField from '../atomic/formik/TextField';\nimport Separator from '../atomic/Separator';\nimport AppText from '../atomic/AppText';\nimport { ALERT_COLOR, PRIMARY_COLOR } from '../../styles/appColor';\nimport DraggableFlatList from 'react-native-draggable-flatlist';\nimport { FAB } from '@rneui/themed';\nimport SubmitButton from '../atomic/formik/SubmitButton';\nimport { SelectField } from '../atomic/formik/SelectField';\nimport { ScreenPlaylistScreenPlaylistItemType } from '../../entities/ScreenPlaylistScreenPlaylistItem';\nimport { ScreenPlaylistItemDetails } from '../../entities/ScreenPlaylistDetails';\nimport { listScreenMedias } from '../../services/api/tv.api';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport { GestureHandlerRootView } from 'react-native-gesture-handler';\n\nexport const schema = Yup.object({\n name: Yup.string().min(1, t('field_required')).required(t('field_required')),\n items: Yup.array()\n .of(\n Yup.object().shape({\n type: Yup.mixed().oneOf(Object.values(ScreenPlaylistScreenPlaylistItemType)).required(t('field_required')),\n screenPlaylistMediaId: Yup.number().nullable(),\n delay: Yup.number().min(1).required(t('field_required')),\n })\n )\n .min(1),\n});\n\nexport default function ScreenPlaylistFormFields() {\n const user = useLoggedUser();\n const [{ value: items }, , { setValue: setItems }] = useField<(ScreenPlaylistItemDetails | null)[]>('items');\n const { data: playlistMedias } = useQuery(['listScreenMedias'], () => listScreenMedias(user), { cacheTime: 0 });\n\n return (\n \n \n\n {\n const newData = [...items];\n newData.splice(to, 0, newData.splice(from, 1)[0]);\n setItems(newData);\n }}\n keyExtractor={(item, index) => index.toString()}\n ItemSeparatorComponent={Separator}\n ListHeaderComponent={\n \n \n {t('my_medias')}\n {t('display_duree')}\n \n \n }\n renderItem={({ item, drag, getIndex }) => {\n const isVideo =\n item?.type === ScreenPlaylistScreenPlaylistItemType.Media &&\n item?.screenPlaylistMediaId &&\n !!playlistMedias?.find((media) => media.id === item?.screenPlaylistMediaId)?.videoUrl;\n const index = getIndex() as number;\n\n return (\n \n \n \n \n \n \n name={\n item?.type === ScreenPlaylistScreenPlaylistItemType.Media\n ? `items.${index}.screenPlaylistMediaIdString`\n : `items.${index}.type`\n }\n required\n style={{ flex: 1 }}\n onSelected={(value) => {\n const item = items[index];\n\n if (value === ScreenPlaylistScreenPlaylistItemType.Meteo) {\n setItems([\n ...items.slice(0, index),\n {\n type: ScreenPlaylistScreenPlaylistItemType.Meteo,\n screenPlaylistMediaId: null,\n delay: item?.delay || 0,\n } as any as ScreenPlaylistItemDetails,\n ...items.slice(index + 1),\n ]);\n } else if (value === ScreenPlaylistScreenPlaylistItemType.Facebook) {\n setItems([\n ...items.slice(0, index),\n {\n type: ScreenPlaylistScreenPlaylistItemType.Facebook,\n screenPlaylistMediaId: null,\n delay: item?.delay || 0,\n } as any as ScreenPlaylistItemDetails,\n ...items.slice(index + 1),\n ]);\n } else if (value === ScreenPlaylistScreenPlaylistItemType.LinkedIn) {\n setItems([\n ...items.slice(0, index),\n {\n type: ScreenPlaylistScreenPlaylistItemType.LinkedIn,\n screenPlaylistMediaId: null,\n delay: item?.delay || 0,\n } as any as ScreenPlaylistItemDetails,\n ...items.slice(index + 1),\n ]);\n } else {\n const strValue = value as string;\n const id = parseInt(strValue.replace('id', ''), 10);\n const isVideo = !!playlistMedias?.find((media) => media.id === id && media.videoUrl);\n\n setItems([\n ...items.slice(0, index),\n {\n type: ScreenPlaylistScreenPlaylistItemType.Media,\n screenPlaylistMediaId: id,\n screenPlaylistMediaIdString: value,\n delay: item?.delay || isVideo ? 1 : 0,\n } as any as ScreenPlaylistItemDetails,\n ...items.slice(index + 1),\n ]);\n }\n }}\n data={[\n {\n label: t('weather_widget'),\n value: ScreenPlaylistScreenPlaylistItemType.Meteo,\n },\n /*{\n label: t('facebook_widget'),\n value: ScreenPlaylistScreenPlaylistItemType.Facebook,\n },*/\n {\n label: t('linkedin_widget'),\n value: ScreenPlaylistScreenPlaylistItemType.LinkedIn,\n },\n ...(playlistMedias\n ? playlistMedias.map((media) => ({\n label: media.name,\n value: `id${media.id}`,\n }))\n : []),\n ]}\n />\n \n \n {!isVideo && (\n \n name={`items.${index}.delay`}\n required\n style={{ flex: 1 }}\n data={[\n {\n label: t('seconds', { value: Math.floor(1) }),\n value: 1,\n },\n {\n label: t('seconds', { value: Math.floor(5) }),\n value: 5,\n },\n {\n label: t('seconds', { value: Math.floor(10) }),\n value: 10,\n },\n {\n label: t('seconds', { value: Math.floor(15) }),\n value: 15,\n },\n {\n label: t('seconds', { value: Math.floor(30) }),\n value: 30,\n },\n {\n label: t('minutes', { value: Math.floor(1) }),\n value: 60,\n },\n {\n label: t('minutes', { value: Math.floor(5) }),\n value: 300,\n },\n {\n label: t('minutes', { value: Math.floor(10) }),\n value: 600,\n },\n {\n label: t('minutes', { value: Math.floor(15) }),\n value: 900,\n },\n {\n label: t('minutes', { value: Math.floor(30) }),\n value: 1800,\n },\n ]}\n />\n )}\n \n {\n const newData = [...items];\n newData.splice(index, 1);\n setItems(newData);\n }}\n >\n \n \n \n );\n }}\n />\n {\n setItems([...items, null]);\n }}\n />\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n itemContainer: {\n flexDirection: 'row',\n marginVertical: 10,\n },\n tableHeader: {\n color: PRIMARY_COLOR,\n flex: 1,\n },\n itemColumn: {\n flex: 1,\n },\n itemActions: {\n color: PRIMARY_COLOR,\n minWidth: 24,\n },\n actionIcon: {\n marginRight: 10,\n },\n addMediaButton: {\n marginTop: 16,\n },\n});\n","import React, { useEffect } from 'react';\nimport { ScrollView, StyleSheet } from 'react-native';\nimport { useDispatch } from 'react-redux';\nimport { useMutation } from '@tanstack/react-query';\nimport { useNavigation } from '@react-navigation/native';\nimport Form from '../../../../components/atomic/formik/Form';\nimport ScreenPlaylistFormFields, { schema } from '../../../../components/molecules/ScreenPlaylistFormFields';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport { setLoading } from '../../../../store/action';\nimport { createScreenPlaylist } from '../../../../services/api/tv.api';\nimport { alertInfo } from '../../../../services/utils';\nimport { t } from '../../../../services/translations';\nimport { AppScreen } from '../../../../components/containers/AppScreen';\nimport { BACKGROUND_COLOR } from '../../../../styles/appColor';\n\nexport default function ScreenPlaylistCreateScreen() {\n const user = useLoggedUser();\n const dispatch = useDispatch();\n const navigation = useNavigation();\n\n const mutation = useMutation({\n mutationFn: async (values: any) => {\n dispatch(setLoading(true));\n\n try {\n await createScreenPlaylist(user, values);\n } catch (err: any) {\n alertInfo(t('error_occurred'));\n } finally {\n dispatch(setLoading(false));\n }\n },\n });\n\n const handleSubmit = async (values: any, { resetForm }: { resetForm: () => void }) => {\n await mutation.mutateAsync(values);\n resetForm();\n navigation.goBack();\n };\n\n const isLoading = mutation.isLoading;\n\n const initialValues = {\n name: '',\n items: [],\n };\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n return (\n \n \n
\n \n \n
\n
\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: BACKGROUND_COLOR,\n },\n});\n","import { useEffect, useMemo } from 'react';\nimport { ActivityIndicator, ScrollView, StyleSheet, View } from 'react-native';\nimport { useDispatch } from 'react-redux';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { useNavigation } from '@react-navigation/native';\nimport Form from '../../../../components/atomic/formik/Form';\nimport ScreenPlaylistFormFields, { schema } from '../../../../components/molecules/ScreenPlaylistFormFields';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport { setLoading } from '../../../../store/action';\nimport { getScreenPlaylist, updateScreenPlaylist } from '../../../../services/api/tv.api';\nimport { alertInfo } from '../../../../services/utils';\nimport { t } from '../../../../services/translations';\nimport { AppScreen } from '../../../../components/containers/AppScreen';\nimport { PRIMARY_COLOR, BACKGROUND_COLOR } from '../../../../styles/appColor';\n\nexport type ScreenPlaylistEditScreenProps = {\n route: {\n params: {\n id: string;\n };\n };\n};\n\nexport default function ScreenPlaylistEditScreen({ route }: ScreenPlaylistEditScreenProps) {\n const user = useLoggedUser();\n const dispatch = useDispatch();\n const navigation = useNavigation();\n const id = parseInt(route.params.id);\n\n const {\n data,\n isFetching: isLoadingDetails,\n isFetched,\n refetch,\n } = useQuery(['screenPlaylist', id], () => getScreenPlaylist(user, id), { cacheTime: 0 });\n\n const mutation = useMutation({\n mutationFn: async (values: any) => {\n dispatch(setLoading(true));\n\n try {\n await updateScreenPlaylist(user, id, values);\n } catch (err: any) {\n alertInfo(t('error_occurred'));\n } finally {\n dispatch(setLoading(false));\n }\n },\n });\n\n const handleSubmit = async (values: any, { resetForm }: { resetForm: () => void }) => {\n await mutation.mutateAsync(values);\n await refetch();\n resetForm();\n navigation.goBack();\n };\n\n const isLoading = mutation.isLoading;\n\n const initialValues = useMemo(\n () => ({\n name: data?.name || '',\n items:\n data?.items.map((e) => ({\n type: e.type,\n screenPlaylistMediaId: e.screenPlaylistMediaId,\n screenPlaylistMediaIdString: e.screenPlaylistMediaId ? `id${e.screenPlaylistMediaId}` : undefined,\n delay: e.delay,\n })) || [],\n }),\n [data]\n );\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n // Set navigator title\n useEffect(() => {\n if (data) {\n navigation.setOptions({\n title: `${t('edit')} ${data.name}`,\n });\n }\n }, [navigation, data]);\n\n return (\n \n \n {isLoadingDetails ? (\n \n ) : isFetched ? (\n
\n \n \n ) : (\n \n )}\n
\n
\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: BACKGROUND_COLOR,\n },\n});\n","import { useEffect, useState } from 'react';\nimport { StyleProp, StyleSheet, View, ViewStyle } from 'react-native';\nimport { FormField } from '../FormField';\nimport AddressAutocomplete from '../AddressAutocomplete';\nimport { useField } from 'formik';\nimport { AppMapView } from '../AppMapView';\nimport { getGoogleAPIKey } from '../../../services/utils';\nimport axios from 'axios';\n\nexport type LocationFieldProps = {\n latitudeName: string;\n longitudeName: string;\n label: string;\n style?: StyleProp;\n};\n\nexport default function LocationField({ latitudeName, longitudeName, label, style }: LocationFieldProps) {\n const [autocompleteValue, setAutocompleteValue] = useState('');\n const [latitudeField, , latitudeHelper] = useField(latitudeName);\n const [longitudeField, , longitudeHelper] = useField(longitudeName);\n\n // If latitude and longitude are set, set the autocomplete value by using the Google API\n // to get the city name at the given coordinates\n useEffect(() => {\n if (latitudeField.value && longitudeField.value) {\n const googleApiKey = getGoogleAPIKey();\n if (googleApiKey) {\n axios\n .get(\n `https://maps.googleapis.com/maps/api/geocode/json?latlng=${latitudeField.value},${longitudeField.value}&key=${googleApiKey}&language=fr&result_type=locality`\n )\n .then((response) => {\n if (response?.data?.results?.length > 0) {\n setAutocompleteValue(response.data.results[0].formatted_address);\n }\n });\n }\n }\n }, []);\n\n return (\n \n {\n const [latitude, longitude] = a.split(';');\n latitudeHelper.setValue(parseFloat(latitude));\n longitudeHelper.setValue(parseFloat(longitude));\n }}\n />\n \n {}}\n />\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n mapContainer: {\n width: 300,\n height: 300,\n },\n});\n","import React from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport * as Yup from 'yup';\nimport { t } from '../../services/translations';\nimport LocationField from '../atomic/formik/LocationField';\nimport TextField from '../atomic/formik/TextField';\nimport SubmitButton from '../atomic/formik/SubmitButton';\nimport { listScreenPlaylist } from '../../services/api/tv.api';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport { SelectField } from '../atomic/formik/SelectField';\n\nexport const schema = Yup.object({\n title: Yup.string().min(1, t('field_required')).required(t('field_required')),\n playlistId: Yup.number().nullable(),\n latitude: Yup.number().nullable(),\n longitude: Yup.number().nullable(),\n rssFeed: Yup.string().nullable(),\n facebookPageUrl: Yup.string().nullable(),\n linkedInPageUrl: Yup.string().nullable(),\n});\n\nexport default function ScreenSettingsFormFields() {\n const user = useLoggedUser();\n const { data: playlists } = useQuery(['listScreenPlaylist'], () => listScreenPlaylist(user), { cacheTime: 0 });\n\n return (\n <>\n \n \n ({\n label: e.name,\n value: e.id,\n })) || []\n }\n />\n \n \n {/**/}\n \n \n \n );\n}\n","import React, { useEffect } from 'react';\nimport { ScrollView, StyleSheet } from 'react-native';\nimport { useDispatch } from 'react-redux';\nimport { useMutation } from '@tanstack/react-query';\nimport { useNavigation } from '@react-navigation/native';\nimport Form from '../../../../components/atomic/formik/Form';\nimport ScreenSettingsFormFields, { schema } from '../../../../components/molecules/ScreenSettingsFormFields';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport { setLoading } from '../../../../store/action';\nimport { createPlaylistScreenSettings } from '../../../../services/api/tv.api';\nimport { alertInfo } from '../../../../services/utils';\nimport { t } from '../../../../services/translations';\nimport { AppScreen } from '../../../../components/containers/AppScreen';\nimport { BACKGROUND_COLOR } from '../../../../styles/appColor';\n\nexport default function ScreenSettingsCreateScreen() {\n const user = useLoggedUser();\n const dispatch = useDispatch();\n const navigation = useNavigation();\n\n const mutation = useMutation({\n mutationFn: async (values: any) => {\n dispatch(setLoading(true));\n\n try {\n await createPlaylistScreenSettings(user, values);\n } catch (err: any) {\n alertInfo(t('error_occurred'));\n } finally {\n dispatch(setLoading(false));\n }\n },\n });\n\n const handleSubmit = async (values: any, { resetForm }: { resetForm: () => void }) => {\n await mutation.mutateAsync(values);\n resetForm();\n navigation.goBack();\n };\n\n const isLoading = mutation.isLoading;\n\n const initialValues = {\n title: '',\n backgroundColor: '',\n playlistId: null,\n latitude: null,\n longitude: null,\n rssFeed: '',\n facebookPageUrl: '',\n linkedInPageUrl: '',\n };\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n return (\n \n \n
\n \n \n
\n
\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: BACKGROUND_COLOR,\n },\n});\n","import React, { useEffect, useMemo } from 'react';\nimport { ActivityIndicator, ScrollView, StyleSheet, View } from 'react-native';\nimport { useDispatch } from 'react-redux';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { useNavigation } from '@react-navigation/native';\nimport Form from '../../../../components/atomic/formik/Form';\nimport ScreenSettingsFormFields, { schema } from '../../../../components/molecules/ScreenSettingsFormFields';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport { setLoading } from '../../../../store/action';\nimport { getPlaylistScreenSettings, updatePlaylistScreenSettings } from '../../../../services/api/tv.api';\nimport { alertInfo } from '../../../../services/utils';\nimport { t } from '../../../../services/translations';\nimport { AppScreen } from '../../../../components/containers/AppScreen';\nimport { PRIMARY_COLOR, BACKGROUND_COLOR } from '../../../../styles/appColor';\n\nexport type ScreenPlaylistEditScreenProps = {\n route: {\n params: {\n id: string;\n };\n };\n};\n\nexport default function ScreenSettingsUpdateScreen({ route }: ScreenPlaylistEditScreenProps) {\n const user = useLoggedUser();\n const dispatch = useDispatch();\n const navigation = useNavigation();\n const id = parseInt(route.params.id, 10);\n\n const {\n data,\n isLoading: isLoadingDetails,\n isFetched,\n } = useQuery(['screenPlaylist', id], () => getPlaylistScreenSettings(user, id), { cacheTime: 0 });\n\n const mutation = useMutation({\n mutationFn: async (values: any) => {\n dispatch(setLoading(true));\n\n try {\n await updatePlaylistScreenSettings(user, id, values);\n } catch (err: any) {\n alertInfo(t('error_occurred'));\n } finally {\n dispatch(setLoading(false));\n }\n },\n });\n\n const handleSubmit = async (values: any, { resetForm }: { resetForm: () => void }) => {\n await mutation.mutateAsync(values);\n resetForm();\n navigation.goBack();\n };\n\n const isLoading = mutation.isLoading;\n\n const initialValues = useMemo(\n () => ({\n title: data?.title || '',\n backgroundColor: data?.backgroundColor || '',\n playlistId: data?.playlistId || null,\n latitude: data?.latitude || null,\n longitude: data?.longitude || null,\n rssFeed: data?.rssFeed || '',\n facebookPageUrl: data?.facebookPageUrl || '',\n linkedInPageUrl: data?.linkedInPageUrl || '',\n }),\n [data]\n );\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n // Set navigator title\n useEffect(() => {\n if (data) {\n navigation.setOptions({\n title: `${t('edit')} ${data.title}`,\n });\n }\n }, [navigation, data]);\n\n return (\n \n \n {isLoadingDetails ? (\n \n ) : isFetched ? (\n
\n \n \n ) : (\n \n )}\n
\n
\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: BACKGROUND_COLOR,\n },\n});\n","import React from 'react';\nimport { createStackNavigator } from '@react-navigation/stack';\nimport { ScreenNames } from '../ScreenNames';\nimport AdminScreenTabsRoute from './AdminScreenTabsRoute';\nimport ScreenPlaylistCreateScreen from '../screens/loggedIn/admin/konecteamPlay/ScreenPlaylistCreateScreen';\nimport ScreenPlaylistEditScreen from '../screens/loggedIn/admin/konecteamPlay/ScreenPlaylistEditScreen';\nimport ScreenSettingsCreateScreen from '../screens/loggedIn/admin/konecteamPlay/ScreenSettingsCreateScreen';\nimport ScreenSettingsUpdateScreen from '../screens/loggedIn/admin/konecteamPlay/ScreenSettingsUpdateScreen';\nimport { t } from '../services/translations';\nimport BackIcon from '../components/atomic/BackIcon';\nimport { BACKGROUND_COLOR } from '../styles/appColor';\n\nconst Stack = createStackNavigator();\n\nexport default function AdminScreenRoute() {\n return (\n \n \n \n \n \n \n \n );\n}\n","import { ActivityIndicator, ScrollView, StyleSheet, View } from 'react-native';\nimport * as Yup from 'yup';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { useDispatch } from 'react-redux';\nimport { ListItem } from '@rneui/themed';\nimport { t } from '../../../services/translations';\nimport { AppScreen } from '../../../components/containers/AppScreen';\nimport { PRIMARY_COLOR, WHITE } from '../../../styles/appColor';\nimport Form from '../../../components/atomic/formik/Form';\nimport { listSiteGeoScreenSettings, updateSiteGeoScreenSettings } from '../../../services/api/tv.api';\nimport useLoggedUser from '../../../hooks/useLoggedUser';\nimport {\n UpdateSiteGeoScreenSettings,\n UpdateSiteGeoScreenSettingsElem,\n} from '../../../entities/UpdateSiteGeoScreenSettings';\nimport { setLoading } from '../../../store/action';\nimport { alertInfo, openURL } from '../../../services/utils';\nimport SubmitButton from '../../../components/atomic/formik/SubmitButton';\nimport TextField from '../../../components/atomic/formik/TextField';\nimport { useState } from 'react';\nimport { HypertextLink } from '../../../components/atomic/HypertextLink';\nimport { generateTVInternLink } from '../../../services/url.utils';\nimport { FormField } from '../../../components/atomic/FormField';\nimport LocationField from '../../../components/atomic/formik/LocationField';\nimport { getCompanyGeoSites } from '../../../services/api/company.api';\nimport { lightenDarkenColor } from '../../../utils/Color';\n\nexport const schema = Yup.object({\n backgroundColor: Yup.string().required(t('field_required')),\n siteGeoScreenSettings: Yup.array().of(\n Yup.object({\n entrepriseSiteGeoId: Yup.number().required(t('field_required')),\n latitude: Yup.number().nullable(),\n longitude: Yup.number().nullable(),\n rssFeed: Yup.string().nullable(),\n facebookPageUrl: Yup.string().nullable(),\n linkedInPageUrl: Yup.string().nullable(),\n })\n ),\n});\n\nexport default function EditSiteGeoScreenSettings() {\n const user = useLoggedUser();\n const dispatch = useDispatch();\n const {\n data: screenSettings,\n refetch,\n isLoading: isLoadingListScreenSettings,\n } = useQuery(['listSiteGeoScreenSettings'], () => listSiteGeoScreenSettings(user), { cacheTime: 0 });\n\n const { data: siteGeos, isLoading: isLoadingSiteGeos } = useQuery(\n ['companyGeoSites'],\n () => getCompanyGeoSites(user.entrepriseId, user.token),\n { cacheTime: 0 }\n );\n\n const [expandedId, setExpandedId] = useState(null);\n\n const mutation = useMutation({\n mutationFn: async (values: UpdateSiteGeoScreenSettings) => {\n dispatch(setLoading(true));\n\n try {\n await updateSiteGeoScreenSettings(user, values);\n await refetch();\n } catch (err: any) {\n alertInfo(t('error_occurred'));\n } finally {\n dispatch(setLoading(false));\n }\n },\n });\n\n const initialValues = (screenSettings || {\n backgroundColor: '',\n siteGeoScreenSettings: [],\n }) as UpdateSiteGeoScreenSettings;\n\n siteGeos?.forEach((siteGeo) => {\n if (!initialValues.siteGeoScreenSettings.find((item) => item.entrepriseSiteGeoId === siteGeo.id)) {\n initialValues.siteGeoScreenSettings.push({\n entrepriseSiteGeoId: siteGeo.id,\n title: siteGeo.geoSite,\n latitude: null,\n longitude: null,\n rssFeed: null,\n facebookPageUrl: null,\n linkedInPageUrl: null,\n } as UpdateSiteGeoScreenSettingsElem);\n }\n });\n\n const isLoading = mutation.isLoading || isLoadingListScreenSettings || isLoadingSiteGeos;\n\n return (\n \n \n {isLoading ? (\n \n ) : (\n await mutation.mutateAsync(values)}\n initialValues={initialValues}\n validationSchema={schema}\n validateOnMount\n >\n \n {screenSettings?.siteGeoScreenSettings?.map((item, index) => (\n {\n if (item.entrepriseSiteGeoId === expandedId) {\n setExpandedId(null);\n } else {\n setExpandedId(item.entrepriseSiteGeoId);\n }\n }}\n content={\n \n {item.title}\n \n }\n >\n \n \n {\n openURL(generateTVInternLink(item.code));\n }}\n />\n \n \n \n {/**/}\n \n \n \n ))}\n \n \n )}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: WHITE,\n },\n accordionContent: {\n paddingHorizontal: 16,\n paddingVertical: 8,\n },\n});\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { AppScreen } from '../../../components/containers/AppScreen';\nimport { User } from '../../../entities/User';\nimport { UserProfileOverlay } from '../../../components/atomic/UserProfileOverlay';\nimport { GetUsersFilters } from '../../../entities/GetUsersFilters';\nimport UserFilters from '../../../components/molecules/UserFilters';\nimport { addDays, startOfToday } from 'date-fns';\nimport { useQuery } from '@tanstack/react-query';\nimport { getUserBirthDays } from '../../../services/api/user.api';\nimport useLoggedUser from '../../../hooks/useLoggedUser';\nimport { SectionList, StyleSheet, View } from 'react-native';\nimport { ProfileRow } from '../../../components/atomic/ProfileRow';\nimport AppText, { Mode } from '../../../components/atomic/AppText';\nimport { LIGHT_GRAY, PRIMARY_COLOR } from '../../../styles/appColor';\nimport { t } from '../../../services/translations';\nimport { DateTime } from 'luxon';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport { TouchableOpacity } from 'react-native-gesture-handler';\nimport { setLoading } from '../../../store/action';\n\nexport default function BirthdaysScreen() {\n const dispatch = useDispatch();\n const loggedUser = useLoggedUser();\n const [showProfileUser, setShowProfileUser] = useState(null);\n\n const [filters, setFilters] = useState({\n search: '',\n services: [],\n siteGeos: [],\n });\n\n const { data, isLoading, refetch } = useQuery(['birthdays', JSON.stringify(filters)], () =>\n getUserBirthDays(loggedUser, filters)\n );\n\n const today = startOfToday();\n const tomorrow = addDays(startOfToday(), 1);\n\n const todayItems = [\n ...(data?.todayBirthDays.map((user) => ({ user, seniorityYears: undefined })) || []),\n ...(data?.todaySeniorityDates || []),\n ];\n\n const tomorrowItems = [\n ...(data?.tomorowBirthDays.map((user) => ({ user, seniorityYears: undefined })) || []),\n ...(data?.tomorowSeniorityDates || []),\n ];\n\n const weekItems = [\n ...(data?.weekBirthDays.map((user) => ({ user, seniorityYears: undefined })) || []),\n ...(data?.weekSeniorityDates || []),\n ];\n\n const monthItems = [\n ...(data?.monthBirthDays.map((user) => ({ user, seniorityYears: undefined })) || []),\n ...(data?.monthSeniorityDates || []),\n ];\n\n const otherItems = [\n ...(data?.otherBirthDays.map((user) => ({ user, seniorityYears: undefined })) || []),\n ...(data?.otherSeniorityDates || []),\n ];\n\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [dispatch, isLoading]);\n\n return (\n \n \n 0\n ? [\n {\n title: `${t('today')} (${DateTime.fromJSDate(today).toFormat('dd/MM/yyyy')})`,\n data: todayItems.map((item) => ({ ...item, section: 'today' })),\n },\n ]\n : []),\n ...(tomorrowItems.length\n ? [\n {\n title: `${t('tomorow')} (${DateTime.fromJSDate(tomorrow).toFormat('dd/MM/yyyy')})`,\n data: tomorrowItems.map((item) => ({ ...item, section: 'tomorrow' })),\n },\n ]\n : []),\n ...(weekItems.length\n ? [\n {\n title: t('this_week'),\n data: weekItems.map((item) => ({ ...item, section: 'week' })),\n },\n ]\n : []),\n ...(monthItems.length\n ? [\n {\n title: t('this_month'),\n data: monthItems.map((item) => ({ ...item, section: 'month' })),\n },\n ]\n : []),\n ...(otherItems.length\n ? [\n {\n title: t('others'),\n data: otherItems.map((item) => ({ ...item, section: 'other' })),\n },\n ]\n : []),\n ]}\n keyExtractor={(item) => {\n return `${item.section}__${item.seniorityYears}__${item.user.id.toString()}`;\n }}\n renderItem={({ item }) => (\n setShowProfileUser(item.user)}>\n \n \n \n 0 ? 'medal' : 'cake-candles'}\n color={PRIMARY_COLOR}\n />\n {item.seniorityYears && item.seniorityYears > 0 ? (\n \n {item.seniorityYears > 1\n ? t('seniority_x_years', { count: item.seniorityYears })\n : t('seniority_x_year', { count: item.seniorityYears })}\n \n ) : (\n \n {t('birthday')}\n \n )}\n \n {['week', 'month', 'other'].includes(item.section) && (\n \n {DateTime.fromJSDate(\n new Date(\n (item.seniorityYears && item.seniorityYears > 0\n ? item.user.seniorityDate\n : item.user.birthDate) as string\n )\n ).toFormat(item.seniorityYears && item.seniorityYears > 0 ? 'dd/MM/yyyy' : 'dd/MM')}\n \n )}\n \n \n )}\n renderSectionHeader={({ section: { title } }) => (\n \n {title}\n \n )}\n ListEmptyComponent={{t('no_birthdays')}}\n />\n {showProfileUser && (\n setShowProfileUser(null)}\n userProfileData={showProfileUser}\n isVisible={!!showProfileUser}\n />\n )}\n \n );\n}\n\nconst styles = StyleSheet.create({\n list: {\n paddingVertical: 16,\n },\n sectionTitle: {\n color: PRIMARY_COLOR,\n },\n userRow: {\n flexDirection: 'row',\n gap: 20,\n },\n userRowText: {\n color: PRIMARY_COLOR,\n },\n profile: {\n flex: 1,\n borderBottomWidth: 0,\n overflow: 'hidden',\n },\n right: {\n gap: 16,\n justifyContent: 'center',\n alignItems: 'center',\n },\n userInfos: {\n gap: 16,\n alignItems: 'center',\n flexDirection: 'row',\n maxWidth: 220,\n width: '100%',\n },\n emptyText: {\n textAlign: 'center',\n color: LIGHT_GRAY,\n },\n});\n","import axios from './base';\nimport { headers } from './base';\nimport { apiUrlBase } from '../../../configuration';\nimport { UserSaved } from '../storage';\nimport { ContributionBookingSummary } from '../../entities/ContributionBookingSummary';\nimport { ContributionBookingResourceSummary } from '../../entities/ContributionBookingResourceSummary';\nimport { ContributionBookingResourceDetails } from '../../entities/ContributionBookingResourceDetails';\nimport { UpdateContributionBookingResource } from '../../entities/UpdateContributionBookingResource';\nimport { CreateContributionBookingResource } from '../../entities/CreateContributionBookingResource';\nimport { ContributionBookingDetails } from '../../entities/ContributionBookingDetails';\nimport { CreateContributionBooking } from '../../entities/CreateContributionBooking';\nimport { UpdateContributionBooking } from '../../entities/UpdateContributionBooking';\n\nexport async function listBookingByResourceId(\n user: UserSaved,\n resourceId: number,\n begin: Date,\n end: Date\n): Promise {\n return axios\n .get(`${apiUrlBase}ContributionBooking/by-resource/${resourceId}`, {\n headers: headers(user.token),\n params: {\n begin: begin.toISOString(),\n end: end.toISOString(),\n },\n })\n .then((response) => {\n if (response.status === 200) {\n return response.data;\n } else {\n return null;\n }\n });\n}\n\nexport async function checkResourceIntersectWithOtherBooking(\n user: UserSaved,\n contributionResourceId: number,\n begin: Date,\n end: Date,\n ignoreBookingId?: number\n): Promise {\n return axios\n .get(`${apiUrlBase}ContributionBooking/by-resource/${contributionResourceId}/intersect`, {\n headers: headers(user.token),\n params: {\n begin: begin.toISOString(),\n end: end.toISOString(),\n ignoreBookingId,\n },\n })\n .then((response) => {\n if (response.status === 200) {\n return response.data;\n } else {\n return null;\n }\n });\n}\n\nexport async function getBookingDetails(user: UserSaved, id: number): Promise {\n return axios\n .get(`${apiUrlBase}ContributionBooking/${id}`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status === 200) {\n return response.data;\n } else {\n return null;\n }\n });\n}\n\nexport async function createBooking(\n user: UserSaved,\n body: CreateContributionBooking\n): Promise {\n return axios\n .post(`${apiUrlBase}ContributionBooking`, body, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status === 200) {\n return response.data;\n } else {\n return null;\n }\n });\n}\n\nexport async function updateBooking(\n user: UserSaved,\n id: number,\n body: UpdateContributionBooking\n): Promise {\n return axios\n .put(`${apiUrlBase}ContributionBooking/${id}`, body, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status === 200) {\n return response.data;\n } else {\n return null;\n }\n });\n}\n\nexport async function deleteBooking(user: UserSaved, id: number) {\n return axios\n .delete(`${apiUrlBase}ContributionBooking/${id}`, {\n headers: headers(user.token),\n })\n .then((response) => {\n return response;\n });\n}\n\nexport async function getBookingResources(user: UserSaved): Promise {\n return axios\n .get(`${apiUrlBase}ContributionBookingResource`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status === 200) {\n return response.data;\n } else {\n return null;\n }\n });\n}\n\nexport async function getAdminBookingResources(user: UserSaved): Promise {\n return axios\n .get(`${apiUrlBase}ContributionBookingResource/admin`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status === 200) {\n return response.data;\n } else {\n return null;\n }\n });\n}\n\nexport async function getBookingResourceDetails(\n user: UserSaved,\n id: number\n): Promise {\n return axios\n .get(`${apiUrlBase}ContributionBookingResource/${id}`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status === 200) {\n return response.data;\n } else {\n return null;\n }\n });\n}\n\nexport async function createBookingResource(\n user: UserSaved,\n body: CreateContributionBookingResource\n): Promise {\n return axios\n .post(`${apiUrlBase}ContributionBookingResource`, body, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status === 200) {\n return response.data;\n } else {\n return null;\n }\n });\n}\n\nexport async function updateBookingResource(\n user: UserSaved,\n id: number,\n body: UpdateContributionBookingResource\n): Promise {\n return axios\n .put(`${apiUrlBase}ContributionBookingResource/${id}`, body, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status === 200) {\n return response.data;\n } else {\n return null;\n }\n });\n}\n\nexport async function updateBookingResourceOrder(\n user: UserSaved,\n id: number,\n index: number\n): Promise {\n return axios\n .put(\n `${apiUrlBase}ContributionBookingResource/${id}/order`,\n { index },\n {\n headers: headers(user.token),\n }\n )\n .then((response) => {\n if (response.status === 200) {\n return response.data;\n } else {\n return null;\n }\n });\n}\n\nexport async function deleteBookingResource(user: UserSaved, id: number): Promise {\n return axios\n .delete(`${apiUrlBase}ContributionBookingResource/${id}`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status === 200) {\n return response.data;\n } else {\n return null;\n }\n });\n}\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { Pressable, StyleSheet, Text, View } from 'react-native';\nimport DraggableFlatList from 'react-native-draggable-flatlist';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport { TouchableOpacity } from 'react-native-gesture-handler';\nimport Feather from 'react-native-vector-icons/Feather';\nimport { useDispatch } from 'react-redux';\nimport Separator from '../../../../components/atomic/Separator';\nimport { DefaultBackground } from '../../../../components/containers/AppScreen';\nimport { TwoActionsGenericPopup } from '../../../../components/containers/TwoActionsButtonPopup';\nimport { t } from '../../../../services/translations';\nimport { alertInfo, isMobile } from '../../../../services/utils';\nimport { setLoading } from '../../../../store/action';\nimport { ALERT_COLOR, DARK_GRAY, PRIMARY_COLOR } from '../../../../styles/appColor';\nimport { FONT_FAMILY_DEFAULT } from '../../../../styles/globalStyle';\nimport { FloatingButtons } from '../../contribution/FloatingButtons';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport useContributionListRefresh from '../../../../hooks/useContributionListRefresh';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport {\n deleteBookingResource,\n getAdminBookingResources,\n updateBookingResourceOrder,\n} from '../../../../services/api/booking.contribution.api';\nimport { ContributionBookingResourceSummary } from '../../../../entities/ContributionBookingResourceSummary';\nimport { ScreenNames } from '../../../../ScreenNames';\n\nexport default function ListBookingResourcesScreen() {\n const [items, setItems] = useState([]);\n const user = useLoggedUser();\n const dispatch = useDispatch();\n const navigation = useNavigation>();\n\n const { isLoading, refetch: refresh } = useQuery(\n ['admin-booking-resources', user?.id],\n () => getAdminBookingResources(user),\n {\n onError: () => {\n alertInfo(t('unknown_error'));\n },\n onSuccess: (newEntries) => {\n setItems(newEntries);\n },\n }\n );\n\n const { mutateAsync: updateOrder } = useMutation({\n mutationFn: async (args: { id: number; index: number }) => updateBookingResourceOrder(user, args.id, args.index),\n onSuccess: (newEntries) => {\n setItems(newEntries);\n },\n });\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n // Refresh after an update\n useContributionListRefresh(refresh);\n\n const handleDelete = useCallback(\n async (id: number) => {\n await deleteBookingResource(user, id);\n refresh();\n },\n [user, refresh]\n );\n const padding = isMobile() ? 10 : 30;\n\n return (\n \n {\n const itemId = items[from].id;\n setItems(data);\n updateOrder({ id: itemId, index: to });\n }}\n scrollEnabled\n dragItemOverflow\n style={styles.scrollView}\n containerStyle={styles.scrollView}\n contentContainerStyle={[\n styles.scrollViewContent,\n {\n paddingHorizontal: padding,\n },\n ]}\n renderItem={({ item, drag }) => (\n \n \n \n \n navigation.navigate(ScreenNames.BookingAdminUpdate, { id: item.id })}\n >\n {item.name}\n \n \n handleDelete(item.id)}\n onPressButton2={() => {}}\n >\n \n \n \n )}\n keyExtractor={(item) => item.id.toString()}\n ItemSeparatorComponent={Separator}\n />\n navigation.navigate(ScreenNames.BookingAdminCreate)} />\n \n );\n}\n\nconst styles = StyleSheet.create({\n scrollView: {\n flex: 1,\n },\n scrollViewContent: {\n paddingTop: 10,\n paddingBottom: 80,\n },\n itemContainer: {\n flexDirection: 'row',\n width: '100%',\n alignItems: 'center',\n },\n itemActions: {\n color: PRIMARY_COLOR,\n minWidth: 24,\n },\n actionIcon: {\n marginRight: 10,\n },\n contentContainer: {\n marginVertical: 10,\n flexDirection: 'row',\n justifyContent: 'space-between',\n flex: 1,\n },\n itemLabel: {\n fontFamily: FONT_FAMILY_DEFAULT.bold,\n fontSize: 16,\n color: DARK_GRAY,\n },\n editButton: {\n marginRight: 10,\n },\n});\n","import React from 'react';\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';\nimport * as Yup from 'yup';\nimport ContributionSpreadingField, {\n contributionSpreadingFieldValidators,\n} from '../../../../components/atomic/formik/ContributionSpreadingField';\nimport SubmitButton from '../../../../components/atomic/formik/SubmitButton';\nimport TextField from '../../../../components/atomic/formik/TextField';\nimport { AppScreen } from '../../../../components/containers/AppScreen';\nimport { t } from '../../../../services/translations';\n\nexport const schema = Yup.object({\n name: Yup.string().min(1).required(t('field_required')),\n ...contributionSpreadingFieldValidators,\n});\n\nexport type BookingResourcesFormFieldsProps = {\n isEditing?: boolean | undefined;\n};\n\nexport default function BookingResourcesFormFields({ isEditing }: BookingResourcesFormFieldsProps) {\n return (\n \n \n \n \n \n \n \n );\n}\n","import React, { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { View } from 'react-native';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport Form from '../../../../components/atomic/formik/Form';\nimport { setContributionsListNeedsRefresh, setLoading } from '../../../../store/action';\nimport { alertInfo } from '../../../../services/utils';\nimport { t } from '../../../../services/translations';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport { UpdateContributionBookingResource } from '../../../../entities/UpdateContributionBookingResource';\nimport { getBookingResourceDetails, updateBookingResource } from '../../../../services/api/booking.contribution.api';\nimport BookingResourcesFormFields, { schema } from './BookingResourcesFormFields';\n\nexport type UpdateBookingResourcesScreenProps = {\n route: {\n params: {\n id?: string;\n };\n };\n};\n\nexport default function UpdateBookingResourcesScreen({ route }: UpdateBookingResourcesScreenProps) {\n const user = useLoggedUser();\n const id = (route.params.id && parseInt(route.params.id, 10)) || null;\n const navigation = useNavigation>();\n const dispatch = useDispatch();\n\n const {\n data,\n isLoading: isLoadingQuery,\n isError: isErrorQuery,\n isFetched,\n } = useQuery(['bookingResourceDetails', id], () => getBookingResourceDetails(user, id || 0), { cacheTime: 0 });\n\n const {\n mutateAsync,\n isLoading: isLoadingMutation,\n isError: isErrorMutation,\n } = useMutation({\n mutationFn: async (values: UpdateContributionBookingResource) => {\n if (!id) {\n throw new Error('Missing id');\n }\n\n await updateBookingResource(user, id, values);\n dispatch(setContributionsListNeedsRefresh(true));\n navigation.goBack();\n },\n });\n\n const isLoading = isLoadingQuery || isLoadingMutation;\n const isError = isErrorQuery || isErrorMutation;\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n // Display error message if needed\n useEffect(() => {\n if (isError) {\n alertInfo(t('error_occurred'));\n }\n }, [isError]);\n\n return isFetched ? (\n e.userId),\n entrepriseServiceIds: data?.contribution?.entrepriseServices.map((e) => e.entrepriseServiceId),\n entrepriseSiteGeoIds: data?.contribution?.entrepriseSiteGeos.map((e) => e.entrepriseSiteGeoId),\n entrepriseGroupIds: data?.contribution?.entrepriseGroups.map((e) => e.entrepriseGroupId),\n }}\n onSubmit={mutateAsync as any}\n validationSchema={schema}\n validateOnMount\n >\n \n \n ) : (\n \n );\n}\n","import React, { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useMutation } from '@tanstack/react-query';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport Form from '../../../../components/atomic/formik/Form';\nimport { setContributionsListNeedsRefresh } from '../../../../store/action';\nimport { alertInfo } from '../../../../services/utils';\nimport { t } from '../../../../services/translations';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport BookingResourcesFormFields, { schema } from './BookingResourcesFormFields';\nimport { createBookingResource } from '../../../../services/api/booking.contribution.api';\nimport { CreateContributionBookingResource } from '../../../../entities/CreateContributionBookingResource';\n\nexport default function CreateBookingResourcesScreen() {\n const user = useLoggedUser();\n const navigation = useNavigation>();\n const dispatch = useDispatch();\n\n const { mutateAsync, isError } = useMutation({\n mutationFn: async (values: CreateContributionBookingResource) => {\n await createBookingResource(user, values);\n dispatch(setContributionsListNeedsRefresh(true));\n navigation.goBack();\n },\n });\n\n // Display error message if needed\n useEffect(() => {\n if (isError) {\n alertInfo(t('error_occurred'));\n }\n }, [isError]);\n\n return (\n
\n \n \n );\n}\n","import React from 'react';\nimport { createStackNavigator } from '@react-navigation/stack';\nimport { ScreenNames } from '../ScreenNames';\nimport ListBookingResourcesScreen from '../screens/loggedIn/admin/booking/ListBookingResourcesScreen';\nimport { t } from '../services/translations';\nimport BackIcon from '../components/atomic/BackIcon';\nimport UpdateBookingResourcesScreen from '../screens/loggedIn/admin/booking/UpdateBookingResourcesScreen';\nimport CreateBookingResourcesScreen from '../screens/loggedIn/admin/booking/CreateBookingResourcesScreen';\nimport { BACKGROUND_COLOR } from '../styles/appColor';\n\nconst Stack = createStackNavigator();\n\nexport function BookingAdminRouter() {\n return (\n \n \n \n \n \n );\n}\n","import React from 'react';\nimport { t } from '../services/translations';\nimport { DirectoryScreen } from '../screens/loggedIn/DirectoryScreen';\nimport { ContributionType } from '../types';\nimport { createStackNavigator } from '@react-navigation/stack';\nimport { CompanyAdminMainScreen } from '../screens/loggedIn/admin/CompanyAdminMainScreen';\nimport { SuggestionsAdministrationRoute } from './SuggestionsAdministrationRoute';\nimport { CompanyNewsAdministrationRoute } from './CompanyNewsAdministrationRoute';\nimport { SurveyAdministrationRoute } from './SurveyAdministrationRoute';\nimport { ContributionListScreen } from '../screens/loggedIn/contribution/ContributionListScreen';\nimport { GetContributionsMode } from '../services/api/getContributionsMode';\nimport { ScreenNames } from '../ScreenNames';\nimport { CategoriesAdministrationRoute } from './CategoriesAdministrationRoute';\nimport { OrganizationalChartAdminRouter } from './OrganizationalChartAdminRouter';\nimport { hasLicenceBooking, hasLicenceOrganizationalChart } from '../services/licences';\nimport { CompanyGroupAdminRouter } from './CompanyGroupAdminRouter';\nimport { ValidationMapAdministrationRoute } from './ValidationMapAdministrationRoute';\nimport StatisticsScreen from '../screens/loggedIn/admin/StatisticsScreen';\nimport useLoggedUser from '../hooks/useLoggedUser';\nimport AdminScreenRoute from './AdminScreenRoute';\nimport EditSiteGeoScreenSettings from '../screens/loggedIn/admin/EditSiteGeoScreenSettings';\nimport BackIcon from '../components/atomic/BackIcon';\nimport BirthdaysScreen from '../screens/loggedIn/admin/BirthdaysScreen';\nimport { BookingAdminRouter } from './BookingAdminRouter';\nimport { BACKGROUND_COLOR } from '../styles/appColor';\n\nconst Stack = createStackNavigator();\n\nexport function AdminRoute() {\n const user = useLoggedUser();\n\n return (\n \n \n \n \n \n \n \n \n \n \n {hasLicenceOrganizationalChart(user) && (\n \n )}\n {hasLicenceBooking(user) && (\n \n )}\n \n \n \n \n \n );\n}\n","import React, { useEffect } from 'react';\nimport { View } from 'react-native';\nimport { useDispatch } from 'react-redux';\nimport { setLoading } from '../../store/action';\nimport { DefaultBackground } from './AppScreen';\n\nconst FormLoading = () => {\n const dispatch = useDispatch();\n useEffect(() => {\n dispatch(setLoading(true));\n\n return () => {\n dispatch(setLoading(false));\n }; \n }, []);\n\n return (\n \n \n );\n};\n\nexport default FormLoading;\n","import { useEffect, useState } from 'react';\nimport { Category } from '../entities/Category';\nimport { getCategoriesByType } from '../services/api/category.api';\nimport { ContributionType } from '../types';\nimport useLoggedUser from './useLoggedUser';\n\nconst useCategories = (type: ContributionType) => {\n const user = useLoggedUser();\n const [categories, setCategories] = useState(undefined);\n\n useEffect(() => {\n getCategoriesByType(user.entrepriseId, type, user).then(setCategories);\n }, [user.entrepriseId, user, type, setCategories]);\n\n return { categories: !!categories ? categories.filter((category) => category.id >= 0) : [], loading: !categories };\n};\n\nexport default useCategories;\n","import React from 'react';\nimport { NEWS_PUBLICATION_MODE_ENABLED } from '../../services/features';\nimport { t } from '../../services/translations';\nimport { DateField, FormFieldPicker } from './FormField';\n\nexport interface PublicationModePickerProps {\n mode: string | null;\n visibleStartDate: string | undefined;\n visibleEndDate: string | undefined;\n onChangeMode: (mode: string | null) => void;\n onChangeStartDate: (visibleStartDate: string | undefined) => void;\n onChangeEndDate: (visibleEndDate: string | undefined) => void;\n}\n\nconst PublicationModePicker = ({\n onChangeMode,\n onChangeEndDate,\n onChangeStartDate,\n mode,\n visibleEndDate,\n visibleStartDate,\n}: PublicationModePickerProps) => {\n return (\n <>\n {\n onChangeMode(mode);\n onChangeStartDate(\n mode === 'planned_with_start_date' || mode === 'planned_with_start_and_end_date'\n ? new Date().toISOString()\n : undefined\n );\n onChangeEndDate(mode === 'planned_with_start_and_end_date' ? new Date().toISOString() : undefined);\n }}\n data={[\n { label: t('immediate_posting'), value: 'immediate_posting' },\n { label: t('planned_with_start_date'), value: 'planned_with_start_date' },\n { label: t('planned_with_start_and_end_date'), value: 'planned_with_start_and_end_date' },\n ]}\n />\n {(mode === 'planned_with_start_date' || mode === 'planned_with_start_and_end_date') && (\n \n )}\n {mode === 'planned_with_start_and_end_date' && (\n \n )}\n \n );\n};\n\nexport default PublicationModePicker;\n","import React from 'react';\nimport { useField } from 'formik';\nimport PublicationModePicker from '../PublicationModePicker';\n\nexport type PublicationModeFieldProps = {\n modeName: string;\n visibleStartDateName: string;\n visibleEndDateName: string;\n};\n\nexport default function PublicationModeField({\n modeName,\n visibleStartDateName,\n visibleEndDateName,\n}: PublicationModeFieldProps) {\n const [modeField, , modeHelper] = useField(modeName);\n const [visibleStartDateField, , visibleStartDateHelper] = useField(visibleStartDateName);\n const [visibleEndDateField, , visibleEndDateNameHelper] = useField(visibleEndDateName);\n\n return (\n \n );\n}\n","import React from 'react';\nimport { Icon } from '@rneui/base';\nimport { TouchableOpacity } from 'react-native-gesture-handler';\nimport { NEWS_TRANSLATION_ENABLED } from '../../services/features';\nimport { PRIMARY_COLOR } from '../../styles/appColor';\nimport AppText from './AppText';\nimport { StyleSheet } from 'react-native';\n\nexport interface LanguageSelectorProps {\n language: {\n code: string;\n text: string;\n };\n onPress: (code: string) => void;\n}\n\nexport default function LanguageSelector({ onPress, language: e }: LanguageSelectorProps) {\n return (\n onPress(e.code)}\n >\n \n {e.text}\n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'row',\n alignItems: 'center',\n marginBottom: 5,\n backgroundColor: 'white',\n borderColor: PRIMARY_COLOR,\n borderWidth: 1,\n marginRight: 10,\n padding: 5,\n borderRadius: 5,\n opacity: !NEWS_TRANSLATION_ENABLED ? 1 : 0.5,\n },\n});\n","import React, { useCallback } from 'react';\nimport { StyleSheet, TouchableOpacity, View } from 'react-native';\nimport { useField, useFormikContext } from 'formik';\nimport { useDispatch } from 'react-redux';\nimport { Icon } from '@rneui/base';\nimport { FormField } from '../FormField';\nimport { availableLanguages, t } from '../../../services/translations';\nimport AppText, { Mode } from '../AppText';\nimport { getLibelleFromCode } from '../../../languages/language_mapping';\nimport LanguageSelector from '../LanguageSelector';\nimport translate, { DeeplLanguages } from 'deepl';\nimport { setLoading } from '../../../store/action';\n\nexport type TranslationsFieldProps = {\n name: string;\n prefillFields: {\n source: string;\n destination: string;\n }[];\n render: (args: { name: string; lng: string }) => React.ReactNode;\n};\n\nexport default function TranslationsField({ name, prefillFields, render }: TranslationsFieldProps) {\n const dispatch = useDispatch();\n const formikContext = useFormikContext();\n const [field, , helper] = useField(name);\n const value = field.value as { lng: string }[];\n\n const addNewTranslation = useCallback(\n async (lng: string) => {\n const translation = { lng } as any;\n\n if (prefillFields) {\n dispatch(setLoading(true));\n\n for (const key in prefillFields) {\n try {\n const response = await translate({\n free_api: true,\n text: formikContext.values[prefillFields[key].source] as string,\n target_lang: lng.split('-')[0] as DeeplLanguages,\n auth_key: '94f4223b-fcc2-1bee-34e3-4c8f3f62a6b8:fx',\n });\n\n const translatedValue = response.data.translations[0].text;\n translation[prefillFields[key].destination] = translatedValue;\n } catch (e) {\n console.error(e);\n }\n }\n\n dispatch(setLoading(false));\n }\n\n helper.setValue([...value, translation]);\n },\n [dispatch, prefillFields, formikContext.values, helper, value]\n );\n\n return (\n \n {value.map((tr, k) => (\n \n \n \n {getLibelleFromCode(tr.lng)}\n \n {\n let newTranslations = value.filter((el) => el.lng !== tr.lng);\n helper.setValue(newTranslations);\n }}\n >\n \n \n \n {render({ name: name + '[' + k + ']', lng: tr.lng })}\n \n ))}\n \n {availableLanguages\n .filter((e) => value.findIndex((x) => x.lng === e.code) < 0)\n .map((e) => (\n addNewTranslation(e.code)} />\n ))}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n translationContainer: { borderTopWidth: 1 },\n translationHeaderContainer: { flexDirection: 'row', justifyContent: 'center', alignItems: 'center' },\n translationTitle: {\n marginBottom: 10,\n fontSize: 20,\n textAlign: 'center',\n flex: 1,\n marginTop: 10,\n },\n availableLanguageContainer: { flexDirection: 'row', flexWrap: 'wrap', marginBottom: 10 },\n});\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nexport enum SpreadingType {\r\n Entreprise = 'Entreprise',\r\n Users = 'Users',\r\n Services = 'Services',\r\n Sites = 'Sites',\r\n SitesAndServices = 'SitesAndServices',\r\n Groups = 'Groups',\r\n}\r\n","import React, { useEffect, useMemo, useState } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport * as Yup from 'yup';\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';\nimport { DefaultBackground } from '../../../../components/containers/AppScreen';\nimport useCategories from '../../../../hooks/useCategories';\nimport { NEWS_PUBLICATION_MODE_ENABLED } from '../../../../services/features';\nimport { t } from '../../../../services/translations';\nimport { hasSubAdminRight, isAdmin, isMobile } from '../../../../services/utils';\nimport { ContributionType } from '../../../../types';\nimport ContributionAuthorizationsField from '../../../../components/atomic/formik/ContributionAuthorizationsField';\nimport ContributionSpreadingField from '../../../../components/atomic/formik/ContributionSpreadingField';\nimport SubmitButton from '../../../../components/atomic/formik/SubmitButton';\nimport TextField from '../../../../components/atomic/formik/TextField';\nimport RichTextField from '../../../../components/atomic/formik/RichTextField';\nimport { SelectField } from '../../../../components/atomic/formik/SelectField';\nimport PublicationModeField from '../../../../components/atomic/formik/PublicationModeField';\nimport TranslationsField from '../../../../components/atomic/formik/TranslationsField';\nimport { SpreadingType } from '../../../../entities/SpreadingType';\nimport { useFormikContext } from 'formik';\nimport { CompanyNewsUpload } from '../../../../models/CompanyNews';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport PhotoListField from '../../../../components/atomic/formik/PhotoListField';\n\nexport const schema = Yup.object({\n titre: Yup.string().required(t('field_required')).min(1),\n texte: Yup.string().required(t('field_required')).min(1),\n spreadingType: Yup.number().required(),\n userIds: Yup.array(Yup.number()).when('spreadingType', (spreadingType, schema) => {\n if (spreadingType === SpreadingType.Users) {\n return schema.required().min(1);\n }\n }),\n entrepriseSiteGeoIds: Yup.array(Yup.number()).when('spreadingType', (spreadingType, schema) => {\n if ([SpreadingType.Sites, SpreadingType.SitesAndServices].includes(spreadingType)) {\n return schema.required().min(1);\n }\n }),\n entrepriseServiceIds: Yup.array(Yup.number()).when('spreadingType', (spreadingType, schema) => {\n if ([SpreadingType.Services, SpreadingType.SitesAndServices].includes(spreadingType)) {\n return schema.required().min(1);\n }\n }),\n entrepriseGroupIds: Yup.array(Yup.number()).when('spreadingType', (spreadingType, schema) => {\n if (spreadingType === SpreadingType.Groups) {\n return schema.required().min(1);\n }\n }),\n});\n\ntype NewsFormFieldsProps = {\n isEditing?: boolean | undefined;\n};\n\nexport default function NewsFormFields({ isEditing }: NewsFormFieldsProps) {\n const loggedUser = useLoggedUser();\n const [needsValidation, setNeedsValidation] = useState(false);\n const { categories } = useCategories(ContributionType.COMPANY_NEWS);\n\n const { values, setFieldValue } = useFormikContext();\n\n const showEmailActivated = useMemo(() => {\n const now = new Date();\n const visibleStartDate = values.visibleStartDate && new Date(values.visibleStartDate);\n\n return (\n values.publicationMode === 'immediate_posting' || !visibleStartDate || visibleStartDate.getTime() < now.getTime()\n );\n }, [values.publicationMode, values.visibleStartDate]);\n\n useEffect(() => {\n if (!showEmailActivated) {\n setFieldValue('emailActivated', false);\n }\n }, [showEmailActivated, setFieldValue]);\n\n const hasRights =\n isAdmin(loggedUser) ||\n hasSubAdminRight(loggedUser, values.entrepriseServiceIds, values.entrepriseSiteGeoIds, values.entrepriseGroupIds);\n\n return (\n \n \n \n \n \n (\n <>\n \n \n \n )}\n />\n \n \n {hasRights && (\n \n \n \n )}\n {categories && categories.length > 0 && (\n ({ label: category.name, value: category.id }))}\n />\n )}\n \n \n \n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n background: { padding: isMobile() ? 10 : 30 },\n container: { padding: 10 },\n highlightedContainer: { marginTop: 10 },\n categoryField: { marginTop: 10 },\n submitContainer: { marginTop: 30, marginBottom: 100 },\n});\n","import React from 'react';\nimport { useDispatch } from 'react-redux';\nimport FormLoading from '../../../../components/containers/FormLoading';\nimport { CompanyNewsUpload } from '../../../../models/CompanyNews';\nimport { postCompanyNews } from '../../../../services/api/news.contributions.api';\nimport { t } from '../../../../services/translations';\nimport { alertInfo, hasSubAdminRight, isAdmin, sendSuccessText } from '../../../../services/utils';\nimport { setContributionsListNeedsRefresh, setLoading } from '../../../../store/action';\nimport { ContributionType } from '../../../../types';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport NewsFormFields, { schema } from './NewsFormFields';\nimport Form from '../../../../components/atomic/formik/Form';\nimport { useMutation } from '@tanstack/react-query';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\n\nexport default function CreateNewsScreen() {\n const dispatch = useDispatch();\n const user = useLoggedUser();\n const navigation = useNavigation>();\n\n const { mutateAsync, isLoading } = useMutation({\n mutationFn: async (body: CompanyNewsUpload) => {\n dispatch(setLoading(true));\n return postCompanyNews(user, body);\n },\n onSuccess: (_, values) => {\n const hasRights =\n isAdmin(user) ||\n hasSubAdminRight(user, values.entrepriseServiceIds, values.entrepriseSiteGeoIds, values.entrepriseGroupIds);\n\n alertInfo(sendSuccessText(user, ContributionType.COMPANY_NEWS, hasRights));\n dispatch(setContributionsListNeedsRefresh(true));\n navigation.goBack();\n },\n onError: () => {\n alertInfo(t('error_occurred'));\n },\n onSettled: () => {\n dispatch(setLoading(false));\n },\n });\n\n if (isLoading) {\n return ;\n }\n\n return (\n \n \n \n );\n}\n","import React from 'react';\nimport { FlatList, RefreshControl, StyleSheet } from 'react-native';\nimport { isMobile } from '../../services/utils';\nimport { ProfileCard } from '../atomic/ProfileCard';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport { listNewsInterestedUsers } from '../../services/api/news.contributions.api';\nimport usePaginatedList from '../../hooks/usePaginatedList';\nimport AppText from '../atomic/AppText';\nimport { LIGHT_GRAY } from '../../styles/appColor';\nimport { t } from '../../services/translations';\n\nexport type NewsInterestedUserListProps = {\n id: number;\n};\n\nexport default function NewsInterestedUserList({ id }: NewsInterestedUserListProps) {\n const user = useLoggedUser();\n\n const { data, isLoading, fetchNext, refresh } = usePaginatedList(\n (cursor: string | null) => listNewsInterestedUsers(user, id, cursor),\n ['news-interested-users', id]\n );\n\n return (\n }\n keyExtractor={(item) => item.id.toString()}\n refreshControl={}\n ListEmptyComponent={{t('no_contributions')}}\n onEndReached={fetchNext}\n />\n );\n}\n\nconst styles = StyleSheet.create({\n contentContainer: isMobile()\n ? {}\n : {\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n emptyText: {\n textAlign: 'center',\n color: LIGHT_GRAY,\n },\n});\n","import React, { useEffect, useState } from 'react';\nimport { StyleSheet, TouchableOpacity, View } from 'react-native';\nimport { DrawerScreenProps } from '@react-navigation/drawer';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { AppButton, Type } from '../../../../components/atomic/AppButton';\nimport AppText, { Mode } from '../../../../components/atomic/AppText';\nimport { CategoryChip } from '../../../../components/atomic/CategoryChip';\nimport { HtmlText } from '../../../../components/atomic/HtmlText';\nimport SpreadingChipList from '../../../../components/atomic/SpreadingChipsList';\nimport { UserProfileOverlay } from '../../../../components/atomic/UserProfileOverlay';\nimport { UserSubRow } from '../../../../components/atomic/UserSubRow';\nimport { DefaultBackground } from '../../../../components/containers/AppScreen';\nimport { CommentList } from '../../../../components/molecules/CommentList';\nimport {\n getCompanyNewsDetail,\n setFavoriteNews,\n setInterestedNews,\n} from '../../../../services/api/news.contributions.api';\nimport { t } from '../../../../services/translations';\nimport { alertInfo, getReadableDate, isAdmin, isMobile, isSubAdmin } from '../../../../services/utils';\nimport { ContributionType } from '../../../../types';\nimport { BigDetailRow, ViewDetailRow, BigDetailRowInline } from '../ContributionItemDetailScreen';\nimport { ContentWithImageHeaderScreen } from '../../../../components/containers/ContentWithImageHeaderScreen';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport FormLoading from '../../../../components/containers/FormLoading';\nimport NewsInterestedUserList from '../../../../components/molecules/NewsInterestedUserList';\nimport { setCompanyNewsView } from '../../../../services/api/interest.contributions.api';\nimport { useDispatch } from 'react-redux';\nimport { setCurrentContribution, setDetailContributionType, setForceBack, setIsNotif } from '../../../../store/action';\n\ntype NewsDetailScreenParams = { id: number; isNotif: boolean | undefined; isAdminView: boolean | undefined };\ntype NewsDetailScreenProps = DrawerScreenProps;\n\nexport default function NewsDetailScreen({ route }: NewsDetailScreenProps) {\n const dispatch = useDispatch();\n const user = useLoggedUser();\n const params = route.params as NewsDetailScreenParams;\n const navigation = useNavigation>();\n const [authorDetailsVisible, setAuthorDetailsVisible] = useState(false);\n const [showInterestedUserList, setShowInterestedUserList] = useState(false);\n const isLoggedUserAdmin = isAdmin(user) || isSubAdmin(user);\n\n const { data, isLoading, refetch } = useQuery(\n ['news-details', params.id],\n () => getCompanyNewsDetail(user, params.id),\n { enabled: !!user }\n );\n\n const { mutateAsync: toggleInterest, isLoading: isLoadingToggleInterest } = useMutation({\n mutationFn: async () => {\n if (!data) {\n return;\n }\n\n return await setInterestedNews(user, data.id, { interested: !data.isInterested });\n },\n onError: () => {\n alertInfo(t('error_occurred'));\n },\n onSuccess: () => {\n refetch();\n },\n });\n\n const { mutateAsync: toggleFavorite, isLoading: isLoadingToggleFavorite } = useMutation({\n mutationFn: async () => {\n if (!data) {\n return;\n }\n\n return await setFavoriteNews(user, data.id, { favorite: !data.isFavorite });\n },\n onError: () => {\n alertInfo(t('error_occurred'));\n },\n onSuccess: () => {\n refetch();\n },\n });\n\n useEffect(() => {\n if (data) {\n setCompanyNewsView(user, data.mActuId).then(() => refetch());\n }\n }, [data, user, refetch]);\n\n useEffect(() => {\n if (!data) {\n return;\n }\n\n dispatch(setCurrentContribution(data));\n dispatch(setDetailContributionType(ContributionType.COMPANY_NEWS));\n\n if (route.params?.isNotif) {\n dispatch(setIsNotif(true));\n }\n\n if (route.params?.isAdminView) {\n dispatch(setForceBack(true));\n }\n }, [dispatch, data, route.params?.isNotif, route.params?.isAdminView]);\n\n if (isLoading || !data) {\n return ;\n }\n\n return (\n \n \n \n \n {getReadableDate(data.visibleStartDate ? data.visibleStartDate : data.dateCreation, true)}\n \n
\n }\n navigation={navigation}\n >\n \n \n \n {data.titre}\n \n \n {!!data.category && (\n \n \n \n )}\n \n } />\n {isLoggedUserAdmin && (\n <>\n \n \n \n )}\n setShowInterestedUserList(!showInterestedUserList)}>\n \n \n {showInterestedUserList && }\n \n \n \n }\n title={t('who_can_see')}\n />\n \n {!!data?.author && data?.author.aspNetUsers?.deletedAt === null && (\n setAuthorDetailsVisible(true)}\n />\n )}\n \n \n \n setAuthorDetailsVisible(false)}\n userProfileData={data.author}\n isVisible={authorDetailsVisible}\n />\n {!!data.commentsActivated && }\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n underImageContent: {\n flexDirection: 'row',\n paddingTop: 10,\n paddingLeft: 10,\n paddingRight: 10,\n width: isMobile() ? undefined : 540,\n },\n underImageContentText: { width: isMobile() ? undefined : 200, textAlign: 'right' },\n userSubRow: { flex: 1 },\n header: { padding: 18 },\n buttonsSection: {\n paddingVertical: 20,\n gap: 20,\n },\n infoText: {\n fontSize: 16,\n },\n titleContainer: { flexDirection: 'row', alignItems: 'center' },\n title: {\n flex: 1,\n fontSize: 20,\n textAlign: 'center',\n },\n categoryContainer: { flexDirection: 'row', justifyContent: 'center' },\n category: { marginLeft: 8, marginVertical: 16, height: 24 },\n chipContainer: { flexDirection: 'row', flexWrap: 'wrap', width: '100%' },\n});\n","import React from 'react';\nimport { View } from 'react-native';\nimport AppText, { Mode } from './AppText';\n\nexport type BadgeProps = {\n value?: number | null;\n};\n\nexport function Badge({ value }: BadgeProps) {\n return value ? (\n \n \n {value}\n \n \n ) : null;\n}\n","import React, { useEffect } from 'react';\nimport { PRIMARY_COLOR } from '../../styles/appColor';\nimport { StyleSheet, TouchableOpacity } from 'react-native';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { RootState } from '../../services/storage';\nimport { navigateToMessaging } from '../../utils/Messaging';\nimport { Badge } from './Badge';\nimport { fetchUnseenMessagingMessageCount } from '../../store/messaging';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\n\nexport function MessagingButton() {\n const unseenMessageCount = useSelector((state) => state.messaging.unseenMessageCount);\n const user = useLoggedUser();\n const dispatch = useDispatch();\n const navigation = useNavigation>();\n\n // Update unseen message count\n useEffect(() => {\n fetchUnseenMessagingMessageCount(dispatch, user);\n }, [dispatch, user]);\n\n return (\n navigateToMessaging(navigation)}>\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n touchable: { paddingHorizontal: 12, flexDirection: 'row' },\n});\n","/**\r\n * This is a TypeGen auto-generated file.\r\n * Any changes made to this file can be lost when this file is regenerated.\r\n */\r\n\r\nimport { User } from './User';\r\n\r\nexport enum UserTokenSource {\r\n ANDROID,\r\n IOS,\r\n WEB,\r\n}\r\n\r\nexport interface UserToken {\r\n userId: number;\r\n deviceToken: string;\r\n source: UserTokenSource | null;\r\n user: User;\r\n}\r\n","import axios from './base';\nimport { headers } from './base';\nimport { apiUrlBase } from '../../../configuration';\nimport * as Notifications from 'expo-notifications';\nimport { Notification } from '../../entities/Notification';\nimport { UserSaved } from '../storage';\nimport { match } from 'ts-pattern';\nimport { Platform } from 'react-native';\nimport { UserTokenSource } from '../../entities/UserToken';\n\nexport function markAsReadNotification(notificationId: number): Promise {\n return axios.get(apiUrlBase + 'notifications/read/' + notificationId);\n}\n\nexport async function readUserNotifications(userId: number) {\n return axios.get(`${apiUrlBase}notifications/user/${userId}/read-all`);\n}\n\nexport async function getNotificationsCount(user: UserSaved): Promise {\n const response = await axios.get(`${apiUrlBase}notifications/user/${user.id}/count`, {\n headers: headers(user.token),\n });\n\n const count = (await response.data) as number;\n try {\n await Notifications.setBadgeCountAsync(count);\n } catch {}\n\n return count;\n}\n\nexport async function getNotifications(user: UserSaved): Promise {\n return axios\n .get(apiUrlBase + 'Notifications/user/' + user.id, {\n headers: headers(user.token),\n })\n .then((r) => r.data);\n}\n\nexport function updateDeviceToken(user: UserSaved, deviceToken: string) {\n var source = match(Platform.OS)\n .with('android', () => UserTokenSource.ANDROID)\n .with('ios', () => UserTokenSource.IOS)\n .otherwise(() => UserTokenSource.WEB);\n\n return axios.post(\n apiUrlBase + 'UserTokens',\n {\n userId: user.id,\n deviceToken: deviceToken,\n source,\n },\n {\n headers: headers(user.token),\n }\n );\n}\n\nexport function deleteDeviceToken(accessToken: string, deviceToken: string) {\n return axios.delete(apiUrlBase + 'UserTokens', {\n headers: headers(accessToken),\n data: {\n userId: 0,\n deviceToken: deviceToken,\n },\n });\n}\n","import { AnyAction, Dispatch } from 'redux';\nimport * as Notifications from 'expo-notifications';\nimport { ScreenNames } from '../ScreenNames';\nimport { GetContributionsMode } from '../services/api/getContributionsMode';\nimport { UserSaved } from '../services/storage';\nimport { ContributionType } from '../types';\nimport { getCustomModuleContributionsDetails } from '../services/api/custom.module.api';\nimport { setLoading } from '../store/action';\nimport { NavigationProp } from '@react-navigation/native';\nimport { match } from 'ts-pattern';\nimport { markAsReadNotification } from '../services/api/notification.api';\nimport { isMobile } from '../services/utils';\nimport { navigateToMessaging, navigateToMessagingThread } from './Messaging';\nimport { messagingMessageReceived, messagingThreadSeenReceived } from '../store/messaging';\n\nexport type NotificationType =\n | {\n type: 'redirection';\n notificationId: string;\n contributionId: string;\n contributionType: string;\n isAdminView: string;\n }\n | {\n type: 'new_message';\n id: string;\n threadId: string;\n content: string;\n fileId: string;\n dateCreated: string;\n userId: string;\n profileFileId: string;\n firstName: string;\n lastName: string;\n }\n | {\n type: 'thread_seen';\n threadId: string;\n userId: string;\n date: string;\n };\n\nexport const navigateToNotification = (\n contributionType: ContributionType,\n postId: number,\n isAdminView: boolean,\n user: UserSaved,\n dispatch: Dispatch,\n navigation: NavigationProp\n) => {\n if (contributionType === ContributionType.ALL) {\n navigation.navigate(ScreenNames.CompanyAdminMain, {\n screen: ScreenNames.ContributionsAdministration,\n initial: false,\n params: {\n getContributionsMode: GetContributionsMode.all,\n contributionType: ContributionType.ALL,\n isSignaled: true,\n isAdminView: true,\n isNotif: true,\n },\n });\n } else if (contributionType === ContributionType.COMPANY_NEWS) {\n navigation.navigate(ScreenNames.LoggedInDrawerNavigation, {\n screen: ScreenNames.DetailCompanyNews,\n params: {\n id: postId,\n isNotif: true,\n },\n });\n } else if (contributionType === ContributionType.CUSTOM_MODULE) {\n navigateToCustomModuleDetails(postId, user, dispatch, navigation);\n } else {\n navigation.navigate(ScreenNames.LoggedInDrawerNavigation, {\n screen: ScreenNames.ContributionItemDetailScreen,\n params: {\n id: postId,\n contributionType: contributionType,\n isNotif: true,\n isAdminView,\n },\n });\n }\n};\n\nasync function navigateToCustomModuleDetails(\n postId: number,\n user: UserSaved,\n dispatch: Dispatch,\n navigation: NavigationProp\n) {\n dispatch(setLoading(true));\n let customModule = await getCustomModuleContributionsDetails(user, postId);\n dispatch(setLoading(false));\n\n navigation.reset({\n index: 1,\n routes: [\n {\n name: customModule.module?.identifier || '',\n state: {\n index: 0,\n routes: [{ name: ScreenNames.CustomModuleTabs }],\n },\n },\n {\n name: ScreenNames.CustomModuleDetails,\n params: {\n id: postId,\n isNotif: true,\n },\n },\n ],\n });\n}\n\nexport async function onNotificationOpenedAppHandler(\n messageData: NotificationType | undefined,\n user: UserSaved,\n dispatch: Dispatch,\n navigation: NavigationProp\n) {\n match(messageData)\n .with({ type: 'redirection' }, ({ notificationId, contributionId, contributionType, isAdminView }) => {\n markAsReadNotification(parseInt(notificationId, 10)).finally(async () => {\n try {\n if (isMobile()) {\n await Notifications.setBadgeCountAsync((await Notifications.getBadgeCountAsync()) - 1);\n }\n } catch (error) {\n console.error('Failed to decrease badge count');\n }\n\n navigateToNotification(\n parseInt(contributionType, 10) as ContributionType,\n parseInt(contributionId, 10),\n isAdminView === 'true',\n user,\n dispatch,\n navigation\n );\n });\n })\n .with({ type: 'new_message' }, (data) => {\n navigateToMessaging(navigation);\n navigateToMessagingThread(navigation, {\n id: parseInt(data.threadId, 10),\n contactFirstName: data.firstName,\n contactLastName: data.lastName,\n });\n })\n .with({ type: 'thread_seen' }, () => {})\n .with(undefined, () => {})\n .exhaustive();\n}\n\nexport async function onMessageHandler(messageData: NotificationType | undefined, dispatch: Dispatch) {\n match(messageData)\n .with({ type: 'redirection' }, () => {})\n .with({ type: 'new_message' }, (data) => {\n messagingMessageReceived(dispatch, {\n ...data,\n id: parseInt(data.id, 10),\n threadId: parseInt(data.threadId, 10),\n fileId: parseInt(data.fileId, 10),\n userId: parseInt(data.userId, 10),\n profileFileId: parseInt(data.profileFileId, 10),\n });\n })\n .with({ type: 'thread_seen' }, (data) => {\n messagingThreadSeenReceived(\n dispatch,\n parseInt(data.threadId, 10),\n parseInt(data.userId, 10),\n new Date(data.date)\n );\n })\n .with(undefined, () => {})\n .exhaustive();\n}\n","import React, { useEffect, useState } from 'react';\nimport { PRIMARY_COLOR, PRIMARY_COLOR_LIGHT } from '../../styles/appColor';\nimport { FlatList, RefreshControl, TouchableOpacity } from 'react-native';\nimport { useDispatch } from 'react-redux';\nimport AppText, { Mode } from './AppText';\nimport { globalStyle } from '../../styles/globalStyle';\nimport { getReadableDate, isMobile, routeFromNotification } from '../../services/utils';\nimport {\n getNotifications,\n getNotificationsCount,\n markAsReadNotification,\n readUserNotifications,\n} from '../../services/api/notification.api';\nimport { AppModalOverlay } from './AppModalOverlay';\nimport { t } from '../../services/translations';\nimport * as Notifications from 'expo-notifications';\nimport { Notification } from '../../entities/Notification';\nimport { navigateToNotification } from '../../utils/Notification';\nimport { Badge } from './Badge';\nimport { Chip } from './Chip';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport { useNavigation } from '@react-navigation/native';\n\nfunction NotificationsList(props: { onExit: () => void }) {\n const [notifications, setNotifications] = useState([]);\n const [refreshing, setRefreshing] = useState(false);\n const user = useLoggedUser();\n const navigation = useNavigation();\n\n const dispatch = useDispatch();\n\n useEffect(() => {\n _onRefresh();\n }, []);\n\n function _onRefresh() {\n setRefreshing(true);\n getNotifications(user)\n .then((json) => setNotifications(json.reverse()))\n .finally(() => setRefreshing(false));\n }\n\n function _handleClick(notification: Notification) {\n Notifications.getBadgeCountAsync().then((count) => {\n markAsReadNotification(notification.id).finally(async () => {\n try {\n if (isMobile()) {\n await Notifications.setBadgeCountAsync(count - 1);\n }\n } catch (error) {\n console.error('Failed to decrease badge count');\n }\n props.onExit();\n if (!!notification.post && !!notification.contributionType) {\n navigateToNotification(\n notification.contributionType,\n notification.post,\n notification.isAdminView,\n user,\n dispatch,\n navigation\n );\n } else {\n routeFromNotification(\n dispatch,\n notification.title,\n notification.content,\n notification.contributionId,\n notification.contributionType\n );\n }\n });\n });\n }\n\n function handleReadAll() {\n Notifications.setBadgeCountAsync(0);\n readUserNotifications(user.id).finally(() => props.onExit());\n }\n\n return (\n <>\n \n }\n keyExtractor={(n) => n.id.toString()}\n renderItem={(n) => (\n _handleClick(n.item)}\n >\n {n.item.title}\n {n.item.content}\n {getReadableDate(n.item.dateCreated)}\n \n )}\n />\n \n );\n}\n\nexport function NotificationButton() {\n const [modalVisible, setModalVisible] = useState(false);\n const [notificationsCount, setNotificationsCount] = useState(0);\n const user = useLoggedUser();\n\n useEffect(() => {\n _refresh();\n }, []);\n\n function _refresh() {\n getNotificationsCount(user)\n .then(setNotificationsCount)\n .catch(() => {});\n }\n\n return (\n setModalVisible(!modalVisible)}\n >\n \n \n {modalVisible ? (\n setModalVisible(false)}\n isVisible={modalVisible}\n >\n {\n _refresh();\n setModalVisible(false);\n }}\n />\n \n ) : null}\n \n );\n}\n","import React from 'react';\nimport { View } from 'react-native';\nimport { hasLicenceMessaging } from '../../services/licences';\nimport { MessagingButton } from './MessagingButton';\nimport { NotificationButton } from './NotificationButton';\nimport useLoggedUser from '../../hooks/useLoggedUser';\n\nexport function HeaderButtons() {\n const user = useLoggedUser();\n\n return (\n \n {hasLicenceMessaging(user) && }\n \n \n );\n}\n","import React, { ReactNode, useCallback, useEffect, useState } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { useNavigationBuilder, createNavigatorFactory, ParamListBase, StackRouter } from '@react-navigation/native';\nimport { Header } from '@rneui/base';\nimport { StackNavigationProp, StackView } from '@react-navigation/stack';\nimport { useDeviceSize } from '../../hooks/useDeviceSize';\nimport { isMobile } from '../../services/utils';\nimport { BACKGROUND_COLOR } from '../../styles/appColor';\n\nexport type ResponsiveStackNavigatorProps<\n ParamList extends ParamListBase,\n RouteName extends keyof ParamList = keyof ParamList,\n NavigatorID extends string | undefined = undefined\n> = {\n children: ReactNode;\n initialRouteName: string;\n leftRender: string;\n} & StackNavigationProp;\n\nfunction ResponsiveStackNavigator<\n ParamList extends ParamListBase,\n RouteName extends keyof ParamList = keyof ParamList,\n NavigatorID extends string | undefined = undefined\n>({ children, initialRouteName, ...rest }: ResponsiveStackNavigatorProps) {\n const { state, navigation, descriptors, NavigationContent } = useNavigationBuilder(StackRouter, {\n initialRouteName,\n children,\n });\n\n const { isSmallMediumDevice } = useDeviceSize();\n\n const descriptorValues = Object.values(descriptors);\n const rightDescriptor = descriptorValues.length > 1 ? descriptorValues[descriptorValues.length - 1] : undefined;\n const rightComponent = rightDescriptor?.render() || <>;\n\n // Reinitialize history of the navigator\n const reinitializeHistory = useCallback(() => {\n const mainRootName = state.routeNames[0];\n const lastRoute = state.routes[state.routes.length - 1];\n\n if (lastRoute.name === mainRootName) {\n navigation.reset({\n index: 0,\n routes: [{ name: mainRootName }],\n });\n } else {\n navigation.reset({\n index: 1,\n routes: [{ name: mainRootName }, { name: lastRoute.name, params: lastRoute.params }],\n });\n }\n }, [navigation, state]);\n\n // If the device width break, we reinitialize the history\n const [lastSmallMediumDevice, setLastSmallMediumDevice] = useState(null);\n useEffect(() => {\n if (isSmallMediumDevice !== lastSmallMediumDevice) {\n reinitializeHistory();\n setLastSmallMediumDevice(isSmallMediumDevice);\n }\n }, [reinitializeHistory, isSmallMediumDevice, lastSmallMediumDevice, descriptors]);\n\n // Reinitialize the history on web page load\n // Needs to be reworked to use something else than timeout,\n // Reinitialize don't works on component mount, i don't know why\n if (!isMobile()) {\n useEffect(() => {\n setTimeout(function () {\n reinitializeHistory();\n }, 10);\n }, []);\n }\n\n // Stack View for small device, thread list of left otherwise\n if (isSmallMediumDevice) {\n return (\n \n \n \n \n \n );\n } else {\n return (\n \n \n \n \n\n {descriptorValues[0] ? descriptorValues[0].render() : <>}\n \n \n {rightDescriptor && (\n \n )}\n {rightComponent}\n \n \n \n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n flexDirection: 'row',\n },\n headingContainer: {},\n headingLeft: {\n marginVertical: 'auto',\n },\n heading: {\n paddingVertical: 16,\n fontSize: 20,\n marginVertical: 'auto',\n },\n left: {},\n right: { flex: 1, paddingBottom: !isMobile() ? 60 : 0, backgroundColor: BACKGROUND_COLOR },\n mobile: { flex: 1, paddingBottom: !isMobile() ? 60 : 0, backgroundColor: BACKGROUND_COLOR },\n});\n\nconst createResponsiveStackNavigator = createNavigatorFactory(ResponsiveStackNavigator);\n\nexport default createResponsiveStackNavigator;\n","import React, { useCallback, useMemo } from 'react';\nimport { StyleProp, StyleSheet, Text, TouchableOpacity, View, ViewStyle } from 'react-native';\nimport Swipeable from 'react-native-gesture-handler/Swipeable';\nimport AppText from './AppText';\nimport { ProfilePicture } from './ProfilePicture';\nimport { FONT_FAMILY_DEFAULT, globalStyle } from '../../styles/globalStyle';\nimport { MessagingThread } from '../../entities/MessagingThread';\nimport { navigateToMessagingThread } from '../../utils/Messaging';\nimport { t } from '../../services/translations';\nimport { deleteMessagingThread } from '../../store/messaging';\nimport { useDispatch } from 'react-redux';\nimport { IconButton } from './IconButton';\nimport { isMobile } from '../../services/utils';\nimport { Badge } from './Badge';\nimport { ALERT_COLOR, BACKGROUND_COLOR } from '../../styles/appColor';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\n\nexport function MessagingThreadRow({ messagingThread }: { messagingThread: MessagingThread }) {\n const user = useLoggedUser();\n const dispatch = useDispatch();\n const navigation = useNavigation>();\n\n const lastMessageStyle: StyleProp = useMemo(\n () => ({\n fontSize: 12,\n marginBottom: 11,\n fontFamily: messagingThread.seen ? FONT_FAMILY_DEFAULT.regular : FONT_FAMILY_DEFAULT.bold,\n }),\n [messagingThread]\n );\n\n const deleteThread = useCallback(() => {\n deleteMessagingThread(dispatch, user, messagingThread.id);\n }, [dispatch, user, messagingThread.id]);\n\n const rightSwipeActions = useCallback(\n () => (\n \n {t('delete')}\n \n ),\n [deleteThread]\n );\n\n return (\n \n navigateToMessagingThread(navigation, messagingThread)}>\n \n {messagingThread.unseenCount && messagingThread.unseenCount > 0 ? (\n \n ) : null}\n \n \n \n {messagingThread.contactFirstName} {messagingThread.contactLastName}\n \n \n {messagingThread.lastMessage}\n \n \n {!isMobile() ? : undefined}\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'row',\n backgroundColor: BACKGROUND_COLOR,\n marginHorizontal: 10,\n },\n content: {\n flexDirection: 'column',\n flex: 1,\n justifyContent: 'center',\n marginLeft: 10,\n },\n rightSwipeContainer: {\n backgroundColor: ALERT_COLOR,\n justifyContent: 'center',\n alignItems: 'flex-end',\n },\n rightSwipeText: {\n fontWeight: '600',\n paddingHorizontal: 30,\n paddingVertical: 20,\n color: '#fff',\n },\n contactText: {\n fontSize: 14,\n fontFamily: FONT_FAMILY_DEFAULT.bold,\n marginBottom: 11,\n },\n});\n","import { useCallback, useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { MessagingThread } from '../entities/MessagingThread';\nimport { RootState } from '../services/storage';\nimport { MessagingState, fetchNextMessagingThreads, resetMessagingThreads } from '../store/messaging';\nimport useLoggedUser from './useLoggedUser';\n\nexport type MessagingThreadResult = {\n threads: MessagingThread[];\n nextCursor: string | null;\n isLoading: boolean;\n fetchNext: () => Promise;\n refresh: () => Promise;\n};\n\nexport default function useMessagingThreads(searchFilter?: string | null): MessagingThreadResult {\n const user = useLoggedUser();\n const state = useSelector((state) => state.messaging);\n const dispatch = useDispatch();\n\n const fetchNext = useCallback(async () => {\n if (!state.nextCursor) {\n return;\n }\n\n fetchNextMessagingThreads(dispatch, user, state.nextCursor, searchFilter);\n }, [dispatch, user, state.nextCursor, searchFilter]);\n\n const refresh = useCallback(async () => {\n resetMessagingThreads(dispatch, user, searchFilter);\n }, [dispatch, user, searchFilter]);\n\n // Initialize by fetching first\n useEffect(() => {\n refresh();\n }, [searchFilter]);\n\n return {\n ...state,\n fetchNext,\n refresh,\n };\n}\n","import React, { useState } from 'react';\nimport { RefreshControl, FlatList, View, StyleSheet, Platform, AppState, DimensionValue } from 'react-native';\nimport { MessagingThreadRow } from '../../components/atomic/MessagingThreadRow';\nimport { SearchTextInput } from '../../components/atomic/SearchTextInput';\nimport useMessagingThreads from '../../hooks/useMessagingThreads';\nimport { navigateToMessagingCreateThread } from '../../utils/Messaging';\nimport { FloatingButtons } from '../loggedIn/contribution/FloatingButtons';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport { BACKGROUND_COLOR } from '../../styles/appColor';\n\nexport function MessagingMainScreen() {\n const navigation = useNavigation>();\n const [search, setSearch] = useState();\n const { threads, isLoading, fetchNext, refresh } = useMessagingThreads(search);\n\n // Refresh when this screen is displayed by a notification on iOS\n React.useEffect(() => {\n if (Platform.OS === 'ios') {\n const subscription = AppState.addEventListener('change', (nextAppState) => {\n if (nextAppState === 'active') {\n refresh();\n }\n });\n\n return () => {\n subscription.remove();\n };\n }\n }, [refresh]);\n\n return (\n \n \n }\n onEndReached={fetchNext}\n data={threads}\n renderItem={({ item }) => }\n keyExtractor={(item) => item.id.toString()}\n />\n navigateToMessagingCreateThread(navigation)} />\n \n );\n}\n\nconst styles = StyleSheet.create({\n container:\n Platform.OS === 'web'\n ? {\n paddingTop: 16,\n backgroundColor: BACKGROUND_COLOR,\n flex: 1,\n width: '40vw' as DimensionValue,\n }\n : {\n paddingTop: 16,\n backgroundColor: BACKGROUND_COLOR,\n flex: 1,\n },\n search: {\n marginHorizontal: 16,\n },\n});\n","import React from 'react';\nimport { UsersList } from '../../components/molecules/UsersList';\nimport { navigateToMessagingNewThread } from '../../utils/Messaging';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\n\nexport function MessagingCreateThreadScreen() {\n const navigation = useNavigation>();\n\n return navigateToMessagingNewThread(navigation, user)} />;\n}\n","import { useCallback, useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { MessagingMessage } from '../entities/MessagingMessage';\nimport { MessagingThreadMember } from '../entities/MessagingThreadMember';\nimport { getThreadIdByContactId, postNewThread } from '../services/api/messaging.api';\nimport { RootState } from '../services/storage';\nimport {\n ThreadMessages,\n defaultThreadMessageState,\n fetchMessagingThreadMembers,\n fetchNextMessagingThreadMessages,\n markMessagingThreadAsSeen,\n resetMessagingThreadMessages,\n sendNewMessagingMessage,\n} from '../store/messaging';\nimport useLoggedUser from './useLoggedUser';\n\nexport type MessagingThreadMessagesResult = {\n messages: (MessagingMessage & {\n isLoading: boolean;\n })[];\n members: MessagingThreadMember[];\n nextCursor: string | null;\n isLoading: boolean;\n threadId: number | null;\n fetchNext: () => Promise;\n refresh: () => Promise;\n sendNewMessage: (body: { message: string | null; file: Blob | null }) => Promise;\n};\n\nexport default function useMessagingThreadMessages(\n paramThreadId: number | null | undefined,\n contactId: number | null | undefined\n): MessagingThreadMessagesResult {\n const user = useLoggedUser();\n const threadMessages = useSelector((state) => state.messaging.threadMessages);\n\n const [lastMessageIdentifier, setLastMessageIdentifier] = useState(0);\n const [threadId, setThreadId] = useState(paramThreadId || null);\n const dispatch = useDispatch();\n const state = (threadId && threadMessages[threadId]) || defaultThreadMessageState;\n\n useEffect(() => {\n setThreadId(paramThreadId || null);\n }, [paramThreadId]);\n\n const generateNewMessageIdentifier = useCallback(() => {\n let identifier = lastMessageIdentifier + 1;\n setLastMessageIdentifier(identifier);\n\n return identifier;\n }, [lastMessageIdentifier]);\n\n const fetchNext = useCallback(async () => {\n if (!threadId) {\n return;\n }\n\n if (!state.nextCursor) {\n return;\n }\n\n fetchNextMessagingThreadMessages(dispatch, user, threadId, state.nextCursor);\n }, [dispatch, user, threadId, state.nextCursor]);\n\n const refresh = useCallback(async () => {\n if (!threadId) {\n return;\n }\n\n fetchMessagingThreadMembers(dispatch, user, threadId);\n resetMessagingThreadMessages(dispatch, user, threadId);\n }, [dispatch, user, threadId]);\n\n const sendNewMessage = useCallback(\n async (body: { message: string | null; file: Blob | null }) => {\n if (threadId) {\n const identifier = generateNewMessageIdentifier();\n\n sendNewMessagingMessage(dispatch, user, identifier, threadId, body);\n } else if (contactId) {\n const result = await postNewThread(user, contactId, body);\n setThreadId(result);\n }\n },\n [generateNewMessageIdentifier, contactId, user, threadId]\n );\n\n const refreshContactThread = useCallback(async () => {\n if (!threadId && contactId) {\n const result = await getThreadIdByContactId(user, contactId);\n setThreadId(result);\n }\n }, [user, threadId, contactId]);\n\n // Initialize by fetching if empty\n useEffect(() => {\n if (state.messages.length === 0) {\n refresh();\n }\n }, [threadId, state.messages.length]);\n\n useEffect(() => {\n if (!threadId && contactId) {\n refreshContactThread();\n }\n }, [threadId, contactId]);\n\n // Fetch members\n useEffect(() => {\n if (threadId && !state.members?.length) {\n fetchMessagingThreadMembers(dispatch, user, threadId);\n }\n }, [dispatch, user, threadId, state.members]);\n\n // Mark as seen if the thread change or a message is received\n useEffect(() => {\n if (threadId) {\n markMessagingThreadAsSeen(dispatch, user, threadId);\n }\n }, [threadId, state.messages.length]);\n\n return {\n ...state,\n threadId,\n fetchNext,\n refresh,\n sendNewMessage,\n };\n}\n","import axios from './base';\nimport { apiUrlBase } from '../../../configuration';\nimport { Fichier } from '../../entities/Fichier';\nimport { UserSaved } from '../storage';\nimport { headers } from './base';\n\nexport async function getFileDetails(user: UserSaved, id: number): Promise {\n return axios\n .get(`${apiUrlBase}Fichiers/${id}`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n","import { useQuery } from '@tanstack/react-query';\nimport React, { useEffect, useState } from 'react';\nimport { Image, ImageStyle, View } from 'react-native';\nimport Feather from 'react-native-vector-icons/Feather';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport { match, P } from 'ts-pattern';\nimport { getFileDetails } from '../../services/api/file.api';\nimport { getDocumentURI } from '../../services/api/helper.api';\nimport { PickPhotoOrDocumentResult } from '../../services/utils';\nimport Pdf from './Pdf';\nimport { fileToBase64 } from '../../utils/Utils';\n\nexport type FilePreviewProps = {\n source: Blob | { id: number } | PickPhotoOrDocumentResult | undefined | null;\n style: ImageStyle;\n};\n\nexport function FilePreview({ source, style }: FilePreviewProps) {\n const user = useLoggedUser();\n const [uri, setUri] = useState(null);\n\n useEffect(() => {\n if (!!source?.uri) {\n setUri(source?.uri);\n } else if (!!source?.id) {\n setUri(getDocumentURI(source?.id));\n } else if (source instanceof Blob) {\n fileToBase64(source).then(setUri);\n }\n }, [source]);\n\n // Get document informations if needed\n const { data: documentDetails } = useQuery(\n ['document', source?.id],\n async () => {\n if (source?.id) {\n return await getFileDetails(user, source?.id);\n }\n },\n {\n enabled: !!source?.id,\n }\n );\n\n const mime = documentDetails?.format.toLowerCase() || source?.type?.toLowerCase() || null;\n\n return uri ? (\n match(mime)\n .with(P.union('image/jpeg', 'image/png', 'image/gif', 'image/webp', 'image/svg+xml'), () => (\n \n ))\n .with('application/pdf', () => )\n .otherwise(() => (\n \n \n \n ))\n ) : (\n <>\n );\n}\n","import React from 'react';\nimport { StyleSheet, View, Text, TouchableOpacity } from 'react-native';\nimport * as Localization from 'expo-localization';\nimport { formatInTimeZone, zonedTimeToUtc } from 'date-fns-tz';\nimport {\n DARK_GRAY,\n PRIMARY_COLOR,\n PRIMARY_COLOR_DARKEN,\n PRIMARY_COLOR_LIGHT,\n SECONDARY_COLOR_DARKEN,\n SECONDARY_COLOR_LIGHT,\n} from '../../styles/appColor';\nimport { apiTimeZone } from '../../../configuration';\nimport { FilePreview } from './FilePreview';\nimport { getDocumentURI } from '../../services/api/helper.api';\nimport { isMobile, openURL } from '../../services/utils';\nimport Feather from 'react-native-vector-icons/Feather';\n\nexport type ChatBubbleProps = {\n message: string | null;\n fileId: number | null;\n me?: boolean;\n date?: Date;\n isLoading?: boolean;\n};\n\nexport function ChatBubble({ message, fileId, me, date, isLoading }: ChatBubbleProps) {\n const zonedDate = date && zonedTimeToUtc(date, apiTimeZone);\n\n return (\n \n {fileId && (\n \n \n openURL(getDocumentURI(fileId))}>\n \n \n \n )}\n {message && {message}}\n {zonedDate && !isNaN(zonedDate.getTime()) && (\n {formatInTimeZone(zonedDate, Localization.timezone, 'HH:mm')}\n )}\n \n );\n}\n\nconst styles = StyleSheet.create({\n meContainer: {\n backgroundColor: PRIMARY_COLOR_LIGHT,\n },\n notMeContainer: {\n backgroundColor: SECONDARY_COLOR_LIGHT,\n },\n isLoadingContainer: {\n opacity: 0.7,\n },\n commonContainer: {\n padding: 8,\n marginVertical: 4,\n borderRadius: 8,\n flexDirection: 'row',\n flexWrap: 'wrap',\n ...(!isMobile() ? { overflowWrap: 'break-word' } : {}),\n },\n filePreviewContainer: {\n flexDirection: 'row',\n width: '100%',\n },\n fileActionContainer: {\n flex: 1,\n justifyContent: 'flex-start',\n alignItems: 'flex-end',\n marginHorizontal: 10,\n },\n filePreview: {\n width: 80,\n marginBottom: 20,\n },\n meText: {\n color: PRIMARY_COLOR_DARKEN,\n },\n notMeText: {\n color: SECONDARY_COLOR_DARKEN,\n },\n commonText: {\n fontSize: 14,\n flexWrap: 'wrap',\n width: '100%',\n ...(!isMobile() ? { overflowWrap: 'break-word' } : {}),\n },\n dateText: {\n color: DARK_GRAY,\n fontSize: 12,\n paddingLeft: 8,\n textAlign: 'right',\n marginLeft: 'auto',\n },\n});\n","import React, { useMemo } from 'react';\nimport { SectionList, View, Text, StyleSheet, RefreshControl } from 'react-native';\nimport { format, max } from 'date-fns';\nimport * as Localization from 'expo-localization';\nimport { groupByAdjacent } from '../../utils/Utils';\nimport { ChatBubble } from '../atomic/ChatBubble';\nimport { ProfilePicture } from '../atomic/ProfilePicture';\nimport { MessagingMessage } from '../../entities/MessagingMessage';\nimport { dateLocale, t } from '../../services/translations';\nimport { FONT_FAMILY_DEFAULT } from '../../styles/globalStyle';\nimport { MessagingThreadMember } from '../../entities/MessagingThreadMember';\nimport { isMobile } from '../../services/utils';\nimport { utcToZonedTime, zonedTimeToUtc } from 'date-fns-tz';\nimport { apiTimeZone } from '../../../configuration';\nimport useLoggedUser from '../../hooks/useLoggedUser';\n\nexport type MessageListProps = {\n messages: (MessagingMessage & {\n isLoading: boolean;\n })[];\n members: MessagingThreadMember[];\n isLoading: boolean;\n refresh: () => Promise;\n fetchNext: () => Promise;\n};\n\nexport function MessageList({ messages, members, isLoading, refresh, fetchNext }: MessageListProps) {\n const user = useLoggedUser();\n const locale = dateLocale();\n\n const lastRead = useMemo(\n () =>\n max(members?.map((e) => new Date(e.lastSeen))) ||\n utcToZonedTime(zonedTimeToUtc(new Date(), Localization.timezone), apiTimeZone),\n [members]\n );\n\n const messagesByUser = useMemo(\n () =>\n groupByAdjacent(\n messages.map((e) => ({ ...e, seen: new Date(e.dateCreated) <= lastRead })),\n (message) =>\n JSON.stringify({\n userId: message.user.id,\n date: format(new Date(message.dateCreated), 'yyyy-MM-dd'),\n seen: message.seen,\n })\n ).map((messageGroup) => ({\n user: messageGroup[0].user,\n seen: messageGroup[0].seen,\n data: messageGroup,\n dateCreated: new Date(messageGroup[0].dateCreated),\n })),\n [messages, lastRead]\n );\n\n return (\n : undefined}\n onEndReached={fetchNext}\n sections={messagesByUser}\n keyExtractor={(item) => item.id.toString()}\n stickySectionHeadersEnabled={false}\n renderItem={({ item }) => (\n \n )}\n renderSectionFooter={({ section }) => (\n \n \n \n \n {section.user.firstName} {section.user.lastName}\n \n {format(section.dateCreated, 'd MMMM yyyy', { locale })}\n \n \n )}\n renderSectionHeader={({ section }) =>\n section.user.id === user.id ? (\n \n {section.seen ? t('seen') : t('sent')}\n \n ) : null\n }\n inverted\n />\n );\n}\n\nconst styles = StyleSheet.create({\n commonSection: {\n paddingVertical: 8,\n },\n sectionMe: {\n flexDirection: 'row',\n },\n sectionNotMe: {\n flexDirection: 'row-reverse',\n },\n sectionTextArea: {\n justifyContent: 'space-around',\n },\n sectionMeTextArea: {\n paddingLeft: 8,\n },\n sectionNotMeTextArea: {\n paddingRight: 8,\n alignItems: 'flex-end',\n },\n sectionText: {\n fontFamily: FONT_FAMILY_DEFAULT.bold,\n fontSize: 12,\n },\n sectionFooter: {\n paddingBottom: 8,\n },\n});\n","import React, { useMemo, useState } from 'react';\nimport { Platform, TextInput, TextInputProps, TextStyle } from 'react-native';\nimport { match } from 'ts-pattern';\nimport { FONT_FAMILY_DEFAULT } from '../../styles/globalStyle';\n\nexport type AutoExpandingTextInputProps = Omit, 'onContentSizeChange'>;\n\nexport default function AutoExpandingTextInput({ style, children, ...rest }: AutoExpandingTextInputProps) {\n const [height, setHeight] = useState(0);\n\n const internStyle = useMemo(\n () =>\n match(Platform.OS)\n .with('android', () => ({\n width: '100%',\n height,\n maxHeight: 150,\n fontFamily: FONT_FAMILY_DEFAULT.regular,\n fontSize: 14,\n paddingHorizontal: 15,\n paddingVertical: 7.5,\n borderRadius: 8,\n }))\n .with('ios', () => ({\n width: '100%',\n height: height + 10,\n maxHeight: 150,\n fontFamily: FONT_FAMILY_DEFAULT.regular,\n fontSize: 14,\n paddingHorizontal: 15,\n paddingVertical: 0,\n borderRadius: 8,\n outlineStyle: 'none',\n }))\n .with('web', () => ({\n width: '100%',\n height,\n maxHeight: 150,\n fontFamily: FONT_FAMILY_DEFAULT.regular,\n fontSize: 14,\n paddingHorizontal: 15,\n paddingVertical: 15,\n borderRadius: 8,\n outlineStyle: 'none',\n }))\n .otherwise(() => ({})),\n [height]\n );\n\n return (\n {\n setHeight(event.nativeEvent.contentSize.height);\n }}\n style={[style, internStyle]}\n {...rest}\n />\n );\n}\n","import { Icon } from '@rneui/base';\nimport React, { useCallback, useState } from 'react';\nimport { View, StyleSheet, TouchableOpacity } from 'react-native';\nimport Entypo from 'react-native-vector-icons/Entypo';\nimport { isMobile, pickDocument, takePhoto } from '../../services/utils';\nimport { DARK_GRAY, LIGHT_GRAY, PRIMARY_COLOR, PRIMARY_COLOR_DARKEN } from '../../styles/appColor';\nimport AppText, { Mode } from '../atomic/AppText';\nimport AutoExpandingTextInput from '../atomic/AutoExpandingTextInput';\nimport { FilePreview } from '../atomic/FilePreview';\nimport { IconButton } from '../atomic/IconButton';\n\nexport type NewMessageFormProps = {\n sendNewMessage: (body: { message: string | null; file: Blob | null }) => Promise;\n};\n\nexport function NewMessageForm({ sendNewMessage }: NewMessageFormProps) {\n const [message, setMessage] = useState('');\n const [file, setFile] = useState(null);\n\n const isValid = !!message || !!file;\n\n const send = useCallback(async () => {\n if (isValid) {\n await sendNewMessage({ message, file });\n setMessage('');\n setFile(null);\n }\n }, [message, isValid, sendNewMessage, setMessage]);\n\n const handlePickDocumentPressed = useCallback(() => {\n pickDocument().then((result) => {\n if (result) {\n setFile(result);\n }\n });\n }, [setFile]);\n\n const handleTakePhotoPressed = useCallback(() => {\n takePhoto().then((result) => {\n if (result) {\n setFile(result);\n }\n });\n }, [setFile]);\n\n return (\n \n \n {file && (\n \n \n \n {file.name || file.fileName}\n \n setFile(null)} />\n \n )}\n \n setMessage(value)} style={styles.input} />\n {!file && (\n \n {isMobile() && (\n \n )}\n \n \n )}\n \n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'row',\n paddingBottom: 10,\n position: 'relative',\n },\n input: {\n flex: 1,\n color: PRIMARY_COLOR_DARKEN,\n },\n button: {\n marginLeft: 10,\n marginVertical: 2,\n },\n inputContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n actionContainer: isMobile()\n ? {\n flexDirection: 'row',\n alignItems: 'flex-end',\n paddingLeft: 8,\n paddingRight: 8,\n height: '100%',\n }\n : {\n flexDirection: 'row',\n alignItems: 'flex-end',\n paddingVertical: 4,\n paddingHorizontal: 8,\n height: '100%',\n },\n action: {\n padding: 5,\n },\n fileContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n borderColor: LIGHT_GRAY,\n borderWidth: 1,\n borderRadius: 5,\n padding: 5,\n margin: 5,\n marginBottom: 10,\n backgroundColor: 'rgba(0, 0, 0, 0.03)',\n },\n filePreview: {\n width: 80,\n },\n fileTextContainer: {\n flex: 1,\n marginLeft: 10,\n },\n});\n","import React from 'react';\nimport { StyleSheet, KeyboardAvoidingView, Platform, AppState, View } from 'react-native';\nimport { RouteProp } from '@react-navigation/native';\nimport useMessagingThreadMessages from '../../hooks/useMessagingThreadMessages';\nimport { MessageList } from '../../components/molecules/MessageList';\nimport { NewMessageForm } from '../../components/molecules/NewMessageForm';\nimport { SafeAreaProvider, SafeAreaView } from 'react-native-safe-area-context';\nimport { BACKGROUND_COLOR } from '../../styles/appColor';\n\nexport type MessagingThreadScreenProps = {\n route: RouteProp;\n};\n\nexport function MessagingThreadScreen({ route }: MessagingThreadScreenProps) {\n const paramThreadId: number | null | undefined = route?.params?.threadId;\n const contactId: number | null | undefined = route?.params?.contactId;\n\n const { isLoading, messages, members, fetchNext, refresh, sendNewMessage } = useMessagingThreadMessages(\n paramThreadId,\n contactId\n );\n\n // Refresh when this screen is displayed by a notification on iOS\n React.useEffect(() => {\n if (Platform.OS === 'ios') {\n const subscription = AppState.addEventListener('change', (nextAppState) => {\n if (nextAppState === 'active') {\n refresh();\n }\n });\n\n return () => {\n subscription.remove();\n };\n }\n }, [refresh]);\n\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n safeAreaView: {\n flex: 1,\n },\n container: {\n flex: 1,\n paddingHorizontal: 16,\n backgroundColor: BACKGROUND_COLOR,\n },\n});\n","import React from 'react';\nimport { TouchableOpacity } from 'react-native';\nimport { Icon } from '@rneui/base';\nimport { t } from '../services/translations';\nimport { ScreenNames } from '../ScreenNames';\nimport createResponsiveStackNavigator from '../components/atomic/ReponsiveStackNavigator';\nimport { MessagingMainScreen } from '../screens/messaging/MessagingMainScreen';\nimport { MessagingCreateThreadScreen } from '../screens/messaging/MessagingCreateThread';\nimport { MessagingThreadScreen } from '../screens/messaging/MessagingThreadScreen';\n\nconst ResponsiveStack = createResponsiveStackNavigator();\n\nexport function MessagingRoute() {\n return (\n \n ({\n headerShown: true,\n title: t('messaging'),\n headerLeft: () => (\n navigation.openDrawer()}\n style={{\n width: 40,\n height: 40,\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: 'rgba(255,255,255,0.4)',\n borderRadius: 60,\n margin: 10,\n }}\n >\n \n \n ),\n })}\n />\n \n ({\n headerShown: true,\n title: route?.params?.threadName || t('messaging'),\n headerBackTitle: t('back'),\n })}\n />\n \n );\n}\n","import React, { useMemo, useState } from 'react';\nimport { StyleSheet, StyleProp, ViewStyle, Pressable, View } from 'react-native';\nimport Animated, { ZoomIn, ZoomOut } from 'react-native-reanimated';\n\nexport type ZoomableProps = {\n children: React.ReactNode | React.ReactNode[];\n style?: StyleProp;\n contentContainerStyle?: StyleProp;\n};\n\nconst ZOOM_LEVEL = 2;\n\nexport default function Zoomable({ children, style, contentContainerStyle }: ZoomableProps) {\n const [[x, y], setXY] = useState([0, 0]);\n const [containerScreenPosition, setContainerScreenPosition] = useState({ x: 0, y: 0 });\n const [[imgWidth, imgHeight], setSize] = useState([0, 0]);\n const [showMagnifier, setShowMagnifier] = useState(false);\n\n const magnifierWidth = useMemo(() => Math.min(imgWidth, imgHeight) * 0.4, [imgWidth, imgHeight]);\n const magnifierHeight = magnifierWidth;\n const containerStyle: ViewStyle = showMagnifier ? styles.zoomOutCursor : styles.zoomInCursor;\n\n const magnifierContainerStyle: ViewStyle = {\n position: 'absolute',\n height: magnifierHeight,\n width: magnifierWidth,\n top: y - magnifierHeight / 2,\n left: x - magnifierWidth / 2,\n pointerEvents: 'none',\n overflow: 'hidden',\n borderRadius: 10000,\n };\n\n const magnifierDivStyle: React.CSSProperties = {\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n boxShadow: `inset 0px 0px ${magnifierWidth * 0.1}px rgba(0,0,0,0.3)`,\n zIndex: 10,\n borderRadius: 10000,\n };\n\n const magnifierStyle: ViewStyle = {\n width: imgWidth,\n height: imgHeight,\n opacity: 1,\n transformOrigin: 'top left',\n transform: [{ scale: ZOOM_LEVEL }],\n backgroundColor: 'white',\n position: 'absolute',\n left: -x * ZOOM_LEVEL + magnifierWidth / 2,\n top: -y * ZOOM_LEVEL + magnifierHeight / 2,\n };\n\n return (\n {\n const { width, height, left, top } = e.nativeEvent.layout;\n\n setSize([width, height]);\n setContainerScreenPosition({ x: left, y: top });\n }}\n onPress={() => {\n setShowMagnifier(!showMagnifier);\n }}\n onPointerMove={(e) => {\n const { clientX, clientY } = e.nativeEvent;\n setXY([clientX - containerScreenPosition.x, clientY - containerScreenPosition.y]);\n }}\n onPointerLeave={() => {\n setShowMagnifier(false);\n }}\n >\n \n {children}\n {showMagnifier && (\n \n
\n {children}\n \n )}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n overflow: 'hidden',\n },\n contentContainer: {\n flex: 1,\n },\n image: {\n width: '100%',\n height: '100%',\n },\n magnifier: {\n position: 'absolute',\n pointerEvents: 'none',\n opacity: 1,\n borderWidth: 1,\n borderColor: 'red',\n backgroundColor: 'white',\n overflow: 'hidden',\n },\n zoomInCursor: {\n cursor: 'zoom-in',\n },\n zoomOutCursor: {\n cursor: 'zoom-out',\n },\n});\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { Image, StyleSheet, View } from 'react-native';\nimport { useDispatch } from 'react-redux';\nimport { match } from 'ts-pattern';\nimport { Chip } from '../../components/atomic/Chip';\nimport { AppScreen } from '../../components/containers/AppScreen';\nimport HorizontalFlatList from '../../components/containers/HorizontalList';\nimport { OrganizationalChart } from '../../entities/OrganizationalChart';\nimport { contributionColors } from '../../services/api/contributions';\nimport { getDocumentURI } from '../../services/api/helper.api';\nimport { getOrganizationalCharts } from '../../services/api/organizational.chart.api';\nimport { t } from '../../services/translations';\nimport { alertInfo } from '../../services/utils';\nimport { setLoading } from '../../store/action';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport Pdf from '../../components/atomic/Pdf';\nimport Zoomable from '../../components/atomic/Zoomable';\nimport { BACKGROUND_COLOR } from '../../styles/appColor';\n\nconst colorList = Object.values(contributionColors);\n\nexport default function OrganizationChartsScreen() {\n const [isLoading, setIsLoading] = useState(false);\n const [items, setItems] = useState([]);\n const user = useLoggedUser();\n const dispatch = useDispatch();\n const [selectedChart, setSelectedChart] = useState(null);\n\n const refresh = useCallback(async () => {\n setIsLoading(true);\n\n try {\n setItems(await getOrganizationalCharts(user));\n } catch (e) {\n alertInfo(t('unknown_error'));\n } finally {\n setIsLoading(false);\n }\n }, [user]);\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n const currentChart = selectedChart || items[0] || null;\n const contentType = currentChart?.file?.format;\n\n return (\n \n \n item.id.toString()}\n renderItem={({ item, index }) => (\n setSelectedChart(item)}\n />\n )}\n />\n \n \n {currentChart &&\n match(contentType)\n .with('application/pdf', () => (\n \n \n \n ))\n .otherwise(() => (\n \n \n \n ))}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: BACKGROUND_COLOR,\n },\n labelContainers: {\n marginVertical: 10,\n paddingLeft: 10,\n },\n chip: {\n marginRight: 10,\n },\n content: {\n paddingBottom: 10,\n },\n image: {\n width: '100%',\n height: '100%',\n resizeMode: 'contain',\n },\n});\n","import React from 'react';\nimport { useField } from 'formik';\nimport { FormField } from '../FormField';\nimport { FilePicker, FilePickerProps } from '../FilePicker';\n\nexport type FileFieldProps = Omit, 'setFile'>, 'setError'> & {\n name: string;\n title: string;\n required?: boolean;\n};\n\nexport default function FileField({ name, title, required, ...rest }: FileFieldProps) {\n const [field, meta, helper] = useField(name);\n\n return (\n \n {\n helper.setValue(file, true);\n }}\n file={field.value}\n error={meta.touched ? meta.error : undefined}\n setError={helper.setError}\n />\n \n );\n}\n","import axios from './base';\nimport { apiUrlBase } from '../../../configuration';\nimport { headers } from './base';\nimport { UserSaved } from '../storage';\nimport { FolderList } from '../../entities/FolderList';\nimport { FolderCreate } from '../../entities/FolderCreate';\nimport { FolderUpdate } from '../../entities/FolderUpdate';\nimport { DocumentCreate } from '../../entities/DocumentCreate';\nimport { DocumentUpdate } from '../../entities/DocumentUpdate';\nimport { ContributionKiosque } from '../../entities/ContributionKiosque';\nimport { ContributionKiosqueFolder } from '../../entities/ContributionKiosqueFolder';\nimport { objectToFormData } from '../formUtil';\n\nexport async function getDocumentDetails(user: UserSaved, id: number): Promise {\n return axios\n .get(`${apiUrlBase}ContributionKiosques/document/${id}`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function getFolderDetails(user: UserSaved, id: number): Promise {\n return axios\n .get(`${apiUrlBase}ContributionKiosques/folder/${id}`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function listFolder(user: UserSaved, folderId: number | null): Promise {\n return axios\n .get(folderId !== null ? `${apiUrlBase}ContributionKiosques/${folderId}` : `${apiUrlBase}ContributionKiosques`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function listFolderAsAdmin(user: UserSaved, folderId: number | null): Promise {\n return axios\n .get(\n folderId !== null\n ? `${apiUrlBase}ContributionKiosques/admin/${folderId}`\n : `${apiUrlBase}ContributionKiosques/admin`,\n {\n headers: headers(user.token),\n }\n )\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport function createFolder(user: UserSaved, args: FolderCreate) {\n return axios\n .post(`${apiUrlBase}ContributionKiosques/folder`, args, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport function updateFolder(user: UserSaved, id: number, args: FolderUpdate) {\n return axios\n .put(`${apiUrlBase}ContributionKiosques/folder/${id}`, args, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport function createDocument(user: UserSaved, args: DocumentCreate) {\n return axios\n .postForm(`${apiUrlBase}ContributionKiosques/document`, objectToFormData(args), {\n headers: headers(user.token, 'multipart/form-data'),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport function updateDocument(user: UserSaved, id: number, args: DocumentUpdate) {\n return axios\n .putForm(`${apiUrlBase}ContributionKiosques/document/${id}`, objectToFormData(args), {\n headers: headers(user.token, 'multipart/form-data'),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n","import React from 'react';\nimport { Image, StyleSheet, TouchableOpacity, View } from 'react-native';\nimport { getPictureSource } from '../../services/api/helper.api';\nimport { FONT_FAMILY_DEFAULT } from '../../styles/globalStyle';\nimport { DARK_GRAY } from '../../styles/appColor';\nimport { getReadableDate } from '../../services/utils';\nimport AppText from './AppText';\nimport { UserSubRow } from './UserSubRow';\nimport { AspNetUsers } from '../../entities/AspNetUsers';\nimport { MActu } from '../../entities/MActu';\nimport { User } from '../../entities/User';\n\nexport type ListItemRowProps = {\n imageId?: number | null;\n defaultImage: React.ReactNode;\n title: string;\n date: string;\n user: {\n profileFileId: number;\n firstName: string;\n lastName: string;\n deletedAt?: string;\n aspNetUsers?: AspNetUsers;\n mActu?: MActu;\n };\n userIdCreateurNavigation?: User;\n\n left: React.ReactNode;\n onPress?: () => void;\n};\n\nexport default function ListItemRow({ imageId, defaultImage, title, date, user, left, onPress }: ListItemRowProps) {\n return (\n \n \n {imageId ? : defaultImage}\n \n \n {title}\n \n {date && {getReadableDate(date, true)}}\n {user && (\n \n )}\n \n {left}\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n width: '100%',\n flexDirection: 'row',\n marginVertical: 10,\n },\n pictureContainer: {\n width: 80,\n height: 80,\n borderRadius: 10,\n marginRight: 20,\n },\n contentContainer: {\n flex: 1,\n },\n title: {\n fontFamily: FONT_FAMILY_DEFAULT.bold,\n fontSize: 16,\n color: DARK_GRAY,\n },\n dateText: {\n flex: 1,\n fontSize: 12,\n fontStyle: 'italic',\n color: 'black',\n paddingRight: 7,\n },\n});\n","import React from 'react';\nimport { StyleSheet, TouchableOpacity } from 'react-native';\nimport Feather from 'react-native-vector-icons/Feather';\nimport { FONT_FAMILY_DEFAULT } from '../../styles/globalStyle';\nimport { DARK_GRAY, PRIMARY_COLOR } from '../../styles/appColor';\nimport FontAwesome from 'react-native-vector-icons/FontAwesome';\nimport { match } from 'ts-pattern';\nimport { DocumentsMainScreenItem } from '../../screens/loggedIn/contribution/documents/DocumentsMainScreen';\nimport ListItemRow from './ListItemRow';\n\nexport type DocumentItemRowProps = {\n item: DocumentsMainScreenItem;\n actions: {\n label: string;\n renderIcon: (size: number) => JSX.Element;\n onPress: () => void | 0 | null;\n }[];\n isAdminView: boolean;\n onPress?: () => void;\n onSelect?: () => void;\n};\n\nexport default function DocumentItemRow({ item, actions, onPress, onSelect }: DocumentItemRowProps) {\n let imageId = (item as any).imageId;\n\n return (\n \n ) : (\n \n )\n }\n title={item.title}\n date={item.dateCreated}\n user={item.user}\n left={match(actions.length)\n .with(0, () => <>)\n .with(1, () => (\n \n {actions[0].renderIcon(30)}\n \n ))\n .otherwise(() => (\n \n \n \n ))}\n onPress={onPress}\n />\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n width: '100%',\n flexDirection: 'row',\n marginVertical: 10,\n },\n pictureContainer: {\n width: 80,\n height: 80,\n borderRadius: 10,\n marginRight: 20,\n },\n contentContainer: {\n flex: 1,\n },\n topContainer: {\n justifyContent: 'space-between',\n flex: 1,\n },\n bottomContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n flex: 1,\n paddingTop: 16,\n },\n title: {\n fontFamily: FONT_FAMILY_DEFAULT.bold,\n fontSize: 16,\n color: DARK_GRAY,\n },\n dateText: {\n flex: 1,\n fontSize: 12,\n fontStyle: 'italic',\n color: 'black',\n paddingRight: 7,\n },\n downloadIcon: {\n paddingHorizontal: 5,\n },\n actionsContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n});\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { FlatList, Modal, RefreshControl, SafeAreaView, StyleSheet, TouchableOpacity, View } from 'react-native';\nimport { useDispatch } from 'react-redux';\nimport { useQuery } from '@tanstack/react-query';\nimport { Header, Icon } from '@rneui/themed';\nimport { LIGHT_GRAY, PRIMARY_COLOR } from '../../styles/appColor';\nimport { t } from '../../services/translations';\nimport { AppButton, Type } from './AppButton';\nimport { match } from 'ts-pattern';\nimport { listFolderAsAdmin } from '../../services/api/document.contributions.api';\nimport { setLoading } from '../../store/action';\nimport DocumentItemRow from './DocumentItemRow';\nimport AppText from './AppText';\nimport { DocumentsMainScreenItem } from '../../screens/loggedIn/contribution/documents/DocumentsMainScreen';\nimport useLoggedUser from '../../hooks/useLoggedUser';\n\nexport type BrowseFolderDialogProps = {\n isVisible: boolean;\n type: 'add' | 'move';\n onFolderSelected: (folderId: number | null) => void;\n onClose: () => void;\n};\n\nexport default function BrowseFolderDialog({ isVisible, type, onFolderSelected, onClose }: BrowseFolderDialogProps) {\n const [folderIdStack, setFolderIdStack] = useState([]);\n const currentFolderId = folderIdStack.length > 0 ? folderIdStack[folderIdStack.length - 1] : null;\n\n const user = useLoggedUser();\n const dispatch = useDispatch();\n const queryFunction = useCallback(() => listFolderAsAdmin(user, currentFolderId), [currentFolderId, user]);\n const {\n data,\n isLoading,\n refetch: refresh,\n } = useQuery(['folderListAdmins', currentFolderId], queryFunction, { cacheTime: 0 });\n\n // Format items from fetched data\n const items = useMemo(() => {\n const documents = data?.documents.map((e) => ({ type: 'document', ...e })) ?? ([] as DocumentsMainScreenItem[]);\n const folders = data?.folders.map((e) => ({ type: 'folder', ...e })) ?? ([] as DocumentsMainScreenItem[]);\n\n return [...folders, ...documents] as DocumentsMainScreenItem[];\n }, [data]);\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n const handlePrevious = useCallback(() => {\n setFolderIdStack(folderIdStack.slice(0, -1));\n }, [folderIdStack]);\n\n return (\n \n \n 0 ? (\n \n \n \n ) : (\n \n \n \n )\n }\n leftContainerStyle={styles.headingLeftContainer}\n centerComponent={{ text: data?.title || t('choose_folder'), style: styles.heading }}\n />\n \n }\n data={items}\n keyExtractor={(item) => item.id.toString()}\n renderItem={({ item }) =>\n match(item.type)\n .with('folder', () => (\n {\n setFolderIdStack([...folderIdStack, item.id]);\n }}\n />\n ))\n .with('document', () => )\n .exhaustive()\n }\n ListEmptyComponent={{t('no_contributions')}}\n />\n onFolderSelected(currentFolderId)}\n enabled\n style={styles.submitButton}\n />\n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n modal: {\n flex: 1,\n },\n container: {\n flex: 1,\n },\n headingLeftContainer: {\n justifyContent: 'center',\n },\n heading: {\n paddingTop: 10,\n fontSize: 16,\n marginVertical: 'auto',\n },\n foldersContainer: {\n flex: 1,\n marginHorizontal: 20,\n marginBottom: 20,\n overflow: 'hidden',\n },\n emptyText: {\n textAlign: 'center',\n color: LIGHT_GRAY,\n },\n submitButton: {},\n});\n","import React, { useCallback, useState } from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport { useField } from 'formik';\nimport { FormField } from '../FormField';\nimport { getFolderDetails } from '../../../services/api/document.contributions.api';\nimport { ActivityIndicator, StyleSheet, View } from 'react-native';\nimport { DARK_GRAY, PRIMARY_COLOR } from '../../../styles/appColor';\nimport DocumentItemRow from '../DocumentItemRow';\nimport AppText from '../AppText';\nimport { TouchableOpacity } from 'react-native-gesture-handler';\nimport { FONT_FAMILY_DEFAULT } from '../../../styles/globalStyle';\nimport { t } from 'i18next';\nimport BrowseFolderDialog from '../BrowseFolderDialog';\nimport useLoggedUser from '../../../hooks/useLoggedUser';\n\nexport type FolderPickerFieldProps = {\n name: string;\n title: string;\n required?: boolean;\n parentFolder?: boolean;\n};\n\nexport default function FolderPickerField({ name, title, required, parentFolder }: FolderPickerFieldProps) {\n const [field, meta, helper] = useField(name);\n const user = useLoggedUser();\n const [dialogVisible, setDialogVisible] = useState(false);\n\n const queryFunction = useCallback(\n async () => (field.value ? getFolderDetails(user, field.value) : null),\n [field.value, user]\n );\n\n const { data, isLoading } = useQuery(['folderDetails', field.value], queryFunction, { cacheTime: 0 });\n\n const handlePress = useCallback(() => {\n setDialogVisible(true);\n }, []);\n\n return (\n \n \n {isLoading ? (\n \n ) : data ? (\n \n ) : (\n <>\n \n {t('root_folder')}\n \n \n {parentFolder ? t('root_folder_description_for_document') : t('root_folder_description_for_folder')}\n \n \n )}\n \n {\n helper.setValue(newFolderId);\n setDialogVisible(false);\n }}\n onClose={() => setDialogVisible(false)}\n />\n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n padding: 10,\n borderWidth: 2,\n borderRadius: 10,\n borderColor: PRIMARY_COLOR,\n },\n rootFolderTitle: {\n fontFamily: FONT_FAMILY_DEFAULT.bold,\n fontSize: 16,\n color: DARK_GRAY,\n },\n rootFolderDescription: {\n flex: 1,\n fontSize: 12,\n fontStyle: 'italic',\n color: 'black',\n paddingRight: 7,\n },\n});\n","import React from 'react';\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';\nimport * as Yup from 'yup';\nimport ContributionAuthorizationsField from '../../../../components/atomic/formik/ContributionAuthorizationsField';\nimport ContributionSpreadingField, {\n contributionSpreadingFieldValidators,\n} from '../../../../components/atomic/formik/ContributionSpreadingField';\nimport FileField from '../../../../components/atomic/formik/FileField';\nimport FolderPickerField from '../../../../components/atomic/formik/FolderPickerField';\nimport RichTextField from '../../../../components/atomic/formik/RichTextField';\nimport SubmitButton from '../../../../components/atomic/formik/SubmitButton';\nimport TextField from '../../../../components/atomic/formik/TextField';\nimport { AppScreen } from '../../../../components/containers/AppScreen';\nimport { t } from '../../../../services/translations';\n\nexport const schema = Yup.object({\n title: Yup.string().min(1).required(t('field_required')),\n description: Yup.string().min(1).required(t('field_required')),\n document: Yup.mixed().required(t('field_required')),\n commentsActivated: Yup.boolean().required(t('field_required')),\n notifActivated: Yup.boolean().required(t('field_required')),\n emailActivated: Yup.boolean().required(t('field_required')),\n ...contributionSpreadingFieldValidators,\n});\n\nexport type DocumentFormFieldsProps = {\n isEditing?: boolean | undefined;\n defaultFilename?: string | undefined;\n};\n\nexport default function DocumentFormFields({ isEditing, defaultFilename }: DocumentFormFieldsProps) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React, { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useMutation } from '@tanstack/react-query';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport Form from '../../../../components/atomic/formik/Form';\nimport DocumentFormFields, { schema } from './DocumentFormFields';\nimport { createDocument } from '../../../../services/api/document.contributions.api';\nimport { DocumentCreate } from '../../../../entities/DocumentCreate';\nimport { setContributionsListNeedsRefresh } from '../../../../store/action';\nimport { alertInfo } from '../../../../services/utils';\nimport { t } from '../../../../services/translations';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\n\nexport type CreateDocumentScreenProps = {\n route: {\n params: {\n folderId?: string;\n };\n };\n};\n\nexport default function CreateDocumentScreen({ route }: CreateDocumentScreenProps) {\n const user = useLoggedUser();\n const initialFolderId = (route.params.folderId && parseInt(route.params.folderId)) || null;\n const navigation = useNavigation>();\n const dispatch = useDispatch();\n\n const { mutateAsync, isError } = useMutation({\n mutationFn: async (values: Omit) => {\n await createDocument(user, values);\n dispatch(setContributionsListNeedsRefresh(true));\n navigation.goBack();\n },\n });\n\n // Display error message if needed\n useEffect(() => {\n if (isError) {\n alertInfo(t('error_occurred'));\n }\n }, [isError]);\n\n return (\n \n \n \n );\n}\n","import React from 'react';\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';\nimport * as Yup from 'yup';\nimport ContributionSpreadingField, {\n contributionSpreadingFieldValidators,\n} from '../../../../components/atomic/formik/ContributionSpreadingField';\nimport FolderPickerField from '../../../../components/atomic/formik/FolderPickerField';\nimport SubmitButton from '../../../../components/atomic/formik/SubmitButton';\nimport TextField from '../../../../components/atomic/formik/TextField';\nimport { AppScreen } from '../../../../components/containers/AppScreen';\nimport { t } from '../../../../services/translations';\n\nexport const schema = Yup.object({\n title: Yup.string().min(1).required(t('field_required')),\n ...contributionSpreadingFieldValidators,\n});\n\nexport type FolderFormFieldsProps = {\n isEditing?: boolean | undefined;\n};\n\nexport default function FolderFormFields({ isEditing }: FolderFormFieldsProps) {\n return (\n \n \n \n \n \n \n \n \n );\n}\n","import React, { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useMutation } from '@tanstack/react-query';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport Form from '../../../../components/atomic/formik/Form';\nimport FolderFormFields, { schema } from './FolderFormFields';\nimport { createFolder } from '../../../../services/api/document.contributions.api';\nimport { FolderCreate } from '../../../../entities/FolderCreate';\nimport { setContributionsListNeedsRefresh } from '../../../../store/action';\nimport { alertInfo } from '../../../../services/utils';\nimport { t } from '../../../../services/translations';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\n\nexport type CreateFolderScreenProps = {\n route: {\n params: {\n folderId?: string;\n };\n };\n};\n\nexport default function CreateFolderScreen({ route }: CreateFolderScreenProps) {\n const user = useLoggedUser();\n const initialFolderId = (route.params.folderId && parseInt(route.params.folderId)) || null;\n const navigation = useNavigation>();\n const dispatch = useDispatch();\n\n const { mutateAsync, isError } = useMutation({\n mutationFn: async (values: Omit) => {\n await createFolder(user, values);\n dispatch(setContributionsListNeedsRefresh(true));\n navigation.goBack();\n },\n });\n\n // Display error message if needed\n useEffect(() => {\n if (isError) {\n alertInfo(t('error_occurred'));\n }\n }, [isError]);\n\n return (\n \n \n \n );\n}\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { BottomSheet, ListItem, SpeedDial } from '@rneui/themed';\nimport { DraxProvider, DraxView, DraxScrollView } from 'react-native-drax';\nimport { AppScreen } from '../../../../components/containers/AppScreen';\nimport { t } from '../../../../services/translations';\nimport { StyleSheet, View } from 'react-native';\nimport { SearchTextInput } from '../../../../components/atomic/SearchTextInput';\nimport { ALERT_COLOR, LIGHT_GRAY, PRIMARY_COLOR } from '../../../../styles/appColor';\nimport { removeAccentsAndLower } from '../../../../utils/Utils';\nimport AppText, { Mode } from '../../../../components/atomic/AppText';\nimport Separator from '../../../../components/atomic/Separator';\nimport { setLoading } from '../../../../store/action';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport {\n listFolder,\n listFolderAsAdmin,\n updateFolder,\n updateDocument,\n} from '../../../../services/api/document.contributions.api';\nimport { DocumentSummary } from '../../../../entities/DocumentSummary';\nimport { FolderSummary } from '../../../../entities/FolderSummary';\nimport { match } from 'ts-pattern';\nimport DocumentItemRow from '../../../../components/atomic/DocumentItemRow';\nimport { useNavigation } from '@react-navigation/native';\nimport { ScreenNames } from '../../../../ScreenNames';\nimport { isMobile, openURL } from '../../../../services/utils';\nimport Feather from 'react-native-vector-icons/Feather';\nimport { AppModalOverlay } from '../../../../components/atomic/AppModalOverlay';\nimport { AppButton } from '../../../../components/atomic/AppButton';\nimport { removeContribution } from '../../../../services/api/contribution.api';\nimport { getDocumentURI } from '../../../../services/api/helper.api';\nimport BrowseFolderDialog from '../../../../components/atomic/BrowseFolderDialog';\nimport { ContributionType, ContributionTypesInfos } from '../../../../types';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport useContributionListRefresh from '../../../../hooks/useContributionListRefresh';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\n\nexport type DocumentsMainScreenProps = {\n route: {\n params: {\n folderId?: string;\n isAdminView?: string | boolean;\n };\n };\n};\n\nexport type DocumentsMainScreenItem =\n | ({\n type: 'folder';\n } & FolderSummary)\n | ({\n type: 'document';\n } & DocumentSummary);\n\nexport function DocumentsMainScreen({ route }: DocumentsMainScreenProps) {\n const navigation = useNavigation();\n const folderId = (route.params.folderId && parseInt(route.params.folderId)) || null;\n const isAdminView = route.params.isAdminView === true || route.params.isAdminView === 'true';\n const user = useLoggedUser();\n const dispatch = useDispatch();\n\n const [search, setSearch] = useState('');\n const [openSpeedDialog, setOpenSpeedDialog] = useState(false);\n const [selectedItem, setSelectedItem] = useState(null);\n const [wishToRemoveItem, setWishToRemoveItem] = useState(null);\n const [movedItem, setMovedItem] = useState(null);\n\n const queryIdentifier = isAdminView ? `folderListAdmins` : `folderList`;\n const queryFunction = useCallback(() => {\n if (isAdminView) {\n return listFolderAsAdmin(user, folderId);\n } else {\n return listFolder(user, folderId);\n }\n }, [folderId, user, isAdminView]);\n\n const deselectItem = useCallback(() => {\n setSelectedItem(null);\n setWishToRemoveItem(null);\n }, []);\n\n const {\n data,\n isLoading: isLoadingList,\n refetch: refresh,\n } = useQuery([queryIdentifier, folderId], queryFunction, { cacheTime: 0 });\n const updateMutation = useMutation({\n mutationFn: async ([item, folderId]: [item: DocumentsMainScreenItem, folderId: number | null]) => {\n switch (item.type) {\n case 'folder':\n await updateFolder(user, item.id, { parentId: folderId ?? null });\n break;\n case 'document':\n await updateDocument(user, item.id, { folderId: folderId ?? null });\n break;\n }\n\n await refresh();\n },\n });\n const removeMutation = useMutation({\n mutationFn: async (item: DocumentsMainScreenItem) => {\n await removeContribution(user, item.contributionId);\n await refresh();\n },\n });\n\n const isLoading = isLoadingList || updateMutation.isLoading || removeMutation.isLoading;\n\n // Update title\n useEffect(() => {\n if (data?.title) {\n navigation.setOptions({\n title: data.title,\n });\n }\n }, [data, navigation]);\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n // Refresh after an update\n useContributionListRefresh(refresh);\n\n // Format items from fetched data\n const items = useMemo(() => {\n const documents =\n data?.documents\n ?.filter((e) => removeAccentsAndLower(e.title).includes(removeAccentsAndLower(search)))\n .map((e) => ({ type: 'document', ...e })) ?? ([] as DocumentsMainScreenItem[]);\n\n const folders =\n data?.folders\n ?.filter((e) => removeAccentsAndLower(e.title).includes(removeAccentsAndLower(search)))\n .map((e) => ({ type: 'folder', ...e })) ?? ([] as DocumentsMainScreenItem[]);\n\n return [...folders, ...documents] as DocumentsMainScreenItem[];\n }, [data, search]);\n\n const onItemPress = useCallback(\n (item: DocumentsMainScreenItem) => {\n if (item.type === 'folder') {\n navigation.push(ScreenNames.KiosqueFolder, {\n folderId: item.id,\n isAdminView,\n });\n } else {\n navigation.navigate(ScreenNames.LoggedInDrawerNavigation, {\n screen:\n ContributionTypesInfos[ContributionType.DOCUMENT].detailScreen ?? ScreenNames.ContributionItemDetailScreen,\n params: {\n id: item.id,\n contributionType: ContributionType.DOCUMENT,\n isNotif: false,\n },\n });\n }\n },\n [navigation, isAdminView]\n );\n\n const createDocument = useCallback(() => {\n setOpenSpeedDialog(false);\n navigation.navigate(ScreenNames.KiosqueCreateDocument, {\n folderId,\n isAdminView,\n });\n }, [navigation, folderId, isAdminView]);\n\n const createFolder = useCallback(() => {\n setOpenSpeedDialog(false);\n navigation.navigate(ScreenNames.KiosqueCreateFolder, {\n folderId,\n isAdminView,\n });\n }, [navigation, folderId, isAdminView]);\n\n const editItem = useCallback(\n (item: DocumentsMainScreenItem) => {\n deselectItem();\n\n switch (item.type) {\n case 'folder':\n return navigation.navigate(ScreenNames.KiosqueUpdateFolder, {\n id: item.id,\n });\n case 'document':\n return navigation.navigate(ScreenNames.KiosqueUpdateDocument, {\n id: item.id,\n });\n }\n },\n [navigation]\n );\n\n const moveItem = useCallback(\n (item: DocumentsMainScreenItem, folderId: number | null) => {\n deselectItem();\n return updateMutation.mutate([item, folderId]);\n },\n [navigation]\n );\n\n const removeItem = useCallback(\n (item: DocumentsMainScreenItem) => {\n deselectItem();\n return removeMutation.mutate(item);\n },\n [navigation]\n );\n\n const getItemActions = useCallback(\n (item: DocumentsMainScreenItem) =>\n isAdminView\n ? [\n ...(item.type === 'document'\n ? [\n {\n label: t('download'),\n renderIcon: (size: number) => ,\n onPress: () => {\n setSelectedItem(null);\n item.fileId && openURL(getDocumentURI(item.fileId));\n },\n },\n ]\n : []),\n ...(folderId !== null\n ? [\n {\n label: t('move_to_parent_folder'),\n renderIcon: (size: number) => ,\n onPress: () => {\n setSelectedItem(null);\n moveItem(item, data?.parentId || null);\n },\n },\n ]\n : []),\n {\n label: t('move'),\n renderIcon: (size: number) => ,\n onPress: () => {\n setSelectedItem(null);\n setMovedItem(item);\n },\n },\n {\n label: t('edit'),\n renderIcon: (size: number) => ,\n onPress: () => {\n setSelectedItem(null);\n editItem(item);\n },\n },\n {\n label: t('delete'),\n renderIcon: (size: number) => ,\n onPress: () => {\n setSelectedItem(null);\n setWishToRemoveItem(item);\n },\n },\n ]\n : item.type === 'document'\n ? [\n {\n label: t('download'),\n renderIcon: (size: number) => ,\n onPress: () => {\n setSelectedItem(null);\n item.fileId && openURL(getDocumentURI(item.fileId));\n },\n },\n ]\n : [],\n [isAdminView, data?.parentId]\n );\n\n const padding = isMobile() ? 0 : 10;\n\n return (\n \n \n \n \n {items && items.length > 0 ? (\n items.map((item, index) => (\n \n {index > 0 && }\n {match(item.type)\n .with('folder', () => (\n {\n moveItem(draggedItem, item.id);\n }}\n >\n onItemPress(item)}\n onSelect={() => {\n setSelectedItem(item);\n }}\n />\n \n ))\n .with('document', () => (\n \n onItemPress(item)}\n onSelect={() => {\n setSelectedItem(item);\n }}\n />\n \n ))\n .exhaustive()}\n \n ))\n ) : (\n {t('no_contributions')}\n )}\n \n \n {isAdminView && (\n <>\n setOpenSpeedDialog(true)}\n onClose={() => setOpenSpeedDialog(false)}\n placement=\"left\"\n color={PRIMARY_COLOR}\n containerStyle={{ position: 'relative' }}\n >\n \n \n \n \n {selectedItem &&\n getItemActions(selectedItem).map((e) => (\n \n {e.renderIcon(24)}\n \n {e.label}\n \n \n ))}\n \n setWishToRemoveItem(null)}\n overlayStyle={{}}\n >\n {t('wish_to_remove')}\n \n {\n wishToRemoveItem && removeItem(wishToRemoveItem);\n deselectItem();\n }}\n style={{ width: 80, marginRight: 10 }}\n textStyle={{ fontSize: 10 }}\n />\n {\n deselectItem();\n }}\n style={{ width: 80 }}\n textStyle={{ fontSize: 10 }}\n />\n \n \n \n )}\n {\n if (movedItem) {\n moveItem(movedItem, newFolderId);\n setMovedItem(null);\n setOpenSpeedDialog(false);\n }\n }}\n onClose={() => setMovedItem(null)}\n />\n \n );\n}\n\nconst styles = StyleSheet.create({\n searchInput: {\n margin: 10,\n },\n emptyText: {\n textAlign: 'center',\n color: LIGHT_GRAY,\n },\n scrollView: {\n height: '100%',\n },\n draxView: {\n padding: 10,\n borderWidth: 2,\n borderRadius: 10,\n borderColor: 'transparent',\n },\n receiving: {\n borderColor: PRIMARY_COLOR,\n },\n dragging: {\n opacity: 0.2,\n },\n hoverDragging: {\n borderColor: PRIMARY_COLOR,\n },\n});\n","import React, { useEffect, useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport Form from '../../../../components/atomic/formik/Form';\nimport DocumentFormFields, { schema } from './DocumentFormFields';\nimport { getDocumentDetails, updateDocument } from '../../../../services/api/document.contributions.api';\nimport { DocumentCreate } from '../../../../entities/DocumentCreate';\nimport { setContributionsListNeedsRefresh, setLoading } from '../../../../store/action';\nimport { View } from 'react-native';\nimport { alertInfo } from '../../../../services/utils';\nimport { t } from '../../../../services/translations';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\n\nexport type UpdateDocumentScreenProps = {\n route: {\n params: {\n id: string;\n };\n };\n};\n\nexport default function UpdateDocumentScreen({ route }: UpdateDocumentScreenProps) {\n const user = useLoggedUser();\n const id = parseInt(route.params.id);\n const navigation = useNavigation>();\n const dispatch = useDispatch();\n\n const {\n data,\n isLoading: isLoadingList,\n isFetched,\n isError,\n } = useQuery(['documentDetails', id], () => getDocumentDetails(user, id), { cacheTime: 0 });\n\n const mutation = useMutation({\n mutationFn: async (values: Omit) => {\n await updateDocument(user, id, { ...values });\n dispatch(setContributionsListNeedsRefresh(true));\n navigation.goBack();\n },\n });\n\n const isLoading = isLoadingList || mutation.isLoading;\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n // Display error message if needed\n useEffect(() => {\n if (isError) {\n alertInfo(t('error_occurred'));\n }\n }, [isError]);\n\n const initialValues = useMemo(\n () => ({\n title: data?.title,\n description: data?.description,\n document: data?.fichierIdDocumentNavigation,\n folderId: data?.folderId,\n commentsActivated: data?.contribution?.commentsActivated,\n notifActivated: data?.contribution?.notifActivated,\n emailActivated: data?.contribution?.emailActivated,\n spreadingType: data?.contribution?.spreadingType,\n userIds: data?.contribution?.userTargets.map((e) => e.userId),\n entrepriseServiceIds: data?.contribution?.entrepriseServices.map((e) => e.entrepriseServiceId),\n entrepriseSiteGeoIds: data?.contribution?.entrepriseSiteGeos.map((e) => e.entrepriseSiteGeoId),\n entrepriseGroupIds: data?.contribution?.entrepriseGroups.map((e) => e.entrepriseGroupId),\n }),\n [data]\n );\n\n return isFetched ? (\n \n \n \n ) : (\n \n );\n}\n","import React, { useEffect, useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport Form from '../../../../components/atomic/formik/Form';\nimport FolderFormFields, { schema } from './FolderFormFields';\nimport { getFolderDetails, updateFolder } from '../../../../services/api/document.contributions.api';\nimport { FolderCreate } from '../../../../entities/FolderCreate';\nimport { setContributionsListNeedsRefresh, setLoading } from '../../../../store/action';\nimport { View } from 'react-native';\nimport { alertInfo } from '../../../../services/utils';\nimport { t } from '../../../../services/translations';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\n\nexport type UpdateFolderScreenProps = {\n route: {\n params: {\n id: string;\n };\n };\n};\n\nexport default function UpdateFolderScreen({ route }: UpdateFolderScreenProps) {\n const user = useLoggedUser();\n const id = parseInt(route.params.id);\n const navigation = useNavigation>();\n const dispatch = useDispatch();\n\n const {\n data,\n isLoading: isLoadingList,\n isFetched,\n isError,\n } = useQuery(['folderDetails', id], () => getFolderDetails(user, id), { cacheTime: 0 });\n\n const mutation = useMutation({\n mutationFn: async (values: Omit) => {\n await updateFolder(user, id, { ...values });\n dispatch(setContributionsListNeedsRefresh(true));\n navigation.goBack();\n },\n });\n\n const isLoading = isLoadingList || mutation.isLoading;\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n // Display error message if needed\n useEffect(() => {\n if (isError) {\n alertInfo(t('error_occurred'));\n }\n }, [isError]);\n\n const initialValues = useMemo(\n () => ({\n title: data?.title,\n parentId: data?.parentId,\n spreadingType: data?.contribution?.spreadingType,\n userIds: data?.contribution?.userTargets.map((e) => e.userId),\n entrepriseServiceIds: data?.contribution?.entrepriseServices.map((e) => e.entrepriseServiceId),\n entrepriseSiteGeoIds: data?.contribution?.entrepriseSiteGeos.map((e) => e.entrepriseSiteGeoId),\n entrepriseGroupIds: data?.contribution?.entrepriseGroups.map((e) => e.entrepriseGroupId),\n }),\n [data]\n );\n\n return isFetched ? (\n \n \n \n ) : (\n \n );\n}\n","import { DrawerScreenProps } from '@react-navigation/drawer';\nimport { createMaterialTopTabNavigator } from '@react-navigation/material-top-tabs';\nimport { createStackNavigator } from '@react-navigation/stack';\nimport React from 'react';\nimport { ScreenNames } from '../ScreenNames';\nimport CreateDocumentScreen from '../screens/loggedIn/contribution/documents/CreateDocumentScreen';\nimport CreateFolderScreen from '../screens/loggedIn/contribution/documents/CreateFolderScreen';\nimport { DocumentsMainScreen } from '../screens/loggedIn/contribution/documents/DocumentsMainScreen';\nimport UpdateDocumentScreen from '../screens/loggedIn/contribution/documents/UpdateDocumentScreen';\nimport UpdateFolderScreen from '../screens/loggedIn/contribution/documents/UpdateFolderScreen';\nimport { GetContributionsMode } from '../services/api/getContributionsMode';\nimport { t } from '../services/translations';\nimport { isAdmin, isMobile, isSubAdmin } from '../services/utils';\nimport { ContributionType, IntToContributionType } from '../types';\nimport useLoggedUser from '../hooks/useLoggedUser';\nimport BackIcon from '../components/atomic/BackIcon';\nimport { BACKGROUND_COLOR } from '../styles/appColor';\n\nfunction Tabs(props: { route; navigation }) {\n const Tab = createMaterialTopTabNavigator();\n const user = useLoggedUser();\n\n if (isAdmin(user) || isSubAdmin(user)) {\n return (\n \n \n \n \n );\n } else {\n return (\n \n );\n }\n}\n\nconst Stack = createStackNavigator();\n\nexport function DocumentsRouter(props: DrawerScreenProps) {\n const contributionType: ContributionType = IntToContributionType(props.route.params?.contributionType);\n\n return (\n \n \n \n \n \n \n \n \n );\n}\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { FAB } from '@rneui/themed';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport usePaginatedList from '../../../../hooks/usePaginatedList';\nimport { listCustomModuleContributionsAdmin } from '../../../../services/api/custom.module.api';\nimport { AppScreen } from '../../../../components/containers/AppScreen';\nimport { SearchTextInput } from '../../../../components/atomic/SearchTextInput';\nimport { ResponsiveFlatList } from '../../../../components/atomic/ResponsiveFlatList';\nimport { StyleSheet, TouchableOpacity, View } from 'react-native';\nimport { ContributionPreviewItem } from '../../../../components/atomic/ContributionItemSquare';\nimport { getPictureURI } from '../../../../services/api/helper.api';\nimport { newsImage } from '../../../../services/assets';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport { ScreenNames } from '../../../../ScreenNames';\nimport { LIGHT_GRAY, PRIMARY_COLOR } from '../../../../styles/appColor';\nimport { isMobile } from '../../../../services/utils';\nimport { setLoading } from '../../../../store/action';\nimport AppText from '../../../../components/atomic/AppText';\nimport { t } from '../../../../services/translations';\nimport { RemoveButton } from '../../../../components/atomic/RemoveButton';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport useContributionListRefresh from '../../../../hooks/useContributionListRefresh';\n\nexport type AdminListCustomModuleContributionScreenProps = {\n route: {\n params: {\n moduleIdentifier: string;\n };\n };\n};\n\nexport default function AdminListCustomModuleContributionScreen({\n route,\n}: AdminListCustomModuleContributionScreenProps) {\n const user = useLoggedUser();\n const moduleIdentifier = route.params.moduleIdentifier;\n const navigation = useNavigation>();\n const dispatch = useDispatch();\n\n const [search, setSearch] = useState('');\n\n const {\n data: contributions,\n isLoading,\n fetchNext,\n refresh,\n } = usePaginatedList(\n (cursor: string | null) => listCustomModuleContributionsAdmin(user, moduleIdentifier, cursor, search),\n [search, moduleIdentifier, user]\n );\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n // Refresh after an update\n useContributionListRefresh(refresh);\n\n return (\n \n setSearch('')}\n leftIcon=\"arrow-back\"\n onChangeText={setSearch}\n value={search}\n style={{ marginBottom: 10 }}\n />\n {\n return (\n {\n navigation.navigate(ScreenNames.CustomModuleDetails, {\n id: item.id,\n });\n }}\n overlayContent={<>}\n additionalButtons={\n \n navigation.navigate(ScreenNames.CustomModuleUpdate, { id: item.id })}\n >\n \n \n \n \n }\n labelContent={<>}\n imagesCount={item.contribution?.contributionMedias?.length || 0}\n />\n );\n }}\n ListEmptyComponent={{t('no_contributions')}}\n onEndReached={fetchNext}\n />\n }\n onPress={() => {\n navigation.navigate(ScreenNames.CustomModuleCreate);\n }}\n placement=\"left\"\n />\n \n );\n}\n\nconst styles = StyleSheet.create({\n emptyText: {\n textAlign: 'center',\n color: LIGHT_GRAY,\n },\n});\n","import React from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport useLoggedUser from '../../../hooks/useLoggedUser';\nimport { ContributionType } from '../../../types';\nimport { SelectField, SelectFieldProps } from './SelectField';\nimport { getCategoriesByCustomModuleIdentifier, getCategoriesByType } from '../../../services/api/category.api';\n\nexport type CategoryFieldProps = Omit, 'data'> & {\n contributionType?: ContributionType;\n customModuleIdentifier?: string;\n};\n\nexport default function CategoryField({ contributionType, customModuleIdentifier, ...rest }: CategoryFieldProps) {\n const loggedUser = useLoggedUser();\n\n const { data: categories } = useQuery(['getCategoriesByType', contributionType], () => {\n if (contributionType) {\n return getCategoriesByType(loggedUser.entreprise?.id!, contributionType, loggedUser);\n } else if (customModuleIdentifier) {\n return getCategoriesByCustomModuleIdentifier(loggedUser.entreprise?.id!, customModuleIdentifier, loggedUser);\n }\n });\n\n if (!categories || !categories.length) {\n return null;\n }\n\n return (\n ({ label: category.name, value: category.id })) || []} />\n );\n}\n","import React from 'react';\nimport { StyleSheet } from 'react-native';\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';\nimport * as Yup from 'yup';\nimport ContributionAuthorizationsField from '../../../../components/atomic/formik/ContributionAuthorizationsField';\nimport ContributionSpreadingField, {\n contributionSpreadingFieldValidators,\n} from '../../../../components/atomic/formik/ContributionSpreadingField';\nimport RichTextField from '../../../../components/atomic/formik/RichTextField';\nimport SubmitButton from '../../../../components/atomic/formik/SubmitButton';\nimport TextField from '../../../../components/atomic/formik/TextField';\nimport { AppScreen } from '../../../../components/containers/AppScreen';\nimport { t } from '../../../../services/translations';\nimport CategoryField from '../../../../components/atomic/formik/CategoryField';\nimport { ContributionType } from '../../../../types';\nimport PhotoListField from '../../../../components/atomic/formik/PhotoListField';\n\nexport const schema = Yup.object({\n title: Yup.string().min(1).required(t('field_required')),\n description: Yup.string().min(1).required(t('field_required')),\n image: Yup.mixed(),\n commentsActivated: Yup.boolean().required(t('field_required')),\n notifActivated: Yup.boolean().required(t('field_required')),\n emailActivated: Yup.boolean().required(t('field_required')),\n ...contributionSpreadingFieldValidators,\n});\n\nexport type CustomModuleContributionFormFieldsProps = {\n customModuleIdentifier: string | undefined;\n isEditing?: boolean | undefined;\n};\n\nexport default function CustomModuleContributionFormFields({\n customModuleIdentifier,\n isEditing,\n}: CustomModuleContributionFormFieldsProps) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n background: { padding: 10 },\n});\n","import { NavigationProp, useNavigation } from '@react-navigation/native';\nimport { useMutation } from '@tanstack/react-query';\nimport React, { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { ContributionCustomModuleCreate } from '../../../../entities/ContributionCustomModuleCreate';\nimport { createCustomModuleContributions } from '../../../../services/api/custom.module.api';\nimport { alertInfo } from '../../../../services/utils';\nimport { setContributionsListNeedsRefresh } from '../../../../store/action';\nimport { t } from '../../../../services/translations';\nimport Form from '../../../../components/atomic/formik/Form';\nimport CustomModuleContributionFormFields, { schema } from './CustomModuleContributionFormFields';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\n\nexport type CreateCustomModuleContributionScreenProps = {\n route: {\n params: {\n moduleIdentifier: string;\n };\n };\n};\n\nexport default function CreateCustomModuleContributionScreen({ route }: CreateCustomModuleContributionScreenProps) {\n const user = useLoggedUser();\n const navigation = useNavigation>();\n const dispatch = useDispatch();\n const moduleIdentifier = route.params.moduleIdentifier;\n\n const { mutateAsync, isError } = useMutation({\n mutationFn: async (values: ContributionCustomModuleCreate) => {\n await createCustomModuleContributions(user, moduleIdentifier, values);\n dispatch(setContributionsListNeedsRefresh(true));\n navigation.goBack();\n },\n });\n\n // Display error message if needed\n useEffect(() => {\n if (isError) {\n alertInfo(t('error_occurred'));\n }\n }, [isError]);\n\n return (\n \n \n \n );\n}\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { FAB } from '@rneui/themed';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport usePaginatedList from '../../../../hooks/usePaginatedList';\nimport { listCustomModuleContributions } from '../../../../services/api/custom.module.api';\nimport { AppScreen } from '../../../../components/containers/AppScreen';\nimport { SearchTextInput } from '../../../../components/atomic/SearchTextInput';\nimport { ResponsiveFlatList } from '../../../../components/atomic/ResponsiveFlatList';\nimport { StyleSheet } from 'react-native';\nimport { ContributionPreviewItem } from '../../../../components/atomic/ContributionItemSquare';\nimport { getPictureURI } from '../../../../services/api/helper.api';\nimport { newsImage } from '../../../../services/assets';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport { ScreenNames } from '../../../../ScreenNames';\nimport { LIGHT_GRAY, PRIMARY_COLOR } from '../../../../styles/appColor';\nimport { isAdmin, isMobile, isSubAdmin } from '../../../../services/utils';\nimport { setLoading } from '../../../../store/action';\nimport AppText from '../../../../components/atomic/AppText';\nimport { t } from '../../../../services/translations';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport useContributionListRefresh from '../../../../hooks/useContributionListRefresh';\nimport CategoryPicker from '../../../../components/atomic/CategoryPicker';\nimport { Category } from '../../../../entities/Category';\n\nexport type ListCustomModuleContributionScreenProps = {\n route: {\n params: {\n moduleIdentifier: string;\n };\n };\n};\n\nexport default function ListCustomModuleContributionScreen({ route }: ListCustomModuleContributionScreenProps) {\n const user = useLoggedUser();\n const moduleIdentifier = route.params.moduleIdentifier;\n const navigation = useNavigation>();\n const dispatch = useDispatch();\n const hasWriteAccess = isAdmin(user) || isSubAdmin(user);\n\n const [search, setSearch] = useState('');\n const [filterCategory, setFilterCategory] = useState(undefined);\n\n const {\n data: contributions,\n isLoading,\n fetchNext,\n refresh,\n } = usePaginatedList(\n (cursor: string | null) =>\n listCustomModuleContributions(user, moduleIdentifier, cursor, search, {\n categoryId: filterCategory?.id,\n }),\n [search, moduleIdentifier, user, filterCategory?.id]\n );\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n // Refresh after an update\n useContributionListRefresh(refresh);\n\n return (\n \n setSearch('')}\n leftIcon=\"arrow-back\"\n onChangeText={setSearch}\n value={search}\n style={styles.search}\n />\n {moduleIdentifier && }\n {\n return (\n {\n navigation.navigate(ScreenNames.CustomModuleDetails, {\n id: item.id,\n });\n }}\n overlayContent={<>}\n additionalButtons={<>}\n labelContent={<>}\n imagesCount={item.contribution?.contributionMedias?.length || 0}\n />\n );\n }}\n ListEmptyComponent={{t('no_contributions')}}\n onEndReached={fetchNext}\n />\n {hasWriteAccess && (\n }\n onPress={() => {\n navigation.navigate(ScreenNames.CustomModuleCreate);\n }}\n placement=\"left\"\n />\n )}\n \n );\n}\n\nconst styles = StyleSheet.create({\n search: { marginBottom: 10 },\n emptyText: {\n textAlign: 'center',\n color: LIGHT_GRAY,\n },\n});\n","import React, { useEffect, useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport Form from '../../../../components/atomic/formik/Form';\nimport { setContributionsListNeedsRefresh, setLoading } from '../../../../store/action';\nimport { View } from 'react-native';\nimport { alertInfo } from '../../../../services/utils';\nimport { t } from '../../../../services/translations';\nimport {\n getCustomModuleContributionsDetails,\n updateCustomModuleContributions,\n} from '../../../../services/api/custom.module.api';\nimport { ContributionCustomModuleCreate } from '../../../../entities/ContributionCustomModuleCreate';\nimport CustomModuleContributionFormFields, { schema } from './CustomModuleContributionFormFields';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\n\nexport type UpdateCustomModuleContributionScreenProps = {\n route: {\n params: {\n id: string;\n };\n };\n};\n\nexport default function UpdateCustomModuleContributionScreen({ route }: UpdateCustomModuleContributionScreenProps) {\n const user = useLoggedUser();\n const id = parseInt(route.params.id, 10);\n const navigation = useNavigation>();\n const dispatch = useDispatch();\n\n const {\n data,\n isLoading: isLoadingList,\n isFetched,\n isError,\n } = useQuery(['customContributionDetails', id], () => getCustomModuleContributionsDetails(user, id), {\n cacheTime: 0,\n });\n\n const mutation = useMutation({\n mutationFn: async (values: ContributionCustomModuleCreate) => {\n await updateCustomModuleContributions(user, id, { ...values });\n dispatch(setContributionsListNeedsRefresh(true));\n navigation.goBack();\n },\n });\n\n const isLoading = isLoadingList || mutation.isLoading;\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n // Display error message if needed\n useEffect(() => {\n if (isError) {\n alertInfo(t('error_occurred'));\n }\n }, [isError]);\n\n const initialValues = useMemo(\n () => ({\n title: data?.title,\n description: data?.description,\n images: data?.contribution?.contributionMedias || [],\n commentsActivated: data?.contribution?.commentsActivated,\n notifActivated: data?.contribution?.notifActivated,\n emailActivated: data?.contribution?.emailActivated,\n spreadingType: data?.contribution?.spreadingType,\n userIds: data?.contribution?.userTargets.map((e) => e.userId),\n entrepriseServiceIds: data?.contribution?.entrepriseServices.map((e) => e.entrepriseServiceId),\n entrepriseSiteGeoIds: data?.contribution?.entrepriseSiteGeos.map((e) => e.entrepriseSiteGeoId),\n entrepriseGroupIds: data?.contribution?.entrepriseGroups.map((e) => e.entrepriseGroupId),\n categoryId: data?.contribution?.categoryId,\n }),\n [data]\n );\n\n return isFetched && data ? (\n \n \n \n ) : (\n \n );\n}\n","import React from 'react';\nimport { DrawerScreenProps } from '@react-navigation/drawer';\nimport { createMaterialTopTabNavigator } from '@react-navigation/material-top-tabs';\nimport { createStackNavigator } from '@react-navigation/stack';\nimport { ScreenNames } from '../ScreenNames';\nimport AdminListCustomModuleContributionScreen from '../screens/loggedIn/contribution/custom/AdminListCustomModuleContributionScreen';\nimport CreateCustomModuleContributionScreen from '../screens/loggedIn/contribution/custom/CreateCustomModuleContributionScreen';\nimport ListCustomModuleContributionScreen from '../screens/loggedIn/contribution/custom/ListCustomModuleContributionScreen';\nimport UpdateCustomModuleContributionScreen from '../screens/loggedIn/contribution/custom/UpdateCustomModuleContributionScreen';\nimport { t } from '../services/translations';\nimport { isAdmin, isMobile, isSubAdmin } from '../services/utils';\nimport useLoggedUser from '../hooks/useLoggedUser';\nimport BackIcon from '../components/atomic/BackIcon';\nimport { BACKGROUND_COLOR } from '../styles/appColor';\n\ntype MainScreenProps = {\n route: {\n params: {\n moduleIdentifier: string;\n };\n };\n};\n\nfunction MainScreen({ route }: MainScreenProps) {\n const Tab = createMaterialTopTabNavigator();\n const user = useLoggedUser();\n const displayMine = isAdmin(user) || isSubAdmin(user);\n\n return displayMine ? (\n \n \n \n \n ) : (\n \n );\n}\n\nexport function CustomModuleRouter(props: DrawerScreenProps) {\n const Stack = createStackNavigator();\n const moduleIdentifier: string = props.route.params?.moduleIdentifier;\n\n return (\n \n \n \n \n \n );\n}\n","import { useNavigation } from '@react-navigation/native';\nimport { useQuery } from '@tanstack/react-query';\nimport React, { useEffect } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { useDispatch } from 'react-redux';\nimport AppText, { Mode } from '../../../../components/atomic/AppText';\nimport { HtmlText } from '../../../../components/atomic/HtmlText';\nimport SpreadingChipList from '../../../../components/atomic/SpreadingChipsList';\nimport { UserSubRow } from '../../../../components/atomic/UserSubRow';\nimport { DefaultBackground } from '../../../../components/containers/AppScreen';\nimport { ContentWithImageHeaderScreen } from '../../../../components/containers/ContentWithImageHeaderScreen';\nimport { CommentList } from '../../../../components/molecules/CommentList';\nimport { getCustomModuleContributionsDetails } from '../../../../services/api/custom.module.api';\nimport { t } from '../../../../services/translations';\nimport { alertInfo, getReadableDate, isMobile } from '../../../../services/utils';\nimport { setCurrentContribution, setDetailContributionType, setLoading } from '../../../../store/action';\nimport { ContributionType } from '../../../../types';\nimport { BigDetailRow, BigDetailRowInline } from '../ContributionItemDetailScreen';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport { CategoryChip } from '../../../../components/atomic/CategoryChip';\n\nexport type DetailsCustomModuleContributionScreenProps = {\n route: {\n params: {\n id: string;\n };\n };\n};\n\nexport default function DetailsCustomModuleContributionScreen({ route }: DetailsCustomModuleContributionScreenProps) {\n const user = useLoggedUser();\n const id = parseInt(route.params.id);\n const navigation = useNavigation();\n const dispatch = useDispatch();\n\n const { data, isLoading, isError } = useQuery(\n ['customContributionDetails', id],\n async () => {\n let result = await getCustomModuleContributionsDetails(user, id);\n dispatch(setCurrentContribution(result));\n dispatch(setDetailContributionType(ContributionType.CUSTOM_MODULE));\n\n return result;\n },\n {\n cacheTime: 0,\n }\n );\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n // Display error message if needed\n useEffect(() => {\n if (isError) {\n alertInfo(t('error_occurred'));\n }\n }, [isError]);\n\n return (\n \n {data && (\n \n \n \n {getReadableDate(data.contribution.dateCreation, true)}\n \n \n }\n contribution={data}\n contributionType={ContributionType.CUSTOM_MODULE}\n navigation={navigation}\n >\n \n \n {data.title}\n \n \n {data.contribution?.category && (\n \n \n \n )}\n } title={t('description')} />\n \n \n \n }\n title={t('who_can_see')}\n />\n {!!data.contribution?.commentsActivated && }\n \n )}\n \n );\n}\n\nconst styles = StyleSheet.create({\n chipContainer: { flexDirection: 'row', flexWrap: 'wrap', width: '100%' },\n});\n","import axios from './base';\nimport { Paginated } from '../../entities/Paginated';\nimport { UserSaved } from '../storage';\nimport { apiUrlBase } from '../../../configuration';\nimport { headers } from './base';\nimport { SmsEmergencyTemplate } from '../../entities/SmsEmergencyTemplate';\nimport { CreateSmsEmergencyTemplate } from '../../entities/CreateSmsEmergencyTemplate';\nimport { UpdateSmsEmergencyTemplate } from '../../entities/UpdateSmsEmergencyTemplate';\nimport { SendSmsEmergency } from '../../entities/SendSmsEmergency';\nimport { SendTemplate } from '../../entities/SendTemplate';\nimport { SpreadingPostData } from '../../entities/SpreadingPostData';\nimport { SendTemplateUserCount } from '../../entities/SendTemplateUserCount';\n\nexport async function listSmsEmergencyTemplates(\n user: UserSaved,\n cursor: string | null,\n search?: string | null\n): Promise> {\n return axios\n .get(`${apiUrlBase}SmsEmergency/template`, {\n headers: headers(user.token),\n params: { cursor, search },\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function listSmsEmergencyMyTemplates(\n user: UserSaved,\n cursor: string | null,\n search?: string | null\n): Promise> {\n return axios\n .get(`${apiUrlBase}SmsEmergency/template/my`, {\n headers: headers(user.token),\n params: { cursor, search },\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function getSmsEmergencyTemplates(user: UserSaved, id: number): Promise {\n return axios\n .get(`${apiUrlBase}SmsEmergency/template/${id}`, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n\nexport async function createSmsEmergencyTemplate(\n user: UserSaved,\n request: CreateSmsEmergencyTemplate\n): Promise {\n return axios\n .post(`${apiUrlBase}SmsEmergency/template`, request, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 201) return response.data;\n else return null;\n });\n}\n\nexport async function updateSmsEmergencyTemplate(\n user: UserSaved,\n id: number,\n request: UpdateSmsEmergencyTemplate\n): Promise {\n return axios\n .put(`${apiUrlBase}SmsEmergency/template/${id}`, request, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 201) return response.data;\n else return null;\n });\n}\n\nexport async function deleteSmsEmergencyTemplate(user: UserSaved, id: number): Promise {\n return axios.delete(`${apiUrlBase}SmsEmergency/template/${id}`, {\n headers: headers(user.token),\n });\n}\n\nexport async function sendSmsEmergency(user: UserSaved, request: SendSmsEmergency): Promise {\n return axios.post(`${apiUrlBase}SmsEmergency/send`, request, {\n headers: headers(user.token),\n });\n}\n\nexport async function sendSmsEmergencyTemplate(user: UserSaved, id: number, request: SendTemplate): Promise {\n return axios.post(`${apiUrlBase}SmsEmergency/template/${id}/send`, request, {\n headers: headers(user.token),\n });\n}\n\nexport async function sendUserCount(user: UserSaved, request: SpreadingPostData): Promise {\n return axios\n .post(`${apiUrlBase}SmsEmergency/send/count`, request, {\n headers: headers(user.token),\n })\n .then((response) => {\n if (response.status == 200) return response.data;\n else return null;\n });\n}\n","import { useEffect, useState } from 'react';\nimport { FlatList, StyleSheet, View } from 'react-native';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport { useDispatch } from 'react-redux';\nimport { FAB } from '@rneui/base';\nimport useLoggedUser from '../../../hooks/useLoggedUser';\nimport { setLoading } from '../../../store/action';\nimport usePaginatedList from '../../../hooks/usePaginatedList';\nimport { listSmsEmergencyTemplates } from '../../../services/api/sms.emergency.api';\nimport { AppScreen } from '../../../components/containers/AppScreen';\nimport { SearchTextInput } from '../../../components/atomic/SearchTextInput';\nimport AppText from '../../../components/atomic/AppText';\nimport { t } from '../../../services/translations';\nimport ListItemRow from '../../../components/atomic/ListItemRow';\nimport { DARK_GRAY, LIGHT_GRAY, PRIMARY_COLOR } from '../../../styles/appColor';\nimport { isAdmin, isSubAdmin } from '../../../services/utils';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport { ScreenNames } from '../../../ScreenNames';\nimport Separator from '../../../components/atomic/Separator';\nimport { AppButton } from '../../../components/atomic/AppButton';\n\nexport default function EmergencySmsListTemplatesScreen() {\n const user = useLoggedUser();\n const navigation = useNavigation>();\n const dispatch = useDispatch();\n const hasWriteAccess = isAdmin(user) || isSubAdmin(user);\n\n const [search, setSearch] = useState('');\n\n const {\n data: templates,\n isLoading,\n fetchNext,\n refresh,\n } = usePaginatedList((cursor: string | null) => listSmsEmergencyTemplates(user, cursor, search), [search, user]);\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n // Refresh on page focus\n useEffect(() => {\n const unsubscribe = navigation.addListener('focus', () => {\n refresh();\n });\n\n return unsubscribe;\n }, [navigation, refresh]);\n\n return (\n \n setSearch('')}\n leftIcon=\"arrow-back\"\n onChangeText={setSearch}\n value={search}\n style={{ marginBottom: 10 }}\n />\n {\n return (\n \n }\n title={item.title}\n date={item.dateCreated}\n user={\n item.author && {\n profileFileId: item.author.fichierIdProfil,\n lastName: item.author.nom,\n firstName: item.author.prenom,\n }\n }\n left={\n \n {\n navigation.navigate(ScreenNames.EmergencySmsSendTemplate, { id: item.id });\n }}\n title={t('send')}\n style={{ marginTop: 5, marginBottom: 5, width: 130 }}\n textStyle={{ fontSize: 16 }}\n />\n \n }\n onPress={() => {\n navigation.navigate(ScreenNames.EmergencySmsSendTemplate, { id: item.id });\n }}\n />\n );\n }}\n ListEmptyComponent={{t('no_contributions')}}\n ItemSeparatorComponent={() => }\n onEndReached={fetchNext}\n />\n {hasWriteAccess && (\n }\n onPress={() => {\n navigation.navigate(ScreenNames.EmergencySmsSend);\n }}\n placement=\"left\"\n />\n )}\n \n );\n}\n\nconst styles = StyleSheet.create({\n pictureContainer: {\n width: 80,\n height: 80,\n borderRadius: 10,\n marginRight: 20,\n },\n emptyText: {\n textAlign: 'center',\n color: LIGHT_GRAY,\n },\n actionContainer: {\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center',\n },\n});\n","import { useEffect, useState } from 'react';\nimport { FlatList, StyleSheet, TouchableOpacity, View } from 'react-native';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport { useDispatch } from 'react-redux';\nimport { FAB } from '@rneui/base';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport Feather from 'react-native-vector-icons/Feather';\nimport useLoggedUser from '../../../hooks/useLoggedUser';\nimport { setLoading } from '../../../store/action';\nimport usePaginatedList from '../../../hooks/usePaginatedList';\nimport { deleteSmsEmergencyTemplate, listSmsEmergencyMyTemplates } from '../../../services/api/sms.emergency.api';\nimport { AppScreen } from '../../../components/containers/AppScreen';\nimport { SearchTextInput } from '../../../components/atomic/SearchTextInput';\nimport AppText from '../../../components/atomic/AppText';\nimport { t } from '../../../services/translations';\nimport ListItemRow from '../../../components/atomic/ListItemRow';\nimport { ALERT_COLOR, DARK_GRAY, LIGHT_GRAY, PRIMARY_COLOR } from '../../../styles/appColor';\nimport { ScreenNames } from '../../../ScreenNames';\nimport Separator from '../../../components/atomic/Separator';\nimport { TwoActionsGenericPopup } from '../../../components/containers/TwoActionsButtonPopup';\n\nexport default function EmergencySmsListMyTemplatesScreen() {\n const user = useLoggedUser();\n const navigation = useNavigation>();\n const dispatch = useDispatch();\n\n const [search, setSearch] = useState('');\n\n const {\n data: templates,\n isLoading,\n fetchNext,\n refresh,\n } = usePaginatedList((cursor: string | null) => listSmsEmergencyMyTemplates(user, cursor, search), [search, user]);\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n // Refresh on page focus\n useEffect(() => {\n const unsubscribe = navigation.addListener('focus', () => {\n refresh();\n });\n\n return unsubscribe;\n }, [navigation, refresh]);\n\n return (\n \n setSearch('')}\n leftIcon=\"arrow-back\"\n onChangeText={setSearch}\n value={search}\n style={{ marginBottom: 10 }}\n />\n {\n return (\n \n }\n title={item.title}\n date={item.dateCreated}\n user={\n item.author && {\n profileFileId: item.author.fichierIdProfil,\n lastName: item.author.nom,\n firstName: item.author.prenom,\n }\n }\n left={\n \n {\n navigation.navigate(ScreenNames.EmergencySmsUpdateTemplate, { id: item.id });\n }}\n >\n \n \n {\n await deleteSmsEmergencyTemplate(user, item.id);\n await refresh();\n }}\n onPressButton2={() => {}}\n >\n \n \n \n }\n />\n );\n }}\n ListEmptyComponent={{t('no_contributions')}}\n ItemSeparatorComponent={() => }\n onEndReached={fetchNext}\n />\n }\n onPress={() => {\n navigation.navigate(ScreenNames.EmergencySmsCreateTemplate);\n }}\n placement=\"left\"\n />\n \n );\n}\n\nconst styles = StyleSheet.create({\n pictureContainer: {\n width: 80,\n height: 80,\n borderRadius: 10,\n marginRight: 20,\n },\n emptyText: {\n textAlign: 'center',\n color: LIGHT_GRAY,\n },\n actionContainer: {\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center',\n },\n actionIcon: {\n paddingHorizontal: 10,\n },\n});\n","import React from 'react';\nimport * as Yup from 'yup';\nimport { t } from '../../../services/translations';\nimport { AppScreen } from '../../../components/containers/AppScreen';\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';\nimport TextField from '../../../components/atomic/formik/TextField';\nimport SubmitButton from '../../../components/atomic/formik/SubmitButton';\n\nexport const schema = Yup.object({\n title: Yup.string().min(1).required(t('field_required')),\n message: Yup.string().min(1).max(160).required(t('field_required')),\n});\n\nexport type EmergencySmsTemplateFormFieldsProps = {\n isEditing?: boolean | undefined;\n};\n\nexport default function EmergencySmsTemplateFormFields({ isEditing }: EmergencySmsTemplateFormFieldsProps) {\n return (\n \n \n \n \n \n \n \n );\n}\n","import { useEffect } from 'react';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport { useMutation } from '@tanstack/react-query';\nimport useLoggedUser from '../../../hooks/useLoggedUser';\nimport { createSmsEmergencyTemplate } from '../../../services/api/sms.emergency.api';\nimport { CreateSmsEmergencyTemplate } from '../../../entities/CreateSmsEmergencyTemplate';\nimport { alertInfo } from '../../../services/utils';\nimport { t } from '../../../services/translations';\nimport Form from '../../../components/atomic/formik/Form';\nimport EmergencySmsTemplateFormFields, { schema } from './EmergencySmsTemplateFormFields';\n\nexport default function EmergencySmsCreateTemplateScreen() {\n const user = useLoggedUser();\n const navigation = useNavigation>();\n\n const { mutateAsync, isError } = useMutation({\n mutationFn: async (values: CreateSmsEmergencyTemplate) => {\n await createSmsEmergencyTemplate(user, values);\n navigation.goBack();\n },\n });\n\n // Display error message if needed\n useEffect(() => {\n if (isError) {\n alertInfo(t('error_occurred'));\n }\n }, [isError]);\n\n return (\n \n \n \n );\n}\n","import { useEffect, useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport useLoggedUser from '../../../hooks/useLoggedUser';\nimport { getSmsEmergencyTemplates, updateSmsEmergencyTemplate } from '../../../services/api/sms.emergency.api';\nimport { UpdateSmsEmergencyTemplate } from '../../../entities/UpdateSmsEmergencyTemplate';\nimport { alertInfo } from '../../../services/utils';\nimport { t } from '../../../services/translations';\nimport Form from '../../../components/atomic/formik/Form';\nimport EmergencySmsTemplateFormFields, { schema } from './EmergencySmsTemplateFormFields';\nimport { setLoading } from '../../../store/action';\nimport { View } from 'react-native';\n\nexport type EmergencySmsUpdateTemplateScreenProps = {\n route: {\n params: {\n id: string;\n };\n };\n};\n\nexport default function EmergencySmsUpdateTemplateScreen({ route }: EmergencySmsUpdateTemplateScreenProps) {\n const user = useLoggedUser();\n const id = parseInt(route.params.id);\n const navigation = useNavigation>();\n const dispatch = useDispatch();\n\n const {\n data,\n isLoading: isLoadingDetails,\n isFetched,\n } = useQuery(['getSmsEmergencyTemplates', id], () => getSmsEmergencyTemplates(user, id), { cacheTime: 0 });\n\n const {\n mutateAsync,\n isError,\n isLoading: isLoadingMutation,\n } = useMutation({\n mutationFn: async (values: UpdateSmsEmergencyTemplate) => {\n await updateSmsEmergencyTemplate(user, id, values);\n navigation.goBack();\n },\n });\n\n const isLoading = isLoadingDetails || isLoadingMutation;\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n // Display error message if needed\n useEffect(() => {\n if (isError) {\n alertInfo(t('error_occurred'));\n }\n }, [isError]);\n\n const initialValues = useMemo(\n () => ({\n title: data?.title,\n message: data?.message,\n }),\n [data]\n );\n\n return isFetched ? (\n
\n \n \n ) : (\n \n );\n}\n","import React from 'react';\nimport { View } from 'react-native';\nimport { useQuery } from '@tanstack/react-query';\nimport ContributionSpreadingField from './ContributionSpreadingField';\nimport { isMobile } from '../../../services/utils';\nimport AppText, { Mode } from '../AppText';\nimport { PRIMARY_COLOR } from '../../../styles/appColor';\nimport { t } from '../../../services/translations';\nimport { sendUserCount } from '../../../services/api/sms.emergency.api';\nimport useLoggedUser from '../../../hooks/useLoggedUser';\nimport { useField } from 'formik';\nimport { SpreadingPostData } from '../../../entities/SpreadingPostData';\n\nexport default function SmsSendContributionSpreadingField() {\n const user = useLoggedUser();\n\n const [{ value: spreadingType }, ,] = useField('spreadingType');\n const [{ value: userIds }, ,] = useField('userIds');\n const [{ value: entrepriseServiceIds }, ,] = useField('entrepriseServiceIds');\n const [{ value: entrepriseSiteGeoIds }, ,] = useField('entrepriseSiteGeoIds');\n const [{ value: entrepriseGroupIds }, ,] = useField('entrepriseGroupIds');\n\n const { data: userCount } = useQuery(\n ['sendUserCount', spreadingType, userIds, entrepriseServiceIds, entrepriseSiteGeoIds, entrepriseGroupIds],\n () =>\n sendUserCount(user, {\n spreadingType,\n userIds,\n entrepriseServiceIds,\n entrepriseSiteGeoIds,\n entrepriseGroupIds,\n } as SpreadingPostData),\n {\n cacheTime: 0,\n }\n );\n\n return (\n \n \n \n {t('chosen_audience')}\n \n \n {userCount.userCount} contributeur{userCount.userCount > 1 ? 's' : ''}\n \n \n \n \n {t('phone_count')}\n \n \n {userCount.phoneUserCount} contributeur{userCount.phoneUserCount > 1 ? 's' : ''}\n \n
\n \n ) : undefined\n }\n />\n );\n}\n","import { useEffect } from 'react';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport { useMutation } from '@tanstack/react-query';\nimport * as Yup from 'yup';\nimport Form from '../../../components/atomic/formik/Form';\nimport { t } from '../../../services/translations';\nimport { contributionSpreadingFieldValidators } from '../../../components/atomic/formik/ContributionSpreadingField';\nimport useLoggedUser from '../../../hooks/useLoggedUser';\nimport { SendSmsEmergency } from '../../../entities/SendSmsEmergency';\nimport { sendSmsEmergency } from '../../../services/api/sms.emergency.api';\nimport { alertInfo } from '../../../services/utils';\nimport TextField from '../../../components/atomic/formik/TextField';\nimport SubmitButton from '../../../components/atomic/formik/SubmitButton';\nimport { AppScreen } from '../../../components/containers/AppScreen';\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';\nimport SmsSendContributionSpreadingField from '../../../components/atomic/formik/SmsSendContributionSpreadingField';\n\nexport const schema = Yup.object({\n message: Yup.string().min(1).max(160).required(t('field_required')),\n ...contributionSpreadingFieldValidators,\n});\n\nexport default function EmergencySmsSendScreen() {\n const user = useLoggedUser();\n const navigation = useNavigation>();\n\n const { mutateAsync, isError } = useMutation({\n mutationFn: async (values: SendSmsEmergency) => {\n await sendSmsEmergency(user, values);\n navigation.goBack();\n },\n });\n\n // Display error message if needed\n useEffect(() => {\n if (isError) {\n alertInfo(t('error_occurred'));\n }\n }, [isError]);\n\n return (\n \n \n \n initialValues={{ message: '' } as any}\n onSubmit={mutateAsync as any}\n validationSchema={schema}\n validateOnMount\n >\n \n \n \n \n \n \n );\n}\n","import { useEffect } from 'react';\nimport { View } from 'react-native';\nimport { useDispatch } from 'react-redux';\nimport * as Yup from 'yup';\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { contributionSpreadingFieldValidators } from '../../../components/atomic/formik/ContributionSpreadingField';\nimport { t } from '../../../services/translations';\nimport useLoggedUser from '../../../hooks/useLoggedUser';\nimport { SendTemplate } from '../../../entities/SendTemplate';\nimport { getSmsEmergencyTemplates, sendSmsEmergencyTemplate } from '../../../services/api/sms.emergency.api';\nimport { alertInfo } from '../../../services/utils';\nimport { AppScreen } from '../../../components/containers/AppScreen';\nimport Form from '../../../components/atomic/formik/Form';\nimport SmsSendContributionSpreadingField from '../../../components/atomic/formik/SmsSendContributionSpreadingField';\nimport SubmitButton from '../../../components/atomic/formik/SubmitButton';\nimport { setLoading } from '../../../store/action';\nimport TextField from '../../../components/atomic/formik/TextField';\n\nexport type EmergencySmsSendTemplateScreenProps = {\n route: {\n params: {\n id: string;\n };\n };\n};\n\nexport const schema = Yup.object({\n ...contributionSpreadingFieldValidators,\n});\n\nexport default function EmergencySmsSendTemplateScreen({ route }: EmergencySmsSendTemplateScreenProps) {\n const user = useLoggedUser();\n const id = parseInt(route.params.id);\n const navigation = useNavigation>();\n const dispatch = useDispatch();\n\n const {\n data,\n isLoading: isLoadingDetails,\n isFetched,\n } = useQuery(['getSmsEmergencyTemplates', id], () => getSmsEmergencyTemplates(user, id), { cacheTime: 0 });\n\n const { mutateAsync, isError } = useMutation({\n mutationFn: async (values: SendTemplate) => {\n await sendSmsEmergencyTemplate(user, id, values);\n navigation.goBack();\n },\n });\n\n // Display error message if needed\n useEffect(() => {\n if (isError) {\n alertInfo(t('error_occurred'));\n }\n }, [isError]);\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoadingDetails));\n }, [isLoadingDetails, dispatch]);\n\n return data ? (\n \n \n \n initialValues={{ message: data.message } as any}\n onSubmit={mutateAsync as any}\n validationSchema={schema}\n validateOnMount\n >\n \n \n \n \n \n \n ) : (\n \n );\n}\n","import { createMaterialTopTabNavigator } from '@react-navigation/material-top-tabs';\nimport { createStackNavigator } from '@react-navigation/stack';\nimport React from 'react';\nimport { ScreenNames } from '../ScreenNames';\nimport { t } from '../services/translations';\nimport { isAdmin, isMobile, isSubAdmin } from '../services/utils';\nimport useLoggedUser from '../hooks/useLoggedUser';\nimport EmergencySmsListTemplatesScreen from '../screens/loggedIn/emergencySms/EmergencySmsListTemplatesScreen';\nimport EmergencySmsListMyTemplatesScreen from '../screens/loggedIn/emergencySms/EmergencySmsListMyTemplatesScreen';\nimport EmergencySmsCreateTemplateScreen from '../screens/loggedIn/emergencySms/EmergencySmsCreateTemplateScreen';\nimport EmergencySmsUpdateTemplateScreen from '../screens/loggedIn/emergencySms/EmergencySmsUpdateTemplateScreen';\nimport EmergencySmsSendScreen from '../screens/loggedIn/emergencySms/EmergencySmsSendScreen';\nimport EmergencySmsSendTemplateScreen from '../screens/loggedIn/emergencySms/EmergencySmsSendTemplateScreen';\nimport BackIcon from '../components/atomic/BackIcon';\nimport { BACKGROUND_COLOR } from '../styles/appColor';\n\nfunction Tabs() {\n const Tab = createMaterialTopTabNavigator();\n const user = useLoggedUser();\n\n if (isAdmin(user) || isSubAdmin(user)) {\n return (\n \n \n \n \n );\n } else {\n return ;\n }\n}\n\nconst Stack = createStackNavigator();\n\nexport function EmergencySmsRouter() {\n return (\n \n \n \n \n \n \n \n );\n}\n","import React from 'react';\nimport { Platform, StyleSheet } from 'react-native';\nimport { TouchableOpacity } from 'react-native-gesture-handler';\nimport { DrawerActions, ParamListBase, useNavigation } from '@react-navigation/native';\nimport { DrawerNavigationProp } from '@react-navigation/drawer';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport { PRIMARY_COLOR } from '../../styles/appColor';\n\nexport type DrawerToggleButtonProps = {\n accessibilityLabel?: string;\n pressColor?: string;\n pressOpacity?: number;\n tintColor?: string;\n};\n\nexport default function DrawerToggleButton({ ...rest }: DrawerToggleButtonProps) {\n const navigation = useNavigation>();\n\n return (\n navigation.dispatch(DrawerActions.toggleDrawer())}\n style={styles.touchable}\n hitSlop={Platform.select({\n ios: undefined,\n default: { top: 16, right: 16, bottom: 16, left: 16 },\n })}\n >\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n icon: {\n height: 24,\n width: 24,\n margin: 3,\n resizeMode: 'contain',\n },\n touchable: {\n marginHorizontal: 11,\n },\n});\n","export enum ModuleEnum {\n News = 0,\n Admin = 1,\n ContributionVente = 2,\n ContributionHobbie = 3,\n ContributionService = 4,\n ContributionCovoiturage = 5,\n ContributionEvenement = 6,\n ContributionFormation = 7,\n ContributionOrganigrame = 8,\n ContributionObjet = 9,\n ContributionSondage = 10,\n ContributionBoiteIdee = 11,\n ContributionKiosque = 12,\n UserDirectory = 13,\n EmergencySms = 14,\n Booking = 15,\n}\n\nexport interface ModuleSettings {\n id: number;\n dateCreated: string;\n dateUpdated: string;\n module: ModuleEnum;\n order: number;\n entrepriseId: number;\n}\n","import { DrawerScreenProps } from '@react-navigation/drawer';\nimport React from 'react';\nimport { useDispatch } from 'react-redux';\nimport FormLoading from '../../../../components/containers/FormLoading';\nimport { CompanyNewsUpload } from '../../../../models/CompanyNews';\nimport { getCompanyNewsDetail, putCompanyNews } from '../../../../services/api/news.contributions.api';\nimport { t } from '../../../../services/translations';\nimport { alertInfo, hasSubAdminRight, isAdmin, sendSuccessText } from '../../../../services/utils';\nimport { setContributionsListNeedsRefresh, setLoading } from '../../../../store/action';\nimport { ContributionType } from '../../../../types';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport NewsFormFields, { schema } from './NewsFormFields';\nimport Form from '../../../../components/atomic/formik/Form';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport { MActuPostDetails } from '../../../../entities/MActuPostDetails';\nimport { MActuPostMedia } from '../../../../entities/MActuPostMedia';\n\ntype ScreenProps = DrawerScreenProps;\n\nexport type FormData = Omit & {\n images: Partial[];\n};\n\nexport function getInitialValuesFromData(data: MActuPostDetails): FormData {\n return {\n titre: data.titre,\n texte: data.texte,\n translations: data.translations.map((translation) => ({\n lng: translation.languageCode,\n titre: translation.titre,\n description: translation.texte,\n })),\n videoUrl: data.videoUrl,\n commentsActivated: data.commentsActivated,\n notifActivated: data.notifActivated,\n emailActivated: data.emailActivated,\n highlightedDays: data.highlightedDays || null,\n images: data.mActuPostMedias,\n spreadingType: data.spreadingType as any as number,\n userIds: data.userTargets.map((e) => e.userId),\n entrepriseServiceIds: data.entrepriseServices.map((e) => e.entrepriseServiceId),\n entrepriseSiteGeoIds: data.entrepriseSiteGeos.map((e) => e.entrepriseSiteGeoId),\n entrepriseGroupIds: data.entrepriseGroups.map((e) => e.entrepriseGroupId),\n visibleStartDate: data.visibleStartDate,\n visibleEndDate: data.visibleEndDate,\n categoryId: data.categoryId || undefined,\n publicationMode: !data.visibleStartDate\n ? 'immediate_posting'\n : !data.visibleEndDate\n ? 'planned_with_start_date'\n : 'planned_with_start_and_end_date',\n };\n}\n\nexport default function UpdateNewsScreen({ route }: ScreenProps) {\n const dispatch = useDispatch();\n const user = useLoggedUser();\n const navigation = useNavigation>();\n const id = route.params?.id;\n\n const { data } = useQuery(['news-details', id], () => getCompanyNewsDetail(user, id));\n\n const { mutateAsync, isLoading } = useMutation({\n mutationFn: async (body: CompanyNewsUpload) => {\n dispatch(setLoading(true));\n return putCompanyNews(user, id, body);\n },\n onSuccess: (_, values) => {\n const hasRights =\n isAdmin(user) ||\n hasSubAdminRight(user, values.entrepriseServiceIds, values.entrepriseSiteGeoIds, values.entrepriseGroupIds);\n\n alertInfo(sendSuccessText(user, ContributionType.COMPANY_NEWS, hasRights));\n dispatch(setContributionsListNeedsRefresh(true));\n navigation.goBack();\n },\n onError: () => {\n alertInfo(t('error_occurred'));\n },\n onSettled: () => {\n dispatch(setLoading(false));\n },\n });\n\n if (isLoading || !data) {\n return ;\n }\n\n return (\n \n \n \n );\n}\n","import { DrawerScreenProps } from '@react-navigation/drawer';\nimport React from 'react';\nimport { useDispatch } from 'react-redux';\nimport FormLoading from '../../../../components/containers/FormLoading';\nimport { CompanyNewsUpload } from '../../../../models/CompanyNews';\nimport { getCompanyNewsDetail, postCompanyNews } from '../../../../services/api/news.contributions.api';\nimport { t } from '../../../../services/translations';\nimport { alertInfo, hasSubAdminRight, isAdmin, sendSuccessText } from '../../../../services/utils';\nimport { setContributionsListNeedsRefresh, setLoading } from '../../../../store/action';\nimport { ContributionType } from '../../../../types';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport NewsFormFields, { schema } from './NewsFormFields';\nimport Form from '../../../../components/atomic/formik/Form';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport { getInitialValuesFromData } from './UpdateNewsScreen';\n\ntype ScreenProps = DrawerScreenProps;\n\nexport default function DuplicateNewsScreen({ route }: ScreenProps) {\n const dispatch = useDispatch();\n const user = useLoggedUser();\n const navigation = useNavigation>();\n const id = route.params?.id;\n\n const { data } = useQuery(['news-details', id], () => getCompanyNewsDetail(user, id));\n\n const { mutateAsync, isLoading } = useMutation({\n mutationFn: async (body: CompanyNewsUpload) => {\n dispatch(setLoading(true));\n return postCompanyNews(user, body);\n },\n onSuccess: (_, values) => {\n const hasRights =\n isAdmin(user) ||\n hasSubAdminRight(user, values.entrepriseServiceIds, values.entrepriseSiteGeoIds, values.entrepriseGroupIds);\n\n alertInfo(sendSuccessText(user, ContributionType.COMPANY_NEWS, hasRights));\n dispatch(setContributionsListNeedsRefresh(true));\n navigation.goBack();\n },\n onError: () => {\n alertInfo(t('error_occurred'));\n },\n onSettled: () => {\n dispatch(setLoading(false));\n },\n });\n\n if (isLoading || !data) {\n return ;\n }\n\n return (\n \n \n \n );\n}\n","import React, { useCallback, useMemo, useState } from 'react';\nimport dayjs from 'dayjs';\nimport { Calendar, CalendarTouchableOpacityProps, ICalendarEventBase } from 'react-native-big-calendar';\nimport { ActivityIndicator, Image, Pressable, ScrollView, StyleSheet, Text, View } from 'react-native';\nimport { Button } from '@rneui/base';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport AppText, { Mode } from '../atomic/AppText';\nimport { match } from 'ts-pattern';\nimport { language, t } from '../../services/translations';\nimport { DARK_GRAY, PRIMARY_COLOR, SECONDARY_COLOR, WHITE } from '../../styles/appColor';\nimport { AppPickerSelect } from '../atomic/FormField';\nimport { deleteBooking, listBookingByResourceId } from '../../services/api/booking.contribution.api';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport { alertInfo, applyTimeZoneOnAndroid, combineNames, getReadableHour } from '../../services/utils';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { ContributionBookingSummary } from '../../entities/ContributionBookingSummary';\nimport { UserSubRow } from '../atomic/UserSubRow';\nimport { TouchableOpacity } from 'react-native-gesture-handler';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport { ScreenNames } from '../../ScreenNames';\nimport { TwoActionsGenericPopup } from '../containers/TwoActionsButtonPopup';\nimport {\n addDays,\n differenceInDays,\n differenceInMinutes,\n endOfDay,\n format,\n isSameDay,\n setHours,\n setMinutes,\n setSeconds,\n startOfDay,\n startOfHour,\n} from 'date-fns';\nimport useContributionListRefresh from '../../hooks/useContributionListRefresh';\nimport { useDeviceSize } from '../../hooks/useDeviceSize';\nimport { AppModalOverlay } from '../atomic/AppModalOverlay';\nimport { headerBackgroundPopup } from '../../services/assets';\nimport { ProfilePicture } from '../atomic/ProfilePicture';\nimport { AppButton, Type } from '../atomic/AppButton';\nimport Entypo from 'react-native-vector-icons/Entypo';\n\nexport type BookingCalendarProps = {\n resourceId: number;\n onPress: (date: Date) => void;\n};\n\nexport default function BookingCalendar({ resourceId, onPress }: BookingCalendarProps) {\n const loggedUser = useLoggedUser();\n const languageCode = language().split('-')[0];\n const [calendarMode, setCalendarMode] = useState<'week' | 'month'>('week');\n const [displayedDate, setDisplayedDate] = useState(dayjs().locale(languageCode));\n const [selectedItem, setSelectedItem] = useState<\n (ICalendarEventBase & Omit) | null\n >(null);\n const { isSmallMediumDevice } = useDeviceSize();\n\n const begin = match(calendarMode)\n .with('week', () => displayedDate.subtract(1, 'week').startOf('week').toDate())\n .with('month', () => displayedDate.subtract(1, 'month').startOf('month').toDate())\n .exhaustive();\n\n const end = match(calendarMode)\n .with('week', () => displayedDate.add(1, 'week').endOf('week').toDate())\n .with('month', () => displayedDate.add(1, 'month').endOf('month').toDate())\n .exhaustive();\n\n const { data, isLoading, refetch } = useQuery(\n ['booking-resources', loggedUser?.id, resourceId, begin.toISOString(), end.toISOString()],\n () => listBookingByResourceId(loggedUser, resourceId, begin, end),\n {\n onError: () => {\n alertInfo(t('unknown_error'));\n },\n }\n );\n\n const bookings = useMemo(() => {\n // If a booking is reparted on many days, we need to cut it\n if (calendarMode === 'week') {\n return data\n ?.reduce((acc, item) => {\n const start = new Date(item.begin);\n const end = new Date(item.end);\n\n if (isSameDay(start, end)) {\n return acc.concat(item);\n } else {\n // First day\n acc.push({\n ...item,\n begin: start.toISOString(),\n end: endOfDay(start).toISOString(),\n });\n\n // Days between\n const daysDiff = differenceInDays(end, start);\n for (let i = 1; i < daysDiff; i++) {\n acc.push({\n ...item,\n begin: startOfDay(addDays(start, i)).toISOString(),\n end: endOfDay(addDays(start, i)).toISOString(),\n });\n }\n\n // Last day\n acc.push({\n ...item,\n begin: startOfDay(end).toISOString(),\n end: end.toISOString(),\n });\n\n return acc;\n }\n }, [] as ContributionBookingSummary[])\n .map((item) => ({\n ...item,\n begin: new Date(\n Math.max(new Date(item.begin).getTime(), setHours(new Date(item.begin), 7).getTime())\n ).toISOString(),\n end: new Date(\n Math.min(\n new Date(item.end).getTime(),\n setSeconds(setMinutes(setHours(new Date(item.end), 21), 0), 0).getTime()\n )\n ).toISOString(),\n }));\n } else {\n return data;\n }\n }, [data, calendarMode]);\n\n // Refresh after an update\n useContributionListRefresh(refetch);\n\n const onNext = useCallback(\n () =>\n setDisplayedDate((displayedDate) =>\n match(calendarMode)\n .with('week', () => displayedDate.add(1, 'week'))\n .with('month', () => displayedDate.add(1, 'month'))\n .exhaustive()\n ),\n [calendarMode]\n );\n\n const onPrev = useCallback(\n () =>\n setDisplayedDate((displayedDate) =>\n match(calendarMode)\n .with('week', () => displayedDate.subtract(1, 'week'))\n .with('month', () => displayedDate.subtract(1, 'month'))\n .exhaustive()\n ),\n [calendarMode]\n );\n\n return (\n \n \n \n }\n onPress={onPrev}\n style={styles.button}\n buttonStyle={styles.buttonButton}\n containerStyle={styles.buttonContainer}\n />\n setDisplayedDate(dayjs().locale(languageCode))}\n titleStyle={styles.buttonText}\n style={styles.button}\n buttonStyle={styles.buttonButton}\n containerStyle={styles.buttonContainer}\n />\n }\n onPress={onNext}\n style={styles.button}\n buttonStyle={styles.buttonButton}\n containerStyle={styles.buttonContainer}\n />\n \n \n {match(calendarMode)\n .with('week', () => t('week_of', { date: displayedDate.format('DD/MM/YYYY') }))\n .with('month', () => displayedDate.format('MM/YYYY'))\n .exhaustive()}\n \n \n defaultValue={calendarMode}\n hideDefaultButton\n onChangeText={(value) => {\n setCalendarMode(value || 'week');\n }}\n data={[\n {\n label: t('week'),\n value: 'week',\n },\n {\n label: t('month'),\n value: 'month',\n },\n ]}\n />\n \n {isLoading ? (\n \n \n \n ) : (\n >\n events={\n bookings\n ? bookings.map((item) => ({\n ...item,\n title: '',\n start: applyTimeZoneOnAndroid(new Date(item.begin)),\n end: applyTimeZoneOnAndroid(new Date(item.end)),\n }))\n : []\n }\n renderEvent={(event, pressableProps) => (\n \n )}\n hourRowHeight={80}\n height={400}\n mode={calendarMode}\n locale={language().split('-')[0]}\n weekStartsOn={1}\n date={displayedDate.toDate()}\n swipeEnabled={false}\n headerContainerStyle={styles.monthHeader}\n onPressCell={(date) => {\n match(calendarMode)\n .with('week', () => onPress(startOfHour(date)))\n .with('month', () => onPress(setHours(startOfDay(date), 8)))\n .exhaustive();\n }}\n onPressEvent={(ev) => {\n match(calendarMode)\n .with('week', () => {\n const durationInMinutes = differenceInMinutes(ev.end, ev.start);\n const isSmallSquare = isSmallMediumDevice || durationInMinutes < 60;\n\n if (isSmallSquare) {\n setSelectedItem(ev);\n }\n })\n .with('month', () => {\n setSelectedItem(ev);\n })\n .exhaustive();\n }}\n onPressDateHeader={(date) => {\n onPress(setHours(startOfDay(date), 8));\n }}\n showVerticalScrollIndicator\n moreLabel={`{moreCount} ${t('others')}`}\n minHour={7}\n maxHour={20}\n scrollOffsetMinutes={60}\n />\n )}\n setSelectedItem(null)}\n refetch={refetch}\n />\n \n );\n}\n\ntype CalendarEventProps = {\n event: ICalendarEventBase & Omit;\n pressableProps: CalendarTouchableOpacityProps;\n calendarMode: 'week' | 'month';\n refetch: () => void;\n};\n\nfunction CalendarEvent({ event, pressableProps, calendarMode, refetch }: CalendarEventProps) {\n const navigation = useNavigation>();\n const loggedUser = useLoggedUser();\n const { isSmallMediumDevice } = useDeviceSize();\n\n const { mutateAsync: deleteBookingMutation } = useMutation({\n mutationFn: async (id: number) => {\n await deleteBooking(loggedUser, id);\n await refetch();\n },\n });\n\n const durationInMinutes = differenceInMinutes(event.end, event.start);\n\n const isSmallSquare = isSmallMediumDevice || durationInMinutes < 60;\n\n return (\n \n {calendarMode === 'week' && (\n = 45 ? styles.eventContainer : styles.eventContainerSmall}>\n {isSmallSquare ? (\n \n \n \n ) : (\n <>\n {event.authorId === loggedUser.id && (\n \n {\n navigation.navigate(ScreenNames.BookingUpdate, { id: event.id });\n }}\n >\n \n \n deleteBookingMutation(event.id)}\n onPressButton2={() => {}}\n >\n \n \n \n )}\n \n \n {getReadableHour(event.begin) + ' - ' + getReadableHour(event.end)}\n \n \n \n \n )}\n \n )}\n \n );\n}\n\ntype BookingPopupProps = {\n item: (ICalendarEventBase & Omit) | null;\n isVisible: boolean;\n onDismiss: () => void;\n refetch: () => void;\n};\n\nfunction BookingPopup({ item, isVisible, onDismiss, refetch }: BookingPopupProps) {\n const navigation = useNavigation>();\n const loggedUser = useLoggedUser();\n\n const { mutateAsync: deleteBookingMutation } = useMutation({\n mutationFn: async (id: number) => {\n await deleteBooking(loggedUser, id);\n },\n onSuccess: () => {\n refetch();\n },\n });\n\n return (\n \n \n \n \n \n \n \n \n \n {item && combineNames(item?.author)}\n \n {item && (\n \n {format(new Date(item.start), 'HH:mm')} - {format(new Date(item.end), 'HH:mm')}\n \n )}\n {item && loggedUser.id === item.authorId && (\n \n {\n navigation.navigate(ScreenNames.BookingUpdate, { id: item.id });\n onDismiss();\n }}\n enabled\n />\n {\n onDismiss();\n deleteBookingMutation(item.id);\n }}\n onPressButton2={() => {}}\n >\n \n \n \n )}\n \n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n loadingContainer: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n },\n container: {\n flex: 1,\n },\n monthHeader: { maxHeight: 84 },\n controlsContainer: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center',\n marginHorizontal: 10,\n marginVertical: 8,\n },\n controlsContainerMobile: {\n flexDirection: 'column',\n justifyContent: 'space-between',\n alignItems: 'stretch',\n marginHorizontal: 10,\n marginVertical: 8,\n gap: 8,\n },\n calendarButtons: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 8,\n },\n buttonContainer: {\n borderColor: DARK_GRAY,\n borderWidth: 1,\n borderRadius: 4,\n },\n calendarModeLabel: {\n textAlign: 'center',\n },\n button: {},\n buttonButton: {\n backgroundColor: 'transparent',\n },\n buttonText: {\n fontSize: 12,\n lineHeight: 16,\n color: DARK_GRAY,\n },\n eventPressableWeek: {\n backgroundColor: 'transparent',\n elevation: 0,\n padding: 2,\n boxShadow: 'none',\n transform: [{ translateY: -2.5 }],\n },\n eventPressableMonth: {\n flex: 1,\n backgroundColor: PRIMARY_COLOR,\n },\n eventContainer: {\n flex: 1,\n backgroundColor: PRIMARY_COLOR,\n padding: 10,\n borderRadius: 4,\n },\n eventContainerSmall: {\n flex: 1,\n backgroundColor: PRIMARY_COLOR,\n paddingHorizontal: 10,\n borderRadius: 4,\n justifyContent: 'center',\n },\n eventActions: {\n flexDirection: 'row',\n justifyContent: 'flex-end',\n gap: 8,\n },\n eventContent: {\n flex: 1,\n flexDirection: 'row',\n justifyContent: 'center',\n alignItems: 'center',\n },\n eventLabel: {\n fontSize: 12,\n lineHeight: 16,\n color: 'white',\n },\n bookingPopupContainer: {\n flexDirection: 'column',\n width: 350,\n padding: 0,\n borderRadius: 5,\n overflow: 'hidden',\n },\n bookingPopupScrollView: { marginBottom: 10 },\n bookingPopupScrollViewContent: {\n alignItems: 'center',\n justifyContent: 'flex-start',\n padding: 0,\n flexGrow: 1,\n },\n bookingPopupBackground: {\n height: 135,\n width: 350,\n alignItems: 'center',\n justifyContent: 'flex-end',\n },\n bookingPopupProfilePicture: {\n marginTop: -75,\n alignSelf: 'center',\n },\n bookingPopupAuthorName: {\n fontSize: 25,\n marginTop: 21,\n marginBottom: 9,\n textAlign: 'center',\n marginLeft: 10,\n marginRight: 10,\n },\n bookingPopupTime: {\n fontSize: 20,\n marginBottom: 21,\n textAlign: 'center',\n marginLeft: 10,\n marginRight: 10,\n },\n bookingPopupEventActions: {\n gap: 10,\n },\n bookingPopupFooter: { width: '100%', height: 10, backgroundColor: SECONDARY_COLOR },\n threeDotsContainer: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n },\n bookingPopupCloseButton: {\n position: 'absolute',\n top: 10,\n left: 10,\n zIndex: 10,\n },\n});\n","import React, { useEffect, useState } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport { useDispatch } from 'react-redux';\nimport { t } from '../../../../services/translations';\nimport { alertInfo } from '../../../../services/utils';\nimport { setLoading } from '../../../../store/action';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport { useQuery } from '@tanstack/react-query';\nimport { getBookingResources } from '../../../../services/api/booking.contribution.api';\nimport { ContributionBookingResourceSummary } from '../../../../entities/ContributionBookingResourceSummary';\nimport HorizontalFlatList from '../../../../components/containers/HorizontalList';\nimport { Chip } from '../../../../components/atomic/Chip';\nimport { contributionColors } from '../../../../services/api/contributions';\nimport { BACKGROUND_COLOR, PRIMARY_COLOR } from '../../../../styles/appColor';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport { ScreenNames } from '../../../../ScreenNames';\nimport BookingCalendar from '../../../../components/molecules/BookingCalendar';\nimport { FAB } from '@rneui/base';\nimport AppText from '../../../../components/atomic/AppText';\n\nconst colorList = Object.values(contributionColors);\n\nexport type ListBookingScreenProps = {\n route: {\n params?: {\n resourceId?: string;\n };\n };\n};\n\nexport default function ListBookingScreen({ route }: ListBookingScreenProps) {\n const loggedUser = useLoggedUser();\n const dispatch = useDispatch();\n const navigation = useNavigation>();\n const resourceId = route.params?.resourceId && parseInt(route.params.resourceId, 10);\n const [selectedResource, setSelectedResource] = useState(null);\n\n const {\n data: resources,\n isLoading,\n refetch: refresh,\n } = useQuery(['booking-resources', loggedUser?.id], () => getBookingResources(loggedUser), {\n onError: () => {\n alertInfo(t('unknown_error'));\n },\n onSuccess: (response) => {\n if (resourceId) {\n setSelectedResource(response?.find((e) => e.id === resourceId) || null);\n }\n },\n });\n\n // Select first resource by default\n useEffect(() => {\n if (selectedResource === null && resources && resources?.length > 0) {\n setSelectedResource(resources[0]);\n }\n }, [selectedResource, resources]);\n\n useEffect(() => {\n refresh();\n }, [refresh]);\n\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n return (\n \n \n item.id.toString()}\n renderItem={({ item, index }) => (\n setSelectedResource(item)}\n />\n )}\n />\n \n {selectedResource ? (\n {\n navigation.navigate(ScreenNames.BookingCreate, {\n resourceId: selectedResource.id,\n begin: date.toISOString(),\n });\n }}\n />\n ) : (\n \n {t('please_select_resource')}\n \n )}\n }\n onPress={() => {\n navigation.navigate(ScreenNames.BookingCreate, {\n resourceId: selectedResource?.id || undefined,\n });\n }}\n placement=\"left\"\n />\n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: BACKGROUND_COLOR,\n paddingBottom: 80,\n },\n labelContainers: {\n marginVertical: 10,\n paddingLeft: 10,\n },\n chip: {\n marginRight: 10,\n },\n emptyContainer: {\n flex: 1,\n justifyContent: 'center',\n alignItems: 'center',\n },\n});\n","import React from 'react';\nimport { useField } from 'formik';\nimport AppText, { AppTextProps, Mode } from '../AppText';\n\nexport type FieldHelperProps = Omit & {\n name: string;\n displayIfNotTouched?: boolean;\n};\n\nexport default function FieldHelper({ name, displayIfNotTouched, mode, ...rest }: FieldHelperProps) {\n const [, meta] = useField(name);\n\n if ((meta.touched || displayIfNotTouched) && meta.error) {\n return (\n \n {meta.error}\n \n );\n } else {\n return null;\n }\n}\n","import React, { useCallback, useEffect } from 'react';\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';\nimport * as Yup from 'yup';\nimport SubmitButton from '../../../../components/atomic/formik/SubmitButton';\nimport { AppScreen } from '../../../../components/containers/AppScreen';\nimport { t } from '../../../../services/translations';\nimport { useQuery } from '@tanstack/react-query';\nimport { alertInfo, applyDateOffset, isMobile } from '../../../../services/utils';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport {\n checkResourceIntersectWithOtherBooking,\n getBookingResources,\n} from '../../../../services/api/booking.contribution.api';\nimport { SelectField } from '../../../../components/atomic/formik/SelectField';\nimport DateField from '../../../../components/atomic/formik/DateField';\nimport { StyleSheet, View } from 'react-native';\nimport { UserSaved } from '../../../../services/storage';\nimport FieldHelper from '../../../../components/atomic/formik/FieldHelper';\nimport { useFormikContext } from 'formik';\nimport { addMinutes } from 'date-fns';\n\nexport const schema = (loggedUser: UserSaved, ignoreBookingId?: number) =>\n Yup.object({\n contributionBookingResourceId: Yup.number().required(t('field_required')),\n begin: Yup.date().required(t('field_required')),\n end: Yup.date().required(t('field_required')),\n hasIntersection: Yup.mixed().test('is-valid-range', t('booking_already_exist'), async function () {\n const { begin, end, contributionBookingResourceId } = this.parent;\n if (!begin || !end || !contributionBookingResourceId) {\n return true;\n }\n\n return !(await checkResourceIntersectWithOtherBooking(\n loggedUser,\n contributionBookingResourceId,\n applyDateOffset(begin),\n applyDateOffset(end),\n ignoreBookingId\n ));\n }),\n });\n\nexport type BookingFormFieldsProps = {\n isEditing?: boolean | undefined;\n};\n\nexport default function BookingFormFields({ isEditing }: BookingFormFieldsProps) {\n const loggedUser = useLoggedUser();\n\n const { values, validateForm, setFieldValue } = useFormikContext(); // Get form values & validation function\n\n const { data: resources } = useQuery(['booking-resources', loggedUser?.id], () => getBookingResources(loggedUser), {\n onError: () => {\n alertInfo(t('unknown_error'));\n },\n });\n\n // Trigger validation when `begin` or `end` changes\n useEffect(() => {\n if (values.contributionBookingResourceId && values.begin && values.end) {\n validateForm();\n }\n }, [values.contributionBookingResourceId, values.begin, values.end, validateForm]);\n\n // Force end to be at least greater than begin 15min\n const onTimeUpdated = useCallback(() => {\n if (values.begin) {\n if (!values.end || values.end < addMinutes(values.begin, 15)) {\n setFieldValue('end', addMinutes(values.begin, 15));\n }\n }\n }, [values.begin, values.end, setFieldValue]);\n\n useEffect(() => {\n if (isMobile()) {\n onTimeUpdated();\n }\n }, [onTimeUpdated]);\n\n return (\n \n \n ({\n label: e.name,\n value: e.id,\n })) || []\n }\n />\n \n \n \n \n \n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n padding: 10,\n },\n dateContainer: {\n flexDirection: 'row',\n alignItems: 'center',\n marginTop: 20,\n gap: 16,\n },\n});\n","import React, { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useMutation } from '@tanstack/react-query';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport Form from '../../../../components/atomic/formik/Form';\nimport { setContributionsListNeedsRefresh, setLoading } from '../../../../store/action';\nimport { alertInfo, applyDateOffset } from '../../../../services/utils';\nimport { t } from '../../../../services/translations';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport BookingFormFields, { schema } from './BookingFormFields';\nimport { createBooking } from '../../../../services/api/booking.contribution.api';\nimport { CreateContributionBooking } from '../../../../entities/CreateContributionBooking';\nimport { addHours, startOfHour } from 'date-fns';\nimport { ScreenNames } from '../../../../ScreenNames';\n\nexport type CreateBookingScreenProps = {\n route: {\n params?: {\n resourceId?: string;\n begin?: string;\n };\n };\n};\n\nexport default function CreateBookingScreen({ route }: CreateBookingScreenProps) {\n const user = useLoggedUser();\n const navigation = useNavigation>();\n const dispatch = useDispatch();\n\n const resourceId = route.params?.resourceId && parseInt(route.params.resourceId, 10);\n const begin = route.params?.begin ? new Date(route.params.begin) : startOfHour(new Date());\n const end = addHours(begin, 1);\n\n const { mutateAsync, isLoading, isError } = useMutation({\n mutationFn: async (values: CreateContributionBooking) => {\n await createBooking(user, {\n ...values,\n begin: new Date(applyDateOffset(values.begin)),\n end: new Date(applyDateOffset(values.end)),\n });\n },\n onSuccess: (_, values) => {\n dispatch(setContributionsListNeedsRefresh(true));\n navigation.reset({\n index: 0,\n routes: [{ name: ScreenNames.BookingMain, params: { resourceId: values.contributionBookingResourceId } }],\n });\n alertInfo(t('booking_created'));\n },\n });\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n // Display error message if needed\n useEffect(() => {\n if (isError) {\n alertInfo(t('error_occurred'));\n }\n }, [isError]);\n\n return (\n \n \n \n );\n}\n","import React, { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport Form from '../../../../components/atomic/formik/Form';\nimport { setContributionsListNeedsRefresh, setLoading } from '../../../../store/action';\nimport { alertInfo, applyDateOffset, applyTimeZoneOnAndroid } from '../../../../services/utils';\nimport { t } from '../../../../services/translations';\nimport useLoggedUser from '../../../../hooks/useLoggedUser';\nimport BookingFormFields, { schema } from './BookingFormFields';\nimport { getBookingDetails, updateBooking } from '../../../../services/api/booking.contribution.api';\nimport { CreateContributionBooking } from '../../../../entities/CreateContributionBooking';\nimport { View } from 'react-native';\nimport { ScreenNames } from '../../../../ScreenNames';\n\nexport type UpdateBookingScreenProps = {\n route: {\n params: {\n id?: string;\n };\n };\n};\n\nexport default function UpdateBookingScreen({ route }: UpdateBookingScreenProps) {\n const user = useLoggedUser();\n const id = (route.params.id && parseInt(route.params.id, 10)) || null;\n const navigation = useNavigation>();\n const dispatch = useDispatch();\n\n const {\n data,\n isLoading: isLoadingQuery,\n isError: isErrorQuery,\n isFetched,\n } = useQuery(['bookingDetails', id], () => getBookingDetails(user, id || 0), { cacheTime: 0 });\n\n const {\n mutateAsync,\n isLoading: isLoadingMutation,\n isError: isErrorMutation,\n } = useMutation({\n mutationFn: async (values: CreateContributionBooking) => {\n await updateBooking(user, id || 0, {\n ...values,\n begin: new Date(applyDateOffset(values.begin)),\n end: new Date(applyDateOffset(values.end)),\n });\n },\n onSuccess: (_, values) => {\n dispatch(setContributionsListNeedsRefresh(true));\n navigation.reset({\n index: 0,\n routes: [{ name: ScreenNames.BookingMain, params: { resourceId: values.contributionBookingResourceId } }],\n });\n alertInfo(t('booking_updated'));\n },\n });\n\n const isLoading = isLoadingQuery || isLoadingMutation;\n const isError = isErrorQuery || isErrorMutation;\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n // Display error message if needed\n useEffect(() => {\n if (isError) {\n alertInfo(t('error_occurred'));\n }\n }, [isError]);\n\n return isFetched ? (\n \n \n \n ) : (\n \n );\n}\n","import React from 'react';\nimport { createStackNavigator } from '@react-navigation/stack';\nimport { ScreenNames } from '../ScreenNames';\nimport { t } from '../services/translations';\nimport BackIcon from '../components/atomic/BackIcon';\nimport ListBookingScreen from '../screens/loggedIn/contribution/booking/ListBookingScreen';\nimport CreateBookingScreen from '../screens/loggedIn/contribution/booking/CreateBookingScreen';\nimport UpdateBookingScreen from '../screens/loggedIn/contribution/booking/UpdateBookingScreen';\nimport { BACKGROUND_COLOR } from '../styles/appColor';\n\nconst Stack = createStackNavigator();\n\nexport function BookingRouter() {\n return (\n \n \n \n \n \n );\n}\n","import React, { useCallback, useEffect, useMemo } from 'react';\nimport { createDrawerNavigator, DrawerNavigationOptions } from '@react-navigation/drawer';\nimport MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';\nimport { CustomDrawerContent } from './CustomDrawerContent';\nimport { t } from '../services/translations';\nimport { ContributionRouter } from './ContributionRouter';\nimport { DirectoryList } from '../screens/loggedIn/DirectoryScreen';\nimport { ContributionType } from '../types';\nimport { ContributionItemDetailScreen } from '../screens/loggedIn/contribution/ContributionItemDetailScreen';\nimport { ContributionFormScreen } from '../screens/loggedIn/contribution/ContributionFormScreen';\nimport { drawerIcon, isMobile } from '../services/utils';\nimport { LoggedInHomeScreen } from '../screens/loggedIn/LoggedInHomeScreen';\nimport { ScreenNames } from '../ScreenNames';\nimport {\n hasLicenceActivity,\n hasLicenceCarPool,\n hasLicenceDocument,\n hasLicenceEvent,\n hasLicenceTraining,\n hasLicenceLostProperty,\n hasLicenceMutualAid,\n hasLicenceSell,\n hasLicenceOrganizationalChart,\n hasLicenceSuggestion,\n hasLicenceSurvey,\n hasLicenceEmergencySms,\n hasLicenceBooking,\n} from '../services/licences';\nimport { AdminRoute } from './AdminRoute';\nimport { BackButton } from '../components/atomic/BackButton';\nimport CreateNewsScreen from '../screens/loggedIn/contribution/news/CreateNewsScreen';\nimport NewsDetailScreen from '../screens/loggedIn/contribution/news/NewsDetailScreen';\nimport { HeaderButtons } from '../components/atomic/HeaderButtons';\nimport { MessagingRoute } from './MessagingRoute';\nimport OrganizationChartsScreen from '../screens/loggedIn/OrganizationChartsScreen';\nimport { DocumentsRouter } from './DocumentsRouter';\nimport { CustomModuleRouter } from './CustomModuleRouter';\nimport DetailsCustomModuleContributionScreen from '../screens/loggedIn/contribution/custom/DetailsCustomModuleContributionScreen';\nimport { getPictureURI } from '../services/api/helper.api';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\nimport { Image, View } from 'react-native';\nimport useLoggedUser from '../hooks/useLoggedUser';\nimport useReviewApp from '../hooks/useReviewApp';\nimport { useDeviceSize } from '../hooks/useDeviceSize';\nimport { EmergencySmsRouter } from './EmergencySmsRouter';\nimport DrawerToggleButton from '../components/atomic/DrawerToggleButton';\nimport { useDispatch } from 'react-redux';\nimport { fetchUserData } from '../services/storage';\nimport useCustomModules from '../hooks/useCustomModules';\nimport { ModuleEnum } from '../entities/ModuleSettings';\nimport { getModuleDefaultOrder } from '../services/module';\nimport { sortBy } from 'lodash';\nimport UpdateNewsScreen from '../screens/loggedIn/contribution/news/UpdateNewsScreen';\nimport DuplicateNewsScreen from '../screens/loggedIn/contribution/news/DuplicateNewsScreen';\nimport { BookingRouter } from './BookingRouter';\nimport { BACKGROUND_COLOR, WHITE } from '../styles/appColor';\n\nconst Drawer = createDrawerNavigator();\n\nexport default function LoggedInDrawerNavigation() {\n let loggedUser = useLoggedUser();\n const dispatch = useDispatch();\n\n const userEmail = loggedUser.aspNetUsers.email;\n const userEmailDomain = userEmail.split('@')[1];\n const entrepriseDomains = loggedUser.entreprise.entrepriseNomDomaine.map((e) => e.nomDomaine);\n const moduleSettings = loggedUser.entreprise.moduleSettings;\n const isUserInDomain = entrepriseDomains.includes(userEmailDomain);\n\n useReviewApp();\n const { isSmallDevice } = useDeviceSize();\n const { customModules } = useCustomModules();\n\n // Refetch user data every minute\n useEffect(() => {\n const interval = setInterval(() => {\n fetchUserData(loggedUser.token, dispatch);\n }, 1 * 60 * 1000);\n\n return () => clearInterval(interval);\n }, [loggedUser.token, dispatch]);\n\n const defaultScreenOptions: DrawerNavigationOptions = useMemo(\n () =>\n isMobile()\n ? {\n headerShown: true,\n headerTitleAlign: 'center',\n headerRight: HeaderButtons,\n }\n : {\n headerShown: true,\n headerTitleAlign: 'center',\n headerRight: HeaderButtons,\n },\n []\n );\n\n const getOrderByModule = useCallback(\n (module: ModuleEnum) => {\n return moduleSettings.find((x) => x.module === module)?.order ?? getModuleDefaultOrder(module);\n },\n [moduleSettings]\n );\n\n const drawerItems = useMemo(() => {\n let result: (\n | {\n order: number;\n element: React.JSX.Element;\n }\n | null\n | undefined\n )[] = [\n {\n order: getOrderByModule(ModuleEnum.News),\n element: (\n \n ),\n },\n loggedUser.lovIdType === 13 || (loggedUser.userSubAdmins?.length ?? 0) > 0\n ? {\n order: getOrderByModule(ModuleEnum.Admin),\n element: (\n \n ),\n }\n : null,\n hasLicenceSell(loggedUser)\n ? {\n order: getOrderByModule(ModuleEnum.ContributionVente),\n element: (\n \n ),\n }\n : null,\n hasLicenceActivity(loggedUser)\n ? {\n order: getOrderByModule(ModuleEnum.ContributionHobbie),\n element: (\n \n ),\n }\n : null,\n hasLicenceMutualAid(loggedUser)\n ? {\n order: getOrderByModule(ModuleEnum.ContributionService),\n element: (\n \n ),\n }\n : null,\n hasLicenceCarPool(loggedUser)\n ? {\n order: getOrderByModule(ModuleEnum.ContributionCovoiturage),\n element: (\n \n ),\n }\n : null,\n hasLicenceEvent(loggedUser)\n ? {\n order: getOrderByModule(ModuleEnum.ContributionEvenement),\n element: (\n \n ),\n }\n : null,\n hasLicenceTraining(loggedUser)\n ? {\n order: getOrderByModule(ModuleEnum.ContributionFormation),\n element: (\n \n ),\n }\n : null,\n hasLicenceBooking(loggedUser)\n ? {\n order: getOrderByModule(ModuleEnum.Booking),\n element: (\n (\n \n ),\n }}\n />\n ),\n }\n : null,\n hasLicenceOrganizationalChart(loggedUser)\n ? {\n order: getOrderByModule(ModuleEnum.ContributionOrganigrame),\n element: (\n \n ),\n }\n : null,\n hasLicenceLostProperty(loggedUser)\n ? {\n order: getOrderByModule(ModuleEnum.ContributionObjet),\n element: (\n \n ),\n }\n : null,\n hasLicenceSurvey(loggedUser)\n ? {\n order: getOrderByModule(ModuleEnum.ContributionSondage),\n element: (\n \n ),\n }\n : null,\n hasLicenceSuggestion(loggedUser)\n ? {\n order: getOrderByModule(ModuleEnum.ContributionBoiteIdee),\n element: (\n \n ),\n }\n : null,\n hasLicenceDocument(loggedUser)\n ? {\n order: getOrderByModule(ModuleEnum.ContributionKiosque),\n element: (\n \n ),\n }\n : null,\n {\n order: getOrderByModule(ModuleEnum.UserDirectory),\n element: (\n \n ),\n },\n hasLicenceEmergencySms(loggedUser) && isUserInDomain\n ? {\n order: getOrderByModule(ModuleEnum.EmergencySms),\n element: (\n (\n \n ),\n }}\n />\n ),\n }\n : null,\n ...(customModules\n ? customModules.map((customModule) => ({\n order: customModule.order,\n element: (\n \n customModule.iconId ? (\n \n \n \n ) : (\n \n ),\n }}\n />\n ),\n }))\n : []),\n ];\n\n return sortBy(\n result.filter((e) => !!e) as {\n order: number;\n element: React.JSX.Element;\n }[],\n 'order'\n ).map((e) => e.element);\n }, [loggedUser, customModules, defaultScreenOptions, isUserInDomain, getOrderByModule]);\n\n return (\n <>,\n drawerStyle: { backgroundColor: WHITE },\n headerStyle: { backgroundColor: BACKGROUND_COLOR },\n }}\n drawerContent={CustomDrawerContent}\n useLegacyImplementation={false}\n backBehavior=\"history\"\n >\n {drawerItems}\n {/* Hidden drawer screens */}\n null,\n headerShown: false,\n title: t('contribution'),\n }}\n />\n ,\n title: t('redact'),\n }}\n />\n ,\n title: t('redact'),\n }}\n />\n ,\n title: t('redact'),\n }}\n />\n ,\n title: t('redact'),\n }}\n />\n \n \n \n \n );\n}\n","import { match } from 'ts-pattern';\nimport { ModuleEnum } from '../entities/ModuleSettings';\n\nexport function getModuleDefaultOrder(module: ModuleEnum) {\n return match(module)\n .with(ModuleEnum.News, () => 0)\n .with(ModuleEnum.Admin, () => 1)\n .with(ModuleEnum.ContributionVente, () => 2)\n .with(ModuleEnum.ContributionHobbie, () => 3)\n .with(ModuleEnum.ContributionService, () => 4)\n .with(ModuleEnum.ContributionCovoiturage, () => 5)\n .with(ModuleEnum.ContributionEvenement, () => 6)\n .with(ModuleEnum.ContributionFormation, () => 7)\n .with(ModuleEnum.Booking, () => 8)\n .with(ModuleEnum.ContributionOrganigrame, () => 9)\n .with(ModuleEnum.ContributionObjet, () => 10)\n .with(ModuleEnum.ContributionSondage, () => 11)\n .with(ModuleEnum.ContributionBoiteIdee, () => 12)\n .with(ModuleEnum.ContributionKiosque, () => 13)\n .with(ModuleEnum.UserDirectory, () => 14)\n .with(ModuleEnum.EmergencySms, () => 15)\n .otherwise(() => 0);\n}\n","import React, { useEffect, useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useMutation, useQuery } from '@tanstack/react-query';\nimport { getUserProfile, updateUserProfile } from '../../services/api/user.api';\nimport { setLoading } from '../../store/action';\nimport { getPictureURI } from '../../services/api/helper.api';\nimport { alertInfo } from '../../services/utils';\nimport { t } from '../../services/translations';\nimport Form from '../atomic/formik/Form';\nimport UserFormFields, { UserFormFieldsProps, schema } from './UserFormFields';\nimport useLoggedUser from '../../hooks/useLoggedUser';\n\nexport type EditUserFormProps = {\n userId: number;\n onSubmitEnd?: (values: any) => Promise;\n} & UserFormFieldsProps;\n\nexport function EditUserForm({ userId, onSubmitEnd, ...rest }: EditUserFormProps) {\n const user = useLoggedUser();\n const token = user?.token;\n const dispatch = useDispatch();\n\n const {\n data,\n isLoading: isLoadingDetails,\n isFetched,\n isError: isErrorDetails,\n } = useQuery(['user', userId], () => getUserProfile(userId, token!), { cacheTime: 0 });\n\n const mutation = useMutation({\n mutationFn: async (values: any) => {\n try {\n await updateUserProfile(userId, token, values, values.photo);\n if (onSubmitEnd) {\n await onSubmitEnd(values);\n }\n } catch (err: any) {\n console.error(err, err?.response?.data);\n throw err;\n }\n },\n });\n\n const isLoading = isLoadingDetails || mutation.isLoading;\n const isError = isErrorDetails || mutation.isError;\n\n // Display big loading indicator if refreshing\n useEffect(() => {\n dispatch(setLoading(isLoading));\n }, [isLoading, dispatch]);\n\n const initialValues = useMemo(\n () => ({\n email: data?.aspNetUsers.email || '',\n firstName: data?.prenom || '',\n lastName: data?.nom || '',\n service: data?.entrepriseServiceId,\n geoSite: data?.entrepriseSiteGeoId,\n groups: data?.entrepriseGroups?.map((e) => e.entrepriseGroupId) || [],\n jobTitle: data?.fonction || '',\n landlineNumber: data?.telephone || '',\n mobileNumber: data?.portable || '',\n visibleZone: data?.visibleZone || false,\n languageCode: data?.languageCode || 'fr-FR',\n photo: data?.fichierIdProfil ? getPictureURI(data.fichierIdProfil) : null,\n hideEmail: data?.hideEmail,\n hidePhone: data?.hidePhone,\n birthDate: data?.birthDate ? new Date(data?.birthDate) : null,\n seniorityDate: data?.seniorityDate ? new Date(data?.seniorityDate) : null,\n }),\n [data]\n );\n\n // Display error message if needed\n useEffect(() => {\n if (isError) {\n alertInfo(t('profile_failed_to_update'));\n }\n }, [isError]);\n\n return isFetched ? (\n \n \n \n ) : null;\n}\n","import React, { useCallback } from 'react';\nimport { DrawerScreenProps } from '@react-navigation/drawer';\nimport { useDispatch } from 'react-redux';\nimport { AppScreen } from '../../../components/containers/AppScreen';\nimport { AppSafeAreaView } from '../../../components/containers/AppSafeAreaView';\nimport Form from '../../../components/atomic/formik/Form';\nimport { ScrollView } from 'react-native-gesture-handler';\nimport { BackButton } from '../../../components/atomic/BackButton';\nimport { EditUserForm } from '../../../components/molecules/EditUserForm';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport { t } from '../../../services/translations';\nimport { setDirectoryListNeedsRefresh } from '../../../store/action';\nimport { StyleSheet } from 'react-native';\n\nexport type EditUserScreenProps = DrawerScreenProps;\n\nexport default function EditUserScreen(props: EditUserScreenProps) {\n const userId = props.route.params?.id;\n const navigation = useNavigation>();\n const dispatch = useDispatch();\n\n const handleSubmitEnd = useCallback(async () => {\n navigation.goBack();\n dispatch(setDirectoryListNeedsRefresh(true));\n }, [dispatch, navigation]);\n\n return (\n \n \n
{}} initialValues={{}}>\n \n \n \n \n
\n
\n
\n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n});\n","import React, { useState } from 'react';\nimport { Platform, ScrollView, View } from 'react-native';\nimport { useDispatch } from 'react-redux';\nimport { urlBase } from '../../../configuration';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport { acceptCGU } from '../../services/api/user.api';\nimport { t } from '../../services/translations';\nimport { openURL } from '../../services/utils';\nimport { Space1, Space2 } from '../../styles/spaces';\nimport { FormButtons } from '../containers/FormButtons';\nimport { AppButton, Type } from './AppButton';\nimport { AppCheckbox } from './AppCheckbox';\nimport { AppModalOverlay } from './AppModalOverlay';\nimport { HypertextLink } from './HypertextLink';\nimport { setUser } from '../../store/user';\n\nexport default () => {\n const user = useLoggedUser();\n const dispatch = useDispatch();\n\n const [visible, setVisible] = useState(true);\n const [hasCGUBeenApproved, setCGUApproved] = useState(false);\n const [hasRGDPConsent, setRGPDConsent] = useState(false);\n\n const accept = () => {\n acceptCGU(user).then(() => {\n setVisible(false);\n user.hasAcceptedCGU = true;\n setUser(user, dispatch);\n });\n };\n\n return (\n \n \n \n \n {t('read_and_accept') + ' '}\n {\n openURL(`${urlBase}assets/documents/CGU-KonecTeam_2022.pdf`);\n }}\n text={t('cgu')}\n />\n \n }\n />\n \n \n {t('rgpd_text_1') + ' '}\n {\n openURL(`${urlBase}assets/documents/Politique-de-confidentialité-2022.pdf`);\n }}\n text={t('privacy')}\n />\n .\n \n }\n subtitle={t('rgpd_text_2')}\n />\n \n \n \n \n \n \n \n );\n};\n","import React, { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { _compressImage, alertInfo } from '../../services/utils';\nimport { saveLanguage } from '../../services/storage';\nimport { AppSafeAreaView } from '../../components/containers/AppSafeAreaView';\nimport { AppScreen } from '../../components/containers/AppScreen';\nimport { EditUserForm } from '../../components/molecules/EditUserForm';\nimport AcceptCGUModal from '../../components/atomic/AcceptCGUModal';\nimport { t } from '../../services/translations';\nimport { getUserProfile } from '../../services/api/user.api';\nimport { ScrollView } from 'react-native-gesture-handler';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport { setUser } from '../../store/user';\nimport { getSingleUserSubAdmins } from '../../services/api/usersubadmin';\n\nexport function LoginEditProfileScreen() {\n const user = useLoggedUser();\n const dispatch = useDispatch();\n\n const handleSubmitEnd = useCallback(\n async (values: any) => {\n saveLanguage(values.languageCode);\n\n // This trigger first login\n await getSingleUserSubAdmins(user.token);\n\n const updatedUser = await getUserProfile(user.id, user.token);\n await setUser({ ...user, ...updatedUser }, dispatch);\n alertInfo(t('profile_updated'));\n },\n [user, dispatch]\n );\n\n return (\n \n \n \n {!user.hasAcceptedCGU && }\n \n \n \n \n );\n}\n","import React, { useCallback } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { _compressImage, alertInfo } from '../../services/utils';\nimport { saveLanguage } from '../../services/storage';\nimport { AppSafeAreaView } from '../../components/containers/AppSafeAreaView';\nimport { AppScreen } from '../../components/containers/AppScreen';\nimport { EditUserForm } from '../../components/molecules/EditUserForm';\nimport { t } from '../../services/translations';\nimport { getUserProfile } from '../../services/api/user.api';\nimport { BackButton } from '../../components/atomic/BackButton';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport { ScrollView } from 'react-native-gesture-handler';\nimport { AppButton, Type } from '../../components/atomic/AppButton';\nimport { ScreenNames } from '../../ScreenNames';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport { setUser } from '../../store/user';\nimport { StyleSheet } from 'react-native';\n\nexport function EditMyProfileScreen() {\n const user = useLoggedUser();\n const navigation = useNavigation>();\n const dispatch = useDispatch();\n\n const goBack = () => {\n if (navigation.canGoBack()) {\n navigation.goBack();\n } else {\n navigation.reset({\n index: 0,\n routes: [{ name: ScreenNames.Profile }],\n });\n }\n };\n\n const handleSubmitEnd = useCallback(\n async (values: any) => {\n saveLanguage(values.languageCode);\n alertInfo(t('profile_updated'));\n\n const updatedUser = await getUserProfile(user.id, user.token);\n await setUser({ ...user, ...updatedUser }, dispatch);\n navigation.goBack();\n },\n [user, navigation, dispatch]\n );\n\n return (\n \n \n \n \n {\n navigation.navigate(ScreenNames.EditPasswordScreen);\n }}\n />\n \n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n changePasswordButton: {\n alignSelf: 'center',\n marginBottom: 20,\n },\n});\n","import React, { createContext, useCallback, useEffect, useState } from 'react';\nimport * as signalR from '@microsoft/signalr';\nimport { initializeApp } from 'firebase/app';\nimport { getMessaging, getToken } from 'firebase/messaging';\nimport { updateDeviceToken, deleteDeviceToken } from '../../services/api/notification.api';\nimport { urlBase, vapidKey } from '../../../configuration';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport { NotificationType } from '../../utils/Notification';\n\ndeclare global {\n const Notification:\n | {\n requestPermission: () => Promise;\n }\n | undefined;\n}\n\ninitializeApp({\n apiKey: 'AIzaSyBtoAc81s3IjnuGXcvqXLGV9Xrqn0UWbVM',\n authDomain: 'konecteam-notification.firebaseapp.com',\n projectId: 'konecteam-notification',\n storageBucket: 'konecteam-notification.appspot.com',\n messagingSenderId: '78519534298',\n appId: '1:78519534298:web:711b972ae71a347652dbe3',\n measurementId: 'G-T2JEXKPF12',\n});\n\nexport type PushNotificationContextType = {\n isNotificationAllowed: boolean;\n registerOnNotificationOpenedApp: (callback: (notification: NotificationType | undefined) => void) => () => void;\n registerOnMessage: (callback: (notification: NotificationType | undefined) => void) => () => void;\n};\n\nexport const PushNotificationContext = createContext(null);\n\nexport type PushNotificationProviderProps = {\n children: React.ReactNode;\n};\n\nexport default function PushNotificationProvider({ children }: PushNotificationProviderProps) {\n const loggedUser = useLoggedUser();\n const [isNotificationAllowed, setIsNotificationAllowed] = useState(false);\n const [onMessage, setOnMessage] = useState<(notification: NotificationType | undefined) => void>();\n const accessToken = loggedUser?.token;\n const [lastAccessToken, setLastAccessToken] = useState(null);\n\n useEffect(() => {\n requestPermission(() => setIsNotificationAllowed(true));\n }, []);\n\n const registerOnNotificationOpenedApp = useCallback(() => {\n return () => {};\n }, []);\n\n const registerOnMessage = useCallback((callback: (notification: NotificationType | undefined) => void) => {\n setOnMessage(() => callback);\n\n return () => {\n setOnMessage(undefined);\n };\n }, []);\n\n useEffect(() => {\n if (!isNotificationAllowed) {\n return;\n }\n\n if (!onMessage) {\n return;\n }\n\n // Listen to signalR\n const connection = new signalR.HubConnectionBuilder()\n .withUrl(`${urlBase}notification?access_token=${accessToken}`)\n .withAutomaticReconnect()\n .build();\n\n connection.on('message', (message) => {\n return onMessage(message as NotificationType | undefined);\n });\n\n connection.start().catch((err) => console.error(err));\n\n return () => {\n connection.stop();\n };\n }, [accessToken, isNotificationAllowed, onMessage]);\n\n useEffect(() => {\n if (!isNotificationAllowed) {\n return;\n }\n\n if (!loggedUser) {\n return;\n }\n\n const asyncEffect = async () => {\n const token = await getToken(getMessaging(), { vapidKey });\n await updateDeviceToken(loggedUser, token);\n setLastAccessToken(loggedUser.token);\n };\n\n asyncEffect();\n }, [loggedUser, isNotificationAllowed]);\n\n useEffect(() => {\n if (!isNotificationAllowed) {\n return;\n }\n\n if (loggedUser || !lastAccessToken) {\n return;\n }\n\n const asyncEffect = async () => {\n const token = await getToken(getMessaging(), { vapidKey });\n await deleteDeviceToken(lastAccessToken, token);\n };\n\n asyncEffect();\n }, [loggedUser, lastAccessToken, isNotificationAllowed]);\n\n return (\n \n {children}\n \n );\n}\n\nfunction requestPermission(callback: () => void): void {\n if (typeof Notification === 'undefined') {\n return;\n }\n\n Notification.requestPermission().then(() => callback());\n}\n","import React, { useEffect } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { NavigationProp, useNavigation } from '@react-navigation/native';\nimport { t } from '../services/translations';\nimport { ProfileScreen } from '../screens/loggedIn/ProfileScreen';\nimport { DirectoryList } from '../screens/loggedIn/DirectoryScreen';\nimport { ContributionType } from '../types';\nimport { createStackNavigator } from '@react-navigation/stack';\nimport { SuggestionsAdministrationRoute } from './SuggestionsAdministrationRoute';\nimport { CompanyNewsAdministrationRoute } from './CompanyNewsAdministrationRoute';\nimport { SurveyAdministrationRoute } from './SurveyAdministrationRoute';\nimport { ContributionListScreen } from '../screens/loggedIn/contribution/ContributionListScreen';\nimport { StyleSheet, View } from 'react-native';\nimport { EditPasswordScreen } from '../screens/loggedIn/EditPasswordScreen';\nimport { GetContributionsMode } from '../services/api/getContributionsMode';\nimport { ScreenNames } from '../ScreenNames';\nimport { CategoriesAdministrationRoute } from './CategoriesAdministrationRoute';\nimport LoggedInDrawerNavigation from './LoggedInDrawerNavigation';\nimport useLoggedUser from '../hooks/useLoggedUser';\nimport EditUserScreen from '../screens/loggedIn/admin/EditUserScreen';\nimport { LoginEditProfileScreen } from '../screens/loggedIn/LoginEditProfileScreen';\nimport { EditMyProfileScreen } from '../screens/loggedIn/EditMyProfileScreen';\nimport BackIcon from '../components/atomic/BackIcon';\nimport useCustomModules from '../hooks/useCustomModules';\nimport { usePushNotifications } from '../hooks/usePushNotifications';\nimport { onMessageHandler, onNotificationOpenedAppHandler } from '../utils/Notification';\nimport { BACKGROUND_COLOR } from '../styles/appColor';\n\nconst Stack = createStackNavigator();\n\nexport function LoggedInRoute() {\n let user = useLoggedUser();\n const dispatch = useDispatch();\n const navigation = useNavigation>();\n const { isCustomModulesFetched, isCustomModulesError } = useCustomModules();\n\n const isPushNotificationsActivated = isCustomModulesFetched || isCustomModulesError;\n const { registerOnNotificationOpenedApp, registerOnMessage } = usePushNotifications();\n\n useEffect(() => {\n if (isPushNotificationsActivated) {\n const unsubscribe1 = registerOnNotificationOpenedApp((notification) => {\n onNotificationOpenedAppHandler(notification, user, dispatch, navigation);\n });\n\n const unsubscribe2 = registerOnMessage((notification) => {\n onMessageHandler(notification, dispatch);\n });\n\n return () => {\n unsubscribe1();\n unsubscribe2();\n };\n }\n }, [isPushNotificationsActivated, user, dispatch, navigation, registerOnNotificationOpenedApp, registerOnMessage]);\n\n if (user.loginCount === 0) {\n return ;\n }\n\n return (\n \n \n \n\n \n\n \n \n \n\n \n \n \n \n \n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n});\n","import { useContext } from 'react';\nimport { PushNotificationContext, PushNotificationContextType } from '../components/atomic/PushNotificationProvider';\n\nexport function usePushNotifications() {\n return useContext(PushNotificationContext) as PushNotificationContextType;\n}\n","import React from 'react';\nimport { View } from 'react-native';\nimport useLoggedUser from '../hooks/useLoggedUser';\nimport GuestRoute from './GuestRoute';\nimport { LoggedInRoute } from './LoggedInRoute';\n\nexport default function UserStatusRoute() {\n let user = useLoggedUser();\n\n if (user) {\n return (\n \n \n \n );\n } else {\n return ;\n }\n}\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { Image, StyleSheet, TouchableOpacity, View } from 'react-native';\nimport AsyncStorage from '@react-native-async-storage/async-storage';\nimport AppText from './components/atomic/AppText';\nimport { DARK_GRAY, PRIMARY_COLOR_LIGHT } from './styles/appColor';\nimport { t } from './services/translations';\nimport { AppModalOverlay } from './components/atomic/AppModalOverlay';\nimport { qrcodeStoreImage } from './services/assets';\nimport { AppTextInput } from './components/atomic/AppTextInput';\nimport { AppButton } from './components/atomic/AppButton';\nimport { Icon } from '@rneui/base';\nimport { isMobile } from './services/utils';\n\nexport function OfferAppDownloadBanner() {\n const [showPopup, setShowPopup] = useState(false);\n const [showBanner, setShowBanner] = useState(false);\n\n useEffect(() => {\n (async () => {\n const showBanner = await AsyncStorage.getItem('offerAppDownloadBanner');\n if (showBanner === 'false') {\n setShowBanner(false);\n } else {\n setShowBanner(true);\n }\n })();\n }, []);\n\n const closeBanner = useCallback(() => {\n AsyncStorage.setItem('offerAppDownloadBanner', 'false');\n setShowBanner(false);\n }, []);\n\n if (!showBanner || isMobile()) {\n return null;\n }\n\n return (\n \n \n \n \n {t('download_our_application')}\n setShowPopup(true)}\n />\n setShowPopup(false)}>\n \n {}} />\n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flexDirection: 'row',\n height: 50,\n backgroundColor: PRIMARY_COLOR_LIGHT,\n alignItems: 'center',\n justifyContent: 'center',\n },\n closeButton: {\n marginRight: 10,\n },\n linkButton: {\n marginLeft: 10,\n width: 200,\n },\n linkButtonText: {\n fontSize: 12,\n },\n qrcode: {\n width: 200,\n height: 200,\n },\n});\n","import React from 'react';\nimport { ImageBackground, Platform, SafeAreaView, StyleSheet, View } from 'react-native';\nimport { appleStoreUrl, googlePlayUrl } from '../../configuration';\nimport { AppButton, Type } from '../components/atomic/AppButton';\nimport AppText, { Mode } from '../components/atomic/AppText';\nimport Logo from '../components/atomic/Logo';\nimport { t } from '../services/translations';\nimport { openURL } from '../services/utils';\nimport { PRIMARY_COLOR } from '../styles/appColor';\n\nconst registrationBackground = require('../../assets/background-white-shapes.png');\n\nexport function UnsupportedVersionScreen() {\n const navigateToUpdatePage = () => {\n if (Platform.OS === 'android') {\n openURL(googlePlayUrl);\n } else if (Platform.OS === 'ios') {\n openURL(appleStoreUrl);\n } else {\n openURL(googlePlayUrl);\n }\n };\n\n return (\n \n \n \n \n \n \n \n {t('unsupported_version_header')}\n \n \n {t('unsupported_version_text')}\n \n \n \n \n \n );\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'center',\n height: '100%',\n margin: 20,\n },\n logoContainer: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'flex-end',\n width: '100%',\n marginBottom: 40,\n },\n textContainer: {\n flex: 1,\n alignItems: 'center',\n justifyContent: 'flex-start',\n },\n header: {\n color: PRIMARY_COLOR,\n },\n text: {\n maxWidth: 330,\n marginBottom: 40,\n flex: 1,\n },\n});\n","import React, { useEffect, useState } from 'react';\nimport { Dimensions, Platform, ScaledSize, View } from 'react-native';\nimport { globalStyle } from './styles/globalStyle';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { setLoading, setPhoneMode } from './store/action';\nimport { loadAppState, RootState, saveToken } from './services/storage';\nimport UserStatusRoute from './routes/UserStatusRoute';\nimport { AppLoader } from './components/atomic/AppLoader';\nimport { OfferAppDownloadBanner } from './OfferAppDownloadBanner';\nimport { apiVersion } from '../configuration';\nimport { compareVersionStrings } from './utils/Utils';\nimport { UnsupportedVersionScreen } from './screens/UnsupportedVersionScreen';\n\nconst window = Dimensions.get('window');\n\nexport type MainProps = {\n route: {\n params: {\n accessToken?: string | null;\n };\n };\n};\n\nexport default function Main({ route: { params } }: MainProps) {\n const [dataLoaded, setDataLoaded] = useState(false);\n\n const dispatch = useDispatch();\n\n const onChange = ({ window }: { window: ScaledSize }) => {\n dispatch(setPhoneMode(window.width < 640));\n };\n\n useEffect(() => {\n async function runAsync() {\n dispatch(setLoading(true));\n try {\n if (Platform.OS !== 'android' && params?.accessToken) {\n await saveToken(params.accessToken);\n }\n\n await loadAppState(dispatch);\n } catch (e) {\n console.error(e);\n } finally {\n dispatch(setLoading(false));\n setDataLoaded(true);\n }\n }\n\n runAsync();\n }, [dispatch, params?.accessToken]);\n\n useEffect(() => {\n dispatch(setPhoneMode(window.width < 640));\n }, [dispatch]);\n\n useEffect(() => {\n const handler = Dimensions.addEventListener('change', onChange);\n return () => {\n handler.remove();\n };\n });\n\n const isLoading = useSelector((state) => state.isLoading || false);\n const minimumVersion = useSelector((state) => state.version.minimumVersion);\n\n if (!dataLoaded) {\n return null;\n }\n\n const shouldBeUpdated = compareVersionStrings(minimumVersion, apiVersion) > 0;\n\n return (\n \n \n {shouldBeUpdated ? : }\n {isLoading && }\n \n );\n}\n","import React from 'react';\nimport { View } from 'react-native';\nimport AppText from './components/atomic/AppText';\nimport { globalStyle } from './styles/globalStyle';\nimport { AppProviders } from '../App';\n\nexport default function Main() {\n const searchParams = new URLSearchParams(document.location.search);\n\n return (\n \n \n Email= {searchParams.get('email')}\n Id= {searchParams.get('id')}\n \n \n );\n}\n","let installed = false;\n\nconst toIgnore = 'Warning: `flexWrap: `wrap`` is not supported';\n\nconst Ignore = () => {\n if (installed) return;\n installed = true;\n const originalWarn = console.warn.bind(console);\n const originalErr = console.error.bind(console);\n console.warn = (...args: Parameters) => {\n if (args.length > 0 && typeof args[0] === 'string' && args[0].startsWith(toIgnore)) {\n return;\n }\n originalWarn(...args);\n };\n console.error = (...args: Parameters) => {\n if (args.length > 0 && typeof args[0] === 'string' && args[0].startsWith(toIgnore)) {\n return;\n }\n originalErr(...args);\n };\n};\n\nexport default Ignore;\n","import { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport store from './src/store/store';\nimport { Provider } from 'react-redux';\nimport Main from './src/Main';\nimport LoginAs from './src/LoginAs';\nimport 'expo-splash-screen';\nimport * as NavigationBar from 'expo-navigation-bar';\nimport { EventProvider } from 'react-native-outside-press';\nimport 'intl-pluralrules';\nimport { retrievedSavedLanguage } from './src/services/storage';\nimport { changeLanguage } from './src/services/translations';\nimport { NavigationContainer } from '@react-navigation/native';\nimport { isMobile, navigationRef } from './src/services/utils';\nimport { createStackNavigator } from '@react-navigation/stack';\nimport { fetchFonts } from './FetchFonts';\nimport { ScreenNames } from './src/ScreenNames';\nimport Constants from 'expo-constants';\nimport * as Notifications from 'expo-notifications';\nimport Ignore from './src/utils/Ignore';\nimport { StatusBar } from 'react-native';\nimport { PdfProvider } from './src/components/atomic/Pdf';\nimport BackIcon from './src/components/atomic/BackIcon';\nimport { linkingPrefixes } from './configuration';\nimport PushNotificationProvider from './src/components/atomic/PushNotificationProvider';\nimport { BACKGROUND_COLOR } from './src/styles/appColor';\n\nconst queryClient = new QueryClient();\nconst Stack = createStackNavigator();\n\nNotifications.setNotificationHandler({\n handleNotification: async () => ({\n shouldShowAlert: true,\n shouldPlaySound: false,\n shouldSetBadge: true,\n }),\n});\n\nIgnore();\n\nif (isMobile() && Constants.appOwnership !== 'expo') {\n const ScreenOrientation = require('expo-screen-orientation');\n const { OrientationLock } = ScreenOrientation;\n const { isTablet } = require('react-native-device-info');\n\n if (!isTablet()) {\n ScreenOrientation.lockAsync(OrientationLock.PORTRAIT_UP);\n } else {\n ScreenOrientation.unlockAsync();\n }\n}\n\nexport function AppProviders({ children }: { children: React.ReactNode }) {\n useMemo(() => {\n retrievedSavedLanguage().then(changeLanguage);\n }, []);\n\n return (\n \n \n \n \n {children}\n \n \n \n );\n}\n\nexport default function App() {\n const [dataLoaded, setDataLoaded] = useState(true);\n\n useEffect(() => {\n Promise.all([fetchFonts()]).then(() => {\n setDataLoaded(true);\n });\n\n NavigationBar.setBackgroundColorAsync('white');\n NavigationBar.setButtonStyleAsync('light');\n }, []);\n\n if (!dataLoaded) {\n return null;\n }\n\n const linking = {\n prefixes: linkingPrefixes,\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n","import 'react-native-gesture-handler';\nimport { 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 Expo Go or in a native build,\n// the environment is set up appropriately\nregisterRootComponent(App);\n","// Load fonts\nimport * as Font from 'expo-font';\n\nexport function fetchFonts() {\n return Font.loadAsync({\n 'Montserrat-SemiBold': require('./assets/fonts/Montserrat/Montserrat-SemiBold.ttf'),\n 'Montserrat-Light': require('./assets/fonts/Montserrat/Montserrat-Light.ttf'),\n 'Montserrat-Regular': require('./assets/fonts/Montserrat/Montserrat-Regular.ttf'),\n });\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkweb\"] = self[\"webpackChunkweb\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [137], () => (__webpack_require__(95930)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["apiUrlBase","urlBase","googlePlayUrl","apiTimeZone","unsplashAccessKey","giphyAccessKey","match","with","otherwise","apiVersion","vapidKey","linkingPrefixes","resources","en","translation","require","fr","de","es","it","i18n","initReactI18next","init","lng","fallbackLng","interpolation","escapeValue","t","key","params","changeLanguage","language","availableLanguages","filter","v","i","code","length","dateLocale","dateFns","text","uk","language_mapping","id","libelle","getIdFromCode","startsWith","getLibelleFromCode","NEWS_TRANSLATION_ENABLED","NEWS_PUBLICATION_MODE_ENABLED","NEWS_INTERESTS_ENABLED","ALL_CONTRIBUTIONS_BROADCAST_ENABLED","objectToFormData","data","formData","FormData","hasOwnProperty","appendFormData","root","Blob","append","Date","toISOString","Set","arrayData","Array","from","isArray","Object","uri","type","name","emailRegex","addPhotoToFormData","photo","_getMe","_asyncToGenerator","token","axios","get","headers","then","response","status","apply","arguments","_searchUsers","user","query","Promise","resolve","encodeURIComponent","_getCompanyUsers","_user$entreprise","getCompanyUsersFromCompanyId","entreprise","_x5","_x6","_getCompanyUsersFromCompanyId","companyId","_getUsersByIds","ids","join","_removeUser","aspNetUsers","delete","userName","email","getUserProfile","_x11","_x12","_getUserProfile","userId","r","_createUserProfile","userData","_userData$birthDate","_userData$seniorityDa","prenom","firstName","nom","lastName","serviceid","service","sitegeoid","geoSite","groups","fonction","jobTitle","JSON","stringify","telephone","landlineNumber","portable","mobileNumber","birthDate","seniorityDate","visibleZone","langueId","dateSend","languageCode","fileName","put","json","catch","error","Error","ErrorReason","EMAIL_ALREADY_REGISTERED","_updateUserProfile","newUserData","Number","hideEmail","hidePhone","hasAcceptedCGU","_putNewPassword","previousPassword","password","post","currentPassword","newPassword","_acceptCGU","removeAccount","setUser","dispatch","payload","getSingleUserSubAdmins","_x","_getSingleUserSubAdmins","_getUserSubAdmins","_getUsersByUserSubAdmin","_updateValidationMap","userIds","ScreenNames","CompanyNewsScreen","ContributionsAllScreen","Login","LoginAs","Main","Logout","Registration","ValidationCode","AdminRoute","ResetPasswordSendCode","ResetPasswordSendCodeSuccess","ResetPassword","NoProfessionalAddress","ContributionListScreenOffers","ContributionListScreenRequests","ContributionFormScreen","ContributionListScreenMine","ContributionListScreen","ContributionListScreenParticipation","SuggestionBoxScreen","ContributionTabs","ContributionEditFormScreen","SuggestionsToApproveList","ReviewedSuggestionsList","CompanyNewsToApproveList","ReviewedCompanyNewsList","SurveysToApproveList","ApprovedSurveysList","LoggedInHome","CompanyAdminMain","SellMainRouter","ActivityMainRouter","MutualAidMainRouter","CarPoolMainRouter","EventMainRouter","TrainingMainRouter","BookingRouter","OrganizationCharts","LostPropertyMainRouter","SurveyMainRouter","SuggestionMainRouter","DocumentMainRouter","EmergencySmsRouter","Directory","LoggedInDrawerNavigation","Profile","EditMyProfile","EditUser","EditPasswordScreen","ContributionItemDetailScreen","StatisticsAdministration","SuggestionsAdministration","DirectoryAdministration","UserBirthDays","ContributionsAdministration","CompanyNewsAdministration","SurveyAdministration","Messaging","MessagingMain","MessagingThread","MessagingCreateThread","OrganizationalChartAdmin","OrganizationalChartAdminMain","OrganizationalChartAdminCreate","OrganizationalChartAdminUpdate","BookingAdmin","BookingAdminMain","BookingAdminCreate","BookingAdminUpdate","BookingMain","BookingCreate","BookingUpdate","CompanyGroupAdmin","CompanyGroupAdminMain","CompanyGroupAdminCreate","CompanyGroupAdminUpdate","CategoriesAdministration","CreateCategory","ManageCategories","ValidationMap","ValidationMapUpdate","InternScreenAdmin","ScreenAdmin","ScreenSettingsList","ScreenSettingsCreate","ScreenSettingsUpdate","ScreenPlaylistList","ScreenPlaylistCreate","ScreenPlaylistUpdate","ScreenMediasList","ContributeurList","ContributeurCreate","KiosqueFolder","KiosqueCreateDocument","KiosqueCreateFolder","KiosqueUpdateDocument","KiosqueUpdateFolder","CreateCompanyNews","EditCompanyNews","DuplicateCompanyNews","DetailCompanyNews","SurveyList","SurveyDetails","SurveyAdminList","SurveyCreate","SurveyUpdate","CustomModuleTabs","CustomModuleList","CustomModuleDetails","CustomModuleAdminList","CustomModuleCreate","CustomModuleUpdate","EmergencySmsTabs","EmergencySmsListTemplates","EmergencySmsListMyTemplates","EmergencySmsCreateTemplate","EmergencySmsUpdateTemplate","EmergencySmsSend","EmergencySmsSendTemplate","SelectMode","SpreadingType","SelectModeToSpreadingType","selectMode","EVERYONE","ENTREPRISE","MANUAL","USERS","BY_SERVICE","SERVICES","BY_GEOSITE","SITES","BY_GEOSITE_AND_SERVICE","SITES_AND_SERVICES","BY_GROUP","GROUPS","spreadingTypeToSelectMode","ContributionType","ContributionTypesInfos","_ContributionTypesInf4","_defineProperty","ALL","screenName","CARPOOL","titleSelector","item","description","COMPANY_NEWS","contributionIdSelector","mActuId","categoryIdSelector","_item$mActu","mActu","categoryId","categorySelector","_item$mActu2","category","titre","formScreen","detailScreen","DOCUMENT","title","SELL","_item$contribution","contribution","_item$contribution2","EVENT","_item$contribution3","_item$contribution4","FORMATION","_item$contribution5","_item$contribution6","ACTIVITY","_item$contribution7","_item$contribution8","activite","MUTUAL_AID","_item$contribution9","_item$contribution10","theme","SUGGESTION","SURVEY","LOST_PROPERTY","lieu","IntToContributionType","value","ct","UNKNOWN","setDetailContributionType","contributionType","setIsNotif","notif","setForceBack","forceBack","setCurrentContribution","setPhoneMode","isPhoneMode","setLoading","isLoading","setContributionsListNeedsRefresh","setValidationMapListNeedsRefresh","setContributeurListNeedsRefresh","setDirectoryListNeedsRefresh","PRIMARY_COLOR","PRIMARY_COLOR_LIGHT","PRIMARY_COLOR_DARKEN","SECONDARY_COLOR","LIGHT_GRAY","GRAY","SMOKE_WHITE","WHITE","DARK_GRAY","FORM_LIGHT_GRAY","ALERT_COLOR","BACKGROUND_COLOR","FONT_FAMILY_DEFAULT","regular","bold","light","globalStyle","StyleSheet","create","container","flex","fontFamily","safeArea","screen","logo","width","height","formItemTitle","marginTop","formHorizontalSpaced","forgottenPassword","two_columns_layout","flexDirection","column","backgroundColor","checkboxContainer","checkbox","alignSelf","appText","fontSize","textAlignVertical","color","textInput","borderTopWidth","borderRightWidth","borderLeftWidth","borderBottomColor","borderBottomWidth","paddingLeft","paddingTop","paddingBottom","textInputContained","borderColor","borderWidth","padding","borderRadius","pickerTextInput","pickerTextInputWeb","maxWidth","listRow","hypertextLink","textDecorationLine","buttonDisabled","button","button_content","minHeight","justifyContent","alignItems","button_primary","shadowColor","shadowOffset","shadowOpacity","shadowRadius","elevation","button_light","button_ultra_light","guest_form_pc","guest_form_mobile","main_column","guest_form","overlay","position","top","left","bottom","right","overlayBackground","avatarPicker","flexWrap","textInputMultiline","detailRow","Mode","AppText","props","style","mode","ERROR","BOLD","fontWeight","HEADER1","marginBottom","HEADER2","SMALL","_jsx","Text","numberOfLines","onPress","children","Type","AppButton","_props$fontSize","isEnabled","enabled","typeStyle","colors","textColor","iconColor","PRIMARY","ULTRA_LIGHT","LIGHT","TouchableOpacity","testID","undefined","disabled","_jsxs","LinearGradient","start","x","y","end","icon","View","iconOnTopEdge","FontAwesome6","size","marginLeft","marginRight","_objectSpread","textAlign","textTransform","textStyle","megabyte","FilePicker","_props$allowedExtensi2","_props$allowedExtensi3","_useState","useState","_useState2","_slicedToArray","setError","_pickFile2","DocumentPicker","result","canceled","fileResult","assets","maxSizeMB","nameParts","split","fileType","allowedExtensions","find","e","toLowerCase","file","setFile","fileToUpload","defaultFilename","_Fragment","_props$allowedExtensi","types","exhaustive","isMailValid","test","toString","openURL","url","window","open","forceURLPrefix","PROTOCOL_WHITELIST","isMobile","isAdmin","lovIdType","hasSubAdminRight","services","sitegeo","_user$userSubAdmins","_user$userSubAdmins2","_user$userSubAdmins3","_user$userSubAdmins4","userSubAdmins","entrepriseGroupId","entrepriseServiceId","entrepriseSiteGeoId","subAdminGroupIds","a","map","subAdminServiceIds","subAdminSiteGeoIds","subAdminGroupIdsInUserRight","intersection","subAdminServiceIdsInUserRight","subAdminSiteGeoIdsInUserRight","isSubAdmin","combineNames","userProfileData","drawerIcon","iconName","overflow","_compressImage","_compressImage2","ImageManipulator","manipulateAsync","resize","format","PNG","getFileInfo","_ref","fileURI","base64str","atob","console","_x2","isLessThanTheMB","fileSize","smallerThanSizeMB","processPhoto","_x3","_x4","_processPhoto","asset","sizeLimit","fileInfo","compressedResult","blob","fetch","metadata","lastModified","now","File","pickPhoto","_pickPhoto","ImagePicker","launchImageLibraryAsync","mediaTypes","Images","allowsEditing","aspect","quality","base64","_pickManyPhotos","allowsMultipleSelection","resultPromises","all","pickDocument","_x7","_x8","_pickDocument","sizeLimitMB","mimeType","takePhoto","_takePhoto","launchCameraAsync","newPhoto","applyDateOffset","date","newDate","offset","getTimezoneOffset","getTime","forceUTCToLocal","DateTime","fromISO","substring","zone","toLocal","toISO","getReadableDate","dateText","withTime","forceUtc","recentFormat","toJSDate","today","difference","seconds","Math","floor","minutes","hours","days","weeks","months","years","formatDateToTimeAgo","fromJSDate","toFormat","applyTimeZoneOnAndroid","dateOrText","getReadableHour","getReadableTime","sendSuccessText","hasRights","_user$aspNetUsers","_user$portable","_user$telephone","hasEmail","hasPortable","hasPhone","includes","navigationRef","React","isDateValid","iso","alertInfo","Alert","alert","latitude","coordinates","longitude","_getMinimumVersion","_fetchMinimumApiVersion","getMinimumVersion","loadAppState","_JSON$parse","Storage","fetchMinimumApiVersion","storedUser","AsyncStorage","getItem","parse","fetchUserData","_fetchUserData","getMe","err","message","saveToken","setItem","saveLanguage","retrievedSavedLanguage","authUrl","logout","removeItem","_getAuthenticationMode","login","_login","username","MAIL_NOT_VALIDATED","_err$response","INVALID_CREDENTIALS","UNKNOWN_ERROR","register","_register","emailAddress","hasCGUBeenApproved","hasRGDPConsent","Email","MotDePasse","CGU","RGPD","ACCOUNT_ALREADY_EXISTS","_registerWithCompanyCode","Code","_generateValidationCode","mail","validate","_x15","_x16","_validate","validationCode","_checkCompanyCode","INVALID_COMPANY_CODE","resetPasswordSendCode","_x19","_resetPasswordSendCode","_resetPassword","api","interceptors","use","_error$response","store","reject","contentType","Accept","Authorization","getMessagingThreads","_getMessagingThreads","cursor","search","getMessagingThreadMessages","_getMessagingThreadMessages","threadId","_getThreadIdByContactId","contactId","_getThreadMembers","_getUnseenMessageCount","_postNewThread","body","_postThreadMessage","_markThreadAsSeen","_deleteMessagingThread","defaultThreadMessageState","messages","nextCursor","members","_messagingMessageReceived","_messagingThreadSeenReceived","_fetchUnseenMessagingMessageCount","getUnseenMessageCount","_markMessagingThreadAsSeen","unseenMessageCount","_x18","markThreadAsSeen","_fetchNextMessagingThreads","searchFilter","threads","_resetMessagingThreads","_fetchNextMessagingThreadMessages","_resetMessagingThreadMessages","_sendNewMessagingMessage","identifier","_x17","postThreadMessage","fetchMessagingThreadMembers","_x31","_x32","_x33","_fetchMessagingThreadMembers","_x9","_x10","getThreadMembers","_x20","_x21","apiDeleteMessagingThread","initialState","contributions","messaging","threadMessages","version","minimumVersion","createStore","state","action","detailContributionType","isNotif","currentContribution","contributionsListNeedsRefresh","validationMapListNeedsRefresh","contributeursListNeedsRefresh","directoryListNeedsRefresh","userReducer","_state$messaging$thre","_state$messaging$thre2","_state$messaging$thre3","lastMessage","content","seen","unseenCount","profileFileId","fileId","dateCreated","concat","_toConsumableArray","_state$messaging$thre4","_state$messaging$thre5","lastSeen","thread","other","_state$messaging$thre6","_objectSpread7","_action$messages$","_state$messaging$thre7","fichierIdProfil","isNaN","utcToZonedTime","zonedTimeToUtc","Localization","timezone","messagingReducer","versionReducer","useLoggedUser","useSelector","HypertextLink","_objectWithoutProperties","_excluded","Space","Space1","Space2","Space3","AppTextInput","textLength","filledField","setFilledField","localInputRef","useRef","useEffect","autoFocus","current","focus","variant","TextInput","ref","autoCapitalize","keyboardType","placeholder","multiline","onFocus","editable","displayOnly","secureTextEntry","defaultValue","onChangeText","maxLength","onSubmitEditing","onSelectionChange","selection","selectionPosition","onBlur","placeholderTextColor","mandatory","styles","errorMessage","lengthText","generateLLM","_generateLLM","request","Yup","prompt","min","required","AIModal","isVisible","onGenerated","onClose","loggedUser","setPrompt","_useMutation","useMutation","mutationFn","values","role","onSuccess","mutate","Modal","visible","onDismiss","transparent","background","Pressable","closeBackground","closeContainer","Icon","FormField","opacityHalf","paddingVertical","opacity","Chip","subtext","disable","selected","small","inverted","minWidth","display","Link","Quill","import","builtInFunc","sanitize","linkValueInput","call","this","getId","AppRTEEditor","_props$defaultValue","reactQuill","createRef","containerRef","useDispatch","openEmoji","setOpenEmoji","_useState3","_useState4","displayAIModal","setDisplayAIModal","_useState5","_useState6","hasUsedAi","setHasUsedAi","_useState7","_useState9","setRefresh","interval","setInterval","clearInterval","onEmojiClick","useCallback","_quill$getSelection$i","_quill$getSelection","quill","getEditor","getSelection","index","getLength","insertText","emoji","Toolbar","className","onClick","prev","aiButton","aiButtonView","aiButtonLabel","autocompleteWithAi","isLoadingAi","Picker","ReactQuill","formats","bounds","modules","toolbar","onChange","suggestionsContainer","gap","digits2","digit","AppDateTimePicker","day","formattedDate","getDate","month","getMonth","year","getFullYear","dateValue","timeValue","getHours","getMinutes","dateInput","createElement","syntheticEvent","target","setDate","setMonth","setFullYear","timeInput","timeText","setHours","TextFormField","NumberFormField","_ref2","rest","_excluded2","setText","invalid","setInvalid","handleBlur","parsed","parseInt","errorLabel","RTEFormField","DateField","setTimeout","AppPickerSelect","SelectDropdown","defaultChoiceOnMobile","label","defaultButtonText","buttonTextAfterSelection","rowTextForSelection","k","onSelect","buttonStyle","assign","pickerStyle","buttonTextStyle","rowTextStyle","renderDropdownIcon","Chevron","dataContainsDefaultValue","onValueChange","_","itemIndex","hideDefaultButton","selectedValue","Item","FormFieldPicker","inputStyle","AppLanguagePicker","containerStyle","itemValue","onLanguageChanged","_worklet_9890167963351_init_data","LoginField","emailName","passwordName","passwordVisible","onNext","onEmailChange","_useField","useField","_useField2","emailField","emailState","emailHelper","_useField3","_useField4","passwordField","passwordState","passwordHelper","submitForm","useFormikContext","passwordViewOpacity","useSharedValue","animatedStyles","useAnimatedStyle","anonymous","interpolate","__closure","__workletHash","__initData","handleSubmit","isEmailValid","withTiming","duration","doubleInput","Field","setValue","setTouched","as","input","inputTop","inputSingle","touched","inputError","Animated","inputBottom","nextButton","ActivityIndicator","borderTopLeftRadius","borderTopRightRadius","inputDisabled","borderTopColor","borderBottomLeftRadius","borderBottomRightRadius","MaxWidthScreen","SafeAreaView","Logo","Image","resizeMode","resizeMethod","source","AuthenticationMode","schema","forceRefresh","authenticationMode","setAuthenticationMode","setIsLoading","_useState8","webViewUrl","setWebViewUrl","formikHelpers","setFieldError","formik","useFormik","initialValues","onSubmit","validationSchema","validateOnMount","fetchAuthenticationMode","getAuthenticationMode","EmailAndPassword","Sso","redirectToAuthenticateWithSso","FormikContext","Provider","setFieldValue","languagePicker","navigation","navigate","Header","leftComponent","leftContainerStyle","headingLeftContainer","WebView","onNavigationStateChange","asyncFunction","_ref3","useDeviceSize","screenWidth","useWindowDimensions","deviceSize","useMemo","isSmallDevice","isMediumDevice","isLargeDevice","isSmallMediumDevice","mobileBackground","TwoColumnsLayout","isInCompactMode","column1","column2","ImageBackground","alignContent","contentOnRight","KeyboardAwareScrollView","bounces","contentContainerStyle","ValidationCodeField","onCodeEntered","FormButtons","FormBody","registrationBackground","_route$params","route","finally","goBack","AppCheckbox","TickableBox","subtitle","margin","useNavigation","setEmailAddress","setPassword","passwordConfirmation","setPasswordConfirmation","setCGUApproved","_useState10","setRGPDConsent","_useState11","_useState12","codeShown","setCodeShown","_useState13","_useState14","companyCode","setCompanyCode","_useState15","_useState16","companyCodeCorresponding","setCompanyCodeCorresponding","_useState17","_useState18","companyCodeConfirmation","setCompanyCodeConfirmation","_useState19","_useState20","companyCodeLoading","setCompanyCodeLoading","validateCompanyCode","checkCompanyCode","_register2","isFormReadyToBeSent","_x13","registerWithCompanyCode","_x14","generateValidationCode","isValid","_useState21","newV","replace","toUpperCase","activityIndicator","companyCodeConfirmationIcon","companyCodeConfirmationText","companyCodeFailure","companyCodeFailureIcon","companyCodeFailureText","company","setCompany","_send","BackIcon","tintColor","Form","Formik","TextField","field","meta","helper","SubmitButton","_useFormikContext","validateForm","isSubmitting","resetForm","handleSubmitForm","addListener","matches","_mutationFn","onError","mutateAsync","when","_x22","_x23","_x24","resetPassword","Stack","createStackNavigator","GuestRoute","Navigator","screenOptions","headerShown","headerStyle","headerBackImage","Screen","component","options","sellImage","activityImage","mutualAidImage","carPoolImage","eventImage","lostPropertyImage","surveyImage","suggestionImage","newsImage","documentImage","headerBackgroundPopup","genericBackground","genericBackgroundHeader","teams","slack","googleChat","youtube","poweredByGiphy","qrcodeStoreImage","DefaultBackground","imageStyle","AppScreen","header","paddingHorizontal","getCompanyServices","_getCompanyServices","_getCompanyServicesWithCount","count","getCompanyGeoSites","_getCompanyGeoSites","siteGeo","_getCompanyGeoSitesWithCount","_getCompanyGeoSitesWithServicesWithCount","getLoggedUserCompanyGroups","_getLoggedUserCompanyGroups","_getLoggedUserCompanyGroupsWithCount","group","_getCompanyUsersCount","AppSafeAreaView","BackButton","handlePress","lovIdEtat","reset","routes","absoluteScreenName","navigationDetails","canGoBack","CUSTOM_MODULE","_currentContribution$","module","_ContributionTypesInf","_ContributionTypesInf2","getRouteFromContributionType","renderedButton","relative","generateTVInternLink","salt","generateTVPublicLink","generateUrl","baseUrl","parameters","entries","dateToGoogleString","YOUTUBE_REGEX","getYoutubeIdFromURL","vParam","pair","isValidYoutubeUrl","arr","pop","MediaToPictureSource","media","_SplitMedia","SplitMedia","_SplitMedia2","mediaName","MediasInfos","imagePreview","MediaComponent","Component","idx","indexOf","GetMediaInfo","mediaInfoName","keys","mediaInfo","isMedia","Youtube","allow","src","defaultProfilePic","getPictureURI","pictureId","getPictureSource","getDocumentURI","_getPrefixByContributionType","urlPrefixType","_postPrefixByContributionType","getContributionImageSource","typedData","isAnonymous","anonyme","ProfilePicture","borderStyle","AppModalOverlay","Overlay","overlayStyle","defaultOverlay","ModalComponent","onBackdropPress","TwoActionsGenericPopup","setVisible","button1Title","onPressButton1","onPressButton2","Header2","ResponsiveView","windowWidth","Dimensions","breakpoint","bigScreenStyle","ResponsiveRow","ResponsiveColumn","first","ProfileScreen","_companyServices$filt","_companyGeoSites$filt","_companyGroups$filter","companyServices","setCompanyServices","companyGeoSites","setCompanyGeoSites","companyGroups","setCompanyGroups","companyServicePromise","entrepriseId","companyGeoSitesPromise","companyGroupsPromise","entrepriseGroups","reverse","paddingRight","ScrollView","SECONDARY","button2Title","logoFile","ProfileRow","_props$user$userSubAd","_props$user$userSubAd2","userSaved","_allowEdit","allowEdit","sendRecoveryEmail","showAdminTag","lineHeight","simple","dateInscription","flexGrow","flexShrink","showRecoveryEmail","SimpleLineIcons","marginHorizontal","removeUser","DataTableHeader","sortKey","sortBy","setSortBy","sorted","order","sortIcon","onContentSizeChange","leftIcon","onPressIcon","ReactTextInput","marginVertical","SearchTextInput","HorizontalFlatList","renderItem","keyExtractor","currentX","setCurrentX","layoutX","setLayoutX","contentWidth","setContentWidth","FlatList","horizontal","showsHorizontalScrollIndicator","onLayout","event","nativeEvent","layout","onScroll","contentOffset","_ref$current","scrollToOffset","animated","_ref$current2","getDataContentByType","vente","hobbie","getTitleByType","contributionHobbie","contributionService","libelleDepart","contributionCovoiturage","libelleArrivee","contributionObjet","contributionEvenement","contributionVente","contributionKiosque","cSondage","getDescriptionByType","texte","resolveContributionType","contributionTypeId","typeFromId","getIdFromItem","_item$contributionHob","_item$contributionSer","_item$contributionCov","_item$contributionObj","_item$contributionEve","_item$contributionEve2","_item$contributionVen","_item$cSondage","base","extractContributionFromResponse","contributionTypeToText","_contributionType","contributionColors","_contributionColors","colorList","UserFilters","filters","useQuery","companySiteGeos","headerContainer","searchInput","_filters$services3","chip","_filters$services","_filters$services2","_filters$siteGeos3","_filters$siteGeos","_filters$siteGeos2","siteGeos","filterInput","hasLicence","selector","entreprisesLicences","licence","hasLicenceSell","_user$entreprise2","hasLicenceActivity","_user$entreprise3","hasLicenceMutualAid","_user$entreprise4","hasLicenceCarPool","_user$entreprise5","hasLicenceEvent","_user$entreprise6","hasLicenceTraining","_user$entreprise7","contributionFormation","hasLicenceOrganizationalChart","_user$entreprise8","contributionOrganigrame","hasLicenceBooking","_user$entreprise9","contributionBooking","hasLicenceLostProperty","_user$entreprise10","hasLicenceSurvey","_user$entreprise12","hasLicenceSuggestion","_user$entreprise13","cBoiteIdee","hasLicenceDocument","_x$contributionKiosqu","hasLicenceTeams","hasLicenceGoogleChat","hasLicenceMessaging","messagerie","hasLicenceExternalScreen","externalScreen","hasLicenceEmergencySms","emergencySms","UsersList","isSsoEmail","ssoAuth","emailDomain","emailEntrepriseDomain","entrepriseNomDomaine","nomDomaine","hasSsoAuth","useIsSsoEmail","setFilters","_useQuery","getCompanyUsers","usersList","isRefetching","refresh","refetch","_exportToCsv","fileUrl","getUsersExportCsvUrl","FileSystem","documentDirectory","downloadAsync","Sharing","shareAsync","dialogTitle","filteredData","u","exportContainer","exportLabel","userNameCountContainer","userIcon","dateContainer","list","refreshControl","RefreshControl","refreshing","onRefresh","navigateToMessaging","navigateToMessagingCreateThread","navigateToMessagingNewThread","threadName","navigateToMessagingThread","contactFirstName","contactLastName","TeamsButton","generateTeams","image","GoogleChatButton","generateGoogleChat","SlackButton","teamId","generateSlack","AttributeRow","UserProfileOverlay","_props$userProfileDat","_props$userProfileDat2","_props$userProfileDat3","_props$userProfileDat4","_props$userProfileDat5","_props$userProfileDat6","_props$userProfileDat7","_props$userProfileDat8","_props$userProfileDat9","entrepriseService","entrepriseSiteGeo","fichierIdLogo","slackId","slackTeamId","googleChatId","CloseButton","removeAccentsAndLower","str","normalize","groupByAdjacent","array","fn","fn_prev","acc","val","fn_curr","push","formatUrl","fileToBase64","reader","FileReader","onload","readAsDataURL","onerror","PdfZoomed","setBase64","disableScrollPluginInstance","disableScrollPlugin","pageNavigationPluginInstance","pageNavigationPlugin","GoToNextPage","GoToPreviousPage","page","setPage","totalPage","setTotalPage","isString","pdfContainer","horizontalContainer","MinimalButton","d","Viewer","plugins","defaultScale","SpecialZoomLevel","PageWidth","onPageChange","currentPage","onDocumentLoad","doc","numPages","pageCounter","renderViewer","_props$pageSizes$","_props$pageSizes$2","_props$containerRef","_props$containerRef$c","slot","pageWidth","pageSizes","pageHeight","pageRatio","containerWidth","clientWidth","attrs","subSlot","maxHeight","forwardRef","fit","darkBackground","autoPlayDelay","noModal","onAutoPlayEnd","onPreviewPageChange","onTotalPageChange","viewerRef","modalVisible","setModalVisible","previewPageNavigationPluginInstance","previewJumpToNextPage","jumpToNextPage","previewJumpToPreviousPage","jumpToPreviousPage","isPreviewOnLastPage","setIsPreviewOnLastPage","timeout","clearTimeout","useImperativeHandle","goToNextPage","goToPreviousPage","ActualSize","PageFit","onRequestClose","modal","PdfProvider","Worker","workerUrl","FadeInView","fadeAnim","Value","timing","toValue","useNativeDriver","UnsplashPicker","searchQuery","setPhoto","onDone","_useUnsplash","setQuery","setLastQuery","setLastPage","images","setImages","searchForUnsplash","isQueryEmpty","trim","client_id","results","urls","author","links","html","old","newArr","splice","intervalId","lastQuery","lastPage","searchImages","fetchNext","notifyImageDownload","_ref4","useUnsplash","hoveredIndex","setHoveredIndex","handleImagePressed","_yield$Asset$loadAsyn","Asset","loadAsync","listContainer","numColumns","listContentContainer","onEndReached","ListEmptyComponent","listEmptyLabel","listItemContainer","listItemPressable","onHoverIn","onHoverOut","listItemImage","authorOverlay","listItemImageCaption","TouchableWithoutFeedback","ev","preventDefault","Linking","underline","zIndex","RNImage","GiphyPicker","_useGiphy","searchForGiphy","api_key","q","limit","original","useGiphy","PhotoPicker","defaultPhoto","extraOption","allowPdf","photosGallery","photoUri","URL","createObjectURL","Pdf","document","PhotoPickButtons","modalText","multiple","onButtonPressed","mobileOptionChoiceModal","setMobileOptionChoiceModal","promise","pickManyPhotos","pressButton","option","buttonContainer","elem","PhotoPickerModal","close","MobileOptionChoiceModal","setSource","setSearchQuery","_ref5","ButtonGroup","selectedIndex","buttons","buttonContainerStyle","selectedButtonStyle","searchContainer","TabView","_ref6","divider","AvatarField","_field$value","_field$value2","avatars","AppRadioGroup","renderLeft","vertical","radioContainer","radioContainerSmall","verticalRadioContainer","radioTitle","CheckBox","center","checkedIcon","uncheckedIcon","checkedColor","uncheckedColor","checked","radio","radioSmall","border","RadioGroupField","AppSwitch","Switch","trackColor","false","true","SwitchField","LanguagePickerField","SelectField","onSelected","selectComponent","isoDate","MultiSelectField","emptyText","valueExtractor","labelExtractor","args","itemContainer","onRemove","UserFormFields","displayEmailWarning","allowAvatarEdit","allowEmailEdit","displayHideEmail","displayGender","userToken","asyncFunc","seniorityYears","differenceInYears","switchContainer","transform","scaleX","scaleY","switchLabel","seniorityContainer","seniorityLabel","s","groupText","CreateUserForm","onSubmitEnd","mutation","avatarData","_getAvatarData","getAvatarData","gender","createUserProfile","avatar","CreateUserScreen","handleSubmitEnd","DirectoryScreen","_user$userSubAdmins$l","Tab","createMaterialTopTabNavigator","DirectoryList","swipeEnabled","tabBarStyle","initialParams","_route$params2","_user$userSubAdmins$l2","showProfileUser","setShowProfileUser","AppListSwitch","notSelected","firstOptionText","design","secondOptionText","UserSubRow","_user$mActu","_user$mActu$userIdCre","_user$mActu$userIdCre2","_user$userIdCreateurN","_user$userIdCreateurN2","withPicture","textSize","deletedAt","userIdCreateurNavigation","textContainer","ImageWithFooterTextUnmemo","imageSource","backgroundImage","emptySpace","fontStyle","ImageWithFooterText","defaultProps","absoluteFillObject","Label","ContributionLabel","getSpreadingFormData","users","entrepriseServiceIds","entrepriseSiteGeoIds","entrepriseGroupIds","spreadingType","getFormDataEvent","cagnotte","moneyPool","place","availableSeats","nomCreateur","commentsActivated","notifActivated","emailActivated","getFormDataByContributionType","prix","price","marque","brand","getFormDataActivity","userIdCreateur","getFormDataMutualAid","covoit","adresseDepart","startCoordinates","adresseArrivee","endCoordinates","lovIdOffre","permanent","getFormDataCarPool","location","lost","getFormDataLostProperty","GetContributionsMode","IntToGetContributionsMode","gcm","not_set","removeCompanyNews","_removeCompanyNews","_setApproveNews","newsId","getCompanyNewsDetail","postCompanyNews","putCompanyNews","_listNewsInterestedUsers","_setInterestedNews","_setFavoriteNews","EditButton","getDuration","startDate","endDate","_setAttendEvent","eventId","attend","contributionEvenementId","reponse","_report","contributionId","userIdSignaler","getContributionsList","_getContributionsList","admin_all","toApprove","approved","mine","interested","requests","offers","participation","reviewed","getContributionItem","_getContributionItem","itemId","_post","_put","postWithPhoto","_postWithPhoto","putWithPhoto","_x25","_x26","_putWithPhoto","_sendContribution","_users","sendEvent","sendTraining","highlightedDays","traduction","translations","DateDebutPublication","DateFinPublication","visibleStartDate","visibleEndDate","publishNews","_sendUpdateContribution","updateEvent","updateTraining","updateNews","removeContribution","_x36","_x37","_removeContribution","setApproveContribution","_x38","_x39","_x40","_x41","_setApproveContribution","refuseSegment","_listContributionInterestedUsers","RemoveButton","SpreadingChipList","monocolor","maxItems","chipStyle","moreHovered","setMoreHovered","spreadingItems","entrepriseServices","entrepriseSiteGeos","entrepriseGroup","limitedSpreadingItems","slice","getLabelColor","hash","charCodeAt","abs","moreChipAnchor","moreChipContainer","ImagesCounter","imagesCount","topLeft","topRight","RemoveButtonCompanyNews","SquareTouchableWrapper","ContributionPreviewItem","mediaLogo","_GetMediaInfo","videoUrl","allImage","imageURI","overlayContent","labelContent","additionalButtons","ContributionItemRowBigPicture","dateCreation","isAdminView","fichierIdPhoto","contributionMedias","ContributionItemRowCompanyNews","_props$item","_props$item$visibleSt","_props$item2","_props$item2$mActu","_props$item2$mActu$da","_props$item3","_props$item4","_props$item5","_props$item6","_props$item7","_props$item7$mActuPos","locale","isApproved","_GetMediaInfo2","publicationDate","imageId","highlighted","validator","dateValidation","mActuPostMedias","mActuPost","setApproveNews","Octicons","formatInTimeZone","ContributionItemRowCarPool","getContributionsMode","carPoolRow","permanentRow","temporaryRow","AppMapView","markers","fullWidth","setSelectedItem","_getColor","MapView","initialRegion","latitudeDelta","longitudeDelta","provider","PROVIDER_DEFAULT","marker","isEmpty","Polyline","path","lat","geodesic","strokeColor","strokeOpacity","strokeWeight","Marker","coordinate","getCategoriesByType","_getCategoriesByType","getCategoriesByCustomModuleIdentifier","_getCategoriesByCustomModuleIdentifier","customModuleIdentifier","postCategory","CategoriesContributions","GLOBAL_CATEGORY","SERVICE_CATEGORY","GEOSITE_CATEGORY","hasCategories","findIndex","c","CategoryChip","Separator","separatorVertical","separatorHorizontal","CategoriesList","categories","selectedCategory","setSelectedCategory","separator","marginEnd","usePaginatedList","fetchByCursor","deps","firstFetchLimit","setData","isRefreshing","setIsRefreshing","setNextCursor","totalCount","setTotalCount","ResponsiveFlatList","columnWrapperStyle","setContainerWidth","internNumColumns","max","useContributionListRefresh","refreshCallback","ContributionsMainScreen","_props$isSignaled","showLost","setShowLost","isSignaled","showReported","setShowReported","showMap","setShowMap","setSearch","setCategories","displaySecondView","setDisplaySecondView","filterFavorites","setFilterFavorites","filterByService","setFilterByService","filterByGeoSite","setFilterByGeoSite","_usePaginatedList","contributionModeSecondView","contributionMode","favorites","items","containValidContribution","row","third","_row$contributionSign","contributionSignalement","_onPress","tag","mapIsVisible","listIsVisible","searchField","hideCategory","windowSize","maxToRenderPerBatch","extraData","emptyListLabel","getRenderItem","scrollEventThrottle","AppContributionMapView","loadingIndicator","_useState22","selectedItem","mapContainer","mapOverlay","_onPress2","FloatingButtons","actions","FloatingAction","overrideWithAction","onPressItem","FloatingButtonsNews","boxShadow","ChatbotButton","_props$route$params","_props$route$params2","_props$route$params3","getContributionsModeSecondView","_getRenderItem","_item$contribution$co","ContributionItemSquare","_getNumColumns","_id","SuggestionsAdministrationRoute","CompanyNewsAdministrationRoute","ContributionToValidateItem","onEdit","onApprove","onDisapprove","SurveyToValidateAdminListScreen","approveContribution","ContributionValidatedItem","SurveyValidatedAdminListScreen","handleRemoveContribution","SurveyAdministrationRoute","setPreviousPassword","valid","putNewPassword","CategoriesContext","createContext","unregister","ColorPickerField","colorSelected","CSS","supports","customColorField","CreateCategoryForm","customModule","resetKey","setResetKey","_loggedUser$entrepris","customModuleId","categoriesColors","_listCustomModules","_listCustomModuleContributions","moduleIdentifier","_listCustomModuleContributionsAdmin","getCustomModuleContributionsDetails","_getCustomModuleContributionsDetails","useCustomModules","listCustomModules","refetchInterval","customModules","isCustomModulesFetched","isFetched","isCustomModulesError","isError","CreateCategoryScreen","useContext","success","setSuccess","categoryContribution","EditCategory","setName","setColor","customColor","setCustomColor","col","putCategory","EditableChip","last","onLeft","onRight","onDelete","ManageCategoriesOrder","_loggedUser$entrepris2","_useContext","fetchCategories","cat","callback","ManageCategoriesOrderItem","_categories$identifie","timeoutRef","move","delta","categoryIndex","filtered","orders","reduce","deleteCategory","ManageCategoryScreen","categoryEditing","setCategoryEditing","CategoriesAdministrationRoute","callbacks","setCallbacks","ephemeris","CustomDrawerContent","todayDateTime","ephemerisOfTheDay","timer","Intl","DateTimeFormat","weekday","shortDate","time","hour","minute","useTodayDateTime","windowHeight","DrawerContentScrollView","DrawerItemList","DrawerItem","Hoverable","onHoverChange","onMouseEnter","onMouseLeave","defaultQuery","setItems","show","setShow","flatListRef","reload","handleQueryChange","handleSelect","autocompleteList","separators","hoveredItem","OutsidePressHandler","onOutsidePress","_getLatitudeLongitudeFromPlaceId","googleApiKey","placeId","place_id","fields","withCredentials","_response$data2","_response$data2$resul","_response$data2$resul2","_response$data3","_response$data3$resul","_response$data3$resul2","_response$data3$resul3","_response$data4","_response$data4$resul","_response$data4$resul2","_response$data4$resul3","geometry","google","maps","Geocoder","geocode","AddressAutocomplete","setCoordinates","sessionToken","uuid","v4","handleSearch","sessiontoken","_response$data","predictions","places","AutocompleteService","getPlacePredictions","AppAutoComplete","getLatitudeLongitudeFromPlaceId","UserAutocomplete","selectedIds","searchUsers","PickUsers","filterByUserRights","subAdminCanShareWithEveryone","pickedUsers","pickedServices","pickedGeoSites","pickedGroups","setSpreadingType","setPickedUsers","setPickedServices","setPickedGeoSites","setPickedGroups","onNeedsValidationChange","companyGeoSitesWithServices","setCompanyGeoSitesWithServices","setUsers","entrepriseUserCount","setEntrepriseUserCount","collapsedGeoSites","setCollapsedGeoSites","pickedGeoSiteServices","setPickedGeoSiteServices","spreadingTypeOptions","isServiceSubAdmin","isSiteGeoSubAdmin","isGroupSubAdmin","filteredServices","subAdmin","filteredGeoSites","_user$userSubAdmins5","filteredGroups","_user$userSubAdmins6","getUsersByIds","newPickedGeoSiteServices","forEach","siteId","serviceId","pickedSites","uniq","getCompanyUsersCount","getCompanyServicesWithCount","getCompanyGeoSitesWithCount","getCompanyGeoSitesWithServicesWithCount","getLoggedUserCompanyGroupsWithCount","audienceCount","_companyGeoSites$find","b","_companyServices$find","_companyGeoSitesWithS","_companyGeoSitesWithS2","_companyGroups$find","needsValidation","userPickRow","setServiceSelected","switchText","setGeoSiteSelected","_companyGeoSitesWithS3","setGroupSelected","newUsers","selectUser","profileRow","profileContainer","unselectUser","trashIcon","contributionSpreadingFieldValidators","is","ContributionSpreadingField","spreadingTypeField","spreadingTypeHelper","usersField","usersHelper","_useField5","_useField6","servicesField","servicesHelper","_useField7","_useField8","siteGeosField","siteGeosHelper","_useField9","_useField10","groupsField","groupsHelper","RichTextField","ContributionAuthorizationsField","hideEmailActivated","switchGroup","CSondageQuestionType","_worklet_9850506917432_init_data","_worklet_3148099478788_init_data","Carousel","extraItems","_ref$width","_ref$height","_ref$displayImageNumb","displayImageNumber","defaultIndex","_ref$buttonsPosition","buttonsPosition","renderEmptyComponent","carouselRef","currentIndex","setCurrentIndex","lastLength","setLastLength","rerender","setRerender","directionAnimVal","_carouselRef$current","scrollTo","_carouselRef$current2","RNCarousel","carousel","carouselContainer","isValidElement","customAnimation","baseConfig","modeConfig","_modeConfig$parallaxS","parallaxScrollingOffset","_modeConfig$parallaxS2","parallaxScrollingScale","_modeConfig$parallaxA","parallaxAdjacentItemScale","translate","Extrapolation","CLAMP","scale","translateY","translateX","parallaxLayout","dataLength","rotateZ","EXTEND","tinderLayout","scrollAnimationDuration","onSnapToItem","loop","imageNumber","_carouselRef$current3","prevButton","insideButton","_carouselRef$current4","next","ContributionPhotoList","photos","_ref$noInteractions","noInteractions","_ref$noBorderRadius","noBorderRadius","renderActions","onAddPressed","zoomedIndex","setZoomedIndex","lastZoomedIndex","setLastZoomedIndex","modalDimensions","setModalDimensions","itemDimensions","setItemDimensions","contributionImagesSource","_item$file","ContributionPhotoListItem","addContainer","defaultImage","modalContainer","_event$nativeEvent$la","modalItemContainer","modalItemLayer","modalItemSubcontainer","ContributionPhotoListItemZoomed","entering","SlideInRight","SlideInLeft","pdfRef","pdfPage","setPdfPage","pdfTotalPage","setPdfTotalPage","video","Media","documentId","_pdfRef$current","_pdfRef$current2","hasPreviousPage","hasNextPage","topButton","bottomButton","_SplitMedia3","_pdfRef$current3","_pdfRef$current4","PhotoListFormField","onChanged","picksButtonsRef","lastClickedButton","setLastClickedButton","showVideoPopup","setShowVideoPopup","invalidVideoUrl","setInvalidVideoUrl","setVideoUrl","onVideoUrlChanged","acceptedFormatsText","idealFormatText","photosContainer","deleteButton","_picksButtonsRef$curr","videoModalTitle","videoModalTextField","videoModalErrorLabel","PhotoListField","isAnonym","questions","of","answers","TEXT","SurveyFormFields","isEditing","setNeedsValidation","enableResetScrollToCoords","keyboardShouldPersistTaps","keyboardDismissMode","question","Card","Title","questionTrashButton","Divider","SINGLE","MULTIPLE","answer","answerIndex","answerView","answerTextField","answerTrashButton","newAnswers","plusButton","getSurvey","_respondSurvey","surveyId","UpdateSurveyScreen","cacheTime","isLoadingList","isErrorList","updateSurvey","userTargets","priceToString","_route$params$title","_route$params4","_route$params5","_route$params6","_route$params7","_route$params8","_route$params9","_route$params10","_route$params11","_route$params12","_route$params13","_route$params14","_route$params15","_route$params$moneyPo","_route$params16","_route$params17","_route$params18","_route$params19","_route$params20","_route$params21","_route$params22","_route$params23","_route$params24","_route$params25","_route$params26","_route$params30","_route$params31","_route$params3","setTitle","setDescription","setBrand","setPrice","setStart","setStartCoordinates","setEnd","setEndCoordinates","setPermanent","setLocation","_useState23","plus","_useState24","setEndDate","_useState25","_useState26","setAnonymous","_useState27","dueDate","_useState28","setDueDate","_useState29","_useState30","setMoneyPool","_useState31","_useState32","setPlace","_useState33","_useState34","_useState35","_useState36","setUrl","_useState37","_useState38","setAvailableSeats","_useState39","_useState40","setQuestions","_useState41","_useState42","setLost","_useState43","_useState44","_useState45","_useState46","setServices","_useState47","_useState48","geoSites","setGeoSites","_useState49","_useState50","setGroups","_useState51","_useState52","documentTag","setDocumentTag","_useState53","_useState54","setAnswers","_useState55","_useState56","setSelectMode","_useState57","_useState58","setVisibleStartDate","_useState59","_useState60","setVisibleEndDate","_useState61","publicationMode","_useState62","setPublicationMode","_useState63","_useState64","setTranslations","_useState65","_useState66","setCategoryId","_useState67","_useState68","_useState69","_useState70","setCommentsActivated","_useState71","_useState72","setNotifActivated","_useState73","_useState74","setEmailActivated","eventType","dateObject","endDateObject","_useDeviceSize","_route$params27","_route$params28","_route$params29","_useState75","_useState76","generateAnEmail","setGenerateAnEmail","onTimeUpdated","_dataContent$contribu","_dataContent$contribu2","_dataContent$contribu3","_dataContent$contribu4","_dataContent$contribu5","_dataContent$contribu6","_dataContent$contribu7","_dataContent$contribu8","_dataContent$contribu9","_dataContent$contribu10","_dataContent$contribu11","_dataContent$contribu12","_dataContent$contribu13","dataContent","setSeconds","getSeconds","canAnonyme","dateLimite","cSondageQuestion","cSondageReponse","cSondageUsers","dateDebutPublication","dateFinPublication","hasPhoto","hasTitle","hasDescription","isFormReady","answersKey","every","enableAutomaticScroll","eventDateContainer","eventDateContainerSmall","eventDateElem","eventDateElemSmall","eventDateDuree","formatDistanceStrict","roundingMethod","eventDateLastElemSmall","eventMoneyPool","eventMoneyPoolLabel","eventMoneyPoolInput","eventAvailableSeatsContainer","eventAvailableSeatsContainerSmall","eventAvailableSeats","eventSeatsNumberInput","eventSeatsNumberInputSmall","_answers$i","updateQuestion","_needsValidation","_x34","_x35","sendUpdateContribution","_x27","_x28","_x29","_x30","sendContribution","eventAvailableSeatsSwitch","EventItemRow","seatsLabel","remainingSealsText","participationCount","noAvailableSealsText","eventTypeLabel","onPressEdit","onPressRemove","picture","contentContainer","topContainerSmall","topContainer","seatsTextSmall","seatsText","bottomContainer","textSmall","textRight","actionsContainer","editButton","Feather","CategoryPicker","EventsMainScreen","contributionTypeInt","contributionsModeInt","contributionsMode","filterCategory","setFilterCategory","SectionList","sections","showsVerticalScrollIndicator","stickySectionHeadersEnabled","renderSectionHeader","section","sectionTitle","ItemSeparatorComponent","_sendSuggestion","lovIdEtatNavigation","sendSuggestion","CreateSurveyScreen","sendSurvey","Tabs","tabBarLabelStyle","getMyContributionsTitleByType","ContributionRouter","ContentWithImageHeaderScreen","_props$contribution","_props$contribution2","_props$contribution3","_props$contribution3$","smallScreenStyle","screenDimensions","SafeAreaProvider","edges","imageContentOverride","underImageContent","bottomContent","absoluteBackNavigation","absoluteBackNavigationDetail","_setContributionInterest","postId","setCompanyNewsView","_removeContributionInterest","interestId","Html","_props$source","dangerouslySetInnerHTML","__html","HtmlText","filteredText","tagsStyles","strong","systemFonts","baseStyle","RemoveLittleButton","CommentBubble","remove","hasEditAccess","_getNewsComments","_getContributionComments","_postNewsComment","_postContributionComment","_deleteComment","commentId","IconButton","internalColor","NewCommentForm","onSent","send","postNewsComment","postContributionComment","CommentList","displayAll","setDisplayAll","getNewsComments","getContributionComments","displayAllComment","removeComment","deleteComment","commentsTitle","creationDate","commonSection","sectionMe","sectionNotMe","sectionTextArea","sectionMeTextArea","sectionNotMeTextArea","sectionText","sectionFooter","commentsContainer","AppLoader","RadioButtonGroupField","isChecked","SurveyRespondForm","respondSurvey","shape","questionId","answerId","answerIds","freeText","_question$answers$fin","hasAlreadyResponded","questionText","textField","questionSubtext","SurveyDetailsScreen","_data$title","_exportToPdf","getSurveyExportPdfUrl","_exportToCSV","getSurveyExportCsvUrl","_recallNotification","recallSurveyNotification","KeyboardAvoidingView","behavior","ReportButton","buttonTitle","owner","BigDetailRow","isOwner","SimpleDetailRow","round","participationRate","invitedCount","answersCount","selectedCount","singular","plural","selectedRate","respondCount","exportToPdf","exportToCSV","recallNotification","BigDetailRowInline","chipContainer","ContactUserButton","ProfileCard","_props$user$aspNetUse","showProfile","setShowProfile","isDeleted","ContributionInterestedUserList","_x42","_x43","_x44","listContributionInterestedUsers","_props$bottomBorderWi","bottomBorderWidth","ViewDetailRow","SimpleColumnDetailRow","_props$borderBottomWi","_props$borderBottomWi2","AttendButton","solid","activated","reported","setReported","report","_props$route$params6","_props$route$params7","_ContributionTypesInf5","_ContributionTypesInf6","_contribution$userIdC","_contribution$userIdC2","_props$route$params4","_props$route$params5","setOptions","setInterestId","showInterestedPeople","setShowInterestedPeople","canBeInteresting","cont","contId","interestsList","mActuInterest","cinterest","_getInterestId","_attend","setAttendEvent","_approveContribution","_exportEventToPdf","getEventExportPdfUrl","recallEventNotification","recallFormationNotification","bottomContentContainer","userSubRow","underImageContentText","doesCurrentUserParticipate","doesCurrentUserRejected","details","dates","generateGoogleAgenda","allday","subject","rru","startdt","enddt","generateOutlookAgenda","fichierIdDocument","invitationCount","rejectionCount","exportEventToPdf","_mActu","_mActu2","_contribution$cintere","_mActu3","_mActu3$mActuInterest","interestCount","getInterestCount","_ContributionTypesInf3","setContributionInterest","removeContributionInterest","simpleColumnDetailRowContainer","LoggedInHomeScreen","ItemRowScreenOpener","ItemRow","CompanyAdminMainScreen","registerCode","OrganizationalChartForm","setLabel","setDefaultFilename","fileError","setFileError","getOrganizationalCharts","_getOrganizationalCharts","_getOrganizationalChartDetails","_createOrganizationalChart","_updateOrganizationalChart","_updateOrganizationalChartOrder","_deleteOrganizationalChart","CreateOrganizationalChartScreen","createOrganizationalChart","navigateToAdminCreateOrganizationalChart","_navigationRef$curren2","ListOrganizationalChartsScreen","updateOrganizationalChartOrder","newEntries","updateOrder","handleDelete","deleteOrganizationalChart","DraggableFlatList","onDragEnd","to","scrollEnabled","scrollView","scrollViewContent","drag","itemActions","onPressIn","actionIcon","_navigationRef$curren3","navigateToAdminUpdateOrganizationalChart","itemLabel","UpdateOrganizationalChartScreen","setInitialValues","getOrganizationalChartDetails","updateOrganizationalChart","OrganizationalChartAdminRouter","headerBackTitleVisible","UserAutocompleteField","lockedUsers","CompanyGroupFormFields","_getCompanyGroups","_getCompanyGroupDetails","_createCompanyGroup","_updateCompanyGroup","_deleteCompanyGroup","CreateCompanyGroupScreen","createCompanyGroup","navigateToAdminCreateCompanyGroup","ListCompanyGroupsScreen","getCompanyGroups","deleteCompanyGroup","navigateToAdminUpdateCompanyGroup","UpdateCompanyGroupScreen","getCompanyGroupDetails","isLoadingDetails","updateCompanyGroup","CompanyGroupAdminRouter","ListValidationMapScreen","getUserSubAdmins","subContainerTitle","NameList","keyProps","navigateToAdminUpdateSubAdmin","subContainer","lineContainer","nameListView","itemLabelName","_navigationRef$curren","hairlineWidth","UpdateValidationMapScreen","getUsersByUserSubAdmin","updateValidationMap","ValidationMapForm","baseUsers","ValidationMapAdministrationRoute","getCompanyStatistics","_getCompanyStatistics","getTopNewsStatistics","_getTopNewsStatistics","_getNewsByIntervalStatistics","_getContributionsCountByIntervalStatistics","getTopActuAuthors","_getTopActuAuthors","getTopContributionAuthors","_getTopContributionAuthors","StatisticsSquare","ContributionsCountByIntervalStatisticsType","getOptionsFromData","tooltip","trigger","xAxis","MONTH","YEAR","yAxis","series","ContributionsByIntervalLineChart","chart","setChart","svgRef","echarts","renderer","setOption","showLoading","_chart","dispose","hideLoading","GestureHandlerRootView","SvgChart","useRNGH","SVGRenderer","LineChart","GridComponent","TooltipComponent","NewsCountStatistics","setYear","contributionsServiceId","setContributionsServiceId","contributionsSiteGeoId","setContributionsSiteGeoId","getNewsByIntervalStatistics","siteGeoId","contributionsData","isLoadingContributions","filtersContainer","filtersDropdown","contributionTypes","ContributionCountStatistics","setContributionType","getContributionsCountByIntervalStatistics","TableContext","minColumnWidths","setMinColumnWidth","Table","setMinColumnWidths","tableContainer","table","TableCell","ignoreMinWidth","cell","Cell","Row","headerText","TopAuthorChart","chartWidth","setChartWidth","maxCount","contributionCount","hidden","chartCell","serviceName","siteName","chartBar","textCell","TopAuthorStatistics","queryKey","messageBuilder","setLimit","NORMAL","authors","StatisticsScreen","newDateMinusOneYear","isLoadingServices","isErrorServices","_useQuery2","isLoadingSiteGeos","isErrorSiteGeos","companyCreationYear","nowYear","_useQuery3","topNews","generalData","isLoadingGeneral","isErrorGeneral","onPressNews","news","generalContainer","CountUp","isCounting","usersCount","newsCount","chartContainer","topSeen","TopNewsListScreen","countLabelExtractor","topInterest","topCommented","topAuthors","topNewsContainer","topNewsItemContainer","newsSquare","newsChip","chartBarContainer","chartBarLabel","_listSiteGeoScreenSettings","_updateSiteGeoScreenSettings","_listPlaylistScreenSettings","_getPlaylistScreenSettings","_createPlaylistScreenSettings","_updatePlaylistScreenSettings","_deletePlaylistScreenSettings","listScreenPlaylist","_listScreenPlaylist","_getScreenPlaylist","_deleteScreenPlaylist","listScreenMedias","_listScreenMedias","_deleteScreenMedia","ScreenPlaylistListScreen","deleteScreenPlaylist","ListHeaderComponent","tableHeader","itemColumn","FAB","placement","ScreenSettingsListScreen","listPlaylistScreenSettings","deletePlaylistScreenSettings","itemContentContainer","itemTitle","columnContainer","column0","columnRow","pLaylistName","PhotoFormField","onPhotoChanged","PhotoField","videoUrlField","videoUrlHelper","imageIdHelper","documentIdHelper","CreateScreenPlaylistMedia","createScreenMedia","ScreenMediasListScreen","deleteScreenMedia","previewHeader","itemPreview","AdminScreenTabsRoute","ScreenPlaylistScreenPlaylistItemType","oneOf","screenPlaylistMediaId","nullable","delay","ScreenPlaylistFormFields","playlistMedias","newData","_playlistMedias$find","getIndex","isVideo","Meteo","Facebook","LinkedIn","screenPlaylistMediaIdString","upperCase","addMediaButton","ScreenPlaylistCreateScreen","createScreenPlaylist","ScreenPlaylistEditScreen","getScreenPlaylist","isFetching","updateScreenPlaylist","LocationField","latitudeName","longitudeName","autocompleteValue","setAutocompleteValue","latitudeField","latitudeHelper","longitudeField","longitudeHelper","_response$data$result","formatted_address","_a$split","_a$split2","parseFloat","playlistId","rssFeed","facebookPageUrl","linkedInPageUrl","ScreenSettingsFormFields","playlists","ScreenSettingsCreateScreen","createPlaylistScreenSettings","ScreenSettingsUpdateScreen","getPlaylistScreenSettings","updatePlaylistScreenSettings","AdminScreenRoute","siteGeoScreenSettings","EditSiteGeoScreenSettings","_screenSettings$siteG","listSiteGeoScreenSettings","screenSettings","isLoadingListScreenSettings","expandedId","setExpandedId","updateSiteGeoScreenSettings","ListItem","Accordion","isExpanded","Content","accordionContent","BirthdaysScreen","_filters$search","getUserBirthDays","startOfToday","tomorrow","addDays","todayItems","todayBirthDays","todaySeniorityDates","tomorrowItems","tomorowBirthDays","tomorowSeniorityDates","weekItems","weekBirthDays","weekSeniorityDates","monthItems","monthBirthDays","monthSeniorityDates","otherItems","otherBirthDays","otherSeniorityDates","userRow","profile","userInfos","userRowText","_listBookingByResourceId","resourceId","begin","_checkResourceIntersectWithOtherBooking","contributionResourceId","ignoreBookingId","_getBookingDetails","_createBooking","_updateBooking","deleteBooking","_deleteBooking","getBookingResources","_getBookingResources","_getAdminBookingResources","_getBookingResourceDetails","_createBookingResource","_updateBookingResource","_updateBookingResourceOrder","_deleteBookingResource","ListBookingResourcesScreen","getAdminBookingResources","updateBookingResourceOrder","deleteBookingResource","dragItemOverflow","BookingResourcesFormFields","UpdateBookingResourcesScreen","_data$contribution","_data$contribution2","_data$contribution3","_data$contribution4","_data$contribution5","getBookingResourceDetails","isLoadingQuery","isErrorQuery","updateBookingResource","isLoadingMutation","isErrorMutation","CreateBookingResourcesScreen","createBookingResource","BookingAdminRouter","loading","onChangeMode","onChangeEndDate","onChangeStartDate","PublicationModeField","modeName","visibleStartDateName","visibleEndDateName","modeField","modeHelper","visibleStartDateField","visibleStartDateHelper","visibleEndDateField","visibleEndDateNameHelper","PublicationModePicker","LanguageSelector","TranslationsField","prefillFields","render","formikContext","addNewTranslation","translatedValue","free_api","target_lang","auth_key","destination","tr","translationContainer","translationHeaderContainer","translationTitle","newTranslations","el","availableLanguageContainer","Users","Sites","SitesAndServices","Services","Groups","NewsFormFields","useCategories","showEmailActivated","highlightedContainer","categoryField","submitContainer","CreateNewsScreen","onSettled","FormLoading","NewsInterestedUserList","listNewsInterestedUsers","NewsDetailScreen","_data$author$aspNetUs","authorDetailsVisible","setAuthorDetailsVisible","showInterestedUserList","setShowInterestedUserList","isLoggedUserAdmin","setInterestedNews","isInterested","toggleInterest","isLoadingToggleInterest","_useMutation2","_mutationFn2","setFavoriteNews","favorite","isFavorite","toggleFavorite","isLoadingToggleFavorite","titleContainer","categoryContainer","userSummaryViewCount","userDetailViewCount","interestedUserCount","buttonsSection","infoText","Badge","MessagingButton","fetchUnseenMessagingMessageCount","touchable","UserTokenSource","markAsReadNotification","notificationId","_readUserNotifications","_getNotificationsCount","Notifications","_unused","_getNotifications","navigateToNotification","initial","_navigateToCustomModuleDetails","navigateToCustomModuleDetails","_customModule$module","_onNotificationOpenedAppHandler","messageData","_onMessageHandler","messagingMessageReceived","messagingThreadSeenReceived","NotificationsList","notifications","setNotifications","setRefreshing","_onRefresh","getNotifications","_handleClick","notification","onExit","notificationTitle","notificationDescription","_navigationRef$curren4","_navigationRef$curren5","_navigationRef$curren6","_navigationRef$curren7","_navigationRef$curren8","_navigationRef$curren11","_navigationRef$curren9","_navigationRef$curren10","_navigationRef$curren12","_navigationRef$curren13","warn","routeFromNotification","readUserNotifications","n","NotificationButton","notificationsCount","setNotificationsCount","_refresh","getNotificationsCount","HeaderButtons","headingContainer","headingLeft","heading","mobile","createNavigatorFactory","_descriptorValues$0$o","_rightDescriptor$opti","initialRouteName","_useNavigationBuilder","useNavigationBuilder","StackRouter","descriptors","NavigationContent","descriptorValues","rightDescriptor","rightComponent","reinitializeHistory","mainRootName","routeNames","lastRoute","lastSmallMediumDevice","setLastSmallMediumDevice","StackView","centerComponent","MessagingThreadRow","messagingThread","lastMessageStyle","deleteThread","deleteMessagingThread","rightSwipeActions","rightSwipeContainer","rightSwipeText","Swipeable","renderRightActions","contactFichierIdProfil","contactText","useMessagingThreads","fetchNextMessagingThreads","resetMessagingThreads","MessagingMainScreen","_useMessagingThreads","MessagingCreateThreadScreen","useMessagingThreadMessages","paramThreadId","lastMessageIdentifier","setLastMessageIdentifier","setThreadId","generateNewMessageIdentifier","fetchNextMessagingThreadMessages","resetMessagingThreadMessages","sendNewMessage","sendNewMessagingMessage","postNewThread","refreshContactThread","getThreadIdByContactId","_state$members","markMessagingThreadAsSeen","_getFileDetails","FilePreview","_source$type","setUri","getFileDetails","documentDetails","mime","P","union","ChatBubble","me","zonedDate","meContainer","notMeContainer","commonContainer","isLoadingContainer","filePreviewContainer","filePreview","fileActionContainer","meText","notMeText","commonText","overflowWrap","MessageList","lastRead","messagesByUser","messageGroup","renderSectionFooter","AutoExpandingTextInput","setHeight","internStyle","outlineStyle","contentSize","NewMessageForm","setMessage","handlePickDocumentPressed","handleTakePhotoPressed","fileContainer","fileTextContainer","inputContainer","actionContainer","Entypo","MessagingThreadScreen","_useMessagingThreadMe","safeAreaView","keyboardVerticalOffset","ResponsiveStack","createResponsiveStackNavigator","MessagingRoute","headerLeft","openDrawer","headerBackTitle","ZOOM_LEVEL","Zoomable","_useState2$","setXY","containerScreenPosition","setContainerScreenPosition","_useState6$","imgWidth","imgHeight","setSize","showMagnifier","setShowMagnifier","magnifierWidth","magnifierHeight","zoomOutCursor","zoomInCursor","magnifierContainerStyle","pointerEvents","magnifierDivStyle","magnifierStyle","transformOrigin","collapsable","_e$nativeEvent$layout","onPointerMove","_e$nativeEvent","clientX","clientY","onPointerLeave","ZoomIn","exiting","ZoomOut","magnifier","OrganizationChartsScreen","_currentChart$file","selectedChart","setSelectedChart","currentChart","labelContainers","FileField","_getDocumentDetails","getFolderDetails","_getFolderDetails","_listFolder","folderId","listFolderAsAdmin","_listFolderAsAdmin","updateFolder","updateDocument","putForm","ListItemRow","pictureContainer","DocumentItemRow","FontAwesome","downloadIcon","renderIcon","BrowseFolderDialog","onFolderSelected","folderIdStack","setFolderIdStack","currentFolderId","queryFunction","_data$documents$map","_data$folders$map","documents","folders","handlePrevious","animationType","foldersContainer","submitButton","FolderPickerField","_data$contribution3$u","_data$contribution4$u","_data$contribution5$u","parentFolder","dialogVisible","setDialogVisible","rootFolderTitle","rootFolderDescription","newFolderId","DocumentFormFields","CreateDocumentScreen","initialFolderId","postForm","createDocument","FolderFormFields","CreateFolderScreen","createFolder","parentId","DocumentsMainScreen","openSpeedDialog","setOpenSpeedDialog","wishToRemoveItem","setWishToRemoveItem","movedItem","setMovedItem","queryIdentifier","listFolder","deselectItem","updateMutation","removeMutation","_data$documents$filte","_data$documents","_data$folders$filter$","_data$folders","onItemPress","editItem","moveItem","getItemActions","DraxProvider","DraxScrollView","DraxView","draggable","draxView","lockDragXPosition","draggingStyle","dragging","dragReleasedStyle","hoverDraggingStyle","hoverDragging","dragPayload","longPressDelay","receivingStyle","receiving","onReceiveDragDrop","draggedItem","dragged","SpeedDial","isOpen","openIcon","onOpen","Action","labelPressable","BottomSheet","modalProps","UpdateDocumentScreen","getDocumentDetails","_data$contribution6","_data$contribution7","_data$contribution8","fichierIdDocumentNavigation","UpdateFolderScreen","DocumentsRouter","AdminListCustomModuleContributionScreen","listCustomModuleContributionsAdmin","CategoryField","CustomModuleContributionFormFields","CreateCustomModuleContributionScreen","createCustomModuleContributions","ListCustomModuleContributionScreen","hasWriteAccess","listCustomModuleContributions","UpdateCustomModuleContributionScreen","_data$module","updateCustomModuleContributions","_data$contribution9","_data$contribution10","MainScreen","CustomModuleRouter","DetailsCustomModuleContributionScreen","_listSmsEmergencyTemplates","_listSmsEmergencyMyTemplates","getSmsEmergencyTemplates","_getSmsEmergencyTemplates","_createSmsEmergencyTemplate","_updateSmsEmergencyTemplate","_deleteSmsEmergencyTemplate","_sendSmsEmergency","_sendSmsEmergencyTemplate","_sendUserCount","EmergencySmsListTemplatesScreen","listSmsEmergencyTemplates","templates","EmergencySmsListMyTemplatesScreen","listSmsEmergencyMyTemplates","deleteSmsEmergencyTemplate","EmergencySmsTemplateFormFields","EmergencySmsCreateTemplateScreen","createSmsEmergencyTemplate","EmergencySmsUpdateTemplateScreen","updateSmsEmergencyTemplate","SmsSendContributionSpreadingField","sendUserCount","userCount","phoneUserCount","EmergencySmsSendScreen","sendSmsEmergency","EmergencySmsSendTemplateScreen","sendSmsEmergencyTemplate","DrawerToggleButton","_objectDestructuringEmpty","accessible","accessibilityRole","DrawerActions","toggleDrawer","hitSlop","ModuleEnum","getInitialValuesFromData","UpdateNewsScreen","DuplicateNewsScreen","BookingCalendar","calendarMode","setCalendarMode","dayjs","displayedDate","setDisplayedDate","subtract","startOf","toDate","add","endOf","listBookingByResourceId","bookings","isSameDay","endOfDay","daysDiff","differenceInDays","startOfDay","setMinutes","onPrev","controlsContainerMobile","controlsContainer","calendarButtons","Button","buttonButton","titleStyle","buttonText","calendarModeLabel","loadingContainer","Calendar","events","renderEvent","pressableProps","CalendarEvent","hourRowHeight","weekStartsOn","headerContainerStyle","monthHeader","onPressCell","startOfHour","onPressEvent","durationInMinutes","differenceInMinutes","onPressDateHeader","showVerticalScrollIndicator","moreLabel","minHour","maxHour","scrollOffsetMinutes","BookingPopup","deleteBookingMutation","isSmallSquare","eventPressableWeek","eventPressableMonth","eventContainer","eventContainerSmall","threeDotsContainer","authorId","eventActions","eventContent","eventLabel","_item$author","bookingPopupContainer","bookingPopupScrollView","bookingPopupScrollViewContent","bookingPopupCloseButton","bookingPopupBackground","bookingPopupProfilePicture","bookingPopupAuthorName","bookingPopupTime","bookingPopupEventActions","bookingPopupFooter","ListBookingScreen","selectedResource","setSelectedResource","emptyContainer","FieldHelper","displayIfNotTouched","contributionBookingResourceId","hasIntersection","_this$parent","parent","checkResourceIntersectWithOtherBooking","BookingFormFields","addMinutes","CreateBookingScreen","addHours","createBooking","UpdateBookingScreen","getBookingDetails","updateBooking","Drawer","createDrawerNavigator","userEmailDomain","entrepriseDomains","moduleSettings","isUserInDomain","defaultScreenOptions","headerTitleAlign","headerRight","getOrderByModule","_moduleSettings$find$","_moduleSettings$find","News","Admin","ContributionVente","ContributionHobbie","ContributionService","ContributionCovoiturage","ContributionEvenement","ContributionFormation","Booking","ContributionOrganigrame","ContributionObjet","ContributionSondage","ContributionBoiteIdee","ContributionKiosque","UserDirectory","EmergencySms","getModuleDefaultOrder","drawerItems","_loggedUser$userSubAd","_loggedUser$userSubAd2","element","MaterialCommunityIcons","iconId","unmountOnBlur","drawerType","drawerStyle","drawerContent","useLegacyImplementation","backBehavior","drawerItemStyle","drawerLabel","higher","EditUserForm","isErrorDetails","updateUserProfile","_data$entrepriseGroup","EditUserScreen","acceptCGU","LoginEditProfileScreen","updatedUser","AcceptCGUModal","EditMyProfileScreen","changePasswordButton","initializeApp","apiKey","authDomain","projectId","storageBucket","messagingSenderId","appId","measurementId","PushNotificationContext","PushNotificationProvider","isNotificationAllowed","setIsNotificationAllowed","onMessage","setOnMessage","accessToken","lastAccessToken","setLastAccessToken","Notification","requestPermission","registerOnNotificationOpenedApp","registerOnMessage","connection","signalR","withUrl","withAutomaticReconnect","build","on","stop","asyncEffect","getToken","getMessaging","deviceToken","ANDROID","IOS","WEB","updateDeviceToken","deleteDeviceToken","LoggedInRoute","_useCustomModules","isPushNotificationsActivated","_usePushNotifications","unsubscribe1","onNotificationOpenedAppHandler","unsubscribe2","onMessageHandler","loginCount","UserStatusRoute","OfferAppDownloadBanner","showPopup","setShowPopup","showBanner","setShowBanner","closeBanner","closeButton","linkButton","linkButtonText","qrcode","UnsupportedVersionScreen","logoContainer","dataLoaded","setDataLoaded","_runAsync","runAsync","handler","addEventListener","shouldBeUpdated","str1","str2","split1","split2","num1","num2","compareVersionStrings","searchParams","URLSearchParams","AppProviders","installed","toIgnore","originalWarn","bind","originalErr","_len","_key","_len2","_key2","queryClient","QueryClient","handleNotification","_handleNotification","shouldShowAlert","shouldPlaySound","shouldSetBadge","Ignore","Constants","appOwnership","ScreenOrientation","OrientationLock","isTablet","unlockAsync","lockAsync","PORTRAIT_UP","StatusBar","barStyle","EventProvider","registerRootComponent","Font","NavigationBar","setBackgroundColorAsync","setButtonStyleAsync","linking","prefixes","QueryClientProvider","client","NavigationContainer","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","m","deferred","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","getter","__esModule","leafPrototypes","getProto","getPrototypeOf","obj","ns","def","getOwnPropertyNames","definition","o","defineProperty","enumerable","g","globalThis","Function","hmd","set","prop","prototype","Symbol","toStringTag","nmd","paths","p","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}