MapComplete/src/UI/Reviews/SingleReview.svelte

39 lines
1.2 KiB
Svelte
Raw Normal View History

2023-09-28 04:02:42 +02:00
<script lang="ts">
2023-09-28 23:50:27 +02:00
import { Review } from "mangrove-reviews-typescript"
import { Store } from "../../Logic/UIEventSource"
import StarsBar from "./StarsBar.svelte"
import Translations from "../i18n/Translations"
import Tr from "../Base/Tr.svelte"
2023-09-28 04:02:42 +02:00
2023-09-28 23:50:27 +02:00
export let review: Review & { madeByLoggedInUser: Store<boolean> }
let name = review.metadata.nickname
name ??= (review.metadata.given_name ?? "") + " " + (review.metadata.family_name ?? "").trim()
2023-09-28 04:02:42 +02:00
if (name.length === 0) {
2023-09-28 23:50:27 +02:00
name = "Anonymous"
2023-09-28 04:02:42 +02:00
}
2023-09-28 23:50:27 +02:00
let d = new Date()
d.setTime(review.iat * 1000)
let date = d.toDateString()
let byLoggedInUser = review.madeByLoggedInUser
2023-09-28 04:02:42 +02:00
</script>
2023-09-28 23:50:27 +02:00
<div class={"low-interaction rounded-lg p-1 px-2 " + ($byLoggedInUser ? "border-interactive" : "")}>
<div class="flex items-center justify-between">
<StarsBar score={review.rating} />
2023-09-28 04:02:42 +02:00
<div class="flex flex-wrap space-x-2">
<div class="font-bold">
{name}
</div>
2023-09-28 23:50:27 +02:00
<span class="subtle">
{date}
</span>
2023-09-28 04:02:42 +02:00
</div>
</div>
{#if review.opinion}
{review.opinion}
{/if}
{#if review.metadata.is_affiliated}
<Tr t={Translations.t.reviews.affiliated_reviewer_warning} />
{/if}
</div>