{"version":3,"file":"idea.3055db37.js","sources":["../../../frontend/api/v3/private/idea.js"],"sourcesContent":["// Helpers\nimport { getRequest, postRequest, privateApiUrl } from 'api/v3';\nimport { createMap } from 'common/utils/helpers';\n\n// Utils\nimport { userAuthenticated } from 'ideation/utils/userAuthenticate';\n\nexport function getIdeasUrl(ideaBoardId, params) {\n return privateApiUrl(`idea_boards/${ideaBoardId}/ideas`, params);\n}\n\nfunction getIdeasUserActions(ideaBoardId, ideaIds) {\n return getRequest(\n privateApiUrl(`idea_boards/${ideaBoardId}/idea_user_actions`, {\n include: ['idea_votes', 'moderation_flags'],\n idea_ids: ideaIds,\n })\n );\n}\n\n/**\n * Fetch idea with vote and moderation flag data\n * @param {string} url\n * @param {string} ideaBoardId\n * @returns {object}\n */\nexport async function getIdeaFetcher(url, ideaBoardId) {\n const ideaResponse = await getRequest(url);\n\n if (!userAuthenticated()) return ideaResponse;\n\n const { deserialized: idea } = ideaResponse;\n const { deserialized: userActions } = await getIdeasUserActions(ideaBoardId, [idea.id]);\n const ideaVotesMap = createMap(userActions.ideaVotes, 'ideaId');\n const moderationFlagsMap = createMap(userActions.moderationFlags, 'ideaId');\n\n if (idea.id in ideaVotesMap) {\n idea.votes = ideaVotesMap[idea.id];\n }\n\n if (idea.id in moderationFlagsMap) {\n idea.moderationFlags = moderationFlagsMap[idea.id];\n }\n\n return ideaResponse;\n}\n\nexport async function getIdeasFetcher(url, ideaBoardId) {\n const ideasResponse = await getRequest(url);\n\n if (!userAuthenticated()) return ideasResponse;\n\n const { deserialized: ideas } = ideasResponse;\n const ideaIds = ideas.map((idea) => idea.id);\n\n const { deserialized: userActions } = await getIdeasUserActions(ideaBoardId, ideaIds);\n const ideaVotesMap = createMap(userActions.ideaVotes, 'ideaId');\n const moderationFlagsMap = createMap(userActions.moderationFlags, 'ideaId');\n\n for (const idea of ideas) {\n if (idea.id in ideaVotesMap) {\n idea.votes = ideaVotesMap[idea.id];\n }\n\n if (idea.id in moderationFlagsMap) {\n idea.moderationFlags = moderationFlagsMap[idea.id];\n }\n }\n\n return ideasResponse;\n}\n\nexport function getIdeaUrl(id, params) {\n return privateApiUrl(`ideas/${id}`, params);\n}\n\nexport function createIdea(ideaBoardId, { title, description, image, force }) {\n return postRequest(privateApiUrl(`idea_boards/${ideaBoardId}/ideas`), {\n data: { type: 'idea', attributes: { title, description, image, force } },\n });\n}\n\nexport function upvoteIdea(id) {\n return postRequest(privateApiUrl(`ideas/${id}/upvote`), { data: { type: 'upvote' } });\n}\n\nexport function downvoteIdea(id) {\n return postRequest(privateApiUrl(`ideas/${id}/downvote`), { data: { type: 'downvote' } });\n}\n\nexport function flagIdea(id, { reason }) {\n return postRequest(privateApiUrl(`ideas/${id}/moderation_flag`), {\n data: { type: 'moderation_flag', attributes: { reason } },\n });\n}\n\n/**\n * Get discussions of the idea\n * @param {(number|string)} discussionTopId\n * @param {number} [pageNumber=1]\n * @param {number} [pageSize=25]\n * @param {string} [sort=-created_at] - most_popular, -created_at, created_at\n * @param {object} filter\n * @param {boolean} [filter.approved=true]\n * @param {boolean} [filter.require_moderation=false]\n * @returns {string}\n */\nexport const getIdeaDiscussionsURL = (\n discussionTopId,\n pageNumber = 1,\n pageSize = 25,\n sort = '-created_at',\n filter = {\n require_moderation: false,\n }\n) => {\n const params = {\n page: {\n number: pageNumber,\n size: pageSize,\n },\n sort,\n filter,\n };\n\n return privateApiUrl(`ideas/${discussionTopId}/discussions`, params);\n};\n\n/**\n * Export comments for a Idea\n * @param {(string|number)} ideaId\n * @param {string} defaultLocale\n * @returns\n */\nexport const exportIdeaComments = (ideaId, defaultLocale) => {\n const url = privateApiUrl(`ideas/${ideaId}/export_discussions`);\n\n return postRequest(url, {\n data: {\n type: 'export_discussions',\n attributes: {\n ...(defaultLocale && { defaultLocale }),\n },\n },\n });\n};\n"],"names":["getIdeasUrl","ideaBoardId","params","privateApiUrl","getIdeasUserActions","ideaIds","getRequest","getIdeaFetcher","url","ideaResponse","userAuthenticated","idea","userActions","ideaVotesMap","createMap","moderationFlagsMap","getIdeasFetcher","ideasResponse","ideas","getIdeaUrl","id","createIdea","title","description","image","force","postRequest","upvoteIdea","downvoteIdea","flagIdea","reason","getIdeaDiscussionsURL","discussionTopId","pageNumber","pageSize","sort","filter","exportIdeaComments","ideaId","defaultLocale"],"mappings":"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"}