@drodil/backstage-plugin-qeta-react 3.3.0 → 3.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/dist/components/AnswerCard/AnswerCard.esm.js +6 -1
  2. package/dist/components/AnswerCard/AnswerCard.esm.js.map +1 -1
  3. package/dist/components/AnswerForm/AnswerForm.esm.js +5 -1
  4. package/dist/components/AnswerForm/AnswerForm.esm.js.map +1 -1
  5. package/dist/components/AnswersContainer/AnswerList.esm.js +16 -38
  6. package/dist/components/AnswersContainer/AnswerList.esm.js.map +1 -1
  7. package/dist/components/AnswersContainer/AnswerListItem.esm.js +6 -1
  8. package/dist/components/AnswersContainer/AnswerListItem.esm.js.map +1 -1
  9. package/dist/components/AnswersContainer/AnswersContainer.esm.js +5 -1
  10. package/dist/components/AnswersContainer/AnswersContainer.esm.js.map +1 -1
  11. package/dist/components/ArticleContent/ArticleButtons.esm.js +6 -1
  12. package/dist/components/ArticleContent/ArticleButtons.esm.js.map +1 -1
  13. package/dist/components/ArticleContent/ArticleContent.esm.js +7 -1
  14. package/dist/components/ArticleContent/ArticleContent.esm.js.map +1 -1
  15. package/dist/components/AuthorBox/AuthorBox.esm.js +7 -1
  16. package/dist/components/AuthorBox/AuthorBox.esm.js.map +1 -1
  17. package/dist/components/Buttons/AddToCollectionButton.esm.js +4 -1
  18. package/dist/components/Buttons/AddToCollectionButton.esm.js.map +1 -1
  19. package/dist/components/Buttons/AskQuestionButton.esm.js +5 -1
  20. package/dist/components/Buttons/AskQuestionButton.esm.js.map +1 -1
  21. package/dist/components/Buttons/BackToArticlesButton.esm.js +5 -1
  22. package/dist/components/Buttons/BackToArticlesButton.esm.js.map +1 -1
  23. package/dist/components/Buttons/BackToCollectionsButton.esm.js +5 -1
  24. package/dist/components/Buttons/BackToCollectionsButton.esm.js.map +1 -1
  25. package/dist/components/Buttons/BackToQuestionsButton.esm.js +5 -1
  26. package/dist/components/Buttons/BackToQuestionsButton.esm.js.map +1 -1
  27. package/dist/components/Buttons/CollectionFollowButton.esm.js +40 -0
  28. package/dist/components/Buttons/CollectionFollowButton.esm.js.map +1 -0
  29. package/dist/components/Buttons/CreateCollectionButton.esm.js +5 -1
  30. package/dist/components/Buttons/CreateCollectionButton.esm.js.map +1 -1
  31. package/dist/components/Buttons/EntityFollowButton.esm.js +7 -1
  32. package/dist/components/Buttons/EntityFollowButton.esm.js.map +1 -1
  33. package/dist/components/Buttons/FavoriteButton.esm.js +4 -1
  34. package/dist/components/Buttons/FavoriteButton.esm.js.map +1 -1
  35. package/dist/components/Buttons/LinkButton.esm.js +6 -1
  36. package/dist/components/Buttons/LinkButton.esm.js.map +1 -1
  37. package/dist/components/Buttons/TagFollowButton.esm.js +7 -1
  38. package/dist/components/Buttons/TagFollowButton.esm.js.map +1 -1
  39. package/dist/components/Buttons/UserFollowButton.esm.js +7 -1
  40. package/dist/components/Buttons/UserFollowButton.esm.js.map +1 -1
  41. package/dist/components/Buttons/VoteButtons.esm.js +2 -2
  42. package/dist/components/Buttons/VoteButtons.esm.js.map +1 -1
  43. package/dist/components/Buttons/WriteArticleButton.esm.js +5 -1
  44. package/dist/components/Buttons/WriteArticleButton.esm.js.map +1 -1
  45. package/dist/components/CollectionCard/CollectionCard.esm.js +7 -3
  46. package/dist/components/CollectionCard/CollectionCard.esm.js.map +1 -1
  47. package/dist/components/CollectionForm/CollectionForm.esm.js +5 -1
  48. package/dist/components/CollectionForm/CollectionForm.esm.js.map +1 -1
  49. package/dist/components/CollectionsGrid/CollectionsGrid.esm.js +61 -14
  50. package/dist/components/CollectionsGrid/CollectionsGrid.esm.js.map +1 -1
  51. package/dist/components/CollectionsGrid/CollectionsGridContent.esm.js +13 -27
  52. package/dist/components/CollectionsGrid/CollectionsGridContent.esm.js.map +1 -1
  53. package/dist/components/CollectionsGrid/CollectionsGridItem.esm.js +28 -19
  54. package/dist/components/CollectionsGrid/CollectionsGridItem.esm.js.map +1 -1
  55. package/dist/components/CollectionsGrid/NoCollectionsCard.esm.js +25 -0
  56. package/dist/components/CollectionsGrid/NoCollectionsCard.esm.js.map +1 -0
  57. package/dist/components/CommentSection/CommentList.esm.js +4 -1
  58. package/dist/components/CommentSection/CommentList.esm.js.map +1 -1
  59. package/dist/components/CommentSection/CommentSection.esm.js +4 -1
  60. package/dist/components/CommentSection/CommentSection.esm.js.map +1 -1
  61. package/dist/components/DeleteModal/DeleteModal.esm.js +5 -1
  62. package/dist/components/DeleteModal/DeleteModal.esm.js.map +1 -1
  63. package/dist/components/EntitiesGrid/EntitiesGrid.esm.js +65 -22
  64. package/dist/components/EntitiesGrid/EntitiesGrid.esm.js.map +1 -1
  65. package/dist/components/EntitiesGrid/EntitiesGridContent.esm.js +31 -0
  66. package/dist/components/EntitiesGrid/EntitiesGridContent.esm.js.map +1 -0
  67. package/dist/components/EntitiesGrid/EntitiesGridItem.esm.js +6 -1
  68. package/dist/components/EntitiesGrid/EntitiesGridItem.esm.js.map +1 -1
  69. package/dist/components/EntitiesGrid/NoEntitiesCard.esm.js +25 -0
  70. package/dist/components/EntitiesGrid/NoEntitiesCard.esm.js.map +1 -0
  71. package/dist/components/FilterPanel/DateRangeFilter.esm.js +6 -1
  72. package/dist/components/FilterPanel/DateRangeFilter.esm.js.map +1 -1
  73. package/dist/components/FilterPanel/FilterPanel.esm.js +9 -5
  74. package/dist/components/FilterPanel/FilterPanel.esm.js.map +1 -1
  75. package/dist/components/FollowedLists/FollowedCollectionsList.esm.js +49 -0
  76. package/dist/components/FollowedLists/FollowedCollectionsList.esm.js.map +1 -0
  77. package/dist/components/FollowedLists/FollowedEntitiesList.esm.js +7 -1
  78. package/dist/components/FollowedLists/FollowedEntitiesList.esm.js.map +1 -1
  79. package/dist/components/FollowedLists/FollowedTagsList.esm.js +7 -1
  80. package/dist/components/FollowedLists/FollowedTagsList.esm.js.map +1 -1
  81. package/dist/components/HeaderImageInput/HeaderImageInput.esm.js +5 -1
  82. package/dist/components/HeaderImageInput/HeaderImageInput.esm.js.map +1 -1
  83. package/dist/components/HomePageCards/ImpactCard.esm.js +6 -1
  84. package/dist/components/HomePageCards/ImpactCard.esm.js.map +1 -1
  85. package/dist/components/HomePageCards/PostsCard.esm.js +8 -3
  86. package/dist/components/HomePageCards/PostsCard.esm.js.map +1 -1
  87. package/dist/components/LeftMenu/LeftMenu.esm.js +11 -3
  88. package/dist/components/LeftMenu/LeftMenu.esm.js.map +1 -1
  89. package/dist/components/Links/Links.esm.js +5 -1
  90. package/dist/components/Links/Links.esm.js.map +1 -1
  91. package/dist/components/MarkdownEditor/MarkdownEditor.esm.js.map +1 -1
  92. package/dist/components/MarkdownRenderer/MarkdownRenderer.esm.js +1 -1
  93. package/dist/components/MarkdownRenderer/MarkdownRenderer.esm.js.map +1 -1
  94. package/dist/components/PostAnonymouslyCheckbox/PostAnonymouslyCheckbox.esm.js +6 -1
  95. package/dist/components/PostAnonymouslyCheckbox/PostAnonymouslyCheckbox.esm.js.map +1 -1
  96. package/dist/components/PostForm/EntitiesInput.esm.js +5 -1
  97. package/dist/components/PostForm/EntitiesInput.esm.js.map +1 -1
  98. package/dist/components/PostForm/PostForm.esm.js +42 -5
  99. package/dist/components/PostForm/PostForm.esm.js.map +1 -1
  100. package/dist/components/PostForm/TagInput.esm.js +5 -2
  101. package/dist/components/PostForm/TagInput.esm.js.map +1 -1
  102. package/dist/components/PostHighlightList/PostHighlightList.esm.js +5 -1
  103. package/dist/components/PostHighlightList/PostHighlightList.esm.js.map +1 -1
  104. package/dist/components/PostsContainer/NoPostsCard.esm.js +6 -1
  105. package/dist/components/PostsContainer/NoPostsCard.esm.js.map +1 -1
  106. package/dist/components/PostsContainer/PostList.esm.js +16 -38
  107. package/dist/components/PostsContainer/PostList.esm.js.map +1 -1
  108. package/dist/components/PostsContainer/PostListItem.esm.js +6 -1
  109. package/dist/components/PostsContainer/PostListItem.esm.js.map +1 -1
  110. package/dist/components/PostsContainer/PostsContainer.esm.js +6 -2
  111. package/dist/components/PostsContainer/PostsContainer.esm.js.map +1 -1
  112. package/dist/components/PostsGrid/PostsGrid.esm.js +11 -3
  113. package/dist/components/PostsGrid/PostsGrid.esm.js.map +1 -1
  114. package/dist/components/PostsGrid/PostsGridContent.esm.js +23 -12
  115. package/dist/components/PostsGrid/PostsGridContent.esm.js.map +1 -1
  116. package/dist/components/PostsGrid/PostsGridItem.esm.js +6 -1
  117. package/dist/components/PostsGrid/PostsGridItem.esm.js.map +1 -1
  118. package/dist/components/QetaPagination/QetaPagination.esm.js +55 -0
  119. package/dist/components/QetaPagination/QetaPagination.esm.js.map +1 -0
  120. package/dist/components/QuestionCard/QuestionCard.esm.js +5 -1
  121. package/dist/components/QuestionCard/QuestionCard.esm.js.map +1 -1
  122. package/dist/components/QuestionsTable/QuestionsTable.esm.js +6 -1
  123. package/dist/components/QuestionsTable/QuestionsTable.esm.js.map +1 -1
  124. package/dist/components/SelectTemplateList/SelectTemplateList.esm.js +48 -0
  125. package/dist/components/SelectTemplateList/SelectTemplateList.esm.js.map +1 -0
  126. package/dist/components/StatsChart/StatsChart.esm.js +37 -13
  127. package/dist/components/StatsChart/StatsChart.esm.js.map +1 -1
  128. package/dist/components/StatsChart/util.esm.js +9 -0
  129. package/dist/components/StatsChart/util.esm.js.map +1 -0
  130. package/dist/components/SummaryStatsGrid/SummaryStatsGrid.esm.js +25 -1
  131. package/dist/components/SummaryStatsGrid/SummaryStatsGrid.esm.js.map +1 -1
  132. package/dist/components/TagsAndEntities/CollectionChip.esm.js +85 -0
  133. package/dist/components/TagsAndEntities/CollectionChip.esm.js.map +1 -0
  134. package/dist/components/TagsAndEntities/EntityChip.esm.js +5 -1
  135. package/dist/components/TagsAndEntities/EntityChip.esm.js.map +1 -1
  136. package/dist/components/TagsAndEntities/TagChip.esm.js +5 -1
  137. package/dist/components/TagsAndEntities/TagChip.esm.js.map +1 -1
  138. package/dist/components/TagsAndEntities/TagsAndEntities.esm.js +3 -0
  139. package/dist/components/TagsAndEntities/TagsAndEntities.esm.js.map +1 -1
  140. package/dist/components/TagsGrid/EditTagModal.esm.js +4 -1
  141. package/dist/components/TagsGrid/EditTagModal.esm.js.map +1 -1
  142. package/dist/components/TagsGrid/NoTagsCard.esm.js +25 -0
  143. package/dist/components/TagsGrid/NoTagsCard.esm.js.map +1 -0
  144. package/dist/components/TagsGrid/TagGridItem.esm.js +6 -1
  145. package/dist/components/TagsGrid/TagGridItem.esm.js.map +1 -1
  146. package/dist/components/TagsGrid/TagsGrid.esm.js +68 -22
  147. package/dist/components/TagsGrid/TagsGrid.esm.js.map +1 -1
  148. package/dist/components/TagsGrid/TagsGridContent.esm.js +31 -0
  149. package/dist/components/TagsGrid/TagsGridContent.esm.js.map +1 -0
  150. package/dist/components/TemplateList/TemplateForm.esm.js +207 -0
  151. package/dist/components/TemplateList/TemplateForm.esm.js.map +1 -0
  152. package/dist/components/TemplateList/TemplateList.esm.js +105 -0
  153. package/dist/components/TemplateList/TemplateList.esm.js.map +1 -0
  154. package/dist/components/TopRankingUsersCard/TopRankingUsersCard.esm.js +6 -1
  155. package/dist/components/TopRankingUsersCard/TopRankingUsersCard.esm.js.map +1 -1
  156. package/dist/components/UsersGrid/NoUsersCard.esm.js +25 -0
  157. package/dist/components/UsersGrid/NoUsersCard.esm.js.map +1 -0
  158. package/dist/components/UsersGrid/UsersGrid.esm.js +53 -19
  159. package/dist/components/UsersGrid/UsersGrid.esm.js.map +1 -1
  160. package/dist/components/UsersGrid/UsersGridContent.esm.js +31 -0
  161. package/dist/components/UsersGrid/UsersGridContent.esm.js.map +1 -0
  162. package/dist/components/UsersGrid/UsersGridItem.esm.js +7 -1
  163. package/dist/components/UsersGrid/UsersGridItem.esm.js.map +1 -1
  164. package/dist/hooks/useBasePath.esm.js +12 -0
  165. package/dist/hooks/useBasePath.esm.js.map +1 -0
  166. package/dist/hooks/useBaseUrl.esm.js +13 -0
  167. package/dist/hooks/useBaseUrl.esm.js.map +1 -0
  168. package/dist/hooks/useCollectionsFollow.esm.js +59 -0
  169. package/dist/hooks/useCollectionsFollow.esm.js.map +1 -0
  170. package/dist/hooks/useEntityAuthor.esm.js +90 -0
  171. package/dist/hooks/useEntityAuthor.esm.js.map +1 -0
  172. package/dist/hooks/useEntityFollow.esm.js +49 -0
  173. package/dist/hooks/useEntityFollow.esm.js.map +1 -0
  174. package/dist/hooks/useEntityQueryParameter.esm.js +14 -0
  175. package/dist/hooks/useEntityQueryParameter.esm.js.map +1 -0
  176. package/dist/hooks/useFormStyles.esm.js +26 -0
  177. package/dist/hooks/useFormStyles.esm.js.map +1 -0
  178. package/dist/hooks/useIdentityApi.esm.js +12 -0
  179. package/dist/hooks/useIdentityApi.esm.js.map +1 -0
  180. package/dist/hooks/useIsDarkTheme.esm.js +12 -0
  181. package/dist/hooks/useIsDarkTheme.esm.js.map +1 -0
  182. package/dist/hooks/useIsModerator.esm.js +23 -0
  183. package/dist/hooks/useIsModerator.esm.js.map +1 -0
  184. package/dist/hooks/usePaginatedPosts.esm.js +176 -0
  185. package/dist/hooks/usePaginatedPosts.esm.js.map +1 -0
  186. package/dist/hooks/useQetaApi.esm.js +13 -0
  187. package/dist/hooks/useQetaApi.esm.js.map +1 -0
  188. package/dist/hooks/useStyles.esm.js +141 -0
  189. package/dist/hooks/useStyles.esm.js.map +1 -0
  190. package/dist/hooks/useTagsFollow.esm.js +53 -0
  191. package/dist/hooks/useTagsFollow.esm.js.map +1 -0
  192. package/dist/hooks/useTranslation.esm.js +9 -0
  193. package/dist/hooks/useTranslation.esm.js.map +1 -0
  194. package/dist/hooks/useUserFollow.esm.js +53 -0
  195. package/dist/hooks/useUserFollow.esm.js.map +1 -0
  196. package/dist/hooks/useVoting.esm.js +140 -0
  197. package/dist/hooks/useVoting.esm.js.map +1 -0
  198. package/dist/index.d.ts +402 -306
  199. package/dist/index.esm.js +14 -2
  200. package/dist/index.esm.js.map +1 -1
  201. package/dist/routes.esm.js +6 -1
  202. package/dist/routes.esm.js.map +1 -1
  203. package/dist/translation.esm.js +63 -4
  204. package/dist/translation.esm.js.map +1 -1
  205. package/package.json +5 -2
  206. package/dist/utils/hooks.esm.js +0 -701
  207. package/dist/utils/hooks.esm.js.map +0 -1
