@ozdao/martyrs 0.2.585 → 0.2.587

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 (391) hide show
  1. package/dist/auth.server.js +175 -97
  2. package/dist/{authJwt-J1csaMWA.js → authJwt-DKbMMjw0.js} +33 -0
  3. package/dist/chats.server.js +3 -3
  4. package/dist/community.server.js +2 -2
  5. package/dist/core.server.js +201 -13
  6. package/dist/{core.websocket-C2FxNmZ1.js → core.websocket-Cl76z2wT.js} +41 -5
  7. package/dist/{crud-q1ye5IhV.js → crud-DpOXTZep.js} +1 -1
  8. package/dist/events.server.js +3 -3
  9. package/dist/files.server.js +2 -2
  10. package/dist/gallery.server.js +2 -2
  11. package/dist/index-kvBwwb0w.js +427 -0
  12. package/dist/inventory.server.js +3 -3
  13. package/dist/{mailing-DuEFRsa3.js → mailing-DT7nbNjZ.js} +16 -3
  14. package/dist/{main-xL-jtBkT.js → main-BIf-WirR.js} +863 -865
  15. package/dist/marketplace.server.js +2 -2
  16. package/dist/martyrs/dist/{main-xL-jtBkT.js → main-BIf-WirR.js} +192 -38
  17. package/dist/martyrs/dist/main-BIf-WirR.js.map +1 -0
  18. package/dist/martyrs/dist/{web-BA6h6Z8P.js → web-O7lXcjg0.js} +2 -2
  19. package/dist/martyrs/dist/{web-BA6h6Z8P.js.map → web-O7lXcjg0.js.map} +1 -1
  20. package/dist/martyrs/src/components/Button/{Button.vue2.js → Button.vue.js} +8 -7
  21. package/dist/martyrs/src/components/Button/Button.vue.js.map +1 -0
  22. package/dist/martyrs/src/components/Feed/Carousel.vue.js +1 -1
  23. package/dist/martyrs/src/components/Feed/Feed.vue.js +1 -1
  24. package/dist/martyrs/src/components/FieldBig/FieldBig.vue.js +1 -1
  25. package/dist/martyrs/src/components/Loader/{Loader.vue.js → Loader.vue2.js} +3 -3
  26. package/dist/martyrs/src/components/Loader/Loader.vue2.js.map +1 -0
  27. package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js +1 -1
  28. package/dist/martyrs/src/components/Media/Media.vue.js +1 -1
  29. package/dist/martyrs/src/components/Menu/{Menu.vue.js → Menu.vue2.js} +2 -2
  30. package/dist/martyrs/src/components/Menu/Menu.vue2.js.map +1 -0
  31. package/dist/martyrs/src/components/Select/{Select.vue.js → Select.vue2.js} +2 -2
  32. package/dist/martyrs/src/components/Select/Select.vue2.js.map +1 -0
  33. package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.js +17 -22
  34. package/dist/martyrs/src/components/Tooltip/Tooltip.vue2.js.map +1 -1
  35. package/dist/martyrs/src/components/UploadImage/UploadImage.vue.js +1 -1
  36. package/dist/martyrs/src/components/UploadImageMultiple/UploadImageMultiple.vue.js +1 -1
  37. package/dist/martyrs/src/modules/auth/auth.client.js +18 -24
  38. package/dist/martyrs/src/modules/auth/auth.client.js.map +1 -1
  39. package/dist/martyrs/src/modules/auth/views/components/blocks/OtpDialog.vue.js +178 -0
  40. package/dist/martyrs/src/modules/auth/views/components/blocks/OtpDialog.vue.js.map +1 -0
  41. package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +1 -1
  42. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +53 -45
  43. package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
  44. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEdit.vue.js +1 -1
  45. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js +198 -14
  46. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditAccount.vue.js.map +1 -1
  47. package/dist/martyrs/src/modules/auth/views/components/pages/ProfileEditProfile.vue.js +1 -1
  48. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js +70 -29
  49. package/dist/martyrs/src/modules/auth/views/components/pages/ResetPassword.vue.js.map +1 -1
  50. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js +2 -2
  51. package/dist/martyrs/src/modules/auth/views/components/pages/SignIn.vue.js.map +1 -1
  52. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js +86 -30
  53. package/dist/martyrs/src/modules/auth/views/components/pages/SignUp.vue.js.map +1 -1
  54. package/dist/martyrs/src/modules/auth/views/plugins/otp.plugin.js +100 -0
  55. package/dist/martyrs/src/modules/auth/views/plugins/otp.plugin.js.map +1 -0
  56. package/dist/martyrs/src/modules/auth/views/router/auth.router.js +2 -31
  57. package/dist/martyrs/src/modules/auth/views/router/auth.router.js.map +1 -1
  58. package/dist/martyrs/src/modules/auth/views/router/users.router.js +0 -14
  59. package/dist/martyrs/src/modules/auth/views/router/users.router.js.map +1 -1
  60. package/dist/martyrs/src/modules/auth/views/store/auth.js +1 -56
  61. package/dist/martyrs/src/modules/auth/views/store/auth.js.map +1 -1
  62. package/dist/martyrs/src/modules/auth/views/store/users.js +5 -1
  63. package/dist/martyrs/src/modules/auth/views/store/users.js.map +1 -1
  64. package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +1 -1
  65. package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +2 -2
  66. package/dist/martyrs/src/modules/community/components/pages/CreateBlogPost.vue.js +1 -1
  67. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js +0 -1
  68. package/dist/martyrs/src/modules/core/views/components/blocks/CardHeader.vue.js.map +1 -1
  69. package/dist/martyrs/src/modules/core/views/components/blocks/PopupAuth.vue.js +1 -1
  70. package/dist/martyrs/src/modules/core/views/components/blocks/PopupDateSelector.vue.js +2 -2
  71. package/dist/martyrs/src/modules/core/views/components/elements/OnlineIndicator.vue.js +74 -0
  72. package/dist/martyrs/src/modules/core/views/components/elements/OnlineIndicator.vue.js.map +1 -0
  73. package/dist/martyrs/src/modules/core/views/components/layouts/App.vue.js.map +1 -1
  74. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js +64 -48
  75. package/dist/martyrs/src/modules/core/views/components/layouts/Client.vue.js.map +1 -1
  76. package/dist/martyrs/src/modules/core/views/components/pages/404.vue.js +10 -33
  77. package/dist/martyrs/src/modules/core/views/components/pages/404.vue.js.map +1 -1
  78. package/dist/martyrs/src/modules/core/views/components/partials/Header.vue.js +2 -2
  79. package/dist/martyrs/src/modules/core/views/components/partials/NavigationBar.vue.js +1 -1
  80. package/dist/martyrs/src/modules/events/components/elements/ButtonCheck.vue.js +1 -1
  81. package/dist/martyrs/src/modules/events/components/elements/ButtonJoin.vue.js +1 -1
  82. package/dist/martyrs/src/modules/events/components/pages/EditEvent.vue.js +2 -2
  83. package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
  84. package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +1 -1
  85. package/dist/martyrs/src/modules/events/components/sections/EditTickets.vue.js +1 -1
  86. package/dist/martyrs/src/modules/events/components/sections/Feed.vue.js +1 -1
  87. package/dist/martyrs/src/modules/events/components/sections/List.vue.js +1 -1
  88. package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +2 -2
  89. package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +2 -2
  90. package/dist/martyrs/src/modules/inventory/components/forms/ColumnSettingsMenu.vue.js +1 -1
  91. package/dist/martyrs/src/modules/inventory/components/forms/HistoryView.vue.js +1 -1
  92. package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +2 -2
  93. package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +2 -2
  94. package/dist/martyrs/src/modules/marketplace/views/components/sections/SectionMenu.vue.js +1 -1
  95. package/dist/martyrs/src/modules/music/components/blocks/ActionButtons.vue.js +1 -1
  96. package/dist/martyrs/src/modules/music/components/cards/AlbumCard.vue.js +1 -1
  97. package/dist/martyrs/src/modules/music/components/cards/ArtistCardSmall.vue.js +1 -1
  98. package/dist/martyrs/src/modules/music/components/cards/PlaylistCard.vue.js +1 -1
  99. package/dist/martyrs/src/modules/music/components/cards/TrackListCard.vue.js +1 -1
  100. package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +2 -2
  101. package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +3 -3
  102. package/dist/martyrs/src/modules/music/components/forms/PlaylistForm.vue.js +1 -1
  103. package/dist/martyrs/src/modules/music/components/forms/SearchForm.vue.js +1 -1
  104. package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +2 -2
  105. package/dist/martyrs/src/modules/music/components/pages/Album.vue.js +2 -2
  106. package/dist/martyrs/src/modules/music/components/pages/Artist.vue.js +2 -2
  107. package/dist/martyrs/src/modules/music/components/pages/MusicLibrary.vue.js +1 -1
  108. package/dist/martyrs/src/modules/music/components/pages/Playlist.vue.js +2 -2
  109. package/dist/martyrs/src/modules/music/components/pages/SearchResults.vue.js +2 -2
  110. package/dist/martyrs/src/modules/music/components/pages/Track.vue.js +2 -2
  111. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js +0 -1
  112. package/dist/martyrs/src/modules/music/components/pages/TrackCreate.vue.js.map +1 -1
  113. package/dist/martyrs/src/modules/music/components/player/FullscreenPlayer.vue.js +1 -1
  114. package/dist/martyrs/src/modules/music/components/player/MusicPlayer.vue.js +1 -1
  115. package/dist/martyrs/src/modules/music/components/player/PlayerControls.vue.js +1 -1
  116. package/dist/martyrs/src/modules/music/components/player/VolumeControl.vue.js +1 -1
  117. package/dist/martyrs/src/modules/notifications/components/sections/NotificationPreferences.vue.js +2 -2
  118. package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +2 -2
  119. package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +2 -2
  120. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js +1 -2
  121. package/dist/martyrs/src/modules/orders/components/forms/FormSelectCustomer.vue.js.map +1 -1
  122. package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +2 -2
  123. package/dist/martyrs/src/modules/orders/components/pages/OrderCreate.vue.js +1 -1
  124. package/dist/martyrs/src/modules/orders/components/pages/OrderCreateBackoffice.vue.js +1 -1
  125. package/dist/martyrs/src/modules/orders/components/sections/ApplicationDetails.vue.js +1 -1
  126. package/dist/martyrs/src/modules/orders/components/sections/CustomerDetails.vue.js +1 -1
  127. package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +1 -1
  128. package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
  129. package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +1 -1
  130. package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +1 -1
  131. package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +1 -1
  132. package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +1 -1
  133. package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +1 -1
  134. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationBackoffice.vue.js +1 -1
  135. package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +3 -3
  136. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js +1 -2
  137. package/dist/martyrs/src/modules/organizations/components/sections/Documents.vue.js.map +1 -1
  138. package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +2 -2
  139. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +1 -2
  140. package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js.map +1 -1
  141. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js +0 -1
  142. package/dist/martyrs/src/modules/pages/views/components/blocks/CardPage.vue.js.map +1 -1
  143. package/dist/martyrs/src/modules/pages/views/components/pages/PageEdit.vue.js +1 -1
  144. package/dist/martyrs/src/modules/pages/views/components/partials/SidebarPages.vue.js +1 -1
  145. package/dist/martyrs/src/modules/products/components/elements/Image360.vue.js +1 -1
  146. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js +0 -1
  147. package/dist/martyrs/src/modules/products/components/pages/Categories.vue.js.map +1 -1
  148. package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +3 -3
  149. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js +0 -1
  150. package/dist/martyrs/src/modules/products/components/pages/Product.vue.js.map +1 -1
  151. package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +2 -2
  152. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +1 -1
  153. package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
  154. package/dist/martyrs/src/modules/products/components/sections/EditAttributes.vue.js +1 -1
  155. package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +2 -2
  156. package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +2 -2
  157. package/dist/martyrs/src/modules/products/components/sections/ProductConfigurator.vue.js +1 -1
  158. package/dist/martyrs/src/modules/products/components/sections/ProductsRecommended.vue.js +1 -1
  159. package/dist/martyrs/src/modules/products/components/sections/SectionProduct.vue.js +1 -1
  160. package/dist/martyrs/src/modules/rents/views/components/pages/Gant/GanttToolbar.vue.js +1 -1
  161. package/dist/martyrs/src/modules/rents/views/components/pages/RentsEdit.vue.js +1 -1
  162. package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +2 -2
  163. package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +1 -1
  164. package/dist/martyrs/src/modules/spots/components/pages/Map.vue.js +1 -1
  165. package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +2 -2
  166. package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +2 -2
  167. package/dist/martyrs.css +1 -1
  168. package/dist/martyrs.es.js +1 -1
  169. package/dist/music.server.js +1 -1
  170. package/dist/notifications.server.js +2 -2
  171. package/dist/orders.server.js +8 -7
  172. package/dist/organizations.server.js +3 -3
  173. package/dist/pages.server.js +1 -1
  174. package/dist/products.server.js +3 -3
  175. package/dist/profile.schema-C31Lynn3.js +21 -0
  176. package/dist/rents.server.js +2 -2
  177. package/dist/reports.server.js +1 -1
  178. package/dist/sessions.service-COcwjd0f.js +86 -0
  179. package/dist/spots.server.js +1 -1
  180. package/dist/style.css +180 -110
  181. package/dist/{tickets.controller-B7r0mK-5.js → tickets.controller-DdF85W-i.js} +1 -1
  182. package/dist/visitors.service-B1dhhuSo.js +83 -0
  183. package/dist/wallet.server.js +3 -3
  184. package/dist/{web-BA6h6Z8P.js → web-O7lXcjg0.js} +1 -1
  185. package/package.json +3 -1
  186. package/src/components/Button/Button.vue +61 -15
  187. package/src/components/Loader/Loader.vue +1 -1
  188. package/src/components/Tooltip/Tooltip.vue +31 -23
  189. package/src/modules/TASKS.MD +30 -1
  190. package/src/modules/auth/CLAUDE.md +381 -0
  191. package/src/modules/auth/FIXES.md +0 -38
  192. package/src/modules/auth/auth.client.js +4 -6
  193. package/src/modules/auth/auth.server.js +19 -16
  194. package/src/modules/auth/controllers/middlewares/authJwt.js +59 -17
  195. package/src/modules/auth/controllers/middlewares/index.js +4 -1
  196. package/src/modules/auth/controllers/middlewares/otp.middleware.js +166 -0
  197. package/src/modules/auth/controllers/middlewares/verifySignUp.js +0 -1
  198. package/src/modules/auth/controllers/middlewares/verifyUser.js +58 -11
  199. package/src/modules/auth/controllers/routes/auth.routes.js +48 -6
  200. package/src/modules/auth/controllers/routes/users.routes.js +29 -8
  201. package/src/modules/auth/controllers/services/auth.service.js +62 -12
  202. package/src/modules/auth/controllers/services/otp.service.js +109 -0
  203. package/src/modules/auth/controllers/services/users.service.js +46 -6
  204. package/src/modules/auth/models/otp.model.js +20 -0
  205. package/src/modules/auth/views/components/blocks/OtpDialog.vue +168 -0
  206. package/src/modules/auth/views/components/pages/Profile.vue +18 -13
  207. package/src/modules/auth/views/components/pages/ProfileEditAccount.vue +199 -45
  208. package/src/modules/auth/views/components/pages/ResetPassword.vue +170 -132
  209. package/src/modules/auth/views/components/pages/SignIn.vue +2 -1
  210. package/src/modules/auth/views/components/pages/SignUp.vue +203 -147
  211. package/src/modules/auth/views/plugins/otp.plugin.js +104 -0
  212. package/src/modules/auth/views/router/auth.router.js +1 -24
  213. package/src/modules/auth/views/router/users.router.js +1 -12
  214. package/src/modules/auth/views/store/auth.js +0 -68
  215. package/src/modules/auth/views/store/users.js +6 -2
  216. package/src/modules/chats/chats.server.js +1 -1
  217. package/src/modules/community/community.server.js +1 -1
  218. package/src/modules/core/controllers/classes/core.websocket.js +57 -6
  219. package/src/modules/core/controllers/middlewares/visitor.logger.js +49 -0
  220. package/src/modules/core/controllers/services/requests.service.js +53 -0
  221. package/src/modules/core/controllers/services/sessions.service.js +98 -0
  222. package/src/modules/core/controllers/services/visitors.service.js +102 -0
  223. package/src/modules/core/controllers/utils/mailing.js +16 -3
  224. package/src/modules/core/core.server.js +31 -16
  225. package/src/modules/core/models/log.model.js +24 -0
  226. package/src/modules/core/models/request.model.js +30 -0
  227. package/src/modules/core/models/session.model.js +43 -0
  228. package/src/modules/core/models/visitor.model.js +28 -0
  229. package/src/modules/core/views/components/elements/OnlineIndicator.vue +115 -0
  230. package/src/modules/core/views/components/layouts/App.vue +2 -2
  231. package/src/modules/core/views/components/layouts/Client.vue +443 -477
  232. package/src/modules/core/views/components/pages/404.vue +2 -3
  233. package/src/modules/events/events.server.js +1 -1
  234. package/src/modules/files/files.server.js +1 -1
  235. package/src/modules/gallery/gallery.server.js +1 -1
  236. package/src/modules/governance/governance.server.js +1 -1
  237. package/src/modules/icons/icons.server.js +1 -1
  238. package/src/modules/inventory/inventory.server.js +1 -1
  239. package/src/modules/marketplace/marketplace.server.js +1 -1
  240. package/src/modules/notifications/notifications.server.js +1 -1
  241. package/src/modules/orders/controllers/orders.controller.js +3 -3
  242. package/src/modules/orders/orders.server.js +1 -1
  243. package/src/modules/organizations/organizations.server.js +1 -1
  244. package/src/modules/pages/pages.server.js +1 -1
  245. package/src/modules/products/components/pages/Products.vue +1 -1
  246. package/src/modules/products/products.server.js +1 -1
  247. package/src/modules/rents/rents.server.js +1 -1
  248. package/src/modules/reports/reports.server.js +1 -1
  249. package/src/modules/spots/spots.server.js +1 -1
  250. package/src/modules/wallet/wallet.server.js +1 -1
  251. package/dist/_virtual/alignment-pattern.js +0 -5
  252. package/dist/_virtual/alignment-pattern.js.map +0 -1
  253. package/dist/_virtual/browser.js +0 -8
  254. package/dist/_virtual/browser.js.map +0 -1
  255. package/dist/_virtual/browser2.js +0 -5
  256. package/dist/_virtual/browser2.js.map +0 -1
  257. package/dist/_virtual/canvas.js +0 -5
  258. package/dist/_virtual/canvas.js.map +0 -1
  259. package/dist/_virtual/dijkstra.js +0 -5
  260. package/dist/_virtual/dijkstra.js.map +0 -1
  261. package/dist/_virtual/error-correction-code.js +0 -5
  262. package/dist/_virtual/error-correction-code.js.map +0 -1
  263. package/dist/_virtual/error-correction-level.js +0 -5
  264. package/dist/_virtual/error-correction-level.js.map +0 -1
  265. package/dist/_virtual/finder-pattern.js +0 -5
  266. package/dist/_virtual/finder-pattern.js.map +0 -1
  267. package/dist/_virtual/format-info.js +0 -5
  268. package/dist/_virtual/format-info.js.map +0 -1
  269. package/dist/_virtual/galois-field.js +0 -5
  270. package/dist/_virtual/galois-field.js.map +0 -1
  271. package/dist/_virtual/mask-pattern.js +0 -5
  272. package/dist/_virtual/mask-pattern.js.map +0 -1
  273. package/dist/_virtual/mode.js +0 -5
  274. package/dist/_virtual/mode.js.map +0 -1
  275. package/dist/_virtual/polynomial.js +0 -5
  276. package/dist/_virtual/polynomial.js.map +0 -1
  277. package/dist/_virtual/qrcode.js +0 -5
  278. package/dist/_virtual/qrcode.js.map +0 -1
  279. package/dist/_virtual/regex.js +0 -5
  280. package/dist/_virtual/regex.js.map +0 -1
  281. package/dist/_virtual/segments.js +0 -5
  282. package/dist/_virtual/segments.js.map +0 -1
  283. package/dist/_virtual/svg-tag.js +0 -5
  284. package/dist/_virtual/svg-tag.js.map +0 -1
  285. package/dist/_virtual/utils.js +0 -5
  286. package/dist/_virtual/utils.js.map +0 -1
  287. package/dist/_virtual/utils2.js +0 -5
  288. package/dist/_virtual/utils2.js.map +0 -1
  289. package/dist/_virtual/version-check.js +0 -5
  290. package/dist/_virtual/version-check.js.map +0 -1
  291. package/dist/_virtual/version.js +0 -5
  292. package/dist/_virtual/version.js.map +0 -1
  293. package/dist/index-_Edcmck_.js +0 -170
  294. package/dist/martyrs/dist/main-xL-jtBkT.js.map +0 -1
  295. package/dist/martyrs/node_modules/.pnpm/bignumber.js@9.1.2/node_modules/bignumber.js/bignumber.js +0 -1336
  296. package/dist/martyrs/node_modules/.pnpm/bignumber.js@9.1.2/node_modules/bignumber.js/bignumber.js.map +0 -1
  297. package/dist/martyrs/src/components/Button/Button.vue2.js.map +0 -1
  298. package/dist/martyrs/src/components/Loader/Loader.vue.js.map +0 -1
  299. package/dist/martyrs/src/components/Menu/Menu.vue.js.map +0 -1
  300. package/dist/martyrs/src/components/Select/Select.vue.js.map +0 -1
  301. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js +0 -166
  302. package/dist/martyrs/src/modules/auth/views/components/pages/EnterCode.vue.js.map +0 -1
  303. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js +0 -118
  304. package/dist/martyrs/src/modules/auth/views/components/pages/EnterPassword.vue.js.map +0 -1
  305. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js +0 -360
  306. package/dist/martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue.js.map +0 -1
  307. package/dist/martyrs/src/modules/auth/views/store/twofa.js +0 -40
  308. package/dist/martyrs/src/modules/auth/views/store/twofa.js.map +0 -1
  309. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardBalanceReplenished.vue.js +0 -43
  310. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardBalanceReplenished.vue.js.map +0 -1
  311. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js +0 -47
  312. package/dist/martyrs/src/modules/wallet/views/components/blocks/CardDeposit.vue.js.map +0 -1
  313. package/dist/martyrs/src/modules/wallet/views/components/blocks/CashDeposit.vue.js +0 -29
  314. package/dist/martyrs/src/modules/wallet/views/components/blocks/CashDeposit.vue.js.map +0 -1
  315. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +0 -89
  316. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js.map +0 -1
  317. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDepositProcessing.vue.js +0 -136
  318. package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDepositProcessing.vue.js.map +0 -1
  319. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +0 -238
  320. package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js.map +0 -1
  321. package/dist/martyrs/src/modules/wallet/views/localization/wallet.json.js +0 -9
  322. package/dist/martyrs/src/modules/wallet/views/localization/wallet.json.js.map +0 -1
  323. package/dist/martyrs/src/modules/wallet/views/store/wallet.store.js +0 -134
  324. package/dist/martyrs/src/modules/wallet/views/store/wallet.store.js.map +0 -1
  325. package/dist/node_modules/.pnpm/dijkstrajs@1.0.3/node_modules/dijkstrajs/dijkstra.js +0 -106
  326. package/dist/node_modules/.pnpm/dijkstrajs@1.0.3/node_modules/dijkstrajs/dijkstra.js.map +0 -1
  327. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/browser.js +0 -79
  328. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/browser.js.map +0 -1
  329. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/can-promise.js +0 -14
  330. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/can-promise.js.map +0 -1
  331. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/alignment-pattern.js +0 -43
  332. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/alignment-pattern.js.map +0 -1
  333. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/alphanumeric-data.js +0 -85
  334. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/alphanumeric-data.js.map +0 -1
  335. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/bit-buffer.js +0 -40
  336. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/bit-buffer.js.map +0 -1
  337. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/bit-matrix.js +0 -34
  338. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/bit-matrix.js.map +0 -1
  339. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/byte-data.js +0 -36
  340. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/byte-data.js.map +0 -1
  341. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/error-correction-code.js +0 -367
  342. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/error-correction-code.js.map +0 -1
  343. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/error-correction-level.js +0 -52
  344. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/error-correction-level.js.map +0 -1
  345. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/finder-pattern.js +0 -25
  346. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/finder-pattern.js.map +0 -1
  347. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/format-info.js +0 -24
  348. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/format-info.js.map +0 -1
  349. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/galois-field.js +0 -38
  350. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/galois-field.js.map +0 -1
  351. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/kanji-data.js +0 -46
  352. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/kanji-data.js.map +0 -1
  353. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/mask-pattern.js +0 -149
  354. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/mask-pattern.js.map +0 -1
  355. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/mode.js +0 -90
  356. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/mode.js.map +0 -1
  357. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/numeric-data.js +0 -41
  358. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/numeric-data.js.map +0 -1
  359. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/polynomial.js +0 -44
  360. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/polynomial.js.map +0 -1
  361. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/qrcode.js +0 -279
  362. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/qrcode.js.map +0 -1
  363. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/reed-solomon-encoder.js +0 -38
  364. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/reed-solomon-encoder.js.map +0 -1
  365. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/regex.js +0 -33
  366. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/regex.js.map +0 -1
  367. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/segments.js +0 -201
  368. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/segments.js.map +0 -1
  369. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js +0 -84
  370. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/utils.js.map +0 -1
  371. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/version-check.js +0 -14
  372. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/version-check.js.map +0 -1
  373. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/version.js +0 -107
  374. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/core/version.js.map +0 -1
  375. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/canvas.js +0 -61
  376. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/canvas.js.map +0 -1
  377. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/svg-tag.js +0 -64
  378. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/svg-tag.js.map +0 -1
  379. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js +0 -87
  380. package/dist/node_modules/.pnpm/qrcode@1.5.4/node_modules/qrcode/lib/renderer/utils.js.map +0 -1
  381. package/dist/profile.schema-CjLOfG7b.js +0 -92
  382. package/src/modules/auth/controllers/middlewares/visitor.logger.js +0 -75
  383. package/src/modules/auth/controllers/routes/twofa.routes.js +0 -8
  384. package/src/modules/auth/controllers/services/twofa.service.js +0 -30
  385. package/src/modules/auth/models/request.model.js +0 -14
  386. package/src/modules/auth/models/visitor.model.js +0 -11
  387. package/src/modules/auth/views/components/pages/EnterCode.vue +0 -204
  388. package/src/modules/auth/views/components/pages/EnterPassword.vue +0 -123
  389. package/src/modules/auth/views/components/sections/ProfileEditCredentials.vue +0 -329
  390. package/src/modules/auth/views/store/twofa.js +0 -70
  391. package/src/modules/auth//320/220/320/240/320/245/320/230/320/242/320/225/320/232/320/242/320/243/320/240/320/220.md +0 -445
