INSERT INTO `cp_filejs` (`id`,`app`,`path`,`modul`,`file_name`,`content`) VALUES ('307','1','u2/creator','post','js/post-view.js---','import app from \\\\\\\\\\\\\\\"./app.js\\\\\\\\\\\\\\\"\r\nimport {\r\n getPostById\r\n} from \\\\\\\\\\\\\\\"./api/posts.js\\\\\\\\\\\\\\\"\r\nimport {\r\n formatPostDate\r\n} from \\\\\\\\\\\\\\\"./utils.js\\\\\\\\\\\\\\\"\r\nimport store from \\\\\\\\\\\\\\\"./store.js\\\\\\\\\\\\\\\"\r\nvar $ = Dom7\r\n\r\nexport function renderPost(post) {\r\n const user = store.getters.user.value\r\n\r\n let post_actions = `\r\n
\r\n
\r\n ${post.is_liked ? \\\\\\\\\\\\\\\'heart_fill\\\\\\\\\\\\\\\' : \\\\\\\\\\\\\\\'heart\\\\\\\\\\\\\\\'} \r\n
\r\n \r\n
\r\n paperplane \r\n
\r\n `\r\n\r\n if (post.user_id == user.id) {\r\n post_actions += `\r\n
\r\n gear_alt \r\n
\r\n `\r\n }\r\n\r\n post_actions += `
`\r\n\r\n const date = formatPostDate(post.post_date)\r\n const maxDescriptionLength = 10; // Set your character limit here\r\n const isLongDescription = post.caption.length > maxDescriptionLength;\r\n const shortDescription = isLongDescription ? post.caption.slice(0, maxDescriptionLength) : post.caption;\r\n let imageHeight = 400;\r\n\r\n if (post.media.length > 0) {\r\n imageHeight = post.media[0].media_height;\r\n\r\n if (imageHeight > 800) {\r\n imageHeight = \\\\\\\\\\\\\\\'auto\\\\\\\\\\\\\\\';\r\n }\r\n }\r\n\r\n let profile_link;\r\n\r\n if (post.user_id == user.id) {\r\n profile_link = `\r\n
\r\n
\r\n ${post.username}
\r\n `\r\n } else {\r\n profile_link = `\r\n
\r\n
\r\n ${post.username}
\r\n `\r\n }\r\n\r\n const postItem = `\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n ${post.media.map(mediaItem => `\r\n
\r\n ${mediaItem.media_type === \\\\\\\\\\\\\\\'video\\\\\\\\\\\\\\\' ? `\r\n
\r\n \r\n \r\n ` : `\r\n
\r\n `}\r\n
\r\n `).join(\\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\')}\r\n
\r\n \r\n
\r\n
\r\n ${post_actions}\r\n
${post.likes_count} likes
\r\n
\r\n ${post.username} ${shortDescription} \r\n ${post.caption} \r\n ${isLongDescription ? `... more ` : \\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\'}\r\n
\r\n ${post.comments_count > 0 ? `` : \\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\'}\r\n
\r\n
`\r\n\r\n return postItem\r\n}\r\n\r\nexport function displayPost(post) {\r\n const postsContainer = document.getElementById(\\\\\\\\\\\\\\\'post-view-container\\\\\\\\\\\\\\\')\r\n postsContainer.innerHTML = \\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\' // Clear any existing posts\r\n\r\n const user = store.getters.user.value\r\n\r\n let post_actions = `\r\n
\r\n
\r\n ${post.is_liked ? \\\\\\\\\\\\\\\'heart_fill\\\\\\\\\\\\\\\' : \\\\\\\\\\\\\\\'heart\\\\\\\\\\\\\\\'} \r\n
\r\n \r\n
\r\n paperplane \r\n
\r\n `\r\n\r\n if (post.user_id == user.id) {\r\n post_actions += `\r\n
\r\n gear_alt \r\n
\r\n `\r\n }\r\n\r\n post_actions += `
`\r\n\r\n const date = formatPostDate(post.post_date)\r\n const maxDescriptionLength = 10; // Set your character limit here\r\n const isLongDescription = post.caption.length > maxDescriptionLength;\r\n const shortDescription = isLongDescription ? post.caption.slice(0, maxDescriptionLength) : post.caption;\r\n let imageHeight = 400;\r\n\r\n if (post.media.length > 0) {\r\n imageHeight = post.media[0].media_height;\r\n\r\n if (imageHeight > 800) {\r\n imageHeight = \\\\\\\\\\\\\\\'auto\\\\\\\\\\\\\\\';\r\n }\r\n }\r\n\r\n let profile_link;\r\n\r\n if (post.user_id == user.id) {\r\n profile_link = `\r\n
\r\n
\r\n ${post.username}
\r\n `\r\n } else {\r\n profile_link = `\r\n
\r\n
\r\n ${post.username}
\r\n `\r\n }\r\n\r\n const postItem = `\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n ${post.media.map(mediaItem => `\r\n
\r\n ${mediaItem.media_type === \\\\\\\\\\\\\\\'video\\\\\\\\\\\\\\\' ? `\r\n
\r\n \r\n \r\n ` : `\r\n
\r\n `}\r\n
\r\n `).join(\\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\')}\r\n
\r\n \r\n
\r\n
\r\n ${post_actions}\r\n
${post.likes_count} likes
\r\n
\r\n ${post.username} ${shortDescription} \r\n ${post.caption} \r\n ${isLongDescription ? `... more ` : \\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\'}\r\n
\r\n ${post.comments_count > 0 ? `` : \\\\\\\\\\\\\\\'\\\\\\\\\\\\\\\'}\r\n
\r\n
`\r\n\r\n postsContainer.insertAdjacentHTML(\\\\\\\\\\\\\\\'beforeend\\\\\\\\\\\\\\\', postItem)\r\n}\r\n\r\n// $(document).on(\\\\\\\\\\\\\\\'touchstart\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\'.media-single-post-content .swiper-wrapper\\\\\\\\\\\\\\\', detectDoubleTapClosure((e) => {\r\n// const parent = e.closest(\\\\\\\\\\\\\\\'.media-post\\\\\\\\\\\\\\\')\r\n// const postId = parent.getAttribute(\\\\\\\\\\\\\\\'data-post-id\\\\\\\\\\\\\\\')\r\n// const isLiked = parent.getAttribute(\\\\\\\\\\\\\\\'data-is-liked\\\\\\\\\\\\\\\') === \\\\\\\\\\\\\\\'true\\\\\\\\\\\\\\\'\r\n\r\n// if (isLiked) {\r\n// return\r\n// }\r\n\r\n// togglePostLike(postId, true)\r\n// }), {\r\n// passive: false\r\n// })\r\n\r\n$(document).on(\\\\\\\\\\\\\\\'page:beforein\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\'.page[data-name=\\\\\\\\\\\\\\\"post-view\\\\\\\\\\\\\\\"]\\\\\\\\\\\\\\\', async function (e) {\r\n var pathStore = store.getters.getPathData\r\n\r\n var postId = e.detail.route.params.id\r\n var query = e.detail.route.query\r\n\r\n let commentId;\r\n\r\n if (query && query.commentId) {\r\n commentId = query.commentId\r\n }\r\n\r\n if (!postId || postId === \\\\\\\\\\\\\\\'-1\\\\\\\\\\\\\\\') {\r\n return\r\n }\r\n\r\n let cachedData = null\r\n\r\n try {\r\n if (pathStore && pathStore.value[`/post/${postId}`]) {\r\n cachedData = pathStore.value[`/post/${postId}`]\r\n }\r\n } catch (error) {\r\n console.error(\\\\\\\\\\\\\\\'Error fetching cached data:\\\\\\\\\\\\\\\', error)\r\n }\r\n\r\n if (!cachedData) {\r\n $(\\\\\\\\\\\\\\\'.loading-fullscreen.post-view\\\\\\\\\\\\\\\').show()\r\n\r\n const post = await getPostById(postId)\r\n if (!post) {\r\n app.dialog.alert(\\\\\\\\\\\\\\\'Post not found\\\\\\\\\\\\\\\', \\\\\\\\\\\\\\\'Error\\\\\\\\\\\\\\\')\r\n return\r\n }\r\n\r\n store.dispatch(\\\\\\\\\\\\\\\'setPathData\\\\\\\\\\\\\\\', {\r\n path: `/post/${postId}`,\r\n data: post,\r\n })\r\n\r\n cachedData = post\r\n } else {\r\n $(\\\\\\\\\\\\\\\'.loading-fullscreen.post-view\\\\\\\\\\\\\\\').hide()\r\n }\r\n\r\n displayPost(cachedData)\r\n\r\n if (commentId) {\r\n $(\\\\\\\\\\\\\\\'.media-post-comment\\\\\\\\\\\\\\\').click()\r\n }\r\n\r\n\r\n setTimeout(() => {\r\n // find .comment data-comment-id=\\\\\\\\\\\\\\\"${comment.id}\\\\\\\\\\\\\\\" and animate it to glow#\r\n if (commentId) {\r\n const comment = $(`.comment[data-comment-id=\\\\\\\\\\\\\\\"${commentId}\\\\\\\\\\\\\\\"]`)\r\n console.log(\\\\\\\\\\\\\\\'Comment:\\\\\\\\\\\\\\\', comment);\r\n\r\n if (comment.length > 0) {\r\n comment.addClass(\\\\\\\\\\\\\\\'target-highlight\\\\\\\\\\\\\\\')\r\n // Scroll to the comment\r\n document.querySelector(`.comment[data-comment-id=\\\\\\\\\\\\\\\"${commentId}\\\\\\\\\\\\\\\"]`).scrollIntoView({\r\n behavior: \\\\\\\\\\\\\\\'smooth\\\\\\\\\\\\\\\', // Optional, adds smooth scrolling\r\n block: \\\\\\\\\\\\\\\'start\\\\\\\\\\\\\\\', // Aligns the element to the top of the view\r\n inline: \\\\\\\\\\\\\\\'nearest\\\\\\\\\\\\\\\' // Aligns the element horizontally in the viewport\r\n });\r\n\r\n }\r\n\r\n setTimeout(() => {\r\n comment.removeClass(\\\\\\\\\\\\\\\'target-highlight\\\\\\\\\\\\\\\')\r\n }, 3000)\r\n }\r\n }, 2000)\r\n})');