diff --git a/src/data/data.js b/src/data/data.js
index 2c3fabf..309cd42 100644
--- a/src/data/data.js
+++ b/src/data/data.js
@@ -163,7 +163,7 @@ export const SONG_STYLE = [
description: "Pour un style exubérant ",
},
{
- title: "Melancholic",
+ title: "Mélancolique",
description: "ambiance mélancolique",
},
{
@@ -182,10 +182,6 @@ export const SONG_STYLE = [
title: "Mysterious",
description: "Pour un sentiment de mystère",
},
- {
- title: "Melancholic",
- description: "ambiance mélancolique",
- },
{
title: OTHER_STYLE_OPTION,
description: "Décris ton style personnalisé",
diff --git a/src/layouts/Page.js b/src/layouts/Page.js
index 1b67efd..687f6fc 100644
--- a/src/layouts/Page.js
+++ b/src/layouts/Page.js
@@ -46,6 +46,19 @@ export default ({
const computedWidth = width ?? (isWeb ? "60%" : "100%");
+ const shareButtonElement = (() => {
+ if (!shareBtn) return null;
+ if (typeof React?.isValidElement === "function") {
+ if (React.isValidElement(shareBtn)) {
+ return shareBtn;
+ }
+ }
+ if (typeof shareBtn === "object" && !Array.isArray(shareBtn)) {
+ return ;
+ }
+ return ;
+ })();
+
return (
{bottomStickyContent?.()}
- {(shareBtn || connect) && isWeb && (
+ {(shareButtonElement || connect) && isWeb && (
- {shareBtn && }
+ {shareButtonElement}
{connect && }
)}
diff --git a/src/screens/Studio/ChooseGenre.js b/src/screens/Studio/ChooseGenre.js
index 5847d75..00d5499 100644
--- a/src/screens/Studio/ChooseGenre.js
+++ b/src/screens/Studio/ChooseGenre.js
@@ -1,5 +1,5 @@
import { View } from "react-native";
-import React, { useState } from "react";
+import React, { useMemo, useState } from "react";
import CreateLyricsHeader from "../Writing/components/CreateLyricsHeader";
import { CHOOSE_GENRE } from "../../data/data";
import ItemContainer from "../../components/ItemContainer/ItemContainer";
@@ -7,6 +7,17 @@ import ListSelection from "../../components/ListSelection/ListSelection";
const ChooseGenre = ({ selected = [], setSelected }) => {
const [containerLayout, setContainerLayout] = useState(null);
+ const genreOptions = useMemo(() => {
+ const seen = new Set();
+ return (CHOOSE_GENRE ?? []).filter((item) => {
+ const title = item?.title;
+ if (!title) return true;
+ const key = title.trim().toLowerCase();
+ if (seen.has(key)) return false;
+ seen.add(key);
+ return true;
+ });
+ }, []);
// Selection handled by ListSelection
@@ -22,7 +33,7 @@ const ChooseGenre = ({ selected = [], setSelected }) => {
>
{
return musiclandShareUrl;
};
-export const createMusicSharePayload = ({
- projectId,
- title,
- artist,
-} = {}) => {
+export const createMusicSharePayload = ({ projectId, title, artist } = {}) => {
if (!projectId) return null;
const baseUrl = trimTrailingSlash(resolveBaseShareUrl());
+ if (!baseUrl) return null;
const shareUrl = `${baseUrl}/music/${projectId}`;
let shareMessage = musiclandShareMessage;