From ba33d2281483f47d331c466e098e7c13c037089b Mon Sep 17 00:00:00 2001 From: John Angel Date: Tue, 1 Oct 2024 11:28:19 +0200 Subject: [PATCH 1/9] feat: Remove unused assets --- src/assets/icons/lernfair/icon_achtung.svg | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 src/assets/icons/lernfair/icon_achtung.svg diff --git a/src/assets/icons/lernfair/icon_achtung.svg b/src/assets/icons/lernfair/icon_achtung.svg deleted file mode 100644 index 9ead96be8..000000000 --- a/src/assets/icons/lernfair/icon_achtung.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - - - From 678b3191bbb4f07ec79d3c15b2c8aec3268a8ccc Mon Sep 17 00:00:00 2001 From: John Angel Date: Tue, 1 Oct 2024 11:28:33 +0200 Subject: [PATCH 2/9] feat: Show indication of cancelled meeting --- src/widgets/AppointmentDay.tsx | 8 +++++++ src/widgets/AppointmentList.tsx | 1 + src/widgets/AppointmentTile.tsx | 42 ++++++++++++++++++++++++++------- 3 files changed, 42 insertions(+), 9 deletions(-) diff --git a/src/widgets/AppointmentDay.tsx b/src/widgets/AppointmentDay.tsx index 35027491e..6af3bf3a4 100644 --- a/src/widgets/AppointmentDay.tsx +++ b/src/widgets/AppointmentDay.tsx @@ -24,6 +24,7 @@ type Props = { displayName: Appointment['displayName']; appointmentId: Appointment['id']; canJoinVideochat?: boolean; + declinedBy: Appointment['declinedBy']; }; export const canJoinMeeting = (start: string, duration: number, joinBeforeMinutes: number, now: DateTime): boolean => { @@ -49,6 +50,7 @@ const AppointmentDay: React.FC = ({ displayName, appointmentId, canJoinVideochat, + declinedBy, }) => { const isCurrentMonth = useCallback((start: string): boolean => { const now = DateTime.now(); @@ -81,6 +83,8 @@ const AppointmentDay: React.FC = ({ lg: '100%', }); + const wasRejected = !!participants?.every((e) => declinedBy?.includes(e.userID!)); + return ( <> {!isReadOnly && organizers && participants ? ( @@ -103,6 +107,8 @@ const AppointmentDay: React.FC = ({ isOrganizer={isOrganizer} displayName={displayName} appointmentId={appointmentId} + wasRejected={wasRejected} + declinedBy={declinedBy} /> @@ -124,6 +130,8 @@ const AppointmentDay: React.FC = ({ displayName={displayName} isReadOnly={isReadOnly} appointmentId={appointmentId} + wasRejected={wasRejected} + declinedBy={declinedBy} /> diff --git a/src/widgets/AppointmentList.tsx b/src/widgets/AppointmentList.tsx index a028340d3..608bdc5e0 100644 --- a/src/widgets/AppointmentList.tsx +++ b/src/widgets/AppointmentList.tsx @@ -158,6 +158,7 @@ const AppointmentList: React.FC = ({ isOrganizer={appointment.isOrganizer} displayName={appointment.displayName} appointmentId={appointment.id} + declinedBy={appointment.declinedBy} /> diff --git a/src/widgets/AppointmentTile.tsx b/src/widgets/AppointmentTile.tsx index a7515bacf..f880763dd 100644 --- a/src/widgets/AppointmentTile.tsx +++ b/src/widgets/AppointmentTile.tsx @@ -1,5 +1,4 @@ import { Box, Card, HStack, VStack, Text, Avatar, Heading, useBreakpointValue, Spacer } from 'native-base'; -import WarningIcon from '../assets/icons/lernfair/icon_achtung.svg'; import StudentAvatar from '../assets/icons/lernfair/avatar_student.svg'; import PupilAvatar from '../assets/icons/lernfair/avatar_pupil.svg'; import { Pressable } from 'react-native'; @@ -7,6 +6,10 @@ import { AppointmentParticipant, Organizer } from '../gql/graphql'; import { useTranslation } from 'react-i18next'; import { Appointment } from '../types/lernfair/Appointment'; import VideoButton from '../components/VideoButton'; +import { IconInfoCircle, IconPointFilled } from '@tabler/icons-react'; +import { Typography } from '@/components/Typography'; +import { cn } from '@/lib/Tailwind'; +import { useUser } from '@/hooks/useApollo'; type Props = { timeDescriptionText: string; @@ -24,6 +27,8 @@ type Props = { displayName: Appointment['displayName']; appointmentId?: Appointment['id']; canJoinVideochat?: boolean; + wasRejected: boolean; + declinedBy: Appointment['declinedBy']; }; const AppointmentTile: React.FC = ({ @@ -40,32 +45,43 @@ const AppointmentTile: React.FC = ({ appointmentId, appointmentType, isOrganizer, + wasRejected, + declinedBy, }) => { const { t } = useTranslation(); const width = useBreakpointValue({ base: '100%', lg: isFullWidth ? '92%' : '90%', }); + const { userID } = useUser(); const buttonWidth = useBreakpointValue({ base: 'full', lg: '300', }); + + const byMatch = !declinedBy?.includes(userID); + const isHighlighted = !isReadOnly && isCurrentlyTakingPlace && !wasRejected; + const wasRejectedByMatch = appointmentType === 'match' && wasRejected && byMatch; + return ( - + - {!isReadOnly && isCurrentlyTakingPlace && ( + {isHighlighted && ( - +
+ + +
)} - + {timeDescriptionText} - +
{organizers && participants && ( @@ -87,18 +103,26 @@ const AppointmentTile: React.FC = ({ )}
- + {displayName} {position && ( - + {t('appointment.appointmentTile.lecture', { position: position }) + (title ? t('appointment.appointmentTile.title', { appointmentTitle: title }) : '')} )} + {wasRejectedByMatch && ( +
+ + + Abgesagt durch {displayName} + +
+ )}
- {!isReadOnly && isCurrentlyTakingPlace && appointmentId && appointmentType && ( + {isHighlighted && appointmentId && appointmentType && ( Date: Tue, 1 Oct 2024 12:01:33 +0200 Subject: [PATCH 3/9] text: Translations --- src/lang/ar.json | 6 ++++-- src/lang/de.json | 6 ++++-- src/lang/en.json | 6 ++++-- src/lang/ru.json | 6 ++++-- src/lang/tr.json | 6 ++++-- src/lang/uk.json | 6 ++++-- src/widgets/AppointmentTile.tsx | 2 +- 7 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/lang/ar.json b/src/lang/ar.json index 245faaabb..ac1190e37 100644 --- a/src/lang/ar.json +++ b/src/lang/ar.json @@ -33,7 +33,8 @@ }, "appointmentTile": { "lecture": "الدرس #{{position}}", - "title": ": {{appointmentTitle}}" + "title": ": {{appointmentTitle}}", + "cancelledBy": "تم إلغاؤه بواسطة {{name}}" }, "create": { "videoSelectOptions": { @@ -101,7 +102,8 @@ "editButton": "تعديل الموعد", "canceledToast": "تم إلغاء الموعد", "zoomTooltipStudent": "إذا قمت بالنقر على هذا الرابط، ستنضم إلى الاجتماع كمشارك. للانضمام إلى الاجتماع كمضيف، استخدم زر \"الانضمام إلى دردشة الفيديو الآن\".", - "zoomTooltipPupil": "لا تشارك هذا الرابط مع أشخاص آخرين. هذه هي الطريقة الوحيدة التي يمكننا من خلالها ضمان أمن المنصة." + "zoomTooltipPupil": "لا تشارك هذا الرابط مع أشخاص آخرين. هذه هي الطريقة الوحيدة التي يمكننا من خلالها ضمان أمن المنصة.", + "cancelledBy": "موعد {{name}} ألغيت هذه" }, "zoomModal": { "useZoomApp": { diff --git a/src/lang/de.json b/src/lang/de.json index 28f6d8a20..b462d43b5 100644 --- a/src/lang/de.json +++ b/src/lang/de.json @@ -59,7 +59,8 @@ }, "appointmentTile": { "lecture": "Lektion #{{position}}", - "title": ": {{appointmentTitle}}" + "title": ": {{appointmentTitle}}", + "cancelledBy": "Abgesagt von {{name}}" }, "create": { "assignmentHeader": "Für welches Lernangebot soll dieser Termin erstellt werden?", @@ -127,7 +128,8 @@ "isOver": "Du kannst diesen Termin nicht absagen, da er bereits vorbei ist.", "isCancelled": "Du hast diesen Termin bereits abgesagt." } - } + }, + "cancelledBy": "{{name}} hat diesen Termin abgesagt" }, "zoomModal": { "header": "Hinweise zum Videochat", diff --git a/src/lang/en.json b/src/lang/en.json index 8d3535353..169fd5699 100644 --- a/src/lang/en.json +++ b/src/lang/en.json @@ -33,7 +33,8 @@ }, "appointmentTile": { "lecture": "Lesson #{{position}}", - "title": ": {{appointmentTitle}}" + "title": ": {{appointmentTitle}}", + "cancelledBy": "Canceled by {{name}}" }, "create": { "videoSelectOptions": { @@ -101,7 +102,8 @@ "editButton": "Edit lecture", "canceledToast": "Lecture was canceled", "zoomTooltipStudent": "If you click on this link, you will join the meeting as a participant. To join the meeting as a host, use the \"Join video chat now\" button.", - "zoomTooltipPupil": "Never share this link with other people. This is the only way we can guarantee the security of the platform." + "zoomTooltipPupil": "Never share this link with other people. This is the only way we can guarantee the security of the platform.", + "cancelledBy": "{{name}} has canceled this lecture " }, "zoomModal": { "useZoomApp": { diff --git a/src/lang/ru.json b/src/lang/ru.json index 21ecc1591..46a91abf6 100644 --- a/src/lang/ru.json +++ b/src/lang/ru.json @@ -33,7 +33,8 @@ }, "appointmentTile": { "lecture": "Урок #{{position}}", - "title": ": {{appointmentTitle}}" + "title": ": {{appointmentTitle}}", + "cancelledBy": "Отменено {{name}}" }, "create": { "videoSelectOptions": { @@ -101,7 +102,8 @@ "editButton": "Редактировать назначение", "canceledToast": "Назначение было отменено", "zoomTooltipStudent": "участник Если вы нажмете на эту ссылку, вы присоединитесь к встрече в качестве . Чтобы присоединиться к встрече в качестве ведущего, воспользуйтесь кнопкой \"Присоединиться к видеочату сейчас\".", - "zoomTooltipPupil": "Никогда не передавайте эту ссылку другим людям. Только так мы можем гарантировать безопасность платформы." + "zoomTooltipPupil": "Никогда не передавайте эту ссылку другим людям. Только так мы можем гарантировать безопасность платформы.", + "cancelledBy": "{{name}} отменил эту встречу" }, "zoomModal": { "useZoomApp": { diff --git a/src/lang/tr.json b/src/lang/tr.json index 64bf82403..062582708 100644 --- a/src/lang/tr.json +++ b/src/lang/tr.json @@ -33,7 +33,8 @@ }, "appointmentTile": { "lecture": "Ders #{{position}}", - "title": ": {{appointmentTitle}}" + "title": ": {{appointmentTitle}}", + "cancelledBy": "{{name}} tarafından iptal edildi" }, "create": { "videoSelectOptions": { @@ -101,7 +102,8 @@ "editButton": "Randevu düzenleme", "canceledToast": "Randevu iptal edildi", "zoomTooltipStudent": "Bu bağlantıya tıklarsanız, toplantıya katılımcı olarak katılırsınız. Toplantıya ev sahibi olarak katılmak için \"Video sohbete şimdi katıl\" düğmesini kullanın.", - "zoomTooltipPupil": "Bu bağlantıyı asla başkalarıyla paylaşmayın. Platformun güvenliğini ancak bu şekilde garanti edebiliriz." + "zoomTooltipPupil": "Bu bağlantıyı asla başkalarıyla paylaşmayın. Platformun güvenliğini ancak bu şekilde garanti edebiliriz.", + "cancelledBy": "{{name}} bu randevuyu iptal etti" }, "zoomModal": { "useZoomApp": { diff --git a/src/lang/uk.json b/src/lang/uk.json index b91b4ab4b..cceb292bd 100644 --- a/src/lang/uk.json +++ b/src/lang/uk.json @@ -33,7 +33,8 @@ }, "appointmentTile": { "lecture": "Урок #{{position}}", - "title": ": {{appointmentTitle}}" + "title": ": {{appointmentTitle}}", + "cancelledBy": "Скасовано {{name}}" }, "create": { "videoSelectOptions": { @@ -101,7 +102,8 @@ "editButton": "Редагувати зустріч", "canceledToast": "Зустріч було скасовано", "zoomTooltipStudent": "Якщо ви натиснете на це посилання, ви приєднаєтеся до зустрічі як учасник. Щоб приєднатися до зустрічі як організатор, скористайтеся кнопкою \"Приєднатися до відеочату зараз\".", - "zoomTooltipPupil": "Ніколи не діліться цим посиланням з іншими людьми. Це єдиний спосіб, яким ми можемо гарантувати безпеку платформи." + "zoomTooltipPupil": "Ніколи не діліться цим посиланням з іншими людьми. Це єдиний спосіб, яким ми можемо гарантувати безпеку платформи.", + "cancelledBy": "{{name}} скасував цю зустріч" }, "zoomModal": { "useZoomApp": { diff --git a/src/widgets/AppointmentTile.tsx b/src/widgets/AppointmentTile.tsx index f880763dd..648ec8201 100644 --- a/src/widgets/AppointmentTile.tsx +++ b/src/widgets/AppointmentTile.tsx @@ -117,7 +117,7 @@ const AppointmentTile: React.FC = ({
- Abgesagt durch {displayName} + {t('appointment.appointmentTile.cancelledBy', { name: displayName })}
)} From 1694c263e619612fc52b369654571235480173db Mon Sep 17 00:00:00 2001 From: John Angel Date: Tue, 8 Oct 2024 18:13:16 +0200 Subject: [PATCH 4/9] refactor: Remove unneeded components --- src/components/appointment/Buttons.tsx | 71 -------------------------- 1 file changed, 71 deletions(-) delete mode 100644 src/components/appointment/Buttons.tsx diff --git a/src/components/appointment/Buttons.tsx b/src/components/appointment/Buttons.tsx deleted file mode 100644 index 09571583d..000000000 --- a/src/components/appointment/Buttons.tsx +++ /dev/null @@ -1,71 +0,0 @@ -import { Stack, useBreakpointValue } from 'native-base'; -import { useTranslation } from 'react-i18next'; -import useApollo from '../../hooks/useApollo'; -import { useLayoutHelper } from '../../hooks/useLayoutHelper'; -import DisableableButton from '../DisablebleButton'; - -type AvatarsProps = { - onPress: () => void; - onEditPress: () => void; - canceled: boolean; - isOver: boolean; - isLast: boolean; -}; -const Buttons: React.FC = ({ onPress, onEditPress, canceled, isOver, isLast }) => { - const { isMobile } = useLayoutHelper(); - const { t } = useTranslation(); - const { user } = useApollo(); - - const buttonWidth = useBreakpointValue({ - base: 'full', - lg: '300', - }); - - return ( - <> - - {user?.student && ( - <> - - {t('appointment.detail.deleteButton')} - - - {t('appointment.detail.editButton')} - - - )} - {user?.pupil && ( - - {t('appointment.detail.cancelButton')} - - )} - - - ); -}; - -export default Buttons; From 40bc7decfbab549b9f5e386877cd2cc7843a2d9d Mon Sep 17 00:00:00 2001 From: John Angel Date: Tue, 8 Oct 2024 18:22:55 +0200 Subject: [PATCH 5/9] feat: Update Buttons when a match appointment is rejected --- .../appointment/AppointmentDetail.tsx | 72 ++++++++++++++++--- 1 file changed, 63 insertions(+), 9 deletions(-) diff --git a/src/components/appointment/AppointmentDetail.tsx b/src/components/appointment/AppointmentDetail.tsx index f1a912623..4a40cbe91 100644 --- a/src/components/appointment/AppointmentDetail.tsx +++ b/src/components/appointment/AppointmentDetail.tsx @@ -6,7 +6,6 @@ import AppointmentMetaDetails from './AppointmentMetaDetails'; import Header from './Header'; import Avatars from './Avatars'; import Description from './Description'; -import Buttons from './Buttons'; import { DateTime } from 'luxon'; import { useMutation } from '@apollo/client'; import useApollo from '../../hooks/useApollo'; @@ -15,6 +14,9 @@ import RejectAppointmentModal, { RejectType } from '../../modals/RejectAppointme import { gql } from '../../gql'; import { Lecture_Appointmenttype_Enum } from '../../gql/graphql'; import { PUPIL_APPOINTMENT } from '../../pages/Appointment'; +import { Typography } from '../Typography'; +import { IconInfoCircle, IconClockEdit, IconTrash, IconPencil } from '@tabler/icons-react'; +import { Button } from '../Button'; type AppointmentDetailProps = { appointment: Appointment; @@ -110,6 +112,12 @@ const AppointmentDetail: React.FC = ({ appointment }) => () => (appointment.appointmentType === Lecture_Appointmenttype_Enum.Group && appointment.total === 1 ? true : false), [appointment.total] ); + + const wasRejected = !!appointment.participants?.every((e) => appointment.declinedBy?.includes(e.userID!)); + const byMatch = !appointment.declinedBy?.includes(user?.userID!); + const wasRejectedByMe = appointment.declinedBy?.includes(user?.userID!); + const wasRejectedByMatch = appointment.appointmentType === 'match' && wasRejected && byMatch; + return ( <> setShowDeleteModal(false)}> @@ -139,15 +147,61 @@ const AppointmentDetail: React.FC = ({ appointment }) => overrideMeetingLink={appointment.override_meeting_link} zoomMeetingUrl={appointment.zoomMeetingUrl} /> + {wasRejectedByMatch && ( + <> +
+ + {t('appointment.detail.cancelledBy', { name: appointment.displayName })} +
+ {t('appointment.detail.rescheduleDescription', { name: appointment.displayName })} + + )} - - setShowDeclineModal(true) : () => setShowDeleteModal(true)} - onEditPress={() => navigate(`/edit-appointment/${appointment.id}`)} - canceled={(appointment.declinedBy?.includes(user?.userID ?? '') ?? false) || canceled} - isOver={isPastAppointment} - isLast={isLastAppointment} - /> +
+ {user?.student && ( + <> + + + + )} + {user?.pupil && ( + + )} +
); From 62a998c8eb26246031165b755813909de1e9a93c Mon Sep 17 00:00:00 2001 From: John Angel Date: Tue, 8 Oct 2024 18:23:38 +0200 Subject: [PATCH 6/9] feat: Update translations --- src/lang/ar.json | 4 +++- src/lang/de.json | 4 +++- src/lang/en.json | 4 +++- src/lang/ru.json | 4 +++- src/lang/tr.json | 4 +++- src/lang/uk.json | 4 +++- 6 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/lang/ar.json b/src/lang/ar.json index ac1190e37..5d4105fd5 100644 --- a/src/lang/ar.json +++ b/src/lang/ar.json @@ -103,7 +103,9 @@ "canceledToast": "تم إلغاء الموعد", "zoomTooltipStudent": "إذا قمت بالنقر على هذا الرابط، ستنضم إلى الاجتماع كمشارك. للانضمام إلى الاجتماع كمضيف، استخدم زر \"الانضمام إلى دردشة الفيديو الآن\".", "zoomTooltipPupil": "لا تشارك هذا الرابط مع أشخاص آخرين. هذه هي الطريقة الوحيدة التي يمكننا من خلالها ضمان أمن المنصة.", - "cancelledBy": "موعد {{name}} ألغيت هذه" + "cancelledBy": "موعد {{name}} ألغيت هذه", + "rescheduleButton": "موعد المناوبة", + "rescheduleDescription": "موعد إذا قمت بتحريك، سيتم تحميل {{name}}} مرة أخرى." }, "zoomModal": { "useZoomApp": { diff --git a/src/lang/de.json b/src/lang/de.json index b462d43b5..81a02a425 100644 --- a/src/lang/de.json +++ b/src/lang/de.json @@ -113,6 +113,7 @@ "deleteButton": "Termin löschen", "cancelButton": "Termin absagen", "editButton": "Termin bearbeiten", + "rescheduleButton": "Termin verschieben", "canceledToast": "Termin wurde abgesagt", "zoomTooltipStudent": "Wenn du diesen Link aufrufst, trittst du dem Meeting als Teilnehmer:in bei. Um als Host dem Meeting beizutrteten nutze den Button \"Jetzt Videochat beitreten\".", "zoomTooltipPupil": "Teile diesen Link niemals mit anderen Personen. Nur so können wir die Sicherheit der Plattform gewährleisten.", @@ -129,7 +130,8 @@ "isCancelled": "Du hast diesen Termin bereits abgesagt." } }, - "cancelledBy": "{{name}} hat diesen Termin abgesagt" + "cancelledBy": "{{name}} hat diesen Termin abgesagt", + "rescheduleDescription": "Wenn du den Termin verschiebst, wird {{name}} wieder eingeladen." }, "zoomModal": { "header": "Hinweise zum Videochat", diff --git a/src/lang/en.json b/src/lang/en.json index 169fd5699..c8d126901 100644 --- a/src/lang/en.json +++ b/src/lang/en.json @@ -103,7 +103,9 @@ "canceledToast": "Lecture was canceled", "zoomTooltipStudent": "If you click on this link, you will join the meeting as a participant. To join the meeting as a host, use the \"Join video chat now\" button.", "zoomTooltipPupil": "Never share this link with other people. This is the only way we can guarantee the security of the platform.", - "cancelledBy": "{{name}} has canceled this lecture " + "cancelledBy": "{{name}} has canceled this lecture ", + "rescheduleButton": "lecture shift", + "rescheduleDescription": "If you move the lecture , {{name}} will be loaded again." }, "zoomModal": { "useZoomApp": { diff --git a/src/lang/ru.json b/src/lang/ru.json index 46a91abf6..760394417 100644 --- a/src/lang/ru.json +++ b/src/lang/ru.json @@ -103,7 +103,9 @@ "canceledToast": "Назначение было отменено", "zoomTooltipStudent": "участник Если вы нажмете на эту ссылку, вы присоединитесь к встрече в качестве . Чтобы присоединиться к встрече в качестве ведущего, воспользуйтесь кнопкой \"Присоединиться к видеочату сейчас\".", "zoomTooltipPupil": "Никогда не передавайте эту ссылку другим людям. Только так мы можем гарантировать безопасность платформы.", - "cancelledBy": "{{name}} отменил эту встречу" + "cancelledBy": "{{name}} отменил эту встречу", + "rescheduleButton": "Отложить встречу", + "rescheduleDescription": "Если вы отложите встречу, {{name}} будет приглашен снова." }, "zoomModal": { "useZoomApp": { diff --git a/src/lang/tr.json b/src/lang/tr.json index 062582708..fb23ca3c0 100644 --- a/src/lang/tr.json +++ b/src/lang/tr.json @@ -103,7 +103,9 @@ "canceledToast": "Randevu iptal edildi", "zoomTooltipStudent": "Bu bağlantıya tıklarsanız, toplantıya katılımcı olarak katılırsınız. Toplantıya ev sahibi olarak katılmak için \"Video sohbete şimdi katıl\" düğmesini kullanın.", "zoomTooltipPupil": "Bu bağlantıyı asla başkalarıyla paylaşmayın. Platformun güvenliğini ancak bu şekilde garanti edebiliriz.", - "cancelledBy": "{{name}} bu randevuyu iptal etti" + "cancelledBy": "{{name}} bu randevuyu iptal etti", + "rescheduleButton": "Randevuyu ertele", + "rescheduleDescription": "Randevuyu ertelerseniz, {{name}} tekrar davet edilecektir." }, "zoomModal": { "useZoomApp": { diff --git a/src/lang/uk.json b/src/lang/uk.json index cceb292bd..eb621cb5e 100644 --- a/src/lang/uk.json +++ b/src/lang/uk.json @@ -103,7 +103,9 @@ "canceledToast": "Зустріч було скасовано", "zoomTooltipStudent": "Якщо ви натиснете на це посилання, ви приєднаєтеся до зустрічі як учасник. Щоб приєднатися до зустрічі як організатор, скористайтеся кнопкою \"Приєднатися до відеочату зараз\".", "zoomTooltipPupil": "Ніколи не діліться цим посиланням з іншими людьми. Це єдиний спосіб, яким ми можемо гарантувати безпеку платформи.", - "cancelledBy": "{{name}} скасував цю зустріч" + "cancelledBy": "{{name}} скасував цю зустріч", + "rescheduleButton": "Перенести дату", + "rescheduleDescription": "Якщо ви відкладете зустріч, {{name}} буде запрошено знову." }, "zoomModal": { "useZoomApp": { From 907ce417e075229ea67edca87cfc07429da25e52 Mon Sep 17 00:00:00 2001 From: John Angel Date: Wed, 9 Oct 2024 10:54:40 +0200 Subject: [PATCH 7/9] fix: Highlight declined match meetings --- src/pages/SingleMatch.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pages/SingleMatch.tsx b/src/pages/SingleMatch.tsx index 40c9e936b..6aa78d1bb 100644 --- a/src/pages/SingleMatch.tsx +++ b/src/pages/SingleMatch.tsx @@ -80,12 +80,14 @@ query SingleMatchAppointments_NO_CACHE($matchId: Int!, $take: Float!, $skip: Flo isOrganizer isParticipant override_meeting_link + declinedBy organizers(skip: 0, take: 5) { id firstname lastname } participants(skip: 0, take: 10) { + userID id firstname lastname From 89ce9020c5064d16813d21e0b1e85be7830c19b2 Mon Sep 17 00:00:00 2001 From: John Angel Date: Mon, 14 Oct 2024 10:38:01 +0200 Subject: [PATCH 8/9] fix: English translations --- src/lang/en.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lang/en.json b/src/lang/en.json index c8d126901..b99141831 100644 --- a/src/lang/en.json +++ b/src/lang/en.json @@ -104,8 +104,8 @@ "zoomTooltipStudent": "If you click on this link, you will join the meeting as a participant. To join the meeting as a host, use the \"Join video chat now\" button.", "zoomTooltipPupil": "Never share this link with other people. This is the only way we can guarantee the security of the platform.", "cancelledBy": "{{name}} has canceled this lecture ", - "rescheduleButton": "lecture shift", - "rescheduleDescription": "If you move the lecture , {{name}} will be loaded again." + "rescheduleButton": "Reschedule appointment", + "rescheduleDescription": "If you reschedule the lecture, {{name}} will be invited again." }, "zoomModal": { "useZoomApp": { From 6a2c628d8351af5de36442c5683d6c2c68dd2fed Mon Sep 17 00:00:00 2001 From: John Angel Date: Mon, 14 Oct 2024 10:44:06 +0200 Subject: [PATCH 9/9] fix: Video button style --- .../appointment/AppointmentMetaDetails.tsx | 33 ++++++++++--------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/src/components/appointment/AppointmentMetaDetails.tsx b/src/components/appointment/AppointmentMetaDetails.tsx index ef8bc0082..2e970d7e9 100644 --- a/src/components/appointment/AppointmentMetaDetails.tsx +++ b/src/components/appointment/AppointmentMetaDetails.tsx @@ -123,21 +123,24 @@ const AppointmentMetaDetails: React.FC = ({ )} - {appointmentId && appointmentType && ( - <> - - - )} +
+ {appointmentId && appointmentType && ( + <> + + + )} +
); };