@@ -1,7 +1,7 @@
1
1
  import { ref, onMounted, createElementBlock, openBlock, createElementVNode, createVNode, withCtx } from "vue";
2
2
  /* empty css */
3
3
  import Field from "../../../../../components/Field/Field.vue.js";
4
- import _sfc_main$1 from "../../../../../components/Button/Button.vue2.js";
4
+ import _sfc_main$1 from "../../../../../components/Button/Button.vue.js";
5
5
  import { useRoute, useRouter } from "vue-router";
6
6
  import { state, actions } from "../../store/auth.js";
7
7
  import invitesStore from "../../../../organizations/store/invites.store.js";
@@ -1,19 +1,19 @@
1
1
  import { ref, onServerPrefetch, onMounted, resolveComponent, createElementBlock, openBlock, createElementVNode, createVNode, createBlock, createCommentVNode, unref, withCtx, toDisplayString, Fragment, renderList, normalizeClass, resolveDynamicComponent } from "vue";
2
2
  /* empty css */
3
3
  /* empty css */
4
- /* empty css */
5
4
  import _sfc_main$1 from "../../../../../components/Dropdown/Dropdown.vue.js";
6
- import _sfc_main$6 from "../../../../../components/Menu/Menu.vue.js";
7
- import _sfc_main$b from "../../../../../components/Menu/MenuItem.vue.js";
5
+ import _sfc_main$7 from "../../../../../components/Menu/Menu.vue2.js";
6
+ import _sfc_main$c from "../../../../../components/Menu/MenuItem.vue.js";
8
7
  import _sfc_main$3 from "../../../../organizations/components/elements/ButtonToggleMembership.vue.js";
