🚸(frontend) explain duplicate identity disconnect on feedback page
Add context to feedback page when user is disconnected for joining with same identity, which is forbidden by LiveKit. Improves user understanding of disconnection reasons.
This commit is contained in:
@@ -127,7 +127,9 @@ export const Conference = ({
|
|||||||
})}
|
})}
|
||||||
onDisconnected={(e) => {
|
onDisconnected={(e) => {
|
||||||
if (e == DisconnectReason.CLIENT_INITIATED) {
|
if (e == DisconnectReason.CLIENT_INITIATED) {
|
||||||
navigateTo('feedback')
|
navigateTo('feedback', { duplicateIdentity: false })
|
||||||
|
} else if (e == DisconnectReason.DUPLICATE_IDENTITY) {
|
||||||
|
navigateTo('feedback', { duplicateIdentity: true })
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { Button } from '@/primitives'
|
|||||||
import { Screen } from '@/layout/Screen'
|
import { Screen } from '@/layout/Screen'
|
||||||
import { Center, HStack, styled, VStack } from '@/styled-system/jsx'
|
import { Center, HStack, styled, VStack } from '@/styled-system/jsx'
|
||||||
import { Rating } from '@/features/rooms/components/Rating.tsx'
|
import { Rating } from '@/features/rooms/components/Rating.tsx'
|
||||||
import { useLocation } from 'wouter'
|
import { useLocation, useSearchParams } from 'wouter'
|
||||||
|
|
||||||
// fixme - duplicated with home, refactor in a proper style
|
// fixme - duplicated with home, refactor in a proper style
|
||||||
const Heading = styled('h1', {
|
const Heading = styled('h1', {
|
||||||
@@ -16,17 +16,25 @@ const Heading = styled('h1', {
|
|||||||
lineHeight: '2.5rem',
|
lineHeight: '2.5rem',
|
||||||
letterSpacing: '0',
|
letterSpacing: '0',
|
||||||
paddingBottom: '2rem',
|
paddingBottom: '2rem',
|
||||||
|
textAlign: 'center',
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
export const FeedbackRoute = () => {
|
export const FeedbackRoute = () => {
|
||||||
const { t } = useTranslation('rooms')
|
const { t } = useTranslation('rooms')
|
||||||
const [, setLocation] = useLocation()
|
const [, setLocation] = useLocation()
|
||||||
|
|
||||||
|
const [searchParams] = useSearchParams()
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Screen layout="centered" footer={false}>
|
<Screen layout="centered" footer={false}>
|
||||||
<Center>
|
<Center>
|
||||||
<VStack>
|
<VStack>
|
||||||
<Heading>{t('feedback.heading')}</Heading>
|
<Heading>
|
||||||
|
{t(
|
||||||
|
`feedback.heading.${searchParams.get('duplicateIdentity') ? 'duplicateIdentity' : 'normal'}`
|
||||||
|
)}
|
||||||
|
</Heading>
|
||||||
<HStack>
|
<HStack>
|
||||||
<Button variant="secondary" onPress={() => window.history.back()}>
|
<Button variant="secondary" onPress={() => window.history.back()}>
|
||||||
{t('feedback.back')}
|
{t('feedback.back')}
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
{
|
{
|
||||||
"feedback": {
|
"feedback": {
|
||||||
"heading": "Sie haben das Meeting verlassen",
|
"heading": {
|
||||||
|
"normal": "Sie haben das Meeting verlassen",
|
||||||
|
"duplicateIdentity": "Sie haben dem Meeting von einem anderen Gerät aus beigetreten"
|
||||||
|
},
|
||||||
"home": "Zur Startseite zurückkehren",
|
"home": "Zur Startseite zurückkehren",
|
||||||
"back": "Dem Meeting erneut beitreten"
|
"back": "Dem Meeting erneut beitreten"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
{
|
{
|
||||||
"feedback": {
|
"feedback": {
|
||||||
"heading": "You have left the meeting",
|
"heading": {
|
||||||
|
"normal": "You have left the meeting",
|
||||||
|
"duplicateIdentity": "You have joined the meeting from another device"
|
||||||
|
},
|
||||||
"home": "Return to home",
|
"home": "Return to home",
|
||||||
"back": "Rejoin the meeting"
|
"back": "Rejoin the meeting"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
{
|
{
|
||||||
"feedback": {
|
"feedback": {
|
||||||
"heading": "Vous avez quitté la réunion",
|
"heading": {
|
||||||
|
"normal": "Vous avez quitté la réunion",
|
||||||
|
"duplicateIdentity": "Vous avez rejoint la réunion depuis un autre appareil"
|
||||||
|
},
|
||||||
"home": "Retourner à l'accueil",
|
"home": "Retourner à l'accueil",
|
||||||
"back": "Réintégrer la réunion"
|
"back": "Réintégrer la réunion"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
{
|
{
|
||||||
"feedback": {
|
"feedback": {
|
||||||
"heading": "Je hebt de vergadering verlaten",
|
"heading": {
|
||||||
|
"normal": "Je hebt de vergadering verlaten",
|
||||||
|
"duplicateIdentity": "U heeft de vergadering via een ander apparaat geopend"
|
||||||
|
},
|
||||||
"home": "Keer terug naar het hoofdscherm",
|
"home": "Keer terug naar het hoofdscherm",
|
||||||
"back": "Sluit weer bij de vergadering aan"
|
"back": "Sluit weer bij de vergadering aan"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -43,6 +43,11 @@ export const routes: Record<
|
|||||||
feedback: {
|
feedback: {
|
||||||
name: 'feedback',
|
name: 'feedback',
|
||||||
path: '/feedback',
|
path: '/feedback',
|
||||||
|
to: (params: { duplicateIdentity?: false }) =>
|
||||||
|
'/feedback' +
|
||||||
|
(params.duplicateIdentity
|
||||||
|
? `?duplicateIdentity=${params?.duplicateIdentity}`
|
||||||
|
: ''),
|
||||||
Component: FeedbackRoute,
|
Component: FeedbackRoute,
|
||||||
},
|
},
|
||||||
legalTerms: {
|
legalTerms: {
|
||||||
|
|||||||
Reference in New Issue
Block a user