@campxdev/shared 1.8.29 → 1.8.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (230) hide show
  1. package/antd.customize.less +73 -73
  2. package/exports.ts +19 -19
  3. package/package.json +86 -86
  4. package/src/assets/fonts/avenir/index.ts +13 -13
  5. package/src/assets/fonts/poppins/index.ts +18 -18
  6. package/src/assets/images/index.ts +17 -17
  7. package/src/assets/images/unauth.svg +92 -92
  8. package/src/components/ActionButton.tsx +20 -20
  9. package/src/components/ApplicationProfile/ApplicationProfile.tsx +336 -336
  10. package/src/components/ApplicationProfile/Service.ts +68 -68
  11. package/src/components/ApplicationProfile/UserProfileRelation.tsx +174 -174
  12. package/src/components/ApplicationProfile/index.tsx +1 -1
  13. package/src/components/Attachment.tsx +26 -26
  14. package/src/components/AutocompleteSearch/AutocompleteSearch.tsx +57 -57
  15. package/src/components/AutocompleteSearch/index.tsx +1 -1
  16. package/src/components/Breadcrumbs.tsx +72 -72
  17. package/src/components/Card.tsx +98 -98
  18. package/src/components/CardsGrid.tsx +28 -28
  19. package/src/components/ChangePassword.tsx +123 -123
  20. package/src/components/Chips.tsx +81 -81
  21. package/src/components/Detail.tsx +15 -15
  22. package/src/components/DetailsGrid.tsx +52 -52
  23. package/src/components/DividerHeading.tsx +41 -41
  24. package/src/components/DrawerWrapper/DialogWrapper.tsx +67 -67
  25. package/src/components/DrawerWrapper/DrawerTemplate.tsx +53 -53
  26. package/src/components/DrawerWrapper/DrawerWrapper.tsx +53 -53
  27. package/src/components/DropDownButton/AnchorElement.tsx +44 -44
  28. package/src/components/DropDownButton/DropDownButton.tsx +184 -184
  29. package/src/components/DropDownButton/DropdownMenuItem.tsx +110 -110
  30. package/src/components/DropDownButton/index.tsx +1 -1
  31. package/src/components/DropDownButton/styles.tsx +59 -59
  32. package/src/components/ErrorBoundary/ErrorBoundary.tsx +33 -33
  33. package/src/components/ErrorBoundary/ErrorFallback.tsx +241 -241
  34. package/src/components/ErrorBoundary/GlobalNetworkLoadingIndicator.tsx +13 -13
  35. package/src/components/ErrorBoundary/index.tsx +1 -1
  36. package/src/components/ErrorBox.tsx +42 -42
  37. package/src/components/ExcelToJsonInput/ExcelJsonUpload.tsx +50 -50
  38. package/src/components/ExcelToJsonInput/ExcelToJsonInput.tsx +57 -57
  39. package/src/components/ExcelToJsonInput/index.tsx +1 -1
  40. package/src/components/FilterComponents/FilterButton.tsx +56 -56
  41. package/src/components/FilterComponents/SearchBar.tsx +45 -45
  42. package/src/components/FloatingContainer.tsx +33 -33
  43. package/src/components/Form/Form.tsx +147 -147
  44. package/src/components/Form/RenderForm.tsx +189 -189
  45. package/src/components/FullScreenLoader.tsx +19 -19
  46. package/src/components/HookForm/AutoCompleteSearch.tsx +113 -113
  47. package/src/components/HookForm/DatePicker.tsx +40 -40
  48. package/src/components/HookForm/DateTimePicker.tsx +47 -47
  49. package/src/components/HookForm/FormLabel.tsx +14 -14
  50. package/src/components/HookForm/MultiCheckbox.tsx +69 -69
  51. package/src/components/HookForm/MultiSelect.tsx +61 -61
  52. package/src/components/HookForm/RadioGroup.tsx +47 -47
  53. package/src/components/HookForm/SingleCheckbox.tsx +34 -34
  54. package/src/components/HookForm/SingleSelect.tsx +46 -46
  55. package/src/components/HookForm/TextField.tsx +40 -40
  56. package/src/components/HookForm/TimePicker.tsx +40 -40
  57. package/src/components/HookForm/index.ts +23 -23
  58. package/src/components/IconButtons/IconButtons.tsx +137 -137
  59. package/src/components/IconButtons/Icons.tsx +268 -268
  60. package/src/components/IconButtons/assets/edit.svg +4 -4
  61. package/src/components/IconButtons/assets/eye.svg +6 -6
  62. package/src/components/IconButtons/assets/trash.svg +7 -7
  63. package/src/components/IconButtons/index.tsx +8 -8
  64. package/src/components/IconLabel.tsx +37 -37
  65. package/src/components/Image/Image.tsx +45 -45
  66. package/src/components/Image/index.tsx +1 -1
  67. package/src/components/ImageUpload.tsx +98 -98
  68. package/src/components/Input/AsyncSearchSelect/AsyncSearchSelect.tsx +216 -216
  69. package/src/components/Input/AsyncSearchSelect/index.tsx +1 -1
  70. package/src/components/Input/AsyncSearchSelect/styles.tsx +105 -105
  71. package/src/components/Input/AutoCompleteSearch.tsx +121 -121
  72. package/src/components/Input/DatePicker.tsx +87 -87
  73. package/src/components/Input/DateRangePicker.tsx +105 -105
  74. package/src/components/Input/DateTimePicker.tsx +84 -84
  75. package/src/components/Input/FormLabel.tsx +21 -21
  76. package/src/components/Input/MultiCheckbox.tsx +64 -64
  77. package/src/components/Input/MultiSelect.tsx +161 -161
  78. package/src/components/Input/RadioGroup.tsx +104 -104
  79. package/src/components/Input/SingleCheckbox.tsx +78 -78
  80. package/src/components/Input/SingleSelect.tsx +104 -104
  81. package/src/components/Input/TextField.tsx +46 -46
  82. package/src/components/Input/TimePicker.tsx +77 -77
  83. package/src/components/Input/index.ts +26 -26
  84. package/src/components/Input/types.ts +3 -3
  85. package/src/components/JsonPreview.tsx +7 -7
  86. package/src/components/LabelValue.tsx +21 -21
  87. package/src/components/Layout/ChangePassword.tsx +49 -49
  88. package/src/components/Layout/Header/AppHeader.tsx +112 -112
  89. package/src/components/Layout/Header/AppsMenu.tsx +133 -133
  90. package/src/components/Layout/Header/HeaderActions/CogWheelMenu.tsx +33 -33
  91. package/src/components/Layout/Header/HeaderActions/FreshChatButton.tsx +61 -61
  92. package/src/components/Layout/Header/HeaderActions/FreshDeskHelpButton.tsx +28 -28
  93. package/src/components/Layout/Header/HeaderActions/HeaderActions.tsx +18 -18
  94. package/src/components/Layout/Header/HeaderActions/UserBox.tsx +56 -56
  95. package/src/components/Layout/Header/Notification.tsx +13 -13
  96. package/src/components/Layout/Header/applications.ts +97 -97
  97. package/src/components/Layout/Header/assets/campx_square_small.svg +8 -8
  98. package/src/components/Layout/Header/assets/commuteX.png +0 -0
  99. package/src/components/Layout/Header/assets/commutex.svg +14 -14
  100. package/src/components/Layout/Header/assets/commutexSmall.svg +11 -11
  101. package/src/components/Layout/Header/assets/enroll.svg +14 -14
  102. package/src/components/Layout/Header/assets/enrollx.svg +14 -14
  103. package/src/components/Layout/Header/assets/exams_small.svg +11 -11
  104. package/src/components/Layout/Header/assets/examsx.svg +14 -14
  105. package/src/components/Layout/Header/assets/hostel_small.svg +13 -13
  106. package/src/components/Layout/Header/assets/hostelx.svg +13 -13
  107. package/src/components/Layout/Header/assets/index.ts +37 -37
  108. package/src/components/Layout/Header/assets/libraryx.svg +12 -12
  109. package/src/components/Layout/Header/assets/pay_small.svg +15 -15
  110. package/src/components/Layout/Header/assets/payx.svg +19 -19
  111. package/src/components/Layout/Header/assets/people_small.svg +9 -9
  112. package/src/components/Layout/Header/assets/peoplex.svg +12 -12
  113. package/src/components/Layout/Header/assets/squarex.svg +12 -12
  114. package/src/components/Layout/Header/icons.tsx +57 -57
  115. package/src/components/Layout/Header/index.tsx +1 -1
  116. package/src/components/Layout/Header/styles.tsx +133 -133
  117. package/src/components/Layout/Helmet.tsx +105 -105
  118. package/src/components/Layout/LayoutWrapper.tsx +28 -28
  119. package/src/components/Layout/SideMenuHeader.tsx +29 -29
  120. package/src/components/Layout/SideNav.tsx +168 -168
  121. package/src/components/Layout/Tickets/HelpWidget/HelpWidget.tsx +273 -273
  122. package/src/components/Layout/Tickets/HelpWidget/styles.tsx +94 -94
  123. package/src/components/Layout/Tickets/MyTickets.tsx +72 -72
  124. package/src/components/Layout/Tickets/TicketDetails.tsx +65 -65
  125. package/src/components/Layout/Tickets/TimeLine.tsx +64 -64
  126. package/src/components/Layout/Tickets/index.tsx +1 -1
  127. package/src/components/Layout/Tickets/services.ts +11 -11
  128. package/src/components/Layout/Tickets/styles.tsx +136 -136
  129. package/src/components/LinearProgress.tsx +19 -19
  130. package/src/components/ListItemButton.tsx +95 -95
  131. package/src/components/LoginForm.tsx +279 -279
  132. package/src/components/MediaRow/MediaRow.tsx +67 -67
  133. package/src/components/MediaRow/index.tsx +1 -1
  134. package/src/components/ModalButtons/DialogButton.tsx +126 -126
  135. package/src/components/ModalButtons/DrawerButton.tsx +115 -115
  136. package/src/components/ModalButtons/index.tsx +4 -4
  137. package/src/components/NoDataIllustration.tsx +32 -32
  138. package/src/components/PageContent.tsx +12 -12
  139. package/src/components/PageHeader.tsx +55 -55
  140. package/src/components/PageNotFound.tsx +26 -26
  141. package/src/components/PopupConfirm/ConfirmContextProvider.tsx +40 -40
  142. package/src/components/PopupConfirm/PopupConfirm.tsx +67 -67
  143. package/src/components/PopupConfirm/index.tsx +1 -1
  144. package/src/components/PopupConfirm/useConfirm.ts +47 -47
  145. package/src/components/ResetPassword.tsx +107 -107
  146. package/src/components/Row.tsx +24 -24
  147. package/src/components/Spinner.tsx +18 -18
  148. package/src/components/StepsHeader/StepsHeader.tsx +115 -115
  149. package/src/components/StepsHeader/index.tsx +1 -1
  150. package/src/components/StyledTableContainer.tsx +33 -33
  151. package/src/components/SwitchButton.tsx +41 -41
  152. package/src/components/Table.tsx +42 -42
  153. package/src/components/Tables/BasicTable/Table.tsx +198 -198
  154. package/src/components/Tables/BasicTable/TableFooter.tsx +86 -86
  155. package/src/components/Tables/BasicTable/index.tsx +1 -1
  156. package/src/components/Tables/ReactTable/BatchActionsHeader.tsx +58 -58
  157. package/src/components/Tables/ReactTable/ReactTable.tsx +295 -295
  158. package/src/components/Tables/ReactTable/RenderTableBody.tsx +49 -49
  159. package/src/components/Tables/ReactTable/index.tsx +1 -1
  160. package/src/components/Tables/ReactTable/react-table-config.d.ts +128 -128
  161. package/src/components/Tables/common/NoRecordsFound.tsx +27 -27
  162. package/src/components/Tables/common/TableStats.tsx +22 -22
  163. package/src/components/Tables/common/icons.tsx +50 -50
  164. package/src/components/Tables/common/styles.tsx +170 -170
  165. package/src/components/Tables/common/types.ts +57 -57
  166. package/src/components/Tabs/NavigationTabs.tsx +80 -80
  167. package/src/components/Tabs/Tabs.tsx +53 -53
  168. package/src/components/Tabs/TabsContainer.tsx +53 -53
  169. package/src/components/Tabs/index.tsx +1 -1
  170. package/src/components/Tabs/styles.tsx +55 -55
  171. package/src/components/ToastContainer/ToastContainer.tsx +57 -57
  172. package/src/components/ToastContainer/index.tsx +1 -1
  173. package/src/components/UploadButton/UploadButton.tsx +126 -126
  174. package/src/components/UploadButton/index.tsx +1 -1
  175. package/src/components/UploadButton/types.ts +19 -19
  176. package/src/components/UploadDocument.tsx +108 -108
  177. package/src/components/UploadFileDialog/UploadFileDialog.tsx +238 -238
  178. package/src/components/UploadFileDialog/index.tsx +1 -1
  179. package/src/components/index.ts +108 -108
  180. package/src/config/axios.ts +73 -73
  181. package/src/config/axiosEvaluator.ts +53 -53
  182. package/src/config/axiosXTenant.ts +57 -57
  183. package/src/constants/UIConstants.ts +124 -124
  184. package/src/constants/formValidations.ts +6 -6
  185. package/src/constants/index.ts +5 -5
  186. package/src/constants/isDevelopment.ts +4 -4
  187. package/src/constants/permissions.ts +67 -67
  188. package/src/constants/validateMessages.ts +12 -12
  189. package/src/contexts/LoginFormProvider.tsx +39 -39
  190. package/src/contexts/Providers.tsx +52 -52
  191. package/src/contexts/PublicProviders.tsx +30 -30
  192. package/src/contexts/QueryClientProvider.tsx +22 -22
  193. package/src/hooks/index.ts +5 -5
  194. package/src/hooks/useAuth.ts +111 -110
  195. package/src/hooks/useExternalScript.ts +38 -38
  196. package/src/hooks/useFetch.ts +53 -53
  197. package/src/hooks/useFilters.ts +83 -83
  198. package/src/hooks/useRouter.ts +31 -31
  199. package/src/layouts/Components/DashBoardMenu.tsx +232 -232
  200. package/src/layouts/Components/icons/index.tsx +403 -403
  201. package/src/layouts/Components/styles.tsx +74 -74
  202. package/src/layouts/ComponentsLayout.tsx +3 -3
  203. package/src/permissions/PageWithPermission.tsx +18 -18
  204. package/src/permissions/PermissionDeniedPage.tsx +16 -16
  205. package/src/permissions/ValidateAccess.tsx +18 -18
  206. package/src/permissions/index.ts +2 -2
  207. package/src/react-app-env.d.ts +1 -1
  208. package/src/shared-state/AssetsStore.ts +15 -15
  209. package/src/shared-state/PermissionsStore.ts +1053 -534
  210. package/src/shared-state/UserStore.ts +13 -13
  211. package/src/shared-state/index.ts +4 -4
  212. package/src/theme/App.less +3 -3
  213. package/src/theme/MuiThemeProvider.tsx +18 -18
  214. package/src/theme/customCssBaseline.ts +135 -135
  215. package/src/theme/index.css +28 -28
  216. package/src/theme/muiTheme.ts +597 -597
  217. package/src/theme/theme.d.ts +77 -77
  218. package/src/utils/adminAxios.ts +15 -15
  219. package/src/utils/alphabet.ts +23 -23
  220. package/src/utils/arrayPadEnd.ts +3 -3
  221. package/src/utils/formatCurrency.ts +9 -9
  222. package/src/utils/getUrlParams.ts +5 -5
  223. package/src/utils/index.ts +7 -7
  224. package/src/utils/logout.ts +25 -25
  225. package/src/utils/ordinalSuffixOf.ts +14 -14
  226. package/src/utils/romanize.ts +40 -40
  227. package/src/utils/withRouteWrapper.tsx +25 -25
  228. package/src/utils/withSuspense.tsx +6 -6
  229. package/styled-components.tsx +60 -60
  230. package/tsconfig.json +21 -21
