From e3f47a7bf7ef205309fd2c1bac2cc21be1a2b834 Mon Sep 17 00:00:00 2001
From: Damien Broqua <damien@freemiumplay.com>
Date: Mon, 5 Aug 2024 17:54:11 +0200
Subject: [PATCH] Set # for share on fediverse

---
 javascripts/mon-compte/ma-collection/details.js |  4 ++--
 src/libs/format.js                              | 17 +++++++++++++++++
 src/middleware/Albums.js                        |  6 ++++--
 src/middleware/Export.js                        |  4 ++--
 src/middleware/Wantlist.js                      |  7 +++++--
 views/pages/mon-compte/index.ejs                |  2 ++
 .../pages/mon-compte/ma-collection/details.ejs  |  2 ++
 7 files changed, 34 insertions(+), 8 deletions(-)

diff --git a/javascripts/mon-compte/ma-collection/details.js b/javascripts/mon-compte/ma-collection/details.js
index 09932ea..2297bdd 100644
--- a/javascripts/mon-compte/ma-collection/details.js
+++ b/javascripts/mon-compte/ma-collection/details.js
@@ -41,8 +41,8 @@ if (typeof item !== "undefined") {
                 this.shareMessageTransformed = message
                     .replaceAll("{artist}", this.item.artists[0].name)
                     .replaceAll("{format}", this.item.formats[0].name)
-                    .replaceAll("{genres}", this.item.genres.join())
-                    .replaceAll("{styles}", this.item.styles.join())
+                    .replaceAll("{genres}", this.item.genres.join(", "))
+                    .replaceAll("{styles}", this.item.styles.join(", "))
                     .replaceAll("{year}", this.item.year)
                     .replaceAll("{video}", video)
                     .replaceAll("{album}", this.item.title);
diff --git a/src/libs/format.js b/src/libs/format.js
index 14dfaf9..4d0da37 100644
--- a/src/libs/format.js
+++ b/src/libs/format.js
@@ -34,6 +34,23 @@ export const sendResponse = (req, res, data) => {
     }
 };
 
+export const setHashTags = (arr) => {
+    let hashTags = "";
+
+    for (let i = 0; i < arr.length; i += 1) {
+        let currentHash = `${hashTags ? ", " : ""} #`;
+        const currentItem = arr[i].split(" ");
+        for (let j = 0; j < currentItem.length; j += 1) {
+            currentHash +=
+                currentItem[j].toLowerCase().charAt(0).toUpperCase() +
+                currentItem[j].toLowerCase().slice(1);
+        }
+        hashTags += currentHash;
+    }
+
+    return hashTags;
+};
+
 export default (res, page) => {
     res.status(200).render("index", page.render());
 };
diff --git a/src/middleware/Albums.js b/src/middleware/Albums.js
index d3d11b6..3ac5565 100644
--- a/src/middleware/Albums.js
+++ b/src/middleware/Albums.js
@@ -13,6 +13,7 @@ import UsersModel from "../models/users";
 import ErrorEvent from "../libs/error";
 
 import { getAlbumDetails, getAllDistincts } from "../helpers";
+import { setHashTags } from "../libs/format";
 
 /**
  * Classe permettant la gestion des albums d'un utilisateur
@@ -86,8 +87,9 @@ class Albums extends Pages {
                 )
                     .replaceAll("{artist}", data.artists[0].name)
                     .replaceAll("{format}", data.formats[0].name)
-                    .replaceAll("{genres}", data.genres.join())
-                    .replaceAll("{styles}", data.styles.join())
+                    .replaceAll("{#genres}", setHashTags(data.genres))
+                    .replaceAll("{styles}", data.styles.join(", "))
+                    .replaceAll("{#styles}", setHashTags(data.styles))
                     .replaceAll("{year}", data.year)
                     .replaceAll("{video}", video)
                     .replaceAll("{album}", data.title)}
diff --git a/src/middleware/Export.js b/src/middleware/Export.js
index 513e440..de06604 100644
--- a/src/middleware/Export.js
+++ b/src/middleware/Export.js
@@ -123,8 +123,8 @@ class Export {
 
             ws.cell(currentRow, 1).string(artists_sort).style(style);
             ws.cell(currentRow, 2).string(title).style(style);
-            ws.cell(currentRow, 3).string(genres.join()).style(style);
-            ws.cell(currentRow, 4).string(styles.join()).style(style);
+            ws.cell(currentRow, 3).string(genres.join(", ")).style(style);
+            ws.cell(currentRow, 4).string(styles.join(", ")).style(style);
             if (country) {
                 ws.cell(currentRow, 5).string(country).style(style);
             }
diff --git a/src/middleware/Wantlist.js b/src/middleware/Wantlist.js
index fcdd2f3..0f51ec3 100644
--- a/src/middleware/Wantlist.js
+++ b/src/middleware/Wantlist.js
@@ -13,6 +13,7 @@ import UsersModel from "../models/users";
 import ErrorEvent from "../libs/error";
 
 import { getAlbumDetails, getAllDistincts } from "../helpers";
+import { setHashTags } from "../libs/format";
 
 /**
  * Classe permettant la gestion da la liste de souhaits d'un utilisateur
@@ -86,8 +87,10 @@ class Wantlist extends Pages {
                 )
                     .replaceAll("{artist}", data.artists[0].name)
                     .replaceAll("{format}", data.formats[0].name)
-                    .replaceAll("{genres}", data.genres.join())
-                    .replaceAll("{styles}", data.styles.join())
+                    .replaceAll("{genres}", data.genres.join(", "))
+                    .replaceAll("{#genres}", setHashTags(data.genres))
+                    .replaceAll("{styles}", data.styles.join(", "))
+                    .replaceAll("{#styles}", setHashTags(data.styles))
                     .replaceAll("{year}", data.year)
                     .replaceAll("{video}", video)
                     .replaceAll("{album}", data.title)}
diff --git a/views/pages/mon-compte/index.ejs b/views/pages/mon-compte/index.ejs
index 52cf376..db007e2 100644
--- a/views/pages/mon-compte/index.ejs
+++ b/views/pages/mon-compte/index.ejs
@@ -125,7 +125,9 @@
                                 <li>{year}, exemple: 1984</li>
                                 <li>{video}, exemple : https://www.youtube.com/watch?v=Qx0s8OqgBIw</li>
                                 <li>{genres}, exemple : Rock</li>
+                                <li>{#genres}, exemple : #rock</li>
                                 <li>{styles}, exemple : Hard Rock, Heavy Metal</li>
+                                <li>{#styles}, exemple : #hardRock, #heavyMetal</li>
                             </ul>
                         </small>
                     </div>
diff --git a/views/pages/mon-compte/ma-collection/details.ejs b/views/pages/mon-compte/ma-collection/details.ejs
index 5ea9036..df52758 100644
--- a/views/pages/mon-compte/ma-collection/details.ejs
+++ b/views/pages/mon-compte/ma-collection/details.ejs
@@ -80,7 +80,9 @@
                                 <li>{year}, exemple: 1984</li>
                                 <li>{video}, exemple : https://www.youtube.com/watch?v=Qx0s8OqgBIw</li>
                                 <li>{genres}, exemple : Rock</li>
+                                <li>{#genres}, exemple : #rock</li>
                                 <li>{styles}, exemple : Hard Rock, Heavy Metal</li>
+                                <li>{#styles}, exemple : #hardRock, #heavyMetal</li>
                             </ul>
                         </small>
                     </div>