9
8
  import _sfc_main$2 from "../../../../reports/components/sections/FormReport.vue.js";
10
- import _sfc_main$5 from "../../../../organizations/components/blocks/Socials.vue.js";
11
- import _sfc_main$a from "../../../../icons/entities/IconEvents.vue.js";
12
- import _sfc_main$9 from "../../../../icons/entities/IconGroups.vue.js";
13
- import _sfc_main$8 from "../../../../icons/entities/IconCommunity.vue.js";
14
- import _sfc_main$7 from "../../../../icons/entities/IconOrders.vue.js";
9
+ import _sfc_main$6 from "../../../../organizations/components/blocks/Socials.vue.js";
10
+ import _sfc_main$b from "../../../../icons/entities/IconEvents.vue.js";
11
+ import _sfc_main$a from "../../../../icons/entities/IconGroups.vue.js";
12
+ import _sfc_main$9 from "../../../../icons/entities/IconCommunity.vue.js";
13
+ import _sfc_main$8 from "../../../../icons/entities/IconOrders.vue.js";
15
14
  import _sfc_main$4 from "../../../../icons/navigation/IconEdit.vue.js";
16
15
  import PlaceholderUserpic from "../../../../icons/placeholders/PlaceholderUserpic.vue.js";
16
+ import _sfc_main$5 from "../../../../core/views/components/elements/OnlineIndicator.vue.js";
17
17
  import { useRoute, useRouter } from "vue-router";
18
18
  import * as auth from "../../store/auth.js";
19
19
  import { state as state$1, actions as actions$1 } from "../../store/auth.js";
@@ -34,17 +34,18 @@ const _hoisted_3 = {
34
34
  };
35
35
  const _hoisted_4 = { class: "flex-center pos-relative flex flex-column t-center w-100 mn-b-regular radius-medium pd-medium bg-light" };
36
36
  const _hoisted_5 = { class: "bg-black pd-thin radius-small" };
37
- const _hoisted_6 = ["src"];
38
- const _hoisted_7 = { class: "mn-b-thin" };
39
- const _hoisted_8 = {
40
- key: 4,
37
+ const _hoisted_6 = { class: "pos-relative mn-b-small" };
38
+ const _hoisted_7 = ["src"];
39
+ const _hoisted_8 = { class: "mn-b-thin" };
40
+ const _hoisted_9 = {
41
+ key: 2,
41
42
  class: "mn-b-thin t-main fw-semi"
42
43
  };
43
- const _hoisted_9 = { class: "mn-b-small p-regular" };
44
- const _hoisted_10 = { class: "mn-b-medium flex-center flex-nowrap flex" };
45
- const _hoisted_11 = { class: "fw-semi mn-b-small" };
46
- const _hoisted_12 = {
47
- key: 6,
44
+ const _hoisted_10 = { class: "mn-b-small p-regular" };
45
+ const _hoisted_11 = { class: "mn-b-medium flex-center flex-nowrap flex" };
46
+ const _hoisted_12 = { class: "fw-semi mn-b-small" };
47
+ const _hoisted_13 = {
48
+ key: 4,
48
49
  class: "mn-t-small mn-b-thin"
49
50
  };
50
51
  const _sfc_main = {
@@ -59,25 +60,25 @@ const _sfc_main = {
59
60
  events: {
60
61
  displayName: "Events",
61
62
  path: (_id) => `/users/${_id}/events`,
62
- icon: _sfc_main$a,
63
+ icon: _sfc_main$b,
63
64
  visible: () => true
64
65
  },
65
66
  organizations: {
66
67
  displayName: "Groups",
67
68
  path: (_id) => `/users/${_id}/organizations`,
68
- icon: _sfc_main$9,
69
+ icon: _sfc_main$a,
69
70
  visible: () => true
70
71
  },
71
72
  community: {
72
73
  displayName: "Posts",
73
74
  path: (_id) => `/users/${_id}/blogposts`,
74
- icon: _sfc_main$8,
75
+ icon: _sfc_main$9,
75
76
  visible: () => true
76
77
  },
77
78
  orders: {
78
79
  displayName: "Orders",
79
80
  path: (_id) => `/users/${_id}/orders`,
80
- icon: _sfc_main$7,
81
+ icon: _sfc_main$8,
81
82
  visible: (auth2) => auth2.state.user && (auth2.state.user._id === route.params._id || auth2.state.access && auth2.state.access.roles && (auth2.state.access.roles.includes("ROLE_MODERATOR") || auth2.state.access.roles.includes("ROLE_ADMIN")))
82
83
  }
83
84
  };
@@ -163,28 +164,35 @@ const _sfc_main = {
163
164
  })),
164
165
  class: "cursor-pointer pos-absolute pos-t-regular pos-r-regular i-medium t-transp"
165
166
  })) : createCommentVNode("", true),