@@ -1,30 +1,30 @@
1
- import { CssBaseline } from '@mui/material'
2
- import { BrowserRouter } from 'react-router-dom'
3
- import ConfirmContextProvider from '../components/PopupConfirm/ConfirmContextProvider'
4
- import MuiThemeProvider from '../theme/MuiThemeProvider'
5
- import QueryClientProvider from './QueryClientProvider'
6
-
7
- import { ReactNode } from 'react'
8
- import { ToastContainer } from '../components'
9
- import DialogProvider from '../components/DrawerWrapper/DrawerWrapper'
10
-
11
- // export const campxTenantKey = Cookies.get('campx_tenant')
12
- // export const urlTenantKey = window.location.pathname.split('/')[1]
13
-
14
- export default function PublicProviders({ children }: { children: ReactNode }) {
15
- return (
16
- <BrowserRouter>
17
- <QueryClientProvider>
18
- <MuiThemeProvider>
19
- <ConfirmContextProvider>
20
- <DialogProvider>
21
- {children}
22
- <CssBaseline />
23
- <ToastContainer />
24
- </DialogProvider>
25
- </ConfirmContextProvider>
26
- </MuiThemeProvider>
27
- </QueryClientProvider>
28
- </BrowserRouter>
29
- )
30
- }
1
+ import { CssBaseline } from '@mui/material'
2
+ import { BrowserRouter } from 'react-router-dom'
3
+ import ConfirmContextProvider from '../components/PopupConfirm/ConfirmContextProvider'
4
+ import MuiThemeProvider from '../theme/MuiThemeProvider'
5
+ import QueryClientProvider from './QueryClientProvider'
6
+
7
+ import { ReactNode } from 'react'
8
+ import { ToastContainer } from '../components'
9
+ import DialogProvider from '../components/DrawerWrapper/DrawerWrapper'
10
+
11
+ // export const campxTenantKey = Cookies.get('campx_tenant')
12
+ // export const urlTenantKey = window.location.pathname.split('/')[1]
13
+
14
+ export default function PublicProviders({ children }: { children: ReactNode }) {
15
+ return (
16
+ <BrowserRouter>
17
+ <QueryClientProvider>
18
+ <MuiThemeProvider>
19
+ <ConfirmContextProvider>
20
+ <DialogProvider>
21
+ {children}
22
+ <CssBaseline />
23
+ <ToastContainer />
24
+ </DialogProvider>
25
+ </ConfirmContextProvider>
26
+ </MuiThemeProvider>
27
+ </QueryClientProvider>
28
+ </BrowserRouter>
29
+ )
30
+ }
@@ -1,22 +1,22 @@
1
- import {
2
- QueryClient,
3
- QueryClientProvider as ReactQueryClientProvider,
4
- } from 'react-query'
5
-
6
- export const queryClient = new QueryClient({
7
- defaultOptions: {
8
- queries: {
9
- refetchOnWindowFocus: false,
10
- retry: false,
11
- useErrorBoundary: true,
12
- },
13
- },
14
- })
15
-
16
- export default function QueryClientProvider({ children }) {
17
- return (
18
- <ReactQueryClientProvider client={queryClient}>
19
- {children}
20
- </ReactQueryClientProvider>
21
- )
22
- }
1
+ import {
2
+ QueryClient,
3
+ QueryClientProvider as ReactQueryClientProvider,
4
+ } from 'react-query'
5
+
6
+ export const queryClient = new QueryClient({
7
+ defaultOptions: {
8
+ queries: {
9
+ refetchOnWindowFocus: false,
10
+ retry: false,
11
+ useErrorBoundary: true,
12
+ },
13
+ },
14
+ })
15
+
16
+ export default function QueryClientProvider({ children }) {
17
+ return (
18
+ <ReactQueryClientProvider client={queryClient}>
19
+ {children}
20
+ </ReactQueryClientProvider>
21
+ )
22
+ }
@@ -1,5 +1,5 @@
1
- export { default as useFetch } from './useFetch'
2
- export * from './useRouter'
3
- export { default as useAuth } from './useAuth'
4
- export { default as useFilter } from './useFilters'
5
- export { default as useExternalScript } from './useExternalScript'
1
+ export { default as useFetch } from './useFetch'
2
+ export * from './useRouter'
3
+ export { default as useAuth } from './useAuth'
4
+ export { default as useFilter } from './useFilters'
5
+ export { default as useExternalScript } from './useExternalScript'
@@ -1,110 +1,111 @@
1
- import { AxiosError } from 'axios'
2
- import { useEffect, useState } from 'react'
3
- import { toast } from 'react-toastify'
4
- import axios from '../config/axios'
5
- import { isDevelopment } from '../constants'
6
- import { useLoginForm } from '../contexts/LoginFormProvider'
7
- import { campxTenantKey, urlTenantKey } from '../contexts/Providers'
8
- import { PermissionsStore, AssetsStore, UserStore } from '../shared-state'
9
-
10
- const url = window.location.origin
11
-
12
- type AuthParams = {
13
- permissionsEndpoint: string
14
- loginUrl?: string
15
- }
16
-
17
- type AuthResponse = {
18
- loading: boolean
19
- data: {
20
- user?: any
21
- roles?: any
22
- fullName?: any
23
- permissions?: any
24
- assets?: {
25
- logo: string
26
- logo_square: string
27
- }
28
- }
29
- }
30
-
31
- function useAuth({ permissionsEndpoint, loginUrl }: AuthParams): AuthResponse {
32
- const { openLoginForm } = useLoginForm()
33
- const [loading, setLoading] = useState<boolean>(false)
34
- const [data, setData] = useState(null)
35
-
36
- const appInit = async () => {
37
- setLoading(true)
38
- axios
39
- .get(permissionsEndpoint)
40
- .then((res) => {
41
- const origin = window.location.origin
42
- const domain = origin.split('campx')[0].split('//')[1]
43
-
44
- const isStaging = origin.split('campx')[1] === '.dev'
45
-
46
- if (isDevelopment == false && isStaging == false) {
47
- if (!res.data.applications.includes(domain)) {
48
- window.location.replace(
49
- `https://www.id.campx.in/apps?redirect_to=${url}`,
50
- )
51
- }
52
- }
53
-
54
- setLoading(false)
55
- setData(res.data)
56
- UserStore.update((s) => {
57
- s.username = res.data?.username
58
- s.user = res.data?.user
59
- s.roles = res.data?.roles
60
- })
61
-
62
- PermissionsStore.update((s) => {
63
- s.permissions = {
64
- ...res.data?.permissions,
65
- can_settings_view: 1,
66
- can_dashboard_view: 1,
67
- can_individual_pages_view: 1,
68
- } as any
69
- s.applications = res.data?.applications ?? []
70
- })
71
- AssetsStore.update((s) => {
72
- s.logo = res.data?.assets.logo
73
- s.logo_square = res.data?.assets.logo_square
74
- })
75
- })
76
- .catch((err: AxiosError) => {
77
- setLoading(false)
78
- const origin = window.location.origin
79
- const isStaging = origin.split('campx')[1] === '.dev'
80
-
81
- if (isDevelopment || isStaging) {
82
- openLoginForm(loginUrl)
83
- return
84
- } else {
85
- window.location.replace(`https://www.id.campx.in/?redirect_to=${url}`)
86
- }
87
-
88
- if (err.response.status !== 401) {
89
- if (err.response.status > 400 && err.response.status < 500) {
90
- window.location.replace(
91
- `https://www.id.campx.in/?redirect_to=${url}`,
92
- )
93
- } else {
94
- toast.error('Server Error')
95
- }
96
- }
97
- })
98
- }
99
-
100
- useEffect(() => {
101
- appInit()
102
- }, [])
103
-
104
- return {
105
- loading: loading || !data?.permissions,
106
- data,
107
- }
108
- }
109
-
110
- export default useAuth
1
+ import { AxiosError } from 'axios'
2
+ import { useEffect, useState } from 'react'
3
+ import { toast } from 'react-toastify'
4
+ import axios from '../config/axios'
5
+ import { isDevelopment } from '../constants'
6
+ import { useLoginForm } from '../contexts/LoginFormProvider'
7
+ import { campxTenantKey, urlTenantKey } from '../contexts/Providers'
8
+ import { PermissionsStore, AssetsStore, UserStore } from '../shared-state'
9
+
10
+ const url = window.location.origin
11
+
12
+ type AuthParams = {
13
+ permissionsEndpoint: string
14
+ loginUrl?: string
15
+ }
16
+
17
+ type AuthResponse = {
18
+ loading: boolean
19
+ data: {
20
+ user?: any
21
+ roles?: any
22
+ fullName?: any
23
+ permissions?: any
24
+ assets?: {
25
+ logo: string
26
+ logo_square: string
27
+ }
28
+ }
29
+ }
30
+
31
+ function useAuth({ permissionsEndpoint, loginUrl }: AuthParams): AuthResponse {
32
+ const { openLoginForm } = useLoginForm()
33
+ const [loading, setLoading] = useState<boolean>(false)
34
+ const [data, setData] = useState(null)
35
+
36
+ const appInit = async () => {
37
+ setLoading(true)
38
+ axios
39
+ .get(permissionsEndpoint)
40
+ .then((res) => {
41
+ const origin = window.location.origin
42
+ const domain = origin.split('campx')[0].split('//')[1]
43
+
44
+ const isStaging = origin.split('campx')[1] === '.dev'
45
+
46
+ if (isDevelopment == false && isStaging == false) {
47
+ if (!res.data.applications.includes(domain)) {
48
+ window.location.replace(
49
+ `https://www.id.campx.in/apps?redirect_to=${url}`,
50
+ )
51
+ }
52
+ }
53
+
54
+ setLoading(false)
55
+ setData(res.data)
56
+ UserStore.update((s) => {
57
+ s.username = res.data?.username
58
+ s.user = res.data?.user
59
+ s.roles = res.data?.roles
60
+ })
61
+
62
+ PermissionsStore.update((s) => {
63
+ s.permissions = {
64
+ ...res.data?.permissions,
65
+ can_settings_view: 1,
66
+ can_dashboard_view: 1,
67
+ can_individual_pages_view: 1,
68
+ can_analatics_view: res.data.user.isSuperuser == true ? 1 : 0,
69
+ } as any
70
+ s.applications = res.data?.applications ?? []
71
+ })
72
+ AssetsStore.update((s) => {
73
+ s.logo = res.data?.assets.logo
74
+ s.logo_square = res.data?.assets.logo_square
75
+ })
76
+ })
77
+ .catch((err: AxiosError) => {
78
+ setLoading(false)
79
+ const origin = window.location.origin
80
+ const isStaging = origin.split('campx')[1] === '.dev'
81
+
82
+ if (isDevelopment || isStaging) {
83
+ openLoginForm(loginUrl)
84
+ return
85
+ } else {
86
+ window.location.replace(`https://www.id.campx.in/?redirect_to=${url}`)
87
+ }
88
+
89
+ if (err.response.status !== 401) {
90
+ if (err.response.status > 400 && err.response.status < 500) {
91
+ window.location.replace(
92
+ `https://www.id.campx.in/?redirect_to=${url}`,
93
+ )
94
+ } else {
95
+ toast.error('Server Error')
96
+ }
97
+ }
98
+ })
99
+ }
100
+
101
+ useEffect(() => {
102
+ appInit()
103
+ }, [])
104
+
105
+ return {
106
+ loading: loading || !data?.permissions,
107
+ data,
108
+ }
109
+ }
110
+
111
+ export default useAuth
@@ -1,38 +1,38 @@
1
- import { useEffect, useState } from 'react'
2
- const useExternalScript = (url) => {
3
- let [state, setState] = useState(url ? 'loading' : 'idle')
4
-
5
- useEffect(() => {
6
- if (!url) {
7
- setState('idle')
8
- return
9
- }
10
- let script: any = document.querySelector(`script[src="${url}"]`)
11
-
12
- const handleScript = (e) => {
13
- setState(e.type === 'load' ? 'ready' : 'error')
14
- }
15
- if (!script) {
16
- script = document.createElement('script')
17
- script.type = 'application/javascript'
18
- script.src = url
19
- script.async = true
20
- document.body.appendChild(script)
21
- script.addEventListener('load', handleScript)
22
- script.addEventListener('error', handleScript)
23
- }
24
-
25
- script.addEventListener('load', handleScript)
26
- script.addEventListener('error', handleScript)
27
-
28
- return () => {
29
- script.removeEventListener('load', handleScript)
30
- script.removeEventListener('error', handleScript)
31
- document.body.removeChild(script)
32
- }
33
- }, [url])
34
-
35
- return state
36
- }
37
-
38
- export default useExternalScript
1
+ import { useEffect, useState } from 'react'
2
+ const useExternalScript = (url) => {
3
+ let [state, setState] = useState(url ? 'loading' : 'idle')
4
+
5
+ useEffect(() => {
6
+ if (!url) {
7
+ setState('idle')
8
+ return
9
+ }
10
+ let script: any = document.querySelector(`script[src="${url}"]`)
11
+
12
+ const handleScript = (e) => {
13
+ setState(e.type === 'load' ? 'ready' : 'error')
14
+ }
15
+ if (!script) {
16
+ script = document.createElement('script')
17
+ script.type = 'application/javascript'
18
+ script.src = url
19
+ script.async = true
20
+ document.body.appendChild(script)
21
+ script.addEventListener('load', handleScript)
22
+ script.addEventListener('error', handleScript)
23
+ }
24
+
25
+ script.addEventListener('load', handleScript)
26
+ script.addEventListener('error', handleScript)
27
+
28
+ return () => {
29
+ script.removeEventListener('load', handleScript)
30
+ script.removeEventListener('error', handleScript)
31
+ document.body.removeChild(script)
32
+ }
33
+ }, [url])
34
+
35
+ return state
36
+ }
37
+
38
+ export default useExternalScript
@@ -1,53 +1,53 @@
1
- import { useEffect, useState } from 'react'
2
- import axios from '../config/axios'
3
-
4
- export function useMockFetch(promiseFn: Function) {
5
- const [data, setData] = useState<any>()
6
- const [error, setError] = useState<any>(null)
7
- const [loading, setLoading] = useState(true)
8
-
9
- useEffect(() => {
10
- setLoading(true)
11
- promiseFn()
12
- .then((res) => {
13
- setData(res.data)
14
- setLoading(false)
15
- })
16
- .catch((err) => {
17
- setLoading(false)
18
- setError(null)
19
- })
20
- }, [])
21
-
22
- return {
23
- data,
24
- loading,
25
- }
26
- }
27
-
28
- export default function useFetch(url: string, skip?: boolean) {
29
- const [data, setData] = useState<any>()
30
- const [error, setError] = useState<any>(null)
31
- const [loading, setLoading] = useState(true)
32
-
33
- useEffect(() => {
34
- if (skip) return
35
- setLoading(true)
36
- axios
37
- .get(url)
38
- .then((res) => {
39
- setData(res.data)
40
- setLoading(false)
41
- })
42
- .catch((err) => {
43
- setError(err)
44
- setLoading(false)
45
- })
46
- }, [])
47
-
48
- return {
49
- data,
50
- loading,
51
- error,
52
- }
53
- }
1
+ import { useEffect, useState } from 'react'
2
+ import axios from '../config/axios'
3
+
4
+ export function useMockFetch(promiseFn: Function) {
5
+ const [data, setData] = useState<any>()
6
+ const [error, setError] = useState<any>(null)
7
+ const [loading, setLoading] = useState(true)
8
+
9
+ useEffect(() => {
10
+ setLoading(true)
11
+ promiseFn()
12
+ .then((res) => {
13
+ setData(res.data)
14
+ setLoading(false)
15
+ })
16
+ .catch((err) => {
17
+ setLoading(false)
18
+ setError(null)
19
+ })
20
+ }, [])
21
+
22
+ return {
23
+ data,
24
+ loading,
25
+ }
26
+ }
27
+
28
+ export default function useFetch(url: string, skip?: boolean) {
29
+ const [data, setData] = useState<any>()
30
+ const [error, setError] = useState<any>(null)
31
+ const [loading, setLoading] = useState(true)
32
+
33
+ useEffect(() => {
34
+ if (skip) return
35
+ setLoading(true)
36
+ axios
37
+ .get(url)
38
+ .then((res) => {
39
+ setData(res.data)
40
+ setLoading(false)
41
+ })
42
+ .catch((err) => {
43
+ setError(err)
44
+ setLoading(false)
45
+ })
46
+ }, [])
47
+
48
+ return {
49
+ data,
50
+ loading,
51
+ error,
52
+ }
53
+ }