diff --git a/approot/messages.xml b/approot/messages.xml
index 28883d34..4793931f 100644
--- a/approot/messages.xml
+++ b/approot/messages.xml
@@ -240,10 +240,14 @@
Audio
These audio settings are local to your browser!
+Internal
+ListenBrainz
+ListenBrainz API token
Change password
Default transcode bitrate
Default transcode format
Cannot save using a demo account!
+Feedback
Bad password
Old password must be filled in
@@ -255,10 +259,7 @@
ReplayGain preamp
ReplayGain preamp (if no info)
Scrobbling
-Scrobbler
-Internal
-ListenBrainz
-ListenBrainz token
+Services
Settings
Artist list mode
All artists
diff --git a/approot/messages_fr.xml b/approot/messages_fr.xml
index a5f2e255..d7ace5e6 100644
--- a/approot/messages_fr.xml
+++ b/approot/messages_fr.xml
@@ -240,10 +240,14 @@
Audio
Ces paramètres audio sont locaux à votre navigateur !
+Interne
+ListenBrainz
+Jeton d'API ListenBrainz
Changement de mot de passe
Bitrate par defaut du transcodage
Format par defaut du transcodage
Impossible de sauvegarder en utilisant un compte de démo !
+Feedback
Mauvais mot de passe
L'ancien mot de passe doit être renseigné
@@ -255,10 +259,7 @@
Pre-amplification ReplayGain
Pre-amplification ReplayGain (si pas d'info)
Scrobbling
-Scrobbler
-Interne
-ListenBrainz
-Jeton ListenBrainz
+Services
Paramètres
Mode de listage des artistes
Tous les artistes
diff --git a/approot/messages_it.xml b/approot/messages_it.xml
index 7849ef42..67ebf67e 100644
--- a/approot/messages_it.xml
+++ b/approot/messages_it.xml
@@ -9,7 +9,7 @@
Annulla
Tags
Crea
-Elimina
+Elimina
Annulla
Modifica
Caricamento...
@@ -240,10 +240,14 @@
Audio
Queste impostazioni sono salvate localmente su questo dispositivo!
+
+
+
Cambia password
Non posso salvare le impostazioni utilizzando l'account demo!
+
Password errata
Devi inserire la password attuale
@@ -257,9 +261,6 @@
-
-
-
Modalità di elencazione artisti
Tutti gli artisti
Artisti album
diff --git a/approot/messages_zh.xml b/approot/messages_zh.xml
index c1eca28c..317f85ea 100644
--- a/approot/messages_zh.xml
+++ b/approot/messages_zh.xml
@@ -240,10 +240,14 @@
音频
这些音频设置仅保存在您的本地浏览器!
+
+
+
更改密码
使用演示账号时不能保存!
+
无效密码
必须填写旧密码
@@ -257,9 +261,6 @@
-
-
-
歌手列表模式
所有歌手
专辑歌手
diff --git a/approot/settings.xml b/approot/settings.xml
index c15db564..507ec686 100644
--- a/approot/settings.xml
+++ b/approot/settings.xml
@@ -28,9 +28,9 @@
-
${transcode-bitrate class="form-control"}
kbps
@@ -105,19 +105,28 @@
${}
-
+
-
- ${tr:Lms.Settings.scrobbling.scrobbler}
+
+ ${tr:Lms.Settings.scrobbling}
- ${scrobbler class="form-control"}
+ ${scrobbling-backend class="form-control"}
- ${scrobbler-info class="help-block"}
+ ${scrobbling-backend-info class="help-block"}
+
+ ${tr:Lms.Settings.feedback}
+
+ ${feedback-backend class="form-control"}
+
+ ${feedback-backend-info class="help-block"}
+
+
+
- ${tr:Lms.Settings.scrobbling.listenbrainz-token}
+ ${tr:Lms.Settings.backend.listenbrainz-token}
${listenbrainz-token class="form-control"}
diff --git a/src/libs/services/CMakeLists.txt b/src/libs/services/CMakeLists.txt
index fd4d3160..70f360ed 100644
--- a/src/libs/services/CMakeLists.txt
+++ b/src/libs/services/CMakeLists.txt
@@ -1,6 +1,7 @@
add_subdirectory(auth)
add_subdirectory(cover)
add_subdirectory(database)
+add_subdirectory(feedback)
add_subdirectory(recommendation)
add_subdirectory(scanner)
add_subdirectory(scrobbling)
diff --git a/src/libs/services/database/impl/Artist.cpp b/src/libs/services/database/impl/Artist.cpp
index 1bbfbfeb..a1b33294 100644
--- a/src/libs/services/database/impl/Artist.cpp
+++ b/src/libs/services/database/impl/Artist.cpp
@@ -133,11 +133,11 @@ createQuery(Session& session, const Artist::FindParameters& params)
if (params.starringUser.isValid())
{
- assert(params.scrobbler);
+ assert(params.feedbackBackend);
query.join("starred_artist s_a ON s_a.artist_id = a.id")
.where("s_a.user_id = ?").bind(params.starringUser)
- .where("s_a.scrobbler = ?").bind(*params.scrobbler)
- .where("s_a.scrobbling_state <> ?").bind(ScrobblingState::PendingRemove);
+ .where("s_a.backend = ?").bind(*params.feedbackBackend)
+ .where("s_a.sync_state <> ?").bind(SyncState::PendingRemove);
}
if (!params.clusters.empty())
diff --git a/src/libs/services/database/impl/Listen.cpp b/src/libs/services/database/impl/Listen.cpp
index d77ef827..c1462384 100644
--- a/src/libs/services/database/impl/Listen.cpp
+++ b/src/libs/services/database/impl/Listen.cpp
@@ -29,14 +29,14 @@ namespace
{
using namespace Database;
- Wt::Dbo::Query
createArtistsQuery(Wt::Dbo::Session& session, UserId userId, Scrobbler scrobbler, const std::vector& clusterIds, std::optional linkType)
+ Wt::Dbo::Query createArtistsQuery(Wt::Dbo::Session& session, UserId userId, ScrobblingBackend backend, const std::vector& clusterIds, std::optional linkType)
{
auto query{ session.query("SELECT a.id from artist a")
.join("track t ON t.id = t_a_l.track_id")
.join("track_artist_link t_a_l ON t_a_l.artist_id = a.id")
.join("listen l ON l.track_id = t.id")
.where("l.user_id = ?").bind(userId)
- .where("l.scrobbler = ?").bind(scrobbler) };
+ .where("l.backend = ?").bind(backend) };
if (linkType)
query.where("t_a_l.type = ?").bind(*linkType);
@@ -66,13 +66,13 @@ namespace
return query;
}
- Wt::Dbo::Query createReleasesQuery(Wt::Dbo::Session& session, UserId userId, Scrobbler scrobbler, const std::vector& clusterIds)
+ Wt::Dbo::Query createReleasesQuery(Wt::Dbo::Session& session, UserId userId, ScrobblingBackend backend, const std::vector& clusterIds)
{
auto query{ session.query("SELECT r.id from release r")
.join("track t ON t.release_id = r.id")
.join("listen l ON l.track_id = t.id")
.where("l.user_id = ?").bind(userId)
- .where("l.scrobbler = ?").bind(scrobbler) };
+ .where("l.backend = ?").bind(backend) };
if (!clusterIds.empty())
{
@@ -98,12 +98,12 @@ namespace
return query;
}
- Wt::Dbo::Query createTracksQuery(Wt::Dbo::Session& session, UserId userId, Scrobbler scrobbler, const std::vector& clusterIds)
+ Wt::Dbo::Query createTracksQuery(Wt::Dbo::Session& session, UserId userId, ScrobblingBackend backend, const std::vector& clusterIds)
{
auto query{ session.query("SELECT t.id from track t")
.join("listen l ON l.track_id = t.id")
.where("l.user_id = ?").bind(userId)
- .where("l.scrobbler = ?").bind(scrobbler) };
+ .where("l.backend = ?").bind(backend) };
if (!clusterIds.empty())
{
@@ -131,16 +131,16 @@ namespace
namespace Database
{
- Listen::Listen(ObjectPtr user, ObjectPtr