166
- state.current.profile.photo && state.current.profile.photo.length > 0 ? (openBlock(), createElementBlock("img", {
167
- key: 2,
168
- loading: "lazy",
169
- src: (_ctx.FILE_SERVER_URL || "") + state.current.profile.photo,
170
- class: "radius-extra bg-white mn-b-small object-fit-cover i-extra"
171
- }, null, 8, _hoisted_6)) : (openBlock(), createBlock(PlaceholderUserpic, {
172
- key: 3,
173
- class: "radius-medium mn-b-small i-extra"
174
- })),
175
- createElementVNode("h3", _hoisted_7, toDisplayString(state.current.profile.name ? state.current.profile.name : "Anonymous"), 1),
176
- state.current.username ? (openBlock(), createElementBlock("p", _hoisted_8, " @" + toDisplayString(state.current.username ? state.current.username : "Not specified"), 1)) : createCommentVNode("", true),
177
- createElementVNode("p", _hoisted_9, toDisplayString(state.current.profile.description ? state.current.profile.description : "Bio not specified"), 1),
178
- createElementVNode("div", _hoisted_10, [
167
+ createElementVNode("div", _hoisted_6, [
168
+ state.current.profile.photo && state.current.profile.photo.length > 0 ? (openBlock(), createElementBlock("img", {
169
+ key: 0,
170
+ loading: "lazy",
171
+ src: (_ctx.FILE_SERVER_URL || "") + state.current.profile.photo,
172
+ class: "radius-extra bg-white object-fit-cover i-extra"
173
+ }, null, 8, _hoisted_7)) : (openBlock(), createBlock(PlaceholderUserpic, {
174
+ key: 1,
175
+ class: "radius-medium i-extra"
176
+ })),
177
+ state.current._id ? (openBlock(), createBlock(_sfc_main$5, {
178
+ key: 2,
179
+ userId: state.current._id,
180
+ class: "pos-absolute pos-r-0 pos-b-0"
181
+ }, null, 8, ["userId"])) : createCommentVNode("", true)
182
+ ]),
183
+ createElementVNode("h3", _hoisted_8, toDisplayString(state.current.profile.name ? state.current.profile.name : "Anonymous"), 1),
184
+ state.current.username ? (openBlock(), createElementBlock("p", _hoisted_9, " @" + toDisplayString(state.current.username ? state.current.username : "Not specified"), 1)) : createCommentVNode("", true),
185
+ createElementVNode("p", _hoisted_10, toDisplayString(state.current.profile.description ? state.current.profile.description : "Bio not specified"), 1),
186
+ createElementVNode("div", _hoisted_11, [
179
187
  (openBlock(true), createElementBlock(Fragment, null, renderList(state.current.roles, (role, index) => {
180
188
  return openBlock(), createElementBlock("div", {
181
189
  class: normalizeClass(["pd-thin radius-small fw-semi bg-white", { "mn-r-thin": index !== state.current.roles.length - 1 }])
182
190
  }, toDisplayString(role.icon) + " " + toDisplayString(role.name), 3);
183
191
  }), 256))
184
192
  ]),
185
- createElementVNode("p", _hoisted_11, " 👨‍👨‍👧‍👧 " + toDisplayString(state.current.numberOfSubscribers) + " followers ", 1),
193
+ createElementVNode("p", _hoisted_12, " 👨‍👨‍👧‍👧 " + toDisplayString(state.current.numberOfSubscribers) + " followers ", 1),
186
194
  state$1.user._id && unref(route).params._id && unref(route).params._id !== state$1.user._id ? (openBlock(), createBlock(_sfc_main$3, {
187
- key: 5,
195
+ key: 3,
188
196
  user: state$1.user._id,
189
197
  type: "user",
190
198
  role: "subscriber",
@@ -194,8 +202,8 @@ const _sfc_main = {
194
202
  onUpdateMembership: _cache[2] || (_cache[2] = (event) => handleMembershipUpdate(event, "isSubscriber", "numberOfSubscribers")),
195
203
  class: "w-min mn-b-medium mn-r-auto mn-l-auto"
196
204
  }, null, 8, ["user", "target", "status"])) : createCommentVNode("", true),
197
- Object.values(state.current.socials).some((value) => value) ? (openBlock(), createElementBlock("h4", _hoisted_12, " Find Me in Socials ")) : createCommentVNode("", true),
198
- createVNode(_sfc_main$5, {
205
+ Object.values(state.current.socials).some((value) => value) ? (openBlock(), createElementBlock("h4", _hoisted_13, " Find Me in Socials ")) : createCommentVNode("", true),
206
+ createVNode(_sfc_main$6, {
199
207
  telegram: state.current.socials.telegram,
200
208
  facebook: state.current.socials.facebook,
201
209
  instagram: state.current.socials.instagram,
@@ -204,11 +212,11 @@ const _sfc_main = {
204
212
  }, null, 8, ["telegram", "facebook", "instagram", "twitter"])
205
213
  ]),
206
214
  createVNode(_component_RouterView),
207
- createVNode(_sfc_main$6, { class: "mn-b-regular bg-light" }, {
215
+ createVNode(_sfc_main$7, { class: "mn-b-regular bg-light" }, {
208
216
  default: withCtx(() => [
209
217
  (openBlock(), createElementBlock(Fragment, null, renderList(modules, (module, moduleName) => {
210
218
  return openBlock(), createElementBlock(Fragment, { key: moduleName }, [
211
- unref(isModuleInstalled)(moduleName) && (!module.visible || module.visible(auth)) ? (openBlock(), createBlock(_sfc_main$b, {
219
+ unref(isModuleInstalled)(moduleName) && (!module.visible || module.visible(auth)) ? (openBlock(), createBlock(_sfc_main$c, {
212
220
  key: 0,
213
221
  onClick: ($event) => unref(router).push(module.path(unref(route).params._id)),
214
222
  class: "profile-menu-item cursor-pointer"
@@ -228,12 +236,12 @@ const _sfc_main = {
228
236
  ]),
229
237
  _: 1
230
238
  }),
231
- state$1.user._id === unref(route).params._id ? (openBlock(), createBlock(_sfc_main$6, {
239
+ state$1.user._id === unref(route).params._id ? (openBlock(), createBlock(_sfc_main$7, {
232
240
  key: 0,
233
241
  class: "bg-light"
234
242
  }, {
235
243
  default: withCtx(() => [
236
- createVNode(_sfc_main$b, {
244
+ createVNode(_sfc_main$c, {
237
245
  onClick: _cache[3] || (_cache[3] = ($event) => unref(router).push({
238
246
  name: "Notifications",
239
247
  params: {
@@ -247,7 +255,7 @@ const _sfc_main = {
247
255
  ])),
248
256
  _: 1
249
257
  }),
250
- createVNode(_sfc_main$b, {
258
+ createVNode(_sfc_main$c, {
251
259
  onClick: _cache[4] || (_cache[4] = ($event) => unref(router).push({
252
260
  name: "Profile Edit Profile",
253
261
  params: {
@@ -261,7 +269,7 @@ const _sfc_main = {
261
269
  ])),
262
270
  _: 1
263
271
  }),
264
- createVNode(_sfc_main$b, {
272
+ createVNode(_sfc_main$c, {
265
273
  onClick: _cache[5] || (_cache[5] = ($event) => unref(router).push({
266
274
  name: "Legal",
267
275
  params: {
@@ -275,7 +283,7 @@ const _sfc_main = {
275
283
  ])),
276
284
  _: 1
277
285
  }),
278
- createVNode(_sfc_main$b, {
286
+ createVNode(_sfc_main$c, {
279
287
  class: "cursor-pointer",
280
288
  onClick: _cache[6] || (_cache[6] = ($event) => logout())
281
289
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"Profile.vue.js","sources":["../../../../../../../../src/modules/auth/views/components/pages/Profile.vue"],"sourcesContent":["<template>\n\t<div \n\t\tclass=\"for-transition bg-white w-100\"\n\t>\n\t\t<div \n\t\t\tv-if=\"users.state.current?.status === 'removed'\"\n\t\t\tclass=\"flex-center flex pd-medium radius-big bg-light uppercase fw-semi w-100 h-100\"\n\t\t>\n\t\t\tSorry, user has been removed.\n\t\t</div>\n\n\t\t<div \n\t\t\tv-else\n\t\t\t_id=\"dash\" \n\t\t\tclass=\"pd-thin w-100\"\n\t\t>\n\t\t\t<!-- <Completion \n\t\t\t\tv-if=\"route.params._id === auth.state.user._id && show\" \n\t\t :user=\"auth.state.user._id\"\n\t\t :target=\"users.state.current\"\n\t\t :cta=\"false\" \n\t\t text_cta=\"Fill\"\n\t\t text=\"Profile completed at\"\n\t\t class=\"mn-b-medium mn-b-regular pd-medium radius-semi t-white bg-second\"\n\t\t\t/> -->\n\n\t\t\t<section \n\t\t\t\tclass=\"flex-center pos-relative flex flex-column t-center w-100 mn-b-regular radius-medium pd-medium bg-light\"\n\t\t\t>\n\n\t\t\t\t<Dropdown \n\t\t\t\t\tv-if=\"route.params._id && route.params._id !== auth.state.user._id\"\n\t\t\t\t\t:label=\"'...'\" \n\t\t\t\t\t:align=\"'right'\"\n\t\t\t\t\tclass=\"cursor-pointer pos-absolute pos-r-0 pos-t-0 pd-thin radius-extra \"\n\t\t\t\t>\n\t\t\t\t\t<section \n\t\t\t\t\t\tclass=\"bg-black pd-thin radius-small\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<FormReport \n\t\t\t\t\t\t\t:user=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:type=\"'user'\" \n\t\t\t\t\t\t\t:target=\"users.state.current._id\" \n\t\t\t\t\t\t\t:text=\"'Report'\" \n\t\t\t\t\t\t\tclass=\"w-100\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<button \n\t\t\t\t\t\t\t\tclass=\"w-100 bg-black br-1px br-white-transp-20 t-white button-small button\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tReport\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</FormReport>\n\n\t\t\t\t\t\t<ButtonToggleMembership\n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t :user=\"auth.state.user._id\"\n\t\t\t\t :type=\"'user'\" \n\t\t\t \t:role=\"'blocked'\" \n\t\t\t\t :target=\"users.state.current._id\" \n\t\t\t\t :status=\"users.state.current.isBlocked\" \n\t\t\t\t :text=\"{create: 'Block', remove: 'Unblock'}\"\n\t\t\t\t @updateMembership=\"event => handleMembershipUpdate(event, 'isBlocked')\"\n\t\t\t\t class=\"t-white mn-t-thin bg-red\" \n\t\t\t \t/>\n\t\t\t\t\t</section>\n\t </Dropdown>\t\n\n\n\t\t\t\t<IconEdit\n\t\t\t\t\tv-if=\"route.params._id === auth.state.user._id\"\n\t\t\t\t\t@click=\"$router.push({\n\t\t\t\t\t\tname: 'Profile Edit Profile', \n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t_id: auth.state.user._id\n\t\t\t\t\t\t}\n\t\t\t\t\t})\" \n\t\t\t\t\tclass=\"cursor-pointer pos-absolute pos-t-regular pos-r-regular i-medium t-transp\"\n\t\t\t\t/>\n\n\t\t\t\t<img loading=\"lazy\" \n\t\t\t\t\tv-if=\"users.state.current.profile.photo && users.state.current.profile.photo.length > 0\" \n\t\t\t\t\t:src=\"(FILE_SERVER_URL || '') + users.state.current.profile.photo\" \n\t\t\t\t\tclass=\"radius-extra bg-white mn-b-small object-fit-cover i-extra\" \n\t\t\t\t/>\n\t\t\t\t\n\t\t\t\t<PlaceholderUserpic \n\t\t\t\t\tv-else \n\t\t\t\t\tclass=\"radius-medium mn-b-small i-extra\"\n\t\t\t\t/>\n\n\t\t\t\t<h3 \n\t\t\t\t\tclass=\"mn-b-thin\"\n\t\t\t\t>\n\t\t\t\t\t{{users.state.current.profile.name ? users.state.current.profile.name : 'Anonymous' }}\n\t\t\t\t</h3>\n\t\t\t\t\n\t\t\t\t<p \n\t\t\t\t\tv-if=\"users.state.current.username\"\n\t\t\t\t\tclass=\"mn-b-thin t-main fw-semi\"\n\t\t\t\t>\n\t\t\t\t\t@{{ users.state.current.username ? users.state.current.username : 'Not specified' }}\n\t\t\t\t</p>\n\n\t\t\t\t<p \n\t\t\t\t\tclass=\"mn-b-small p-regular\"\n\t\t\t\t>\n\t\t\t\t {{ users.state.current.profile.description ? users.state.current.profile.description : 'Bio not specified' }}\n\t\t\t\t</p>\n\t\t\t\t\n\t\t\t\t<div class=\"mn-b-medium flex-center flex-nowrap flex\">\n\t\t\t\t\t<div \n\t\t\t\t\t v-for=\"(role,index) in users.state.current.roles\" \n\t\t\t\t\t class=\"pd-thin radius-small fw-semi bg-white\" \n\t\t\t\t\t :class=\"{'mn-r-thin': index !== users.state.current.roles.length - 1}\"\n\t\t\t\t\t >\n\t\t\t\t\t\t{{role.icon}}\n\t\t\t\t\t\t{{role.name}}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\t\t\t\n\n\t\t\t\t<p \n\t\t\t\t\tclass=\"fw-semi mn-b-small\"\n\t\t\t\t>\n\t\t\t\t\t<!-- 👍 3 212 likes · -->\n\t\t\t\t\t<!-- 💬 342 comments · -->\n\t\t\t\t\t👨‍👨‍👧‍👧 {{users.state.current.numberOfSubscribers}} followers\n\t\t\t\t</p>\n\t\t\t\t\n\t \t<ButtonToggleMembership\n\t \t\tv-if=\"auth.state.user._id && route.params._id && route.params._id !== auth.state.user._id\"\n\t\t :user=\"auth.state.user._id\"\n\t\t :type=\"'user'\" \n\t \t:role=\"'subscriber'\" \n\t\t :target=\"users.state.current._id\" \n\t\t :status=\"users.state.current.isSubscriber\" \n\t\t\t\t\t:text=\"{create: 'Follow', remove: 'Unfollow'}\"\n\t\t @updateMembership=\"event => handleMembershipUpdate(event, 'isSubscriber', 'numberOfSubscribers')\"\n\t\t class=\"w-min mn-b-medium\tmn-r-auto mn-l-auto\" \n\t \t/>\n\n\t \t<h4 \n\t \tv-if=\"Object.values(users.state.current.socials).some(value => value)\" \n\t \tclass=\"mn-t-small mn-b-thin\"\n\t >\n\t \t\tFind Me in Socials\n\t \t</h4>\n\t \t<Socials \n\t \t\t:telegram=\"users.state.current.socials.telegram\"\n\t \t\t:facebook=\"users.state.current.socials.facebook\"\n\t \t\t:instagram=\"users.state.current.socials.instagram\"\n\t \t\t:twitter=\"users.state.current.socials.twitter\"\n\t \t\tclass=\"mn-r-auto mn-l-auto\"\n\t \t/>\n\n\t\t\t</section>\n\t\t\t\n\t\t\t<RouterView />\n\n\t\t\t<Menu class=\"mn-b-regular bg-light\">\n\t <template v-for=\"(module, moduleName) in modules\" :key=\"moduleName\">\n\t <MenuItem \n\t v-if=\"isModuleInstalled(moduleName) && (!module.visible || module.visible(auth))\"\n\t @click=\"router.push(module.path(route.params._id))\" \n\t class=\"profile-menu-item cursor-pointer\"\n\t >\n\t <component \n\t :is=\"module.icon\" \n\t v-if=\"module.icon\"\n\t class=\"i-medium\" \n\t :icon=\"true\"\n\t />\n\t <span>{{ module.displayName }}</span>\n\t </MenuItem>\n\t </template>\n \t\t</Menu>\n\t\t\t \n\t\t\t<Menu \n\t\t\t\tv-if=\"auth.state.user._id === route.params._id\"\n\t\t\t\tclass=\"bg-light\"\n\t\t\t>\n\t\t\t\t<MenuItem \n\t\t\t \t@click=\"router.push({\n\t\t\t \t\tname: 'Notifications', \n\t\t\t \t\tparams: {\n\t\t\t \t\t\t_id: route.params._id\n\t\t\t \t\t}\n\t\t\t \t})\" \n\t\t\t \tclass=\"cursor-pointer\">\n\t\t\t <span>\n\t\t\t \tNotifications\n\t\t\t </span>\n\t\t\t </MenuItem>\n\t\t\t <MenuItem \n\t\t\t \t@click=\"router.push({\n\t\t\t \t\tname: 'Profile Edit Profile', \n\t\t\t \t\tparams: {\n\t\t\t \t\t\t_id: route.params._id\n\t\t\t \t\t}\n\t\t\t \t})\" \n\t\t\t \tclass=\"cursor-pointer\">\n\t\t\t <span>\n\t\t\t \tSettings\n\t\t\t </span>\n\t\t\t </MenuItem>\n\n\t\t\t <MenuItem \n\t\t\t \t@click=\"router.push({\n\t\t\t \t\tname: 'Legal', \n\t\t\t \t\tparams: {\n\t\t\t \t\t\t_id: route.params._id\n\t\t\t \t\t}\n\t\t\t \t})\" \n\t\t\t \tclass=\"cursor-pointer\">\n\t\t\t <span>\n\t\t\t \tAbout\n\t\t\t </span>\n\t\t\t </MenuItem>\n\t\t\t \n\t\t\t <MenuItem \n\t\t\t \tclass=\"cursor-pointer\"\n\t\t\t\t\t@click=\"logout()\"\n\t\t\t >\n\t\t\t <span \n\t\t\t \tclass=\"t-red\"\n\t\t\t >\n\t\t\t \tLogout\n\t\t\t </span>\n\t\t\t </MenuItem>\n\t\t\t</Menu>\n\n\t\t</div>\n\t</div>\n</template>\n\n<script setup>\n// Import components\nimport Field from '@martyrs/src/components/Field/Field.vue'\nimport Button from '@martyrs/src/components/Button/Button.vue'\nimport Dropdown from \"@martyrs/src/components/Dropdown/Dropdown.vue\";\nimport Completion from '@martyrs/src/components/Completion/Completion.vue'\n// Mobile Module\nimport Menu from '@martyrs/src/components/Menu/Menu.vue'\nimport MenuItem from '@martyrs/src/components/Menu/MenuItem.vue'\n// Org Module\nimport ButtonToggleMembership from '@martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue'\n// Report Module\nimport FormReport from '@martyrs/src/modules/reports/components/sections/FormReport.vue' \n// Community Module \nimport Activity from '@martyrs/src/modules/community/components/blocks/Activity.vue'; \nimport Socials from '@martyrs/src/modules/organizations/components/blocks/Socials.vue'\n// Icons Module\nimport IconEvents from '@martyrs/src/modules/icons/entities/IconEvents.vue'\nimport IconGroups from '@martyrs/src/modules/icons/entities/IconGroups.vue'\nimport IconCommunity from '@martyrs/src/modules/icons/entities/IconCommunity.vue'\nimport IconOrders from '@martyrs/src/modules/icons/entities/IconOrders.vue'\n\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\n\nimport PlaceholderUserpic from '@martyrs/src/modules/icons/placeholders/PlaceholderUserpic.vue'\n// Import libs\nimport { computed, watch, onMounted, onServerPrefetch, ref, onBeforeMount, inject } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\n\n// Import state\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\nimport * as users from '@martyrs/src/modules/auth/views/store/users.js'\nimport membershipsStore from '@martyrs/src/modules/organizations/store/memberships.store.js'\nimport { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js'\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\n// Accessing router\nconst route = useRoute()\nconst router = useRouter()\n// Get organization _id from cookie\nconst show = ref(false)\n\nconst store = useStore()\nconst { isModuleInstalled } = useGlobalMixins()\n\nconst modules = {\n events: {\n displayName: 'Events',\n path: (_id) => `/users/${_id}/events`,\n icon: IconEvents,\n visible: () => true\n },\n organizations: {\n displayName: 'Groups',\n path: (_id) => `/users/${_id}/organizations`,\n icon: IconGroups,\n visible: () => true\n },\n community: {\n displayName: 'Posts',\n path: (_id) => `/users/${_id}/blogposts`,\n icon: IconCommunity,\n visible: () => true\n },\n orders: {\n displayName: 'Orders',\n path: (_id) => `/users/${_id}/orders`,\n icon: IconOrders,\n visible: (auth) => auth.state.user && (\n auth.state.user._id === route.params._id ||\n (auth.state.access && auth.state.access.roles &&\n (auth.state.access.roles.includes('ROLE_MODERATOR') ||\n auth.state.access.roles.includes('ROLE_ADMIN'))\n )\n )\n }\n}\n\n\n// Функция загрузки данных пользователя\nasync function fetchUser() {\n try {\n const result = await users.actions.read({ _id: route.params._id, user: auth.state.user?._id });\n // Если пользователь не найден - устанавливаем 404\n if (!result || result.length === 0 || !users.state.current?._id) {\n store.core.state.notFound = true;\n return false;\n }\n return true;\n } catch (error) {\n console.error('Error fetching user:', error);\n store.core.state.notFound = true;\n return false;\n }\n}\n\n// SSR: загружаем данные на сервере для SEO\nonServerPrefetch(async () => {\n console.log('[SSR-404] Profile onServerPrefetch, route._id:', route.params._id);\n await fetchUser();\n console.log('[SSR-404] Profile fetchUser completed');\n});\n\n// Client: загружаем данные если еще не загружены (после гидратации)\nonMounted(async () => {\n // Если данные уже загружены на сервере (SSR) - не загружаем повторно\n if (!users.state.current?._id || users.state.current._id !== route.params._id) {\n await fetchUser();\n }\n show.value = true;\n})\n\nconst handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n membershipsStore.handleMembershipUpdate(users.state.current, membership, status, target, statusName, statusNumber)\n};\n\nfunction logout () {\n auth.actions.logout()\n\n router.push({name: 'Sign In'})\n}\n</script>\n\n<style lang=\"scss\">\n\t#header {\n\t\t// height: 3rem;\n\t}\n</style>\n"],"names":["IconEvents","IconGroups","IconCommunity","IconOrders","auth","users.actions","auth.state","users.state","auth.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8QA,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAExB,UAAM,OAAO,IAAI,KAAK;AAEtB,UAAM,QAAQ,SAAQ;AACtB,UAAM,EAAE,kBAAiB,IAAK,gBAAe;AAE7C,UAAM,UAAU;AAAA,MACd,QAAQ;AAAA,QACN,aAAa;AAAA,QACb,MAAM,CAAC,QAAQ,UAAU,GAAG;AAAA,QAC5B,MAAMA;AAAAA,QACN,SAAS,MAAM;AAAA,MACnB;AAAA,MACE,eAAe;AAAA,QACb,aAAa;AAAA,QACb,MAAM,CAAC,QAAQ,UAAU,GAAG;AAAA,QAC5B,MAAMC;AAAAA,QACN,SAAS,MAAM;AAAA,MACnB;AAAA,MACE,WAAW;AAAA,QACT,aAAa;AAAA,QACb,MAAM,CAAC,QAAQ,UAAU,GAAG;AAAA,QAC5B,MAAMC;AAAAA,QACN,SAAS,MAAM;AAAA,MACnB;AAAA,MACE,QAAQ;AAAA,QACN,aAAa;AAAA,QACb,MAAM,CAAC,QAAQ,UAAU,GAAG;AAAA,QAC5B,MAAMC;AAAAA,QACN,SAAS,CAACC,UAASA,MAAK,MAAM,SAC5BA,MAAK,MAAM,KAAK,QAAQ,MAAM,OAAO,OACpCA,MAAK,MAAM,UAAUA,MAAK,MAAM,OAAO,UACrCA,MAAK,MAAM,OAAO,MAAM,SAAS,gBAAgB,KACjDA,MAAK,MAAM,OAAO,MAAM,SAAS,YAAY;AAAA,MAGtD;AAAA,IACA;AAIA,mBAAe,YAAY;AACzB,UAAI;AACF,cAAM,SAAS,MAAMC,QAAc,KAAK,EAAE,KAAK,MAAM,OAAO,KAAK,MAAMC,QAAW,MAAM,IAAG,CAAE;AAE7F,YAAI,CAAC,UAAU,OAAO,WAAW,KAAK,CAACC,MAAY,SAAS,KAAK;AAC/D,gBAAM,KAAK,MAAM,WAAW;AAC5B,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT,SAAS,OAAO;AACd,gBAAQ,MAAM,wBAAwB,KAAK;AAC3C,cAAM,KAAK,MAAM,WAAW;AAC5B,eAAO;AAAA,MACT;AAAA,IACF;AAGA,qBAAiB,YAAY;AAC3B,cAAQ,IAAI,kDAAkD,MAAM,OAAO,GAAG;AAC9E,YAAM,UAAS;AACf,cAAQ,IAAI,uCAAuC;AAAA,IACrD,CAAC;AAGD,cAAU,YAAY;AAEpB,UAAI,CAACA,MAAY,SAAS,OAAOA,MAAY,QAAQ,QAAQ,MAAM,OAAO,KAAK;AAC7E,cAAM,UAAS;AAAA,MACjB;AACA,WAAK,QAAQ;AAAA,IACf,CAAC;AAED,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAM,GAAI,YAAY,iBAAiB;AAC3F,uBAAiB,uBAAuBA,MAAY,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IACnH;AAEA,aAAS,SAAU;AACjBC,gBAAa,OAAM;AAEnB,aAAO,KAAK,EAAC,MAAM,UAAS,CAAC;AAAA,IAC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"Profile.vue.js","sources":["../../../../../../../../src/modules/auth/views/components/pages/Profile.vue"],"sourcesContent":["<template>\n\t<div \n\t\tclass=\"for-transition bg-white w-100\"\n\t>\n\t\t<div \n\t\t\tv-if=\"users.state.current?.status === 'removed'\"\n\t\t\tclass=\"flex-center flex pd-medium radius-big bg-light uppercase fw-semi w-100 h-100\"\n\t\t>\n\t\t\tSorry, user has been removed.\n\t\t</div>\n\n\t\t<div \n\t\t\tv-else\n\t\t\t_id=\"dash\" \n\t\t\tclass=\"pd-thin w-100\"\n\t\t>\n\t\t\t<!-- <Completion \n\t\t\t\tv-if=\"route.params._id === auth.state.user._id && show\" \n\t\t :user=\"auth.state.user._id\"\n\t\t :target=\"users.state.current\"\n\t\t :cta=\"false\" \n\t\t text_cta=\"Fill\"\n\t\t text=\"Profile completed at\"\n\t\t class=\"mn-b-medium mn-b-regular pd-medium radius-semi t-white bg-second\"\n\t\t\t/> -->\n\n\t\t\t<section \n\t\t\t\tclass=\"flex-center pos-relative flex flex-column t-center w-100 mn-b-regular radius-medium pd-medium bg-light\"\n\t\t\t>\n\n\t\t\t\t<Dropdown \n\t\t\t\t\tv-if=\"route.params._id && route.params._id !== auth.state.user._id\"\n\t\t\t\t\t:label=\"'...'\" \n\t\t\t\t\t:align=\"'right'\"\n\t\t\t\t\tclass=\"cursor-pointer pos-absolute pos-r-0 pos-t-0 pd-thin radius-extra \"\n\t\t\t\t>\n\t\t\t\t\t<section \n\t\t\t\t\t\tclass=\"bg-black pd-thin radius-small\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<FormReport \n\t\t\t\t\t\t\t:user=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:type=\"'user'\" \n\t\t\t\t\t\t\t:target=\"users.state.current._id\" \n\t\t\t\t\t\t\t:text=\"'Report'\" \n\t\t\t\t\t\t\tclass=\"w-100\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<button \n\t\t\t\t\t\t\t\tclass=\"w-100 bg-black br-1px br-white-transp-20 t-white button-small button\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tReport\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t</FormReport>\n\n\t\t\t\t\t\t<ButtonToggleMembership\n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t :user=\"auth.state.user._id\"\n\t\t\t\t :type=\"'user'\" \n\t\t\t \t:role=\"'blocked'\" \n\t\t\t\t :target=\"users.state.current._id\" \n\t\t\t\t :status=\"users.state.current.isBlocked\" \n\t\t\t\t :text=\"{create: 'Block', remove: 'Unblock'}\"\n\t\t\t\t @updateMembership=\"event => handleMembershipUpdate(event, 'isBlocked')\"\n\t\t\t\t class=\"t-white mn-t-thin bg-red\" \n\t\t\t \t/>\n\t\t\t\t\t</section>\n\t </Dropdown>\t\n\n\n\t\t\t\t<IconEdit\n\t\t\t\t\tv-if=\"route.params._id === auth.state.user._id\"\n\t\t\t\t\t@click=\"$router.push({\n\t\t\t\t\t\tname: 'Profile Edit Profile', \n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t_id: auth.state.user._id\n\t\t\t\t\t\t}\n\t\t\t\t\t})\" \n\t\t\t\t\tclass=\"cursor-pointer pos-absolute pos-t-regular pos-r-regular i-medium t-transp\"\n\t\t\t\t/>\n\n\t\t\t\t<div class=\"pos-relative mn-b-small\">\n\t\t\t\t\t<img loading=\"lazy\"\n\t\t\t\t\t\tv-if=\"users.state.current.profile.photo && users.state.current.profile.photo.length > 0\"\n\t\t\t\t\t\t:src=\"(FILE_SERVER_URL || '') + users.state.current.profile.photo\"\n\t\t\t\t\t\tclass=\"radius-extra bg-white object-fit-cover i-extra\"\n\t\t\t\t\t/>\n\t\t\t\t\t<PlaceholderUserpic\n\t\t\t\t\t\tv-else\n\t\t\t\t\t\tclass=\"radius-medium i-extra\"\n\t\t\t\t\t/>\n\t\t\t\t\t<OnlineIndicator\n\t\t\t\t\t\tv-if=\"users.state.current._id\"\n\t\t\t\t\t\t:userId=\"users.state.current._id\"\n\t\t\t\t\t\tclass=\"pos-absolute pos-r-0 pos-b-0\"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t<h3 class=\"mn-b-thin\">\n\t\t\t\t\t{{users.state.current.profile.name ? users.state.current.profile.name : 'Anonymous' }}\n\t\t\t\t</h3>\n\t\t\t\t\n\t\t\t\t<p \n\t\t\t\t\tv-if=\"users.state.current.username\"\n\t\t\t\t\tclass=\"mn-b-thin t-main fw-semi\"\n\t\t\t\t>\n\t\t\t\t\t@{{ users.state.current.username ? users.state.current.username : 'Not specified' }}\n\t\t\t\t</p>\n\n\t\t\t\t<p \n\t\t\t\t\tclass=\"mn-b-small p-regular\"\n\t\t\t\t>\n\t\t\t\t {{ users.state.current.profile.description ? users.state.current.profile.description : 'Bio not specified' }}\n\t\t\t\t</p>\n\t\t\t\t\n\t\t\t\t<div class=\"mn-b-medium flex-center flex-nowrap flex\">\n\t\t\t\t\t<div \n\t\t\t\t\t v-for=\"(role,index) in users.state.current.roles\" \n\t\t\t\t\t class=\"pd-thin radius-small fw-semi bg-white\" \n\t\t\t\t\t :class=\"{'mn-r-thin': index !== users.state.current.roles.length - 1}\"\n\t\t\t\t\t >\n\t\t\t\t\t\t{{role.icon}}\n\t\t\t\t\t\t{{role.name}}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\t\t\t\n\n\t\t\t\t<p \n\t\t\t\t\tclass=\"fw-semi mn-b-small\"\n\t\t\t\t>\n\t\t\t\t\t<!-- 👍 3 212 likes · -->\n\t\t\t\t\t<!-- 💬 342 comments · -->\n\t\t\t\t\t👨‍👨‍👧‍👧 {{users.state.current.numberOfSubscribers}} followers\n\t\t\t\t</p>\n\t\t\t\t\n\t \t<ButtonToggleMembership\n\t \t\tv-if=\"auth.state.user._id && route.params._id && route.params._id !== auth.state.user._id\"\n\t\t :user=\"auth.state.user._id\"\n\t\t :type=\"'user'\" \n\t \t:role=\"'subscriber'\" \n\t\t :target=\"users.state.current._id\" \n\t\t :status=\"users.state.current.isSubscriber\" \n\t\t\t\t\t:text=\"{create: 'Follow', remove: 'Unfollow'}\"\n\t\t @updateMembership=\"event => handleMembershipUpdate(event, 'isSubscriber', 'numberOfSubscribers')\"\n\t\t class=\"w-min mn-b-medium\tmn-r-auto mn-l-auto\" \n\t \t/>\n\n\t \t<h4 \n\t \tv-if=\"Object.values(users.state.current.socials).some(value => value)\" \n\t \tclass=\"mn-t-small mn-b-thin\"\n\t >\n\t \t\tFind Me in Socials\n\t \t</h4>\n\t \t<Socials \n\t \t\t:telegram=\"users.state.current.socials.telegram\"\n\t \t\t:facebook=\"users.state.current.socials.facebook\"\n\t \t\t:instagram=\"users.state.current.socials.instagram\"\n\t \t\t:twitter=\"users.state.current.socials.twitter\"\n\t \t\tclass=\"mn-r-auto mn-l-auto\"\n\t \t/>\n\n\t\t\t</section>\n\t\t\t\n\t\t\t<RouterView />\n\n\t\t\t<Menu class=\"mn-b-regular bg-light\">\n\t <template v-for=\"(module, moduleName) in modules\" :key=\"moduleName\">\n\t <MenuItem \n\t v-if=\"isModuleInstalled(moduleName) && (!module.visible || module.visible(auth))\"\n\t @click=\"router.push(module.path(route.params._id))\" \n\t class=\"profile-menu-item cursor-pointer\"\n\t >\n\t <component \n\t :is=\"module.icon\" \n\t v-if=\"module.icon\"\n\t class=\"i-medium\" \n\t :icon=\"true\"\n\t />\n\t <span>{{ module.displayName }}</span>\n\t </MenuItem>\n\t </template>\n \t\t</Menu>\n\t\t\t \n\t\t\t<Menu \n\t\t\t\tv-if=\"auth.state.user._id === route.params._id\"\n\t\t\t\tclass=\"bg-light\"\n\t\t\t>\n\t\t\t\t<MenuItem \n\t\t\t \t@click=\"router.push({\n\t\t\t \t\tname: 'Notifications', \n\t\t\t \t\tparams: {\n\t\t\t \t\t\t_id: route.params._id\n\t\t\t \t\t}\n\t\t\t \t})\" \n\t\t\t \tclass=\"cursor-pointer\">\n\t\t\t <span>\n\t\t\t \tNotifications\n\t\t\t </span>\n\t\t\t </MenuItem>\n\t\t\t <MenuItem \n\t\t\t \t@click=\"router.push({\n\t\t\t \t\tname: 'Profile Edit Profile', \n\t\t\t \t\tparams: {\n\t\t\t \t\t\t_id: route.params._id\n\t\t\t \t\t}\n\t\t\t \t})\" \n\t\t\t \tclass=\"cursor-pointer\">\n\t\t\t <span>\n\t\t\t \tSettings\n\t\t\t </span>\n\t\t\t </MenuItem>\n\n\t\t\t <MenuItem \n\t\t\t \t@click=\"router.push({\n\t\t\t \t\tname: 'Legal', \n\t\t\t \t\tparams: {\n\t\t\t \t\t\t_id: route.params._id\n\t\t\t \t\t}\n\t\t\t \t})\" \n\t\t\t \tclass=\"cursor-pointer\">\n\t\t\t <span>\n\t\t\t \tAbout\n\t\t\t </span>\n\t\t\t </MenuItem>\n\t\t\t \n\t\t\t <MenuItem \n\t\t\t \tclass=\"cursor-pointer\"\n\t\t\t\t\t@click=\"logout()\"\n\t\t\t >\n\t\t\t <span \n\t\t\t \tclass=\"t-red\"\n\t\t\t >\n\t\t\t \tLogout\n\t\t\t </span>\n\t\t\t </MenuItem>\n\t\t\t</Menu>\n\n\t\t</div>\n\t</div>\n</template>\n\n<script setup>\n// Import components\nimport Field from '@martyrs/src/components/Field/Field.vue'\nimport Button from '@martyrs/src/components/Button/Button.vue'\nimport Dropdown from \"@martyrs/src/components/Dropdown/Dropdown.vue\";\nimport Completion from '@martyrs/src/components/Completion/Completion.vue'\n// Mobile Module\nimport Menu from '@martyrs/src/components/Menu/Menu.vue'\nimport MenuItem from '@martyrs/src/components/Menu/MenuItem.vue'\n// Org Module\nimport ButtonToggleMembership from '@martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue'\n// Report Module\nimport FormReport from '@martyrs/src/modules/reports/components/sections/FormReport.vue' \n// Community Module \nimport Activity from '@martyrs/src/modules/community/components/blocks/Activity.vue'; \nimport Socials from '@martyrs/src/modules/organizations/components/blocks/Socials.vue'\n// Icons Module\nimport IconEvents from '@martyrs/src/modules/icons/entities/IconEvents.vue'\nimport IconGroups from '@martyrs/src/modules/icons/entities/IconGroups.vue'\nimport IconCommunity from '@martyrs/src/modules/icons/entities/IconCommunity.vue'\nimport IconOrders from '@martyrs/src/modules/icons/entities/IconOrders.vue'\n\nimport IconEdit from '@martyrs/src/modules/icons/navigation/IconEdit.vue'\n\nimport PlaceholderUserpic from '@martyrs/src/modules/icons/placeholders/PlaceholderUserpic.vue'\nimport OnlineIndicator from '@martyrs/src/modules/core/views/components/elements/OnlineIndicator.vue'\n// Import libs\nimport { computed, watch, onMounted, onServerPrefetch, ref, onBeforeMount, inject } from 'vue'\nimport { useRoute, useRouter } from 'vue-router'\n\n// Import state\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\nimport * as users from '@martyrs/src/modules/auth/views/store/users.js'\nimport membershipsStore from '@martyrs/src/modules/organizations/store/memberships.store.js'\nimport { useGlobalMixins } from '@martyrs/src/modules/core/views/mixins/mixins.js'\nimport { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\n// Accessing router\nconst route = useRoute()\nconst router = useRouter()\n// Get organization _id from cookie\nconst show = ref(false)\n\nconst store = useStore()\nconst { isModuleInstalled } = useGlobalMixins()\n\nconst modules = {\n events: {\n displayName: 'Events',\n path: (_id) => `/users/${_id}/events`,\n icon: IconEvents,\n visible: () => true\n },\n organizations: {\n displayName: 'Groups',\n path: (_id) => `/users/${_id}/organizations`,\n icon: IconGroups,\n visible: () => true\n },\n community: {\n displayName: 'Posts',\n path: (_id) => `/users/${_id}/blogposts`,\n icon: IconCommunity,\n visible: () => true\n },\n orders: {\n displayName: 'Orders',\n path: (_id) => `/users/${_id}/orders`,\n icon: IconOrders,\n visible: (auth) => auth.state.user && (\n auth.state.user._id === route.params._id ||\n (auth.state.access && auth.state.access.roles &&\n (auth.state.access.roles.includes('ROLE_MODERATOR') ||\n auth.state.access.roles.includes('ROLE_ADMIN'))\n )\n )\n }\n}\n\n\n// Функция загрузки данных пользователя\nasync function fetchUser() {\n try {\n const result = await users.actions.read({ _id: route.params._id, user: auth.state.user?._id });\n // Если пользователь не найден - устанавливаем 404\n if (!result || result.length === 0 || !users.state.current?._id) {\n store.core.state.notFound = true;\n return false;\n }\n return true;\n } catch (error) {\n console.error('Error fetching user:', error);\n store.core.state.notFound = true;\n return false;\n }\n}\n\n// SSR: загружаем данные на сервере для SEO\nonServerPrefetch(async () => {\n console.log('[SSR-404] Profile onServerPrefetch, route._id:', route.params._id);\n await fetchUser();\n console.log('[SSR-404] Profile fetchUser completed');\n});\n\n// Client: загружаем данные если еще не загружены (после гидратации)\nonMounted(async () => {\n // Если данные уже загружены на сервере (SSR) - не загружаем повторно\n if (!users.state.current?._id || users.state.current._id !== route.params._id) {\n await fetchUser();\n }\n show.value = true;\n})\n\nconst handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n membershipsStore.handleMembershipUpdate(users.state.current, membership, status, target, statusName, statusNumber)\n};\n\nfunction logout () {\n auth.actions.logout()\n\n router.push({name: 'Sign In'})\n}\n</script>\n\n<style lang=\"scss\">\n\t#header {\n\t\t// height: 3rem;\n\t}\n</style>\n"],"names":["IconEvents","IconGroups","IconCommunity","IconOrders","auth","users.actions","auth.state","users.state","auth.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmRA,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAExB,UAAM,OAAO,IAAI,KAAK;AAEtB,UAAM,QAAQ,SAAQ;AACtB,UAAM,EAAE,kBAAiB,IAAK,gBAAe;AAE7C,UAAM,UAAU;AAAA,MACd,QAAQ;AAAA,QACN,aAAa;AAAA,QACb,MAAM,CAAC,QAAQ,UAAU,GAAG;AAAA,QAC5B,MAAMA;AAAAA,QACN,SAAS,MAAM;AAAA,MACnB;AAAA,MACE,eAAe;AAAA,QACb,aAAa;AAAA,QACb,MAAM,CAAC,QAAQ,UAAU,GAAG;AAAA,QAC5B,MAAMC;AAAAA,QACN,SAAS,MAAM;AAAA,MACnB;AAAA,MACE,WAAW;AAAA,QACT,aAAa;AAAA,QACb,MAAM,CAAC,QAAQ,UAAU,GAAG;AAAA,QAC5B,MAAMC;AAAAA,QACN,SAAS,MAAM;AAAA,MACnB;AAAA,MACE,QAAQ;AAAA,QACN,aAAa;AAAA,QACb,MAAM,CAAC,QAAQ,UAAU,GAAG;AAAA,QAC5B,MAAMC;AAAAA,QACN,SAAS,CAACC,UAASA,MAAK,MAAM,SAC5BA,MAAK,MAAM,KAAK,QAAQ,MAAM,OAAO,OACpCA,MAAK,MAAM,UAAUA,MAAK,MAAM,OAAO,UACrCA,MAAK,MAAM,OAAO,MAAM,SAAS,gBAAgB,KACjDA,MAAK,MAAM,OAAO,MAAM,SAAS,YAAY;AAAA,MAGtD;AAAA,IACA;AAIA,mBAAe,YAAY;AACzB,UAAI;AACF,cAAM,SAAS,MAAMC,QAAc,KAAK,EAAE,KAAK,MAAM,OAAO,KAAK,MAAMC,QAAW,MAAM,IAAG,CAAE;AAE7F,YAAI,CAAC,UAAU,OAAO,WAAW,KAAK,CAACC,MAAY,SAAS,KAAK;AAC/D,gBAAM,KAAK,MAAM,WAAW;AAC5B,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT,SAAS,OAAO;AACd,gBAAQ,MAAM,wBAAwB,KAAK;AAC3C,cAAM,KAAK,MAAM,WAAW;AAC5B,eAAO;AAAA,MACT;AAAA,IACF;AAGA,qBAAiB,YAAY;AAC3B,cAAQ,IAAI,kDAAkD,MAAM,OAAO,GAAG;AAC9E,YAAM,UAAS;AACf,cAAQ,IAAI,uCAAuC;AAAA,IACrD,CAAC;AAGD,cAAU,YAAY;AAEpB,UAAI,CAACA,MAAY,SAAS,OAAOA,MAAY,QAAQ,QAAQ,MAAM,OAAO,KAAK;AAC7E,cAAM,UAAS;AAAA,MACjB;AACA,WAAK,QAAQ;AAAA,IACf,CAAC;AAED,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAM,GAAI,YAAY,iBAAiB;AAC3F,uBAAiB,uBAAuBA,MAAY,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IACnH;AAEA,aAAS,SAAU;AACjBC,gBAAa,OAAM;AAEnB,aAAO,KAAK,EAAC,MAAM,UAAS,CAAC;AAAA,IAC/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { ref, onMounted, provide, resolveComponent, createBlock, openBlock, withCtx, createElementBlock, createVNode } from "vue";
2
2
  import _sfc_main$1 from "../../../../../components/Popup/Popup.vue.js";
3
- import Loader from "../../../../../components/Loader/Loader.vue.js";
3
+ import Loader from "../../../../../components/Loader/Loader.vue2.js";
4
4
  import _sfc_main$2 from "./ProfileEditSidebar.vue.js";
5
5
  import { useRoute, useRouter } from "vue-router";
6
6
  import { state } from "../../store/auth.js";
@@ -1,13 +1,35 @@
1
- import { createElementBlock, openBlock, createVNode, createElementVNode, unref, withCtx, createTextVNode } from "vue";
2
- import _sfc_main$2 from "../../../../../components/Checkbox/Checkbox.vue.js";
3
- import _sfc_main$3 from "../../../../../components/Button/Button.vue2.js";
4
- import _sfc_main$1 from "../sections/ProfileEditCredentials.vue.js";
1
+ import { ref, createElementBlock, openBlock, createElementVNode, createVNode, createBlock, withCtx, createTextVNode, unref } from "vue";
2
+ import _sfc_main$3 from "../../../../../components/Checkbox/Checkbox.vue.js";
3
+ import _sfc_main$2 from "../../../../../components/Button/Button.vue.js";
4
+ import Field from "../../../../../components/Field/Field.vue.js";
5
+ import _sfc_main$1 from "../../../../../components/FieldPhone/FieldPhone.vue.js";
5
6
  import { useRouter } from "vue-router";
6
7
  import { actions as actions$1 } from "../../store/auth.js";
7
- import { actions, state } from "../../store/users.js";
8
- import { useStore } from "../../../../core/views/store/core.store.js";
8
+ import { state, actions } from "../../store/users.js";
9
+ import { useStore, setError } from "../../../../core/views/store/core.store.js";
10
+ import { withOtp } from "../../plugins/otp.plugin.js";
11
+ import $axios from "../../../../core/views/utils/axios-instance.js";
9
12
  const _hoisted_1 = { class: "for-transition w-100" };
10
13
  const _hoisted_2 = { class: "bg-white mn-b-thin" };
14
+ const _hoisted_3 = { class: "mn-b-semi" };
15
+ const _hoisted_4 = {
16
+ key: 3,
17
+ class: "flex gap-1"
18
+ };
19
+ const _hoisted_5 = {
20
+ key: 4,
21
+ class: "flex gap-2"
22
+ };
23
+ const _hoisted_6 = { class: "mn-b-semi" };
24
+ const _hoisted_7 = {
25
+ key: 3,
26
+ class: "flex gap-1"
27
+ };
28
+ const _hoisted_8 = {
29
+ key: 4,
30
+ class: "flex gap-2"
31
+ };
32
+ const _hoisted_9 = { class: "bg-white mn-b-thin" };
11
33
  const _sfc_main = {
12
34
  __name: "ProfileEditAccount",
13
35
  props: {
@@ -20,6 +42,43 @@ const _sfc_main = {
20
42
  const store = useStore();
21
43
  const core = store.core;
22
44
  const router = useRouter();
45
+ const isEditingPhone = ref(false);
46
+ const isEditingEmail = ref(false);
47
+ const newPhone = ref("");
48
+ const newEmail = ref("");
49
+ async function savePhone() {
50
+ if (!newPhone.value) return;
51
+ try {
52
+ const result = await withOtp(
53
+ (data) => $axios.put(`/api/users/${state.current._id}/phone`, data),
54
+ { phone: newPhone.value }
55
+ );
56
+ if (result.data) {
57
+ state.current.phone = result.data.phone;
58
+ }
59
+ isEditingPhone.value = false;
60
+ newPhone.value = "";
61
+ } catch (error) {
62
+ console.log("savePhone catch:", error);
63
+ setError(error);
64
+ }
65
+ }
66
+ async function saveEmail() {
67
+ if (!newEmail.value) return;
68
+ try {
69
+ const result = await withOtp(
70
+ (data) => $axios.put(`/api/users/${state.current._id}/email`, data),
71
+ { email: newEmail.value }
72
+ );
73
+ if (result.data) {
74
+ state.current.email = result.data.email;
75
+ }
76
+ isEditingEmail.value = false;
77
+ newEmail.value = "";
78
+ } catch (error) {
79
+ setError(error);
80
+ }
81
+ }
23
82
  async function onSubmit() {
24
83
  await actions.update(state.current);
25
84
  }
@@ -35,32 +94,157 @@ const _sfc_main = {
35
94
  }
36
95
  return (_ctx, _cache) => {
37
96
  return openBlock(), createElementBlock("div", _hoisted_1, [
38
- createVNode(_sfc_main$1, { class: "bg-white mn-b-thin" }),
39
97
  createElementVNode("div", _hoisted_2, [
40
- _cache[1] || (_cache[1] = createElementVNode("h3", { class: "mn-b-small" }, "Settings", -1)),
41
- createVNode(_sfc_main$2, {
98
+ _cache[13] || (_cache[13] = createElementVNode("h3", { class: "mn-b-small" }, "Phone and Email", -1)),
99
+ createElementVNode("div", _hoisted_3, [
100
+ state.current.phone && !isEditingPhone.value ? (openBlock(), createBlock(Field, {
101
+ key: 0,
102
+ field: state.current.phone,
103
+ "onUpdate:field": _cache[0] || (_cache[0] = ($event) => state.current.phone = $event),
104
+ label: "Phone",
105
+ class: "mn-b-thin bg-light pd-medium radius-small",
106
+ disabled: ""
107
+ }, null, 8, ["field"])) : (openBlock(), createBlock(_sfc_main$1, {
108
+ key: 1,
109
+ onChange: _cache[1] || (_cache[1] = (val) => newPhone.value = val),
110
+ dropdownOptions: {
111
+ showDialCodeInSelection: true,
112
+ showFlags: true,
113
+ showDialCodeInList: true
114
+ },
115
+ validCharactersOnly: true,
116
+ mode: "national",
117
+ inputOptions: { placeholder: "Enter phone number", type: "tel" },
118
+ class: "bg-light h-4r pd-small radius-small mn-b-thin"
119
+ })),
120
+ state.current.phone && !isEditingPhone.value ? (openBlock(), createBlock(_sfc_main$2, {
121
+ key: 2,
122
+ submit: () => isEditingPhone.value = true,
123
+ class: "mn-b-thin t-black bg-light w-100"
124
+ }, {
125
+ default: withCtx(() => _cache[5] || (_cache[5] = [
126
+ createTextVNode(" Change Phone ")
127
+ ])),
128
+ _: 1
129
+ }, 8, ["submit"])) : !state.current.phone ? (openBlock(), createElementBlock("div", _hoisted_4, [
130
+ createVNode(_sfc_main$2, {
131
+ submit: () => savePhone(),
132
+ class: "mn-b-thin bg-main w-100"
133
+ }, {
134
+ default: withCtx(() => _cache[6] || (_cache[6] = [
135
+ createTextVNode(" Save Phone ")
136
+ ])),
137
+ _: 1
138
+ }, 8, ["submit"])
139
+ ])) : (openBlock(), createElementBlock("div", _hoisted_5, [
140
+ createVNode(_sfc_main$2, {
141
+ submit: () => savePhone(),
142
+ class: "mn-b-thin bg-main flex-child-1"
143
+ }, {
144
+ default: withCtx(() => _cache[7] || (_cache[7] = [
145
+ createTextVNode(" Save Phone ")
146
+ ])),
147
+ _: 1
148
+ }, 8, ["submit"]),
149
+ createVNode(_sfc_main$2, {
150
+ submit: () => {
151
+ isEditingPhone.value = false;
152
+ newPhone.value = "";
153
+ },
154
+ class: "mn-b-thin bg-red t-white flex-child-1"
155
+ }, {
156
+ default: withCtx(() => _cache[8] || (_cache[8] = [
157
+ createTextVNode(" Cancel ")
158
+ ])),
159
+ _: 1
160
+ }, 8, ["submit"])
161
+ ]))
162
+ ]),
163
+ createElementVNode("div", _hoisted_6, [
164
+ state.current.email && !isEditingEmail.value ? (openBlock(), createBlock(Field, {
165
+ key: 0,
166
+ field: state.current.email,
167
+ "onUpdate:field": _cache[2] || (_cache[2] = ($event) => state.current.email = $event),
168
+ label: "Email",
169
+ class: "mn-b-thin bg-light pd-medium radius-small",
170
+ disabled: ""
171
+ }, null, 8, ["field"])) : (openBlock(), createBlock(Field, {
172
+ key: 1,
173
+ field: newEmail.value,
174
+ "onUpdate:field": _cache[3] || (_cache[3] = ($event) => newEmail.value = $event),
175
+ label: "Email",
176
+ placeholder: "Enter email",
177
+ class: "mn-b-thin bg-light pd-medium radius-small"
178
+ }, null, 8, ["field"])),
179
+ state.current.email && !isEditingEmail.value ? (openBlock(), createBlock(_sfc_main$2, {
180
+ key: 2,
181
+ submit: () => isEditingEmail.value = true,
182
+ class: "mn-b-thin t-black bg-light w-100"
183
+ }, {
184
+ default: withCtx(() => _cache[9] || (_cache[9] = [
185
+ createTextVNode(" Change Email ")
186
+ ])),
187
+ _: 1
188
+ }, 8, ["submit"])) : !state.current.email ? (openBlock(), createElementBlock("div", _hoisted_7, [
189
+ createVNode(_sfc_main$2, {
190
+ submit: () => saveEmail(),
191
+ class: "mn-b-thin bg-main w-100"
192
+ }, {
193
+ default: withCtx(() => _cache[10] || (_cache[10] = [
194
+ createTextVNode(" Save Email ")
195
+ ])),
196
+ _: 1
197
+ }, 8, ["submit"])
198
+ ])) : (openBlock(), createElementBlock("div", _hoisted_8, [
199
+ createVNode(_sfc_main$2, {
200
+ submit: () => saveEmail(),
201
+ class: "mn-b-thin bg-main flex-child-1"
202
+ }, {
203
+ default: withCtx(() => _cache[11] || (_cache[11] = [
204
+ createTextVNode(" Save Email ")
205
+ ])),
206
+ _: 1
207
+ }, 8, ["submit"]),
208
+ createVNode(_sfc_main$2, {
209
+ submit: () => {
210
+ isEditingEmail.value = false;
211
+ newEmail.value = "";
212
+ },
213
+ class: "mn-b-thin bg-red t-white flex-child-1"
214
+ }, {
215
+ default: withCtx(() => _cache[12] || (_cache[12] = [
216
+ createTextVNode(" Cancel ")
217
+ ])),
218
+ _: 1
219
+ }, 8, ["submit"])
220
+ ]))
221
+ ])
222
+ ]),
223
+ createElementVNode("div", _hoisted_9, [
224
+ _cache[14] || (_cache[14] = createElementVNode("h3", { class: "mn-b-small" }, "Settings", -1)),
225
+ createVNode(_sfc_main$3, {
42
226
  label: "Darkmode",
43
227
  radio: unref(core).state.theme.mode === "dark",
44
- "onUpdate:radio": _cache[0] || (_cache[0] = (event) => unref(core).actions.toggleTheme()),
228
+ "onUpdate:radio": _cache[4] || (_cache[4] = () => unref(core).actions.toggleTheme()),
45
229
  class: "w-100 bg-light t-black pd-medium radius-small"
46
230
  }, null, 8, ["radio"])
47
231
  ]),
48
- createVNode(_sfc_main$3, {
232
+ createVNode(_sfc_main$2, {
49
233
  submit: onSubmit,
50
234
  callback: redirectTo,
51
235
  class: "mn-b-thin bg-main w-100"
52
236
  }, {
53
- default: withCtx(() => _cache[2] || (_cache[2] = [
237
+ default: withCtx(() => _cache[15] || (_cache[15] = [
54
238
  createTextVNode(" Save ")
55
239
  ])),
56
240
  _: 1
57
241
  }),
58
- createVNode(_sfc_main$3, {
242
+ createVNode(_sfc_main$2, {
59
243
  submit: onSubmitDelete,
60
244
  callback: () => unref(router).push({ name: "Sign In" }),
61
245
  class: "mn-b-thin w-100 bg-red t-white"
62
246
  }, {
63
- default: withCtx(() => _cache[3] || (_cache[3] = [
247
+ default: withCtx(() => _cache[16] || (_cache[16] = [
64
248
  createTextVNode(" Delete Account ")
65
249
  ])),
66
250
  _: 1
@@ -1 +1 @@
1
- {"version":3,"file":"ProfileEditAccount.vue.js","sources":["../../../../../../../../src/modules/auth/views/components/pages/ProfileEditAccount.vue"],"sourcesContent":["<template>\n <div class=\"for-transition w-100\">\n <ProfileEditCredentials class=\"bg-white mn-b-thin\"/>\n\n <div class=\"bg-white mn-b-thin \">\n <h3 class=\"mn-b-small\">Settings</h3>\n <Checkbox\n :label=\"'Darkmode'\"\n :radio=\"core.state.theme.mode === 'dark'\"\n @update:radio=\"event => core.actions.toggleTheme()\"\n class=\"w-100 bg-light t-black pd-medium radius-small\"\n />\n </div>\n\n <Button \n :submit=\"onSubmit\" \n :callback=\"redirectTo\" \n class=\"mn-b-thin bg-main w-100\"\n > \n Save\n </Button>\n\n <Button\n :submit=\"onSubmitDelete\" \n :callback=\"() => router.push({name: 'Sign In'})\" \n class=\"mn-b-thin w-100 bg-red t-white\"\n >\n Delete Account\n </Button>\n </div>\n</template>\n\n<script setup>\n import Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue'\n import Button from '@martyrs/src/components/Button/Button.vue'\n import ProfileEditCredentials from '@martyrs/src/modules/auth/views/components/sections/ProfileEditCredentials.vue'\n \n import { useRouter } from 'vue-router'\n\n import * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\n import * as users from '@martyrs/src/modules/auth/views/store/users.js'\n import { useStore } from '@martyrs/src/modules/core/views/store/core.store.js'\n\n const store = useStore()\n const core = store.core\n const router = useRouter()\n \n defineProps({\n userData: {\n type: Object,\n required: true\n }\n })\n \n async function onSubmit() {\n await users.actions.update(users.state.current)\n }\n \n async function onSubmitDelete() {\n const confirmation = window.confirm(\"Are you sure you want to delete your account? Restoration will be possible only with the help of an administrator.\")\n \n if (!confirmation) return\n \n users.state.current.status = 'removed'\n await users.actions.update(users.state.current)\n auth.actions.logout()\n }\n \n function redirectTo() {\n router.back()\n }\n</script>"],"names":["users.actions","users.state","auth.actions"],"mappings":";;;;;;;;;;;;;;;;;;;AA2CE,UAAM,QAAQ,SAAQ;AACtB,UAAM,OAAO,MAAM;AACnB,UAAM,SAAS,UAAS;AASxB,mBAAe,WAAW;AACxB,YAAMA,QAAc,OAAOC,MAAY,OAAO;AAAA,IAChD;AAEA,mBAAe,iBAAiB;AAC9B,YAAM,eAAe,OAAO,QAAQ,oHAAoH;AAExJ,UAAI,CAAC,aAAc;AAEnBA,YAAY,QAAQ,SAAS;AAC7B,YAAMD,QAAc,OAAOC,MAAY,OAAO;AAC9CC,gBAAa,OAAM;AAAA,IACrB;AAEA,aAAS,aAAa;AACpB,aAAO,KAAI;AAAA,IACb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ProfileEditAccount.vue.js","sources":["../../../../../../../../src/modules/auth/views/components/pages/ProfileEditAccount.vue"],"sourcesContent":["<template>\n <div class=\"for-transition w-100\">\n <!-- Phone and Email -->\n <div class=\"bg-white mn-b-thin\">\n <h3 class=\"mn-b-small\">Phone and Email</h3>\n\n <!-- Phone -->\n <div class=\"mn-b-semi\">\n <Field\n v-if=\"users.state.current.phone && !isEditingPhone\"\n v-model:field=\"users.state.current.phone\"\n label=\"Phone\"\n class=\"mn-b-thin bg-light pd-medium radius-small\"\n disabled\n />\n <FieldPhone\n v-else\n @change=\"(val) => newPhone = val\"\n :dropdownOptions=\"{\n showDialCodeInSelection: true,\n showFlags: true,\n showDialCodeInList: true\n }\"\n :validCharactersOnly=\"true\"\n mode=\"national\"\n :inputOptions=\"{ placeholder: 'Enter phone number', type: 'tel' }\"\n class=\"bg-light h-4r pd-small radius-small mn-b-thin\"\n />\n <Button\n v-if=\"users.state.current.phone && !isEditingPhone\"\n :submit=\"() => isEditingPhone = true\"\n class=\"mn-b-thin t-black bg-light w-100\"\n >\n Change Phone\n </Button>\n <div v-else-if=\"!users.state.current.phone\" class=\"flex gap-1\">\n <Button\n :submit=\"() => savePhone()\"\n class=\"mn-b-thin bg-main w-100\"\n >\n Save Phone\n </Button>\n </div>\n <div v-else class=\"flex gap-2\">\n <Button\n :submit=\"() => savePhone()\"\n class=\"mn-b-thin bg-main flex-child-1\"\n >\n Save Phone\n </Button>\n <Button\n :submit=\"() => { isEditingPhone = false; newPhone = '' }\"\n class=\"mn-b-thin bg-red t-white flex-child-1\"\n >\n Cancel\n </Button>\n </div>\n </div>\n\n <!-- Email -->\n <div class=\"mn-b-semi\">\n <Field\n v-if=\"users.state.current.email && !isEditingEmail\"\n v-model:field=\"users.state.current.email\"\n label=\"Email\"\n class=\"mn-b-thin bg-light pd-medium radius-small\"\n disabled\n />\n <Field\n v-else\n v-model:field=\"newEmail\"\n label=\"Email\"\n placeholder=\"Enter email\"\n class=\"mn-b-thin bg-light pd-medium radius-small\"\n />\n <Button\n v-if=\"users.state.current.email && !isEditingEmail\"\n :submit=\"() => isEditingEmail = true\"\n class=\"mn-b-thin t-black bg-light w-100\"\n >\n Change Email\n </Button>\n <div v-else-if=\"!users.state.current.email\" class=\"flex gap-1\">\n <Button\n :submit=\"() => saveEmail()\"\n class=\"mn-b-thin bg-main w-100\"\n >\n Save Email\n </Button>\n </div>\n <div v-else class=\"flex gap-2\">\n <Button\n :submit=\"() => saveEmail()\"\n class=\"mn-b-thin bg-main flex-child-1\"\n >\n Save Email\n </Button>\n <Button\n :submit=\"() => { isEditingEmail = false; newEmail = '' }\"\n class=\"mn-b-thin bg-red t-white flex-child-1\"\n >\n Cancel\n </Button>\n </div>\n </div>\n </div>\n\n <!-- Settings -->\n <div class=\"bg-white mn-b-thin\">\n <h3 class=\"mn-b-small\">Settings</h3>\n <Checkbox\n :label=\"'Darkmode'\"\n :radio=\"core.state.theme.mode === 'dark'\"\n @update:radio=\"() => core.actions.toggleTheme()\"\n class=\"w-100 bg-light t-black pd-medium radius-small\"\n />\n </div>\n\n <Button\n :submit=\"onSubmit\"\n :callback=\"redirectTo\"\n class=\"mn-b-thin bg-main w-100\"\n >\n Save\n </Button>\n\n <Button\n :submit=\"onSubmitDelete\"\n :callback=\"() => router.push({ name: 'Sign In' })\"\n class=\"mn-b-thin w-100 bg-red t-white\"\n >\n Delete Account\n </Button>\n </div>\n</template>\n\n<script setup>\nimport Checkbox from '@martyrs/src/components/Checkbox/Checkbox.vue'\nimport Button from '@martyrs/src/components/Button/Button.vue'\nimport Field from '@martyrs/src/components/Field/Field.vue'\nimport FieldPhone from '@martyrs/src/components/FieldPhone/FieldPhone.vue'\n\nimport { ref } from 'vue'\nimport { useRouter } from 'vue-router'\n\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\nimport * as users from '@martyrs/src/modules/auth/views/store/users.js'\nimport { useStore, setError } from '@martyrs/src/modules/core/views/store/core.store.js'\nimport { withOtp } from '@martyrs/src/modules/auth/views/plugins/otp.plugin.js'\nimport $axios from '@martyrs/src/modules/core/views/utils/axios-instance.js'\n\nconst store = useStore()\nconst core = store.core\nconst router = useRouter()\n\nconst isEditingPhone = ref(false)\nconst isEditingEmail = ref(false)\nconst newPhone = ref('')\nconst newEmail = ref('')\n\ndefineProps({\n userData: {\n type: Object,\n required: true\n }\n})\n\nasync function savePhone() {\n if (!newPhone.value) return\n\n try {\n const result = await withOtp(\n (data) => $axios.put(`/api/users/${users.state.current._id}/phone`, data),\n { phone: newPhone.value }\n )\n\n if (result.data) {\n users.state.current.phone = result.data.phone\n }\n\n isEditingPhone.value = false\n newPhone.value = ''\n } catch (error) {\n console.log('savePhone catch:', error)\n setError(error)\n }\n}\n\nasync function saveEmail() {\n if (!newEmail.value) return\n\n try {\n const result = await withOtp(\n (data) => $axios.put(`/api/users/${users.state.current._id}/email`, data),\n { email: newEmail.value }\n )\n\n if (result.data) {\n users.state.current.email = result.data.email\n }\n\n isEditingEmail.value = false\n newEmail.value = ''\n } catch (error) {\n setError(error)\n }\n}\n\nasync function onSubmit() {\n await users.actions.update(users.state.current)\n}\n\nasync function onSubmitDelete() {\n const confirmation = window.confirm(\"Are you sure you want to delete your account? Restoration will be possible only with the help of an administrator.\")\n\n if (!confirmation) return\n\n users.state.current.status = 'removed'\n await users.actions.update(users.state.current)\n auth.actions.logout()\n}\n\nfunction redirectTo() {\n router.back()\n}\n</script>\n"],"names":["users.state","users.actions","auth.actions"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuJA,UAAM,QAAQ,SAAQ;AACtB,UAAM,OAAO,MAAM;AACnB,UAAM,SAAS,UAAS;AAExB,UAAM,iBAAiB,IAAI,KAAK;AAChC,UAAM,iBAAiB,IAAI,KAAK;AAChC,UAAM,WAAW,IAAI,EAAE;AACvB,UAAM,WAAW,IAAI,EAAE;AASvB,mBAAe,YAAY;AACzB,UAAI,CAAC,SAAS,MAAO;AAErB,UAAI;AACF,cAAM,SAAS,MAAM;AAAA,UACnB,CAAC,SAAS,OAAO,IAAI,cAAcA,MAAY,QAAQ,GAAG,UAAU,IAAI;AAAA,UACxE,EAAE,OAAO,SAAS,MAAK;AAAA,QAC7B;AAEI,YAAI,OAAO,MAAM;AACfA,gBAAY,QAAQ,QAAQ,OAAO,KAAK;AAAA,QAC1C;AAEA,uBAAe,QAAQ;AACvB,iBAAS,QAAQ;AAAA,MACnB,SAAS,OAAO;AACd,gBAAQ,IAAI,oBAAoB,KAAK;AACrC,iBAAS,KAAK;AAAA,MAChB;AAAA,IACF;AAEA,mBAAe,YAAY;AACzB,UAAI,CAAC,SAAS,MAAO;AAErB,UAAI;AACF,cAAM,SAAS,MAAM;AAAA,UACnB,CAAC,SAAS,OAAO,IAAI,cAAcA,MAAY,QAAQ,GAAG,UAAU,IAAI;AAAA,UACxE,EAAE,OAAO,SAAS,MAAK;AAAA,QAC7B;AAEI,YAAI,OAAO,MAAM;AACfA,gBAAY,QAAQ,QAAQ,OAAO,KAAK;AAAA,QAC1C;AAEA,uBAAe,QAAQ;AACvB,iBAAS,QAAQ;AAAA,MACnB,SAAS,OAAO;AACd,iBAAS,KAAK;AAAA,MAChB;AAAA,IACF;AAEA,mBAAe,WAAW;AACxB,YAAMC,QAAc,OAAOD,MAAY,OAAO;AAAA,IAChD;AAEA,mBAAe,iBAAiB;AAC9B,YAAM,eAAe,OAAO,QAAQ,oHAAoH;AAExJ,UAAI,CAAC,aAAc;AAEnBA,YAAY,QAAQ,SAAS;AAC7B,YAAMC,QAAc,OAAOD,MAAY,OAAO;AAC9CE,gBAAa,OAAM;AAAA,IACrB;AAEA,aAAS,aAAa;AACpB,aAAO,KAAI;AAAA,IACb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { createElementBlock, openBlock, createElementVNode, createVNode, toDisplayString, withCtx, createTextVNode } from "vue";
2
2
  import Field from "../../../../../components/Field/Field.vue.js";
3
- import _sfc_main$1 from "../../../../../components/Button/Button.vue2.js";
3
+ import _sfc_main$1 from "../../../../../components/Button/Button.vue.js";
4
4
  import UploadImage from "../../../../../components/UploadImage/UploadImage.vue.js";
5
5
  import { useRouter } from "vue-router";
6
6
  import { state, actions } from "../../store/users.js";