@ozdao/martyrs 0.2.519 → 0.2.520
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.
- package/dist/chats.server.cjs +198 -1
- package/dist/chats.server.js +198 -1
- package/dist/{main-Wr1_4rwl.cjs → main-BM3GslOO.cjs} +6 -6
- package/dist/{main-DgGUrhjT.js → main-Qcn7YlTx.js} +1832 -1828
- package/dist/martyrs/src/components/Address/{Address.vue2.cjs → Address.vue.cjs} +2 -2
- package/dist/martyrs/src/components/Address/{Address.vue2.js.map → Address.vue.cjs.map} +1 -1
- package/dist/martyrs/src/components/Address/{Address.vue2.js → Address.vue.js} +2 -2
- package/dist/martyrs/src/components/Address/Address.vue.js.map +1 -0
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs +0 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.cjs.map +1 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.js +0 -1
- package/dist/martyrs/src/components/Feed/Feed.vue.js.map +1 -1
- package/dist/martyrs/src/components/LocationMarker/{LocationMarker.vue2.cjs → LocationMarker.vue.cjs} +2 -2
- package/dist/martyrs/src/components/LocationMarker/{LocationMarker.vue2.js.map → LocationMarker.vue.cjs.map} +1 -1
- package/dist/martyrs/src/components/LocationMarker/{LocationMarker.vue2.js → LocationMarker.vue.js} +2 -2
- package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue.js.map +1 -0
- package/dist/martyrs/src/components/Select/{Select.vue2.cjs → Select.vue.cjs} +2 -2
- package/dist/martyrs/src/components/Select/{Select.vue2.js.map → Select.vue.cjs.map} +1 -1
- package/dist/martyrs/src/components/Select/{Select.vue2.js → Select.vue.js} +2 -2
- package/dist/martyrs/src/components/Select/Select.vue.js.map +1 -0
- package/dist/martyrs/src/modules/auth/views/components/blocks/CardUser.vue.cjs +2 -2
- package/dist/martyrs/src/modules/auth/views/components/blocks/CardUser.vue.js +2 -2
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs +1 -1
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js +1 -1
- package/dist/martyrs/src/modules/auth/views/components/layouts/Auth.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs +2 -2
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js +4 -4
- package/dist/martyrs/src/modules/auth/views/components/pages/Invite.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs +40 -50
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js +59 -69
- package/dist/martyrs/src/modules/auth/views/components/pages/Profile.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.cjs +11 -13
- package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js +11 -13
- package/dist/martyrs/src/modules/auth/views/components/sections/SliderFeatures.vue.js.map +1 -1
- package/dist/martyrs/src/modules/auth/views/store/auth.cjs +9 -0
- package/dist/martyrs/src/modules/auth/views/store/auth.cjs.map +1 -1
- package/dist/martyrs/src/modules/auth/views/store/auth.js +9 -0
- package/dist/martyrs/src/modules/auth/views/store/auth.js.map +1 -1
- package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.cjs +27 -11
- package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.js +28 -12
- package/dist/martyrs/src/modules/chats/components/blocks/ChatMessage.vue.js.map +1 -1
- package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.cjs +62 -0
- package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js +63 -1
- package/dist/martyrs/src/modules/chats/components/sections/ChatWindow.vue.js.map +1 -1
- package/dist/martyrs/src/modules/chats/store/chat.store.cjs +60 -1
- package/dist/martyrs/src/modules/chats/store/chat.store.cjs.map +1 -1
- package/dist/martyrs/src/modules/chats/store/chat.store.js +60 -1
- package/dist/martyrs/src/modules/chats/store/chat.store.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/layouts/Community.vue.cjs +3 -3
- package/dist/martyrs/src/modules/community/components/layouts/Community.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js +3 -3
- package/dist/martyrs/src/modules/community/components/layouts/Community.vue.js.map +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.cjs +1 -1
- package/dist/martyrs/src/modules/community/components/pages/BlogPost.vue.js +1 -1
- package/dist/martyrs/src/modules/community/components/pages/Posts.vue.cjs +50 -368
- package/dist/martyrs/src/modules/community/components/pages/Posts.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js +53 -371
- package/dist/martyrs/src/modules/community/components/pages/Posts.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js +1 -1
- package/dist/martyrs/src/modules/events/components/pages/EditEventTickets.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs +0 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js +0 -1
- package/dist/martyrs/src/modules/events/components/pages/Event.vue.js.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs +2 -2
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.js +2 -2
- package/dist/martyrs/src/modules/events/components/pages/Events.vue.js.map +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.cjs +1 -1
- package/dist/martyrs/src/modules/gallery/components/sections/BackofficeGallery.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/CardHeader.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/Header.vue.js +1 -1
- package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.cjs +2 -2
- package/dist/martyrs/src/modules/globals/views/components/partials/LocationSelection.vue.js +2 -2
- package/dist/martyrs/src/modules/globals/views/components/sections/Walkthrough.vue.cjs +1 -1
- package/dist/martyrs/src/modules/globals/views/mixins/mixins.cjs +7 -0
- package/dist/martyrs/src/modules/globals/views/mixins/mixins.cjs.map +1 -1
- package/dist/martyrs/src/modules/globals/views/mixins/mixins.js +7 -0
- package/dist/martyrs/src/modules/globals/views/mixins/mixins.js.map +1 -1
- package/dist/martyrs/src/modules/icons/pages/IconsPage.vue.cjs +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.cjs +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/AdjustmentForm.vue.js +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.cjs +1 -1
- package/dist/martyrs/src/modules/inventory/components/forms/StockAlertsForm.vue.js +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/inventory/components/pages/InventoryEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs +180 -19
- package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js +181 -20
- package/dist/martyrs/src/modules/marketplace/views/components/layouts/Marketplace.vue.js.map +1 -1
- package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/forms/AlbumForm.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/forms/ArtistForm.vue.js +1 -1
- package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.cjs +1 -1
- package/dist/martyrs/src/modules/music/components/forms/TrackForm.vue.js +1 -1
- package/dist/martyrs/src/modules/music/router/music.cjs +0 -1
- package/dist/martyrs/src/modules/music/router/music.cjs.map +1 -1
- package/dist/martyrs/src/modules/music/router/music.js +0 -1
- package/dist/martyrs/src/modules/music/router/music.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.cjs +2 -2
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js +2 -2
- package/dist/martyrs/src/modules/orders/components/blocks/CardOrderBackoffice.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormApplicationDetails.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/forms/FormCustomerDetails.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/pages/OrderBackoffice.vue.js +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs +2 -3
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js +2 -3
- package/dist/martyrs/src/modules/orders/components/sections/FormDelivery.vue.js.map +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.cjs +1 -1
- package/dist/martyrs/src/modules/orders/components/sections/FormPayment.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.cjs +2 -24
- package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js +5 -27
- package/dist/martyrs/src/modules/organizations/components/blocks/CardDepartment.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.cjs +4 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.js +4 -1
- package/dist/martyrs/src/modules/organizations/components/blocks/Socials.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs +3 -3
- package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js +3 -3
- package/dist/martyrs/src/modules/organizations/components/elements/ButtonToggleMembership.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.cjs +195 -0
- package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js +195 -0
- package/dist/martyrs/src/modules/organizations/components/forms/AddExistingMembersForm.vue.js.map +1 -0
- package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.cjs +402 -0
- package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js +402 -0
- package/dist/martyrs/src/modules/organizations/components/forms/DepartmentForm.vue.js.map +1 -0
- package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.cjs +86 -0
- package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.cjs.map +1 -0
- package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js +86 -0
- package/dist/martyrs/src/modules/organizations/components/forms/InviteForm.vue.js.map +1 -0
- package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs +10 -10
- package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js +11 -11
- package/dist/martyrs/src/modules/organizations/components/pages/Department.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs +279 -191
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js +285 -197
- package/dist/martyrs/src/modules/organizations/components/pages/Members.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs +5 -5
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js +5 -5
- package/dist/martyrs/src/modules/organizations/components/pages/Organization.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js +2 -2
- package/dist/martyrs/src/modules/organizations/components/pages/OrganizationEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/pages/Organizations.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.cjs +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/MembersAdd.vue.js +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs +3 -3
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js +3 -3
- package/dist/martyrs/src/modules/organizations/components/sections/Organizations.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Publics.vue.cjs +4 -4
- package/dist/martyrs/src/modules/organizations/components/sections/Publics.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/components/sections/Publics.vue.js +4 -4
- package/dist/martyrs/src/modules/organizations/components/sections/Publics.vue.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs +42 -41
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js +53 -52
- package/dist/martyrs/src/modules/organizations/configs/navigation.organization.config.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/organizations.client.cjs +23 -16
- package/dist/martyrs/src/modules/organizations/organizations.client.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/organizations.client.js +35 -28
- package/dist/martyrs/src/modules/organizations/organizations.client.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/router/departments.router.cjs +0 -18
- package/dist/martyrs/src/modules/organizations/router/departments.router.cjs.map +1 -1
- package/dist/martyrs/src/modules/organizations/router/departments.router.js +0 -18
- package/dist/martyrs/src/modules/organizations/router/departments.router.js.map +1 -1
- package/dist/martyrs/src/modules/organizations/store/departments.store.cjs +6 -0
- package/dist/martyrs/src/modules/organizations/store/departments.store.cjs.map +1 -0
- package/dist/martyrs/src/modules/organizations/store/departments.store.js +6 -0
- package/dist/martyrs/src/modules/organizations/store/departments.store.js.map +1 -0
- package/dist/martyrs/src/modules/organizations/store/invites.store.cjs +6 -0
- package/dist/martyrs/src/modules/organizations/store/invites.store.cjs.map +1 -0
- package/dist/martyrs/src/modules/organizations/store/invites.store.js +6 -0
- package/dist/martyrs/src/modules/organizations/store/invites.store.js.map +1 -0
- package/dist/martyrs/src/modules/organizations/store/memberships.store.cjs +20 -0
- package/dist/martyrs/src/modules/organizations/store/memberships.store.cjs.map +1 -0
- package/dist/martyrs/src/modules/organizations/store/memberships.store.js +20 -0
- package/dist/martyrs/src/modules/organizations/store/memberships.store.js.map +1 -0
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs +2 -3
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js +2 -3
- package/dist/martyrs/src/modules/products/components/pages/CategoryEdit.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/ProductEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/pages/Products.vue.js.map +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditDiscounts.vue.js +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.cjs +1 -1
- package/dist/martyrs/src/modules/products/components/sections/EditVariants.vue.js +1 -1
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.cjs +1 -1
- package/dist/martyrs/src/modules/reports/components/sections/FormReport.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs +2 -2
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js +2 -2
- package/dist/martyrs/src/modules/spots/components/blocks/CardSpot.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/blocks/SpotMemberModify.vue.js +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.cjs +3 -3
- package/dist/martyrs/src/modules/spots/components/pages/SpotEdit.vue.js +3 -3
- package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.cjs +60 -272
- package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.cjs.map +1 -1
- package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js +62 -274
- package/dist/martyrs/src/modules/spots/components/pages/Spots.vue.js.map +1 -1
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/spots/components/sections/WorktimeEdit.vue.js +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.cjs +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/blocks/CryptoDeposit.vue.js +1 -1
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.cjs +2 -2
- package/dist/martyrs/src/modules/wallet/views/components/pages/Wallet.vue.js +2 -2
- package/dist/martyrs.cjs.js +1 -1
- package/dist/martyrs.css +1 -1
- package/dist/martyrs.es.js +1 -1
- package/dist/notifications.server.cjs +0 -24
- package/dist/notifications.server.js +0 -24
- package/dist/orders.server.cjs +1 -4
- package/dist/orders.server.js +1 -4
- package/dist/organizations.server.cjs +115 -39
- package/dist/organizations.server.js +115 -39
- package/dist/style.css +9 -9
- package/dist/{web-42I-Howt.cjs → web-B0cfxzgu.cjs} +1 -1
- package/dist/{web-ByhZ_fIu.js → web-DVR8m2fm.js} +1 -1
- package/package.json +1 -1
- package/src/components/Feed/Feed.old.vue +0 -1
- package/src/components/Feed/Feed.vue +0 -30
- package/src/modules/auth/FIXES.md +2 -26
- package/src/modules/auth/views/components/blocks/CardUser.vue +2 -2
- package/src/modules/auth/views/components/layouts/Auth.vue +1 -1
- package/src/modules/auth/views/components/pages/Invite.vue +2 -2
- package/src/modules/auth/views/components/pages/Profile.vue +33 -48
- package/src/modules/auth/views/components/sections/SliderFeatures.vue +5 -7
- package/src/modules/auth/views/store/auth.js +15 -0
- package/src/modules/chats/CLAUDE.md +137 -0
- package/src/modules/chats/components/blocks/ChatMessage.vue +12 -0
- package/src/modules/chats/components/sections/ChatWindow.vue +84 -2
- package/src/modules/chats/controllers/chats.controller.js +187 -0
- package/src/modules/chats/models/chat.model.js +21 -0
- package/src/modules/chats/routes/chats.routes.js +46 -0
- package/src/modules/chats/store/chat.store.js +67 -0
- package/src/modules/community/components/layouts/Community.vue +2 -2
- package/src/modules/community/components/pages/Posts.vue +3 -328
- package/src/modules/events/components/pages/EditEventTickets.vue +1 -1
- package/src/modules/events/components/pages/Events.vue +2 -2
- package/src/modules/globals/views/mixins/mixins.js +7 -0
- package/src/modules/marketplace/views/components/layouts/Marketplace.vue +160 -8
- package/src/modules/notifications/controllers/notifications.controller.js +0 -6
- package/src/modules/notifications/services/notification.service.js +1 -17
- package/src/modules/notifications/services/web-push.service.js +0 -2
- package/src/modules/orders/components/blocks/CardOrderBackoffice.vue +2 -2
- package/src/modules/orders/components/blocks/CardOrderVar1.vue +1 -1
- package/src/modules/orders/controllers/orders.controller.js +2 -4
- package/src/modules/organizations/CLAUDE.md +259 -0
- package/src/modules/organizations/components/blocks/CardDepartment.vue +1 -22
- package/src/modules/organizations/components/blocks/Socials.vue +1 -1
- package/src/modules/organizations/components/elements/ButtonToggleMembership.vue +3 -3
- package/src/modules/organizations/components/forms/AddExistingMembersForm.vue +191 -0
- package/src/modules/organizations/components/forms/DepartmentForm.vue +390 -0
- package/src/modules/organizations/components/forms/InviteForm.vue +81 -0
- package/src/modules/organizations/components/pages/Department.vue +10 -10
- package/src/modules/organizations/components/pages/DepartmentEdit.vue +8 -8
- package/src/modules/organizations/components/pages/Members.vue +265 -171
- package/src/modules/organizations/components/pages/Organization.new.vue +172 -183
- package/src/modules/organizations/components/pages/Organization.vue +6 -6
- package/src/modules/organizations/components/pages/OrganizationEdit.vue +1 -1
- package/src/modules/organizations/components/pages/Organizations.vue +1 -1
- package/src/modules/organizations/components/sections/Organizations.vue +2 -2
- package/src/modules/organizations/components/sections/Publics.vue +4 -4
- package/src/modules/organizations/configs/navigation.organization.config.js +40 -39
- package/src/modules/organizations/controllers/departments.controller.js +53 -34
- package/src/modules/organizations/controllers/invites.controller.js +44 -5
- package/src/modules/organizations/controllers/memberships.controller.js +43 -4
- package/src/modules/organizations/organizations.client.js +24 -15
- package/src/modules/organizations/router/departments.router.js +0 -18
- package/src/modules/organizations/routes/departments.routes.js +6 -8
- package/src/modules/organizations/routes/invites.routes.js +6 -4
- package/src/modules/organizations/routes/memberships.routes.js +6 -5
- package/src/modules/organizations/store/departments.store.js +5 -0
- package/src/modules/organizations/store/invites.store.js +5 -0
- package/src/modules/organizations/store/memberships.store.js +23 -0
- package/src/modules/products/components/pages/Products.vue +0 -1
- package/src/modules/spots/components/blocks/CardSpot.vue +1 -1
- package/src/modules/spots/components/pages/Spots.vue +3 -203
- package/src/styles/base/all.scss +0 -15
- package/src/styles/typography.scss +20 -5
- package/dist/martyrs/src/components/Address/Address.vue2.cjs.map +0 -1
- package/dist/martyrs/src/components/LocationMarker/LocationMarker.vue2.cjs.map +0 -1
- package/dist/martyrs/src/components/Select/Select.vue2.cjs.map +0 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue.cjs +0 -76
- package/dist/martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue.cjs.map +0 -1
- package/dist/martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue.js +0 -76
- package/dist/martyrs/src/modules/globals/views/components/blocks/BlockFilter.vue.js.map +0 -1
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs +0 -280
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.cjs.map +0 -1
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js +0 -280
- package/dist/martyrs/src/modules/organizations/components/pages/DepartmentEdit.vue.js.map +0 -1
- package/dist/martyrs/src/modules/organizations/store/departments.cjs +0 -121
- package/dist/martyrs/src/modules/organizations/store/departments.cjs.map +0 -1
- package/dist/martyrs/src/modules/organizations/store/departments.js +0 -121
- package/dist/martyrs/src/modules/organizations/store/departments.js.map +0 -1
- package/dist/martyrs/src/modules/organizations/store/invites.cjs +0 -64
- package/dist/martyrs/src/modules/organizations/store/invites.cjs.map +0 -1
- package/dist/martyrs/src/modules/organizations/store/invites.js +0 -64
- package/dist/martyrs/src/modules/organizations/store/invites.js.map +0 -1
- package/dist/martyrs/src/modules/organizations/store/memberships.cjs +0 -87
- package/dist/martyrs/src/modules/organizations/store/memberships.cjs.map +0 -1
- package/dist/martyrs/src/modules/organizations/store/memberships.js +0 -87
- package/dist/martyrs/src/modules/organizations/store/memberships.js.map +0 -1
- package/src/CLAUDE.MD +0 -15
- package/src/modules/globals/controllers/classes/globals.websocket.ws.js +0 -102
- package/src/modules/globals/views/components/blocks/BlockFilter.vue +0 -60
- package/src/modules/organizations/store/departments.js +0 -137
- package/src/modules/organizations/store/invites.js +0 -76
- package/src/modules/organizations/store/memberships.js +0 -110
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ref, computed, onMounted, nextTick, watch, createElementBlock, openBlock, createElementVNode, createVNode, Transition, withCtx, createBlock, TransitionGroup, Fragment, renderList, withDirectives, withKeys, vModelText } from "vue";
|
|
1
|
+
import { ref, computed, onMounted, nextTick, watch, onUnmounted, createElementBlock, openBlock, createElementVNode, createVNode, Transition, withCtx, createBlock, TransitionGroup, Fragment, renderList, withDirectives, withKeys, vModelText } from "vue";
|
|
2
2
|
import PlaceholderChat from "../../../icons/placeholders/PlaceholderChat.vue.js";
|
|
3
3
|
import ChatMessage from "../blocks/ChatMessage.vue.js";
|
|
4
4
|
import chatStore from "../../store/chat.store.js";
|
|
@@ -15,6 +15,8 @@ const _sfc_main = {
|
|
|
15
15
|
setup(__props) {
|
|
16
16
|
const newMessage = ref("");
|
|
17
17
|
const allMessages = ref(null);
|
|
18
|
+
const visibleMessageIds = ref(/* @__PURE__ */ new Set());
|
|
19
|
+
let messageObserver = null;
|
|
18
20
|
const messages = computed(() => chatStore.state.messages);
|
|
19
21
|
const scrollToBottom = () => {
|
|
20
22
|
if (allMessages.value) {
|
|
@@ -36,11 +38,65 @@ const _sfc_main = {
|
|
|
36
38
|
scrollToBottom();
|
|
37
39
|
}
|
|
38
40
|
};
|
|
41
|
+
const observeMessages = () => {
|
|
42
|
+
console.log("[CHAT] Setting up message observer");
|
|
43
|
+
if (messageObserver) {
|
|
44
|
+
messageObserver.disconnect();
|
|
45
|
+
}
|
|
46
|
+
messageObserver = new IntersectionObserver((entries) => {
|
|
47
|
+
console.log("[CHAT] Observer triggered for", entries.length, "entries");
|
|
48
|
+
entries.forEach((entry) => {
|
|
49
|
+
const messageId = entry.target.dataset.messageId;
|
|
50
|
+
if (entry.isIntersecting) {
|
|
51
|
+
visibleMessageIds.value.add(messageId);
|
|
52
|
+
} else {
|
|
53
|
+
visibleMessageIds.value.delete(messageId);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
if (visibleMessageIds.value.size > 0) {
|
|
57
|
+
const unreadVisibleMessages = messages.value.filter((msg) => {
|
|
58
|
+
if (!visibleMessageIds.value.has(msg._id)) return false;
|
|
59
|
+
console.log("[CHAT] Checking if own message:", {
|
|
60
|
+
msgUserId: msg.userId,
|
|
61
|
+
currentUserId: chatStore.state.userId,
|
|
62
|
+
isEqual: msg.userId === chatStore.state.userId,
|
|
63
|
+
msgUserIdType: typeof msg.userId,
|
|
64
|
+
currentUserIdType: typeof chatStore.state.userId
|
|
65
|
+
});
|
|
66
|
+
if (msg.userId && msg.userId === chatStore.state.userId) return false;
|
|
67
|
+
if (msg.readBy?.some((r) => r.userId === chatStore.state.userId)) return false;
|
|
68
|
+
console.log("[CHAT] Message can be marked as read:", {
|
|
69
|
+
msgId: msg._id,
|
|
70
|
+
msgUserId: msg.userId,
|
|
71
|
+
currentUserId: chatStore.state.userId,
|
|
72
|
+
readBy: msg.readBy
|
|
73
|
+
});
|
|
74
|
+
return true;
|
|
75
|
+
}).map((msg) => msg._id);
|
|
76
|
+
console.log("[CHAT] Unread visible messages to mark:", unreadVisibleMessages);
|
|
77
|
+
if (unreadVisibleMessages.length > 0) {
|
|
78
|
+
console.log("[CHAT] Sending markAsRead for messages:", unreadVisibleMessages);
|
|
79
|
+
chatStore.methods.markMessagesAsRead(unreadVisibleMessages);
|
|
80
|
+
} else {
|
|
81
|
+
console.log("[CHAT] No unread messages to mark");
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}, {
|
|
85
|
+
root: allMessages.value,
|
|
86
|
+
threshold: 0.5
|
|
87
|
+
});
|
|
88
|
+
nextTick(() => {
|
|
89
|
+
const messageElements = allMessages.value?.querySelectorAll("[data-message-id]");
|
|
90
|
+
console.log("[CHAT] Found message elements to observe:", messageElements?.length);
|
|
91
|
+
messageElements?.forEach((el) => messageObserver.observe(el));
|
|
92
|
+
});
|
|
93
|
+
};
|
|
39
94
|
onMounted(() => {
|
|
40
95
|
nextTick(() => {
|
|
41
96
|
if (allMessages.value) {
|
|
42
97
|
allMessages.value.scrollTop = allMessages.value.scrollHeight;
|
|
43
98
|
}
|
|
99
|
+
observeMessages();
|
|
44
100
|
});
|
|
45
101
|
});
|
|
46
102
|
watch(messages, () => {
|
|
@@ -48,8 +104,14 @@ const _sfc_main = {
|
|
|
48
104
|
if (allMessages.value) {
|
|
49
105
|
allMessages.value.scrollTop = allMessages.value.scrollHeight;
|
|
50
106
|
}
|
|
107
|
+
observeMessages();
|
|
51
108
|
});
|
|
52
109
|
}, { deep: true });
|
|
110
|
+
onUnmounted(() => {
|
|
111
|
+
if (messageObserver) {
|
|
112
|
+
messageObserver.disconnect();
|
|
113
|
+
}
|
|
114
|
+
});
|
|
53
115
|
return (_ctx, _cache) => {
|
|
54
116
|
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
55
117
|
createElementVNode("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatWindow.vue.js","sources":["../../../../../../../src/modules/chats/components/sections/ChatWindow.vue"],"sourcesContent":["<template>\n <div class=\"bg-white radius-semi bg-white o-hidden pos-relative\">\n <div ref=\"allMessages\" class=\"chat-messages o-scroll h-max-20r\">\n <div class=\"pos-relative h-min-20r flex-justify-end flex flex-column br-b br-solid br-black-transp-10\">\n <transition name=\"scaleIn\" mode=\"out-in\">\n <div v-if=\"messages.length < 1\" class=\"flex-center pd-small t-center w-100 h-100 flex-column flex pos-absolute\">\n <PlaceholderChat class=\"radius-100 mn-b-thin\"/>\n <h4 class='mn-b-thin'>Here you can view your chat history</h4>\n <p>Feel free to ask if you have any questions.</p>\n </div>\n\n <TransitionGroup v-else name=\"list\" tag=\"ul\" class=\"w-100 o-hidden\" @after-enter=\"scrollToBottom\">\n <ChatMessage\n v-for=\"message in messages\"\n :key=\"message._id\"\n :message=\"message\"\n />\n </TransitionGroup>\n </transition>\n </div>\n </div>\n\n <div class=\"flex-nowrap flex-v-center flex bg-white w-100 radius-big pd-small\">\n <!-- <IconAdd class=\"mn-r-thin t-transp i-regular\" /> -->\n <input class=\"\" placeholder=\"Enter your message\" type=\"text\" v-model=\"newMessage\" @keyup.enter=\"sendMessage\" />\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, watch, onMounted, nextTick } from 'vue';\n\nimport IconAdd from '@martyrs/src/modules/icons/navigation/IconAdd.vue'\nimport PlaceholderChat from '@martyrs/src/modules/icons/placeholders/PlaceholderChat.vue'\n\nimport ChatMessage from '../blocks/ChatMessage.vue';\nimport chatStore from '../../store/chat.store.js';\n\nconst newMessage = ref('');\nconst allMessages = ref(null);\n\n// Вычисляемые свойства\nconst messages = computed(() => chatStore.state.messages);\n\n// Функция прокрутки вниз\nconst scrollToBottom = () => {\n if (allMessages.value) {\n allMessages.value.scrollTop = allMessages.value.scrollHeight;\n }\n};\n\n// Функция для отправки сообщения\nconst sendMessage = async () => {\n if (newMessage.value) {\n const message = {\n text: newMessage.value,\n module: 'chat',\n username: chatStore.state.username,\n chatId: chatStore.state.currentChatId\n };\n\n chatStore.methods.addMessage(message);\n newMessage.value = '';\n\n // Ждем, пока все анимации и рендеринг завершатся\n await nextTick();\n await new Promise(resolve => setTimeout(resolve, 100)); // Небольшая задержка для анимаций\n scrollToBottom();\n }\n};\n\n// Прокрутка вниз при монтировании\nonMounted(() => {\n nextTick(() => {\n if (allMessages.value) {\n allMessages.value.scrollTop = allMessages.value.scrollHeight;\n }\n });\n});\n\n// Прокрутка вниз при изменении сообщений\nwatch(messages, () => {\n nextTick(() => {\n if (allMessages.value) {\n allMessages.value.scrollTop = allMessages.value.scrollHeight;\n }\n });\n}, { deep: true });\n\n//
|
|
1
|
+
{"version":3,"file":"ChatWindow.vue.js","sources":["../../../../../../../src/modules/chats/components/sections/ChatWindow.vue"],"sourcesContent":["<template>\n <div class=\"bg-white radius-semi bg-white o-hidden pos-relative\">\n <div ref=\"allMessages\" class=\"chat-messages o-scroll h-max-20r\">\n <div class=\"pos-relative h-min-20r flex-justify-end flex flex-column br-b br-solid br-black-transp-10\">\n <transition name=\"scaleIn\" mode=\"out-in\">\n <div v-if=\"messages.length < 1\" class=\"flex-center pd-small t-center w-100 h-100 flex-column flex pos-absolute\">\n <PlaceholderChat class=\"radius-100 mn-b-thin\"/>\n <h4 class='mn-b-thin'>Here you can view your chat history</h4>\n <p>Feel free to ask if you have any questions.</p>\n </div>\n\n <TransitionGroup v-else name=\"list\" tag=\"ul\" class=\"w-100 o-hidden\" @after-enter=\"scrollToBottom\">\n <ChatMessage\n v-for=\"message in messages\"\n :key=\"message._id\"\n :message=\"message\"\n />\n </TransitionGroup>\n </transition>\n </div>\n </div>\n\n <div class=\"flex-nowrap flex-v-center flex bg-white w-100 radius-big pd-small\">\n <!-- <IconAdd class=\"mn-r-thin t-transp i-regular\" /> -->\n <input class=\"\" placeholder=\"Enter your message\" type=\"text\" v-model=\"newMessage\" @keyup.enter=\"sendMessage\" />\n </div>\n </div>\n</template>\n\n<script setup>\nimport { ref, computed, watch, onMounted, onUnmounted, nextTick } from 'vue';\n\nimport IconAdd from '@martyrs/src/modules/icons/navigation/IconAdd.vue'\nimport PlaceholderChat from '@martyrs/src/modules/icons/placeholders/PlaceholderChat.vue'\n\nimport ChatMessage from '../blocks/ChatMessage.vue';\nimport chatStore from '../../store/chat.store.js';\n\nconst newMessage = ref('');\nconst allMessages = ref(null);\nconst visibleMessageIds = ref(new Set());\nlet messageObserver = null;\n\n// Вычисляемые свойства\nconst messages = computed(() => chatStore.state.messages);\n\n// Функция прокрутки вниз\nconst scrollToBottom = () => {\n if (allMessages.value) {\n allMessages.value.scrollTop = allMessages.value.scrollHeight;\n }\n};\n\n// Функция для отправки сообщения\nconst sendMessage = async () => {\n if (newMessage.value) {\n const message = {\n text: newMessage.value,\n module: 'chat',\n username: chatStore.state.username,\n chatId: chatStore.state.currentChatId\n };\n\n chatStore.methods.addMessage(message);\n newMessage.value = '';\n\n // Ждем, пока все анимации и рендеринг завершатся\n await nextTick();\n await new Promise(resolve => setTimeout(resolve, 100)); // Небольшая задержка для анимаций\n scrollToBottom();\n }\n};\n\n// Отслеживание видимых сообщений\nconst observeMessages = () => {\n console.log('[CHAT] Setting up message observer');\n \n // Очищаем предыдущий observer если есть\n if (messageObserver) {\n messageObserver.disconnect();\n }\n \n messageObserver = new IntersectionObserver((entries) => {\n console.log('[CHAT] Observer triggered for', entries.length, 'entries');\n entries.forEach(entry => {\n const messageId = entry.target.dataset.messageId;\n if (entry.isIntersecting) {\n visibleMessageIds.value.add(messageId);\n } else {\n visibleMessageIds.value.delete(messageId);\n }\n });\n \n // Отправляем прочтение видимых сообщений\n if (visibleMessageIds.value.size > 0) {\n const unreadVisibleMessages = messages.value\n .filter(msg => {\n // Проверяем, что сообщение видимо\n if (!visibleMessageIds.value.has(msg._id)) return false;\n \n // Проверяем, что сообщение не от текущего пользователя\n console.log('[CHAT] Checking if own message:', {\n msgUserId: msg.userId,\n currentUserId: chatStore.state.userId,\n isEqual: msg.userId === chatStore.state.userId,\n msgUserIdType: typeof msg.userId,\n currentUserIdType: typeof chatStore.state.userId\n });\n if (msg.userId && msg.userId === chatStore.state.userId) return false;\n \n // Проверяем, что сообщение еще не прочитано текущим пользователем\n if (msg.readBy?.some(r => r.userId === chatStore.state.userId)) return false;\n \n console.log('[CHAT] Message can be marked as read:', {\n msgId: msg._id,\n msgUserId: msg.userId,\n currentUserId: chatStore.state.userId,\n readBy: msg.readBy\n });\n \n return true;\n })\n .map(msg => msg._id);\n \n console.log('[CHAT] Unread visible messages to mark:', unreadVisibleMessages);\n \n if (unreadVisibleMessages.length > 0) {\n console.log('[CHAT] Sending markAsRead for messages:', unreadVisibleMessages);\n chatStore.methods.markMessagesAsRead(unreadVisibleMessages);\n } else {\n console.log('[CHAT] No unread messages to mark');\n }\n }\n }, {\n root: allMessages.value,\n threshold: 0.5\n });\n \n // Наблюдаем за всеми сообщениями\n nextTick(() => {\n const messageElements = allMessages.value?.querySelectorAll('[data-message-id]');\n console.log('[CHAT] Found message elements to observe:', messageElements?.length);\n messageElements?.forEach(el => messageObserver.observe(el));\n });\n};\n\n// Прокрутка вниз при монтировании\nonMounted(() => {\n nextTick(() => {\n if (allMessages.value) {\n allMessages.value.scrollTop = allMessages.value.scrollHeight;\n }\n observeMessages();\n });\n});\n\n// Прокрутка вниз при изменении сообщений\nwatch(messages, () => {\n nextTick(() => {\n if (allMessages.value) {\n allMessages.value.scrollTop = allMessages.value.scrollHeight;\n }\n observeMessages();\n });\n}, { deep: true });\n\n// Очистка observer при размонтировании\nonUnmounted(() => {\n if (messageObserver) {\n messageObserver.disconnect();\n }\n});\n</script>\n\n<style>\n.list-enter-active,\n.list-leave-active {\n transition: all 0.5s ease;\n}\n.list-enter-from,\n.list-leave-to {\n opacity: 0;\n transform: translateX(30px);\n}\n</style>"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,8 @@ const vue = require("vue");
|
|
|
5
5
|
const state = vue.reactive({
|
|
6
6
|
messages: [],
|
|
7
7
|
currentChatId: null,
|
|
8
|
-
username: null
|
|
8
|
+
username: null,
|
|
9
|
+
userId: null
|
|
9
10
|
});
|
|
10
11
|
const methods = {
|
|
11
12
|
/**
|
|
@@ -15,6 +16,7 @@ const methods = {
|
|
|
15
16
|
async connectWebSocket(userId) {
|
|
16
17
|
try {
|
|
17
18
|
console.log("[Chat] Connecting to WebSocket with userId:", userId);
|
|
19
|
+
state.userId = userId;
|
|
18
20
|
await globals_websocket.default.connect(userId);
|
|
19
21
|
await globals_websocket.default.subscribeModule("chat");
|
|
20
22
|
globals_websocket.default.removeModuleListeners("chat");
|
|
@@ -27,6 +29,30 @@ const methods = {
|
|
|
27
29
|
},
|
|
28
30
|
{ module: "chat" }
|
|
29
31
|
);
|
|
32
|
+
globals_websocket.default.addEventListener(
|
|
33
|
+
"readReceipt",
|
|
34
|
+
(data) => {
|
|
35
|
+
console.log("[CHAT STORE] Received readReceipt:", data);
|
|
36
|
+
if (data.messageIds && data.userId) {
|
|
37
|
+
data.messageIds.forEach((messageId) => {
|
|
38
|
+
const message = state.messages.find((m) => m._id === messageId);
|
|
39
|
+
if (message) {
|
|
40
|
+
if (!message.readBy) {
|
|
41
|
+
message.readBy = [];
|
|
42
|
+
}
|
|
43
|
+
if (!message.readBy.some((r) => r.userId === data.userId)) {
|
|
44
|
+
message.readBy.push({
|
|
45
|
+
userId: data.userId,
|
|
46
|
+
readAt: data.readAt || /* @__PURE__ */ new Date()
|
|
47
|
+
});
|
|
48
|
+
console.log("[CHAT STORE] Updated message read status:", messageId);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
{ module: "chat" }
|
|
55
|
+
);
|
|
30
56
|
} catch (error) {
|
|
31
57
|
console.error("[Chat] WebSocket connection failed:", error);
|
|
32
58
|
throw error;
|
|
@@ -64,6 +90,39 @@ const methods = {
|
|
|
64
90
|
...message,
|
|
65
91
|
module: "chat",
|
|
66
92
|
type: "message",
|
|
93
|
+
chatId: state.currentChatId,
|
|
94
|
+
chatType: "order",
|
|
95
|
+
// TODO: динамически определять тип чата
|
|
96
|
+
userId: state.userId
|
|
97
|
+
// Добавляем userId отправителя
|
|
98
|
+
});
|
|
99
|
+
},
|
|
100
|
+
/**
|
|
101
|
+
* Отметить сообщения как прочитанные
|
|
102
|
+
* @param {Array<String>} messageIds
|
|
103
|
+
*/
|
|
104
|
+
async markMessagesAsRead(messageIds) {
|
|
105
|
+
console.log("[CHAT STORE] markMessagesAsRead called with:", messageIds);
|
|
106
|
+
console.log("[CHAT STORE] Current userId:", state.userId);
|
|
107
|
+
messageIds.forEach((messageId) => {
|
|
108
|
+
const message = state.messages.find((m) => m._id === messageId);
|
|
109
|
+
if (message) {
|
|
110
|
+
if (!message.readBy) {
|
|
111
|
+
message.readBy = [];
|
|
112
|
+
}
|
|
113
|
+
if (!message.readBy.some((r) => r.userId === state.userId)) {
|
|
114
|
+
message.readBy.push({
|
|
115
|
+
userId: state.userId,
|
|
116
|
+
readAt: /* @__PURE__ */ new Date()
|
|
117
|
+
});
|
|
118
|
+
console.log("[CHAT STORE] Locally updated message read status:", messageId);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
await globals_websocket.default.send({
|
|
123
|
+
type: "markAsRead",
|
|
124
|
+
module: "chat",
|
|
125
|
+
messageIds,
|
|
67
126
|
chatId: state.currentChatId
|
|
68
127
|
});
|
|
69
128
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.store.cjs","sources":["../../../../../../src/modules/chats/store/chat.store.js"],"sourcesContent":["import globalWebSocket from '@martyrs/src/modules/globals/views/classes/globals.websocket.js';\nimport { reactive, readonly } from 'vue';\n\nconst state = reactive({\n messages: [],\n currentChatId: null,\n username: null,\n});\n\nconst methods = {\n /**\n * Подключение к глобальному WebSocket и подписка на чат\n * @param {String} userId\n */\n async connectWebSocket(userId) {\n try {\n console.log('[Chat] Connecting to WebSocket with userId:', userId);\n await globalWebSocket.connect(userId);\n await globalWebSocket.subscribeModule('chat'); // 👈 Подписка на модуль чата\n\n // Очистка старых листенеров\n globalWebSocket.removeModuleListeners('chat');\n\n // Добавляем обработчик входящих сообщений\n globalWebSocket.addEventListener(\n 'message',\n data => {\n if (data.chatId === state.currentChatId) {\n state.messages.push(data);\n }\n },\n { module: 'chat' }\n );\n } catch (error) {\n console.error('[Chat] WebSocket connection failed:', error);\n throw error;\n }\n },\n\n /**\n * Установка текущего активного чата и загрузка сообщений\n * @param {String} chatId\n */\n async setCurrentChat(chatId) {\n state.currentChatId = chatId;\n state.messages = [];\n\n // Отправляем joinChat через WebSocket\n globalWebSocket.send({ type: 'joinChat', module: 'chat', chatId });\n\n // Загружаем историю сообщений\n try {\n const response = await fetch(`/messages/${chatId}`);\n const messages = await response.json();\n methods.setMessages(messages);\n } catch (err) {\n console.error('[Chat] Failed to fetch messages:', err);\n }\n },\n\n /**\n * Установка сообщений\n * @param {Array} messages\n */\n setMessages(messages) {\n state.messages = messages;\n },\n\n /**\n * Отправка сообщения через WebSocket\n * @param {Object} message\n */\n async addMessage(message) {\n await globalWebSocket.send({\n ...message,\n module: 'chat',\n type: 'message',\n chatId: state.currentChatId,\n });\n },\n\n /**\n * Установка имени пользователя\n * @param {String} username\n */\n setUsername(username) {\n state.username = username;\n },\n\n /**\n * Отключение от чата (очистка листенеров)\n */\n disconnectChat() {\n globalWebSocket.removeModuleListeners('chat');\n // globalWebSocket.disconnect(); // включить, если нужно полностью разорвать соединение\n },\n};\n\nexport default {\n state: readonly(state),\n methods,\n};\n"],"names":["reactive","globalWebSocket","readonly"],"mappings":";;;;AAGA,MAAM,QAAQA,IAAAA,SAAS;AAAA,EACrB,UAAU,CAAA;AAAA,EACV,eAAe;AAAA,EACf,UAAU;
|
|
1
|
+
{"version":3,"file":"chat.store.cjs","sources":["../../../../../../src/modules/chats/store/chat.store.js"],"sourcesContent":["import globalWebSocket from '@martyrs/src/modules/globals/views/classes/globals.websocket.js';\nimport { reactive, readonly } from 'vue';\n\nconst state = reactive({\n messages: [],\n currentChatId: null,\n username: null,\n userId: null,\n});\n\nconst methods = {\n /**\n * Подключение к глобальному WebSocket и подписка на чат\n * @param {String} userId\n */\n async connectWebSocket(userId) {\n try {\n console.log('[Chat] Connecting to WebSocket with userId:', userId);\n state.userId = userId; // Сохраняем userId\n await globalWebSocket.connect(userId);\n await globalWebSocket.subscribeModule('chat'); // 👈 Подписка на модуль чата\n\n // Очистка старых листенеров\n globalWebSocket.removeModuleListeners('chat');\n\n // Добавляем обработчик входящих сообщений\n globalWebSocket.addEventListener(\n 'message',\n data => {\n if (data.chatId === state.currentChatId) {\n state.messages.push(data);\n }\n },\n { module: 'chat' }\n );\n \n // Обработчик подтверждения прочтения\n globalWebSocket.addEventListener(\n 'readReceipt',\n data => {\n console.log('[CHAT STORE] Received readReceipt:', data);\n \n // Обновляем статус прочтения для сообщений\n if (data.messageIds && data.userId) {\n data.messageIds.forEach(messageId => {\n const message = state.messages.find(m => m._id === messageId);\n if (message) {\n if (!message.readBy) {\n message.readBy = [];\n }\n // Добавляем запись о прочтении если её еще нет\n if (!message.readBy.some(r => r.userId === data.userId)) {\n message.readBy.push({\n userId: data.userId,\n readAt: data.readAt || new Date()\n });\n console.log('[CHAT STORE] Updated message read status:', messageId);\n }\n }\n });\n }\n },\n { module: 'chat' }\n );\n } catch (error) {\n console.error('[Chat] WebSocket connection failed:', error);\n throw error;\n }\n },\n\n /**\n * Установка текущего активного чата и загрузка сообщений\n * @param {String} chatId\n */\n async setCurrentChat(chatId) {\n state.currentChatId = chatId;\n state.messages = [];\n\n // Отправляем joinChat через WebSocket\n globalWebSocket.send({ type: 'joinChat', module: 'chat', chatId });\n\n // Загружаем историю сообщений\n try {\n const response = await fetch(`/messages/${chatId}`);\n const messages = await response.json();\n methods.setMessages(messages);\n } catch (err) {\n console.error('[Chat] Failed to fetch messages:', err);\n }\n },\n\n /**\n * Установка сообщений\n * @param {Array} messages\n */\n setMessages(messages) {\n state.messages = messages;\n },\n\n /**\n * Отправка сообщения через WebSocket\n * @param {Object} message\n */\n async addMessage(message) {\n await globalWebSocket.send({\n ...message,\n module: 'chat',\n type: 'message',\n chatId: state.currentChatId,\n chatType: 'order', // TODO: динамически определять тип чата\n userId: state.userId, // Добавляем userId отправителя\n });\n },\n\n /**\n * Отметить сообщения как прочитанные\n * @param {Array<String>} messageIds\n */\n async markMessagesAsRead(messageIds) {\n console.log('[CHAT STORE] markMessagesAsRead called with:', messageIds);\n console.log('[CHAT STORE] Current userId:', state.userId);\n \n // Обновляем локальное состояние сразу для текущего пользователя\n messageIds.forEach(messageId => {\n const message = state.messages.find(m => m._id === messageId);\n if (message) {\n if (!message.readBy) {\n message.readBy = [];\n }\n // Добавляем запись о прочтении если её еще нет\n if (!message.readBy.some(r => r.userId === state.userId)) {\n message.readBy.push({\n userId: state.userId,\n readAt: new Date()\n });\n console.log('[CHAT STORE] Locally updated message read status:', messageId);\n }\n }\n });\n \n await globalWebSocket.send({\n type: 'markAsRead',\n module: 'chat',\n messageIds: messageIds,\n chatId: state.currentChatId,\n });\n },\n\n /**\n * Установка имени пользователя\n * @param {String} username\n */\n setUsername(username) {\n state.username = username;\n },\n\n /**\n * Отключение от чата (очистка листенеров)\n */\n disconnectChat() {\n globalWebSocket.removeModuleListeners('chat');\n // globalWebSocket.disconnect(); // включить, если нужно полностью разорвать соединение\n },\n};\n\nexport default {\n state: readonly(state),\n methods,\n};\n"],"names":["reactive","globalWebSocket","readonly"],"mappings":"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"}
|
|
@@ -3,7 +3,8 @@ import { reactive, readonly } from "vue";
|
|
|
3
3
|
const state = reactive({
|
|
4
4
|
messages: [],
|
|
5
5
|
currentChatId: null,
|
|
6
|
-
username: null
|
|
6
|
+
username: null,
|
|
7
|
+
userId: null
|
|
7
8
|
});
|
|
8
9
|
const methods = {
|
|
9
10
|
/**
|
|
@@ -13,6 +14,7 @@ const methods = {
|
|
|
13
14
|
async connectWebSocket(userId) {
|
|
14
15
|
try {
|
|
15
16
|
console.log("[Chat] Connecting to WebSocket with userId:", userId);
|
|
17
|
+
state.userId = userId;
|
|
16
18
|
await globalWebSocket.connect(userId);
|
|
17
19
|
await globalWebSocket.subscribeModule("chat");
|
|
18
20
|
globalWebSocket.removeModuleListeners("chat");
|
|
@@ -25,6 +27,30 @@ const methods = {
|
|
|
25
27
|
},
|
|
26
28
|
{ module: "chat" }
|
|
27
29
|
);
|
|
30
|
+
globalWebSocket.addEventListener(
|
|
31
|
+
"readReceipt",
|
|
32
|
+
(data) => {
|
|
33
|
+
console.log("[CHAT STORE] Received readReceipt:", data);
|
|
34
|
+
if (data.messageIds && data.userId) {
|
|
35
|
+
data.messageIds.forEach((messageId) => {
|
|
36
|
+
const message = state.messages.find((m) => m._id === messageId);
|
|
37
|
+
if (message) {
|
|
38
|
+
if (!message.readBy) {
|
|
39
|
+
message.readBy = [];
|
|
40
|
+
}
|
|
41
|
+
if (!message.readBy.some((r) => r.userId === data.userId)) {
|
|
42
|
+
message.readBy.push({
|
|
43
|
+
userId: data.userId,
|
|
44
|
+
readAt: data.readAt || /* @__PURE__ */ new Date()
|
|
45
|
+
});
|
|
46
|
+
console.log("[CHAT STORE] Updated message read status:", messageId);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
{ module: "chat" }
|
|
53
|
+
);
|
|
28
54
|
} catch (error) {
|
|
29
55
|
console.error("[Chat] WebSocket connection failed:", error);
|
|
30
56
|
throw error;
|
|
@@ -62,6 +88,39 @@ const methods = {
|
|
|
62
88
|
...message,
|
|
63
89
|
module: "chat",
|
|
64
90
|
type: "message",
|
|
91
|
+
chatId: state.currentChatId,
|
|
92
|
+
chatType: "order",
|
|
93
|
+
// TODO: динамически определять тип чата
|
|
94
|
+
userId: state.userId
|
|
95
|
+
// Добавляем userId отправителя
|
|
96
|
+
});
|
|
97
|
+
},
|
|
98
|
+
/**
|
|
99
|
+
* Отметить сообщения как прочитанные
|
|
100
|
+
* @param {Array<String>} messageIds
|
|
101
|
+
*/
|
|
102
|
+
async markMessagesAsRead(messageIds) {
|
|
103
|
+
console.log("[CHAT STORE] markMessagesAsRead called with:", messageIds);
|
|
104
|
+
console.log("[CHAT STORE] Current userId:", state.userId);
|
|
105
|
+
messageIds.forEach((messageId) => {
|
|
106
|
+
const message = state.messages.find((m) => m._id === messageId);
|
|
107
|
+
if (message) {
|
|
108
|
+
if (!message.readBy) {
|
|
109
|
+
message.readBy = [];
|
|
110
|
+
}
|
|
111
|
+
if (!message.readBy.some((r) => r.userId === state.userId)) {
|
|
112
|
+
message.readBy.push({
|
|
113
|
+
userId: state.userId,
|
|
114
|
+
readAt: /* @__PURE__ */ new Date()
|
|
115
|
+
});
|
|
116
|
+
console.log("[CHAT STORE] Locally updated message read status:", messageId);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
await globalWebSocket.send({
|
|
121
|
+
type: "markAsRead",
|
|
122
|
+
module: "chat",
|
|
123
|
+
messageIds,
|
|
65
124
|
chatId: state.currentChatId
|
|
66
125
|
});
|
|
67
126
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.store.js","sources":["../../../../../../src/modules/chats/store/chat.store.js"],"sourcesContent":["import globalWebSocket from '@martyrs/src/modules/globals/views/classes/globals.websocket.js';\nimport { reactive, readonly } from 'vue';\n\nconst state = reactive({\n messages: [],\n currentChatId: null,\n username: null,\n});\n\nconst methods = {\n /**\n * Подключение к глобальному WebSocket и подписка на чат\n * @param {String} userId\n */\n async connectWebSocket(userId) {\n try {\n console.log('[Chat] Connecting to WebSocket with userId:', userId);\n await globalWebSocket.connect(userId);\n await globalWebSocket.subscribeModule('chat'); // 👈 Подписка на модуль чата\n\n // Очистка старых листенеров\n globalWebSocket.removeModuleListeners('chat');\n\n // Добавляем обработчик входящих сообщений\n globalWebSocket.addEventListener(\n 'message',\n data => {\n if (data.chatId === state.currentChatId) {\n state.messages.push(data);\n }\n },\n { module: 'chat' }\n );\n } catch (error) {\n console.error('[Chat] WebSocket connection failed:', error);\n throw error;\n }\n },\n\n /**\n * Установка текущего активного чата и загрузка сообщений\n * @param {String} chatId\n */\n async setCurrentChat(chatId) {\n state.currentChatId = chatId;\n state.messages = [];\n\n // Отправляем joinChat через WebSocket\n globalWebSocket.send({ type: 'joinChat', module: 'chat', chatId });\n\n // Загружаем историю сообщений\n try {\n const response = await fetch(`/messages/${chatId}`);\n const messages = await response.json();\n methods.setMessages(messages);\n } catch (err) {\n console.error('[Chat] Failed to fetch messages:', err);\n }\n },\n\n /**\n * Установка сообщений\n * @param {Array} messages\n */\n setMessages(messages) {\n state.messages = messages;\n },\n\n /**\n * Отправка сообщения через WebSocket\n * @param {Object} message\n */\n async addMessage(message) {\n await globalWebSocket.send({\n ...message,\n module: 'chat',\n type: 'message',\n chatId: state.currentChatId,\n });\n },\n\n /**\n * Установка имени пользователя\n * @param {String} username\n */\n setUsername(username) {\n state.username = username;\n },\n\n /**\n * Отключение от чата (очистка листенеров)\n */\n disconnectChat() {\n globalWebSocket.removeModuleListeners('chat');\n // globalWebSocket.disconnect(); // включить, если нужно полностью разорвать соединение\n },\n};\n\nexport default {\n state: readonly(state),\n methods,\n};\n"],"names":[],"mappings":";;AAGA,MAAM,QAAQ,SAAS;AAAA,EACrB,UAAU,CAAA;AAAA,EACV,eAAe;AAAA,EACf,UAAU;
|
|
1
|
+
{"version":3,"file":"chat.store.js","sources":["../../../../../../src/modules/chats/store/chat.store.js"],"sourcesContent":["import globalWebSocket from '@martyrs/src/modules/globals/views/classes/globals.websocket.js';\nimport { reactive, readonly } from 'vue';\n\nconst state = reactive({\n messages: [],\n currentChatId: null,\n username: null,\n userId: null,\n});\n\nconst methods = {\n /**\n * Подключение к глобальному WebSocket и подписка на чат\n * @param {String} userId\n */\n async connectWebSocket(userId) {\n try {\n console.log('[Chat] Connecting to WebSocket with userId:', userId);\n state.userId = userId; // Сохраняем userId\n await globalWebSocket.connect(userId);\n await globalWebSocket.subscribeModule('chat'); // 👈 Подписка на модуль чата\n\n // Очистка старых листенеров\n globalWebSocket.removeModuleListeners('chat');\n\n // Добавляем обработчик входящих сообщений\n globalWebSocket.addEventListener(\n 'message',\n data => {\n if (data.chatId === state.currentChatId) {\n state.messages.push(data);\n }\n },\n { module: 'chat' }\n );\n \n // Обработчик подтверждения прочтения\n globalWebSocket.addEventListener(\n 'readReceipt',\n data => {\n console.log('[CHAT STORE] Received readReceipt:', data);\n \n // Обновляем статус прочтения для сообщений\n if (data.messageIds && data.userId) {\n data.messageIds.forEach(messageId => {\n const message = state.messages.find(m => m._id === messageId);\n if (message) {\n if (!message.readBy) {\n message.readBy = [];\n }\n // Добавляем запись о прочтении если её еще нет\n if (!message.readBy.some(r => r.userId === data.userId)) {\n message.readBy.push({\n userId: data.userId,\n readAt: data.readAt || new Date()\n });\n console.log('[CHAT STORE] Updated message read status:', messageId);\n }\n }\n });\n }\n },\n { module: 'chat' }\n );\n } catch (error) {\n console.error('[Chat] WebSocket connection failed:', error);\n throw error;\n }\n },\n\n /**\n * Установка текущего активного чата и загрузка сообщений\n * @param {String} chatId\n */\n async setCurrentChat(chatId) {\n state.currentChatId = chatId;\n state.messages = [];\n\n // Отправляем joinChat через WebSocket\n globalWebSocket.send({ type: 'joinChat', module: 'chat', chatId });\n\n // Загружаем историю сообщений\n try {\n const response = await fetch(`/messages/${chatId}`);\n const messages = await response.json();\n methods.setMessages(messages);\n } catch (err) {\n console.error('[Chat] Failed to fetch messages:', err);\n }\n },\n\n /**\n * Установка сообщений\n * @param {Array} messages\n */\n setMessages(messages) {\n state.messages = messages;\n },\n\n /**\n * Отправка сообщения через WebSocket\n * @param {Object} message\n */\n async addMessage(message) {\n await globalWebSocket.send({\n ...message,\n module: 'chat',\n type: 'message',\n chatId: state.currentChatId,\n chatType: 'order', // TODO: динамически определять тип чата\n userId: state.userId, // Добавляем userId отправителя\n });\n },\n\n /**\n * Отметить сообщения как прочитанные\n * @param {Array<String>} messageIds\n */\n async markMessagesAsRead(messageIds) {\n console.log('[CHAT STORE] markMessagesAsRead called with:', messageIds);\n console.log('[CHAT STORE] Current userId:', state.userId);\n \n // Обновляем локальное состояние сразу для текущего пользователя\n messageIds.forEach(messageId => {\n const message = state.messages.find(m => m._id === messageId);\n if (message) {\n if (!message.readBy) {\n message.readBy = [];\n }\n // Добавляем запись о прочтении если её еще нет\n if (!message.readBy.some(r => r.userId === state.userId)) {\n message.readBy.push({\n userId: state.userId,\n readAt: new Date()\n });\n console.log('[CHAT STORE] Locally updated message read status:', messageId);\n }\n }\n });\n \n await globalWebSocket.send({\n type: 'markAsRead',\n module: 'chat',\n messageIds: messageIds,\n chatId: state.currentChatId,\n });\n },\n\n /**\n * Установка имени пользователя\n * @param {String} username\n */\n setUsername(username) {\n state.username = username;\n },\n\n /**\n * Отключение от чата (очистка листенеров)\n */\n disconnectChat() {\n globalWebSocket.removeModuleListeners('chat');\n // globalWebSocket.disconnect(); // включить, если нужно полностью разорвать соединение\n },\n};\n\nexport default {\n state: readonly(state),\n methods,\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
3
|
const vue = require("vue");
|
|
4
4
|
const vueRouter = require("vue-router");
|
|
5
|
-
const Select = require("../../../../components/Select/Select.
|
|
5
|
+
const Select = require("../../../../components/Select/Select.vue.cjs");
|
|
6
6
|
const Feed = require("../../../../components/Feed/Feed.vue.cjs");
|
|
7
7
|
const CardOrganization = require("../../../organizations/components/blocks/CardOrganization.vue.cjs");
|
|
8
8
|
const IconFeatured = require("../../../icons/entities/IconFeatured.vue.cjs");
|
|
@@ -14,7 +14,7 @@ const Comment = require("../sections/Comment.vue.cjs");
|
|
|
14
14
|
const blogposts = require("../../store/blogposts.cjs");
|
|
15
15
|
const auth = require("../../../auth/views/store/auth.cjs");
|
|
16
16
|
const organizations = require("../../../organizations/store/organizations.cjs");
|
|
17
|
-
const
|
|
17
|
+
const memberships_store = require("../../../organizations/store/memberships.store.cjs");
|
|
18
18
|
const _hoisted_1 = { class: "bg-white" };
|
|
19
19
|
const _hoisted_2 = { class: "w-100 flex-nowrap flex gap-thin mobile:pd-zero pd-thin pos-relative" };
|
|
20
20
|
const _hoisted_3 = {
|
|
@@ -64,7 +64,7 @@ const _sfc_main = {
|
|
|
64
64
|
if (route.params.category === "popular") blogposts.state.sort.param = "views";
|
|
65
65
|
if (route.params.category === "new") blogposts.state.sort.param = "createdAt";
|
|
66
66
|
const handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {
|
|
67
|
-
|
|
67
|
+
memberships_store.default.handleMembershipUpdate(organizations.state.current, membership, status, target, statusName, statusNumber);
|
|
68
68
|
};
|
|
69
69
|
return (_ctx, _cache) => {
|
|
70
70
|
const _component_router_link = vue.resolveComponent("router-link");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Community.vue.cjs","sources":["../../../../../../../src/modules/community/components/layouts/Community.vue"],"sourcesContent":["\t<template>\n\t<div class=\"bg-white\">\n\t\t<section class=\"w-100 flex-nowrap flex gap-thin mobile:pd-zero pd-thin pos-relative\">\n\n\t\t\t<div style=\"flex: 1 1 auto\" class=\"w-100 h-100 pos-relative\">\n\t\t\t\t<header v-if=\"!route.params.url && route.name !== 'Create BlogPost'\" class=\"bg-light pd-medium radius-medium mobile:radius-zero scroll-hide o-y-visible t-black pos-relative mn-b-thin flex-v-center t-left flex-nowrap flex\">\n\t\t \t<h2 class=\"pos-relative t-nowrap flex-v-center flex-nowrap flex\">\n\t\t \t\t<span class=\"mn-r-thin\">Posts for </span>\n\n\t\t \t\t<Select \n\t\t\t :options=\"['today','week','month','year','all time']\"\n\t\t\t v-model:select=\"blog.state.filter.period\" \n\t\t\t placeholder=\"all time\"\n\t\t\t class=\"\n\t\t\t \tt-semi\n\t\t\t \tpos-relative \n\t\t\t \tw-max\n\t\t\t \tbg-main t-black\n\t\t\t \tpd-thin\n\t\t\t \tradius-medium\n\t\t\t h2\n\t\t\t \tt-center\n\t\t\t \tflex-column \n\t\t\t \tflex \n\t\t\t \tgap-medium \n\t\t\t \"\n\t\t\t />\n\t\t \t</h2>\n\t\t\t\t</header>\n\n\t\t\t\t<div v-if=\"!route.params.url && route.name !=='Create BlogPost'\" class=\"w-100 pos-relative\">\n\t\t\t\t\t<ul class=\"align-self-start pos-sticky pos-t-0 w-100 bg-light radius-medium mobile:radius-zero mn-b-thin pd-medium p-medium gap-thin flex-row flex-nowrap flex z-index-2 o-scroll t-nowrap scroll-hide\">\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'featured' }\" \t\t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'featured' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer flex-v-center flex t-medium pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconFeatured class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tFeatured\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'popular' }\"\t\t\t\t\t \t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'views'; router.push({name: 'Blog', params: { category: 'popular' } }) }\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\t\n\t\t\t\t\t\t\t<IconPopular class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tPopular\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'new'}\" \t\t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'new' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconRecent class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tRecent\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'following'}\" \t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'following' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconFollowing class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tFollowing\n\t\t\t\t\t\t</li>\n\n\t\t\t\t\t\t<router-link \n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:to=\"{\n\t\t\t\t\t\t\t\tname: 'Create BlogPost'\n\t\t\t\t\t\t\t}\" \n\t\t\t\t\t\t\tclass=\"button t-medium bg-main w-max mn-l-auto\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tCreate Post\n\t\t\t\t\t\t</router-link>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\n\n\t\t\t\t<router-view v-slot=\"{ Component, route }\">\n\t\t\t\t\t<transition name=\"scaleIn\" mode=\"out-in\">\n\t\t\t\t\t\t<component ref=\"page\" :key=\"route.query\" :is=\"Component\" />\n\t\t\t\t\t</transition>\n\t\t\t\t</router-view>\n\t\t\t</div>\n\n\t\t\t<div style=\"flex: 1 1 auto\" class=\"desktop-only pos-sticky pos-t-thin scroll-hide h-100 w-40 h-100 pos-relative \">\n\t\t\t\t<div class=\"radius-medium bg-light mn-b-thin pd-small\">\n\t\t\t\t\t<div class=\"gap-thin flex-nowrap flex\">\n\t\t\t\t\t\t<p class=\"t-medium mn-b-small\">Latest Comments</p>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"flex flex-column gap-thin\">\n\t\t\t\t\t\t<Comment\n\t\t \tv-for=\"comment in comments.slice(0,5)\"\n\t\t\t :key=\"comment._id\"\n\t\t\t :comment=\"comment\"\n\t\t\t :target=\"target\"\n\t\t\t :type=\"type\"\n\t\t\t :owner=\"owner\"\n\t\t\t @reply=\"handleReply\"\n\t\t\t @load-more=\"loadMoreChildren\"\n\t\t\t class=\"comment bg-white pd-small radius-regular\"\n\t\t\t />\n\t\t\t </div>\n\t\t </div>\n\n\t <div class=\"radius-medium bg-light pd-small\">\n\t\t\t\t\t<div class=\"gap-thin flex-v-center flex-nowrap flex mn-b-small\">\n\t\t\t\t\t\t<p class=\"text-box-trim-end t-medium\">Popular Communities</p>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<router-link \n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:to=\"{\n\t\t\t\t\t\t\t\tname: 'Create Organization'\n\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\tclass=\"t-medium cursor-pointer hover-scale-1 radius-extra flex-center flex i-medium bg-main\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t+\n\t\t\t\t\t\t</router-link>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<transition name=\"slide-fade\">\n\t\t\t\t\t\t<Feed\n\t\t\t\t\t\t\t:showLoadMore=\"false\"\n\t\t\t\t\t\t\t:LoadMore=\"false\"\n\t\t\t\t :states=\"{\n\t\t\t\t empty: {\n\t\t\t\t title: 'No Organization Found',\n\t\t\t\t description: 'Currently, there are no organization available.'\n\t\t\t\t }\n\t\t\t\t }\"\n\t\t\t\t :store=\"{\n\t\t\t\t read: (options) => organizations.actions.read(options),\n\t\t\t\t state: organizations.state\n\t\t\t\t }\"\n\t\t\t\t :options=\"{\n\t\t\t\t \tuser: auth.state.user._id,\n\t\t\t\t\t\t\t\t\tsort: 'numberOfMemberships',\n\t\t\t\t\t\t\t\t\tcontain: ['blogposts'],\n\t\t\t\t\t\t\t\t\tlookup: ['blogposts'],\n\t\t\t\t\t\t\t\t\tlimit: 10\n\t\t\t\t }\"\n\t\t\t\t v-slot=\"{ \n\t\t\t\t items \n\t\t\t\t }\"\n\t\t\t\t class=\"flex flex-column gap-thin\"\n\t\t\t\t >\n\t\t\t\t \t<CardOrganization \n\t\t\t \t\t\tv-for=\"organization in items\"\n\t\t\t \t:key=\"organization._id\" \n\t\t\t\t \t:organization=\"organization\"\n\t\t\t\t \t:user=\"auth.state.user\"\n\t\t\t\t \t:showProducts=\"false\"\n\t\t\t\t \t:showRating=\"false\"\n\t\t\t\t \t:showFeatured=\"false\"\n\t\t\t\t \t:showFollowers=\"false\"\n\t\t\t\t\t\t\t\t@updateMembership=\"handleMembershipUpdate\"\n\t\t\t\t\t\t\t\tclass=\"pd-small w-100 pd-0 bg-white radius-regular o-hidden\"\n\t\t\t\t\t />\n\t\t\t\t </Feed>\n\t\t\t\t\t</transition>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t</section>\n\t</div>\n</template>\n\n<script setup=\"props\">\n\timport { computed,onMounted, toRefs,ref } from 'vue'\n import { useRoute,useRouter } from 'vue-router'\n\n\timport Select from '@martyrs/src/components/Select/Select.vue'\n\timport Feed from '@martyrs/src/components/Feed/Feed.vue'\n\timport CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n\timport IconFeatured from '@martyrs/src/modules/icons/entities/IconFeatured.vue'\n\timport IconPopular from '@martyrs/src/modules/icons/entities/IconPopular.vue'\n\timport IconRecent from '@martyrs/src/modules/icons/entities/IconRecent.vue'\n\timport IconFollowing from '@martyrs/src/modules/icons/entities/IconFollowing.vue'\n\n\nimport axios from 'axios';\n\n\nimport Comment from '../sections/Comment.vue';\n\n\nconst $axios = axios.create({ baseURL: process.env.API_URL });\nconst comments = ref([]);\nconst commentContent = ref('');\n\nconst fetchComments = async () => {\n try {\n const response = await $axios.get('/comments/read', {\n params: {\n maxDepth: 1,\n format: 'plain'\n }\n });\n comments.value = response.data;\n } catch (error) {\n console.error('Error fetching comments:', error);\n }\n};\n\nfetchComments();\n\n// Import state\nimport * as blog from '@martyrs/src/modules/community/store/blogposts.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations.js'\nimport * as memberships from '@martyrs/src/modules/organizations/store/memberships.js'\n\n// State\nconst route = useRoute();\nconst router = useRouter();\n\nif (route.params.category === 'popular') blog.state.sort.param = 'views'; \nif (route.params.category === 'new') blog.state.sort.param = 'createdAt'; \n\n\nconst handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n memberships.mutations.handleMembershipUpdate(organizations.state.current, membership, status, target, statusName, statusNumber)\n};\n\n</script>\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["ref","useRoute","useRouter","blog.state","memberships.mutations","organizations.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6LA,UAAM,SAAS,MAAM,OAAO,EAAE,SAAS,QAAQ,IAAI,SAAS;AAC5D,UAAM,WAAWA,IAAAA,IAAI,EAAE;AACAA,QAAAA,IAAI,EAAE;AAE7B,UAAM,gBAAgB,YAAY;AAChC,UAAI;AACF,cAAM,WAAW,MAAM,OAAO,IAAI,kBAAkB;AAAA,UAClD,QAAQ;AAAA,YACN,UAAU;AAAA,YACV,QAAQ;AAAA,UAChB;AAAA,QACA,CAAK;AACD,iBAAS,QAAQ,SAAS;AAAA,MAC5B,SAAS,OAAO;AACd,gBAAQ,MAAM,4BAA4B,KAAK;AAAA,MACjD;AAAA,IACF;AAEA,kBAAa;AASb,UAAM,QAAQC,UAAAA,SAAQ;AACtB,UAAM,SAASC,UAAAA,UAAS;AAExB,QAAI,MAAM,OAAO,aAAa,UAAWC,WAAAA,MAAW,KAAK,QAAQ;AACjE,QAAI,MAAM,OAAO,aAAa,MAAOA,WAAAA,MAAW,KAAK,QAAQ;AAG7D,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAM,GAAI,YAAY,iBAAiB;AAC3FC,4BAAsB,uBAAuBC,cAAAA,MAAoB,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IAChI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"Community.vue.cjs","sources":["../../../../../../../src/modules/community/components/layouts/Community.vue"],"sourcesContent":["\t<template>\n\t<div class=\"bg-white\">\n\t\t<section class=\"w-100 flex-nowrap flex gap-thin mobile:pd-zero pd-thin pos-relative\">\n\n\t\t\t<div style=\"flex: 1 1 auto\" class=\"w-100 h-100 pos-relative\">\n\t\t\t\t<header v-if=\"!route.params.url && route.name !== 'Create BlogPost'\" class=\"bg-light pd-medium radius-medium mobile:radius-zero scroll-hide o-y-visible t-black pos-relative mn-b-thin flex-v-center t-left flex-nowrap flex\">\n\t\t \t<h2 class=\"pos-relative t-nowrap flex-v-center flex-nowrap flex\">\n\t\t \t\t<span class=\"mn-r-thin\">Posts for </span>\n\n\t\t \t\t<Select \n\t\t\t :options=\"['today','week','month','year','all time']\"\n\t\t\t v-model:select=\"blog.state.filter.period\" \n\t\t\t placeholder=\"all time\"\n\t\t\t class=\"\n\t\t\t \tt-semi\n\t\t\t \tpos-relative \n\t\t\t \tw-max\n\t\t\t \tbg-main t-black\n\t\t\t \tpd-thin\n\t\t\t \tradius-medium\n\t\t\t h2\n\t\t\t \tt-center\n\t\t\t \tflex-column \n\t\t\t \tflex \n\t\t\t \tgap-medium \n\t\t\t \"\n\t\t\t />\n\t\t \t</h2>\n\t\t\t\t</header>\n\n\t\t\t\t<div v-if=\"!route.params.url && route.name !=='Create BlogPost'\" class=\"w-100 pos-relative\">\n\t\t\t\t\t<ul class=\"align-self-start pos-sticky pos-t-0 w-100 bg-light radius-medium mobile:radius-zero mn-b-thin pd-medium p-medium gap-thin flex-row flex-nowrap flex z-index-2 o-scroll t-nowrap scroll-hide\">\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'featured' }\" \t\t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'featured' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer flex-v-center flex t-medium pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconFeatured class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tFeatured\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'popular' }\"\t\t\t\t\t \t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'views'; router.push({name: 'Blog', params: { category: 'popular' } }) }\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\t\n\t\t\t\t\t\t\t<IconPopular class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tPopular\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'new'}\" \t\t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'new' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconRecent class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tRecent\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'following'}\" \t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'following' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconFollowing class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tFollowing\n\t\t\t\t\t\t</li>\n\n\t\t\t\t\t\t<router-link \n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:to=\"{\n\t\t\t\t\t\t\t\tname: 'Create BlogPost'\n\t\t\t\t\t\t\t}\" \n\t\t\t\t\t\t\tclass=\"button t-medium bg-main w-max mn-l-auto\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tCreate Post\n\t\t\t\t\t\t</router-link>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\n\n\t\t\t\t<router-view v-slot=\"{ Component, route }\">\n\t\t\t\t\t<transition name=\"scaleIn\" mode=\"out-in\">\n\t\t\t\t\t\t<component ref=\"page\" :key=\"route.query\" :is=\"Component\" />\n\t\t\t\t\t</transition>\n\t\t\t\t</router-view>\n\t\t\t</div>\n\n\t\t\t<div style=\"flex: 1 1 auto\" class=\"desktop-only pos-sticky pos-t-thin scroll-hide h-100 w-40 h-100 pos-relative \">\n\t\t\t\t<div class=\"radius-medium bg-light mn-b-thin pd-small\">\n\t\t\t\t\t<div class=\"gap-thin flex-nowrap flex\">\n\t\t\t\t\t\t<p class=\"t-medium mn-b-small\">Latest Comments</p>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"flex flex-column gap-thin\">\n\t\t\t\t\t\t<Comment\n\t\t \tv-for=\"comment in comments.slice(0,5)\"\n\t\t\t :key=\"comment._id\"\n\t\t\t :comment=\"comment\"\n\t\t\t :target=\"target\"\n\t\t\t :type=\"type\"\n\t\t\t :owner=\"owner\"\n\t\t\t @reply=\"handleReply\"\n\t\t\t @load-more=\"loadMoreChildren\"\n\t\t\t class=\"comment bg-white pd-small radius-regular\"\n\t\t\t />\n\t\t\t </div>\n\t\t </div>\n\n\t <div class=\"radius-medium bg-light pd-small\">\n\t\t\t\t\t<div class=\"gap-thin flex-v-center flex-nowrap flex mn-b-small\">\n\t\t\t\t\t\t<p class=\"text-box-trim-end t-medium\">Popular Communities</p>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<router-link \n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:to=\"{\n\t\t\t\t\t\t\t\tname: 'Create Organization'\n\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\tclass=\"t-medium cursor-pointer hover-scale-1 radius-extra flex-center flex i-medium bg-main\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t+\n\t\t\t\t\t\t</router-link>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<transition name=\"slide-fade\">\n\t\t\t\t\t\t<Feed\n\t\t\t\t\t\t\t:showLoadMore=\"false\"\n\t\t\t\t\t\t\t:LoadMore=\"false\"\n\t\t\t\t :states=\"{\n\t\t\t\t empty: {\n\t\t\t\t title: 'No Organization Found',\n\t\t\t\t description: 'Currently, there are no organization available.'\n\t\t\t\t }\n\t\t\t\t }\"\n\t\t\t\t :store=\"{\n\t\t\t\t read: (options) => organizations.actions.read(options),\n\t\t\t\t state: organizations.state\n\t\t\t\t }\"\n\t\t\t\t :options=\"{\n\t\t\t\t \tuser: auth.state.user._id,\n\t\t\t\t\t\t\t\t\tsort: 'numberOfMemberships',\n\t\t\t\t\t\t\t\t\tcontain: ['blogposts'],\n\t\t\t\t\t\t\t\t\tlookup: ['blogposts'],\n\t\t\t\t\t\t\t\t\tlimit: 10\n\t\t\t\t }\"\n\t\t\t\t v-slot=\"{ \n\t\t\t\t items \n\t\t\t\t }\"\n\t\t\t\t class=\"flex flex-column gap-thin\"\n\t\t\t\t >\n\t\t\t\t \t<CardOrganization \n\t\t\t \t\t\tv-for=\"organization in items\"\n\t\t\t \t:key=\"organization._id\" \n\t\t\t\t \t:organization=\"organization\"\n\t\t\t\t \t:user=\"auth.state.user\"\n\t\t\t\t \t:showProducts=\"false\"\n\t\t\t\t \t:showRating=\"false\"\n\t\t\t\t \t:showFeatured=\"false\"\n\t\t\t\t \t:showFollowers=\"false\"\n\t\t\t\t\t\t\t\t@updateMembership=\"handleMembershipUpdate\"\n\t\t\t\t\t\t\t\tclass=\"pd-small w-100 pd-0 bg-white radius-regular o-hidden\"\n\t\t\t\t\t />\n\t\t\t\t </Feed>\n\t\t\t\t\t</transition>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t</section>\n\t</div>\n</template>\n\n<script setup=\"props\">\n\timport { computed,onMounted, toRefs,ref } from 'vue'\n import { useRoute,useRouter } from 'vue-router'\n\n\timport Select from '@martyrs/src/components/Select/Select.vue'\n\timport Feed from '@martyrs/src/components/Feed/Feed.vue'\n\timport CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n\timport IconFeatured from '@martyrs/src/modules/icons/entities/IconFeatured.vue'\n\timport IconPopular from '@martyrs/src/modules/icons/entities/IconPopular.vue'\n\timport IconRecent from '@martyrs/src/modules/icons/entities/IconRecent.vue'\n\timport IconFollowing from '@martyrs/src/modules/icons/entities/IconFollowing.vue'\n\n\nimport axios from 'axios';\n\n\nimport Comment from '../sections/Comment.vue';\n\n\nconst $axios = axios.create({ baseURL: process.env.API_URL });\nconst comments = ref([]);\nconst commentContent = ref('');\n\nconst fetchComments = async () => {\n try {\n const response = await $axios.get('/comments/read', {\n params: {\n maxDepth: 1,\n format: 'plain'\n }\n });\n comments.value = response.data;\n } catch (error) {\n console.error('Error fetching comments:', error);\n }\n};\n\nfetchComments();\n\n// Import state\nimport * as blog from '@martyrs/src/modules/community/store/blogposts.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations.js'\nimport membershipsStore from '@martyrs/src/modules/organizations/store/memberships.store.js'\n\n// State\nconst route = useRoute();\nconst router = useRouter();\n\nif (route.params.category === 'popular') blog.state.sort.param = 'views'; \nif (route.params.category === 'new') blog.state.sort.param = 'createdAt'; \n\n\nconst handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n membershipsStore.handleMembershipUpdate(organizations.state.current, membership, status, target, statusName, statusNumber)\n};\n\n</script>\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["ref","useRoute","useRouter","blog.state","membershipsStore","organizations.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6LA,UAAM,SAAS,MAAM,OAAO,EAAE,SAAS,QAAQ,IAAI,SAAS;AAC5D,UAAM,WAAWA,IAAAA,IAAI,EAAE;AACAA,QAAAA,IAAI,EAAE;AAE7B,UAAM,gBAAgB,YAAY;AAChC,UAAI;AACF,cAAM,WAAW,MAAM,OAAO,IAAI,kBAAkB;AAAA,UAClD,QAAQ;AAAA,YACN,UAAU;AAAA,YACV,QAAQ;AAAA,UAChB;AAAA,QACA,CAAK;AACD,iBAAS,QAAQ,SAAS;AAAA,MAC5B,SAAS,OAAO;AACd,gBAAQ,MAAM,4BAA4B,KAAK;AAAA,MACjD;AAAA,IACF;AAEA,kBAAa;AASb,UAAM,QAAQC,UAAAA,SAAQ;AACtB,UAAM,SAASC,UAAAA,UAAS;AAExB,QAAI,MAAM,OAAO,aAAa,UAAWC,WAAAA,MAAW,KAAK,QAAQ;AACjE,QAAI,MAAM,OAAO,aAAa,MAAOA,WAAAA,MAAW,KAAK,QAAQ;AAG7D,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAM,GAAI,YAAY,iBAAiB;AAC3FC,gCAAiB,uBAAuBC,cAAAA,MAAoB,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IAC3H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ref, resolveComponent, createElementBlock, openBlock, createElementVNode, createCommentVNode, createVNode, unref, createBlock, normalizeClass, createTextVNode, withCtx, Transition, resolveDynamicComponent, Fragment, renderList } from "vue";
|
|
2
2
|
import { useRoute, useRouter } from "vue-router";
|
|
3
|
-
import Select from "../../../../components/Select/Select.
|
|
3
|
+
import Select from "../../../../components/Select/Select.vue.js";
|
|
4
4
|
import _sfc_main$5 from "../../../../components/Feed/Feed.vue.js";
|
|
5
5
|
import _sfc_main$6 from "../../../organizations/components/blocks/CardOrganization.vue.js";
|
|
6
6
|
import _sfc_main$1 from "../../../icons/entities/IconFeatured.vue.js";
|
|
@@ -12,7 +12,7 @@ import Comment from "../sections/Comment.vue.js";
|
|
|
12
12
|
import { state } from "../../store/blogposts.js";
|
|
13
13
|
import { state as state$1 } from "../../../auth/views/store/auth.js";
|
|
14
14
|
import { state as state$2, actions } from "../../../organizations/store/organizations.js";
|
|
15
|
-
import
|
|
15
|
+
import membershipsStore from "../../../organizations/store/memberships.store.js";
|
|
16
16
|
const _hoisted_1 = { class: "bg-white" };
|
|
17
17
|
const _hoisted_2 = { class: "w-100 flex-nowrap flex gap-thin mobile:pd-zero pd-thin pos-relative" };
|
|
18
18
|
const _hoisted_3 = {
|
|
@@ -62,7 +62,7 @@ const _sfc_main = {
|
|
|
62
62
|
if (route.params.category === "popular") state.sort.param = "views";
|
|
63
63
|
if (route.params.category === "new") state.sort.param = "createdAt";
|
|
64
64
|
const handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {
|
|
65
|
-
|
|
65
|
+
membershipsStore.handleMembershipUpdate(state$2.current, membership, status, target, statusName, statusNumber);
|
|
66
66
|
};
|
|
67
67
|
return (_ctx, _cache) => {
|
|
68
68
|
const _component_router_link = resolveComponent("router-link");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Community.vue.js","sources":["../../../../../../../src/modules/community/components/layouts/Community.vue"],"sourcesContent":["\t<template>\n\t<div class=\"bg-white\">\n\t\t<section class=\"w-100 flex-nowrap flex gap-thin mobile:pd-zero pd-thin pos-relative\">\n\n\t\t\t<div style=\"flex: 1 1 auto\" class=\"w-100 h-100 pos-relative\">\n\t\t\t\t<header v-if=\"!route.params.url && route.name !== 'Create BlogPost'\" class=\"bg-light pd-medium radius-medium mobile:radius-zero scroll-hide o-y-visible t-black pos-relative mn-b-thin flex-v-center t-left flex-nowrap flex\">\n\t\t \t<h2 class=\"pos-relative t-nowrap flex-v-center flex-nowrap flex\">\n\t\t \t\t<span class=\"mn-r-thin\">Posts for </span>\n\n\t\t \t\t<Select \n\t\t\t :options=\"['today','week','month','year','all time']\"\n\t\t\t v-model:select=\"blog.state.filter.period\" \n\t\t\t placeholder=\"all time\"\n\t\t\t class=\"\n\t\t\t \tt-semi\n\t\t\t \tpos-relative \n\t\t\t \tw-max\n\t\t\t \tbg-main t-black\n\t\t\t \tpd-thin\n\t\t\t \tradius-medium\n\t\t\t h2\n\t\t\t \tt-center\n\t\t\t \tflex-column \n\t\t\t \tflex \n\t\t\t \tgap-medium \n\t\t\t \"\n\t\t\t />\n\t\t \t</h2>\n\t\t\t\t</header>\n\n\t\t\t\t<div v-if=\"!route.params.url && route.name !=='Create BlogPost'\" class=\"w-100 pos-relative\">\n\t\t\t\t\t<ul class=\"align-self-start pos-sticky pos-t-0 w-100 bg-light radius-medium mobile:radius-zero mn-b-thin pd-medium p-medium gap-thin flex-row flex-nowrap flex z-index-2 o-scroll t-nowrap scroll-hide\">\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'featured' }\" \t\t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'featured' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer flex-v-center flex t-medium pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconFeatured class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tFeatured\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'popular' }\"\t\t\t\t\t \t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'views'; router.push({name: 'Blog', params: { category: 'popular' } }) }\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\t\n\t\t\t\t\t\t\t<IconPopular class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tPopular\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'new'}\" \t\t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'new' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconRecent class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tRecent\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'following'}\" \t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'following' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconFollowing class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tFollowing\n\t\t\t\t\t\t</li>\n\n\t\t\t\t\t\t<router-link \n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:to=\"{\n\t\t\t\t\t\t\t\tname: 'Create BlogPost'\n\t\t\t\t\t\t\t}\" \n\t\t\t\t\t\t\tclass=\"button t-medium bg-main w-max mn-l-auto\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tCreate Post\n\t\t\t\t\t\t</router-link>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\n\n\t\t\t\t<router-view v-slot=\"{ Component, route }\">\n\t\t\t\t\t<transition name=\"scaleIn\" mode=\"out-in\">\n\t\t\t\t\t\t<component ref=\"page\" :key=\"route.query\" :is=\"Component\" />\n\t\t\t\t\t</transition>\n\t\t\t\t</router-view>\n\t\t\t</div>\n\n\t\t\t<div style=\"flex: 1 1 auto\" class=\"desktop-only pos-sticky pos-t-thin scroll-hide h-100 w-40 h-100 pos-relative \">\n\t\t\t\t<div class=\"radius-medium bg-light mn-b-thin pd-small\">\n\t\t\t\t\t<div class=\"gap-thin flex-nowrap flex\">\n\t\t\t\t\t\t<p class=\"t-medium mn-b-small\">Latest Comments</p>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"flex flex-column gap-thin\">\n\t\t\t\t\t\t<Comment\n\t\t \tv-for=\"comment in comments.slice(0,5)\"\n\t\t\t :key=\"comment._id\"\n\t\t\t :comment=\"comment\"\n\t\t\t :target=\"target\"\n\t\t\t :type=\"type\"\n\t\t\t :owner=\"owner\"\n\t\t\t @reply=\"handleReply\"\n\t\t\t @load-more=\"loadMoreChildren\"\n\t\t\t class=\"comment bg-white pd-small radius-regular\"\n\t\t\t />\n\t\t\t </div>\n\t\t </div>\n\n\t <div class=\"radius-medium bg-light pd-small\">\n\t\t\t\t\t<div class=\"gap-thin flex-v-center flex-nowrap flex mn-b-small\">\n\t\t\t\t\t\t<p class=\"text-box-trim-end t-medium\">Popular Communities</p>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<router-link \n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:to=\"{\n\t\t\t\t\t\t\t\tname: 'Create Organization'\n\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\tclass=\"t-medium cursor-pointer hover-scale-1 radius-extra flex-center flex i-medium bg-main\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t+\n\t\t\t\t\t\t</router-link>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<transition name=\"slide-fade\">\n\t\t\t\t\t\t<Feed\n\t\t\t\t\t\t\t:showLoadMore=\"false\"\n\t\t\t\t\t\t\t:LoadMore=\"false\"\n\t\t\t\t :states=\"{\n\t\t\t\t empty: {\n\t\t\t\t title: 'No Organization Found',\n\t\t\t\t description: 'Currently, there are no organization available.'\n\t\t\t\t }\n\t\t\t\t }\"\n\t\t\t\t :store=\"{\n\t\t\t\t read: (options) => organizations.actions.read(options),\n\t\t\t\t state: organizations.state\n\t\t\t\t }\"\n\t\t\t\t :options=\"{\n\t\t\t\t \tuser: auth.state.user._id,\n\t\t\t\t\t\t\t\t\tsort: 'numberOfMemberships',\n\t\t\t\t\t\t\t\t\tcontain: ['blogposts'],\n\t\t\t\t\t\t\t\t\tlookup: ['blogposts'],\n\t\t\t\t\t\t\t\t\tlimit: 10\n\t\t\t\t }\"\n\t\t\t\t v-slot=\"{ \n\t\t\t\t items \n\t\t\t\t }\"\n\t\t\t\t class=\"flex flex-column gap-thin\"\n\t\t\t\t >\n\t\t\t\t \t<CardOrganization \n\t\t\t \t\t\tv-for=\"organization in items\"\n\t\t\t \t:key=\"organization._id\" \n\t\t\t\t \t:organization=\"organization\"\n\t\t\t\t \t:user=\"auth.state.user\"\n\t\t\t\t \t:showProducts=\"false\"\n\t\t\t\t \t:showRating=\"false\"\n\t\t\t\t \t:showFeatured=\"false\"\n\t\t\t\t \t:showFollowers=\"false\"\n\t\t\t\t\t\t\t\t@updateMembership=\"handleMembershipUpdate\"\n\t\t\t\t\t\t\t\tclass=\"pd-small w-100 pd-0 bg-white radius-regular o-hidden\"\n\t\t\t\t\t />\n\t\t\t\t </Feed>\n\t\t\t\t\t</transition>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t</section>\n\t</div>\n</template>\n\n<script setup=\"props\">\n\timport { computed,onMounted, toRefs,ref } from 'vue'\n import { useRoute,useRouter } from 'vue-router'\n\n\timport Select from '@martyrs/src/components/Select/Select.vue'\n\timport Feed from '@martyrs/src/components/Feed/Feed.vue'\n\timport CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n\timport IconFeatured from '@martyrs/src/modules/icons/entities/IconFeatured.vue'\n\timport IconPopular from '@martyrs/src/modules/icons/entities/IconPopular.vue'\n\timport IconRecent from '@martyrs/src/modules/icons/entities/IconRecent.vue'\n\timport IconFollowing from '@martyrs/src/modules/icons/entities/IconFollowing.vue'\n\n\nimport axios from 'axios';\n\n\nimport Comment from '../sections/Comment.vue';\n\n\nconst $axios = axios.create({ baseURL: process.env.API_URL });\nconst comments = ref([]);\nconst commentContent = ref('');\n\nconst fetchComments = async () => {\n try {\n const response = await $axios.get('/comments/read', {\n params: {\n maxDepth: 1,\n format: 'plain'\n }\n });\n comments.value = response.data;\n } catch (error) {\n console.error('Error fetching comments:', error);\n }\n};\n\nfetchComments();\n\n// Import state\nimport * as blog from '@martyrs/src/modules/community/store/blogposts.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations.js'\nimport * as memberships from '@martyrs/src/modules/organizations/store/memberships.js'\n\n// State\nconst route = useRoute();\nconst router = useRouter();\n\nif (route.params.category === 'popular') blog.state.sort.param = 'views'; \nif (route.params.category === 'new') blog.state.sort.param = 'createdAt'; \n\n\nconst handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n memberships.mutations.handleMembershipUpdate(organizations.state.current, membership, status, target, statusName, statusNumber)\n};\n\n</script>\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["blog.state","memberships.mutations","organizations.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6LA,UAAM,SAAS,MAAM,OAAO,EAAE,SAAS,QAAQ,IAAI,SAAS;AAC5D,UAAM,WAAW,IAAI,EAAE;AACA,QAAI,EAAE;AAE7B,UAAM,gBAAgB,YAAY;AAChC,UAAI;AACF,cAAM,WAAW,MAAM,OAAO,IAAI,kBAAkB;AAAA,UAClD,QAAQ;AAAA,YACN,UAAU;AAAA,YACV,QAAQ;AAAA,UAChB;AAAA,QACA,CAAK;AACD,iBAAS,QAAQ,SAAS;AAAA,MAC5B,SAAS,OAAO;AACd,gBAAQ,MAAM,4BAA4B,KAAK;AAAA,MACjD;AAAA,IACF;AAEA,kBAAa;AASb,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAExB,QAAI,MAAM,OAAO,aAAa,UAAWA,OAAW,KAAK,QAAQ;AACjE,QAAI,MAAM,OAAO,aAAa,MAAOA,OAAW,KAAK,QAAQ;AAG7D,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAM,GAAI,YAAY,iBAAiB;AAC3FC,gBAAsB,uBAAuBC,QAAoB,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IAChI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"Community.vue.js","sources":["../../../../../../../src/modules/community/components/layouts/Community.vue"],"sourcesContent":["\t<template>\n\t<div class=\"bg-white\">\n\t\t<section class=\"w-100 flex-nowrap flex gap-thin mobile:pd-zero pd-thin pos-relative\">\n\n\t\t\t<div style=\"flex: 1 1 auto\" class=\"w-100 h-100 pos-relative\">\n\t\t\t\t<header v-if=\"!route.params.url && route.name !== 'Create BlogPost'\" class=\"bg-light pd-medium radius-medium mobile:radius-zero scroll-hide o-y-visible t-black pos-relative mn-b-thin flex-v-center t-left flex-nowrap flex\">\n\t\t \t<h2 class=\"pos-relative t-nowrap flex-v-center flex-nowrap flex\">\n\t\t \t\t<span class=\"mn-r-thin\">Posts for </span>\n\n\t\t \t\t<Select \n\t\t\t :options=\"['today','week','month','year','all time']\"\n\t\t\t v-model:select=\"blog.state.filter.period\" \n\t\t\t placeholder=\"all time\"\n\t\t\t class=\"\n\t\t\t \tt-semi\n\t\t\t \tpos-relative \n\t\t\t \tw-max\n\t\t\t \tbg-main t-black\n\t\t\t \tpd-thin\n\t\t\t \tradius-medium\n\t\t\t h2\n\t\t\t \tt-center\n\t\t\t \tflex-column \n\t\t\t \tflex \n\t\t\t \tgap-medium \n\t\t\t \"\n\t\t\t />\n\t\t \t</h2>\n\t\t\t\t</header>\n\n\t\t\t\t<div v-if=\"!route.params.url && route.name !=='Create BlogPost'\" class=\"w-100 pos-relative\">\n\t\t\t\t\t<ul class=\"align-self-start pos-sticky pos-t-0 w-100 bg-light radius-medium mobile:radius-zero mn-b-thin pd-medium p-medium gap-thin flex-row flex-nowrap flex z-index-2 o-scroll t-nowrap scroll-hide\">\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'featured' }\" \t\t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'featured' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer flex-v-center flex t-medium pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconFeatured class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tFeatured\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'popular' }\"\t\t\t\t\t \t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'views'; router.push({name: 'Blog', params: { category: 'popular' } }) }\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\t\n\t\t\t\t\t\t\t<IconPopular class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tPopular\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'new'}\" \t\t\t\t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'new' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconRecent class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tRecent\n\t\t\t\t\t\t</li>\n\t\t\t\t\t\t<li \t\n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:class=\"{'t-black bg-white': route.params.category === 'following'}\" \t\t\n\t\t\t\t\t\t\t@click=\"() => { blog.state.sort.param = 'createdAt'; router.push({name: 'Blog', params: { category: 'following' } })}\" \n\t\t\t\t\t\t\tclass=\"cursor-pointer t-medium flex-v-center flex pd-thin radius-small\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<IconFollowing class=\"i-medium mn-r-thin t-transp\"/>\n\t\t\t\t\t\t\tFollowing\n\t\t\t\t\t\t</li>\n\n\t\t\t\t\t\t<router-link \n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:to=\"{\n\t\t\t\t\t\t\t\tname: 'Create BlogPost'\n\t\t\t\t\t\t\t}\" \n\t\t\t\t\t\t\tclass=\"button t-medium bg-main w-max mn-l-auto\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tCreate Post\n\t\t\t\t\t\t</router-link>\n\t\t\t\t\t</ul>\n\t\t\t\t</div>\n\n\n\t\t\t\t<router-view v-slot=\"{ Component, route }\">\n\t\t\t\t\t<transition name=\"scaleIn\" mode=\"out-in\">\n\t\t\t\t\t\t<component ref=\"page\" :key=\"route.query\" :is=\"Component\" />\n\t\t\t\t\t</transition>\n\t\t\t\t</router-view>\n\t\t\t</div>\n\n\t\t\t<div style=\"flex: 1 1 auto\" class=\"desktop-only pos-sticky pos-t-thin scroll-hide h-100 w-40 h-100 pos-relative \">\n\t\t\t\t<div class=\"radius-medium bg-light mn-b-thin pd-small\">\n\t\t\t\t\t<div class=\"gap-thin flex-nowrap flex\">\n\t\t\t\t\t\t<p class=\"t-medium mn-b-small\">Latest Comments</p>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<div class=\"flex flex-column gap-thin\">\n\t\t\t\t\t\t<Comment\n\t\t \tv-for=\"comment in comments.slice(0,5)\"\n\t\t\t :key=\"comment._id\"\n\t\t\t :comment=\"comment\"\n\t\t\t :target=\"target\"\n\t\t\t :type=\"type\"\n\t\t\t :owner=\"owner\"\n\t\t\t @reply=\"handleReply\"\n\t\t\t @load-more=\"loadMoreChildren\"\n\t\t\t class=\"comment bg-white pd-small radius-regular\"\n\t\t\t />\n\t\t\t </div>\n\t\t </div>\n\n\t <div class=\"radius-medium bg-light pd-small\">\n\t\t\t\t\t<div class=\"gap-thin flex-v-center flex-nowrap flex mn-b-small\">\n\t\t\t\t\t\t<p class=\"text-box-trim-end t-medium\">Popular Communities</p>\n\t\t\t\t\t\t\n\t\t\t\t\t\t<router-link \n\t\t\t\t\t\t\tv-if=\"auth.state.user._id\"\n\t\t\t\t\t\t\t:to=\"{\n\t\t\t\t\t\t\t\tname: 'Create Organization'\n\t\t\t\t\t\t\t}\"\n\t\t\t\t\t\t\tclass=\"t-medium cursor-pointer hover-scale-1 radius-extra flex-center flex i-medium bg-main\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t+\n\t\t\t\t\t\t</router-link>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<transition name=\"slide-fade\">\n\t\t\t\t\t\t<Feed\n\t\t\t\t\t\t\t:showLoadMore=\"false\"\n\t\t\t\t\t\t\t:LoadMore=\"false\"\n\t\t\t\t :states=\"{\n\t\t\t\t empty: {\n\t\t\t\t title: 'No Organization Found',\n\t\t\t\t description: 'Currently, there are no organization available.'\n\t\t\t\t }\n\t\t\t\t }\"\n\t\t\t\t :store=\"{\n\t\t\t\t read: (options) => organizations.actions.read(options),\n\t\t\t\t state: organizations.state\n\t\t\t\t }\"\n\t\t\t\t :options=\"{\n\t\t\t\t \tuser: auth.state.user._id,\n\t\t\t\t\t\t\t\t\tsort: 'numberOfMemberships',\n\t\t\t\t\t\t\t\t\tcontain: ['blogposts'],\n\t\t\t\t\t\t\t\t\tlookup: ['blogposts'],\n\t\t\t\t\t\t\t\t\tlimit: 10\n\t\t\t\t }\"\n\t\t\t\t v-slot=\"{ \n\t\t\t\t items \n\t\t\t\t }\"\n\t\t\t\t class=\"flex flex-column gap-thin\"\n\t\t\t\t >\n\t\t\t\t \t<CardOrganization \n\t\t\t \t\t\tv-for=\"organization in items\"\n\t\t\t \t:key=\"organization._id\" \n\t\t\t\t \t:organization=\"organization\"\n\t\t\t\t \t:user=\"auth.state.user\"\n\t\t\t\t \t:showProducts=\"false\"\n\t\t\t\t \t:showRating=\"false\"\n\t\t\t\t \t:showFeatured=\"false\"\n\t\t\t\t \t:showFollowers=\"false\"\n\t\t\t\t\t\t\t\t@updateMembership=\"handleMembershipUpdate\"\n\t\t\t\t\t\t\t\tclass=\"pd-small w-100 pd-0 bg-white radius-regular o-hidden\"\n\t\t\t\t\t />\n\t\t\t\t </Feed>\n\t\t\t\t\t</transition>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t</section>\n\t</div>\n</template>\n\n<script setup=\"props\">\n\timport { computed,onMounted, toRefs,ref } from 'vue'\n import { useRoute,useRouter } from 'vue-router'\n\n\timport Select from '@martyrs/src/components/Select/Select.vue'\n\timport Feed from '@martyrs/src/components/Feed/Feed.vue'\n\timport CardOrganization from '@martyrs/src/modules/organizations/components/blocks/CardOrganization.vue'\n\n\timport IconFeatured from '@martyrs/src/modules/icons/entities/IconFeatured.vue'\n\timport IconPopular from '@martyrs/src/modules/icons/entities/IconPopular.vue'\n\timport IconRecent from '@martyrs/src/modules/icons/entities/IconRecent.vue'\n\timport IconFollowing from '@martyrs/src/modules/icons/entities/IconFollowing.vue'\n\n\nimport axios from 'axios';\n\n\nimport Comment from '../sections/Comment.vue';\n\n\nconst $axios = axios.create({ baseURL: process.env.API_URL });\nconst comments = ref([]);\nconst commentContent = ref('');\n\nconst fetchComments = async () => {\n try {\n const response = await $axios.get('/comments/read', {\n params: {\n maxDepth: 1,\n format: 'plain'\n }\n });\n comments.value = response.data;\n } catch (error) {\n console.error('Error fetching comments:', error);\n }\n};\n\nfetchComments();\n\n// Import state\nimport * as blog from '@martyrs/src/modules/community/store/blogposts.js';\nimport * as auth from '@martyrs/src/modules/auth/views/store/auth.js'\nimport * as organizations from '@martyrs/src/modules/organizations/store/organizations.js'\nimport membershipsStore from '@martyrs/src/modules/organizations/store/memberships.store.js'\n\n// State\nconst route = useRoute();\nconst router = useRouter();\n\nif (route.params.category === 'popular') blog.state.sort.param = 'views'; \nif (route.params.category === 'new') blog.state.sort.param = 'createdAt'; \n\n\nconst handleMembershipUpdate = ({ membership, status, target }, statusName, statusNumber) => {\n membershipsStore.handleMembershipUpdate(organizations.state.current, membership, status, target, statusName, statusNumber)\n};\n\n</script>\n\n<style lang=\"scss\">\n\n</style>\n"],"names":["blog.state","organizations.state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6LA,UAAM,SAAS,MAAM,OAAO,EAAE,SAAS,QAAQ,IAAI,SAAS;AAC5D,UAAM,WAAW,IAAI,EAAE;AACA,QAAI,EAAE;AAE7B,UAAM,gBAAgB,YAAY;AAChC,UAAI;AACF,cAAM,WAAW,MAAM,OAAO,IAAI,kBAAkB;AAAA,UAClD,QAAQ;AAAA,YACN,UAAU;AAAA,YACV,QAAQ;AAAA,UAChB;AAAA,QACA,CAAK;AACD,iBAAS,QAAQ,SAAS;AAAA,MAC5B,SAAS,OAAO;AACd,gBAAQ,MAAM,4BAA4B,KAAK;AAAA,MACjD;AAAA,IACF;AAEA,kBAAa;AASb,UAAM,QAAQ,SAAQ;AACtB,UAAM,SAAS,UAAS;AAExB,QAAI,MAAM,OAAO,aAAa,UAAWA,OAAW,KAAK,QAAQ;AACjE,QAAI,MAAM,OAAO,aAAa,MAAOA,OAAW,KAAK,QAAQ;AAG7D,UAAM,yBAAyB,CAAC,EAAE,YAAY,QAAQ,OAAM,GAAI,YAAY,iBAAiB;AAC3F,uBAAiB,uBAAuBC,QAAoB,SAAS,YAAY,QAAQ,QAAQ,YAAY,YAAY;AAAA,IAC3H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -12,7 +12,7 @@ require("vue-i18n");
|
|
|
12
12
|
;/* empty css */
|
|
13
13
|
;/* empty css */
|
|
14
14
|
const auth = require("../../../auth/views/store/auth.cjs");
|
|
15
|
-
require("../../../organizations/store/memberships.cjs");
|
|
15
|
+
require("../../../organizations/store/memberships.store.cjs");
|
|
16
16
|
require("../../../organizations/store/organizations.cjs");
|
|
17
17
|
;/* empty css */
|
|
18
18
|
const Comments = require("../sections/Comments.vue.cjs");
|
|
@@ -10,7 +10,7 @@ import "vue-i18n";
|
|
|
10
10
|
/* empty css */
|
|
11
11
|
/* empty css */
|
|
12
12
|
import { state as state$1 } from "../../../auth/views/store/auth.js";
|
|
13
|
-
import "../../../organizations/store/memberships.js";
|
|
13
|
+
import "../../../organizations/store/memberships.store.js";
|
|
14
14
|
import "../../../organizations/store/organizations.js";
|
|
15
15
|
/* empty css */
|
|
16
16
|
import _sfc_main$4 from "../sections/Comments.vue.js";
|