@@ -0,0 +1,140 @@
1
+ import React, { useState, useEffect } from 'react';
2
+ import { useAnalytics, useApi } from '@backstage/core-plugin-api';
3
+ import { qetaApiRef } from '../api.esm.js';
4
+ import { useTranslation } from './useTranslation.esm.js';
5
+ import { useSignal } from '@backstage/plugin-signals-react';
6
+
7
+ function useVoting(resp) {
8
+ const [entity, setEntity] = React.useState(
9
+ resp
10
+ );
11
+ const [ownVote, setOwnVote] = React.useState(entity.ownVote ?? 0);
12
+ const [correctAnswer, setCorrectAnswer] = useState(
13
+ "postId" in entity ? entity.correct : false
14
+ );
15
+ const [score, setScore] = useState(entity.score);
16
+ const analytics = useAnalytics();
17
+ const qetaApi = useApi(qetaApiRef);
18
+ const { t } = useTranslation();
19
+ const isQuestion = "title" in entity;
20
+ const own = entity.own ?? false;
21
+ const { lastSignal } = useSignal(
22
+ isQuestion ? `qeta:question_${entity.id}` : `qeta:answer_${entity.id}`
23
+ );
24
+ useEffect(() => {
25
+ if (entity) {
26
+ setScore(entity.score);
27
+ }
28
+ }, [entity]);
29
+ useEffect(() => {
30
+ if (lastSignal?.type === "post_stats" || lastSignal?.type === "answer_stats") {
31
+ setCorrectAnswer(lastSignal.correctAnswer);
32
+ setScore(lastSignal.score);
33
+ }
34
+ }, [lastSignal]);
35
+ const deletePostVote = (id) => {
36
+ qetaApi.deletePostVote(id).then((response) => {
37
+ setOwnVote(0);
38
+ analytics.captureEvent("vote", "question", { value: 0 });
39
+ setEntity(response);
40
+ });
41
+ };
42
+ const deleteAnswerVote = (postId, id) => {
43
+ qetaApi.deleteAnswerVote(postId, id).then((response) => {
44
+ setOwnVote(0);
45
+ analytics.captureEvent("vote", "answer", { value: 0 });
46
+ setEntity(response);
47
+ });
48
+ };
49
+ const voteUp = () => {
50
+ if (isQuestion) {
51
+ if (ownVote > 0) {
52
+ deletePostVote(entity.id);
53
+ return;
54
+ }
55
+ qetaApi.votePostUp(entity.id).then((response) => {
56
+ setOwnVote(1);
57
+ analytics.captureEvent("vote", "question", { value: 1 });
58
+ setEntity(response);
59
+ });
60
+ } else if ("postId" in entity) {
61
+ if (ownVote > 0) {
62
+ deleteAnswerVote(entity.postId, entity.id);
63
+ return;
64
+ }
65
+ qetaApi.voteAnswerUp(entity.postId, entity.id).then((response) => {
66
+ setOwnVote(1);
67
+ analytics.captureEvent("vote", "answer", { value: 1 });
68
+ setEntity(response);
69
+ });
70
+ }
71
+ };
72
+ const voteDown = () => {
73
+ if (isQuestion) {
74
+ if (ownVote < 0) {
75
+ deletePostVote(entity.id);
76
+ return;
77
+ }
78
+ qetaApi.votePostDown(entity.id).then((response) => {
79
+ setOwnVote(-1);
80
+ analytics.captureEvent("vote", "question", { value: -1 });
81
+ setEntity(response);
82
+ });
83
+ } else if ("postId" in entity) {
84
+ if (ownVote < 0) {
85
+ deleteAnswerVote(entity.postId, entity.id);
86
+ return;
87
+ }
88
+ qetaApi.voteAnswerDown(entity.postId, entity.id).then((response) => {
89
+ setOwnVote(-1);
90
+ analytics.captureEvent("vote", "answer", { value: -1 });
91
+ setEntity(response);
92
+ });
93
+ }
94
+ };
95
+ let correctTooltip = correctAnswer ? t("voteButtons.answer.markIncorrect") : t("voteButtons.answer.markCorrect");
96
+ if (!entity?.own) {
97
+ correctTooltip = correctAnswer ? t("voteButtons.answer.marked") : "";
98
+ }
99
+ let voteUpTooltip = isQuestion ? t("voteButtons.question.good") : t("voteButtons.answer.good");
100
+ if (own) {
101
+ voteUpTooltip = isQuestion ? t("voteButtons.question.own") : t("voteButtons.answer.own");
102
+ }
103
+ let voteDownTooltip = isQuestion ? t("voteButtons.question.bad") : t("voteButtons.answer.bad");
104
+ if (own) {
105
+ voteDownTooltip = voteUpTooltip;
106
+ }
107
+ const toggleCorrectAnswer = () => {
108
+ if (!("postId" in entity)) {
109
+ return;
110
+ }
111
+ if (correctAnswer) {
112
+ qetaApi.markAnswerIncorrect(entity.postId, entity.id).then((response) => {
113
+ if (response) {
114
+ setCorrectAnswer(false);
115
+ }
116
+ });
117
+ } else {
118
+ qetaApi.markAnswerCorrect(entity.postId, entity.id).then((response) => {
119
+ if (response) {
120
+ setCorrectAnswer(true);
121
+ }
122
+ });
123
+ }
124
+ };
125
+ return {
126
+ entity,
127
+ ownVote,
128
+ correctAnswer,
129
+ score,
130
+ voteUp,
131
+ voteDown,
132
+ toggleCorrectAnswer,
133
+ voteUpTooltip,
134
+ voteDownTooltip,
135
+ correctTooltip
136
+ };
137
+ }
138
+
139
+ export { useVoting };
140
+ //# sourceMappingURL=useVoting.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useVoting.esm.js","sources":["../../src/hooks/useVoting.ts"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport { useAnalytics, useApi } from '@backstage/core-plugin-api';\nimport { qetaApiRef } from '../api';\nimport { useTranslation } from './useTranslation';\nimport { useSignal } from '@backstage/plugin-signals-react';\nimport {\n AnswerResponse,\n PostResponse,\n QetaSignal,\n} from '@drodil/backstage-plugin-qeta-common';\n\nexport function useVoting(resp: PostResponse | AnswerResponse) {\n const [entity, setEntity] = React.useState<PostResponse | AnswerResponse>(\n resp,\n );\n const [ownVote, setOwnVote] = React.useState(entity.ownVote ?? 0);\n const [correctAnswer, setCorrectAnswer] = useState(\n 'postId' in entity ? entity.correct : false,\n );\n const [score, setScore] = useState(entity.score);\n const analytics = useAnalytics();\n const qetaApi = useApi(qetaApiRef);\n const { t } = useTranslation();\n\n const isQuestion = 'title' in entity;\n const own = entity.own ?? false;\n\n const { lastSignal } = useSignal<QetaSignal>(\n isQuestion ? `qeta:question_${entity.id}` : `qeta:answer_${entity.id}`,\n );\n\n useEffect(() => {\n if (entity) {\n setScore(entity.score);\n }\n }, [entity]);\n\n useEffect(() => {\n if (\n lastSignal?.type === 'post_stats' ||\n lastSignal?.type === 'answer_stats'\n ) {\n setCorrectAnswer(lastSignal.correctAnswer);\n setScore(lastSignal.score);\n }\n }, [lastSignal]);\n\n const deletePostVote = (id: number) => {\n qetaApi.deletePostVote(id).then(response => {\n setOwnVote(0);\n analytics.captureEvent('vote', 'question', { value: 0 });\n setEntity(response);\n });\n };\n\n const deleteAnswerVote = (postId: number, id: number) => {\n qetaApi.deleteAnswerVote(postId, id).then(response => {\n setOwnVote(0);\n analytics.captureEvent('vote', 'answer', { value: 0 });\n setEntity(response);\n });\n };\n\n const voteUp = () => {\n if (isQuestion) {\n if (ownVote > 0) {\n deletePostVote(entity.id);\n return;\n }\n qetaApi.votePostUp(entity.id).then(response => {\n setOwnVote(1);\n analytics.captureEvent('vote', 'question', { value: 1 });\n setEntity(response);\n });\n } else if ('postId' in entity) {\n if (ownVote > 0) {\n deleteAnswerVote(entity.postId, entity.id);\n return;\n }\n qetaApi.voteAnswerUp(entity.postId, entity.id).then(response => {\n setOwnVote(1);\n analytics.captureEvent('vote', 'answer', { value: 1 });\n setEntity(response);\n });\n }\n };\n\n const voteDown = () => {\n if (isQuestion) {\n if (ownVote < 0) {\n deletePostVote(entity.id);\n return;\n }\n qetaApi.votePostDown(entity.id).then(response => {\n setOwnVote(-1);\n analytics.captureEvent('vote', 'question', { value: -1 });\n setEntity(response);\n });\n } else if ('postId' in entity) {\n if (ownVote < 0) {\n deleteAnswerVote(entity.postId, entity.id);\n return;\n }\n qetaApi.voteAnswerDown(entity.postId, entity.id).then(response => {\n setOwnVote(-1);\n analytics.captureEvent('vote', 'answer', { value: -1 });\n setEntity(response);\n });\n }\n };\n\n let correctTooltip: string = correctAnswer\n ? t('voteButtons.answer.markIncorrect')\n : t('voteButtons.answer.markCorrect');\n if (!entity?.own) {\n correctTooltip = correctAnswer ? t('voteButtons.answer.marked') : '';\n }\n\n let voteUpTooltip: string = isQuestion\n ? t('voteButtons.question.good')\n : t('voteButtons.answer.good');\n if (own) {\n voteUpTooltip = isQuestion\n ? t('voteButtons.question.own')\n : t('voteButtons.answer.own');\n }\n\n let voteDownTooltip: string = isQuestion\n ? t('voteButtons.question.bad')\n : t('voteButtons.answer.bad');\n if (own) {\n voteDownTooltip = voteUpTooltip;\n }\n\n const toggleCorrectAnswer = () => {\n if (!('postId' in entity)) {\n return;\n }\n if (correctAnswer) {\n qetaApi.markAnswerIncorrect(entity.postId, entity.id).then(response => {\n if (response) {\n setCorrectAnswer(false);\n }\n });\n } else {\n qetaApi.markAnswerCorrect(entity.postId, entity.id).then(response => {\n if (response) {\n setCorrectAnswer(true);\n }\n });\n }\n };\n\n return {\n entity,\n ownVote,\n correctAnswer,\n score,\n voteUp,\n voteDown,\n toggleCorrectAnswer,\n voteUpTooltip,\n voteDownTooltip,\n correctTooltip,\n };\n}\n"],"names":[],"mappings":"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"}