]> git.localhorst.tv Git - alttp.git/blobdiff - resources/js/components/users/Box.js
temporary user select
[alttp.git] / resources / js / components / users / Box.js
index 7bbc186eaacc54e4e934b8fdef82d2b71aa9b24d..70006cb13f2998df557130cbb0336efd7b49f597 100644 (file)
@@ -1,29 +1,50 @@
 import PropTypes from 'prop-types';
 import React from 'react';
+import { Button } from 'react-bootstrap';
 import { withTranslation } from 'react-i18next';
+import { useNavigate } from 'react-router-dom';
 
 import { getAvatarUrl } from '../../helpers/User';
 import i18n from '../../i18n';
 
-const Box = ({ discriminator, user }) => user ?
-       <span className="user-box">
+const Box = ({ discriminator, noLink, user }) => {
+       const navigate = useNavigate();
+
+       if (!user) {
+               return <span>{i18n.t('general.anonymous')}</span>;
+       }
+
+       const content = <>
                <img alt="" src={getAvatarUrl(user)} />
-               <span>{user.username}</span>
+               <span>{discriminator || !user.nickname ? user.username : user.nickname}</span>
                {discriminator ?
                        <span className="text-muted">
                                {'#'}
                                {user.discriminator}
                        </span>
                : null}
-       </span>
-:
-       <span>{i18n.t('general.anonymous')}</span>
-;
+       </>;
+
+       if (noLink) {
+               return <span className="user-box">{content}</span>;
+       }
+
+       return <Button
+               className="user-box"
+               onClick={() => navigate(`/users/${user.id}`)}
+               variant="link"
+       >
+               {content}
+       </Button>;
+};
 
 Box.propTypes = {
        discriminator: PropTypes.bool,
+       noLink: PropTypes.bool,
        user: PropTypes.shape({
                discriminator: PropTypes.string,
+               id: PropTypes.string,
+               nickname: PropTypes.string,
                username: PropTypes.string,
        }),
 };