]> git.localhorst.tv Git - alttp.git/blobdiff - resources/js/components/protocol/Item.js
round titles
[alttp.git] / resources / js / components / protocol / Item.js
index 74bfa50039cf82ab62c3395d2e2683d2ec1072df..00da2ef472c27afb8b8be1c55de2c9cd9e361e0a 100644 (file)
@@ -7,6 +7,7 @@ import { Trans, withTranslation } from 'react-i18next';
 import Icon from '../common/Icon';
 import Spoiler from '../common/Spoiler';
 import { formatTime } from '../../helpers/Result';
+import { getUserName } from '../../helpers/User';
 import i18n from '../../i18n';
 
 const getEntryDate = entry => {
@@ -16,9 +17,21 @@ const getEntryDate = entry => {
                : dateStr;
 };
 
+const getEntryDetailsUsername = entry => {
+       if (!entry || !entry.details || !entry.details.user) return 'Anonymous';
+       return getUserName(entry.details.user);
+};
+
 const getEntryRoundNumber = entry =>
        (entry && entry.details && entry.details.round && entry.details.round.number) || '?';
 
+const getEntryResultComment = entry => {
+       if (!entry || !entry.details || !entry.details.result || !entry.details.result.comment) {
+               return '';
+       }
+       return entry.details.result.comment;
+};
+
 const getEntryResultTime = entry => {
        if (!entry || !entry.details || !entry.details.result) return 'ERROR';
        const result = entry.details.result;
@@ -28,14 +41,36 @@ const getEntryResultTime = entry => {
 
 const getEntryDescription = entry => {
        switch (entry.type) {
+               case 'application.accepted':
+               case 'application.received':
+               case 'application.rejected':
+                       return i18n.t(
+                               `protocol.description.${entry.type}`,
+                               {
+                                       ...entry,
+                                       username: getEntryDetailsUsername(entry),
+                               },
+                       );
+               case 'result.comment': {
+                       const comment = getEntryResultComment(entry);
+                       const number = getEntryRoundNumber(entry);
+                       return <Trans i18nKey={`protocol.description.${entry.type}`}>
+                               {{number}}
+                               <Spoiler>{{comment}}</Spoiler>,
+                       </Trans>;
+               }
                case 'result.report': {
+                       const number = getEntryRoundNumber(entry);
                        const time = getEntryResultTime(entry);
                        return <Trans i18nKey={`protocol.description.${entry.type}`}>
+                               {{number}}
                                <Spoiler>{{time}}</Spoiler>,
                        </Trans>;
                }
                case 'round.create':
+               case 'round.edit':
                case 'round.lock':
+               case 'round.seed':
                case 'round.unlock':
                        return i18n.t(
                                `protocol.description.${entry.type}`,
@@ -44,8 +79,11 @@ const getEntryDescription = entry => {
                                        number: getEntryRoundNumber(entry),
                                },
                        );
-               case 'result.comment':
+               case 'tournament.close':
+               case 'tournament.discord':
                case 'tournament.lock':
+               case 'tournament.open':
+               case 'tournament.unlock':
                        return i18n.t(
                                `protocol.description.${entry.type}`,
                                entry,
@@ -62,10 +100,15 @@ const getEntryIcon = entry => {
                case 'round.create':
                        return <Icon.ADD />;
                case 'round.lock':
+               case 'tournament.close':
                case 'tournament.lock':
                        return <Icon.LOCKED />;
                case 'round.unlock':
+               case 'tournament.open':
+               case 'tournament.unlock':
                        return <Icon.UNLOCKED />;
+               case 'tournament.discord':
+                       return <Icon.DISCORD />;
                default:
                        return <Icon.PROTOCOL />;
        }