From 01515c6a4b1040e1060dcc25e4cd6936579a1b40 Mon Sep 17 00:00:00 2001
From: Ahmad Farhat <ahmad.af.farhat@gmail.com>
Date: Tue, 7 Feb 2023 14:27:48 -0500
Subject: [PATCH] General cleanup (#4772)

---
 .../components/admin/manage_users/ManageUserRow.jsx    |  5 ++++-
 .../admin/site_settings/settings/SettingSelect.jsx     |  3 ++-
 app/javascript/components/home/HomePage.jsx            | 10 ++++------
 app/javascript/components/recordings/RecordingRow.jsx  |  2 +-
 .../components/recordings/RecordingsList.jsx           |  5 ++++-
 5 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/app/javascript/components/admin/manage_users/ManageUserRow.jsx b/app/javascript/components/admin/manage_users/ManageUserRow.jsx
index 8b036cba..129bcaed 100644
--- a/app/javascript/components/admin/manage_users/ManageUserRow.jsx
+++ b/app/javascript/components/admin/manage_users/ManageUserRow.jsx
@@ -17,12 +17,15 @@ import useCreateServerRoom from '../../../hooks/mutations/admin/manage_users/use
 import DeleteUserForm from './forms/DeleteUserForm';
 import useUpdateUserStatus from '../../../hooks/mutations/admin/manage_users/useUpdateUserStatus';
 import RoleBadge from '../roles/RoleBadge';
+import { useAuth } from '../../../contexts/auth/AuthProvider';
 
 export default function ManageUserRow({ user }) {
   const { t } = useTranslation();
+  const currentUser = useAuth();
+
   const mutationWrapper = (args) => useCreateServerRoom({ userId: user.id, ...args });
   const updateUserStatus = useUpdateUserStatus();
-  const localizedTime = localizeDateTimeString(user?.created_at, user?.language);
+  const localizedTime = localizeDateTimeString(user?.created_at, currentUser?.language);
 
   return (
     <tr key={user.id} className="align-middle text-muted border border-2">
diff --git a/app/javascript/components/admin/site_settings/settings/SettingSelect.jsx b/app/javascript/components/admin/site_settings/settings/SettingSelect.jsx
index c41c0879..45dbb34a 100644
--- a/app/javascript/components/admin/site_settings/settings/SettingSelect.jsx
+++ b/app/javascript/components/admin/site_settings/settings/SettingSelect.jsx
@@ -32,11 +32,12 @@ export default function SettingSelect({
 
 SettingSelect.defaultProps = {
   defaultValue: '',
+  children: undefined,
 };
 
 SettingSelect.propTypes = {
   defaultValue: PropTypes.string,
   title: PropTypes.string.isRequired,
   description: PropTypes.string.isRequired,
-  children: PropTypes.arrayOf(PropTypes.element).isRequired,
+  children: PropTypes.arrayOf(PropTypes.element),
 };
diff --git a/app/javascript/components/home/HomePage.jsx b/app/javascript/components/home/HomePage.jsx
index d7bc131d..a33417b6 100644
--- a/app/javascript/components/home/HomePage.jsx
+++ b/app/javascript/components/home/HomePage.jsx
@@ -1,4 +1,4 @@
-import React, { useEffect, useMemo } from 'react';
+import React, { useEffect } from 'react';
 import {
   Col, Row,
 } from 'react-bootstrap';
@@ -31,10 +31,9 @@ export default function HomePage() {
     [currentUser.signed_in],
   );
 
-  // hack to deal with the fact that useEffect and toast dont work together very well
-  useMemo(() => {
+  useEffect(() => {
     switch (error) {
-      case 'InviteInvald':
+      case 'InviteInvalid':
         toast.error(t('toast.error.users.invalid_invite'));
         break;
       case 'SignupError':
@@ -42,8 +41,7 @@ export default function HomePage() {
         break;
       default:
     }
-    // Remove the error
-    setSearchParams(searchParams.delete('error'));
+    if (error) { setSearchParams(searchParams.delete('error')); }
   }, [error]);
 
   return (
diff --git a/app/javascript/components/recordings/RecordingRow.jsx b/app/javascript/components/recordings/RecordingRow.jsx
index 97b37d80..9db4089d 100644
--- a/app/javascript/components/recordings/RecordingRow.jsx
+++ b/app/javascript/components/recordings/RecordingRow.jsx
@@ -97,7 +97,7 @@ export default function RecordingRow({
           <Button
             onClick={() => window.open(format.url, '_blank')}
             className={`btn-sm rounded-pill me-1 mt-1 border-0 btn-format-${format.recording_type.toLowerCase()}`}
-            key={format.id}
+            key={`${format.recording_type}-${format.url}`}
           >
             {format.recording_type}
           </Button>
diff --git a/app/javascript/components/recordings/RecordingsList.jsx b/app/javascript/components/recordings/RecordingsList.jsx
index 6c098dd5..9a39a962 100644
--- a/app/javascript/components/recordings/RecordingsList.jsx
+++ b/app/javascript/components/recordings/RecordingsList.jsx
@@ -90,7 +90,10 @@ RecordingsList.propTypes = {
       name: PropTypes.string,
       length: PropTypes.number,
       visibility: PropTypes.string,
-      formats: PropTypes.arrayOf(PropTypes.string),
+      formats: PropTypes.arrayOf(PropTypes.shape({
+        recording_type: PropTypes.string,
+        url: PropTypes.string,
+      })),
       users: PropTypes.arrayOf(PropTypes.shape({
         id: PropTypes.number,
         name: PropTypes.string,
-- 
GitLab