Move enums to types.ts and change icons selection to use

`getRoomIconSrc`
This commit is contained in:
Tymek 2026-02-15 01:31:30 +01:00
parent 2a10347515
commit ee6875b95c
No known key found for this signature in database
10 changed files with 28 additions and 24 deletions

View file

@ -2,12 +2,8 @@ import React from 'react';
import { Box, Text, Icon, Icons, config, IconSrc } from 'folds';
import { SequenceCard } from '../sequence-card';
import { SettingTile } from '../setting-tile';
import { CreateRoomKind } from './types';
export enum CreateRoomKind {
Private = 'private',
Restricted = 'restricted',
Public = 'public',
}
type CreateRoomKindSelectorProps = {
value?: CreateRoomKind;
onSelect: (value: CreateRoomKind) => void;

View file

@ -2,11 +2,8 @@ import React from 'react';
import { Box, Text, Icon, Icons, config, IconSrc } from 'folds';
import { SequenceCard } from '../sequence-card';
import { SettingTile } from '../setting-tile';
import { CreateRoomVoice } from './types';
export enum CreateRoomVoice {
TextRoom = 'text',
VoiceRoom = 'voice',
}
type CreateRoomVoiceSelectorProps = {
value?: CreateRoomVoice;
onSelect: (value: CreateRoomVoice) => void;

View file

@ -3,3 +3,4 @@ export * from './CreateRoomAliasInput';
export * from './RoomVersionSelector';
export * from './utils';
export * from './AdditionalCreatorInput';
export * from './types';

View file

@ -0,0 +1,10 @@
export enum CreateRoomVoice {
TextRoom = 'text',
VoiceRoom = 'voice',
}
export enum CreateRoomKind {
Private = 'private',
Restricted = 'restricted',
Public = 'public',
}

View file

@ -7,11 +7,11 @@ import {
Room,
} from 'matrix-js-sdk';
import { RoomJoinRulesEventContent } from 'matrix-js-sdk/lib/types';
import { CreateRoomKind } from './CreateRoomKindSelector';
import { RoomType, StateEvent } from '../../../types/matrix/room';
import { getViaServers } from '../../plugins/via-servers';
import { getMxIdServer } from '../../utils/matrix';
import { IPowerLevels } from '../../hooks/usePowerLevels';
import { CreateRoomKind } from './types';
export const createRoomCreationContent = (
type: RoomType | undefined,

View file

@ -1,5 +1,5 @@
import React, { FormEventHandler, useCallback, useEffect, useState } from 'react';
import { MatrixError, Room } from 'matrix-js-sdk';
import { MatrixError, Room, JoinRule } from 'matrix-js-sdk';
import {
Box,
Button,
@ -37,20 +37,21 @@ import {
CreateRoomKindSelector,
RoomVersionSelector,
useAdditionalCreators,
CreateRoomVoice,
} from '../../components/create-room';
import { RoomType, StateEvent } from '../../../types/matrix/room';
import { IPowerLevels } from '../../hooks/usePowerLevels';
import {
CreateRoomVoice,
CreateRoomVoiceSelector,
} from '../../components/create-room/CreateRoomVoiceSelector';
import { CreateRoomVoiceSelector } from '../../components/create-room/CreateRoomVoiceSelector';
import { getRoomIconSrc } from '../../utils/room';
const getCreateRoomKindToIcon = (kind: CreateRoomKind, voice?: CreateRoomVoice) => {
const isVoiceRoom = voice === CreateRoomVoice.VoiceRoom;
// TODO: Add VoiceLock and VoiceGlobe icons
if (kind === CreateRoomKind.Private) return isVoiceRoom ? Icons.Lock : Icons.HashLock;
if (kind === CreateRoomKind.Restricted) return isVoiceRoom ? Icons.VolumeHigh : Icons.Hash;
return isVoiceRoom ? Icons.VolumeHigh : Icons.HashGlobe;
let joinRule: JoinRule = JoinRule.Public;
if (kind === CreateRoomKind.Restricted) joinRule = JoinRule.Restricted;
if (kind === CreateRoomKind.Private) joinRule = JoinRule.Knock;
return getRoomIconSrc(Icons, isVoiceRoom ? RoomType.Call : undefined, joinRule);
};
const getCreateRoomVoiceToIcon = (kind: CreateRoomVoice) => {

View file

@ -23,14 +23,13 @@ import {
} from '../../state/hooks/createRoomModal';
import { CreateRoomModalState } from '../../state/createRoomModal';
import { stopPropagation } from '../../utils/keyboard';
import { CreateRoomVoice } from '../../components/create-room/CreateRoomVoiceSelector';
import { CreateRoomVoice } from '../../components/create-room/types';
type CreateRoomModalProps = {
state: CreateRoomModalState;
};
function CreateRoomModal({ state }: CreateRoomModalProps) {
const { spaceId, voice } = state;
console.log({ voice });
const closeDialog = useCloseCreateRoomModal();
const allJoinedRooms = useAllJoinedRoomsSet();

View file

@ -36,7 +36,7 @@ import { useMediaAuthentication } from '../../hooks/useMediaAuthentication';
import { useOpenCreateRoomModal } from '../../state/hooks/createRoomModal';
import { useOpenCreateSpaceModal } from '../../state/hooks/createSpaceModal';
import { AddExistingModal } from '../add-existing';
import { CreateRoomVoice } from '../../components/create-room/CreateRoomVoiceSelector';
import { CreateRoomVoice } from '../../components/create-room/types';
function SpaceProfileLoading() {
return (

View file

@ -1,5 +1,5 @@
import { atom } from 'jotai';
import { CreateRoomVoice } from '../components/create-room/CreateRoomVoiceSelector';
import { CreateRoomVoice } from '../components/create-room/types';
export type CreateRoomModalState = {
spaceId?: string;

View file

@ -1,7 +1,7 @@
import { useCallback } from 'react';
import { useAtomValue, useSetAtom } from 'jotai';
import { createRoomModalAtom, CreateRoomModalState } from '../createRoomModal';
import { CreateRoomVoice } from '../../components/create-room/CreateRoomVoiceSelector';
import { CreateRoomVoice } from '../../components/create-room/types';
export const useCreateRoomModalState = (): CreateRoomModalState | undefined => {
const data = useAtomValue(createRoomModalAtom);