Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import { t } from "ttag";
import _ from "underscore";
import { ModerationReviewApi } from "metabase/services";
import { ACTIONS } from "./constants";
export function verifyItem({ text, itemId, itemType }) {
return ModerationReviewApi.create({
status: "verified",
moderated_item_id: itemId,
moderated_item_type: itemType,
text,
});
}
export function removeReview({ itemId, itemType }) {
return ModerationReviewApi.create({
status: null,
moderated_item_id: itemId,
moderated_item_type: itemType,
});
}
export function getVerifiedIcon() {
const { icon, color } = ACTIONS["verified"];
return { icon, iconColor: color };
}
export function getIconForReview(review) {
if (review && review.status !== null) {
const { status } = review;
const { icon, color } = ACTIONS[status] || {};
return { icon, iconColor: color };
}
return {};
}
export function getTextForReviewBanner(
moderationReview,
moderator,
currentUser,
) {
const moderatorName = getModeratorDisplayName(moderator, currentUser);
const { status } = moderationReview;
if (status === "verified") {
const bannerText = t`${moderatorName} verified this`;
const tooltipText = t`Remove verification`;
return { bannerText, tooltipText };
}
return {};
}
function getModeratorDisplayName(user, currentUser) {
const { id: userId, display_name } = user || {};
const { id: currentUserId } = currentUser || {};
if (currentUserId != null && userId === currentUserId) {
return t`You`;
} else if (userId != null) {
return display_name;
} else {
return t`A moderator`;
}
}
export function isItemVerified(review) {
return review != null && review.status === "verified";
}
export function getLatestModerationReview(reviews) {
const review = _.findWhere(reviews, {
most_recent: true,
});
// since we can't delete reviews, consider a most recent review with a status of null to mean there is no review
if (review && review.status !== null) {
return review;
}
}
export function getStatusIconForReviews(reviews) {
const review = getLatestModerationReview(reviews);
return getIconForReview(review);
}