Move enums to types.ts and change icons selection to use
`getRoomIconSrc`
This commit is contained in:
parent
2a10347515
commit
ee6875b95c
10 changed files with 28 additions and 24 deletions
|
|
@ -2,12 +2,8 @@ import React from 'react';
|
||||||
import { Box, Text, Icon, Icons, config, IconSrc } from 'folds';
|
import { Box, Text, Icon, Icons, config, IconSrc } from 'folds';
|
||||||
import { SequenceCard } from '../sequence-card';
|
import { SequenceCard } from '../sequence-card';
|
||||||
import { SettingTile } from '../setting-tile';
|
import { SettingTile } from '../setting-tile';
|
||||||
|
import { CreateRoomKind } from './types';
|
||||||
|
|
||||||
export enum CreateRoomKind {
|
|
||||||
Private = 'private',
|
|
||||||
Restricted = 'restricted',
|
|
||||||
Public = 'public',
|
|
||||||
}
|
|
||||||
type CreateRoomKindSelectorProps = {
|
type CreateRoomKindSelectorProps = {
|
||||||
value?: CreateRoomKind;
|
value?: CreateRoomKind;
|
||||||
onSelect: (value: CreateRoomKind) => void;
|
onSelect: (value: CreateRoomKind) => void;
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,8 @@ import React from 'react';
|
||||||
import { Box, Text, Icon, Icons, config, IconSrc } from 'folds';
|
import { Box, Text, Icon, Icons, config, IconSrc } from 'folds';
|
||||||
import { SequenceCard } from '../sequence-card';
|
import { SequenceCard } from '../sequence-card';
|
||||||
import { SettingTile } from '../setting-tile';
|
import { SettingTile } from '../setting-tile';
|
||||||
|
import { CreateRoomVoice } from './types';
|
||||||
|
|
||||||
export enum CreateRoomVoice {
|
|
||||||
TextRoom = 'text',
|
|
||||||
VoiceRoom = 'voice',
|
|
||||||
}
|
|
||||||
type CreateRoomVoiceSelectorProps = {
|
type CreateRoomVoiceSelectorProps = {
|
||||||
value?: CreateRoomVoice;
|
value?: CreateRoomVoice;
|
||||||
onSelect: (value: CreateRoomVoice) => void;
|
onSelect: (value: CreateRoomVoice) => void;
|
||||||
|
|
|
||||||
|
|
@ -3,3 +3,4 @@ export * from './CreateRoomAliasInput';
|
||||||
export * from './RoomVersionSelector';
|
export * from './RoomVersionSelector';
|
||||||
export * from './utils';
|
export * from './utils';
|
||||||
export * from './AdditionalCreatorInput';
|
export * from './AdditionalCreatorInput';
|
||||||
|
export * from './types';
|
||||||
|
|
|
||||||
10
src/app/components/create-room/types.ts
Normal file
10
src/app/components/create-room/types.ts
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
export enum CreateRoomVoice {
|
||||||
|
TextRoom = 'text',
|
||||||
|
VoiceRoom = 'voice',
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum CreateRoomKind {
|
||||||
|
Private = 'private',
|
||||||
|
Restricted = 'restricted',
|
||||||
|
Public = 'public',
|
||||||
|
}
|
||||||
|
|
@ -7,11 +7,11 @@ import {
|
||||||
Room,
|
Room,
|
||||||
} from 'matrix-js-sdk';
|
} from 'matrix-js-sdk';
|
||||||
import { RoomJoinRulesEventContent } from 'matrix-js-sdk/lib/types';
|
import { RoomJoinRulesEventContent } from 'matrix-js-sdk/lib/types';
|
||||||
import { CreateRoomKind } from './CreateRoomKindSelector';
|
|
||||||
import { RoomType, StateEvent } from '../../../types/matrix/room';
|
import { RoomType, StateEvent } from '../../../types/matrix/room';
|
||||||
import { getViaServers } from '../../plugins/via-servers';
|
import { getViaServers } from '../../plugins/via-servers';
|
||||||
import { getMxIdServer } from '../../utils/matrix';
|
import { getMxIdServer } from '../../utils/matrix';
|
||||||
import { IPowerLevels } from '../../hooks/usePowerLevels';
|
import { IPowerLevels } from '../../hooks/usePowerLevels';
|
||||||
|
import { CreateRoomKind } from './types';
|
||||||
|
|
||||||
export const createRoomCreationContent = (
|
export const createRoomCreationContent = (
|
||||||
type: RoomType | undefined,
|
type: RoomType | undefined,
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import React, { FormEventHandler, useCallback, useEffect, useState } from 'react';
|
import React, { FormEventHandler, useCallback, useEffect, useState } from 'react';
|
||||||
import { MatrixError, Room } from 'matrix-js-sdk';
|
import { MatrixError, Room, JoinRule } from 'matrix-js-sdk';
|
||||||
import {
|
import {
|
||||||
Box,
|
Box,
|
||||||
Button,
|
Button,
|
||||||
|
|
@ -37,20 +37,21 @@ import {
|
||||||
CreateRoomKindSelector,
|
CreateRoomKindSelector,
|
||||||
RoomVersionSelector,
|
RoomVersionSelector,
|
||||||
useAdditionalCreators,
|
useAdditionalCreators,
|
||||||
|
CreateRoomVoice,
|
||||||
} from '../../components/create-room';
|
} from '../../components/create-room';
|
||||||
import { RoomType, StateEvent } from '../../../types/matrix/room';
|
import { RoomType, StateEvent } from '../../../types/matrix/room';
|
||||||
import { IPowerLevels } from '../../hooks/usePowerLevels';
|
import { IPowerLevels } from '../../hooks/usePowerLevels';
|
||||||
import {
|
import { CreateRoomVoiceSelector } from '../../components/create-room/CreateRoomVoiceSelector';
|
||||||
CreateRoomVoice,
|
import { getRoomIconSrc } from '../../utils/room';
|
||||||
CreateRoomVoiceSelector,
|
|
||||||
} from '../../components/create-room/CreateRoomVoiceSelector';
|
|
||||||
|
|
||||||
const getCreateRoomKindToIcon = (kind: CreateRoomKind, voice?: CreateRoomVoice) => {
|
const getCreateRoomKindToIcon = (kind: CreateRoomKind, voice?: CreateRoomVoice) => {
|
||||||
const isVoiceRoom = voice === CreateRoomVoice.VoiceRoom;
|
const isVoiceRoom = voice === CreateRoomVoice.VoiceRoom;
|
||||||
// TODO: Add VoiceLock and VoiceGlobe icons
|
|
||||||
if (kind === CreateRoomKind.Private) return isVoiceRoom ? Icons.Lock : Icons.HashLock;
|
let joinRule: JoinRule = JoinRule.Public;
|
||||||
if (kind === CreateRoomKind.Restricted) return isVoiceRoom ? Icons.VolumeHigh : Icons.Hash;
|
if (kind === CreateRoomKind.Restricted) joinRule = JoinRule.Restricted;
|
||||||
return isVoiceRoom ? Icons.VolumeHigh : Icons.HashGlobe;
|
if (kind === CreateRoomKind.Private) joinRule = JoinRule.Knock;
|
||||||
|
|
||||||
|
return getRoomIconSrc(Icons, isVoiceRoom ? RoomType.Call : undefined, joinRule);
|
||||||
};
|
};
|
||||||
|
|
||||||
const getCreateRoomVoiceToIcon = (kind: CreateRoomVoice) => {
|
const getCreateRoomVoiceToIcon = (kind: CreateRoomVoice) => {
|
||||||
|
|
|
||||||
|
|
@ -23,14 +23,13 @@ import {
|
||||||
} from '../../state/hooks/createRoomModal';
|
} from '../../state/hooks/createRoomModal';
|
||||||
import { CreateRoomModalState } from '../../state/createRoomModal';
|
import { CreateRoomModalState } from '../../state/createRoomModal';
|
||||||
import { stopPropagation } from '../../utils/keyboard';
|
import { stopPropagation } from '../../utils/keyboard';
|
||||||
import { CreateRoomVoice } from '../../components/create-room/CreateRoomVoiceSelector';
|
import { CreateRoomVoice } from '../../components/create-room/types';
|
||||||
|
|
||||||
type CreateRoomModalProps = {
|
type CreateRoomModalProps = {
|
||||||
state: CreateRoomModalState;
|
state: CreateRoomModalState;
|
||||||
};
|
};
|
||||||
function CreateRoomModal({ state }: CreateRoomModalProps) {
|
function CreateRoomModal({ state }: CreateRoomModalProps) {
|
||||||
const { spaceId, voice } = state;
|
const { spaceId, voice } = state;
|
||||||
console.log({ voice });
|
|
||||||
const closeDialog = useCloseCreateRoomModal();
|
const closeDialog = useCloseCreateRoomModal();
|
||||||
|
|
||||||
const allJoinedRooms = useAllJoinedRoomsSet();
|
const allJoinedRooms = useAllJoinedRoomsSet();
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ import { useMediaAuthentication } from '../../hooks/useMediaAuthentication';
|
||||||
import { useOpenCreateRoomModal } from '../../state/hooks/createRoomModal';
|
import { useOpenCreateRoomModal } from '../../state/hooks/createRoomModal';
|
||||||
import { useOpenCreateSpaceModal } from '../../state/hooks/createSpaceModal';
|
import { useOpenCreateSpaceModal } from '../../state/hooks/createSpaceModal';
|
||||||
import { AddExistingModal } from '../add-existing';
|
import { AddExistingModal } from '../add-existing';
|
||||||
import { CreateRoomVoice } from '../../components/create-room/CreateRoomVoiceSelector';
|
import { CreateRoomVoice } from '../../components/create-room/types';
|
||||||
|
|
||||||
function SpaceProfileLoading() {
|
function SpaceProfileLoading() {
|
||||||
return (
|
return (
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { atom } from 'jotai';
|
import { atom } from 'jotai';
|
||||||
import { CreateRoomVoice } from '../components/create-room/CreateRoomVoiceSelector';
|
import { CreateRoomVoice } from '../components/create-room/types';
|
||||||
|
|
||||||
export type CreateRoomModalState = {
|
export type CreateRoomModalState = {
|
||||||
spaceId?: string;
|
spaceId?: string;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import { useCallback } from 'react';
|
import { useCallback } from 'react';
|
||||||
import { useAtomValue, useSetAtom } from 'jotai';
|
import { useAtomValue, useSetAtom } from 'jotai';
|
||||||
import { createRoomModalAtom, CreateRoomModalState } from '../createRoomModal';
|
import { createRoomModalAtom, CreateRoomModalState } from '../createRoomModal';
|
||||||
import { CreateRoomVoice } from '../../components/create-room/CreateRoomVoiceSelector';
|
import { CreateRoomVoice } from '../../components/create-room/types';
|
||||||
|
|
||||||
export const useCreateRoomModalState = (): CreateRoomModalState | undefined => {
|
export const useCreateRoomModalState = (): CreateRoomModalState | undefined => {
|
||||||
const data = useAtomValue(createRoomModalAtom);
|
const data = useAtomValue(createRoomModalAtom);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue