From 8ac133027df7c630e2c4de2243dd7b6133fba94d Mon Sep 17 00:00:00 2001 From: Caio Cotts Date: Sun, 15 Sep 2024 14:45:00 -0400 Subject: [PATCH] Make the UI use the new ShareURL option --- server/serve_index.go | 1 + ui/src/config.js | 1 + ui/src/dialogs/ShareDialog.js | 4 ++-- ui/src/share/ShareEdit.js | 4 ++-- ui/src/share/ShareList.js | 6 +++--- ui/src/share/SharePlayer.js | 1 + ui/src/utils/urls.js | 20 +++++++++++++++----- 7 files changed, 25 insertions(+), 12 deletions(-) diff --git a/server/serve_index.go b/server/serve_index.go index f0b7c7560..77822961e 100644 --- a/server/serve_index.go +++ b/server/serve_index.go @@ -59,6 +59,7 @@ func serveIndex(ds model.DataStore, fs fs.FS, shareInfo *model.Share) http.Handl "devActivityPanel": conf.Server.DevActivityPanel, "enableUserEditing": conf.Server.EnableUserEditing, "enableSharing": conf.Server.EnableSharing, + "shareURL": conf.Server.ShareURL, "defaultDownloadableShare": conf.Server.DefaultDownloadableShare, "devSidebarPlaylists": conf.Server.DevSidebarPlaylists, "lastFMEnabled": conf.Server.LastFM.Enabled, diff --git a/ui/src/config.js b/ui/src/config.js index f2281fac2..21dc677b7 100644 --- a/ui/src/config.js +++ b/ui/src/config.js @@ -22,6 +22,7 @@ const defaultConfig = { defaultUIVolume: 100, enableUserEditing: true, enableSharing: true, + shareURL: 'http://127.0.0.1:4533', defaultDownloadableShare: true, devSidebarPlaylists: true, lastFMEnabled: true, diff --git a/ui/src/dialogs/ShareDialog.js b/ui/src/dialogs/ShareDialog.js index 68156bf58..21856b9e4 100644 --- a/ui/src/dialogs/ShareDialog.js +++ b/ui/src/dialogs/ShareDialog.js @@ -14,7 +14,7 @@ import { useTranslate, } from 'react-admin' import { useEffect, useState } from 'react' -import { shareUrl } from '../utils' +import { sharePlayerUrl } from '../utils' import { useTranscodingOptions } from './useTranscodingOptions' import { useDispatch, useSelector } from 'react-redux' import { closeShareMenu } from '../actions' @@ -52,7 +52,7 @@ export const ShareDialog = () => { }, { onSuccess: (res) => { - const url = shareUrl(res?.data?.id) + const url = sharePlayerUrl(res?.data?.id) if (navigator.clipboard && window.isSecureContext) { navigator.clipboard .writeText(url) diff --git a/ui/src/share/ShareEdit.js b/ui/src/share/ShareEdit.js index 91a7b11dc..2cf7f2df7 100644 --- a/ui/src/share/ShareEdit.js +++ b/ui/src/share/ShareEdit.js @@ -6,14 +6,14 @@ import { SimpleForm, TextInput, } from 'react-admin' -import { shareUrl } from '../utils' +import { sharePlayerUrl } from '../utils' import { Link } from '@material-ui/core' import { DateField } from '../common' import config from '../config' export const ShareEdit = (props) => { const { id, basePath, hasCreate, ...rest } = props - const url = shareUrl(id) + const url = sharePlayerUrl(id) return ( diff --git a/ui/src/share/ShareList.js b/ui/src/share/ShareList.js index b7b9edb5a..183d6af6b 100644 --- a/ui/src/share/ShareList.js +++ b/ui/src/share/ShareList.js @@ -13,7 +13,7 @@ import React from 'react' import { IconButton, Link, useMediaQuery } from '@material-ui/core' import ShareIcon from '@material-ui/icons/Share' import { DateField, QualityInfo } from '../common' -import { shareUrl } from '../utils' +import { sharePlayerUrl } from '../utils' import config from '../config' export const FormatInfo = ({ record, size }) => { @@ -30,7 +30,7 @@ const ShareList = (props) => { const notify = useNotify() const handleShare = (r) => (e) => { - const url = shareUrl(r?.id) + const url = sharePlayerUrl(r?.id) if (navigator.clipboard && window.isSecureContext) { navigator.clipboard .writeText(url) @@ -89,7 +89,7 @@ const ShareList = (props) => { source={'id'} render={(r) => ( { src: shareDownloadUrl(shareInfo?.id), }) } + console.log(list) const options = { audioLists: list, mode: 'full', diff --git a/ui/src/utils/urls.js b/ui/src/utils/urls.js index e9173f089..fdae496e0 100644 --- a/ui/src/utils/urls.js +++ b/ui/src/utils/urls.js @@ -7,24 +7,34 @@ export const baseUrl = (path) => { return parts.join('/') } -export const shareUrl = (id) => { +export const shareUrl = (path) => { + if (config.shareURL !== '') { + const base = config.shareURL || '' + const parts = [base] + parts.push(path.replace(/^\//, '')) + return parts.join('/') + } + return baseUrl(path) +} + +export const sharePlayerUrl = (id) => { const url = new URL( - baseUrl(config.publicBaseUrl + '/' + id), + shareUrl(config.publicBaseUrl + '/' + id), window.location.href, ) return url.href } export const shareStreamUrl = (id) => { - return baseUrl(config.publicBaseUrl + '/s/' + id) + return shareUrl(config.publicBaseUrl + '/s/' + id) } export const shareDownloadUrl = (id) => { - return baseUrl(config.publicBaseUrl + '/d/' + id) + return shareUrl(config.publicBaseUrl + '/d/' + id) } export const shareCoverUrl = (id) => { - return baseUrl(config.publicBaseUrl + '/img/' + id + '?size=300') + return shareUrl(config.publicBaseUrl + '/img/' + id + '?size=300') } export const docsUrl = (path) => `https://www.navidrome.org${path}`