diff --git a/src/components/MetaPreview/MetaPreview.js b/src/components/MetaPreview/MetaPreview.js
index c0e9fb165..b1124e9ab 100644
--- a/src/components/MetaPreview/MetaPreview.js
+++ b/src/components/MetaPreview/MetaPreview.js
@@ -17,6 +17,7 @@ const ActionButton = require('./ActionButton');
const MetaLinks = require('./MetaLinks');
const MetaPreviewPlaceholder = require('./MetaPreviewPlaceholder');
const styles = require('./styles');
+const { default: useRating } = require('./useRating');
const ALLOWED_LINK_REDIRECTS = [
routesRegexp.search.regexp,
@@ -24,8 +25,9 @@ const ALLOWED_LINK_REDIRECTS = [
routesRegexp.metadetails.regexp
];
-const MetaPreview = React.forwardRef(({ className, compact, name, logo, background, runtime, releaseInfo, released, description, deepLinks, links, trailerStreams, inLibrary, toggleInLibrary }, ref) => {
+const MetaPreview = React.forwardRef(({ className, compact, name, logo, background, runtime, releaseInfo, released, description, deepLinks, links, trailerStreams, inLibrary, toggleInLibrary, metaDetails }, ref) => {
const { t } = useTranslation();
+ const { onLiked, onLoved, like } = useRating(metaDetails);
const [shareModalOpen, openShareModal, closeShareModal] = useBinaryState(false);
const linksGroups = React.useMemo(() => {
return Array.isArray(links) ?
@@ -220,6 +222,30 @@ const MetaPreview = React.forwardRef(({ className, compact, name, logo, backgrou
:
null
}
+ {
+ !compact ?
+
+ :
+ null
+ }
+ {
+ !compact ?
+
+ :
+ null
+ }
{
typeof showHref === 'string' && compact ?
{
+ const { core } = useServices();
+
+ const like = useMemo(() => {
+ return metaDetails.like !== null && metaDetails.like.type === 'Ready' ? metaDetails.like.content : null;
+ }, [metaDetails.like]);
+ const setRating = useCallback(
+ (status: string) => {
+ if (!metaDetails.metaItem || !metaDetails.metaItem.content) {
+ return;
+ }
+ core.transport.dispatch({
+ action: 'MetaDetails',
+ args: {
+ action: 'Rate',
+ args: {
+ id: metaDetails?.metaItem.content.content?.id,
+ status: status,
+ },
+ },
+ });
+ },
+ [metaDetails],
+ );
+
+ const onLiked = () => {
+ setRating(like === 'liked' ? null : 'liked');
+ };
+
+ const onLoved = () => {
+ setRating(like === 'loved' ? null : 'loved');
+ };
+
+ return {
+ onLiked,
+ onLoved,
+ like,
+ };
+};
+
+export default useRating;
diff --git a/src/routes/MetaDetails/MetaDetails.js b/src/routes/MetaDetails/MetaDetails.js
index 8a50b59c1..bb8789be0 100644
--- a/src/routes/MetaDetails/MetaDetails.js
+++ b/src/routes/MetaDetails/MetaDetails.js
@@ -166,6 +166,7 @@ const MetaDetails = ({ urlParams, queryParams }) => {
trailerStreams={metaDetails.metaItem.content.content.trailerStreams}
inLibrary={metaDetails.metaItem.content.content.inLibrary}
toggleInLibrary={metaDetails.metaItem.content.content.inLibrary ? removeFromLibrary : addToLibrary}
+ metaDetails={metaDetails}
/>
}
diff --git a/src/types/models/MetaDetails.d.ts b/src/types/models/MetaDetails.d.ts
index c7eeafb1b..df615da3e 100644
--- a/src/types/models/MetaDetails.d.ts
+++ b/src/types/models/MetaDetails.d.ts
@@ -24,4 +24,6 @@ type MetaDetails = {
content: Loadable
}[],
title: string | null,
+ like: Loadable | null,
+ sentLike: Loadable | null
};