-
- There are your profile settings
-
+
There are your audio settings
diff --git a/src/frontend/src/features/settings/components/tabs/AccountTab.tsx b/src/frontend/src/features/settings/components/tabs/AccountTab.tsx
new file mode 100644
index 00000000..a0dcde28
--- /dev/null
+++ b/src/frontend/src/features/settings/components/tabs/AccountTab.tsx
@@ -0,0 +1,81 @@
+import { A, Badge, Button, DialogProps, Field, H, P } from '@/primitives'
+import { Trans, useTranslation } from 'react-i18next'
+import {
+ usePersistentUserChoices,
+ useRoomContext,
+} from '@livekit/components-react'
+import { authUrl, logoutUrl, useUser } from '@/features/auth'
+import { css } from '@/styled-system/css'
+import { TabPanel, TabPanelProps } from '@/primitives/Tabs'
+import { HStack } from '@/styled-system/jsx'
+import { useState } from 'react'
+
+export type AccountTabProps = Pick
&
+ Pick
+
+export const AccountTab = ({ id, onOpenChange }: AccountTabProps) => {
+ const { t } = useTranslation('settings')
+ const { saveUsername } = usePersistentUserChoices()
+ const room = useRoomContext()
+ const { user, isLoggedIn } = useUser()
+ const [name, setName] = useState(room?.localParticipant.name || '')
+
+ const handleOnSubmit = () => {
+ if (room) room.localParticipant.setName(name)
+ saveUsername(name)
+ if (onOpenChange) onOpenChange(false)
+ }
+ const handleOnCancel = () => {
+ if (onOpenChange) onOpenChange(false)
+ }
+
+ return (
+
+ {t('account.heading')}
+ {
+ return !value ? {'Votre Nom ne peut pas être vide'}
: null
+ }}
+ />
+ {t('account.authentication')}
+ {isLoggedIn ? (
+ <>
+
+ ]}
+ />
+
+
+ {t('logout', { ns: 'global' })}
+
+ >
+ ) : (
+ <>
+ {t('account.youAreNotLoggedIn')}
+
+ {t('login', { ns: 'global' })}
+
+ >
+ )}
+
+
+
+
+
+ )
+}
diff --git a/src/frontend/src/locales/de/global.json b/src/frontend/src/locales/de/global.json
index 25aaba32..7a854ed9 100644
--- a/src/frontend/src/locales/de/global.json
+++ b/src/frontend/src/locales/de/global.json
@@ -16,5 +16,6 @@
"logout": "",
"notFound": {
"heading": ""
- }
+ },
+ "submit": "OK"
}
diff --git a/src/frontend/src/locales/de/rooms.json b/src/frontend/src/locales/de/rooms.json
index 08429a92..c811b9bc 100644
--- a/src/frontend/src/locales/de/rooms.json
+++ b/src/frontend/src/locales/de/rooms.json
@@ -45,13 +45,6 @@
"support": "",
"settings": "",
"username": ""
- },
- "username": {
- "heading": "",
- "label": "",
- "description": "",
- "validationError": "",
- "submitLabel": ""
}
},
"participants": {
diff --git a/src/frontend/src/locales/de/settings.json b/src/frontend/src/locales/de/settings.json
index aeb9d019..e5f90fec 100644
--- a/src/frontend/src/locales/de/settings.json
+++ b/src/frontend/src/locales/de/settings.json
@@ -2,7 +2,9 @@
"account": {
"currentlyLoggedAs": "",
"heading": "",
- "youAreNotLoggedIn": ""
+ "youAreNotLoggedIn": "",
+ "nameLabel": "",
+ "authentication": ""
},
"dialog": {
"heading": ""
diff --git a/src/frontend/src/locales/en/global.json b/src/frontend/src/locales/en/global.json
index abc7872a..b2ac0c8b 100644
--- a/src/frontend/src/locales/en/global.json
+++ b/src/frontend/src/locales/en/global.json
@@ -16,5 +16,6 @@
"logout": "Logout",
"notFound": {
"heading": "Page not found"
- }
+ },
+ "submit": "OK"
}
diff --git a/src/frontend/src/locales/en/rooms.json b/src/frontend/src/locales/en/rooms.json
index 9bf62669..dd4964eb 100644
--- a/src/frontend/src/locales/en/rooms.json
+++ b/src/frontend/src/locales/en/rooms.json
@@ -45,13 +45,6 @@
"support": "Get Help on Tchap",
"settings": "Settings",
"username": "Update Your Name"
- },
- "username": {
- "heading": "Update Your Name",
- "label": "Your Name",
- "description": "All other participants will see this name.",
- "validationError": "Name cannot be empty.",
- "submitLabel": "Save"
}
},
"participants": {
diff --git a/src/frontend/src/locales/en/settings.json b/src/frontend/src/locales/en/settings.json
index c640ba7b..c7519c18 100644
--- a/src/frontend/src/locales/en/settings.json
+++ b/src/frontend/src/locales/en/settings.json
@@ -2,7 +2,9 @@
"account": {
"currentlyLoggedAs": "You are currently logged in as <0>{{user}}0>",
"heading": "Account",
- "youAreNotLoggedIn": "You are not logged in."
+ "youAreNotLoggedIn": "You are not logged in.",
+ "nameLabel": "Votre Nom",
+ "authentication": "Authentication"
},
"dialog": {
"heading": "Settings"
diff --git a/src/frontend/src/locales/fr/global.json b/src/frontend/src/locales/fr/global.json
index 1013c7e4..74de21d6 100644
--- a/src/frontend/src/locales/fr/global.json
+++ b/src/frontend/src/locales/fr/global.json
@@ -16,5 +16,6 @@
"logout": "Se déconnecter",
"notFound": {
"heading": "Page introuvable"
- }
+ },
+ "submit": "OK"
}
diff --git a/src/frontend/src/locales/fr/rooms.json b/src/frontend/src/locales/fr/rooms.json
index 33ac61ca..7e8f63f4 100644
--- a/src/frontend/src/locales/fr/rooms.json
+++ b/src/frontend/src/locales/fr/rooms.json
@@ -45,13 +45,6 @@
"support": "Obtenir de l'aide sur Tchap",
"settings": "Paramètres",
"username": "Choisir votre nom"
- },
- "username": {
- "heading": "Choisir votre nom",
- "label": "Votre Nom",
- "description": "Tous les autres participants verront ce nom.",
- "validationError": "Le nom ne peut pas être vide.",
- "submitLabel": "Enregistrer"
}
},
"participants": {
diff --git a/src/frontend/src/locales/fr/settings.json b/src/frontend/src/locales/fr/settings.json
index 2bece896..da9b6943 100644
--- a/src/frontend/src/locales/fr/settings.json
+++ b/src/frontend/src/locales/fr/settings.json
@@ -2,7 +2,9 @@
"account": {
"currentlyLoggedAs": "Vous êtes actuellement connecté en tant que <0>{{user}}0>",
"heading": "Compte",
- "youAreNotLoggedIn": "Vous n'êtes pas connecté."
+ "youAreNotLoggedIn": "Vous n'êtes pas connecté.",
+ "nameLabel": "Votre Nom",
+ "authentication": "Authentification"
},
"dialog": {
"heading": "Paramètres"
diff --git a/src/frontend/src/primitives/Tabs.tsx b/src/frontend/src/primitives/Tabs.tsx
index f5636216..0878beb4 100644
--- a/src/frontend/src/primitives/Tabs.tsx
+++ b/src/frontend/src/primitives/Tabs.tsx
@@ -162,6 +162,7 @@ const StyledTabPanel = styled(RACTabPanel, {
display: 'flex',
flexGrow: 1,
overflow: 'auto',
+ flexDirection: 'column', //fixme should be parameterizable
},
},
padding: {