Skip to content

Commit 8427fb4

Browse files
authored
Merge pull request #780 from FIRSTIsrael/disable-non-ready-switching
2 parents 6511143 + 7723d6f commit 8427fb4

File tree

3 files changed

+19
-7
lines changed

3 files changed

+19
-7
lines changed

apps/backend/src/lib/schedule/division-users.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ export const getDivisionUsers = (
2121
rooms: Array<WithId<JudgingRoom>>
2222
): User[] => {
2323
const users = [];
24-
const roles = RoleTypes.filter(role => !event.eventUsers.includes(role as EventUserAllowedRoles));
24+
const roles = RoleTypes.filter(
25+
role => !event.eventUsers?.includes(role as EventUserAllowedRoles)
26+
);
2527

2628
roles.forEach(role => {
2729
const user: User = {

apps/frontend/components/general/division-dropdown.tsx

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,13 @@ interface DropdownOptionProps {
1212
id: string;
1313
name: string;
1414
color: CSSProperties['color'];
15+
disabled: boolean;
1516
}
1617

17-
const DropdownOption: React.FC<DropdownOptionProps> = ({ id, name, color }) => {
18+
const DropdownOption: React.FC<DropdownOptionProps> = ({ id, name, color, disabled }) => {
1819
const { getRootProps, highlighted } = useOption({
1920
value: id,
20-
disabled: false,
21+
disabled: disabled,
2122
label: name
2223
});
2324

@@ -29,13 +30,14 @@ const DropdownOption: React.FC<DropdownOptionProps> = ({ id, name, color }) => {
2930
display="flex"
3031
flexDirection="row"
3132
gap={1}
32-
justifyContent="center"
33+
justifyContent="flex-start"
3334
alignItems="center"
3435
borderRadius={1}
3536
paddingX={2}
36-
sx={{ cursor: 'pointer', '&:hover': { bgcolor: '#e5eaf2' } }}
37+
minWidth={110}
38+
sx={disabled ? {} : { cursor: 'pointer', '&:hover': { bgcolor: '#e5eaf2' } }}
3739
>
38-
<Box height={10} width={10} borderRadius="50%" bgcolor={color} />
40+
<Box height={10} width={10} borderRadius="50%" bgcolor={disabled ? '#666' : color} />
3941
<Typography>{name}</Typography>
4042
</Box>
4143
);
@@ -107,6 +109,7 @@ const DivisionDropdown: React.FC<DivisionDropdownProps> = ({ event, selected, on
107109
id={division._id.toString()}
108110
name={division.name}
109111
color={division.color}
112+
disabled={!division.hasState}
110113
/>
111114
))}
112115
</SelectProvider>

apps/frontend/lib/utils/fetch.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
import { ObjectId, WithId } from 'mongodb';
12
import { GetServerSidePropsContext } from 'next';
3+
import { Division } from '@lems/types';
24

35
export const getApiBase = (forceClient = false) => {
46
const isSsr = !forceClient && typeof window === 'undefined';
@@ -33,13 +35,18 @@ export const apiFetch = (
3335

3436
export const getUserAndDivision = async (ctx: GetServerSidePropsContext) => {
3537
const user = await apiFetch(`/api/me`, undefined, ctx).then(res => res?.json());
38+
const divisions: Array<WithId<Division>> = await apiFetch(`/public/divisions`).then(res =>
39+
res?.json()
40+
);
3641
let divisionId = user.divisionId;
3742
if (!divisionId && user.eventId && user.assignedDivisions.length > 0) {
3843
const idFromQuery = (ctx.query.divisionId as string) || undefined;
3944
if (user.assignedDivisions.includes(idFromQuery)) {
4045
divisionId = idFromQuery;
4146
} else {
42-
divisionId = user.assignedDivisions[0];
47+
divisionId = user.assignedDivisions.filter(
48+
(id: ObjectId) => divisions.find(d => d._id === id)?.hasState
49+
)[0];
4350
}
4451
}
4552
return { user, divisionId };

0 commit comments

Comments
 (0)