{"version":3,"file":"static/js/main.25ccc516.js","mappings":"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","sources":["configuration.ts","src/services/translations.ts","src/services/api/base.ts","src/services/formUtil.ts","src/services/api/messaging.api.ts","src/store/messaging.ts","src/store/user.ts","src/services/api/version.api.ts","src/store/version.ts","src/store/reducer.ts","src/store/store.ts","src/styles/appColor.js","src/styles/globalStyle.js","src/store/action.ts","src/services/api/usersubadmin.ts","src/ScreenNames.ts","src/types.ts","src/components/atomic/AppText.tsx","src/components/atomic/AppButton.tsx","src/components/atomic/FilePicker.tsx","src/services/utils.tsx","src/services/api/formData.api.ts","src/languages/language_mapping.ts","src/services/features.ts","src/services/api/login.ts","src/services/storage.tsx","src/services/api/user.api.ts","src/hooks/useLoggedUser.ts","src/components/atomic/HypertextLink.tsx","src/styles/spaces.tsx","src/components/atomic/AppTextInput.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/components/atomic/Chip.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/FadeInView.tsx","src/components/atomic/CloseButton.tsx","src/components/atomic/Pdf.web.tsx","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/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/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/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/containers/PhotoFormField.tsx","src/hooks/useUnsplash.ts","src/components/atomic/formik/ContributionSpreadingField.tsx","src/components/atomic/formik/PhotoField.tsx","src/components/atomic/formik/RichTextField.tsx","src/components/atomic/formik/ContributionAuthorizationsField.tsx","src/entities/CSondageQuestion.ts","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/utils/Utils.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/atomic/AppModalGallery.web.tsx","src/components/containers/Media.tsx","src/services/api/file.api.ts","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/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/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/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/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":["const 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 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\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","import { AxiosRequestHeaders } from 'axios';\nimport { apiVersion } from '../../../configuration';\nimport { language } from '../../services/translations';\n\nexport type ContentType = 'application/json' | 'multipart/form-data';\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","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 axios, { 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 { 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 'axios';\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 { 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","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 FORM_LIGHT_GRAY = '#E8E7E7';\nexport const ALERT_COLOR = '#ad1d1f';\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 { 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","import axios from 'axios';\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 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 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 { 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}) {\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 return (\n {}}\n disabled={!isEnabled}\n style={[globalStyle.button, typeStyle, props.style]}\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\nexport async function pickPhoto(sizeLimit: number | undefined = undefined): 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 if (sizeLimit !== undefined) {\n const fileInfo = await getFileInfo(result.assets[0].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 _compressImage(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 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\n throw Error('Failed to retrieve picture');\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 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 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.COMPANY_NEWS,\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 { Platform } from 'react-native';\nimport { 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 addPhotoToFormData(photo, formData) {\n if (Platform.OS === 'android' && !photo.type) {\n return;\n }\n\n formData.append('files', photo);\n}\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,\n commentsActivated: data.commentsActivated,\n notifActivated: data.notifActivated,\n emailActivated: data.emailActivated,\n videoUrl: data.videoUrl,\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 commentsActivated: data.commentsActivated,\n notifActivated: data.notifActivated,\n emailActivated: data.emailActivated,\n videoUrl: data.videoUrl,\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 commentsActivated: data.commentsActivated,\n notifActivated: data.notifActivated,\n emailActivated: data.emailActivated,\n videoUrl: data.videoUrl,\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 commentsActivated: data.commentsActivated,\n notifActivated: data.notifActivated,\n emailActivated: data.emailActivated,\n videoUrl: data.videoUrl,\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 commentsActivated: data.commentsActivated,\n notifActivated: data.notifActivated,\n emailActivated: data.emailActivated,\n videoUrl: data.videoUrl,\n ...getSpreadingFormData(data),\n };\n}\n\nexport function getFormDataByContributionType(item, 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 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","import axios from 'axios';\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 (token: string, 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 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 'axios';\nimport { apiUrlBase } from '../../../configuration';\nimport { headers } from './base';\nimport { addPhotoToFormData } from './formData.api';\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\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 = new FormData();\n let newUserData = {\n prenom: userData.firstName,\n nom: userData.lastName,\n serviceid: userData.service + '',\n sitegeoid: userData.geoSite + '',\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 Object.keys(newUserData).forEach((key) => {\n formData.append(key, newUserData[key]);\n });\n\n if (photo !== null) {\n formData.append('files', photo);\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 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 { 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 React, { createRef, useCallback, useEffect, useRef, useState } from 'react';\nimport { KeyboardType, StyleSheet, View } from 'react-native';\nimport ReactQuill, { Quill } from 'react-quill';\nimport 'react-quill/dist/quill.snow.css';\nimport Picker, { EmojiClickData } from 'emoji-picker-react';\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 reactQuill = createRef();\n const containerRef = useRef(null);\n const [openEmoji, setOpenEmoji] = 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 [id, setOpenEmoji]\n );\n\n return (\n \n {openEmoji && }\n \n {containerRef.current && (\n setOpenEmoji(false)}\n value={props.defaultValue ?? ''}\n onChange={props.onChangeText}\n style={styles.quill}\n />\n )}\n \n );\n}\n\nconst styles = StyleSheet.create({\n container: { flex: 1, minHeight: 400 },\n quill: { minHeight: 300, marginBottom: 100 },\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}) {\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 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};\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 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 (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 \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 { WHITE } 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: WHITE,\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 style?: StyleProp;\n};\n\nexport default function SubmitButton({ text, 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';\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');\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';\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 'axios';\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}\n\nexport function getYoutubeIdFromURL(url: string): string | undefined {\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\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 { 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: { url: string }) => 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) => {\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 }: 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';\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: 'white',\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(user.token, 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 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 { 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) {\n try {\n if (item.contributionTypeId != null) {\n let typeFromId = IntToContributionType(item.contributionTypeId);\n if (typeFromId != ContributionType.UNKNOWN) return typeFromId;\n }\n if (item.contributionVente != null && item.contributionVente.length !== 0) return ContributionType.SELL;\n if (item.contributionCovoiturage != null && item.contributionCovoiturage.length !== 0)\n return ContributionType.CARPOOL;\n if (\n item.contributionEvenement != null &&\n item.contributionEvenement.length !== 0 &&\n 0 === item.contributionEvenement[0].type\n // && [null, ContributionEvenementType.EVENT].includes(item.contributionEvenement[0].type)\n )\n return ContributionType.EVENT;\n if (\n item.contributionEvenement != null &&\n item.contributionEvenement.length !== 0 &&\n 1 === item.contributionEvenement[0].type\n )\n return ContributionType.FORMATION;\n if (item.contributionHobbie != null && item.contributionHobbie.length !== 0) return ContributionType.ACTIVITY;\n if (item.contributionObjet != null && item.contributionObjet.length !== 0) return ContributionType.LOST_PROPERTY;\n if (item.contributionService != null && item.contributionService.length !== 0) return ContributionType.MUTUAL_AID;\n if (item.cSondage != null && item.cSondage.length !== 0) return ContributionType.SURVEY;\n if (item.contributionKiosque != null && item.contributionKiosque.length !== 0) return ContributionType.DOCUMENT;\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 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 } 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","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\nfunction 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 { 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 { 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 React, { useEffect, useRef, useState } from 'react';\nimport { Modal, StyleSheet, Text, TouchableOpacity, View, ViewStyle } from 'react-native';\nimport { Worker, Viewer, SpecialZoomLevel, Plugin, RenderViewer, Icon, MinimalButton } from '@react-pdf-viewer/core';\nimport { pageNavigationPlugin, RenderGoToPageProps } from '@react-pdf-viewer/page-navigation';\nimport { PickPhotoOrDocumentResult } from '../../services/utils';\nimport { isString } from 'lodash';\nimport { CloseButton } from './CloseButton';\nimport { match } from 'ts-pattern';\n\nimport '@react-pdf-viewer/core/lib/styles/index.css';\nimport '@react-pdf-viewer/page-navigation/lib/styles/index.css';\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};\n\nexport function Pdf({ source, style, fit, darkBackground, autoPlayDelay, noModal, onAutoPlayEnd }: PdfProps) {\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 pageNavigationPluginInstance = pageNavigationPlugin();\n const { jumpToNextPage: previewJumpToNextPage } = previewPageNavigationPluginInstance;\n const [isPreviewOnLastPage, setIsPreviewOnLastPage] = useState(false);\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 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 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 }}\n />\n \n setModalVisible(false)}>\n \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 setModalVisible(false)} />\n \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 modal: {\n flex: 1,\n backgroundColor: 'rgba(0,0,0,0.5)',\n padding: 40,\n justifyContent: 'center',\n alignItems: 'center',\n },\n pageCounter: {\n width: '100%',\n textAlign: 'center',\n },\n});\n\nfunction 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\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 React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport {\n Image,\n ImageSourcePropType,\n Platform,\n Pressable,\n StyleSheet,\n Text,\n View,\n Linking,\n FlatList,\n TouchableOpacity,\n TouchableWithoutFeedback,\n} from 'react-native';\nimport { AppButton, Type } from './AppButton';\nimport { t } from '../../services/translations';\nimport {\n alertInfo,\n isMobile,\n pickDocument,\n pickPhoto,\n PickPhotoOrDocumentResult,\n takePhoto,\n _compressImage,\n} from '../../services/utils';\nimport { AppModalOverlay } from './AppModalOverlay';\nimport { LIGHT_GRAY, PRIMARY_COLOR, WHITE } from '../../styles/appColor';\nimport AppText, { Mode } from './AppText';\nimport { Asset } from 'expo-asset';\nimport { SearchTextInput } from './SearchTextInput';\nimport { Icon } from '@rneui/base';\nimport FadeInView from './FadeInView';\nimport { FONT_FAMILY_DEFAULT } from '../../styles/globalStyle';\nimport { Pdf } from './Pdf';\n\nexport type PhotoPickerProps = {\n photo: PickPhotoOrDocumentResult | null | undefined;\n defaultPhoto?: ImageSourcePropType;\n images?: {\n file: ImageSourcePropType;\n uri: string;\n id?: string;\n author?: string;\n url?: string;\n }[];\n isLoading?: boolean;\n extraOption?: {\n label: string;\n icon: string;\n onPress: () => void;\n }[];\n allowPdf?: boolean;\n onPress?: (id: string) => void;\n setPhoto: (photo: PickPhotoOrDocumentResult) => void;\n searchImages?: (query: string) => void;\n fetchNext?: () => void;\n};\n\nexport function PhotoPicker({\n photo,\n defaultPhoto,\n images,\n isLoading,\n extraOption,\n allowPdf,\n onPress,\n setPhoto,\n searchImages,\n fetchNext,\n}: 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 interface PhotoPickButtonsProps {\n modalText: string;\n images?: {\n file?: number;\n uri: string;\n id?: string;\n author?: string;\n url?: string;\n }[];\n isLoading?: boolean;\n extraOption?: {\n label: string;\n icon: string;\n onPress: () => void;\n }[];\n allowPdf?: boolean;\n onPress?: (id: string) => void;\n setPhoto: (photo: PickPhotoOrDocumentResult) => void;\n searchImages?: (query: string) => void;\n fetchNext?: () => void;\n}\n\nexport function PhotoPickButtons({\n modalText,\n images,\n isLoading,\n extraOption,\n allowPdf,\n onPress,\n setPhoto,\n searchImages,\n fetchNext,\n}: PhotoPickButtonsProps) {\n const [modalVisible, setModalVisible] = useState(false);\n const [mobileOptionChoiceModal, setMobileOptionChoiceModal] = useState(false);\n\n const options = useMemo(\n () =>\n !isMobile()\n ? [\n {\n label: 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: t('import_image'),\n icon: 'upload',\n onPress: () => {\n pickPhoto()\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: modalText || t('image_bank'),\n icon: 'image',\n onPress: () => {\n setModalVisible(true);\n setMobileOptionChoiceModal(false);\n },\n },\n ],\n []\n );\n\n return (\n <>\n \n {!isMobile() ? (\n options.map((elem) => (\n \n ))\n ) : (\n <>\n setMobileOptionChoiceModal(true)}\n icon=\"image\"\n iconOnTopEdge\n />\n {extraOption?.map((elem) => (\n \n ))}\n \n )}\n \n {!!images && (\n setModalVisible(false)}\n searchImages={searchImages}\n fetchNext={fetchNext}\n />\n )}\n {isMobile() && (\n \n )}\n \n );\n}\n\ntype PhotoPickerModalProps = {\n isVisible: boolean;\n modalText: string;\n images: {\n file: ImageSourcePropType;\n uri: string;\n id?: string;\n author?: string;\n url?: string;\n }[];\n isLoading?: boolean;\n onPress?: (id: string) => void;\n setPhoto: (photo: PickPhotoOrDocumentResult) => void;\n close: () => void;\n searchImages?: (query: string) => void;\n fetchNext?: () => void;\n};\n\nfunction PhotoPickerModal({\n images,\n modalText,\n isVisible,\n isLoading,\n onPress,\n setPhoto,\n close,\n searchImages,\n fetchNext,\n}: PhotoPickerModalProps) {\n const [searchQuery, setSearchQuery] = useState('');\n const [hoveredIndex, setHoveredIndex] = useState(null);\n\n // Initial search with an empty query\n useEffect(() => {\n if (searchImages) {\n searchImages('');\n }\n }, []);\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]);\n\n const handleImagePressed = useCallback(\n (item: { file?: number; uri: string; id?: string; author?: string; url?: string }) => async () => {\n onPress && item.id && onPress(item.id);\n\n if (Platform.OS === 'web') {\n const [result] = await Asset.loadAsync(item.file || item.uri);\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);\n file.uri = result.uri;\n\n setPhoto(file);\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 close();\n },\n [onPress, close]\n );\n\n return (\n \n {modalText}\n \n {searchImages && (\n \n )}\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(item.url || 'https://unsplash.com/?utm_source=Konecteam&utm_medium=referral');\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 );\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 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});\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, { 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';\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 return { label: s.label, value: s.id };\n })}\n displayOnly\n />\n \n \n\n \n \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});\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, isMobile } 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 group: undefined,\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';\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 { View, ViewStyle } from 'react-native';\nimport { ProfilePicture } from './ProfilePicture';\nimport AppText from './AppText';\nimport { combineNames } from '../../services/utils';\nimport React from 'react';\nimport { globalStyle } from '../../styles/globalStyle';\nimport { User } from '../../entities/User';\n\nexport function UserSubRow(props: {\n user: { fichierIdProfil: number; nom: string; prenom: string };\n withPicture?: boolean;\n style?: ViewStyle;\n textColor?: string;\n textSize?: number;\n}) {\n if (props.user == undefined) return <>;\n return (\n \n {props.withPicture ? (\n \n ) : null}\n \n \n {combineNames(props.user)}\n \n \n \n );\n}\n","import { ImageBackground, View, Dimensions, StyleProp, ViewStyle, ImageSourcePropType } 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';\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 {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","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","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 'axios';\nimport { apiUrlBase } from '../../../configuration';\nimport { headers } from './base';\nimport { addPhotoToFormData, getSpreadingFormData } from './formData.api';\nimport { PickPhotoOrDocumentResult } from '../utils';\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\nfunction CreateFormDataCompanyNews(photo: PickPhotoOrDocumentResult, body: any) {\n const data = objectToFormData(body);\n\n if (photo !== undefined && photo !== null && photo.fileName !== null) {\n addPhotoToFormData(photo, data);\n }\n\n return data;\n}\n\nexport const postCompanyNews = (\n user: UserSaved,\n data: CompanyNewsUpload,\n photo: PickPhotoOrDocumentResult | undefined\n) => {\n const body = objectToFormData({ ...data, visibleZone: false });\n if (photo !== undefined && photo !== null && photo.fileName !== null) {\n addPhotoToFormData(photo, body);\n }\n\n return axios.post(`${apiUrlBase}mactu/mactu`, body, { headers: headers(user.token, 'multipart/form-data') });\n};\n\nexport const putCompanyNews = (\n user: UserSaved,\n id: number,\n data: CompanyNewsUpload,\n photo: PickPhotoOrDocumentResult | undefined\n) => {\n const body = objectToFormData({ ...data, visibleZone: false });\n\n if (photo !== undefined && photo !== null && photo.fileName !== null) {\n addPhotoToFormData(photo, body);\n }\n\n return axios.put(`${apiUrlBase}mactu/mactu/update/${id}`, body, {\n headers: headers(user.token, 'multipart/form-data'),\n });\n};\n\nexport function publishNews(data: CompanyNewPostData, photo: PickPhotoOrDocumentResult) {\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 videoUrl: data.videoUrl,\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 try {\n return axios.post(apiUrlBase + 'mactu/mactu', CreateFormDataCompanyNews(photo, body), {\n headers: headers(data.user.token, 'multipart/form-data'),\n });\n } catch (e) {}\n}\n\nexport function updateNews(id: number, data: CompanyNewPostData, photo: PickPhotoOrDocumentResult) {\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 videoUrl: data.videoUrl,\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 return axios.put(apiUrlBase + 'MActu/mactu/update/' + id, CreateFormDataCompanyNews(photo, body), {\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 'axios';\nimport { apiUrlBase } from '../../../configuration';\nimport { headers } from './base';\nimport { addPhotoToFormData, getSpreadingFormData } from './formData.api';\nimport { EventPostData } from '../../models/Contribution';\nimport { objectToFormData } from '../formUtil';\nimport { UserSaved } from '../storage';\n\nfunction CreateFormDataEvent(photo, users, body) {\n const data = objectToFormData(body);\n\n if (photo !== null && photo.fileName !== null) {\n addPhotoToFormData(photo, data);\n }\n return data;\n}\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: any, photo: any) {\n let _users = users !== undefined && users !== null ? [...users] : [];\n\n return axios.post(\n apiUrlBase + 'Contributions/event',\n CreateFormDataEvent(photo, _users, {\n userId: item.userId,\n entrepriseId: item.companyId,\n type: 'Evenement',\n titre: item.title,\n description: item.description,\n date: item.date,\n videoUrl: item.videoUrl,\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 headers: headers(token, 'multipart/form-data'),\n }\n );\n}\n\nexport function updateEvent(id, item: EventPostData, token, users, photo) {\n let _users = users !== undefined && users !== null ? [...users] : [];\n\n return axios.put(\n apiUrlBase + 'Contributions/event/update/' + id,\n CreateFormDataEvent(photo, _users, {\n userId: item.userId,\n entrepriseId: item.companyId,\n type: 'Evenement',\n titre: item.title,\n description: item.description,\n date: item.date,\n videoUrl: item.videoUrl,\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 headers: headers(token, 'multipart/form-data'),\n }\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 getEventExportPdfUrl(user: UserSaved, id: number) {\n return `${apiUrlBase}ContributionEvenements/pdf/${id}?access_token=${user.token}`;\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) return response.data;\n else return null;\n });\n}\n","import axios from 'axios';\nimport { apiUrlBase } from '../../../configuration';\nimport { headers } from './base';\nimport { addPhotoToFormData, getSpreadingFormData } from './formData.api';\nimport { EventPostData } from '../../models/Contribution';\nimport { objectToFormData } from '../formUtil';\nimport { UserSaved } from '../storage';\n\nfunction CreateFormDataTraining(photo, users, body) {\n const data = objectToFormData(body);\n\n if (photo !== null && photo.fileName !== null) {\n addPhotoToFormData(photo, data);\n }\n return data;\n}\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, photo: any) {\n let _users = users !== undefined && users !== null ? [...users] : [];\n\n return axios.post(\n apiUrlBase + 'Contributions/training',\n CreateFormDataTraining(photo, _users, {\n userId: item.userId,\n entrepriseId: item.companyId,\n type: 'Evenement',\n titre: item.title,\n description: item.description,\n date: item.date,\n videoUrl: item.videoUrl,\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 headers: headers(token, 'multipart/form-data'),\n }\n );\n}\n\nexport function updateTraining(id, item: EventPostData, token, users, photo) {\n let _users = users !== undefined && users !== null ? [...users] : [];\n\n return axios.put(\n apiUrlBase + 'Contributions/training/update/' + id,\n CreateFormDataTraining(photo, _users, {\n userId: item.userId,\n entrepriseId: item.companyId,\n type: 'Formation',\n titre: item.title,\n description: item.description,\n date: item.date,\n videoUrl: item.videoUrl,\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 headers: headers(token, 'multipart/form-data'),\n }\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) return response.data;\n else return null;\n });\n}\n","import axios from 'axios';\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 { addPhotoToFormData, 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 postWithPhoto(url: string, formData, photo, token: string) {\n if (photo !== null && photo.fileName !== null) {\n addPhotoToFormData(photo, formData);\n }\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 post(url: string, body: { [key: string]: any }, token: string) {\n return axios.post(url, body, {\n headers: headers(token),\n });\n}\n\nasync function put(url: string, body: { [key: string]: any }, token: string) {\n return axios.put(url, body, {\n headers: headers(token),\n });\n}\n\nasync function putWithPhoto(url, formData, photo, token) {\n if (photo !== null && photo.fileName !== null) {\n addPhotoToFormData(photo, formData);\n }\n\n return axios\n .put(url, formData, {\n headers: photo === null ? headers(token) : headers(token, 'multipart/form-data'),\n })\n .then((response) => response.data.json);\n}\n\nexport async function sendContribution(item, token, users, photo, contributionType: ContributionType) {\n if (contributionType === ContributionType.EVENT) {\n return sendEvent(item, token, users, photo);\n }\n if (contributionType === ContributionType.FORMATION) {\n return sendTraining(item, token, users, photo);\n }\n if (contributionType === ContributionType.COMPANY_NEWS) {\n return publishNews({ ...item }, photo);\n }\n\n let newUserData = getFormDataByContributionType(item, contributionType);\n\n const newUserFormData = objectToFormData(newUserData);\n\n if (contributionType === ContributionType.MUTUAL_AID) {\n return postWithPhoto(\n apiUrlBase + 'Contributions/' + _postPrefixByContributionType(contributionType),\n newUserFormData,\n photo,\n token\n );\n }\n if (contributionType === ContributionType.CARPOOL) {\n return post(apiUrlBase + 'Contributions/' + _postPrefixByContributionType(contributionType), newUserData, token);\n } else {\n return postWithPhoto(\n apiUrlBase + 'Contributions/' + _postPrefixByContributionType(contributionType),\n newUserFormData,\n photo,\n token\n );\n }\n}\n\nexport async function sendUpdateContribution(\n id: number,\n item,\n token: string,\n users,\n photo,\n contributionType: ContributionType\n) {\n if (contributionType === ContributionType.EVENT) {\n return updateEvent(id, item, token, users, photo);\n }\n if (contributionType === ContributionType.FORMATION) {\n return updateTraining(id, item, token, users, photo);\n }\n if (contributionType === ContributionType.COMPANY_NEWS) {\n return updateNews(id, item, photo);\n }\n\n let newUserData = getFormDataByContributionType(item, contributionType);\n const newUserFormData = objectToFormData(newUserData);\n\n if (contributionType === ContributionType.MUTUAL_AID) {\n return putWithPhoto(\n apiUrlBase + 'Contributions/' + _postPrefixByContributionType(contributionType) + '/update/' + id,\n newUserFormData,\n photo,\n token\n );\n }\n\n if (contributionType === ContributionType.CARPOOL) {\n return put(\n apiUrlBase + 'Contributions/' + _postPrefixByContributionType(contributionType) + '/update/' + id,\n newUserData,\n token\n );\n } else {\n let formData = newUserFormData;\n\n return putWithPhoto(\n apiUrlBase + 'Contributions/' + _postPrefixByContributionType(contributionType) + '/update/' + id,\n formData,\n photo,\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 } from 'react';\nimport { 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 HorizontalFlatList from '../containers/HorizontalList';\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 inline?: boolean;\n chipStyle?: StyleProp;\n};\n\nexport default function SpreadingChipList({ item, monocolor, inline, chipStyle }: SpreadingChipListProps) {\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 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 {inline !== true ? (\n \n item}\n renderItem={({ item }) => (\n \n )}\n />\n \n ) : (\n spreadingItems.map((item) => (\n \n ))\n )}\n \n );\n}\n\nconst styles = StyleSheet.create({\n chip: {\n margin: 5,\n },\n});\n","import { Dimensions, Image, ImageBackground, 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';\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 />\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};\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 {props.overlayContent}\n \n \n\n \n \n {props.title}\n \n {props.labelContent}\n \n \n {!!mediaLogo && }\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 />\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 {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 style = 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});\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 'axios';\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 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';\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';\n\nexport function CompanyNewsAdministrationRoute(props) {\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 { 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((response) => {\n dispatch(setContributionsListNeedsRefresh(true));\n refresh();\n })\n .catch((e) => {\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 />\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 { 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 />\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';\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 'axios';\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';\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(user.token, 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, { useEffect, useState } from 'react';\nimport { ImageSourcePropType, StyleSheet, View } from 'react-native';\nimport useUnsplash from '../../hooks/useUnsplash';\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 { images, isLoading, notifyImageDownload, searchImages, fetchNext } = useUnsplash();\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 images={images}\n isLoading={isLoading}\n extraOption={[\n {\n label: t('choose_a_video'),\n icon: 'video',\n onPress: () => setShowVideoPopup(true),\n },\n ]}\n allowPdf={allowPdf}\n onPress={notifyImageDownload}\n searchImages={searchImages}\n fetchNext={fetchNext}\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 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};\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 = 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 setImages((old) => {\n const newArr = [...old];\n newArr.splice(page * 10, 10, ...images);\n\n return newArr;\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 searchForUnsplash(query, 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 }, []);\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(\n 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 [unsplashAccessKey]\n );\n\n return {\n images,\n isLoading,\n notifyImageDownload,\n searchImages,\n fetchNext,\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, { 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 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, { useState } from 'react';\nimport { ImageSourcePropType, 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 PhotoField from '../../../../components/atomic/formik/PhotoField';\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';\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 defaultPhoto?: ImageSourcePropType | undefined;\n};\n\nexport default function SurveyFormFields({ isEditing, defaultPhoto }: 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 'axios';\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';\nimport { getPictureURI } from '../../../../services/api/helper.api';\nimport { surveyImage } from '../../../../services/assets';\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,\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 useEffect(() => {\n if (isError || mutation.isError) {\n alertInfo(t('error_occurred'));\n }\n }, [isError || mutation.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 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, { 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 PickPhotoOrDocumentResult,\n sendSuccessText,\n} from '../../../services/utils';\nimport { AppListSwitch } from '../../../components/atomic/AppListSwitch';\nimport { getContributionImageSource } from '../../../services/api/helper.api';\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 { formatDistanceStrict } from 'date-fns';\nimport { match } from 'ts-pattern';\nimport { DrawerScreenProps } from '@react-navigation/drawer';\nimport PhotoFormField from '../../../components/containers/PhotoFormField';\nimport useLoggedUser from '../../../hooks/useLoggedUser';\nimport UpdateSurveyScreen from './survey/UpdateSurveyScreen';\nimport FontAwesome6 from 'react-native-vector-icons/FontAwesome6';\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 [photo, setPhoto] = useState(null);\n const [originalPictureId, setOriginalPictureId] = useState(route.params?.pictureId);\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 [videoUrl, setVideoUrl] = 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 [originalFilename, setOriginalFilename] = useState(undefined);\n const [documentTag, setDocumentTag] = useState('');\n const [initialPickedUsers, setInitialPickedUsers] = useState(new Set());\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 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 if (contributionType === ContributionType.COMPANY_NEWS) setOriginalPictureId(dataContent.imageId);\n else setOriginalPictureId(dataContent.fichierIdPhoto);\n setPhoto(null);\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) => e.userId) ?? []);\n setServices(dataContent?.contribution?.entrepriseServices.map((e) => e.entrepriseServiceId) ?? []);\n setGeoSites(dataContent?.contribution?.entrepriseSiteGeos.map((e) => e.entrepriseSiteGeoId) ?? []);\n setGroups(dataContent?.contribution?.entrepriseGroups.map((e) => e.entrepriseGroupId) ?? []);\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 setInitialPickedUsers(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 setPhoto(null);\n setTitle('');\n setDescription('');\n setOriginalPictureId(undefined);\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 setInitialPickedUsers([]);\n setAnonymous(false);\n setDueDate(undefined);\n setAnswers([['', '']]);\n setQuestions(['']);\n setOriginalFilename(undefined);\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 videoUrl,\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 photo,\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 videoUrl,\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 photo,\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 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","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, removeAccentsAndLower } 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(\n items.filter((ev) => removeAccentsAndLower(ev.titre).includes(removeAccentsAndLower(search))),\n (item) => format(new Date(item.date), 'eeee d MMMM yyyy', { locale })\n ).map((data) => ({\n title: format(new Date(data[0].date), 'eeee d MMMM yyyy', { locale }),\n data,\n })),\n [items, search, 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 'axios';\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';\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 from 'react';\nimport { Image } from 'react-native';\nimport { AppModalOverlay } from './AppModalOverlay';\nimport { isMobile } from '../../services/utils';\n\nexport function AppModalGallery(props: { onBackdropPress: () => void; isVisible: boolean; imageSource: any }) {\n if (!props.isVisible) return null;\n return (\n \n \n \n );\n}\n","import React from 'react';\nimport { View } from 'react-native';\nimport { MediaComponent, SplitMedia } from '../../utils/Medias';\n\nexport interface MediaProps {\n media: string;\n}\n\nconst Media = ({ media }: MediaProps) => {\n const [mediaName, url] = SplitMedia(media);\n\n return (\n \n {MediaComponent(mediaName, url)}\n \n )\n}\n\nexport default Media;","import axios from 'axios';\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 React, { ReactNode, useState } from 'react';\nimport { TouchableOpacity, View, Dimensions, Platform, Image } from 'react-native';\nimport { isMobile, responsiveStyle } from '../../services/utils';\nimport { BackButton } from '../atomic/BackButton';\nimport { AppModalGallery } from '../atomic/AppModalGallery';\nimport { ResponsiveView } from './ResponsiveView';\nimport { ResponsiveRow } from './ResponsiveRow';\nimport { ResponsiveColumn } from './ResponsiveColumn';\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';\nimport Media from './Media';\nimport { getContributionImageSource, getDocumentURI } from '../../services/api/helper.api';\nimport { ContributionType } from '../../types';\nimport { Pdf } from '../atomic/Pdf';\nimport { useQuery } from '@tanstack/react-query';\nimport { getFileDetails } from '../../services/api/file.api';\nimport useLoggedUser from '../../hooks/useLoggedUser';\nimport { SafeAreaProvider, SafeAreaView } from 'react-native-safe-area-context';\n\nexport function ContentWithImageHeaderScreen(props: {\n contribution: {\n imageId?: number | null | undefined;\n documentId?: number | null | undefined;\n videoUrl?: string | null | undefined;\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 [zoomableImageVisible, setZoomableImageVisible] = useState(false);\n const user = useLoggedUser();\n\n const imageStyle = responsiveStyle(\n {\n width: '100%',\n height: isMobile() ? Dimensions.get('window').width - 50 : 300,\n marginBottom: 0,\n top: 0,\n },\n {\n width: 540,\n height: 540,\n marginTop: 10,\n marginLeft: 10,\n borderRadius: 20,\n }\n );\n\n const documentStyle = responsiveStyle(\n {\n width: '100%',\n marginBottom: 0,\n top: 0,\n },\n {\n width: 540,\n marginTop: 10,\n marginLeft: 10,\n borderRadius: 20,\n }\n );\n\n // Get document informations if needed\n const { data: documentDetails } = useQuery(\n ['document', props.contribution.documentId],\n async () => {\n if (props.contribution.documentId) {\n return await getFileDetails(user, props.contribution.documentId);\n }\n },\n {\n enabled: !!props.contribution.documentId,\n }\n );\n\n return (\n \n \n \n \n \n {props.imageContentOverride ? (\n \n {props.imageContentOverride}\n \n ) : props.contribution.videoUrl ? (\n \n ) : props.contribution.documentId && documentDetails?.format === 'application/pdf' ? (\n \n ) : (\n setZoomableImageVisible(true)}>\n \n \n )}\n {props.underImageContent}\n \n {props.children}\n \n {props.bottomContent}\n \n \n setZoomableImageVisible(false)}\n imageSource={getContributionImageSource(props.contribution.imageId, props.contributionType)}\n />\n \n \n );\n}\n","import axios from 'axios';\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 'axios';\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 { 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: 'white',\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, 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","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';\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 )\n }\n underImageContent={\n <>\n {!isAnonymous(typedData, contributionType) && (\n \n \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 inline={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 userContainer: {\n flexDirection: 'row',\n paddingTop: 10,\n paddingLeft: 10,\n paddingRight: 10,\n width: isMobile() ? undefined : 540,\n },\n userSubRow: {\n flex: 1,\n },\n userName: { width: isMobile() ? undefined : 200, textAlign: 'right' },\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';\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 {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 'axios';\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 });\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';\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 'axios';\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 { AppScreen } 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 } 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 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';\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';\n\nconst Stack = createStackNavigator();\n\nexport function ValidationMapAdministrationRoute() {\n return (\n \n \n \n \n );\n}\n","import axios from 'axios';\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 'axios';\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, WHITE } 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: WHITE,\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, WHITE } 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: WHITE,\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 } 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, isMobile } 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, LIGHT_GRAY, PRIMARY_COLOR, WHITE } 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: WHITE,\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 { 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';\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 { WHITE } 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: WHITE,\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, WHITE } 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: WHITE,\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 { useEffect } from 'react';\nimport { ScrollView, StyleSheet, View } 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 { WHITE } 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: WHITE,\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 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, WHITE } 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);\n\n const {\n data,\n isLoading: isLoadingDetails,\n isFetched,\n isError,\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: WHITE,\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';\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 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 { 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';\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 \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 { ImageSourcePropType, 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 PhotoField from '../../../../components/atomic/formik/PhotoField';\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';\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 defaultPhoto: ImageSourcePropType | undefined;\n};\n\nexport default function NewsFormFields({ isEditing, defaultPhoto }: 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 {\n alertInfo,\n hasSubAdminRight,\n isAdmin,\n PickPhotoOrDocumentResult,\n sendSuccessText,\n} 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 { newsImage } from '../../../../services/assets';\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, (body.image as PickPhotoOrDocumentResult | null) || undefined);\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, isMobile } 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\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 \n \n setShowInterestedUserList(!showInterestedUserList)}>\n \n \n {showInterestedUserList && }\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});\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 'axios';\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';\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: 'white' },\n mobile: { flex: 1, paddingBottom: !isMobile() ? 60 : 0, backgroundColor: 'white' },\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 } 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: 'white',\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';\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: '#ffffff',\n flex: 1,\n width: '40vw' as DimensionValue,\n }\n : {\n paddingTop: 16,\n backgroundColor: '#ffffff',\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 { 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';\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\nfunction 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 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';\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: '#ffffff',\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';\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: 'white',\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 'axios';\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';\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 };\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 { Image, StyleSheet, TouchableOpacity, View } from 'react-native';\nimport Feather from 'react-native-vector-icons/Feather';\nimport { getPictureSource, isAnonymous } from '../../services/api/helper.api';\nimport { FONT_FAMILY_DEFAULT } from '../../styles/globalStyle';\nimport { DARK_GRAY, PRIMARY_COLOR } from '../../styles/appColor';\nimport { ContributionType } from '../../types';\nimport { getReadableDate } from '../../services/utils';\nimport AppText from './AppText';\nimport { UserSubRow } from './UserSubRow';\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 defaultFilename?: string | undefined;\n};\n\nexport default function FolderFormFields({ isEditing, defaultFilename }: 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 backgroundColor: 'red',\n }}\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';\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 />\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 { ImageSourcePropType } 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 PhotoField from '../../../../components/atomic/formik/PhotoField';\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';\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 defaultPhoto?: ImageSourcePropType | undefined;\n};\n\nexport default function CustomModuleContributionFormFields({\n customModuleIdentifier,\n isEditing,\n defaultPhoto,\n}: CustomModuleContributionFormFieldsProps) {\n return (\n \n \n \n \n \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 { 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 />\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 { getPictureURI } from '../../../../services/api/helper.api';\nimport { newsImage } from '../../../../services/assets';\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 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';\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 { 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 title={t('who_can_see')}\n />\n {!!data.contribution?.commentsActivated && }\n \n )}\n \n );\n}\n","import axios from 'axios';\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';\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}\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 {\n alertInfo,\n hasSubAdminRight,\n isAdmin,\n PickPhotoOrDocumentResult,\n sendSuccessText,\n} 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 { getContributionImageSource } from '../../../../services/api/helper.api';\n\ntype ScreenProps = DrawerScreenProps;\n\nexport function getInitialValuesFromData(\n data: MActuPostDetails\n): Omit {\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 imageId: data.imageId,\n documentId: data.documentId,\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, (body.image as PickPhotoOrDocumentResult | null) || undefined);\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 {\n alertInfo,\n hasSubAdminRight,\n isAdmin,\n PickPhotoOrDocumentResult,\n sendSuccessText,\n} 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';\nimport { getContributionImageSource } from '../../../../services/api/helper.api';\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, (body.image as PickPhotoOrDocumentResult | null) || undefined);\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, 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} 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';\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 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 }}\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.ContributionOrganigrame, () => 8)\n .with(ModuleEnum.ContributionObjet, () => 9)\n .with(ModuleEnum.ContributionSondage, () => 10)\n .with(ModuleEnum.ContributionBoiteIdee, () => 11)\n .with(ModuleEnum.ContributionKiosque, () => 12)\n .with(ModuleEnum.UserDirectory, () => 13)\n .with(ModuleEnum.EmergencySms, () => 14)\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 group: data?.entrepriseGroups[0]?.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';\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 (values: any) => {\n navigation.goBack();\n dispatch(setDirectoryListNeedsRefresh(true));\n }, []);\n\n return (\n \n \n
{}} initialValues={{}}>\n \n \n \n \n
\n
\n
\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';\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, t } 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';\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, [627], () => (__webpack_require__(43672)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["apiUrlBase","urlBase","googlePlayUrl","apiTimeZone","unsplashAccessKey","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","headers","token","contentType","Accept","Authorization","objectToFormData","data","formData","FormData","hasOwnProperty","appendFormData","root","Blob","append","Date","toISOString","Set","arrayData","Array","from","isArray","Object","uri","type","name","emailRegex","getMessagingThreads","_x","_x2","_x3","_getMessagingThreads","apply","arguments","_asyncToGenerator","user","cursor","search","axios","then","response","status","getMessagingThreadMessages","_x4","_x5","_x6","_getMessagingThreadMessages","threadId","_getThreadIdByContactId","contactId","_getThreadMembers","_getUnseenMessageCount","_postNewThread","body","_objectSpread","_postThreadMessage","catch","error","_markThreadAsSeen","_deleteMessagingThread","defaultThreadMessageState","messages","nextCursor","isLoading","members","_messagingMessageReceived","dispatch","message","payload","_messagingThreadSeenReceived","userId","date","_fetchUnseenMessagingMessageCount","result","_x11","getUnseenMessageCount","_markMessagingThreadAsSeen","unseenMessageCount","_x18","_x19","markThreadAsSeen","_fetchNextMessagingThreads","searchFilter","threads","_resetMessagingThreads","_fetchNextMessagingThreadMessages","_resetMessagingThreadMessages","_sendNewMessagingMessage","identifier","_x15","_x16","_x17","postThreadMessage","fetchMessagingThreadMembers","_x31","_x32","_x33","_fetchMessagingThreadMembers","_x9","_x10","getThreadMembers","_x20","_x21","apiDeleteMessagingThread","setUser","_getMinimumVersion","_fetchMinimumApiVersion","getMinimumVersion","initialState","contributions","isPhoneMode","messaging","threadMessages","version","minimumVersion","createStore","state","undefined","action","detailContributionType","isNotif","forceBack","currentContribution","contributionsListNeedsRefresh","validationMapListNeedsRefresh","contributeursListNeedsRefresh","directoryListNeedsRefresh","match","with","otherwise","userReducer","_state$messaging$thre","_state$messaging$thre2","_state$messaging$thre3","map","e","id","lastMessage","content","seen","unseenCount","_defineProperty","profileFileId","firstName","lastName","fileId","dateCreated","concat","_toConsumableArray","_state$messaging$thre4","_state$messaging$thre5","lastSeen","thread","find","other","_state$messaging$thre6","_objectSpread7","_action$messages$","_state$messaging$thre7","fichierIdProfil","prenom","nom","isNaN","utcToZonedTime","zonedTimeToUtc","Localization","timezone","getTime","messagingReducer","versionReducer","PRIMARY_COLOR","PRIMARY_COLOR_LIGHT","PRIMARY_COLOR_DARKEN","SECONDARY_COLOR","LIGHT_GRAY","GRAY","SMOKE_WHITE","WHITE","DARK_GRAY","FORM_LIGHT_GRAY","ALERT_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","setDetailContributionType","contributionType","setIsNotif","notif","setForceBack","setCurrentContribution","contribution","setPhoneMode","setLoading","setContributionsListNeedsRefresh","value","setValidationMapListNeedsRefresh","setContributeurListNeedsRefresh","setDirectoryListNeedsRefresh","getSingleUserSubAdmins","_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","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","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","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","_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","ct","UNKNOWN","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","disabled","_jsxs","LinearGradient","start","x","y","end","icon","View","iconOnTopEdge","FontAwesome6","size","marginLeft","marginRight","textAlign","textTransform","textStyle","megabyte","FilePicker","_props$allowedExtensi2","_props$allowedExtensi3","_useState","useState","_useState2","_slicedToArray","setError","_pickFile2","DocumentPicker","canceled","Error","fileResult","assets","maxSizeMB","nameParts","split","fileType","allowedExtensions","toLowerCase","file","setFile","fileToUpload","defaultFilename","_Fragment","_props$allowedExtensi","types","join","exhaustive","isMailValid","email","test","toString","openURL","url","window","open","forceURLPrefix","PROTOCOL_WHITELIST","startsWith","isMobile","isAdmin","lovIdType","hasSubAdminRight","services","sitegeo","groups","_user$userSubAdmins","_user$userSubAdmins2","_user$userSubAdmins3","_user$userSubAdmins4","userSubAdmins","entrepriseGroupId","entrepriseServiceId","entrepriseSiteGeoId","subAdminGroupIds","a","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","isLessThanTheMB","fileSize","smallerThanSizeMB","pickPhoto","_pickPhoto","sizeLimit","ImagePicker","launchImageLibraryAsync","mediaTypes","Images","allowsEditing","aspect","quality","base64","fileInfo","compressedResult","blob","fetch","r","metadata","lastModified","now","File","pickDocument","_pickDocument","sizeLimitMB","fileName","mimeType","takePhoto","_takePhoto","launchCameraAsync","newPhoto","Promise","resolve","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","getReadableTime","sendSuccessText","hasRights","_user$aspNetUsers","_user$portable","_user$telephone","hasEmail","hideEmail","aspNetUsers","hasPortable","hidePhone","portable","hasPhone","telephone","includes","navigationRef","React","isDateValid","iso","responsiveStyle","smallScreenStyle","bigScreenStyle","alertInfo","Alert","alert","latitude","coordinates","Number","longitude","addPhotoToFormData","photo","getSpreadingFormData","users","entrepriseServiceIds","entrepriseSiteGeoIds","siteGeos","entrepriseGroupIds","spreadingType","getFormDataEvent","entrepriseId","companyId","cagnotte","moneyPool","place","availableSeats","visibleZone","nomCreateur","commentsActivated","notifActivated","emailActivated","videoUrl","getFormDataByContributionType","newUserData","prix","price","marque","brand","getFormDataActivity","userIdCreateur","service","getFormDataMutualAid","covoit","libelleDepart","adresseDepart","startCoordinates","libelleArrivee","adresseArrivee","endCoordinates","lovIdOffre","permanent","getFormDataCarPool","location","lost","getFormDataLostProperty","language_mapping","libelle","getIdFromCode","getLibelleFromCode","NEWS_TRANSLATION_ENABLED","NEWS_PUBLICATION_MODE_ENABLED","NEWS_INTERESTS_ENABLED","ALL_CONTRIBUTIONS_BROADCAST_ENABLED","authUrl","logout","Storage","AsyncStorage","removeItem","forgetToken","ErrorReason","_getAuthenticationMode","login","_login","username","password","MAIL_NOT_VALIDATED","userData","getUserProfile","err","_err$response","INVALID_CREDENTIALS","UNKNOWN_ERROR","register","_x7","_x8","_register","emailAddress","hasCGUBeenApproved","hasRGDPConsent","Email","MotDePasse","CGU","RGPD","ACCOUNT_ALREADY_EXISTS","_registerWithCompanyCode","Code","json","_generateValidationCode","mail","validate","_validate","validationCode","_checkCompanyCode","INVALID_COMPANY_CODE","resetPasswordSendCode","_resetPasswordSendCode","_resetPassword","newPassword","_getMe","_searchUsers","query","encodeURIComponent","_getCompanyUsers","_user$entreprise","getCompanyUsersFromCompanyId","entreprise","_getCompanyUsersFromCompanyId","_getUsersByIds","ids","_removeUser","userName","_x12","_getUserProfile","_createUserProfile","_userData$birthDate","_userData$seniorityDa","serviceid","sitegeoid","geoSite","fonction","jobTitle","JSON","stringify","landlineNumber","mobileNumber","birthDate","seniorityDate","langueId","dateSend","languageCode","keys","forEach","EMAIL_ALREADY_REGISTERED","_updateUserProfile","hasAcceptedCGU","_putNewPassword","previousPassword","currentPassword","_acceptCGU","removeAccount","loadAppState","_JSON$parse","fetchMinimumApiVersion","storedUser","getItem","parse","fetchUserData","_fetchUserData","getMe","saveToken","setItem","saveLanguage","retrievedSavedLanguage","useLoggedUser","useSelector","HypertextLink","_objectWithoutProperties","_excluded","Space","Space1","Space2","Space3","AppTextInput","textLength","filledField","setFilledField","localInputRef","useRef","keyboardDidHideCallback","useCallback","_localInputRef$curren","autoFocus","current","blur","useEffect","focus","keyboardDidHideSubscription","Keyboard","addListener","remove","variant","TextInput","ref","autoCapitalize","keyboardType","placeholder","multiline","onFocus","editable","displayOnly","secureTextEntry","defaultValue","onChangeText","maxLength","onSubmitEditing","onSelectionChange","selection","selectionPosition","onBlur","placeholderTextColor","mandatory","styles","errorMessage","lengthText","Link","Quill","import","builtInFunc","sanitize","linkValueInput","call","this","getId","AppRTEEditor","_props$defaultValue","reactQuill","createRef","containerRef","openEmoji","setOpenEmoji","_useState3","_useState5","setRefresh","interval","setInterval","clearInterval","onEmojiClick","_quill$getSelection$i","_quill$getSelection","quill","getEditor","getSelection","index","getLength","insertText","emoji","Toolbar","className","onClick","prev","Picker","ReactQuill","formats","bounds","modules","toolbar","onChange","digits2","digit","AppDateTimePicker","day","formattedDate","getDate","month","getMonth","year","getFullYear","dateValue","timeValue","getHours","getMinutes","dateInput","createElement","syntheticEvent","target","newDate","setDate","setMonth","setFullYear","timeInput","timeText","setHours","FormField","TextFormField","NumberFormField","_ref2","rest","_excluded2","setText","_useState4","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","selectedValue","Item","FormFieldPicker","opacity","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","display","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","Yup","min","required","forceRefresh","useDispatch","authenticationMode","setAuthenticationMode","_useState6","setIsLoading","_useState7","_useState8","webViewUrl","setWebViewUrl","values","formikHelpers","setFieldError","formik","useFormik","initialValues","onSubmit","validationSchema","validateOnMount","fetchAuthenticationMode","getAuthenticationMode","EmailAndPassword","Sso","redirectToAuthenticateWithSso","FormikContext","Provider","setFieldValue","languagePicker","navigation","navigate","Modal","Header","leftComponent","Icon","leftContainerStyle","headingLeftContainer","WebView","onNavigationStateChange","asyncFunction","_ref3","useDeviceSize","screenWidth","useWindowDimensions","deviceSize","useMemo","isSmallDevice","isMediumDevice","isLargeDevice","isSmallMediumDevice","mobileBackground","TwoColumnsLayout","isInCompactMode","column1","background","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","_useState9","_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","_x14","registerWithCompanyCode","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","matches","_useMutation","useMutation","mutationFn","_mutationFn","onError","mutateAsync","when","_x23","_x24","_x25","resetPassword","onSuccess","Stack","createStackNavigator","GuestRoute","Navigator","screenOptions","headerShown","headerBackImage","Screen","component","options","sellImage","activityImage","mutualAidImage","carPoolImage","eventImage","lostPropertyImage","surveyImage","suggestionImage","newsImage","documentImage","headerBackgroundPopup","genericBackground","genericBackgroundHeader","teams","slack","googleChat","youtube","qrcodeStoreImage","DefaultBackground","imageStyle","AppScreen","header","paddingHorizontal","headerStyle","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","mediaInfo","isMedia","Youtube","src","defaultProfilePic","getPictureURI","pictureId","getPictureSource","getDocumentURI","_getPrefixByContributionType","urlPrefixType","_postPrefixByContributionType","getContributionImageSource","typedData","isAnonymous","anonyme","ProfilePicture","borderStyle","AppModalOverlay","Overlay","overlayStyle","defaultOverlay","ModalComponent","onBackdropPress","isVisible","TwoActionsGenericPopup","visible","setVisible","button1Title","onPressButton1","onPressButton2","Header2","ResponsiveView","windowWidth","Dimensions","get","breakpoint","ResponsiveRow","ResponsiveColumn","first","ProfileScreen","_companyServices$filt","_companyGeoSites$filt","_companyGroups$filter","companyServices","setCompanyServices","companyGeoSites","setCompanyGeoSites","companyGroups","setCompanyGroups","companyServicePromise","companyGeoSitesPromise","companyGroupsPromise","all","entrepriseGroups","reverse","paddingRight","ScrollView","SECONDARY","button2Title","logoFile","ProfileRow","_props$user$userSubAd","_props$user$userSubAd2","userSaved","_allowEdit","allowEdit","sendRecoveryEmail","showAdminTag","lineHeight","simple","dateInscription","flexGrow","small","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","offset","_ref$current2","Chip","subtext","disable","selected","inverted","minWidth","getDataContentByType","vente","hobbie","getTitleByType","contributionHobbie","contributionService","contributionCovoiturage","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","loggedUser","useQuery","companySiteGeos","headerContainer","searchInput","_filters$services3","chip","_filters$services","_filters$services2","_filters$siteGeos3","_filters$siteGeos","_filters$siteGeos2","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","hasLicenceLostProperty","_user$entreprise9","hasLicenceSurvey","_user$entreprise11","hasLicenceSuggestion","_user$entreprise12","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","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","FadeInView","fadeAnim","Value","timing","toValue","useNativeDriver","CloseButton","Pdf","fit","darkBackground","autoPlayDelay","noModal","onAutoPlayEnd","viewerRef","modalVisible","setModalVisible","setBase64","disableScrollPluginInstance","disableScrollPlugin","previewPageNavigationPluginInstance","pageNavigationPlugin","pageNavigationPluginInstance","previewJumpToNextPage","jumpToNextPage","isPreviewOnLastPage","setIsPreviewOnLastPage","GoToNextPage","GoToPreviousPage","page","setPage","totalPage","setTotalPage","isString","reject","reader","FileReader","onload","readAsDataURL","onerror","timeout","clearTimeout","Viewer","plugins","onDocumentLoad","doc","numPages","defaultScale","SpecialZoomLevel","ActualSize","PageFit","PageWidth","onPageChange","currentPage","transparent","onRequestClose","modal","pdfContainer","horizontalContainer","MinimalButton","d","pageCounter","PdfProvider","Worker","workerUrl","renderViewer","_props$pageSizes$","_props$pageSizes$2","_props$containerRef","_props$containerRef$c","slot","pageWidth","pageSizes","pageHeight","pageRatio","containerWidth","clientWidth","attrs","subSlot","maxHeight","PhotoPicker","defaultPhoto","images","extraOption","allowPdf","setPhoto","searchImages","fetchNext","photoUri","URL","createObjectURL","document","image","PhotoPickButtons","modalText","mobileOptionChoiceModal","setMobileOptionChoiceModal","buttonContainer","elem","PhotoPickerModal","close","MobileOptionChoiceModal","searchQuery","setSearchQuery","hoveredIndex","setHoveredIndex","handleImagePressed","_yield$Asset$loadAsyn","Asset","loadAsync","paddingVertical","numColumns","onEndReached","ListEmptyComponent","_ref5","Pressable","onHoverIn","onHoverOut","author","authorOverlay","TouchableWithoutFeedback","ev","preventDefault","Linking","_ref6","option","divider","zIndex","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","UserFormFields","displayEmailWarning","allowAvatarEdit","allowEmailEdit","displayHideEmail","displayGender","userToken","asyncFunc","seniorityYears","differenceInYears","switchContainer","transform","scaleX","scaleY","switchLabel","seniorityContainer","seniorityLabel","s","CreateUserForm","onSubmitEnd","mutation","avatarData","_getAvatarData","getAvatarData","gender","createUserProfile","avatar","CreateUserScreen","handleSubmitEnd","DirectoryScreen","_user$userSubAdmins$l","Tab","createMaterialTopTabNavigator","DirectoryList","swipeEnabled","initialParams","_route$params2","_user$userSubAdmins$l2","showProfileUser","setShowProfileUser","AppListSwitch","notSelected","firstOptionText","design","secondOptionText","UserSubRow","withPicture","textSize","ImageWithFooterTextUnmemo","imageSource","fontStyle","ImageWithFooterText","defaultProps","Label","ContributionLabel","GetContributionsMode","IntToGetContributionsMode","gcm","not_set","removeCompanyNews","_removeCompanyNews","_setApproveNews","newsId","getCompanyNewsDetail","CreateFormDataCompanyNews","postCompanyNews","putCompanyNews","_listNewsInterestedUsers","_setInterestedNews","_setFavoriteNews","EditButton","CreateFormDataEvent","getDuration","startDate","endDate","_setAttendEvent","eventId","attend","contributionEvenementId","reponse","CreateFormDataTraining","_report","contributionId","userIdSignaler","getContributionsList","_getContributionsList","limit","admin_all","toApprove","approved","mine","interested","requests","offers","participation","reviewed","getContributionItem","_getContributionItem","itemId","postWithPhoto","_postWithPhoto","_post","_put","putWithPhoto","_x26","_x27","_x28","_putWithPhoto","_sendContribution","_users","sendEvent","sendTraining","highlightedDays","traduction","translations","DateDebutPublication","DateFinPublication","visibleStartDate","visibleEndDate","publishNews","newUserFormData","post","_sendUpdateContribution","updateEvent","updateTraining","updateNews","_x22","put","removeContribution","_x40","_x41","_removeContribution","setApproveContribution","_x42","_x43","_x44","_x45","_setApproveContribution","refuseSegment","_listContributionInterestedUsers","RemoveButton","SpreadingChipList","monocolor","inline","chipStyle","spreadingItems","entrepriseServices","entrepriseSiteGeos","entrepriseGroup","getLabelColor","hash","charCodeAt","abs","RemoveButtonCompanyNews","SquareTouchableWrapper","ContributionPreviewItem","mediaLogo","_GetMediaInfo","allImage","imageURI","overlayContent","labelContent","additionalButtons","ContributionItemRowBigPicture","userIdCreateurNavigation","dateCreation","isAdminView","fichierIdPhoto","ContributionItemRowCompanyNews","_props$item","_props$item$visibleSt","_props$item2","_props$item2$mActu","_props$item2$mActu$da","_props$item3","_props$item4","_props$item5","locale","isApproved","_GetMediaInfo2","publicationDate","imageId","highlighted","gap","validator","dateValidation","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","listContainer","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","ContributionItemSquare","_getNumColumns","_id","push","SuggestionsAdministrationRoute","CompanyNewsAdministrationRoute","ContributionToValidateItem","onEdit","onApprove","onDisapprove","SurveyToValidateAdminListScreen","approveContribution","emptyText","ContributionValidatedItem","onRemove","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","trim","EditableChip","last","onLeft","onRight","onDelete","ManageCategoriesOrder","_loggedUser$entrepris2","_useContext","fetchCategories","cat","callback","ManageCategoriesOrderItem","_categories$identifie","timeoutRef","move","delta","categoryIndex","filtered","splice","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","setQuery","flatListRef","useImperativeHandle","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","results","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","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","PhotoFormField","onPhotoChanged","onVideoUrlChanged","_useUnsplash","setLastQuery","setLastPage","setImages","searchForUnsplash","isQueryEmpty","client_id","urls","links","html","old","newArr","intervalId","lastQuery","lastPage","notifyImageDownload","_ref4","useUnsplash","showVideoPopup","setShowVideoPopup","invalidVideoUrl","setInvalidVideoUrl","acceptedFormatsText","idealFormatText","videoModalTitle","videoModalTextField","videoModalErrorLabel","contributionSpreadingFieldValidators","is","ContributionSpreadingField","spreadingTypeField","spreadingTypeHelper","usersField","usersHelper","_useField5","_useField6","servicesField","servicesHelper","_useField7","_useField8","siteGeosField","siteGeosHelper","_useField9","_useField10","groupsField","groupsHelper","PhotoField","videoUrlField","videoUrlHelper","imageIdHelper","documentIdHelper","RichTextField","ContributionAuthorizationsField","hideEmailActivated","switchGroup","CSondageQuestionType","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","args","UpdateSurveyScreen","cacheTime","isLoadingList","updateSurvey","userTargets","priceToString","_route$params4","_route$params$title","_route$params5","_route$params6","_route$params7","_route$params8","_route$params9","_route$params10","_route$params11","_route$params12","_route$params13","_route$params14","_route$params15","_route$params16","_route$params$moneyPo","_route$params17","_route$params18","_route$params19","_route$params20","_route$params21","_route$params22","_route$params23","_route$params24","_route$params25","_route$params26","_route$params27","_route$params31","_route$params32","_route$params3","originalPictureId","setOriginalPictureId","setTitle","setDescription","setBrand","setPrice","setStart","setStartCoordinates","setEnd","setEndCoordinates","setPermanent","_useState23","_useState24","setLocation","_useState25","_useState26","_useState27","plus","_useState28","setEndDate","_useState29","_useState30","setAnonymous","_useState31","dueDate","_useState32","setDueDate","_useState33","_useState34","setMoneyPool","_useState35","_useState36","setPlace","_useState37","_useState38","setVideoUrl","_useState39","_useState40","setUrl","_useState41","_useState42","setAvailableSeats","_useState43","_useState44","setQuestions","_useState45","_useState46","setLost","_useState47","_useState48","_useState49","_useState50","setServices","_useState51","_useState52","geoSites","setGeoSites","_useState53","_useState54","setGroups","_useState55","_useState56","setOriginalFilename","_useState57","_useState58","documentTag","setDocumentTag","_useState59","_useState60","setInitialPickedUsers","_useState61","_useState62","setAnswers","_useState63","_useState64","setSelectMode","_useState65","_useState66","setVisibleStartDate","_useState67","_useState68","setVisibleEndDate","_useState69","publicationMode","_useState70","setPublicationMode","_useState71","_useState72","setTranslations","_useState73","_useState74","setCategoryId","_useState75","_useState76","_useState77","_useState78","setCommentsActivated","_useState79","_useState80","setNotifActivated","_useState81","_useState82","setEmailActivated","eventType","dateObject","endDateObject","_useDeviceSize","_route$params28","_route$params29","_route$params30","_useState83","_useState84","generateAnEmail","setGenerateAnEmail","_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","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","slice","_needsValidation","_x34","_x35","_x36","_x37","_x38","_x39","sendUpdateContribution","_x29","_x30","sendContribution","eventAvailableSeatsSwitch","EventItemRow","seatsLabel","remainingSealsText","participationCount","noAvailableSealsText","eventTypeLabel","onPressEdit","onPressRemove","picture","contentContainer","topContainerSmall","topContainer","seatsTextSmall","seatsText","bottomContainer","textSmall","textRight","actionsContainer","editButton","Feather","removeAccentsAndLower","str","normalize","groupByAdjacent","array","fn","fn_prev","acc","val","fn_curr","formatUrl","CategoryPicker","EventsMainScreen","contributionTypeInt","contributionsModeInt","contributionsMode","filterCategory","setFilterCategory","SectionList","sections","showsVerticalScrollIndicator","stickySectionHeadersEnabled","renderSectionHeader","section","sectionTitle","ItemSeparatorComponent","_sendSuggestion","lovIdEtatNavigation","sendSuggestion","CreateSurveyScreen","sendSurvey","Tabs","tabBarLabelStyle","getMyContributionsTitleByType","ContributionRouter","AppModalGallery","getFileDetails","_getFileDetails","ContentWithImageHeaderScreen","zoomableImageVisible","setZoomableImageVisible","documentStyle","documentDetails","documentId","SafeAreaProvider","edges","imageContentOverride","Media","underImageContent","bottomContent","absoluteBackNavigation","absoluteBackNavigationDetail","_setContributionInterest","postId","setCompanyNewsView","_removeContributionInterest","interestId","Html","_props$source","dangerouslySetInnerHTML","__html","HtmlText","filteredText","tagsStyles","strong","systemFonts","baseStyle","RemoveLittleButton","CommentBubble","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","multiple","isChecked","SurveyRespondForm","respondSurvey","shape","q","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","ContactUserButton","ProfileCard","_props$user$aspNetUse","showProfile","setShowProfile","isDeleted","deletedAt","ContributionInterestedUserList","_x46","_x47","_x48","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","userContainer","userSubRow","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","itemContainer","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","next","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","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","loading","onChangeMode","onChangeEndDate","onChangeStartDate","PublicationModeField","modeName","visibleStartDateName","visibleEndDateName","modeField","modeHelper","visibleStartDateField","visibleStartDateHelper","visibleEndDateField","visibleEndDateNameHelper","PublicationModePicker","LanguageSelector","TranslationsField","prefillFields","render","formikContext","addNewTranslation","translatedValue","translate","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","setInterestedNews","isInterested","toggleInterest","isLoadingToggleInterest","_useMutation2","_mutationFn2","setFavoriteNews","favorite","isFavorite","toggleFavorite","isLoadingToggleFavorite","underImageContentText","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","FilePreview","_source$type","setUri","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","scale","collapsable","_e$nativeEvent$layout","onPointerMove","_e$nativeEvent","clientX","clientY","onPointerLeave","entering","ZoomIn","exiting","ZoomOut","magnifier","OrganizationChartsScreen","_currentChart$file","selectedChart","setSelectedChart","currentChart","labelContainers","FileField","_getDocumentDetails","getFolderDetails","_getFolderDetails","_listFolder","folderId","listFolderAsAdmin","_listFolderAsAdmin","updateFolder","updateDocument","ListItemRow","defaultImage","pictureContainer","DocumentItemRow","FontAwesome","downloadIcon","renderIcon","BrowseFolderDialog","onFolderSelected","onClose","folderIdStack","setFolderIdStack","currentFolderId","queryFunction","_data$documents$map","_data$folders$map","documents","folders","handlePrevious","animationType","foldersContainer","submitButton","FolderPickerField","_data$contribution","_data$contribution2","_data$contribution3","_data$contribution3$u","_data$contribution4","_data$contribution4$u","_data$contribution5","_data$contribution5$u","parentFolder","dialogVisible","setDialogVisible","rootFolderTitle","rootFolderDescription","newFolderId","DocumentFormFields","CreateDocumentScreen","initialFolderId","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","mutate","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","MainScreen","CustomModuleRouter","DetailsCustomModuleContributionScreen","_listSmsEmergencyTemplates","_listSmsEmergencyMyTemplates","getSmsEmergencyTemplates","_getSmsEmergencyTemplates","_createSmsEmergencyTemplate","request","_updateSmsEmergencyTemplate","_deleteSmsEmergencyTemplate","_sendSmsEmergency","_sendSmsEmergencyTemplate","_sendUserCount","EmergencySmsListTemplatesScreen","listSmsEmergencyTemplates","templates","EmergencySmsListMyTemplatesScreen","listSmsEmergencyMyTemplates","deleteSmsEmergencyTemplate","EmergencySmsTemplateFormFields","EmergencySmsCreateTemplateScreen","createSmsEmergencyTemplate","EmergencySmsUpdateTemplateScreen","updateSmsEmergencyTemplate","isLoadingMutation","SmsSendContributionSpreadingField","sendUserCount","userCount","phoneUserCount","EmergencySmsSendScreen","sendSmsEmergency","EmergencySmsSendTemplateScreen","sendSmsEmergencyTemplate","DrawerToggleButton","_objectDestructuringEmpty","accessible","accessibilityRole","DrawerActions","toggleDrawer","hitSlop","ModuleEnum","getInitialValuesFromData","UpdateNewsScreen","DuplicateNewsScreen","Drawer","createDrawerNavigator","userEmailDomain","entrepriseDomains","moduleSettings","isUserInDomain","defaultScreenOptions","headerTitleAlign","headerRight","getOrderByModule","_moduleSettings$find$","_moduleSettings$find","News","Admin","ContributionVente","ContributionHobbie","ContributionService","ContributionCovoiturage","ContributionEvenement","ContributionFormation","ContributionOrganigrame","ContributionObjet","ContributionSondage","ContributionBoiteIdee","ContributionKiosque","UserDirectory","EmergencySms","getModuleDefaultOrder","drawerItems","_loggedUser$userSubAd","_loggedUser$userSubAd2","element","MaterialCommunityIcons","iconId","unmountOnBlur","drawerType","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","textContainer","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","store","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":""}