From: Daniel Karbach Date: Sat, 19 Jul 2025 10:55:53 +0000 (+0200) Subject: show random quote source X-Git-Url: http://git.localhorst.tv/?a=commitdiff_plain;h=1578f88a2d58190d753b698d65324cfb2f7cc91b;p=alttp.git show random quote source --- diff --git a/app/Models/User.php b/app/Models/User.php index 6ed6a81..0fdaf74 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -31,13 +31,17 @@ class User extends Authenticatable } public function getRandomQuoteAttribute() { - return $this->results() + $result = $this->results() ->where('comment', '!=', '') - ->whereHas('round', function(Builder $query) { + ->whereHas('round', function (Builder $query) { $query->where('locked', true); }) ->inRandomOrder() ->first(); + if ($result) { + $result->load(['round', 'round.tournament']); + } + return $result; } diff --git a/resources/js/components/users/Profile.jsx b/resources/js/components/users/Profile.jsx index 0b9f940..353f6d9 100644 --- a/resources/js/components/users/Profile.jsx +++ b/resources/js/components/users/Profile.jsx @@ -10,6 +10,16 @@ import EditStreamLinkButton from './EditStreamLinkButton'; import Participation from './Participation'; import EpisodesList from '../episodes/List'; import Icon from '../common/Icon'; +import { getIcon, getTime } from '../../helpers/Result'; + +const getQuoteSource = (result) => { + if (!result || !result.round) return ''; + const roundTitle = result.round.title || `Seed #${result.round.number}`; + if (result.round.tournament) { + return `${result.round.tournament.title} ${roundTitle}`; + } + return roundTitle; +}; const Profile = ({ user }) => { const [activeEpisodes, setActiveEpisodes] = React.useState('runner'); @@ -48,9 +58,18 @@ const Profile = ({ user }) => { {user.random_quote && user.random_quote.comment ? -
- {user.random_quote.comment} -
+
+
+ {user.random_quote.comment} +
+
+ {t('users.randomQuoteSource', { + date: new Date(user.random_quote.created_at), + result: getTime(user.random_quote, true), + source: getQuoteSource(user.random_quote), + })} +
+
: null} @@ -170,6 +189,7 @@ Profile.propTypes = { })), random_quote: PropTypes.shape({ comment: PropTypes.string, + created_at: PropTypes.string, }), round_first_count: PropTypes.number, round_second_count: PropTypes.number, diff --git a/resources/js/i18n/de.js b/resources/js/i18n/de.js index 21296fe..e52bad5 100644 --- a/resources/js/i18n/de.js +++ b/resources/js/i18n/de.js @@ -988,6 +988,7 @@ export default { nickname: 'Name', noStream: 'Kein Stream gesetzt', participationEmpty: 'Hat noch an keinen Turnieren teilgenommen.', + randomQuoteSource: '{{ date, L }}, {{ source }}, {{ result }}', roundRecords: 'Renn-Platzierungen', setNicknameError: 'Konnte Namen nicht speichern', setNicknameSuccess: 'Name geändert', diff --git a/resources/js/i18n/en.js b/resources/js/i18n/en.js index 1b50469..596b643 100644 --- a/resources/js/i18n/en.js +++ b/resources/js/i18n/en.js @@ -988,6 +988,7 @@ export default { nickname: 'Name', noStream: 'No stream set', participationEmpty: 'Has not participated in any tourneys yet.', + randomQuoteSource: '{{ date, L }}, {{ source }}, {{ result }}', roundRecords: 'Race records', setNicknameError: 'Could not save name', setNicknameSuccess: 'Name changed',