{"version":3,"file":"common.bd85e0fd.js","sources":["../../../../composables/use-clipboard-copy.ts","../../../../components/ShareModal.vue","../../../../stores/counters.ts","../../../../stores/favorites.ts","../../../../composables/use-counters-helper.ts","../../../../models/common.ts"],"sourcesContent":["import { useI18n } from 'vue-i18n'\nimport { useNotifications } from '~/stores/notifications'\n\nexport const useClipboardCopy = () => {\n const { t } = useI18n()\n const { pushNotification } = useNotifications()\n\n const copyLink = async (link: string) => {\n try {\n await navigator.clipboard.writeText(link)\n pushNotification({\n title: t('notifications.share.copy_link_success'),\n })\n } catch (error) {\n pushNotification({\n title: t(`notifications.share.copy_link_error`),\n theme: 'destructive',\n })\n useLogError(new Error('error on clipboard.writeText'))\n }\n }\n\n return {\n copyLink,\n }\n}\n","\n \n \n
\n \n \n \n \n \n
\n
\n
\n \n {{ link }}\n \n
\n
copyLink(link)\"\n >\n {{ $t('common.copy_link') }}\n \n
\n
\n \n\n\n\n","import { defineStore } from 'pinia'\nimport { EntityType } from '~/models/common'\nimport { ReactionType } from '~/models/counters'\n\nimport type {\n CounterCommentsResponseType,\n CounterReactionsResponseType,\n CounterRequestType,\n} from '~/models/counters'\n\nexport const useCounters = defineStore('counters', () => {\n const baseURL = useRuntimeConfig().public.gatewayApi\n\n const getParams = (entity: CounterRequestType): Record => ({\n [`entities[0][entity_id]`]: entity.entity_id.toString(),\n [`entities[0][entity_type]`]: entity.entity_type,\n })\n\n const fetchCommentsCounters = async (\n entity: CounterRequestType\n ): Promise => {\n const queryParams = getParams(entity)\n\n const { data } = await useKrakenFetch<{\n data: CounterCommentsResponseType[]\n }>(`/comments/counter`, {\n baseURL,\n params: queryParams,\n })\n\n return data.length ? data[0] : null\n }\n\n const fetchReactionsCounters = async (\n entity: CounterRequestType,\n isAuth: boolean\n ): Promise => {\n const queryParams = getParams(entity)\n\n if (isAuth) {\n const { data } = await useAuthFetch<{\n data: CounterReactionsResponseType[]\n }>('/reactions/me', {\n baseURL,\n params: queryParams,\n })\n\n return data\n } else {\n const { data } = await useKrakenFetch<{\n data: CounterReactionsResponseType[]\n }>('/reactions', {\n baseURL,\n params: queryParams,\n })\n\n return data\n }\n }\n\n const sendReaction = async (\n entityId: number,\n entityType: EntityType,\n reactionType: ReactionType\n ) => {\n await useAuthFetch<{\n data: CounterReactionsResponseType[]\n }>('/reactions', {\n baseURL,\n method: 'POST',\n body: {\n entity_id: entityId,\n entity_type: entityType,\n reaction: reactionType,\n },\n })\n }\n\n const deleteReaction = async (entityId: number, entityType: EntityType) => {\n await useAuthFetch<{\n data: CounterReactionsResponseType[]\n }>('/reactions', {\n baseURL,\n method: 'DELETE',\n body: {\n entity_id: entityId,\n entity_type: entityType,\n },\n })\n }\n\n return {\n fetchCommentsCounters,\n fetchReactionsCounters,\n sendReaction,\n deleteReaction,\n }\n})\n","import { defineStore } from 'pinia'\nimport { EntityType } from '~/models/common'\nimport type { Favorite } from '~/models/favorites'\n\nexport const useFavorites = defineStore('favorites', () => {\n const baseURL = useRuntimeConfig().public.gatewayApi\n\n const initFavoritesList = () => {\n const list = useInfinityList('/favorites', baseURL)\n\n list.state.params = {\n per_page: 5,\n }\n\n return list\n }\n\n const list = initFavoritesList()\n\n async function addToFavorites(\n entityId: number,\n entityType: EntityType,\n eventId?: number,\n lang?: string\n ) {\n const { data } = await useAuthFetch<{ data: Favorite }>('/favorites', {\n baseURL,\n method: 'POST',\n body: {\n entity_id: entityId,\n entity_type: entityType,\n ...(lang && { lang }),\n ...(eventId && { event_id: eventId }),\n },\n })\n\n return data\n }\n\n async function removeFromFavoritesById(id: number) {\n await useAuthFetch(`/favorites/${id}`, {\n baseURL,\n method: 'DELETE',\n })\n }\n\n async function removeFromFavorites(entityId: number, entityType: EntityType) {\n await useAuthFetch(`/favorites/${entityType}/${entityId}`, {\n baseURL,\n method: 'DELETE',\n })\n }\n\n async function isFavorite(entityId: number, entityType: EntityType) {\n const { data } = await useAuthFetch<{ data: Favorite }>(\n `/favorites/${entityType}/${entityId}`,\n {\n baseURL,\n }\n )\n\n return data\n }\n\n return {\n isFavorite,\n addToFavorites,\n removeFromFavorites,\n removeFromFavoritesById,\n list: list.state,\n allRecordsLoaded: list.allRecordsLoaded,\n fetch: list.fetch,\n getPage: list.getPage,\n nextPage: list.nextPage,\n reset: list.reset,\n }\n})\n","import { useI18n } from 'vue-i18n'\nimport type { Ref } from 'vue'\nimport { useAuth } from '~/stores/auth'\nimport { useCounters } from '~/stores/counters'\nimport type {\n CounterReactionsResponseType,\n CounterRequestType,\n ReactionsCounters,\n} from '~/models/counters'\nimport { ReactionType } from '~/models/counters'\nimport { useNotifications } from '~/stores/notifications'\nimport { useFavorites } from '~/stores/favorites'\n\nexport interface CountersCallback {\n onDeleteReaction?: () => Promise\n onSendReaction?: () => Promise\n onObserve?: () => Promise\n}\n\nexport const useCountersHelper = () => {\n const {\n fetchCommentsCounters,\n fetchReactionsCounters,\n sendReaction: sendReactionAction,\n deleteReaction: deleteReactionAction,\n } = useCounters()\n const { pushNotification } = useNotifications()\n const authStore = useAuth()\n const { t } = useI18n()\n const favoritesStore = useFavorites()\n\n const commentsCounter = ref(0)\n const reactionsCounters: Ref = ref({})\n const isObserverDone = ref(false)\n const isCountersProcessing = ref(false)\n const entity = ref(null)\n const observedTarget = ref[>()\n const callbacks = ref(null)\n const isFavorite = ref(false)\n\n const getCommentsCounters = async () => {\n if (!entity.value) {\n return\n }\n\n const counter = await fetchCommentsCounters(entity.value)\n\n if (counter) {\n updateCommentsCounter(counter.comments_count)\n }\n }\n\n const updateCommentsCounter = (value: number) => {\n commentsCounter.value = value\n }\n\n const resetReactions = () => {\n reactionsCounters.value = {}\n }\n\n const updateReactiosCounters = (\n reactionList: CounterReactionsResponseType[]\n ) => {\n if (reactionList && reactionList.length) {\n reactionList.forEach((reactionItem) => {\n reactionsCounters.value[reactionItem.reaction] = reactionItem\n })\n }\n }\n\n const getReactionsCounters = async () => {\n if (!entity.value) {\n return\n }\n\n const counters = await fetchReactionsCounters(\n entity.value,\n !!authStore.auth\n )\n\n resetReactions()\n updateReactiosCounters(counters)\n }\n\n const sendReaction = async (reactionType: ReactionType) => {\n if (!entity.value) {\n return\n }\n\n if (!authStore.auth) {\n authStore.openLoginModal()\n return\n }\n\n try {\n await sendReactionAction(\n entity.value.entity_id,\n entity.value.entity_type,\n reactionType\n )\n await getReactionsCounters()\n\n if (callbacks.value && callbacks.value.onSendReaction) {\n await callbacks.value.onSendReaction()\n }\n } catch (error) {\n pushNotification({\n title: t('notifications.reactions.sent_error'),\n theme: 'destructive',\n })\n useLogError(error)\n }\n }\n\n const deleteReaction = async () => {\n if (!entity.value) {\n return\n }\n\n try {\n await deleteReactionAction(\n entity.value.entity_id,\n entity.value.entity_type\n )\n await getReactionsCounters()\n\n if (callbacks.value && callbacks.value.onDeleteReaction) {\n await callbacks.value.onDeleteReaction()\n }\n } catch (error) {\n pushNotification({\n title: t('notifications.reactions.delete_error'),\n theme: 'destructive',\n })\n useLogError(error)\n }\n }\n\n const onChangeReaction = async (reactionType: ReactionType) => {\n isCountersProcessing.value = true\n\n if (reactionsCounters.value[reactionType]?.is_set_by_user) {\n await deleteReaction()\n } else {\n await sendReaction(reactionType)\n }\n\n isCountersProcessing.value = false\n }\n\n const checkFavorites = async () => {\n if (!entity.value) {\n return\n }\n\n try {\n await favoritesStore.isFavorite(\n entity.value.entity_id,\n entity.value.entity_type\n )\n isFavorite.value = true\n } catch (error) {\n isFavorite.value = false\n }\n }\n\n const createObserver = (promises: (() => Promise)[]) => {\n const targetIsVisible = ref(false)\n\n // let timeout: number\n\n const { stop } = useIntersectionObserver(\n observedTarget.value,\n ([{ isIntersecting }], _observerElement) => {\n targetIsVisible.value = isIntersecting\n\n if (targetIsVisible.value) {\n // timeout =\n window.setTimeout(async () => {\n if (targetIsVisible.value) {\n await Promise.all(promises.map((item) => item()))\n stop()\n isObserverDone.value = true\n }\n }, 200)\n }\n },\n {\n rootMargin: '50px',\n }\n )\n\n // onUnmounted is temporaly commented as we getting vue warnings about no active instance could be bounded to unmounted hook\n // moreover if component will be unmounted so it should be not visible and callback should be stopped\n\n // onUnmounted(() => {\n // clearTimeout(timeout)\n // })\n }\n\n interface CounterHelperParams {\n entity: CounterRequestType\n target?: Ref\n callbacks?: CountersCallback\n isLoadComments?: boolean\n isLoadReactions?: boolean\n isCheckFavorite?: boolean\n }\n\n const initCountersHelper = async (params: CounterHelperParams) => {\n entity.value = params.entity\n\n if (params.target) {\n observedTarget.value = params.target\n }\n\n if (params.callbacks) {\n callbacks.value = params.callbacks\n }\n\n const promises = []\n if (params.isLoadComments) {\n promises.push(getCommentsCounters)\n }\n if (params.isLoadReactions) {\n promises.push(getReactionsCounters)\n }\n if (params.isCheckFavorite) {\n promises.push(checkFavorites)\n }\n\n if (observedTarget.value) {\n if (params.callbacks?.onObserve) {\n promises.push(params.callbacks.onObserve)\n }\n\n createObserver(promises)\n } else {\n await Promise.all(promises.map((item) => item()))\n }\n\n if (params.isLoadReactions) {\n watch(\n () => authStore.auth,\n () => {\n if (!observedTarget.value) {\n getReactionsCounters()\n } else if (isObserverDone.value) {\n createObserver([getReactionsCounters])\n }\n }\n )\n }\n }\n\n return {\n initCountersHelper,\n reactionsCounters,\n commentsCounter,\n updateCommentsCounter,\n onChangeReaction,\n isCountersProcessing,\n isFavorite,\n }\n}\n","export enum EntityType {\n Post = 'post',\n Event = 'event',\n Question = 'question',\n Answer = 'answer',\n Video = 'lecture',\n User = 'user',\n Comment = 'comment',\n Game = 'game',\n Showcase = 'showcase',\n Company = 'company',\n Favorite = 'favorite',\n}\n\nexport interface CheckboxFilterItem {\n id: number\n value: boolean\n label: string\n}\n\nexport interface GenericItem {\n id: number\n value: boolean\n label: string\n}\n"],"names":["useClipboardCopy","useI18n","pushNotification","useNotifications","link","useLogError","emit","__emit","close","copyLink","useCounters","defineStore","baseURL","useRuntimeConfig","getParams","entity","queryParams","data","useKrakenFetch","isAuth","useAuthFetch","entityId","entityType","reactionType","useFavorites","list","useInfinityList","addToFavorites","eventId","lang","removeFromFavoritesById","id","removeFromFavorites","isFavorite","useCountersHelper","fetchCommentsCounters","fetchReactionsCounters","sendReactionAction","deleteReactionAction","authStore","useAuth","t","favoritesStore","commentsCounter","ref","reactionsCounters","isObserverDone","isCountersProcessing","observedTarget","callbacks","getCommentsCounters","counter","updateCommentsCounter","value","resetReactions","updateReactiosCounters","reactionList","reactionItem","getReactionsCounters","counters","sendReaction","error","deleteReaction","onChangeReaction","_a","checkFavorites","createObserver","promises","targetIsVisible","stop","useIntersectionObserver","isIntersecting","_observerElement","item","params","watch","EntityType"],"mappings":"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"}]