[feature] Add ListenBrainz functionality on the web view (#4184)

This pull request adds a very simple ad-hoc ListenBrainz widget to the frontend web view, with progressive enhancement (in all fail states it just falls back to rendering the field as normal).

This necessitated adding the ListenBrainz API endpoint to the `connect-src` part of our Content-Security-Policy header. We might want to tweak this to only add that endpoint to `connect-src` for profiles, and then only for profiles that include a ListenBrainz field, but this would require significant dicking about with the middleware, and checks inside the app logic, such that it might not be worthwhile (after all, we control all the scripts right now anyway).

Reviewed-on: https://codeberg.org/superseriousbusiness/gotosocial/pulls/4184
Co-authored-by: tobi <tobi.smethurst@protonmail.com>
Co-committed-by: tobi <tobi.smethurst@protonmail.com>
This commit is contained in:
tobi
2025-05-22 12:34:39 +02:00
committed by kim
parent d5c9c4adc1
commit 00e58c60cd
6 changed files with 200 additions and 8 deletions

View File

@ -98,6 +98,19 @@ Some examples:
- Pronouns : she/her
- My other account : @someone@somewhere.com
!!! Tip "ListenBrainz integration"
If you set the key of one of your profile fields to "ListenBrainz" and the value to the URL of your ListenBrainz profile (something like `https://listenbrainz.org/user/your_listenbrainz_username/` -- the slash at the end is important!), then the field will be replaced on the web frontend with whatever you're currently listening to!
This only applies to the web view of your GoToSocial profile, for visitors with Javascript enabled; the "currently listening" value doesn't federate to other servers, only your ListenBrainz URL.
How to set it:
![Field filled with a ListenBrainz URL.](../public/user-settings-listenbrainz-fields.png)
How it looks on the web when you're listening to something:
![The "Now listening to" widget on the web view.](../public/user-settings-listenbrainz.png)
### Visibility and Privacy
#### Visibility Level of Posts to Show on Your Profile