From 705910d9e0650c972361f6d5bd5aa944452ccba5 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 31 Aug 2021 18:43:31 +0530 Subject: [PATCH 01/39] Renamed channels to rooms (#30) --- .../RoomIntro.jsx} | 20 +-- .../RoomIntro.scss} | 4 +- .../RoomSelector.jsx} | 26 ++-- .../RoomSelector.scss} | 24 ++-- .../RoomTile.jsx} | 20 +-- .../RoomTile.scss} | 2 +- .../CreateRoom.jsx} | 38 +++--- .../CreateRoom.scss} | 2 +- src/app/organisms/invite-list/InviteList.jsx | 14 +- src/app/organisms/invite-list/InviteList.scss | 2 +- src/app/organisms/invite-user/InviteUser.jsx | 4 +- src/app/organisms/invite-user/InviteUser.scss | 2 +- src/app/organisms/navigation/Drawer.jsx | 4 +- src/app/organisms/navigation/Drawer.scss | 8 +- src/app/organisms/navigation/DrawerHeader.jsx | 14 +- src/app/organisms/navigation/Home.jsx | 2 +- src/app/organisms/navigation/Selector.jsx | 4 +- src/app/organisms/navigation/SideBar.jsx | 6 +- .../PublicRooms.jsx} | 124 +++++++++--------- .../PublicRooms.scss} | 4 +- src/app/organisms/pw/Windows.jsx | 38 +++--- .../{channel => room}/PeopleDrawer.jsx | 0 .../{channel => room}/PeopleDrawer.scss | 0 .../{channel/Channel.jsx => room/Room.jsx} | 12 +- .../{channel/Channel.scss => room/Room.scss} | 2 +- .../ChannelView.jsx => room/RoomView.jsx} | 36 ++--- .../ChannelView.scss => room/RoomView.scss} | 16 +-- .../RoomViewCmdBar.jsx} | 34 ++--- .../RoomViewCmdBar.scss} | 0 .../RoomViewContent.jsx} | 24 ++-- .../RoomViewContent.scss} | 2 +- .../RoomViewFloating.jsx} | 12 +- .../RoomViewFloating.scss} | 2 +- .../RoomViewHeader.jsx} | 6 +- .../RoomViewInput.jsx} | 28 ++-- .../RoomViewInput.scss} | 6 +- .../organisms/{channel => room}/common.jsx | 4 +- src/app/templates/client/Client.jsx | 6 +- src/app/templates/client/Client.scss | 2 +- src/client/action/navigation.js | 12 +- src/client/state/cons.js | 8 +- src/client/state/navigation.js | 8 +- 42 files changed, 291 insertions(+), 291 deletions(-) rename src/app/molecules/{channel-intro/ChannelIntro.jsx => room-intro/RoomIntro.jsx} (64%) rename src/app/molecules/{channel-intro/ChannelIntro.scss => room-intro/RoomIntro.scss} (93%) rename src/app/molecules/{channel-selector/ChannelSelector.jsx => room-selector/RoomSelector.jsx} (76%) rename src/app/molecules/{channel-selector/ChannelSelector.scss => room-selector/RoomSelector.scss} (77%) rename src/app/molecules/{channel-tile/ChannelTile.jsx => room-tile/RoomTile.jsx} (78%) rename src/app/molecules/{channel-tile/ChannelTile.scss => room-tile/RoomTile.scss} (94%) rename src/app/organisms/{create-channel/CreateChannel.jsx => create-room/CreateRoom.jsx} (81%) rename src/app/organisms/{create-channel/CreateChannel.scss => create-room/CreateRoom.scss} (99%) rename src/app/organisms/{public-channels/PublicChannels.jsx => public-rooms/PublicRooms.jsx} (62%) rename src/app/organisms/{public-channels/PublicChannels.scss => public-rooms/PublicRooms.scss} (98%) rename src/app/organisms/{channel => room}/PeopleDrawer.jsx (100%) rename src/app/organisms/{channel => room}/PeopleDrawer.scss (100%) rename src/app/organisms/{channel/Channel.jsx => room/Room.jsx} (85%) rename src/app/organisms/{channel/Channel.scss => room/Room.scss} (61%) rename src/app/organisms/{channel/ChannelView.jsx => room/RoomView.jsx} (83%) rename src/app/organisms/{channel/ChannelView.scss => room/RoomView.scss} (57%) rename src/app/organisms/{channel/ChannelViewCmdBar.jsx => room/RoomViewCmdBar.jsx} (95%) rename src/app/organisms/{channel/ChannelViewCmdBar.scss => room/RoomViewCmdBar.scss} (100%) rename src/app/organisms/{channel/ChannelViewContent.jsx => room/RoomViewContent.jsx} (96%) rename src/app/organisms/{channel/ChannelViewContent.scss => room/RoomViewContent.scss} (90%) rename src/app/organisms/{channel/ChannelViewFloating.jsx => room/RoomViewFloating.jsx} (86%) rename src/app/organisms/{channel/ChannelViewFloating.scss => room/RoomViewFloating.scss} (99%) rename src/app/organisms/{channel/ChannelViewHeader.jsx => room/RoomViewHeader.jsx} (95%) rename src/app/organisms/{channel/ChannelViewInput.jsx => room/RoomViewInput.jsx} (93%) rename src/app/organisms/{channel/ChannelViewInput.scss => room/RoomViewInput.scss} (97%) rename src/app/organisms/{channel => room}/common.jsx (99%) diff --git a/src/app/molecules/channel-intro/ChannelIntro.jsx b/src/app/molecules/room-intro/RoomIntro.jsx similarity index 64% rename from src/app/molecules/channel-intro/ChannelIntro.jsx rename to src/app/molecules/room-intro/RoomIntro.jsx index 362dc1475..df5618dca 100644 --- a/src/app/molecules/channel-intro/ChannelIntro.jsx +++ b/src/app/molecules/room-intro/RoomIntro.jsx @@ -1,6 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import './ChannelIntro.scss'; +import './RoomIntro.scss'; import Linkify from 'linkifyjs/react'; import colorMXID from '../../../util/colorMXID'; @@ -12,27 +12,27 @@ function linkifyContent(content) { return {content}; } -function ChannelIntro({ +function RoomIntro({ roomId, avatarSrc, name, heading, desc, time, }) { return ( -
+
-
- {heading} - {linkifyContent(desc)} - { time !== null && {time}} +
+ {heading} + {linkifyContent(desc)} + { time !== null && {time}}
); } -ChannelIntro.defaultProps = { +RoomIntro.defaultProps = { avatarSrc: false, time: null, }; -ChannelIntro.propTypes = { +RoomIntro.propTypes = { roomId: PropTypes.string.isRequired, avatarSrc: PropTypes.oneOfType([ PropTypes.string, @@ -44,4 +44,4 @@ ChannelIntro.propTypes = { time: PropTypes.string, }; -export default ChannelIntro; +export default RoomIntro; diff --git a/src/app/molecules/channel-intro/ChannelIntro.scss b/src/app/molecules/room-intro/RoomIntro.scss similarity index 93% rename from src/app/molecules/channel-intro/ChannelIntro.scss rename to src/app/molecules/room-intro/RoomIntro.scss index 35186af37..8e923f3fa 100644 --- a/src/app/molecules/channel-intro/ChannelIntro.scss +++ b/src/app/molecules/room-intro/RoomIntro.scss @@ -1,4 +1,4 @@ -.channel-intro { +.room-intro { margin-top: calc(2 * var(--sp-extra-loose)); margin-bottom: var(--sp-extra-loose); padding-left: calc(var(--sp-normal) + var(--av-small) + var(--sp-tight)); @@ -11,7 +11,7 @@ } } - .channel-intro__content { + .room-intro__content { margin-top: var(--sp-extra-loose); max-width: 640px; } diff --git a/src/app/molecules/channel-selector/ChannelSelector.jsx b/src/app/molecules/room-selector/RoomSelector.jsx similarity index 76% rename from src/app/molecules/channel-selector/ChannelSelector.jsx rename to src/app/molecules/room-selector/RoomSelector.jsx index 076b5fe9d..01e2ffc11 100644 --- a/src/app/molecules/channel-selector/ChannelSelector.jsx +++ b/src/app/molecules/room-selector/RoomSelector.jsx @@ -1,6 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import './ChannelSelector.scss'; +import './RoomSelector.scss'; import colorMXID from '../../../util/colorMXID'; @@ -9,40 +9,40 @@ import Avatar from '../../atoms/avatar/Avatar'; import NotificationBadge from '../../atoms/badge/NotificationBadge'; import { blurOnBubbling } from '../../atoms/button/script'; -function ChannelSelectorWrapper({ +function RoomSelectorWrapper({ isSelected, onClick, content, options, }) { return ( -
+
-
{options}
+
{options}
); } -ChannelSelectorWrapper.defaultProps = { +RoomSelectorWrapper.defaultProps = { options: null, }; -ChannelSelectorWrapper.propTypes = { +RoomSelectorWrapper.propTypes = { isSelected: PropTypes.bool.isRequired, onClick: PropTypes.func.isRequired, content: PropTypes.node.isRequired, options: PropTypes.node, }; -function ChannelSelector({ +function RoomSelector({ name, roomId, imageSrc, iconSrc, isSelected, isUnread, notificationCount, isAlert, options, onClick, }) { return ( - @@ -67,12 +67,12 @@ function ChannelSelector({ /> ); } -ChannelSelector.defaultProps = { +RoomSelector.defaultProps = { imageSrc: null, iconSrc: null, options: null, }; -ChannelSelector.propTypes = { +RoomSelector.propTypes = { name: PropTypes.string.isRequired, roomId: PropTypes.string.isRequired, imageSrc: PropTypes.string, @@ -85,4 +85,4 @@ ChannelSelector.propTypes = { onClick: PropTypes.func.isRequired, }; -export default ChannelSelector; +export default RoomSelector; diff --git a/src/app/molecules/channel-selector/ChannelSelector.scss b/src/app/molecules/room-selector/RoomSelector.scss similarity index 77% rename from src/app/molecules/channel-selector/ChannelSelector.scss rename to src/app/molecules/room-selector/RoomSelector.scss index 31385f376..61e2cbc2f 100644 --- a/src/app/molecules/channel-selector/ChannelSelector.scss +++ b/src/app/molecules/room-selector/RoomSelector.scss @@ -1,15 +1,15 @@ -.channel-selector-flex { +.room-selector-flex { display: flex; align-items: center; } -.channel-selector-flexItem { +.room-selector-flexItem { flex: 1; min-width: 0; min-height: 0; } -.channel-selector { - @extend .channel-selector-flex; +.room-selector { + @extend .room-selector-flex; border: 1px solid transparent; border-radius: var(--bo-radius); @@ -19,7 +19,7 @@ background-color: var(--bg-surface); border-color: var(--bg-surface-border); - & .channel-selector__options { + & .room-selector__options { display: flex; } } @@ -27,7 +27,7 @@ @media (hover: hover) { &:hover { background-color: var(--bg-surface-hover); - & .channel-selector__options { + & .room-selector__options { display: flex; } } @@ -46,9 +46,9 @@ } } -.channel-selector__content { - @extend .channel-selector-flexItem; - @extend .channel-selector-flex; +.room-selector__content { + @extend .room-selector-flexItem; + @extend .room-selector-flex; padding: 0 var(--sp-extra-tight); min-height: 40px; cursor: inherit; @@ -58,7 +58,7 @@ } & > .text { - @extend .channel-selector-flexItem; + @extend .room-selector-flexItem; margin: 0 var(--sp-extra-tight); color: var(--tc-surface-normal); @@ -67,8 +67,8 @@ text-overflow: ellipsis; } } -.channel-selector__options { - @extend .channel-selector-flex; +.room-selector__options { + @extend .room-selector-flex; display: none; margin-right: var(--sp-ultra-tight); diff --git a/src/app/molecules/channel-tile/ChannelTile.jsx b/src/app/molecules/room-tile/RoomTile.jsx similarity index 78% rename from src/app/molecules/channel-tile/ChannelTile.jsx rename to src/app/molecules/room-tile/RoomTile.jsx index dfb384d32..a9a680d55 100644 --- a/src/app/molecules/channel-tile/ChannelTile.jsx +++ b/src/app/molecules/room-tile/RoomTile.jsx @@ -1,6 +1,6 @@ import React from 'react'; import PropTypes from 'prop-types'; -import './ChannelTile.scss'; +import './RoomTile.scss'; import Linkify from 'linkifyjs/react'; import colorMXID from '../../../util/colorMXID'; @@ -12,20 +12,20 @@ function linkifyContent(content) { return {content}; } -function ChannelTile({ +function RoomTile({ avatarSrc, name, id, inviterName, memberCount, desc, options, }) { return ( -
-
+
+
-
+
{name} { @@ -36,12 +36,12 @@ function ChannelTile({ { desc !== null && (typeof desc === 'string') - ? {linkifyContent(desc)} + ? {linkifyContent(desc)} : desc }
{ options !== null && ( -
+
{options}
)} @@ -49,14 +49,14 @@ function ChannelTile({ ); } -ChannelTile.defaultProps = { +RoomTile.defaultProps = { avatarSrc: null, inviterName: null, options: null, desc: null, memberCount: null, }; -ChannelTile.propTypes = { +RoomTile.propTypes = { avatarSrc: PropTypes.string, name: PropTypes.string.isRequired, id: PropTypes.string.isRequired, @@ -69,4 +69,4 @@ ChannelTile.propTypes = { options: PropTypes.node, }; -export default ChannelTile; +export default RoomTile; diff --git a/src/app/molecules/channel-tile/ChannelTile.scss b/src/app/molecules/room-tile/RoomTile.scss similarity index 94% rename from src/app/molecules/channel-tile/ChannelTile.scss rename to src/app/molecules/room-tile/RoomTile.scss index ce201955d..bbed71073 100644 --- a/src/app/molecules/channel-tile/ChannelTile.scss +++ b/src/app/molecules/room-tile/RoomTile.scss @@ -1,4 +1,4 @@ -.channel-tile { +.room-tile { display: flex; &__content { diff --git a/src/app/organisms/create-channel/CreateChannel.jsx b/src/app/organisms/create-room/CreateRoom.jsx similarity index 81% rename from src/app/organisms/create-channel/CreateChannel.jsx rename to src/app/organisms/create-room/CreateRoom.jsx index c44b53664..d94c4b17e 100644 --- a/src/app/organisms/create-channel/CreateChannel.jsx +++ b/src/app/organisms/create-room/CreateRoom.jsx @@ -1,6 +1,6 @@ import React, { useState, useRef } from 'react'; import PropTypes from 'prop-types'; -import './CreateChannel.scss'; +import './CreateRoom.scss'; import initMatrix from '../../../client/initMatrix'; import { isRoomAliasAvailable } from '../../../util/matrixUtil'; @@ -18,7 +18,7 @@ import SettingTile from '../../molecules/setting-tile/SettingTile'; import HashPlusIC from '../../../../public/res/ic/outlined/hash-plus.svg'; import CrossIC from '../../../../public/res/ic/outlined/cross.svg'; -function CreateChannel({ isOpen, onRequestClose }) { +function CreateRoom({ isOpen, onRequestClose }) { const [isPublic, togglePublic] = useState(false); const [isEncrypted, toggleEncrypted] = useState(true); const [isValidAddress, updateIsValidAddress] = useState(null); @@ -69,10 +69,10 @@ function CreateChannel({ isOpen, onRequestClose }) { onRequestClose(); } catch (e) { if (e.message === 'M_UNKNOWN: Invalid characters in room alias') { - updateCreatingError('ERROR: Invalid characters in channel address'); + updateCreatingError('ERROR: Invalid characters in room address'); updateIsValidAddress(false); } else if (e.message === 'M_ROOM_IN_USE: Room alias already taken') { - updateCreatingError('ERROR: Channel address is already in use'); + updateCreatingError('ERROR: Room address is already in use'); updateIsValidAddress(false); } else updateCreatingError(e.message); } @@ -110,26 +110,26 @@ function CreateChannel({ isOpen, onRequestClose }) { return ( } onRequestClose={onRequestClose} > -
-
{ e.preventDefault(); createRoom(); }}> +
+ { e.preventDefault(); createRoom(); }}> } - content={Public channel can be joined by anyone.} + content={Public room can be joined by anyone.} /> {isPublic && (
- Channel address -
+ Room address +
# {hsString}
- {isValidAddress === false && {`#${addressValue}${hsString} is already in use`}} + {isValidAddress === false && {`#${addressValue}${hsString} is already in use`}}
)} {!isPublic && ( @@ -140,26 +140,26 @@ function CreateChannel({ isOpen, onRequestClose }) { /> )} -
- +
+
{isCreatingRoom && ( -
+
- Creating channel... + Creating room...
)} - {typeof creatingError === 'string' && {creatingError}} + {typeof creatingError === 'string' && {creatingError}}
); } -CreateChannel.propTypes = { +CreateRoom.propTypes = { isOpen: PropTypes.bool.isRequired, onRequestClose: PropTypes.func.isRequired, }; -export default CreateChannel; +export default CreateRoom; diff --git a/src/app/organisms/create-channel/CreateChannel.scss b/src/app/organisms/create-room/CreateRoom.scss similarity index 99% rename from src/app/organisms/create-channel/CreateChannel.scss rename to src/app/organisms/create-room/CreateRoom.scss index 6d59f65df..c587fa2f2 100644 --- a/src/app/organisms/create-channel/CreateChannel.scss +++ b/src/app/organisms/create-room/CreateRoom.scss @@ -1,4 +1,4 @@ -.create-channel { +.create-room { margin: 0 var(--sp-normal); margin-right: var(--sp-extra-tight); diff --git a/src/app/organisms/invite-list/InviteList.jsx b/src/app/organisms/invite-list/InviteList.jsx index 297478e96..2fee05085 100644 --- a/src/app/organisms/invite-list/InviteList.jsx +++ b/src/app/organisms/invite-list/InviteList.jsx @@ -11,7 +11,7 @@ import Button from '../../atoms/button/Button'; import IconButton from '../../atoms/button/IconButton'; import Spinner from '../../atoms/spinner/Spinner'; import PopupWindow from '../../molecules/popup-window/PopupWindow'; -import ChannelTile from '../../molecules/channel-tile/ChannelTile'; +import RoomTile from '../../molecules/room-tile/RoomTile'; import CrossIC from '../../../../public/res/ic/outlined/cross.svg'; @@ -47,13 +47,13 @@ function InviteList({ isOpen, onRequestClose }) { }; }, [procInvite]); - function renderChannelTile(roomId) { + function renderRoomTile(roomId) { const myRoom = initMatrix.matrixClient.getRoom(roomId); const roomName = myRoom.name; let roomAlias = myRoom.getCanonicalAlias(); if (roomAlias === null) roomAlias = myRoom.roomId; return ( - Spaces
)} - { Array.from(initMatrix.roomList.inviteSpaces).map(renderChannelTile) } + { Array.from(initMatrix.roomList.inviteSpaces).map(renderRoomTile) } { initMatrix.roomList.inviteRooms.size !== 0 && (
- Channels + Rooms
)} - { Array.from(initMatrix.roomList.inviteRooms).map(renderChannelTile) } + { Array.from(initMatrix.roomList.inviteRooms).map(renderRoomTile) }
); diff --git a/src/app/organisms/invite-list/InviteList.scss b/src/app/organisms/invite-list/InviteList.scss index bdb78c415..70e82c76c 100644 --- a/src/app/organisms/invite-list/InviteList.scss +++ b/src/app/organisms/invite-list/InviteList.scss @@ -14,7 +14,7 @@ } } - & .channel-tile { + & .room-tile { margin-top: var(--sp-normal); &__options { align-self: flex-end; diff --git a/src/app/organisms/invite-user/InviteUser.jsx b/src/app/organisms/invite-user/InviteUser.jsx index cac906078..a6ff24210 100644 --- a/src/app/organisms/invite-user/InviteUser.jsx +++ b/src/app/organisms/invite-user/InviteUser.jsx @@ -13,7 +13,7 @@ import IconButton from '../../atoms/button/IconButton'; import Spinner from '../../atoms/spinner/Spinner'; import Input from '../../atoms/input/Input'; import PopupWindow from '../../molecules/popup-window/PopupWindow'; -import ChannelTile from '../../molecules/channel-tile/ChannelTile'; +import RoomTile from '../../molecules/room-tile/RoomTile'; import CrossIC from '../../../../public/res/ic/outlined/cross.svg'; import UserIC from '../../../../public/res/ic/outlined/user.svg'; @@ -188,7 +188,7 @@ function InviteUser({ const userId = user.user_id; const name = typeof user.display_name === 'string' ? user.display_name : userId; return ( -
-
+
-
+
{ activeTab === 'home' ? diff --git a/src/app/organisms/navigation/Drawer.scss b/src/app/organisms/navigation/Drawer.scss index 4b12bcea6..e5d3f7104 100644 --- a/src/app/organisms/navigation/Drawer.scss +++ b/src/app/organisms/navigation/Drawer.scss @@ -28,14 +28,14 @@ display: none; height: var(--header-height); } -.channels__wrapper { +.rooms__wrapper { @extend .drawer-flexItem; } -.channels-container { +.rooms-container { padding-bottom: var(--sp-extra-loose); - & > .channel-selector { + & > .room-selector { width: calc(100% - var(--sp-extra-tight)); margin-left: auto; @@ -46,7 +46,7 @@ } - & > .channel-selector:first-child { + & > .room-selector:first-child { margin-top: var(--sp-extra-tight); } diff --git a/src/app/organisms/navigation/DrawerHeader.jsx b/src/app/organisms/navigation/DrawerHeader.jsx index c86b09b32..891553671 100644 --- a/src/app/organisms/navigation/DrawerHeader.jsx +++ b/src/app/organisms/navigation/DrawerHeader.jsx @@ -2,7 +2,7 @@ import React from 'react'; import PropTypes from 'prop-types'; import { - openPublicChannels, openCreateChannel, openInviteUser, + openPublicRooms, openCreateRoom, openInviteUser, } from '../../../client/action/navigation'; import Text from '../../atoms/text/Text'; @@ -26,22 +26,22 @@ function DrawerHeader({ activeTab }) { ( <> - Add channel + Add room { hideMenu(); openCreateChannel(); }} + onClick={() => { hideMenu(); openCreateRoom(); }} > - Create new channel + Create new room { hideMenu(); openPublicChannels(); }} + onClick={() => { hideMenu(); openPublicRooms(); }} > - Add Public channel + Add public room )} - render={(toggleMenu) => ()} + render={(toggleMenu) => ()} /> )} {/* ''} tooltip="Menu" src={VerticalMenuIC} size="normal" /> */} diff --git a/src/app/organisms/navigation/Home.jsx b/src/app/organisms/navigation/Home.jsx index 80cd3c0ba..a39ad5d9a 100644 --- a/src/app/organisms/navigation/Home.jsx +++ b/src/app/organisms/navigation/Home.jsx @@ -70,7 +70,7 @@ function Home() { /> ))} - { roomIds.length !== 0 && Channels } + { roomIds.length !== 0 && Rooms } { roomIds.map((id) => (
changeTab('home')} tooltip="Home" iconSrc={HomeIC} /> - changeTab('dms')} tooltip="People" iconSrc={UserIC} /> - openPublicChannels()} tooltip="Public channels" iconSrc={HashSearchIC} /> + changeTab('dm')} tooltip="People" iconSrc={UserIC} /> + openPublicRooms()} tooltip="Public rooms" iconSrc={HashSearchIC} />
diff --git a/src/app/organisms/public-channels/PublicChannels.jsx b/src/app/organisms/public-rooms/PublicRooms.jsx similarity index 62% rename from src/app/organisms/public-channels/PublicChannels.jsx rename to src/app/organisms/public-rooms/PublicRooms.jsx index b7388e501..b8f92449b 100644 --- a/src/app/organisms/public-channels/PublicChannels.jsx +++ b/src/app/organisms/public-rooms/PublicRooms.jsx @@ -1,6 +1,6 @@ import React, { useState, useEffect, useRef } from 'react'; import PropTypes from 'prop-types'; -import './PublicChannels.scss'; +import './PublicRooms.scss'; import initMatrix from '../../../client/initMatrix'; import cons from '../../../client/state/cons'; @@ -13,7 +13,7 @@ import IconButton from '../../atoms/button/IconButton'; import Spinner from '../../atoms/spinner/Spinner'; import Input from '../../atoms/input/Input'; import PopupWindow from '../../molecules/popup-window/PopupWindow'; -import ChannelTile from '../../molecules/channel-tile/ChannelTile'; +import RoomTile from '../../molecules/room-tile/RoomTile'; import CrossIC from '../../../../public/res/ic/outlined/cross.svg'; import HashSearchIC from '../../../../public/res/ic/outlined/hash-search.svg'; @@ -53,7 +53,7 @@ function TryJoinWithAlias({ alias, onRequestClose }) { } catch (e) { setStatus({ isJoining: false, - error: `Unable to join ${alias}. Either channel is private or doesn't exist.`, + error: `Unable to join ${alias}. Either room is private or doesn't exist.`, roomId: null, tempRoomId: null, }); @@ -84,38 +84,38 @@ TryJoinWithAlias.propTypes = { onRequestClose: PropTypes.func.isRequired, }; -function PublicChannels({ isOpen, searchTerm, onRequestClose }) { +function PublicRooms({ isOpen, searchTerm, onRequestClose }) { const [isSearching, updateIsSearching] = useState(false); const [isViewMore, updateIsViewMore] = useState(false); - const [publicChannels, updatePublicChannels] = useState([]); + const [publicRooms, updatePublicRooms] = useState([]); const [nextBatch, updateNextBatch] = useState(undefined); const [searchQuery, updateSearchQuery] = useState({}); - const [joiningChannels, updateJoiningChannels] = useState(new Set()); + const [joiningRooms, updateJoiningRooms] = useState(new Set()); - const channelNameRef = useRef(null); + const roomNameRef = useRef(null); const hsRef = useRef(null); const userId = initMatrix.matrixClient.getUserId(); - async function searchChannels(viewMore) { - let inputChannelName = channelNameRef?.current?.value || searchTerm; + async function searchRooms(viewMore) { + let inputRoomName = roomNameRef?.current?.value || searchTerm; let isInputAlias = false; - if (typeof inputChannelName === 'string') { - isInputAlias = inputChannelName[0] === '#' && inputChannelName.indexOf(':') > 1; + if (typeof inputRoomName === 'string') { + isInputAlias = inputRoomName[0] === '#' && inputRoomName.indexOf(':') > 1; } - const hsFromAlias = (isInputAlias) ? inputChannelName.slice(inputChannelName.indexOf(':') + 1) : null; + const hsFromAlias = (isInputAlias) ? inputRoomName.slice(inputRoomName.indexOf(':') + 1) : null; let inputHs = hsFromAlias || hsRef?.current?.value; if (typeof inputHs !== 'string') inputHs = userId.slice(userId.indexOf(':') + 1); - if (typeof inputChannelName !== 'string') inputChannelName = ''; + if (typeof inputRoomName !== 'string') inputRoomName = ''; if (isSearching) return; if (viewMore !== true - && inputChannelName === searchQuery.name + && inputRoomName === searchQuery.name && inputHs === searchQuery.homeserver ) return; updateSearchQuery({ - name: inputChannelName, + name: inputRoomName, homeserver: inputHs, }); if (isViewMore !== viewMore) updateIsViewMore(viewMore); @@ -128,26 +128,26 @@ function PublicChannels({ isOpen, searchTerm, onRequestClose }) { since: viewMore ? nextBatch : undefined, include_all_networks: true, filter: { - generic_search_term: inputChannelName, + generic_search_term: inputRoomName, }, }); - const totalChannels = viewMore ? publicChannels.concat(result.chunk) : result.chunk; - updatePublicChannels(totalChannels); + const totalRooms = viewMore ? publicRooms.concat(result.chunk) : result.chunk; + updatePublicRooms(totalRooms); updateNextBatch(result.next_batch); updateIsSearching(false); updateIsViewMore(false); - if (totalChannels.length === 0) { + if (totalRooms.length === 0) { updateSearchQuery({ - error: `No result found for "${inputChannelName}" on ${inputHs}`, - alias: isInputAlias ? inputChannelName : null, + error: `No result found for "${inputRoomName}" on ${inputHs}`, + alias: isInputAlias ? inputRoomName : null, }); } } catch (e) { - updatePublicChannels([]); + updatePublicRooms([]); updateSearchQuery({ error: 'Something went wrong!', - alias: isInputAlias ? inputChannelName : null, + alias: isInputAlias ? inputRoomName : null, }); updateIsSearching(false); updateNextBatch(undefined); @@ -156,13 +156,13 @@ function PublicChannels({ isOpen, searchTerm, onRequestClose }) { } useEffect(() => { - if (isOpen) searchChannels(); + if (isOpen) searchRooms(); }, [isOpen]); function handleOnRoomAdded(roomId) { - if (joiningChannels.has(roomId)) { - joiningChannels.delete(roomId); - updateJoiningChannels(new Set(Array.from(joiningChannels))); + if (joiningRooms.has(roomId)) { + joiningRooms.delete(roomId); + updateJoiningRooms(new Set(Array.from(joiningRooms))); } } useEffect(() => { @@ -170,36 +170,36 @@ function PublicChannels({ isOpen, searchTerm, onRequestClose }) { return () => { initMatrix.roomList.removeListener(cons.events.roomList.ROOM_JOINED, handleOnRoomAdded); }; - }, [joiningChannels]); + }, [joiningRooms]); - function handleViewChannel(roomId) { + function handleViewRoom(roomId) { selectRoom(roomId); onRequestClose(); } - function joinChannel(roomIdOrAlias) { - joiningChannels.add(roomIdOrAlias); - updateJoiningChannels(new Set(Array.from(joiningChannels))); + function joinRoom(roomIdOrAlias) { + joiningRooms.add(roomIdOrAlias); + updateJoiningRooms(new Set(Array.from(joiningRooms))); roomActions.join(roomIdOrAlias, false); } - function renderChannelList(channels) { - return channels.map((channel) => { - const alias = typeof channel.canonical_alias === 'string' ? channel.canonical_alias : channel.room_id; - const name = typeof channel.name === 'string' ? channel.name : alias; - const isJoined = initMatrix.roomList.rooms.has(channel.room_id); + function renderRoomList(rooms) { + return rooms.map((room) => { + const alias = typeof room.canonical_alias === 'string' ? room.canonical_alias : room.room_id; + const name = typeof room.name === 'string' ? room.name : alias; + const isJoined = initMatrix.roomList.rooms.has(room.room_id); return ( - - {isJoined && } - {!isJoined && (joiningChannels.has(channel.room_id) ? : )} + {isJoined && } + {!isJoined && (joiningRooms.has(room.room_id) ? : )} )} /> @@ -210,26 +210,26 @@ function PublicChannels({ isOpen, searchTerm, onRequestClose }) { return ( } onRequestClose={onRequestClose} > -
-
{ e.preventDefault(); searchChannels(); }}> -
- +
+ { e.preventDefault(); searchRooms(); }}> +
+
-
+
{ typeof searchQuery.name !== 'undefined' && isSearching && ( searchQuery.name === '' ? (
- {`Loading public channels from ${searchQuery.homeserver}...`} + {`Loading public rooms from ${searchQuery.homeserver}...`}
) : ( @@ -243,28 +243,28 @@ function PublicChannels({ isOpen, searchTerm, onRequestClose }) { { typeof searchQuery.name !== 'undefined' && !isSearching && ( searchQuery.name === '' - ? {`Public channels on ${searchQuery.homeserver}.`} + ? {`Public rooms on ${searchQuery.homeserver}.`} : {`Search result for "${searchQuery.name}" on ${searchQuery.homeserver}.`} ) } { searchQuery.error && ( <> - {searchQuery.error} + {searchQuery.error} {typeof searchQuery.alias === 'string' && ( )} )}
- { publicChannels.length !== 0 && ( -
- { renderChannelList(publicChannels) } + { publicRooms.length !== 0 && ( +
+ { renderRoomList(publicRooms) }
)} - { publicChannels.length !== 0 && publicChannels.length % SEARCH_LIMIT === 0 && ( -
+ { publicRooms.length !== 0 && publicRooms.length % SEARCH_LIMIT === 0 && ( +
{ isViewMore !== true && ( - + )} { isViewMore && }
@@ -274,14 +274,14 @@ function PublicChannels({ isOpen, searchTerm, onRequestClose }) { ); } -PublicChannels.defaultProps = { +PublicRooms.defaultProps = { searchTerm: undefined, }; -PublicChannels.propTypes = { +PublicRooms.propTypes = { isOpen: PropTypes.bool.isRequired, searchTerm: PropTypes.string, onRequestClose: PropTypes.func.isRequired, }; -export default PublicChannels; +export default PublicRooms; diff --git a/src/app/organisms/public-channels/PublicChannels.scss b/src/app/organisms/public-rooms/PublicRooms.scss similarity index 98% rename from src/app/organisms/public-channels/PublicChannels.scss rename to src/app/organisms/public-rooms/PublicRooms.scss index 3eef31017..66b77c0ac 100644 --- a/src/app/organisms/public-channels/PublicChannels.scss +++ b/src/app/organisms/public-rooms/PublicRooms.scss @@ -1,4 +1,4 @@ -.public-channels { +.public-rooms { margin: 0 var(--sp-normal); margin-right: var(--sp-extra-tight); margin-top: var(--sp-extra-tight); @@ -75,7 +75,7 @@ } } - & .channel-tile { + & .room-tile { margin-top: var(--sp-normal); &__options { align-self: flex-end; diff --git a/src/app/organisms/pw/Windows.jsx b/src/app/organisms/pw/Windows.jsx index 8a0afd3d3..32a0ee1b0 100644 --- a/src/app/organisms/pw/Windows.jsx +++ b/src/app/organisms/pw/Windows.jsx @@ -4,17 +4,17 @@ import cons from '../../../client/state/cons'; import navigation from '../../../client/state/navigation'; import InviteList from '../invite-list/InviteList'; -import PublicChannels from '../public-channels/PublicChannels'; -import CreateChannel from '../create-channel/CreateChannel'; +import PublicRooms from '../public-rooms/PublicRooms'; +import CreateRoom from '../create-room/CreateRoom'; import InviteUser from '../invite-user/InviteUser'; import Settings from '../settings/Settings'; function Windows() { const [isInviteList, changeInviteList] = useState(false); - const [publicChannels, changePublicChannels] = useState({ + const [publicRooms, changePublicRooms] = useState({ isOpen: false, searchTerm: undefined, }); - const [isCreateChannel, changeCreateChannel] = useState(false); + const [isCreateRoom, changeCreateRoom] = useState(false); const [inviteUser, changeInviteUser] = useState({ isOpen: false, roomId: undefined, term: undefined, }); @@ -23,14 +23,14 @@ function Windows() { function openInviteList() { changeInviteList(true); } - function openPublicChannels(searchTerm) { - changePublicChannels({ + function openPublicRooms(searchTerm) { + changePublicRooms({ isOpen: true, searchTerm, }); } - function openCreateChannel() { - changeCreateChannel(true); + function openCreateRoom() { + changeCreateRoom(true); } function openInviteUser(roomId, searchTerm) { changeInviteUser({ @@ -45,14 +45,14 @@ function Windows() { useEffect(() => { navigation.on(cons.events.navigation.INVITE_LIST_OPENED, openInviteList); - navigation.on(cons.events.navigation.PUBLIC_CHANNELS_OPENED, openPublicChannels); - navigation.on(cons.events.navigation.CREATE_CHANNEL_OPENED, openCreateChannel); + navigation.on(cons.events.navigation.PUBLIC_ROOMS_OPENED, openPublicRooms); + navigation.on(cons.events.navigation.CREATE_ROOM_OPENED, openCreateRoom); navigation.on(cons.events.navigation.INVITE_USER_OPENED, openInviteUser); navigation.on(cons.events.navigation.SETTINGS_OPENED, openSettings); return () => { navigation.removeListener(cons.events.navigation.INVITE_LIST_OPENED, openInviteList); - navigation.removeListener(cons.events.navigation.PUBLIC_CHANNELS_OPENED, openPublicChannels); - navigation.removeListener(cons.events.navigation.CREATE_CHANNEL_OPENED, openCreateChannel); + navigation.removeListener(cons.events.navigation.PUBLIC_ROOMS_OPENED, openPublicRooms); + navigation.removeListener(cons.events.navigation.CREATE_ROOM_OPENED, openCreateRoom); navigation.removeListener(cons.events.navigation.INVITE_USER_OPENED, openInviteUser); navigation.removeListener(cons.events.navigation.SETTINGS_OPENED, openSettings); }; @@ -64,14 +64,14 @@ function Windows() { isOpen={isInviteList} onRequestClose={() => changeInviteList(false)} /> - changePublicChannels({ isOpen: false, searchTerm: undefined })} + changePublicRooms({ isOpen: false, searchTerm: undefined })} /> - changeCreateChannel(false)} + changeCreateRoom(false)} /> { @@ -30,11 +30,11 @@ function Channel() { if (selectedRoomId === null) return ; return ( -
- +
+ { isDrawerVisible && }
); } -export default Channel; +export default Room; diff --git a/src/app/organisms/channel/Channel.scss b/src/app/organisms/room/Room.scss similarity index 61% rename from src/app/organisms/channel/Channel.scss rename to src/app/organisms/room/Room.scss index 1d6b6ee44..cea4bad9c 100644 --- a/src/app/organisms/channel/Channel.scss +++ b/src/app/organisms/room/Room.scss @@ -1,4 +1,4 @@ -.channel-container { +.room-container { display: flex; height: 100%; } \ No newline at end of file diff --git a/src/app/organisms/channel/ChannelView.jsx b/src/app/organisms/room/RoomView.jsx similarity index 83% rename from src/app/organisms/channel/ChannelView.jsx rename to src/app/organisms/room/RoomView.jsx index 07b9bf1c6..edb427d2e 100644 --- a/src/app/organisms/channel/ChannelView.jsx +++ b/src/app/organisms/room/RoomView.jsx @@ -1,6 +1,6 @@ import React, { useState, useEffect, useRef } from 'react'; import PropTypes from 'prop-types'; -import './ChannelView.scss'; +import './RoomView.scss'; import EventEmitter from 'events'; @@ -8,11 +8,11 @@ import RoomTimeline from '../../../client/state/RoomTimeline'; import ScrollView from '../../atoms/scroll/ScrollView'; -import ChannelViewHeader from './ChannelViewHeader'; -import ChannelViewContent from './ChannelViewContent'; -import ChannelViewFloating from './ChannelViewFloating'; -import ChannelViewInput from './ChannelViewInput'; -import ChannelViewCmdBar from './ChannelViewCmdBar'; +import RoomViewHeader from './RoomViewHeader'; +import RoomViewContent from './RoomViewContent'; +import RoomViewFloating from './RoomViewFloating'; +import RoomViewInput from './RoomViewInput'; +import RoomViewCmdBar from './RoomViewCmdBar'; import { scrollToBottom, isAtBottom, autoScrollToBottom } from './common'; @@ -22,7 +22,7 @@ let lastScrollTop = 0; let lastScrollHeight = 0; let isReachedBottom = true; let isReachedTop = false; -function ChannelView({ roomId }) { +function RoomView({ roomId }) { const [roomTimeline, updateRoomTimeline] = useState(null); const timelineSVRef = useRef(null); @@ -101,13 +101,13 @@ function ChannelView({ roomId }) { } return ( -
- -
-
+
+ +
+
{roomTimeline !== null && ( - {roomTimeline !== null && ( - {roomTimeline !== null && ( -
- + - ); } -ChannelView.propTypes = { +RoomView.propTypes = { roomId: PropTypes.string.isRequired, }; -export default ChannelView; +export default RoomView; diff --git a/src/app/organisms/channel/ChannelView.scss b/src/app/organisms/room/RoomView.scss similarity index 57% rename from src/app/organisms/channel/ChannelView.scss rename to src/app/organisms/room/RoomView.scss index a50a9ae38..dd7e96105 100644 --- a/src/app/organisms/channel/ChannelView.scss +++ b/src/app/organisms/room/RoomView.scss @@ -1,24 +1,24 @@ -.channel-view-flexBox { +.room-view-flexBox { display: flex; flex-direction: column; } -.channel-view-flexItem { +.room-view-flexItem { flex: 1; min-height: 0; min-width: 0; } -.channel-view { - @extend .channel-view-flexItem; - @extend .channel-view-flexBox; +.room-view { + @extend .room-view-flexItem; + @extend .room-view-flexBox; &__content-wrapper { - @extend .channel-view-flexItem; - @extend .channel-view-flexBox; + @extend .room-view-flexItem; + @extend .room-view-flexBox; } &__scrollable { - @extend .channel-view-flexItem; + @extend .room-view-flexItem; position: relative; } diff --git a/src/app/organisms/channel/ChannelViewCmdBar.jsx b/src/app/organisms/room/RoomViewCmdBar.jsx similarity index 95% rename from src/app/organisms/channel/ChannelViewCmdBar.jsx rename to src/app/organisms/room/RoomViewCmdBar.jsx index 40d3ff51c..7f8f80904 100644 --- a/src/app/organisms/channel/ChannelViewCmdBar.jsx +++ b/src/app/organisms/room/RoomViewCmdBar.jsx @@ -1,7 +1,7 @@ /* eslint-disable react/prop-types */ import React, { useState, useEffect } from 'react'; import PropTypes from 'prop-types'; -import './ChannelViewCmdBar.scss'; +import './RoomViewCmdBar.scss'; import parse from 'html-react-parser'; import twemoji from 'twemoji'; @@ -11,8 +11,8 @@ import { toggleMarkdown } from '../../../client/action/settings'; import * as roomActions from '../../../client/action/room'; import { selectRoom, - openCreateChannel, - openPublicChannels, + openCreateRoom, + openPublicRooms, openInviteUser, openReadReceipts, } from '../../../client/action/navigation'; @@ -41,17 +41,17 @@ const commands = [{ description: 'Start direct message with user. Example: /startDM/@johndoe.matrix.org', exe: (roomId, searchTerm) => openInviteUser(undefined, searchTerm), }, { - name: 'createChannel', - description: 'Create new channel', - exe: () => openCreateChannel(), + name: 'createRoom', + description: 'Create new room', + exe: () => openCreateRoom(), }, { name: 'join', isOptions: true, - description: 'Join channel with alias. Example: /join/#cinny:matrix.org', - exe: (roomId, searchTerm) => openPublicChannels(searchTerm), + description: 'Join room with alias. Example: /join/#cinny:matrix.org', + exe: (roomId, searchTerm) => openPublicRooms(searchTerm), }, { name: 'leave', - description: 'Leave current channel', + description: 'Leave current room', exe: (roomId) => roomActions.leave(roomId), }, { name: 'invite', @@ -70,10 +70,10 @@ function CmdHelp() { /command_name Go-to commands {'>*space_name'} - {'>#channel_name'} + {'>#room_name'} {'>@people_name'} - Autofill command - :emoji_name: + Autofill commands + :emoji_name @name )} @@ -174,7 +174,7 @@ function getCmdActivationMessage(prefix) { const cmd = { '/': () => genMessage('General command mode activated. ', 'Type command name for suggestions.'), '>*': () => genMessage('Go-to command mode activated. ', 'Type space name for suggestions.'), - '>#': () => genMessage('Go-to command mode activated. ', 'Type channel name for suggestions.'), + '>#': () => genMessage('Go-to command mode activated. ', 'Type room name for suggestions.'), '>@': () => genMessage('Go-to command mode activated. ', 'Type people name for suggestions.'), ':': () => genMessage('Emoji autofill command mode activated. ', 'Type emoji shortcut for suggestions.'), '@': () => genMessage('Name autofill command mode activated. ', 'Type name for suggestions.'), @@ -273,7 +273,7 @@ function getCmdSuggestions({ prefix, option, suggestions }, fireCmd) { const cmd = { '/': (cmds) => getGenCmdSuggestions(prefix, cmds), '>*': (spaces) => getRoomsSuggestion(prefix, spaces), - '>#': (channels) => getRoomsSuggestion(prefix, channels), + '>#': (rooms) => getRoomsSuggestion(prefix, rooms), '>@': (peoples) => getRoomsSuggestion(prefix, peoples), ':': (emos) => getEmojiSuggestion(prefix, emos), '@': (members) => getNameSuggestion(prefix, members), @@ -284,7 +284,7 @@ function getCmdSuggestions({ prefix, option, suggestions }, fireCmd) { const asyncSearch = new AsyncSearch(); let cmdPrefix; let cmdOption; -function ChannelViewCmdBar({ roomId, roomTimeline, viewEvent }) { +function RoomViewCmdBar({ roomId, roomTimeline, viewEvent }) { const [cmd, setCmd] = useState(null); function displaySuggestions(suggestions) { @@ -466,10 +466,10 @@ function ChannelViewCmdBar({ roomId, roomTimeline, viewEvent }) {
); } -ChannelViewCmdBar.propTypes = { +RoomViewCmdBar.propTypes = { roomId: PropTypes.string.isRequired, roomTimeline: PropTypes.shape({}).isRequired, viewEvent: PropTypes.shape({}).isRequired, }; -export default ChannelViewCmdBar; +export default RoomViewCmdBar; diff --git a/src/app/organisms/channel/ChannelViewCmdBar.scss b/src/app/organisms/room/RoomViewCmdBar.scss similarity index 100% rename from src/app/organisms/channel/ChannelViewCmdBar.scss rename to src/app/organisms/room/RoomViewCmdBar.scss diff --git a/src/app/organisms/channel/ChannelViewContent.jsx b/src/app/organisms/room/RoomViewContent.jsx similarity index 96% rename from src/app/organisms/channel/ChannelViewContent.jsx rename to src/app/organisms/room/RoomViewContent.jsx index 063718b7b..18b8d34d7 100644 --- a/src/app/organisms/channel/ChannelViewContent.jsx +++ b/src/app/organisms/room/RoomViewContent.jsx @@ -1,7 +1,7 @@ /* eslint-disable react/prop-types */ import React, { useState, useEffect, useLayoutEffect } from 'react'; import PropTypes from 'prop-types'; -import './ChannelViewContent.scss'; +import './RoomViewContent.scss'; import dateFormat from 'dateformat'; @@ -29,7 +29,7 @@ import { PlaceholderMessage, } from '../../molecules/message/Message'; import * as Media from '../../molecules/media/Media'; -import ChannelIntro from '../../molecules/channel-intro/ChannelIntro'; +import RoomIntro from '../../molecules/room-intro/RoomIntro'; import TimelineChange from '../../molecules/message/TimelineChange'; import ReplyArrowIC from '../../../../public/res/ic/outlined/reply-arrow.svg'; @@ -131,20 +131,20 @@ function genMediaContent(mE) { } } -function genChannelIntro(mEvent, roomTimeline) { +function genRoomIntro(mEvent, roomTimeline) { const mx = initMatrix.matrixClient; const roomTopic = roomTimeline.room.currentState.getStateEvents('m.room.topic')[0]?.getContent().topic; const isDM = initMatrix.roomList.directs.has(roomTimeline.roomId); let avatarSrc = roomTimeline.room.getAvatarUrl(mx.baseUrl, 80, 80, 'crop'); avatarSrc = isDM ? roomTimeline.room.getAvatarFallbackMember()?.getAvatarUrl(mx.baseUrl, 80, 80, 'crop') : avatarSrc; return ( - ); @@ -188,7 +188,7 @@ function pickEmoji(e, roomId, eventId, roomTimeline) { } let wasAtBottom = true; -function ChannelViewContent({ +function RoomViewContent({ roomId, roomTimeline, timelineScroll, viewEvent, }) { const [isReachedTimelineEnd, setIsReachedTimelineEnd] = useState(false); @@ -517,7 +517,7 @@ function ChannelViewContent({ } function renderMessage(mEvent) { - if (mEvent.getType() === 'm.room.create') return genChannelIntro(mEvent, roomTimeline); + if (mEvent.getType() === 'm.room.create') return genRoomIntro(mEvent, roomTimeline); if ( mEvent.getType() !== 'm.room.message' && mEvent.getType() !== 'm.room.encrypted' @@ -562,20 +562,20 @@ function ChannelViewContent({ } return ( -
+
{ roomTimeline.timeline[0].getType() !== 'm.room.create' && !isReachedTimelineEnd && genPlaceholders() } - { roomTimeline.timeline[0].getType() !== 'm.room.create' && isReachedTimelineEnd && genChannelIntro(undefined, roomTimeline)} + { roomTimeline.timeline[0].getType() !== 'm.room.create' && isReachedTimelineEnd && genRoomIntro(undefined, roomTimeline)} { roomTimeline.timeline.map(renderMessage) }
); } -ChannelViewContent.propTypes = { +RoomViewContent.propTypes = { roomId: PropTypes.string.isRequired, roomTimeline: PropTypes.shape({}).isRequired, timelineScroll: PropTypes.shape({}).isRequired, viewEvent: PropTypes.shape({}).isRequired, }; -export default ChannelViewContent; +export default RoomViewContent; diff --git a/src/app/organisms/channel/ChannelViewContent.scss b/src/app/organisms/room/RoomViewContent.scss similarity index 90% rename from src/app/organisms/channel/ChannelViewContent.scss rename to src/app/organisms/room/RoomViewContent.scss index f27023320..cfb328c90 100644 --- a/src/app/organisms/channel/ChannelViewContent.scss +++ b/src/app/organisms/room/RoomViewContent.scss @@ -1,4 +1,4 @@ -.channel-view__content { +.room-view__content { min-height: 100%; display: flex; flex-direction: column; diff --git a/src/app/organisms/channel/ChannelViewFloating.jsx b/src/app/organisms/room/RoomViewFloating.jsx similarity index 86% rename from src/app/organisms/channel/ChannelViewFloating.jsx rename to src/app/organisms/room/RoomViewFloating.jsx index e3e65daad..56b7a9be6 100644 --- a/src/app/organisms/channel/ChannelViewFloating.jsx +++ b/src/app/organisms/room/RoomViewFloating.jsx @@ -1,7 +1,7 @@ /* eslint-disable react/prop-types */ import React, { useState, useEffect } from 'react'; import PropTypes from 'prop-types'; -import './ChannelViewFloating.scss'; +import './RoomViewFloating.scss'; import initMatrix from '../../../client/initMatrix'; import cons from '../../../client/state/cons'; @@ -13,7 +13,7 @@ import ChevronBottomIC from '../../../../public/res/ic/outlined/chevron-bottom.s import { getUsersActionJsx } from './common'; -function ChannelViewFloating({ +function RoomViewFloating({ roomId, roomTimeline, timelineScroll, viewEvent, }) { const [reachedBottom, setReachedBottom] = useState(true); @@ -53,11 +53,11 @@ function ChannelViewFloating({ return ( <> -
+
{getTypingMessage(typingMembers)}
-
+
{ timelineScroll.enableSmoothScroll(); @@ -71,7 +71,7 @@ function ChannelViewFloating({ ); } -ChannelViewFloating.propTypes = { +RoomViewFloating.propTypes = { roomId: PropTypes.string.isRequired, roomTimeline: PropTypes.shape({}).isRequired, timelineScroll: PropTypes.shape({ @@ -80,4 +80,4 @@ ChannelViewFloating.propTypes = { viewEvent: PropTypes.shape({}).isRequired, }; -export default ChannelViewFloating; +export default RoomViewFloating; diff --git a/src/app/organisms/channel/ChannelViewFloating.scss b/src/app/organisms/room/RoomViewFloating.scss similarity index 99% rename from src/app/organisms/channel/ChannelViewFloating.scss rename to src/app/organisms/room/RoomViewFloating.scss index 3c1593c28..501c9f45c 100644 --- a/src/app/organisms/channel/ChannelViewFloating.scss +++ b/src/app/organisms/room/RoomViewFloating.scss @@ -1,4 +1,4 @@ -.channel-view { +.room-view { &__typing { display: flex; padding: var(--sp-ultra-tight) var(--sp-normal); diff --git a/src/app/organisms/channel/ChannelViewHeader.jsx b/src/app/organisms/room/RoomViewHeader.jsx similarity index 95% rename from src/app/organisms/channel/ChannelViewHeader.jsx rename to src/app/organisms/room/RoomViewHeader.jsx index f89b63436..d9b8aa97a 100644 --- a/src/app/organisms/channel/ChannelViewHeader.jsx +++ b/src/app/organisms/room/RoomViewHeader.jsx @@ -17,7 +17,7 @@ import VerticalMenuIC from '../../../../public/res/ic/outlined/vertical-menu.svg import LeaveArrowIC from '../../../../public/res/ic/outlined/leave-arrow.svg'; import AddUserIC from '../../../../public/res/ic/outlined/add-user.svg'; -function ChannelViewHeader({ roomId }) { +function RoomViewHeader({ roomId }) { const mx = initMatrix.matrixClient; const isDM = initMatrix.roomList.directs.has(roomId); let avatarSrc = mx.getRoom(roomId).getAvatarUrl(mx.baseUrl, 36, 36, 'crop'); @@ -55,8 +55,8 @@ function ChannelViewHeader({ roomId }) { ); } -ChannelViewHeader.propTypes = { +RoomViewHeader.propTypes = { roomId: PropTypes.string.isRequired, }; -export default ChannelViewHeader; +export default RoomViewHeader; diff --git a/src/app/organisms/channel/ChannelViewInput.jsx b/src/app/organisms/room/RoomViewInput.jsx similarity index 93% rename from src/app/organisms/channel/ChannelViewInput.jsx rename to src/app/organisms/room/RoomViewInput.jsx index f335bb4fa..a72f1e34e 100644 --- a/src/app/organisms/channel/ChannelViewInput.jsx +++ b/src/app/organisms/room/RoomViewInput.jsx @@ -1,7 +1,7 @@ /* eslint-disable react/prop-types */ import React, { useState, useEffect, useRef } from 'react'; import PropTypes from 'prop-types'; -import './ChannelViewInput.scss'; +import './RoomViewInput.scss'; import TextareaAutosize from 'react-autosize-textarea'; @@ -33,7 +33,7 @@ const CMD_REGEX = /(\/|>[#*@]|:|@)(\S*)$/; let isTyping = false; let isCmdActivated = false; let cmdCursorPos = null; -function ChannelViewInput({ +function RoomViewInput({ roomId, roomTimeline, timelineScroll, viewEvent, }) { const [attachment, setAttachment] = useState(null); @@ -304,14 +304,14 @@ function ChannelViewInput({ function renderInputs() { return ( <> -
+
-
+
{roomTimeline.isEncryptedRoom() && } - + }
-
+
{ const boxInfo = e.target.getBoundingClientRect(); @@ -346,14 +346,14 @@ function ChannelViewInput({ function attachFile() { const fileType = attachment.type.slice(0, attachment.type.indexOf('/')); return ( -
-
+
+
{fileType === 'image' && {attachment.name}} {fileType === 'video' && } {fileType === 'audio' && } {fileType !== 'image' && fileType !== 'video' && fileType !== 'audio' && }
-
+
{attachment.name} {`size: ${bytesToSize(attachment.size)}`}
@@ -363,7 +363,7 @@ function ChannelViewInput({ function attachReply() { return ( -
+
{ roomsInput.cancelReplyTo(roomId); @@ -387,17 +387,17 @@ function ChannelViewInput({ <> { replyTo !== null && attachReply()} { attachment !== null && attachFile() } -
{ e.preventDefault(); }}> + { e.preventDefault(); }}> { roomTimeline.room.isSpaceRoom() - ? Spaces are yet to be implemented + ? Spaces are yet to be implemented : renderInputs() }
); } -ChannelViewInput.propTypes = { +RoomViewInput.propTypes = { roomId: PropTypes.string.isRequired, roomTimeline: PropTypes.shape({}).isRequired, timelineScroll: PropTypes.shape({ @@ -410,4 +410,4 @@ ChannelViewInput.propTypes = { viewEvent: PropTypes.shape({}).isRequired, }; -export default ChannelViewInput; +export default RoomViewInput; diff --git a/src/app/organisms/channel/ChannelViewInput.scss b/src/app/organisms/room/RoomViewInput.scss similarity index 97% rename from src/app/organisms/channel/ChannelViewInput.scss rename to src/app/organisms/room/RoomViewInput.scss index 2bc012119..112a4c4aa 100644 --- a/src/app/organisms/channel/ChannelViewInput.scss +++ b/src/app/organisms/room/RoomViewInput.scss @@ -1,4 +1,4 @@ -.channel-input { +.room-input { padding: var(--sp-extra-tight) calc(var(--sp-normal) - 2px); display: flex; min-height: 48px; @@ -73,7 +73,7 @@ } } -.channel-attachment { +.room-attachment { --side-spacing: calc(var(--sp-normal) + var(--av-small) + var(--sp-tight)); display: flex; align-items: center; @@ -112,7 +112,7 @@ } } -.channel-reply { +.room-reply { display: flex; align-items: center; background-color: var(--bg-surface-low); diff --git a/src/app/organisms/channel/common.jsx b/src/app/organisms/room/common.jsx similarity index 99% rename from src/app/organisms/channel/common.jsx rename to src/app/organisms/room/common.jsx index 46fbc5dfe..2d876d7e0 100644 --- a/src/app/organisms/channel/common.jsx +++ b/src/app/organisms/room/common.jsx @@ -9,7 +9,7 @@ function getTimelineJSXMessages() { return ( <> {user} - {' joined the channel'} + {' joined the room'} ); }, @@ -18,7 +18,7 @@ function getTimelineJSXMessages() { return ( <> {user} - {' left the channel'} + {' left the room'} {reasonMsg} ); diff --git a/src/app/templates/client/Client.jsx b/src/app/templates/client/Client.jsx index 3d8b45d06..8f89d4354 100644 --- a/src/app/templates/client/Client.jsx +++ b/src/app/templates/client/Client.jsx @@ -4,7 +4,7 @@ import './Client.scss'; import Text from '../../atoms/text/Text'; import Spinner from '../../atoms/spinner/Spinner'; import Navigation from '../../organisms/navigation/Navigation'; -import Channel from '../../organisms/channel/Channel'; +import Room from '../../organisms/room/Room'; import Windows from '../../organisms/pw/Windows'; import Dialogs from '../../organisms/pw/Dialogs'; import EmojiBoardOpener from '../../organisms/emoji-board/EmojiBoardOpener'; @@ -38,8 +38,8 @@ function Client() {
-
- +
+
diff --git a/src/app/templates/client/Client.scss b/src/app/templates/client/Client.scss index f1d901ef3..05280985b 100644 --- a/src/app/templates/client/Client.scss +++ b/src/app/templates/client/Client.scss @@ -6,7 +6,7 @@ .navigation__wrapper { width: var(--navigation-width); } -.channel__wrapper { +.room__wrapper { flex: 1; min-width: 0; background-color: var(--bg-surface); diff --git a/src/client/action/navigation.js b/src/client/action/navigation.js index 78c001f0e..cf40b4ae2 100644 --- a/src/client/action/navigation.js +++ b/src/client/action/navigation.js @@ -27,16 +27,16 @@ function openInviteList() { }); } -function openPublicChannels(searchTerm) { +function openPublicRooms(searchTerm) { appDispatcher.dispatch({ - type: cons.actions.navigation.OPEN_PUBLIC_CHANNELS, + type: cons.actions.navigation.OPEN_PUBLIC_ROOMS, searchTerm, }); } -function openCreateChannel() { +function openCreateRoom() { appDispatcher.dispatch({ - type: cons.actions.navigation.OPEN_CREATE_CHANNEL, + type: cons.actions.navigation.OPEN_CREATE_ROOM, }); } @@ -75,8 +75,8 @@ export { selectRoom, togglePeopleDrawer, openInviteList, - openPublicChannels, - openCreateChannel, + openPublicRooms, + openCreateRoom, openInviteUser, openSettings, openEmojiBoard, diff --git a/src/client/state/cons.js b/src/client/state/cons.js index b5de3d669..f5e92b0f5 100644 --- a/src/client/state/cons.js +++ b/src/client/state/cons.js @@ -12,8 +12,8 @@ const cons = { SELECT_ROOM: 'SELECT_ROOM', TOGGLE_PEOPLE_DRAWER: 'TOGGLE_PEOPLE_DRAWER', OPEN_INVITE_LIST: 'OPEN_INVITE_LIST', - OPEN_PUBLIC_CHANNELS: 'OPEN_PUBLIC_CHANNELS', - OPEN_CREATE_CHANNEL: 'OPEN_CREATE_CHANNEL', + OPEN_PUBLIC_ROOMS: 'OPEN_PUBLIC_ROOMS', + OPEN_CREATE_ROOM: 'OPEN_CREATE_ROOM', OPEN_INVITE_USER: 'OPEN_INVITE_USER', OPEN_SETTINGS: 'OPEN_SETTINGS', OPEN_EMOJIBOARD: 'OPEN_EMOJIBOARD', @@ -37,8 +37,8 @@ const cons = { ROOM_SELECTED: 'ROOM_SELECTED', PEOPLE_DRAWER_TOGGLED: 'PEOPLE_DRAWER_TOGGLED', INVITE_LIST_OPENED: 'INVITE_LIST_OPENED', - PUBLIC_CHANNELS_OPENED: 'PUBLIC_CHANNELS_OPENED', - CREATE_CHANNEL_OPENED: 'CREATE_CHANNEL_OPENED', + PUBLIC_ROOMS_OPENED: 'PUBLIC_ROOMS_OPENED', + CREATE_ROOM_OPENED: 'CREATE_ROOM_OPENED', INVITE_USER_OPENED: 'INVITE_USER_OPENED', SETTINGS_OPENED: 'SETTINGS_OPENED', EMOJIBOARD_OPENED: 'EMOJIBOARD_OPENED', diff --git a/src/client/state/navigation.js b/src/client/state/navigation.js index 1aa6c0c24..5c108af90 100644 --- a/src/client/state/navigation.js +++ b/src/client/state/navigation.js @@ -37,11 +37,11 @@ class Navigation extends EventEmitter { [cons.actions.navigation.OPEN_INVITE_LIST]: () => { this.emit(cons.events.navigation.INVITE_LIST_OPENED); }, - [cons.actions.navigation.OPEN_PUBLIC_CHANNELS]: () => { - this.emit(cons.events.navigation.PUBLIC_CHANNELS_OPENED, action.searchTerm); + [cons.actions.navigation.OPEN_PUBLIC_ROOMS]: () => { + this.emit(cons.events.navigation.PUBLIC_ROOMS_OPENED, action.searchTerm); }, - [cons.actions.navigation.OPEN_CREATE_CHANNEL]: () => { - this.emit(cons.events.navigation.CREATE_CHANNEL_OPENED); + [cons.actions.navigation.OPEN_CREATE_ROOM]: () => { + this.emit(cons.events.navigation.CREATE_ROOM_OPENED); }, [cons.actions.navigation.OPEN_INVITE_USER]: () => { this.emit(cons.events.navigation.INVITE_USER_OPENED, action.roomId, action.searchTerm); From 180973d49f9b97bb7964f017d980a13f97a32afd Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 1 Sep 2021 15:47:50 +0530 Subject: [PATCH 02/39] updated license and readme --- LICENSE | 2 +- README.md | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index ff85e6a67..42d4c6cae 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2021 Ajay Bura (ajbura) +Copyright (c) 2021 Ajay Bura (ajbura) and other contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 97205b7ae..8187d6550 100644 --- a/README.md +++ b/README.md @@ -42,4 +42,10 @@ docker run -p 8080:80 cinny:latest This will forward your `localhost` port 8080 to the container's port 80. You can visit the app in your browser by navigating to `http://localhost:8080`. +## License +Copyright (c) 2021 Ajay Bura (ajbura) and other contributors + +Code licensed under the MIT License: + +Graphics licensed under CC-BY 4.0: \ No newline at end of file From e7f4a5bd59bec65263bba342fb1467018880e85b Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 1 Sep 2021 21:01:24 +0530 Subject: [PATCH 03/39] Added workflows for docker/netlify --- .github/workflows/docker.yaml | 34 +++++++++++++++++++++++++++++ .github/workflows/netlify-dev.yaml | 21 ++++++++++++++++++ .github/workflows/netlify-prod.yaml | 20 +++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 .github/workflows/docker.yaml create mode 100644 .github/workflows/netlify-dev.yaml create mode 100644 .github/workflows/netlify-prod.yaml diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml new file mode 100644 index 000000000..bada57869 --- /dev/null +++ b/.github/workflows/docker.yaml @@ -0,0 +1,34 @@ +name: Publish Docker image + +on: + release: + types: [published] + +jobs: + push_to_registry: + name: Push Docker image to Docker Hub + runs-on: ubuntu-latest + + steps: + - name: Check out the repo + uses: actions/checkout@v2 + + - name: Log in to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v3 + with: + images: ajbura/cinny + + - name: Build and push Docker image + uses: docker/build-push-action@v2 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} \ No newline at end of file diff --git a/.github/workflows/netlify-dev.yaml b/.github/workflows/netlify-dev.yaml new file mode 100644 index 000000000..b2174a794 --- /dev/null +++ b/.github/workflows/netlify-dev.yaml @@ -0,0 +1,21 @@ +name: 'Deploy to Netlify' + +on: + push: + branches: + - dev + +jobs: + deploy: + name: 'Deploy' + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + - uses: jsmrcaga/action-netlify-deploy@master + with: + NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} + NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE2_ID }} + BUILD_DIRECTORY: "dist" + NETLIFY_DEPLOY_MESSAGE: "Dev deploy v${{ github.ref }}" + NETLIFY_DEPLOY_TO_PROD: true \ No newline at end of file diff --git a/.github/workflows/netlify-prod.yaml b/.github/workflows/netlify-prod.yaml new file mode 100644 index 000000000..962ae1a29 --- /dev/null +++ b/.github/workflows/netlify-prod.yaml @@ -0,0 +1,20 @@ +name: 'Deploy to Netlify' + +on: + release: + types: [published] + +jobs: + deploy: + name: 'Deploy' + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + - uses: jsmrcaga/action-netlify-deploy@master + with: + NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} + NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} + BUILD_DIRECTORY: "dist" + NETLIFY_DEPLOY_MESSAGE: "Prod deploy v${{ github.ref }}" + NETLIFY_DEPLOY_TO_PROD: true \ No newline at end of file From 0ae994de5660ceff411c0621f5a09c9a254c2c62 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 2 Sep 2021 19:15:28 +0530 Subject: [PATCH 04/39] Added className prop to button comp --- src/app/atoms/button/Button.jsx | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/app/atoms/button/Button.jsx b/src/app/atoms/button/Button.jsx index b6e4a0fb1..bfe06f663 100644 --- a/src/app/atoms/button/Button.jsx +++ b/src/app/atoms/button/Button.jsx @@ -7,26 +7,29 @@ import RawIcon from '../system-icons/RawIcon'; import { blurOnBubbling } from './script'; function Button({ - id, variant, iconSrc, type, onClick, children, disabled, + id, className, variant, iconSrc, + type, onClick, children, disabled, }) { const iconClass = (iconSrc === null) ? '' : `btn-${variant}--icon`; return ( ); } Button.defaultProps = { id: '', + className: null, variant: 'surface', iconSrc: null, type: 'button', @@ -36,6 +39,7 @@ Button.defaultProps = { Button.propTypes = { id: PropTypes.string, + className: PropTypes.string, variant: PropTypes.oneOf(['surface', 'primary', 'caution', 'danger']), iconSrc: PropTypes.string, type: PropTypes.oneOf(['button', 'submit']), From 6c1a602bdcf5cca2a07571b7bc1227af6effe006 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 2 Sep 2021 19:17:33 +0530 Subject: [PATCH 05/39] Made tooltip optional in IconButton --- src/app/atoms/button/IconButton.jsx | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/app/atoms/button/IconButton.jsx b/src/app/atoms/button/IconButton.jsx index 34e2424e2..f92752e5a 100644 --- a/src/app/atoms/button/IconButton.jsx +++ b/src/app/atoms/button/IconButton.jsx @@ -16,11 +16,8 @@ import Text from '../text/Text'; const IconButton = React.forwardRef(({ variant, size, type, tooltip, tooltipPlacement, src, onClick, -}, ref) => ( - {tooltip}} - > +}, ref) => { + const btn = ( - -)); + ); + if (tooltip === null) return btn; + return ( + {tooltip}} + > + {btn} + + ); +}); IconButton.defaultProps = { variant: 'surface', size: 'normal', type: 'button', + tooltip: null, tooltipPlacement: 'top', onClick: null, }; @@ -45,7 +52,7 @@ IconButton.propTypes = { variant: PropTypes.oneOf(['surface']), size: PropTypes.oneOf(['normal', 'small', 'extra-small']), type: PropTypes.oneOf(['button', 'submit']), - tooltip: PropTypes.string.isRequired, + tooltip: PropTypes.string, tooltipPlacement: PropTypes.oneOf(['top', 'right', 'bottom', 'left']), src: PropTypes.string.isRequired, onClick: PropTypes.func, From 4efc320f2399d55c30ed645b235bb9477de2711f Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 3 Sep 2021 17:58:01 +0530 Subject: [PATCH 06/39] Added space nesting (#52) --- .github/FUNDING.yml | 2 +- .../molecules/room-selector/RoomSelector.scss | 6 +- src/app/organisms/navigation/Directs.jsx | 15 ++-- src/app/organisms/navigation/Drawer.jsx | 31 ++++----- src/app/organisms/navigation/Drawer.scss | 20 ++++-- .../organisms/navigation/DrawerBreadcrumb.jsx | 68 +++++++++++++++++++ .../navigation/DrawerBreadcrumb.scss | 60 ++++++++++++++++ src/app/organisms/navigation/DrawerHeader.jsx | 41 ++++++++--- src/app/organisms/navigation/Home.jsx | 55 +++++++++++---- src/app/organisms/navigation/Selector.jsx | 14 ++-- src/app/organisms/navigation/SideBar.jsx | 8 +-- src/app/organisms/navigation/SideBar.scss | 9 ++- src/app/templates/auth/Auth.jsx | 2 +- src/client/action/navigation.js | 8 +++ src/client/state/RoomList.js | 67 +++++++++++++++--- src/client/state/cons.js | 2 + src/client/state/navigation.js | 39 +++++++---- src/index.scss | 8 +++ 18 files changed, 366 insertions(+), 89 deletions(-) create mode 100644 src/app/organisms/navigation/DrawerBreadcrumb.jsx create mode 100644 src/app/organisms/navigation/DrawerBreadcrumb.scss diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 85499c1be..2189f7f41 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,2 +1,2 @@ -patreon: ajbura +open_collective: cinny liberapay: ajbura \ No newline at end of file diff --git a/src/app/molecules/room-selector/RoomSelector.scss b/src/app/molecules/room-selector/RoomSelector.scss index 61e2cbc2f..9b40fcb13 100644 --- a/src/app/molecules/room-selector/RoomSelector.scss +++ b/src/app/molecules/room-selector/RoomSelector.scss @@ -32,9 +32,11 @@ } } } - &:focus { - outline: none; + &:focus-within { background-color: var(--bg-surface-hover); + & button { + outline: none; + } } &:active { background-color: var(--bg-surface-active); diff --git a/src/app/organisms/navigation/Directs.jsx b/src/app/organisms/navigation/Directs.jsx index 9c347e961..a907980bc 100644 --- a/src/app/organisms/navigation/Directs.jsx +++ b/src/app/organisms/navigation/Directs.jsx @@ -17,13 +17,13 @@ function Directs() { const [, forceUpdate] = useState({}); - function selectorChanged(activeRoomID, prevActiveRoomId) { + function selectorChanged(selectedRoomId, prevSelectedRoomId) { if (!drawerPostie.hasTopic('selector-change')) return; const addresses = []; - if (drawerPostie.hasSubscriber('selector-change', activeRoomID)) addresses.push(activeRoomID); - if (drawerPostie.hasSubscriber('selector-change', prevActiveRoomId)) addresses.push(prevActiveRoomId); + if (drawerPostie.hasSubscriber('selector-change', selectedRoomId)) addresses.push(selectedRoomId); + if (drawerPostie.hasSubscriber('selector-change', prevSelectedRoomId)) addresses.push(prevSelectedRoomId); if (addresses.length === 0) return; - drawerPostie.post('selector-change', addresses, activeRoomID); + drawerPostie.post('selector-change', addresses, selectedRoomId); } function unreadChanged(roomId) { @@ -35,9 +35,9 @@ function Directs() { function roomListUpdated() { const { spaces, rooms, directs } = initMatrix.roomList; if (!( - spaces.has(navigation.getActiveRoomId()) - || rooms.has(navigation.getActiveRoomId()) - || directs.has(navigation.getActiveRoomId())) + spaces.has(navigation.selectedRoomId) + || rooms.has(navigation.selectedRoomId) + || directs.has(navigation.selectedRoomId)) ) { selectRoom(null); } @@ -62,6 +62,7 @@ function Directs() { key={id} roomId={id} drawerPostie={drawerPostie} + onClick={() => selectRoom(id)} /> )); } diff --git a/src/app/organisms/navigation/Drawer.jsx b/src/app/organisms/navigation/Drawer.jsx index d1dd011df..f8c53eab7 100644 --- a/src/app/organisms/navigation/Drawer.jsx +++ b/src/app/organisms/navigation/Drawer.jsx @@ -7,45 +7,40 @@ import navigation from '../../../client/state/navigation'; import ScrollView from '../../atoms/scroll/ScrollView'; import DrawerHeader from './DrawerHeader'; +import DrawerBreadcrumb from './DrawerBreadcrumb'; import Home from './Home'; import Directs from './Directs'; -function DrawerBradcrumb() { - return ( -
- -
- {/* TODO: bradcrumb space paths when spaces become a thing */} -
-
-
- ); -} - function Drawer() { - const [activeTab, setActiveTab] = useState('home'); + const [selectedTab, setSelectedTab] = useState('home'); + const [spaceId, setSpaceId] = useState(navigation.selectedSpaceId); function onTabChanged(tabId) { - setActiveTab(tabId); + setSelectedTab(tabId); + } + function onSpaceSelected(roomId) { + setSpaceId(roomId); } useEffect(() => { navigation.on(cons.events.navigation.TAB_CHANGED, onTabChanged); + navigation.on(cons.events.navigation.SPACE_SELECTED, onSpaceSelected); return () => { navigation.removeListener(cons.events.navigation.TAB_CHANGED, onTabChanged); + navigation.removeListener(cons.events.navigation.SPACE_SELECTED, onSpaceSelected); }; }, []); return (
- +
- + {selectedTab === 'home' && }
{ - activeTab === 'home' - ? + selectedTab === 'home' + ? : }
diff --git a/src/app/organisms/navigation/Drawer.scss b/src/app/organisms/navigation/Drawer.scss index e5d3f7104..b240ac370 100644 --- a/src/app/organisms/navigation/Drawer.scss +++ b/src/app/organisms/navigation/Drawer.scss @@ -23,18 +23,28 @@ @extend .drawer-flexBox; } } - -.breadcrumb__wrapper { - display: none; - height: var(--header-height); -} .rooms__wrapper { @extend .drawer-flexItem; + position: relative; } .rooms-container { padding-bottom: var(--sp-extra-loose); + &::before { + position: absolute; + top: 0; + + content: ''; + display: inline-block; + width: 100%; + height: 8px; + background-image: linear-gradient( + to bottom, + var(--bg-surface-low), + var(--bg-surface-low-transparent)); + } + & > .room-selector { width: calc(100% - var(--sp-extra-tight)); margin-left: auto; diff --git a/src/app/organisms/navigation/DrawerBreadcrumb.jsx b/src/app/organisms/navigation/DrawerBreadcrumb.jsx new file mode 100644 index 000000000..4df5a6dc1 --- /dev/null +++ b/src/app/organisms/navigation/DrawerBreadcrumb.jsx @@ -0,0 +1,68 @@ +import React, { useState, useEffect, useRef } from 'react'; +import './DrawerBreadcrumb.scss'; + +import initMatrix from '../../../client/initMatrix'; +import cons from '../../../client/state/cons'; +import { selectSpace } from '../../../client/action/navigation'; +import navigation from '../../../client/state/navigation'; + +import Text from '../../atoms/text/Text'; +import RawIcon from '../../atoms/system-icons/RawIcon'; +import Button from '../../atoms/button/Button'; +import ScrollView from '../../atoms/scroll/ScrollView'; + +import ChevronRightIC from '../../../../public/res/ic/outlined/chevron-right.svg'; + +function DrawerBreadcrumb() { + const [, forceUpdate] = useState({}); + const scrollRef = useRef(null); + const mx = initMatrix.matrixClient; + const spacePath = navigation.selectedSpacePath; + + function onSpaceSelected() { + forceUpdate({}); + requestAnimationFrame(() => { + if (scrollRef?.current === null) return; + scrollRef.current.scrollLeft = scrollRef.current.scrollWidth; + }); + } + + useEffect(() => { + navigation.on(cons.events.navigation.SPACE_SELECTED, onSpaceSelected); + return () => { + navigation.removeListener(cons.events.navigation.SPACE_SELECTED, onSpaceSelected); + }; + }, []); + + if (spacePath.length === 0) return null; + + return ( +
+ +
+ + { + spacePath.map((spaceId, index) => ( + + + + + )) + } +
+
+ +
+ ); +} + +export default DrawerBreadcrumb; diff --git a/src/app/organisms/navigation/DrawerBreadcrumb.scss b/src/app/organisms/navigation/DrawerBreadcrumb.scss new file mode 100644 index 000000000..80262a9d0 --- /dev/null +++ b/src/app/organisms/navigation/DrawerBreadcrumb.scss @@ -0,0 +1,60 @@ +.breadcrumb__wrapper { + height: var(--header-height); + position: relative; +} + +.breadcrumb { + display: flex; + align-items: center; + height: 100%; + margin: 0 var(--sp-extra-tight); + + &::before, + &::after { + flex-shrink: 0; + position: absolute; + right: 0; + z-index: 99; + + content: ''; + display: inline-block; + min-width: 8px; + width: 8px; + height: 100%; + background-image: linear-gradient( + to right, + var(--bg-surface-low-transparent), + var(--bg-surface-low) + ); + } + &::before { + left: 0; + right: unset; + background-image: linear-gradient( + to left, + var(--bg-surface-low-transparent), + var(--bg-surface-low) + ); + } + + & > * { + flex-shrink: 0; + } + + & > .btn-surface { + min-width: 0; + padding: var(--sp-extra-tight) 10px; + white-space: nowrap; + box-shadow: none; + & p { + max-width: 86px; + overflow: hidden; + text-overflow: ellipsis; + } + } + + &__btn--selected { + box-shadow: var(--bs-surface-border) !important; + background-color: var(--bg-surface); + } +} \ No newline at end of file diff --git a/src/app/organisms/navigation/DrawerHeader.jsx b/src/app/organisms/navigation/DrawerHeader.jsx index 891553671..686d47634 100644 --- a/src/app/organisms/navigation/DrawerHeader.jsx +++ b/src/app/organisms/navigation/DrawerHeader.jsx @@ -1,9 +1,11 @@ import React from 'react'; import PropTypes from 'prop-types'; +import initMatrix from '../../../client/initMatrix'; import { - openPublicRooms, openCreateRoom, openInviteUser, + selectSpace, openPublicRooms, openCreateRoom, openInviteUser, } from '../../../client/action/navigation'; +import navigation from '../../../client/state/navigation'; import Text from '../../atoms/text/Text'; import Header, { TitleWrapper } from '../../atoms/header/Header'; @@ -13,16 +15,33 @@ import ContextMenu, { MenuItem, MenuHeader } from '../../atoms/context-menu/Cont import PlusIC from '../../../../public/res/ic/outlined/plus.svg'; import HashPlusIC from '../../../../public/res/ic/outlined/hash-plus.svg'; import HashSearchIC from '../../../../public/res/ic/outlined/hash-search.svg'; +import ChevronLeftIC from '../../../../public/res/ic/outlined/chevron-left.svg'; + +function DrawerHeader({ selectedTab, spaceId }) { + const mx = initMatrix.matrixClient; + const tabName = selectedTab === 'home' ? 'Home' : 'Direct messages'; + + const room = mx.getRoom(spaceId); + const spaceName = selectedTab === 'dm' ? null : (room?.name || null); + + function handleBackClick() { + const spacePath = navigation.selectedSpacePath; + if (spacePath.length === 1) { + selectSpace(null); + return; + } + selectSpace(spacePath[spacePath.length - 2]); + } -function DrawerHeader({ activeTab }) { return (
- {(activeTab === 'home' ? 'Home' : 'Direct messages')} + {spaceName || tabName} - {(activeTab === 'dm') - ? openInviteUser()} tooltip="Start DM" src={PlusIC} size="normal" /> - : ( + { spaceName && } + { selectedTab === 'dm' && openInviteUser()} tooltip="Start DM" src={PlusIC} size="normal" /> } + { selectSpace !== 'dm' && !spaceName && ( + <> ( <> @@ -43,13 +62,19 @@ function DrawerHeader({ activeTab }) { )} render={(toggleMenu) => ()} /> - )} + + )} {/* ''} tooltip="Menu" src={VerticalMenuIC} size="normal" /> */}
); } + +DrawerHeader.defaultProps = { + spaceId: null, +}; DrawerHeader.propTypes = { - activeTab: PropTypes.string.isRequired, + selectedTab: PropTypes.string.isRequired, + spaceId: PropTypes.string, }; export default DrawerHeader; diff --git a/src/app/organisms/navigation/Home.jsx b/src/app/organisms/navigation/Home.jsx index a39ad5d9a..120ceb7fe 100644 --- a/src/app/organisms/navigation/Home.jsx +++ b/src/app/organisms/navigation/Home.jsx @@ -1,9 +1,10 @@ import React, { useState, useEffect } from 'react'; +import PropTypes from 'prop-types'; import initMatrix from '../../../client/initMatrix'; import cons from '../../../client/state/cons'; import navigation from '../../../client/state/navigation'; -import { selectRoom } from '../../../client/action/navigation'; +import { selectSpace, selectRoom } from '../../../client/action/navigation'; import Postie from '../../../util/Postie'; import Text from '../../atoms/text/Text'; @@ -12,20 +13,32 @@ import Selector from './Selector'; import { AtoZ } from './common'; const drawerPostie = new Postie(); -function Home() { +function Home({ spaceId }) { + const [, forceUpdate] = useState({}); const { roomList } = initMatrix; - const spaceIds = [...roomList.spaces].sort(AtoZ); - const roomIds = [...roomList.rooms].sort(AtoZ); + let spaceIds = []; + let roomIds = []; + let directIds = []; - const [, forceUpdate] = useState({}); + const spaceChildIds = roomList.getSpaceChildren(spaceId); + if (spaceChildIds) { + spaceIds = spaceChildIds.filter((roomId) => roomList.spaces.has(roomId)).sort(AtoZ); + roomIds = spaceChildIds.filter((roomId) => roomList.rooms.has(roomId)).sort(AtoZ); + directIds = spaceChildIds.filter((roomId) => roomList.directs.has(roomId)).sort(AtoZ); + } else { + spaceIds = [...roomList.spaces] + .filter((roomId) => !roomList.roomIdToParents.has(roomId)).sort(AtoZ); + roomIds = [...roomList.rooms] + .filter((roomId) => !roomList.roomIdToParents.has(roomId)).sort(AtoZ); + } - function selectorChanged(activeRoomID, prevActiveRoomId) { + function selectorChanged(selectedRoomId, prevSelectedRoomId) { if (!drawerPostie.hasTopic('selector-change')) return; const addresses = []; - if (drawerPostie.hasSubscriber('selector-change', activeRoomID)) addresses.push(activeRoomID); - if (drawerPostie.hasSubscriber('selector-change', prevActiveRoomId)) addresses.push(prevActiveRoomId); + if (drawerPostie.hasSubscriber('selector-change', selectedRoomId)) addresses.push(selectedRoomId); + if (drawerPostie.hasSubscriber('selector-change', prevSelectedRoomId)) addresses.push(prevSelectedRoomId); if (addresses.length === 0) return; - drawerPostie.post('selector-change', addresses, activeRoomID); + drawerPostie.post('selector-change', addresses, selectedRoomId); } function unreadChanged(roomId) { if (!drawerPostie.hasTopic('unread-change')) return; @@ -36,9 +49,9 @@ function Home() { function roomListUpdated() { const { spaces, rooms, directs } = initMatrix.roomList; if (!( - spaces.has(navigation.getActiveRoomId()) - || rooms.has(navigation.getActiveRoomId()) - || directs.has(navigation.getActiveRoomId())) + spaces.has(navigation.selectedRoomId) + || rooms.has(navigation.selectedRoomId) + || directs.has(navigation.selectedRoomId)) ) { selectRoom(null); } @@ -67,6 +80,7 @@ function Home() { roomId={id} isDM={false} drawerPostie={drawerPostie} + onClick={() => selectSpace(id)} /> ))} @@ -77,10 +91,27 @@ function Home() { roomId={id} isDM={false} drawerPostie={drawerPostie} + onClick={() => selectRoom(id)} /> )) } + + { directIds.length !== 0 && People } + { directIds.map((id) => ( + selectRoom(id)} + /> + ))} ); } +Home.defaultProps = { + spaceId: null, +}; +Home.propTypes = { + spaceId: PropTypes.string, +}; export default Home; diff --git a/src/app/organisms/navigation/Selector.jsx b/src/app/organisms/navigation/Selector.jsx index 3c45d1545..9430bb116 100644 --- a/src/app/organisms/navigation/Selector.jsx +++ b/src/app/organisms/navigation/Selector.jsx @@ -4,7 +4,6 @@ import PropTypes from 'prop-types'; import initMatrix from '../../../client/initMatrix'; import { doesRoomHaveUnread } from '../../../util/matrixUtil'; -import { selectRoom } from '../../../client/action/navigation'; import navigation from '../../../client/state/navigation'; import RoomSelector from '../../molecules/room-selector/RoomSelector'; @@ -14,16 +13,18 @@ import HashLockIC from '../../../../public/res/ic/outlined/hash-lock.svg'; import SpaceIC from '../../../../public/res/ic/outlined/space.svg'; import SpaceLockIC from '../../../../public/res/ic/outlined/space-lock.svg'; -function Selector({ roomId, isDM, drawerPostie }) { +function Selector({ + roomId, isDM, drawerPostie, onClick, +}) { const mx = initMatrix.matrixClient; const room = mx.getRoom(roomId); const imageSrc = room.getAvatarFallbackMember()?.getAvatarUrl(mx.baseUrl, 24, 24, 'crop') || null; - const [isSelected, setIsSelected] = useState(navigation.getActiveRoomId() === roomId); + const [isSelected, setIsSelected] = useState(navigation.selectedRoomId === roomId); const [, forceUpdate] = useState({}); - function selectorChanged(activeRoomId) { - setIsSelected(activeRoomId === roomId); + function selectorChanged(selectedRoomId) { + setIsSelected(selectedRoomId === roomId); } function changeNotificationBadge() { forceUpdate({}); @@ -58,7 +59,7 @@ function Selector({ roomId, isDM, drawerPostie }) { isUnread={doesRoomHaveUnread(room)} notificationCount={room.getUnreadNotificationCount('total') || 0} isAlert={room.getUnreadNotificationCount('highlight') !== 0} - onClick={() => selectRoom(roomId)} + onClick={onClick} /> ); } @@ -71,6 +72,7 @@ Selector.propTypes = { roomId: PropTypes.string.isRequired, isDM: PropTypes.bool, drawerPostie: PropTypes.shape({}).isRequired, + onClick: PropTypes.func.isRequired, }; export default Selector; diff --git a/src/app/organisms/navigation/SideBar.jsx b/src/app/organisms/navigation/SideBar.jsx index 7d3511bae..1468bc66a 100644 --- a/src/app/organisms/navigation/SideBar.jsx +++ b/src/app/organisms/navigation/SideBar.jsx @@ -60,10 +60,10 @@ function SideBar() { + initMatrix.roomList.inviteDirects.size; const [totalInvites, updateTotalInvites] = useState(totalInviteCount()); - const [activeTab, setActiveTab] = useState('home'); + const [selectedTab, setSelectedTab] = useState('home'); function onTabChanged(tabId) { - setActiveTab(tabId); + setSelectedTab(tabId); } function onInviteListChange() { updateTotalInvites(totalInviteCount()); @@ -91,8 +91,8 @@ function SideBar() {
- changeTab('home')} tooltip="Home" iconSrc={HomeIC} /> - changeTab('dm')} tooltip="People" iconSrc={UserIC} /> + changeTab('home')} tooltip="Home" iconSrc={HomeIC} /> + changeTab('dm')} tooltip="People" iconSrc={UserIC} /> openPublicRooms()} tooltip="Public rooms" iconSrc={HashSearchIC} />
diff --git a/src/app/organisms/navigation/SideBar.scss b/src/app/organisms/navigation/SideBar.scss index 0f4e6773d..09641fcc5 100644 --- a/src/app/organisms/navigation/SideBar.scss +++ b/src/app/organisms/navigation/SideBar.scss @@ -39,11 +39,10 @@ height: 8px; background: transparent; - // background-image: linear-gradient(to top, var(--bg-surface-low), transparent); - // It produce bug in safari - // To fix it, we have to set the color as a fully transparent version of that exact color. like: - // background-image: linear-gradient(to top, rgb(255, 255, 255), rgba(255, 255, 255, 0)); - // TODO: fix this bug while implementing spaces + background-image: linear-gradient( + to top, + var(--bg-surface-low), + var(--bg-surface-low-transparent)); position: sticky; bottom: 0; left: 0; diff --git a/src/app/templates/auth/Auth.jsx b/src/app/templates/auth/Auth.jsx index a8837ab49..74c4fd1df 100644 --- a/src/app/templates/auth/Auth.jsx +++ b/src/app/templates/auth/Auth.jsx @@ -13,7 +13,7 @@ import Spinner from '../../atoms/spinner/Spinner'; import CinnySvg from '../../../../public/res/svg/cinny.svg'; -// This regex validates historical usernames, which don't satisy today's username requirements. +// This regex validates historical usernames, which don't satisfy today's username requirements. // See https://matrix.org/docs/spec/appendices#id13 for more info. const LOCALPART_LOGIN_REGEX = /.*/; const LOCALPART_SIGNUP_REGEX = /^[a-z0-9_\-.=/]+$/; diff --git a/src/client/action/navigation.js b/src/client/action/navigation.js index cf40b4ae2..bf560d877 100644 --- a/src/client/action/navigation.js +++ b/src/client/action/navigation.js @@ -8,6 +8,13 @@ function changeTab(tabId) { }); } +function selectSpace(roomId) { + appDispatcher.dispatch({ + type: cons.actions.navigation.SELECT_SPACE, + roomId, + }); +} + function selectRoom(roomId) { appDispatcher.dispatch({ type: cons.actions.navigation.SELECT_ROOM, @@ -72,6 +79,7 @@ function openReadReceipts(roomId, eventId) { export { changeTab, + selectSpace, selectRoom, togglePeopleDrawer, openInviteList, diff --git a/src/client/state/RoomList.js b/src/client/state/RoomList.js index 428d1040e..4e88adc72 100644 --- a/src/client/state/RoomList.js +++ b/src/client/state/RoomList.js @@ -7,6 +7,7 @@ class RoomList extends EventEmitter { super(); this.matrixClient = matrixClient; this.mDirects = this.getMDirects(); + this.roomIdToParents = new Map(); this.inviteDirects = new Set(); this.inviteSpaces = new Set(); @@ -24,13 +25,54 @@ class RoomList extends EventEmitter { appDispatcher.register(this.roomActions.bind(this)); } + getSpaceChildren(roomId) { + const space = this.matrixClient.getRoom(roomId); + const mSpaceChild = space?.currentState.getStateEvents('m.space.child'); + const children = mSpaceChild?.map((mEvent) => { + if (Object.keys(mEvent.event.content).length === 0) return null; + return mEvent.event.state_key; + }); + return children?.filter((child) => child !== null); + } + + addToRoomIdToParents(roomId, parentRoomId) { + if (!this.roomIdToParents.has(roomId)) { + this.roomIdToParents.set(roomId, new Set()); + } + const parents = this.roomIdToParents.get(roomId); + parents.add(parentRoomId); + } + + removeFromRoomIdToParents(roomId, parentRoomId) { + if (!this.roomIdToParents.has(roomId)) return; + const parents = this.roomIdToParents.get(roomId); + parents.delete(parentRoomId); + if (parents.size === 0) this.roomIdToParents.delete(roomId); + } + + addToSpaces(roomId) { + this.spaces.add(roomId); + const spaceChildren = this.getSpaceChildren(roomId); + spaceChildren?.forEach((childRoomId) => { + this.addToRoomIdToParents(childRoomId, roomId); + }); + } + + deleteFromSpaces(roomId) { + this.spaces.delete(roomId); + const spaceChildren = this.getSpaceChildren(roomId); + spaceChildren?.forEach((childRoomId) => { + this.removeFromRoomIdToParents(childRoomId, roomId); + }); + } + roomActions(action) { const addRoom = (roomId, isDM) => { const myRoom = this.matrixClient.getRoom(roomId); if (myRoom === null) return false; if (isDM) this.directs.add(roomId); - else if (myRoom.isSpaceRoom()) this.spaces.add(roomId); + else if (myRoom.isSpaceRoom()) this.addToSpaces(roomId); else this.rooms.add(roomId); return true; }; @@ -85,6 +127,7 @@ class RoomList extends EventEmitter { _populateRooms() { this.directs.clear(); + this.roomIdToParents.clear(); this.spaces.clear(); this.rooms.clear(); this.inviteDirects.clear(); @@ -109,7 +152,7 @@ class RoomList extends EventEmitter { if (room.getMyMembership() !== 'join') return; if (this.mDirects.has(roomId)) this.directs.add(roomId); - else if (room.isSpaceRoom()) this.spaces.add(roomId); + else if (room.isSpaceRoom()) this.addToSpaces(roomId); else this.rooms.add(roomId); }); } @@ -165,8 +208,16 @@ class RoomList extends EventEmitter { } }); - this.matrixClient.on('RoomState.events', (event) => { - if (event.getType() !== 'm.room.join_rules') return; + this.matrixClient.on('RoomState.events', (mEvent) => { + if (mEvent.getType() === 'm.space.child') { + const { event } = mEvent; + const isRoomAdded = Object.keys(event.content).length > 0; + if (isRoomAdded) this.addToRoomIdToParents(event.state_key, event.room_id); + else this.removeFromRoomIdToParents(event.state_key, event.room_id); + this.emit(cons.events.roomList.ROOMLIST_UPDATED); + return; + } + if (mEvent.getType() !== 'm.room.join_rules') return; this.emit(cons.events.roomList.ROOMLIST_UPDATED); }); @@ -207,7 +258,7 @@ class RoomList extends EventEmitter { const procRoomInfo = this.processingRooms.get(roomId); if (procRoomInfo.isDM) this.directs.add(roomId); - else if (room.isSpaceRoom()) this.spaces.add(roomId); + else if (room.isSpaceRoom()) this.addToSpaces(roomId); else this.rooms.add(roomId); if (procRoomInfo.task === 'CREATE') this.emit(cons.events.roomList.ROOM_CREATED, roomId); @@ -218,7 +269,7 @@ class RoomList extends EventEmitter { return; } if (room.isSpaceRoom()) { - this.spaces.add(roomId); + this.addToSpaces(roomId); this.emit(cons.events.roomList.ROOM_JOINED, roomId); this.emit(cons.events.roomList.ROOMLIST_UPDATED); @@ -269,12 +320,12 @@ class RoomList extends EventEmitter { } // when room is not a DM add/remove it from rooms. if (membership === 'leave' || membership === 'kick' || membership === 'ban') { - if (room.isSpaceRoom()) this.spaces.delete(roomId); + if (room.isSpaceRoom()) this.deleteFromSpaces(roomId); else this.rooms.delete(roomId); this.emit(cons.events.roomList.ROOM_LEAVED, roomId); } if (membership === 'join') { - if (room.isSpaceRoom()) this.spaces.add(roomId); + if (room.isSpaceRoom()) this.addToSpaces(roomId); else this.rooms.add(roomId); this.emit(cons.events.roomList.ROOM_JOINED, roomId); } diff --git a/src/client/state/cons.js b/src/client/state/cons.js index f5e92b0f5..e8b8d1586 100644 --- a/src/client/state/cons.js +++ b/src/client/state/cons.js @@ -9,6 +9,7 @@ const cons = { actions: { navigation: { CHANGE_TAB: 'CHANGE_TAB', + SELECT_SPACE: 'SELECT_SPACE', SELECT_ROOM: 'SELECT_ROOM', TOGGLE_PEOPLE_DRAWER: 'TOGGLE_PEOPLE_DRAWER', OPEN_INVITE_LIST: 'OPEN_INVITE_LIST', @@ -34,6 +35,7 @@ const cons = { events: { navigation: { TAB_CHANGED: 'TAB_CHANGED', + SPACE_SELECTED: 'SPACE_SELECTED', ROOM_SELECTED: 'ROOM_SELECTED', PEOPLE_DRAWER_TOGGLED: 'PEOPLE_DRAWER_TOGGLED', INVITE_LIST_OPENED: 'INVITE_LIST_OPENED', diff --git a/src/client/state/navigation.js b/src/client/state/navigation.js index 5c108af90..084af25a4 100644 --- a/src/client/state/navigation.js +++ b/src/client/state/navigation.js @@ -6,29 +6,44 @@ class Navigation extends EventEmitter { constructor() { super(); - this.activeTab = 'home'; - this.activeRoomId = null; + this.selectedTab = 'home'; + this.selectedSpaceId = null; + this.selectedSpacePath = []; + this.selectedRoomId = null; this.isPeopleDrawerVisible = true; - } - getActiveTab() { - return this.activeTab; + // TODO: + window.navigation = this; } - getActiveRoomId() { - return this.activeRoomId; + _setSpacePath(roomId) { + if (roomId === null) { + this.selectedSpacePath = []; + return; + } + if (this.selectedSpacePath.includes(roomId)) { + const spIndex = this.selectedSpacePath.indexOf(roomId); + this.selectedSpacePath = this.selectedSpacePath.slice(0, spIndex + 1); + return; + } + this.selectedSpacePath.push(roomId); } navigate(action) { const actions = { [cons.actions.navigation.CHANGE_TAB]: () => { - this.activeTab = action.tabId; - this.emit(cons.events.navigation.TAB_CHANGED, this.activeTab); + this.selectedTab = action.tabId; + this.emit(cons.events.navigation.TAB_CHANGED, this.selectedTab); + }, + [cons.actions.navigation.SELECT_SPACE]: () => { + this._setSpacePath(action.roomId); + this.selectedSpaceId = action.roomId; + this.emit(cons.events.navigation.SPACE_SELECTED, action.roomId); }, [cons.actions.navigation.SELECT_ROOM]: () => { - const prevActiveRoomId = this.activeRoomId; - this.activeRoomId = action.roomId; - this.emit(cons.events.navigation.ROOM_SELECTED, this.activeRoomId, prevActiveRoomId); + const prevSelectedRoomId = this.selectedRoomId; + this.selectedRoomId = action.roomId; + this.emit(cons.events.navigation.ROOM_SELECTED, this.selectedRoomId, prevSelectedRoomId); }, [cons.actions.navigation.TOGGLE_PEOPLE_DRAWER]: () => { this.isPeopleDrawerVisible = !this.isPeopleDrawerVisible; diff --git a/src/index.scss b/src/index.scss index a3819a956..678bb65a3 100644 --- a/src/index.scss +++ b/src/index.scss @@ -4,7 +4,9 @@ /* background color | --bg-[background type]: value */ --bg-surface: #FFFFFF; + --bg-surface-transparent: #FFFFFF00; --bg-surface-low: #F6F6F6; + --bg-surface-low-transparent: #F6F6F600; --bg-surface-hover: rgba(0, 0, 0, 3%); --bg-surface-active: rgba(0, 0, 0, 5%); --bg-surface-border: rgba(0, 0, 0, 6%); @@ -155,14 +157,18 @@ .silver-theme { /* background color | --bg-[background type]: value */ --bg-surface: hsl(0, 0%, 95%); + --bg-surface-transparent: hsla(0, 0%, 95%, 0); --bg-surface-low: hsl(0, 0%, 91%); + --bg-surface-low-transparent: hsla(0, 0%, 91%, 0); } .dark-theme, .butter-theme { /* background color | --bg-[background type]: value */ --bg-surface: hsl(208, 8%, 20%); + --bg-surface-transparent: hsla(208, 8%, 20%, 0); --bg-surface-low: hsl(208, 8%, 16%); + --bg-surface-low-transparent: hsla(208, 8%, 16%, 0); --bg-surface-hover: rgba(255, 255, 255, 3%); --bg-surface-active: rgba(255, 255, 255, 5%); --bg-surface-border: rgba(0, 0, 0, 20%); @@ -206,7 +212,9 @@ .butter-theme { /* background color | --bg-[background type]: value */ --bg-surface: hsl(64, 6%, 14%); + --bg-surface-transparent: hsla(64, 6%, 14%, 0); --bg-surface-low: hsl(64, 6%, 10%); + --bg-surface-low-transparent: hsla(64, 6%, 14%, 0); /* text color | --tc-[background type]-[priority]: value */ From c689836208ca4562d2d045b7bea3ac0252cf65c4 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 5 Sep 2021 14:04:51 +0530 Subject: [PATCH 07/39] Added variants in IconButton comp --- src/app/atoms/button/IconButton.jsx | 10 ++-------- src/app/atoms/button/IconButton.scss | 23 +++++++++++++++++++---- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/app/atoms/button/IconButton.jsx b/src/app/atoms/button/IconButton.jsx index f92752e5a..4ed2b930e 100644 --- a/src/app/atoms/button/IconButton.jsx +++ b/src/app/atoms/button/IconButton.jsx @@ -7,12 +7,6 @@ import Tooltip from '../tooltip/Tooltip'; import { blurOnBubbling } from './script'; import Text from '../text/Text'; -// TODO: -// 1. [done] an icon only button have "src" -// 2. have multiple variant -// 3. [done] should have a smart accessibility "label" arial-label -// 4. [done] have size as RawIcon - const IconButton = React.forwardRef(({ variant, size, type, tooltip, tooltipPlacement, src, onClick, @@ -20,7 +14,7 @@ const IconButton = React.forwardRef(({ const btn = ( { - spacePath.map((spaceId, index) => ( - - - + ); + } + return ( + - { mx.getRoom(spaceId).name } - - - )) + + + + ); + }) }
@@ -65,4 +63,12 @@ function DrawerBreadcrumb() { ); } +DrawerBreadcrumb.defaultProps = { + spaceId: null, +}; + +DrawerBreadcrumb.propTypes = { + spaceId: PropTypes.string, +}; + export default DrawerBreadcrumb; diff --git a/src/app/organisms/navigation/DrawerHeader.jsx b/src/app/organisms/navigation/DrawerHeader.jsx index 686d47634..220633c04 100644 --- a/src/app/organisms/navigation/DrawerHeader.jsx +++ b/src/app/organisms/navigation/DrawerHeader.jsx @@ -1,11 +1,12 @@ -import React from 'react'; +import React, { useState } from 'react'; import PropTypes from 'prop-types'; import initMatrix from '../../../client/initMatrix'; +import cons from '../../../client/state/cons'; import { - selectSpace, openPublicRooms, openCreateRoom, openInviteUser, + openPublicRooms, openCreateRoom, openInviteUser, } from '../../../client/action/navigation'; -import navigation from '../../../client/state/navigation'; +import { createSpaceShortcut, deleteSpaceShortcut } from '../../../client/action/room'; import Text from '../../atoms/text/Text'; import Header, { TitleWrapper } from '../../atoms/header/Header'; @@ -15,32 +16,37 @@ import ContextMenu, { MenuItem, MenuHeader } from '../../atoms/context-menu/Cont import PlusIC from '../../../../public/res/ic/outlined/plus.svg'; import HashPlusIC from '../../../../public/res/ic/outlined/hash-plus.svg'; import HashSearchIC from '../../../../public/res/ic/outlined/hash-search.svg'; -import ChevronLeftIC from '../../../../public/res/ic/outlined/chevron-left.svg'; +import StarIC from '../../../../public/res/ic/outlined/star.svg'; +import FilledStarIC from '../../../../public/res/ic/filled/star.svg'; function DrawerHeader({ selectedTab, spaceId }) { + const [, forceUpdate] = useState({}); const mx = initMatrix.matrixClient; - const tabName = selectedTab === 'home' ? 'Home' : 'Direct messages'; + const tabName = selectedTab !== cons.tabs.DIRECTS ? 'Home' : 'Direct messages'; const room = mx.getRoom(spaceId); - const spaceName = selectedTab === 'dm' ? null : (room?.name || null); - - function handleBackClick() { - const spacePath = navigation.selectedSpacePath; - if (spacePath.length === 1) { - selectSpace(null); - return; - } - selectSpace(spacePath[spacePath.length - 2]); - } + const spaceName = selectedTab === cons.tabs.DIRECTS ? null : (room?.name || null); return (
{spaceName || tabName} - { spaceName && } - { selectedTab === 'dm' && openInviteUser()} tooltip="Start DM" src={PlusIC} size="normal" /> } - { selectSpace !== 'dm' && !spaceName && ( + {spaceName && ( + { + if (initMatrix.roomList.spaceShortcut.has(spaceId)) deleteSpaceShortcut(spaceId); + else createSpaceShortcut(spaceId); + forceUpdate({}); + }} + /> + )} + { selectedTab === cons.tabs.DIRECTS && openInviteUser()} tooltip="Start DM" src={PlusIC} size="normal" /> } + { selectedTab !== cons.tabs.DIRECTS && !spaceName && ( <> ( diff --git a/src/app/organisms/navigation/Selector.jsx b/src/app/organisms/navigation/Selector.jsx index 9430bb116..0ddc12740 100644 --- a/src/app/organisms/navigation/Selector.jsx +++ b/src/app/organisms/navigation/Selector.jsx @@ -5,20 +5,25 @@ import PropTypes from 'prop-types'; import initMatrix from '../../../client/initMatrix'; import { doesRoomHaveUnread } from '../../../util/matrixUtil'; import navigation from '../../../client/state/navigation'; +import { createSpaceShortcut, deleteSpaceShortcut } from '../../../client/action/room'; +import IconButton from '../../atoms/button/IconButton'; import RoomSelector from '../../molecules/room-selector/RoomSelector'; import HashIC from '../../../../public/res/ic/outlined/hash.svg'; import HashLockIC from '../../../../public/res/ic/outlined/hash-lock.svg'; import SpaceIC from '../../../../public/res/ic/outlined/space.svg'; import SpaceLockIC from '../../../../public/res/ic/outlined/space-lock.svg'; +import StarIC from '../../../../public/res/ic/outlined/star.svg'; +import FilledStarIC from '../../../../public/res/ic/filled/star.svg'; function Selector({ roomId, isDM, drawerPostie, onClick, }) { const mx = initMatrix.matrixClient; const room = mx.getRoom(roomId); - const imageSrc = room.getAvatarFallbackMember()?.getAvatarUrl(mx.baseUrl, 24, 24, 'crop') || null; + let imageSrc = room.getAvatarFallbackMember()?.getAvatarUrl(mx.baseUrl, 24, 24, 'crop') || null; + if (imageSrc === null) imageSrc = room.getAvatarUrl(mx.baseUrl, 24, 24, 'crop') || null; const [isSelected, setIsSelected] = useState(navigation.selectedRoomId === roomId); const [, forceUpdate] = useState({}); @@ -60,6 +65,23 @@ function Selector({ notificationCount={room.getUnreadNotificationCount('total') || 0} isAlert={room.getUnreadNotificationCount('highlight') !== 0} onClick={onClick} + options={( + !room.isSpaceRoom() + ? null + : ( + { + if (initMatrix.roomList.spaceShortcut.has(roomId)) deleteSpaceShortcut(roomId); + else createSpaceShortcut(roomId); + forceUpdate({}); + }} + /> + ) + )} /> ); } diff --git a/src/app/organisms/navigation/SideBar.jsx b/src/app/organisms/navigation/SideBar.jsx index 1468bc66a..b95636f99 100644 --- a/src/app/organisms/navigation/SideBar.jsx +++ b/src/app/organisms/navigation/SideBar.jsx @@ -6,7 +6,7 @@ import cons from '../../../client/state/cons'; import colorMXID from '../../../util/colorMXID'; import logout from '../../../client/action/logout'; import { - changeTab, openInviteList, openPublicRooms, openSettings, + selectTab, openInviteList, openPublicRooms, openSettings, } from '../../../client/action/navigation'; import navigation from '../../../client/state/navigation'; @@ -55,29 +55,37 @@ function ProfileAvatarMenu() { } function SideBar() { - const totalInviteCount = () => initMatrix.roomList.inviteRooms.size - + initMatrix.roomList.inviteSpaces.size - + initMatrix.roomList.inviteDirects.size; + const { roomList } = initMatrix; + const mx = initMatrix.matrixClient; + const totalInviteCount = () => roomList.inviteRooms.size + + roomList.inviteSpaces.size + + roomList.inviteDirects.size; const [totalInvites, updateTotalInvites] = useState(totalInviteCount()); - const [selectedTab, setSelectedTab] = useState('home'); + const [selectedTab, setSelectedTab] = useState(navigation.selectedTab); + const [, forceUpdate] = useState({}); - function onTabChanged(tabId) { + function onTabSelected(tabId) { setSelectedTab(tabId); } function onInviteListChange() { updateTotalInvites(totalInviteCount()); } + function onSpaceShortcutUpdated() { + forceUpdate({}); + } useEffect(() => { - navigation.on(cons.events.navigation.TAB_CHANGED, onTabChanged); + navigation.on(cons.events.navigation.TAB_SELECTED, onTabSelected); + roomList.on(cons.events.roomList.SPACE_SHORTCUT_UPDATED, onSpaceShortcutUpdated); initMatrix.roomList.on( cons.events.roomList.INVITELIST_UPDATED, onInviteListChange, ); return () => { - navigation.removeListener(cons.events.navigation.TAB_CHANGED, onTabChanged); + navigation.removeListener(cons.events.navigation.TAB_SELECTED, onTabSelected); + roomList.removeListener(cons.events.roomList.SPACE_SHORTCUT_UPDATED, onSpaceShortcutUpdated); initMatrix.roomList.removeListener( cons.events.roomList.INVITELIST_UPDATED, onInviteListChange, @@ -91,12 +99,30 @@ function SideBar() {
- changeTab('home')} tooltip="Home" iconSrc={HomeIC} /> - changeTab('dm')} tooltip="People" iconSrc={UserIC} /> + selectTab(cons.tabs.HOME)} tooltip="Home" iconSrc={HomeIC} /> + selectTab(cons.tabs.DIRECTS)} tooltip="People" iconSrc={UserIC} /> openPublicRooms()} tooltip="Public rooms" iconSrc={HashSearchIC} />
-
+
+ { + [...roomList.spaceShortcut].map((shortcut) => { + const sRoomId = shortcut; + const room = mx.getRoom(sRoomId); + return ( + selectTab(shortcut)} + /> + ); + }) + } +
diff --git a/src/app/organisms/navigation/SideBar.scss b/src/app/organisms/navigation/SideBar.scss index 09641fcc5..48970fbda 100644 --- a/src/app/organisms/navigation/SideBar.scss +++ b/src/app/organisms/navigation/SideBar.scss @@ -44,7 +44,7 @@ var(--bg-surface-low), var(--bg-surface-low-transparent)); position: sticky; - bottom: 0; + bottom: -1px; left: 0; } } diff --git a/src/app/organisms/room/PeopleDrawer.jsx b/src/app/organisms/room/PeopleDrawer.jsx index 2a7b18d8a..ca975d13c 100644 --- a/src/app/organisms/room/PeopleDrawer.jsx +++ b/src/app/organisms/room/PeopleDrawer.jsx @@ -18,23 +18,15 @@ import PeopleSelector from '../../molecules/people-selector/PeopleSelector'; import AddUserIC from '../../../../public/res/ic/outlined/add-user.svg'; function getPowerLabel(powerLevel) { - switch (powerLevel) { - case 100: - return 'Admin'; - case 50: - return 'Mod'; - default: - return null; - } + if (powerLevel > 9000) return 'Goku'; + if (powerLevel > 100) return 'Founder'; + if (powerLevel === 100) return 'Admin'; + if (powerLevel >= 50) return 'Mod'; + return null; } -function compare(m1, m2) { - let aName = m1.name; - let bName = m2.name; - - // remove "#" from the room name - // To ignore it in sorting - aName = aName.replaceAll('#', ''); - bName = bName.replaceAll('#', ''); +function AtoZ(m1, m2) { + const aName = m1.name; + const bName = m2.name; if (aName.toLowerCase() < bName.toLowerCase()) { return -1; @@ -45,25 +37,18 @@ function compare(m1, m2) { return 0; } function sortByPowerLevel(m1, m2) { - let pl1 = String(m1.powerLevel); - let pl2 = String(m2.powerLevel); + const pl1 = m1.powerLevel; + const pl2 = m2.powerLevel; - if (pl1 === '100') pl1 = '90.9'; - if (pl2 === '100') pl2 = '90.9'; - - if (pl1.toLowerCase() > pl2.toLowerCase()) { - return -1; - } - if (pl1.toLowerCase() < pl2.toLowerCase()) { - return 1; - } + if (pl1 > pl2) return -1; + if (pl1 < pl2) return 1; return 0; } function PeopleDrawer({ roomId }) { const PER_PAGE_MEMBER = 50; const room = initMatrix.matrixClient.getRoom(roomId); - const totalMemberList = room.getJoinedMembers().sort(compare).sort(sortByPowerLevel); + const totalMemberList = room.getJoinedMembers().sort(AtoZ).sort(sortByPowerLevel); const [memberList, updateMemberList] = useState([]); let isRoomChanged = false; @@ -75,7 +60,7 @@ function PeopleDrawer({ roomId }) { updateMemberList(totalMemberList.slice(0, PER_PAGE_MEMBER)); room.loadMembersIfNeeded().then(() => { if (isRoomChanged) return; - const newTotalMemberList = room.getJoinedMembers().sort(compare).sort(sortByPowerLevel); + const newTotalMemberList = room.getJoinedMembers().sort(AtoZ).sort(sortByPowerLevel); updateMemberList(newTotalMemberList.slice(0, PER_PAGE_MEMBER)); }); diff --git a/src/app/organisms/room/RoomViewCmdBar.jsx b/src/app/organisms/room/RoomViewCmdBar.jsx index 7f8f80904..329d46a5d 100644 --- a/src/app/organisms/room/RoomViewCmdBar.jsx +++ b/src/app/organisms/room/RoomViewCmdBar.jsx @@ -10,6 +10,7 @@ import cons from '../../../client/state/cons'; import { toggleMarkdown } from '../../../client/action/settings'; import * as roomActions from '../../../client/action/room'; import { + selectTab, selectRoom, openCreateRoom, openPublicRooms, @@ -357,7 +358,8 @@ function RoomViewCmdBar({ roomId, roomTimeline, viewEvent }) { } function fireCmd(myCmd) { if (myCmd.prefix.match(/^>[*#@]$/)) { - selectRoom(myCmd.result.roomId); + if (cmd.prefix === '>*') selectTab(myCmd.result.roomId); + else selectRoom(myCmd.result.roomId); viewEvent.emit('cmd_fired'); } if (myCmd.prefix === '/') { diff --git a/src/client/action/navigation.js b/src/client/action/navigation.js index bf560d877..5fa13040a 100644 --- a/src/client/action/navigation.js +++ b/src/client/action/navigation.js @@ -1,9 +1,9 @@ import appDispatcher from '../dispatcher'; import cons from '../state/cons'; -function changeTab(tabId) { +function selectTab(tabId) { appDispatcher.dispatch({ - type: cons.actions.navigation.CHANGE_TAB, + type: cons.actions.navigation.SELECT_TAB, tabId, }); } @@ -78,7 +78,7 @@ function openReadReceipts(roomId, eventId) { } export { - changeTab, + selectTab, selectSpace, selectRoom, togglePeopleDrawer, diff --git a/src/client/action/room.js b/src/client/action/room.js index 407a9e3ac..08e73e214 100644 --- a/src/client/action/room.js +++ b/src/client/action/room.js @@ -190,7 +190,22 @@ async function invite(roomId, userId) { } } +function createSpaceShortcut(roomId) { + appDispatcher.dispatch({ + type: cons.actions.room.CREATE_SPACE_SHORTCUT, + roomId, + }); +} + +function deleteSpaceShortcut(roomId) { + appDispatcher.dispatch({ + type: cons.actions.room.DELETE_SPACE_SHORTCUT, + roomId, + }); +} + export { join, leave, create, invite, + createSpaceShortcut, deleteSpaceShortcut, }; diff --git a/src/client/state/RoomList.js b/src/client/state/RoomList.js index 4e88adc72..a47bf4698 100644 --- a/src/client/state/RoomList.js +++ b/src/client/state/RoomList.js @@ -9,6 +9,8 @@ class RoomList extends EventEmitter { this.mDirects = this.getMDirects(); this.roomIdToParents = new Map(); + this.spaceShortcut = new Set(); + this.inviteDirects = new Set(); this.inviteSpaces = new Set(); this.inviteRooms = new Set(); @@ -20,11 +22,18 @@ class RoomList extends EventEmitter { this.processingRooms = new Map(); this._populateRooms(); + this._populateSpaceShortcut(); this._listenEvents(); appDispatcher.register(this.roomActions.bind(this)); } + _updateSpaceShortcutData(shortcutList) { + const spaceContent = this.matrixClient.getAccountData(cons['in.cinny.spaces'])?.getContent() || {}; + spaceContent.shortcut = shortcutList; + this.matrixClient.setAccountData(cons['in.cinny.spaces'], spaceContent); + } + getSpaceChildren(roomId) { const space = this.matrixClient.getRoom(roomId); const mSpaceChild = space?.currentState.getStateEvents('m.space.child'); @@ -64,6 +73,12 @@ class RoomList extends EventEmitter { spaceChildren?.forEach((childRoomId) => { this.removeFromRoomIdToParents(childRoomId, roomId); }); + + if (this.spaceShortcut.has(roomId)) { + // if delete space has shortcut remove it. + this.spaceShortcut.delete(roomId); + this._updateSpaceShortcutData([...this.spaceShortcut]); + } } roomActions(action) { @@ -106,6 +121,18 @@ class RoomList extends EventEmitter { }); } }, + [cons.actions.room.CREATE_SPACE_SHORTCUT]: () => { + if (this.spaceShortcut.has(action.roomId)) return; + this.spaceShortcut.add(action.roomId); + this._updateSpaceShortcutData([...this.spaceShortcut]); + this.emit(cons.events.roomList.SPACE_SHORTCUT_UPDATED, action.roomId); + }, + [cons.actions.room.DELETE_SPACE_SHORTCUT]: () => { + if (!this.spaceShortcut.has(action.roomId)) return; + this.spaceShortcut.delete(action.roomId); + this._updateSpaceShortcutData([...this.spaceShortcut]); + this.emit(cons.events.roomList.SPACE_SHORTCUT_UPDATED, action.roomId); + }, }; actions[action.type]?.(); } @@ -125,6 +152,21 @@ class RoomList extends EventEmitter { return mDirectsId; } + _populateSpaceShortcut() { + this.spaceShortcut.clear(); + const spacesContent = this.matrixClient.getAccountData(cons['in.cinny.spaces'])?.getContent(); + + if (spacesContent && Array.isArray(spacesContent?.shortcut)) { + spacesContent.shortcut.forEach((shortcut) => { + if (this.spaces.has(shortcut)) this.spaceShortcut.add(shortcut); + }); + if (spacesContent.shortcut.length !== this.spaceShortcut.size) { + // update shortcut list from account data if shortcut space doesn't exist. + this._updateSpaceShortcutData([...this.spaceShortcut]); + } + } + } + _populateRooms() { this.directs.clear(); this.roomIdToParents.clear(); @@ -166,6 +208,12 @@ class RoomList extends EventEmitter { _listenEvents() { // Update roomList when m.direct changes this.matrixClient.on('accountData', (event) => { + if (event.getType() === cons['in.cinny.spaces']) { + this._populateSpaceShortcut(); + this.emit(cons.events.roomList.SPACE_SHORTCUT_UPDATED); + return; + } + if (event.getType() !== 'm.direct') return; const latestMDirects = this.getMDirects(); diff --git a/src/client/state/cons.js b/src/client/state/cons.js index e8b8d1586..758712019 100644 --- a/src/client/state/cons.js +++ b/src/client/state/cons.js @@ -6,9 +6,14 @@ const cons = { BASE_URL: 'cinny_hs_base_url', }, DEVICE_DISPLAY_NAME: 'Cinny Web', + 'in.cinny.spaces': 'in.cinny.spaces', + tabs: { + HOME: 'home', + DIRECTS: 'dm', + }, actions: { navigation: { - CHANGE_TAB: 'CHANGE_TAB', + SELECT_TAB: 'SELECT_TAB', SELECT_SPACE: 'SELECT_SPACE', SELECT_ROOM: 'SELECT_ROOM', TOGGLE_PEOPLE_DRAWER: 'TOGGLE_PEOPLE_DRAWER', @@ -24,6 +29,8 @@ const cons = { JOIN: 'JOIN', LEAVE: 'LEAVE', CREATE: 'CREATE', + CREATE_SPACE_SHORTCUT: 'CREATE_SPACE_SHORTCUT', + DELETE_SPACE_SHORTCUT: 'DELETE_SPACE_SHORTCUT', error: { CREATE: 'ERROR_CREATE', }, @@ -34,7 +41,7 @@ const cons = { }, events: { navigation: { - TAB_CHANGED: 'TAB_CHANGED', + TAB_SELECTED: 'TAB_SELECTED', SPACE_SELECTED: 'SPACE_SELECTED', ROOM_SELECTED: 'ROOM_SELECTED', PEOPLE_DRAWER_TOGGLED: 'PEOPLE_DRAWER_TOGGLED', @@ -54,6 +61,7 @@ const cons = { ROOM_CREATED: 'ROOM_CREATED', MY_RECEIPT_ARRIVED: 'MY_RECEIPT_ARRIVED', EVENT_ARRIVED: 'EVENT_ARRIVED', + SPACE_SHORTCUT_UPDATED: 'SPACE_SHORTCUT_UPDATED', }, roomTimeline: { EVENT: 'EVENT', diff --git a/src/client/state/navigation.js b/src/client/state/navigation.js index 084af25a4..5188aad88 100644 --- a/src/client/state/navigation.js +++ b/src/client/state/navigation.js @@ -6,19 +6,17 @@ class Navigation extends EventEmitter { constructor() { super(); - this.selectedTab = 'home'; + this.selectedTab = cons.tabs.HOME; this.selectedSpaceId = null; - this.selectedSpacePath = []; + this.selectedSpacePath = [cons.tabs.HOME]; + this.selectedRoomId = null; this.isPeopleDrawerVisible = true; - - // TODO: - window.navigation = this; } _setSpacePath(roomId) { - if (roomId === null) { - this.selectedSpacePath = []; + if (roomId === null || roomId === cons.tabs.HOME) { + this.selectedSpacePath = [cons.tabs.HOME]; return; } if (this.selectedSpacePath.includes(roomId)) { @@ -31,14 +29,24 @@ class Navigation extends EventEmitter { navigate(action) { const actions = { - [cons.actions.navigation.CHANGE_TAB]: () => { + [cons.actions.navigation.SELECT_TAB]: () => { this.selectedTab = action.tabId; - this.emit(cons.events.navigation.TAB_CHANGED, this.selectedTab); + if (this.selectedTab !== cons.tabs.DIRECTS) { + if (this.selectedTab === cons.tabs.HOME) { + this.selectedSpacePath = [cons.tabs.HOME]; + this.selectedSpaceId = null; + } else { + this.selectedSpacePath = [this.selectedTab]; + this.selectedSpaceId = this.selectedTab; + } + this.emit(cons.events.navigation.SPACE_SELECTED, this.selectedSpaceId); + } else this.selectedSpaceId = null; + this.emit(cons.events.navigation.TAB_SELECTED, this.selectedTab); }, [cons.actions.navigation.SELECT_SPACE]: () => { this._setSpacePath(action.roomId); this.selectedSpaceId = action.roomId; - this.emit(cons.events.navigation.SPACE_SELECTED, action.roomId); + this.emit(cons.events.navigation.SPACE_SELECTED, this.selectedSpaceId); }, [cons.actions.navigation.SELECT_ROOM]: () => { const prevSelectedRoomId = this.selectedRoomId; From 87d5cb78b2590d73ee338c783eff09193ff1db91 Mon Sep 17 00:00:00 2001 From: Las Safin Date: Mon, 6 Sep 2021 17:05:36 +0000 Subject: [PATCH 10/39] Add preview to README --- README.md | 4 +++- preview-light.png | Bin 0 -> 297408 bytes 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 preview-light.png diff --git a/README.md b/README.md index 8187d6550..3ac8273fd 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ Cinny is a [Matrix](https://matrix.org) client focusing primarily on simple, elegant and secure interface. +![preview](./preview-light.png) + ## Building and Running ### Building from source @@ -48,4 +50,4 @@ Copyright (c) 2021 Ajay Bura (ajbura) and other contributors Code licensed under the MIT License: -Graphics licensed under CC-BY 4.0: \ No newline at end of file +Graphics licensed under CC-BY 4.0: diff --git a/preview-light.png b/preview-light.png new file mode 100644 index 0000000000000000000000000000000000000000..fd76bca92b41fe6cc92cf6bbd159febf04edc982 GIT binary patch literal 297408 zcmaI81ys{-`#-)h93Tu(6vt>05$Wy{1eFq{8%9ebU86xt1PN&nMCooAAdQ4{mxOe8 z{NMBW*6;cF{0}?qoSn0K*L`)ou6M{w1sT{)#7z(g1bhBW>J;`ZkGH=t1%0A6f7AL-Q2m9C8N4~_wcceIk{e$m6 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%0DN*k#} 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

a9-614y4?r*6s;f)yHm0&o0qV$Axt>q^ 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 X|Lfy^=XPv3$p8YLu6{1-oD!M<>{NMS literal 0 HcmV?d00001 From b9b2f9f2c3e9523743495f592f923906f98ffb7f Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 8 Sep 2021 19:33:29 +0530 Subject: [PATCH 11/39] Added positive vaiant in button --- src/app/atoms/button/Button.jsx | 2 +- src/app/atoms/button/Button.scss | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/app/atoms/button/Button.jsx b/src/app/atoms/button/Button.jsx index bfe06f663..bebca8615 100644 --- a/src/app/atoms/button/Button.jsx +++ b/src/app/atoms/button/Button.jsx @@ -40,7 +40,7 @@ Button.defaultProps = { Button.propTypes = { id: PropTypes.string, className: PropTypes.string, - variant: PropTypes.oneOf(['surface', 'primary', 'caution', 'danger']), + variant: PropTypes.oneOf(['surface', 'primary', 'positive', 'caution', 'danger']), iconSrc: PropTypes.string, type: PropTypes.oneOf(['button', 'submit']), onClick: PropTypes.func, diff --git a/src/app/atoms/button/Button.scss b/src/app/atoms/button/Button.scss index 224c6348c..14265007b 100644 --- a/src/app/atoms/button/Button.scss +++ b/src/app/atoms/button/Button.scss @@ -2,6 +2,7 @@ .btn-surface, .btn-primary, +.btn-positive, .btn-caution, .btn-danger { display: inline-flex; @@ -67,6 +68,13 @@ @include state.focus(var(--bs-primary-outline)); @include state.active(var(--bg-primary-active)); } +.btn-positive { + box-shadow: var(--bs-positive-border); + @include color(var(--tc-positive-high), var(--ic-positive-normal)); + @include state.hover(var(--bg-positive-hover)); + @include state.focus(var(--bs-positive-outline)); + @include state.active(var(--bg-positive-active)); +} .btn-caution { box-shadow: var(--bs-caution-border); @include color(var(--tc-caution-high), var(--ic-caution-normal)); From 6c7806087600349621af98a6fc1df7fb814990db Mon Sep 17 00:00:00 2001 From: jamesjulich <51384945+jamesjulich@users.noreply.github.com> Date: Thu, 9 Sep 2021 00:47:26 -0500 Subject: [PATCH 12/39] Add profile editor in settings --- public/res/svg/avatar-clip.svg | 3 + src/app/atoms/image-upload/ImageUpload.jsx | 62 +++++++++++++++++ src/app/atoms/image-upload/ImageUpload.scss | 20 ++++++ .../profile-editor/ProfileEditor.jsx | 66 +++++++++++++++++++ .../profile-editor/ProfileEditor.scss | 24 +++++++ src/app/organisms/settings/Settings.jsx | 21 ++++++ 6 files changed, 196 insertions(+) create mode 100644 public/res/svg/avatar-clip.svg create mode 100644 src/app/atoms/image-upload/ImageUpload.jsx create mode 100644 src/app/atoms/image-upload/ImageUpload.scss create mode 100644 src/app/molecules/profile-editor/ProfileEditor.jsx create mode 100644 src/app/molecules/profile-editor/ProfileEditor.scss diff --git a/public/res/svg/avatar-clip.svg b/public/res/svg/avatar-clip.svg new file mode 100644 index 000000000..ffaa1a2f6 --- /dev/null +++ b/public/res/svg/avatar-clip.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/app/atoms/image-upload/ImageUpload.jsx b/src/app/atoms/image-upload/ImageUpload.jsx new file mode 100644 index 000000000..139305276 --- /dev/null +++ b/src/app/atoms/image-upload/ImageUpload.jsx @@ -0,0 +1,62 @@ +import React, { useRef } from 'react'; +import PropTypes from 'prop-types'; + +import initMatrix from '../../../client/initMatrix'; + +import GenIC from '../../../../public/res/ic/outlined/settings.svg'; +import Avatar from '../avatar/Avatar'; + +import RawIcon from '../system-icons/RawIcon'; +import './ImageUpload.scss'; + +function ImageUpload({ + text, bgColor, imageSrc, onUpload, +}) { + const uploadImageRef = useRef(null); + + function uploadImage(e) { + const file = e.target.files.item(0); + if (file !== null) { // TODO Add upload progress spinner + initMatrix.matrixClient.uploadContent(file, { onlyContentUri: false }).then((res) => { + if (res.content_uri !== null) { + onUpload({ content_uri: res.content_uri }); + } + }, (err) => { + console.log(err); // TODO Replace with alert banner. + }); + } + } + + return ( + + ); +} + +ImageUpload.defaultProps = { + text: null, + bgColor: 'transparent', + imageSrc: null, + onUpload: null, +}; + +ImageUpload.propTypes = { + text: PropTypes.string, + bgColor: PropTypes.string, + imageSrc: PropTypes.string, + onUpload: PropTypes.func, +}; + +export default ImageUpload; diff --git a/src/app/atoms/image-upload/ImageUpload.scss b/src/app/atoms/image-upload/ImageUpload.scss new file mode 100644 index 000000000..c7118ba8e --- /dev/null +++ b/src/app/atoms/image-upload/ImageUpload.scss @@ -0,0 +1,20 @@ +.img-upload-container { + display: flex; + flex-direction: row-reverse; + width: 80px; + height: 80px; +} + +.img-upload-container:hover { + cursor: pointer; +} + +.img-upload-mask { + mask: url('../../../../public/res/svg/avatar-clip.svg'); + //width: 80px; +} + +.img-upload-icon { + z-index: 1; + position: absolute; +} \ No newline at end of file diff --git a/src/app/molecules/profile-editor/ProfileEditor.jsx b/src/app/molecules/profile-editor/ProfileEditor.jsx new file mode 100644 index 000000000..818ed9355 --- /dev/null +++ b/src/app/molecules/profile-editor/ProfileEditor.jsx @@ -0,0 +1,66 @@ +import React, { useState, useRef } from 'react'; +import PropTypes from 'prop-types'; + +import initMatrix from '../../../client/initMatrix'; +import colorMXID from '../../../util/colorMXID'; + +import Button from '../../atoms/button/Button'; +import ImageUpload from '../../atoms/image-upload/ImageUpload'; +import Input from '../../atoms/input/Input'; +import Text from '../../atoms/text/Text'; + +import './ProfileEditor.scss'; + +// TODO Fix bug that prevents 'Save' button from enabling up until second changed. +function ProfileEditor({ + userId, +}) { + const mx = initMatrix.matrixClient; + const displayNameRef = useRef(null); + const bgColor = colorMXID(userId); + const [imageSrc, updateImgSrc] = useState(mx.mxcUrlToHttp(mx.getUser(mx.getUserId()).avatarUrl)); + const [disabled, setDisabled] = useState(true); + + let username = mx.getUser(mx.getUserId()).displayName; + + function handleUpload(e) { + mx.setAvatarUrl(e.content_uri); + updateImgSrc(mx.mxcUrlToHttp(e.content_uri)); + } + + function saveDisplayName() { + if (displayNameRef.current.value !== null && displayNameRef.current.value !== '') { + mx.setDisplayName(displayNameRef.current.value); + username = displayNameRef.current.value; + setDisabled(true); + } + } + + function onDisplayNameInputChange() { + setDisabled((username === displayNameRef.current.value) || displayNameRef.current.value === '' || displayNameRef.current.value == null); + } + + return ( +

+ +
+ + Display name of  + {mx.getUserId()} + + +
+ + + ); +} + +ProfileEditor.defaultProps = { + userId: null, +}; + +ProfileEditor.propTypes = { + userId: PropTypes.string, +}; + +export default ProfileEditor; diff --git a/src/app/molecules/profile-editor/ProfileEditor.scss b/src/app/molecules/profile-editor/ProfileEditor.scss new file mode 100644 index 000000000..98a453aa2 --- /dev/null +++ b/src/app/molecules/profile-editor/ProfileEditor.scss @@ -0,0 +1,24 @@ +.profile-editor { + display: flex; + align-items: end; +} + +.img-upload-container { + margin-right: var(--sp-normal) +} + +.display-name-input-container { + display: flex; + flex-direction: column; + margin-right: var(--sp-normal); + width: 100%; + max-width: 400px; +} + +.display-name-input-container > .text-b3 { + margin-bottom: var(--sp-ultra-tight) +} + +.profile-editor > .btn-primary { + height: 46px; +} \ No newline at end of file diff --git a/src/app/organisms/settings/Settings.jsx b/src/app/organisms/settings/Settings.jsx index 8914640df..91be164fb 100644 --- a/src/app/organisms/settings/Settings.jsx +++ b/src/app/organisms/settings/Settings.jsx @@ -14,8 +14,10 @@ import SegmentedControls from '../../atoms/segmented-controls/SegmentedControls' import PopupWindow, { PWContentSelector } from '../../molecules/popup-window/PopupWindow'; import SettingTile from '../../molecules/setting-tile/SettingTile'; +import ProfileEditor from '../../molecules/profile-editor/ProfileEditor'; import ImportE2ERoomKeys from '../../molecules/import-e2e-room-keys/ImportE2ERoomKeys'; +import GenIC from '../../../../public/res/ic/outlined/settings.svg'; import SunIC from '../../../../public/res/ic/outlined/sun.svg'; import LockIC from '../../../../public/res/ic/outlined/lock.svg'; import InfoIC from '../../../../public/res/ic/outlined/info.svg'; @@ -23,6 +25,19 @@ import CrossIC from '../../../../public/res/ic/outlined/cross.svg'; import CinnySVG from '../../../../public/res/svg/cinny.svg'; +function GeneralSection() { + return ( +
+ + )} + /> +
+ ); +} + function AppearanceSection() { const [, updateState] = useState({}); @@ -104,6 +119,12 @@ function AboutSection() { function Settings({ isOpen, onRequestClose }) { const settingSections = [{ + name: 'General', + iconSrc: GenIC, + render() { + return ; + }, + }, { name: 'Appearance', iconSrc: SunIC, render() { From a0139f41576809cb647c2d5314be4b522c6ad55b Mon Sep 17 00:00:00 2001 From: jamesjulich <51384945+jamesjulich@users.noreply.github.com> Date: Thu, 9 Sep 2021 00:59:17 -0500 Subject: [PATCH 13/39] Adds comments. --- src/app/atoms/image-upload/ImageUpload.jsx | 1 + src/app/molecules/profile-editor/ProfileEditor.jsx | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/app/atoms/image-upload/ImageUpload.jsx b/src/app/atoms/image-upload/ImageUpload.jsx index 139305276..ef8bfa655 100644 --- a/src/app/atoms/image-upload/ImageUpload.jsx +++ b/src/app/atoms/image-upload/ImageUpload.jsx @@ -14,6 +14,7 @@ function ImageUpload({ }) { const uploadImageRef = useRef(null); + // Uploads the selected image and passes the resulting URI to the onUpload function provided in component props. function uploadImage(e) { const file = e.target.files.item(0); if (file !== null) { // TODO Add upload progress spinner diff --git a/src/app/molecules/profile-editor/ProfileEditor.jsx b/src/app/molecules/profile-editor/ProfileEditor.jsx index 818ed9355..4bbf00f7d 100644 --- a/src/app/molecules/profile-editor/ProfileEditor.jsx +++ b/src/app/molecules/profile-editor/ProfileEditor.jsx @@ -23,6 +23,7 @@ function ProfileEditor({ let username = mx.getUser(mx.getUserId()).displayName; + // Sets avatar URL and updates the avatar component in profile editor to reflect new upload function handleUpload(e) { mx.setAvatarUrl(e.content_uri); updateImgSrc(mx.mxcUrlToHttp(e.content_uri)); @@ -36,6 +37,7 @@ function ProfileEditor({ } } + // Enables/disables save button depending on whether or not the username is different than the current. function onDisplayNameInputChange() { setDisabled((username === displayNameRef.current.value) || displayNameRef.current.value === '' || displayNameRef.current.value == null); } From fcb4104856d3a91490d16a1a01e4b58cf0bd78de Mon Sep 17 00:00:00 2001 From: jamesjulich <51384945+jamesjulich@users.noreply.github.com> Date: Thu, 9 Sep 2021 01:06:25 -0500 Subject: [PATCH 14/39] Fix warnings related to line length. --- src/app/atoms/image-upload/ImageUpload.jsx | 2 +- src/app/molecules/profile-editor/ProfileEditor.jsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/atoms/image-upload/ImageUpload.jsx b/src/app/atoms/image-upload/ImageUpload.jsx index ef8bfa655..e8a267149 100644 --- a/src/app/atoms/image-upload/ImageUpload.jsx +++ b/src/app/atoms/image-upload/ImageUpload.jsx @@ -14,7 +14,7 @@ function ImageUpload({ }) { const uploadImageRef = useRef(null); - // Uploads the selected image and passes the resulting URI to the onUpload function provided in component props. + // Uploads image and passes resulting URI to onUpload function provided in component props. function uploadImage(e) { const file = e.target.files.item(0); if (file !== null) { // TODO Add upload progress spinner diff --git a/src/app/molecules/profile-editor/ProfileEditor.jsx b/src/app/molecules/profile-editor/ProfileEditor.jsx index 4bbf00f7d..797c40031 100644 --- a/src/app/molecules/profile-editor/ProfileEditor.jsx +++ b/src/app/molecules/profile-editor/ProfileEditor.jsx @@ -37,7 +37,7 @@ function ProfileEditor({ } } - // Enables/disables save button depending on whether or not the username is different than the current. + // Enables/disables button depending on if the typed displayname is different than the current. function onDisplayNameInputChange() { setDisabled((username === displayNameRef.current.value) || displayNameRef.current.value === '' || displayNameRef.current.value == null); } From 42f68f61c650bf23e741abff43e4d4394cf5ca42 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 9 Sep 2021 17:33:32 +0530 Subject: [PATCH 15/39] Added positive variant in ContextMenu --- src/app/atoms/context-menu/ContextMenu.jsx | 2 +- src/app/atoms/context-menu/ContextMenu.scss | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/app/atoms/context-menu/ContextMenu.jsx b/src/app/atoms/context-menu/ContextMenu.jsx index b525e22ed..023ee38b9 100644 --- a/src/app/atoms/context-menu/ContextMenu.jsx +++ b/src/app/atoms/context-menu/ContextMenu.jsx @@ -93,7 +93,7 @@ MenuItem.defaultProps = { }; MenuItem.propTypes = { - variant: PropTypes.oneOf(['surface', 'caution', 'danger']), + variant: PropTypes.oneOf(['surface', 'positive', 'caution', 'danger']), iconSrc: PropTypes.string, type: PropTypes.oneOf(['button', 'submit']), onClick: PropTypes.func.isRequired, diff --git a/src/app/atoms/context-menu/ContextMenu.scss b/src/app/atoms/context-menu/ContextMenu.scss index fd6ca0770..4a8cc2aa1 100644 --- a/src/app/atoms/context-menu/ContextMenu.scss +++ b/src/app/atoms/context-menu/ContextMenu.scss @@ -30,6 +30,9 @@ .text { color: var(--tc-surface-low); + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } &:not(:first-child) { From 652f8227b5b900c9199e7697a67721816960e589 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 9 Sep 2021 17:35:39 +0530 Subject: [PATCH 16/39] Added unread highlight in RoomSelector --- src/app/molecules/room-selector/RoomSelector.jsx | 11 ++++++++--- src/app/molecules/room-selector/RoomSelector.scss | 7 +++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/app/molecules/room-selector/RoomSelector.jsx b/src/app/molecules/room-selector/RoomSelector.jsx index 01e2ffc11..7e7f277c3 100644 --- a/src/app/molecules/room-selector/RoomSelector.jsx +++ b/src/app/molecules/room-selector/RoomSelector.jsx @@ -10,10 +10,12 @@ import NotificationBadge from '../../atoms/badge/NotificationBadge'; import { blurOnBubbling } from '../../atoms/button/script'; function RoomSelectorWrapper({ - isSelected, onClick, content, options, + isSelected, isUnread, onClick, content, options, }) { + let myClass = isUnread ? ' room-selector--unread' : ''; + myClass += isSelected ? ' room-selector--selected' : ''; return ( -
+
); diff --git a/src/app/organisms/room/RoomViewInput.jsx b/src/app/organisms/room/RoomViewInput.jsx index a72f1e34e..622d9e2f8 100644 --- a/src/app/organisms/room/RoomViewInput.jsx +++ b/src/app/organisms/room/RoomViewInput.jsx @@ -9,7 +9,7 @@ import initMatrix from '../../../client/initMatrix'; import cons from '../../../client/state/cons'; import settings from '../../../client/state/settings'; import { openEmojiBoard } from '../../../client/action/navigation'; -import { bytesToSize } from '../../../util/common'; +import { bytesToSize, getEventCords } from '../../../util/common'; import { getUsername } from '../../../util/matrixUtil'; import colorMXID from '../../../util/colorMXID'; @@ -327,12 +327,10 @@ function RoomViewInput({
{ - const boxInfo = e.target.getBoundingClientRect(); - openEmojiBoard({ - x: boxInfo.x + (document.dir === 'rtl' ? -80 : 80), - y: boxInfo.y - 250, - detail: e.detail, - }, addEmoji); + const cords = getEventCords(e); + cords.x += (document.dir === 'rtl' ? -80 : 80); + cords.y -= 250; + openEmojiBoard(cords, addEmoji); }} tooltip="Emoji" src={EmojiIC} diff --git a/src/app/templates/client/Client.jsx b/src/app/templates/client/Client.jsx index 8f89d4354..bf7a3e77d 100644 --- a/src/app/templates/client/Client.jsx +++ b/src/app/templates/client/Client.jsx @@ -8,6 +8,7 @@ import Room from '../../organisms/room/Room'; import Windows from '../../organisms/pw/Windows'; import Dialogs from '../../organisms/pw/Dialogs'; import EmojiBoardOpener from '../../organisms/emoji-board/EmojiBoardOpener'; +import RoomOptions from '../../organisms/room-optons/RoomOptions'; import initMatrix from '../../../client/initMatrix'; @@ -44,6 +45,7 @@ function Client() { +
); } From c2faa605d37684025a3f4f55f5b4231a63731ca1 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 9 Sep 2021 19:08:29 +0530 Subject: [PATCH 19/39] Changed prod workflows back on published --- .github/workflows/docker.yaml | 5 ++--- .github/workflows/netlify-dev.yaml | 2 +- .github/workflows/netlify-prod.yaml | 7 +++---- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 04fc5c6f4..bada57869 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -1,9 +1,8 @@ name: Publish Docker image on: - push: - branches: - - master + release: + types: [published] jobs: push_to_registry: diff --git a/.github/workflows/netlify-dev.yaml b/.github/workflows/netlify-dev.yaml index b2174a794..b08a5c80b 100644 --- a/.github/workflows/netlify-dev.yaml +++ b/.github/workflows/netlify-dev.yaml @@ -1,4 +1,4 @@ -name: 'Deploy to Netlify' +name: 'Deploy to Netlify (dev)' on: push: diff --git a/.github/workflows/netlify-prod.yaml b/.github/workflows/netlify-prod.yaml index 7de6e111e..5d7f78972 100644 --- a/.github/workflows/netlify-prod.yaml +++ b/.github/workflows/netlify-prod.yaml @@ -1,9 +1,8 @@ -name: 'Deploy to Netlify' +name: 'Deploy to Netlify (prod)' on: - push: - branches: - - master + release: + types: [published] jobs: deploy: From 6b53b78ee3765b4f0229142065b3e48d1f7eeb7a Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 10 Sep 2021 18:37:52 +0530 Subject: [PATCH 20/39] Improved roomList --- src/client/state/RoomList.js | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/client/state/RoomList.js b/src/client/state/RoomList.js index 244c7352a..c6b6f86bd 100644 --- a/src/client/state/RoomList.js +++ b/src/client/state/RoomList.js @@ -2,11 +2,18 @@ import EventEmitter from 'events'; import appDispatcher from '../dispatcher'; import cons from './cons'; +function isMEventSpaceChild(mEvent) { + return mEvent.getType() === 'm.space.child' && Object.keys(mEvent.getContent()).length > 0; +} + class RoomList extends EventEmitter { constructor(matrixClient) { super(); this.matrixClient = matrixClient; this.mDirects = this.getMDirects(); + + // Contains roomId to parent spaces roomId mapping of all spaces children. + // No matter if you have joined those children rooms or not. this.roomIdToParents = new Map(); this.spaceShortcut = new Set(); @@ -38,10 +45,11 @@ class RoomList extends EventEmitter { const space = this.matrixClient.getRoom(roomId); const mSpaceChild = space?.currentState.getStateEvents('m.space.child'); const children = mSpaceChild?.map((mEvent) => { - if (Object.keys(mEvent.event.content).length === 0) return null; - return mEvent.event.state_key; + const childId = mEvent.event.state_key; + if (isMEventSpaceChild(mEvent)) return childId; + return null; }); - return children?.filter((child) => child !== null); + return children?.filter((childId) => childId !== null); } addToRoomIdToParents(roomId, parentRoomId) { @@ -259,9 +267,9 @@ class RoomList extends EventEmitter { this.matrixClient.on('RoomState.events', (mEvent) => { if (mEvent.getType() === 'm.space.child') { const { event } = mEvent; - const isRoomAdded = Object.keys(event.content).length > 0; - if (isRoomAdded) this.addToRoomIdToParents(event.state_key, event.room_id); - else this.removeFromRoomIdToParents(event.state_key, event.room_id); + if (isMEventSpaceChild(mEvent)) { + this.addToRoomIdToParents(event.state_key, event.room_id); + } else this.removeFromRoomIdToParents(event.state_key, event.room_id); this.emit(cons.events.roomList.ROOMLIST_UPDATED); return; } From a8884277772fdced671c6bd1ad968139447298f8 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 11 Sep 2021 19:27:35 +0530 Subject: [PATCH 21/39] Added Notification.js for noti mapping (#82) --- src/client/initMatrix.js | 2 + src/client/state/Notifications.js | 146 ++++++++++++++++++++++++++++++ src/client/state/cons.js | 4 + 3 files changed, 152 insertions(+) create mode 100644 src/client/state/Notifications.js diff --git a/src/client/initMatrix.js b/src/client/initMatrix.js index 26d07e6c1..91a41ea47 100644 --- a/src/client/initMatrix.js +++ b/src/client/initMatrix.js @@ -4,6 +4,7 @@ import * as sdk from 'matrix-js-sdk'; import { secret } from './state/auth'; import RoomList from './state/RoomList'; import RoomsInput from './state/RoomsInput'; +import Notifications from './state/Notifications'; global.Olm = require('@matrix-org/olm'); @@ -56,6 +57,7 @@ class InitMatrix extends EventEmitter { if (prevState === null) { this.roomList = new RoomList(this.matrixClient); this.roomsInput = new RoomsInput(this.matrixClient); + this.notifications = new Notifications(this.roomList); this.emit('init_loading_finished'); } }, diff --git a/src/client/state/Notifications.js b/src/client/state/Notifications.js new file mode 100644 index 000000000..f3b56acea --- /dev/null +++ b/src/client/state/Notifications.js @@ -0,0 +1,146 @@ +import EventEmitter from 'events'; +import cons from './cons'; + +class Notifications extends EventEmitter { + constructor(roomList) { + super(); + + this.matrixClient = roomList.matrixClient; + this.roomList = roomList; + + this.roomIdToNoti = new Map(); + + this._initNoti(); + this._listenEvents(); + + // TODO: + window.notifications = this; + } + + _initNoti() { + const addNoti = (roomId) => { + const room = this.matrixClient.getRoom(roomId); + if (this.doesRoomHaveUnread(room) === false) return; + const total = room.getUnreadNotificationCount('total'); + const highlight = room.getUnreadNotificationCount('highlight'); + const noti = this.getNoti(room.roomId); + this._setNoti(room.roomId, total - noti.total, highlight - noti.highlight); + }; + [...this.roomList.rooms].forEach(addNoti); + [...this.roomList.directs].forEach(addNoti); + } + + doesRoomHaveUnread(room) { + const userId = this.matrixClient.getUserId(); + const readUpToId = room.getEventReadUpTo(userId); + const supportEvents = ['m.room.message', 'm.room.encrypted', 'm.sticker']; + + if (room.timeline.length + && room.timeline[room.timeline.length - 1].sender + && room.timeline[room.timeline.length - 1].sender.userId === userId + && room.timeline[room.timeline.length - 1].getType() !== 'm.room.member') { + return false; + } + + for (let i = room.timeline.length - 1; i >= 0; i -= 1) { + const event = room.timeline[i]; + + if (event.getId() === readUpToId) return false; + + if (supportEvents.includes(event.getType())) { + return true; + } + } + return true; + } + + getNoti(roomId) { + return this.roomIdToNoti.get(roomId) || { total: 0, highlight: 0, from: null }; + } + + hasNoti(roomId) { + return this.roomIdToNoti.has(roomId); + } + + _setNoti(roomId, total, highlight, childId) { + const noti = this.getNoti(roomId); + + noti.total += total; + noti.highlight += highlight; + if (childId) { + if (noti.from === null) noti.from = new Set(); + noti.from.add(childId); + } + + this.roomIdToNoti.set(roomId, noti); + this.emit(cons.events.notification.NOTI_CHANGED, roomId); + + const parentIds = this.roomList.roomIdToParents.get(roomId); + if (typeof parentIds === 'undefined') return; + [...parentIds].forEach((parentId) => this._setNoti(parentId, total, highlight, roomId)); + } + + _deleteNoti(roomId, total, highlight, childId) { + if (this.roomIdToNoti.has(roomId) === false) return; + + const noti = this.getNoti(roomId); + noti.total -= total; + noti.highlight -= highlight; + if (childId && noti.from !== null) { + noti.from.delete(childId); + } + if (noti.from === null || noti.from.size === 0) { + this.roomIdToNoti.delete(roomId); + this.emit(cons.events.notification.FULL_READ, roomId); + } else { + this.roomIdToNoti.set(roomId, noti); + this.emit(cons.events.notification.NOTI_CHANGED, roomId); + } + + const parentIds = this.roomList.roomIdToParents.get(roomId); + if (typeof parentIds === 'undefined') return; + [...parentIds].forEach((parentId) => this._deleteNoti(parentId, total, highlight, roomId)); + } + + _listenEvents() { + this.matrixClient.on('Room.timeline', (mEvent, room) => { + const supportEvents = ['m.room.message', 'm.room.encrypted', 'm.sticker']; + if (!supportEvents.includes(mEvent.getType())) return; + + const lastTimelineEvent = room.timeline[room.timeline.length - 1]; + if (lastTimelineEvent.getId() !== mEvent.getId()) return; + if (mEvent.getSender() === this.matrixClient.getUserId()) return; + + const total = room.getUnreadNotificationCount('total'); + const highlight = room.getUnreadNotificationCount('highlight'); + + const noti = this.getNoti(room.roomId); + this._setNoti(room.roomId, total - noti.total, highlight - noti.highlight); + }); + + this.matrixClient.on('Room.receipt', (mEvent, room) => { + if (mEvent.getType() === 'm.receipt') { + if (typeof mEvent.event.room_id === 'string') return; + + const content = mEvent.getContent(); + const readedEventId = Object.keys(content)[0]; + const readerUserId = Object.keys(content[readedEventId]['m.read'])[0]; + if (readerUserId !== this.matrixClient.getUserId()) return; + + if (this.hasNoti(room.roomId)) { + const noti = this.getNoti(room.roomId); + this._deleteNoti(room.roomId, noti.total, noti.highlight); + } + } + }); + + this.matrixClient.on('Room.myMembership', (room, membership) => { + if (membership === 'leave' && this.hasNoti(room.roomId)) { + const noti = this.getNoti(room.roomId); + this._deleteNoti(room.roomId, noti.total, noti.highlight); + } + }); + } +} + +export default Notifications; diff --git a/src/client/state/cons.js b/src/client/state/cons.js index 6c00668a1..6211348b3 100644 --- a/src/client/state/cons.js +++ b/src/client/state/cons.js @@ -71,6 +71,10 @@ const cons = { EVENT_ARRIVED: 'EVENT_ARRIVED', SPACE_SHORTCUT_UPDATED: 'SPACE_SHORTCUT_UPDATED', }, + notification: { + NOTI_CHANGED: 'NOTI_CHANGED', + FULL_READ: 'FULL_READ', + }, roomTimeline: { EVENT: 'EVENT', PAGINATED: 'PAGINATED', From 1651a90deafeecf05fc39e3567501a1d1fd4a345 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 12 Sep 2021 09:12:59 +0530 Subject: [PATCH 22/39] Bug fixed in Postie --- src/util/Postie.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/util/Postie.js b/src/util/Postie.js index c3bf80645..668408dd5 100644 --- a/src/util/Postie.js +++ b/src/util/Postie.js @@ -30,8 +30,8 @@ class Postie { } hasTopicAndSubscriber(topic, address) { - return (this.isTopicExist(topic)) - ? this.isSubscriberExist(topic, address) + return (this.hasTopic(topic)) + ? this.hasSubscriber(topic, address) : false; } From 284ed9dea162f3ee074bf7fc5df5c364d08c6bb2 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 12 Sep 2021 11:20:56 +0530 Subject: [PATCH 23/39] Fixed NotificationBadge color --- src/app/atoms/badge/NotificationBadge.jsx | 2 +- src/app/atoms/badge/NotificationBadge.scss | 5 +++-- src/index.scss | 4 ++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/app/atoms/badge/NotificationBadge.jsx b/src/app/atoms/badge/NotificationBadge.jsx index 897a20101..c92815b77 100644 --- a/src/app/atoms/badge/NotificationBadge.jsx +++ b/src/app/atoms/badge/NotificationBadge.jsx @@ -8,7 +8,7 @@ function NotificationBadge({ alert, content }) { const notificationClass = alert ? ' notification-badge--alert' : ''; return (
- {content && {content}} + {content !== null && {content}}
); } diff --git a/src/app/atoms/badge/NotificationBadge.scss b/src/app/atoms/badge/NotificationBadge.scss index d40850084..c876c37ac 100644 --- a/src/app/atoms/badge/NotificationBadge.scss +++ b/src/app/atoms/badge/NotificationBadge.scss @@ -2,17 +2,18 @@ min-width: 16px; min-height: 8px; padding: 0 var(--sp-ultra-tight); - background-color: var(--tc-surface-low); + background-color: var(--bg-badge); border-radius: var(--bo-radius); .text { - color: white; + color: var(--tc-badge); text-align: center; font-weight: 700; } &--alert { background-color: var(--bg-danger); + & .text { color: white } } &:empty { diff --git a/src/index.scss b/src/index.scss index 678bb65a3..552e9b083 100644 --- a/src/index.scss +++ b/src/index.scss @@ -32,6 +32,7 @@ --bg-danger-border: rgba(240, 71, 71, 20%); --bg-tooltip: #353535; + --bg-badge: #989898; /* text color | --tc-[background type]-[priority]: value */ --tc-surface-high: #000000; @@ -57,6 +58,7 @@ --tc-code: #e62498; --tc-tooltip: white; + --tc-badge: white; /* system icons | --ic-[background type]-[priority]: value */ @@ -179,6 +181,7 @@ --bg-primary-border: rgba(59, 119, 191, 38%); --bg-tooltip: #000; + --bg-badge: hsl(0, 0%, 75%); /* text color | --tc-[background type]-[priority]: value */ --tc-surface-high: rgba(255, 255, 255, 94%); @@ -190,6 +193,7 @@ --tc-primary-low: rgba(255, 255, 255, 0.4); --tc-code: #e565b1; + --tc-badge: black; /* system icons | --ic-[background type]-[priority]: value */ --ic-surface-normal: rgba(255, 255, 255, 68%); From fc0dc8aea070ed02076dbbf8e9f217c309e7083f Mon Sep 17 00:00:00 2001 From: Ajay Bura Date: Sun, 12 Sep 2021 20:42:51 +0530 Subject: [PATCH 24/39] Added abbreviateNumber for notfication count (#82) --- src/util/common.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/util/common.js b/src/util/common.js index 938ced544..f434c5b3d 100644 --- a/src/util/common.js +++ b/src/util/common.js @@ -28,3 +28,8 @@ export function getEventCords(ev) { detail: ev.detail, }; } + +export function abbreviateNumber(number) { + if (number > 99) return '99+'; + return number; +} From b07c50e580ae2cda245aa7dde1705709266b083f Mon Sep 17 00:00:00 2001 From: Ajay Bura Date: Sun, 12 Sep 2021 20:44:13 +0530 Subject: [PATCH 25/39] Added unread symbol for Spaces, DMs and Home (#82) --- src/app/atoms/badge/NotificationBadge.scss | 2 +- .../molecules/room-selector/RoomSelector.jsx | 5 +- .../sidebar-avatar/SidebarAvatar.jsx | 30 +++---- .../sidebar-avatar/SidebarAvatar.scss | 25 ++---- src/app/organisms/navigation/Directs.jsx | 17 ++-- .../organisms/navigation/DrawerBreadcrumb.jsx | 77 +++++++++++++++--- .../navigation/DrawerBreadcrumb.scss | 8 ++ src/app/organisms/navigation/Home.jsx | 17 ++-- src/app/organisms/navigation/Selector.jsx | 16 ++-- src/app/organisms/navigation/SideBar.jsx | 80 ++++++++++++++++--- src/client/state/Notifications.js | 26 ++++-- src/client/state/RoomList.js | 28 +++---- src/client/state/cons.js | 4 +- src/index.scss | 2 + 14 files changed, 229 insertions(+), 108 deletions(-) diff --git a/src/app/atoms/badge/NotificationBadge.scss b/src/app/atoms/badge/NotificationBadge.scss index c876c37ac..c672b114a 100644 --- a/src/app/atoms/badge/NotificationBadge.scss +++ b/src/app/atoms/badge/NotificationBadge.scss @@ -12,7 +12,7 @@ } &--alert { - background-color: var(--bg-danger); + background-color: var(--bg-positive); & .text { color: white } } diff --git a/src/app/molecules/room-selector/RoomSelector.jsx b/src/app/molecules/room-selector/RoomSelector.jsx index 7e7f277c3..47201a625 100644 --- a/src/app/molecules/room-selector/RoomSelector.jsx +++ b/src/app/molecules/room-selector/RoomSelector.jsx @@ -84,7 +84,10 @@ RoomSelector.propTypes = { iconSrc: PropTypes.string, isSelected: PropTypes.bool, isUnread: PropTypes.bool.isRequired, - notificationCount: PropTypes.number.isRequired, + notificationCount: PropTypes.oneOfType([ + PropTypes.string, + PropTypes.number, + ]).isRequired, isAlert: PropTypes.bool.isRequired, options: PropTypes.node, onClick: PropTypes.func.isRequired, diff --git a/src/app/molecules/sidebar-avatar/SidebarAvatar.jsx b/src/app/molecules/sidebar-avatar/SidebarAvatar.jsx index 8d57e9bd4..882c00c94 100644 --- a/src/app/molecules/sidebar-avatar/SidebarAvatar.jsx +++ b/src/app/molecules/sidebar-avatar/SidebarAvatar.jsx @@ -2,29 +2,22 @@ import React from 'react'; import PropTypes from 'prop-types'; import './SidebarAvatar.scss'; -import Tippy from '@tippyjs/react'; import Avatar from '../../atoms/avatar/Avatar'; import Text from '../../atoms/text/Text'; +import Tooltip from '../../atoms/tooltip/Tooltip'; import NotificationBadge from '../../atoms/badge/NotificationBadge'; import { blurOnBubbling } from '../../atoms/button/script'; const SidebarAvatar = React.forwardRef(({ tooltip, text, bgColor, imageSrc, - iconSrc, active, onClick, notifyCount, + iconSrc, active, onClick, isUnread, notificationCount, isAlert, }, ref) => { let activeClass = ''; if (active) activeClass = ' sidebar-avatar--active'; return ( - {tooltip}} - className="sidebar-avatar-tippy" - touch="hold" - arrow={false} placement="right" - maxWidth={200} - delay={[0, 0]} - duration={[100, 0]} - offset={[0, 0]} > - + ); }); SidebarAvatar.defaultProps = { @@ -52,7 +50,9 @@ SidebarAvatar.defaultProps = { imageSrc: null, active: false, onClick: null, - notifyCount: null, + isUnread: false, + notificationCount: 0, + isAlert: false, }; SidebarAvatar.propTypes = { @@ -63,10 +63,12 @@ SidebarAvatar.propTypes = { iconSrc: PropTypes.string, active: PropTypes.bool, onClick: PropTypes.func, - notifyCount: PropTypes.oneOfType([ + isUnread: PropTypes.bool, + notificationCount: PropTypes.oneOfType([ PropTypes.string, PropTypes.number, ]), + isAlert: PropTypes.bool, }; export default SidebarAvatar; diff --git a/src/app/molecules/sidebar-avatar/SidebarAvatar.scss b/src/app/molecules/sidebar-avatar/SidebarAvatar.scss index 61917358a..3f445dfd4 100644 --- a/src/app/molecules/sidebar-avatar/SidebarAvatar.scss +++ b/src/app/molecules/sidebar-avatar/SidebarAvatar.scss @@ -1,28 +1,18 @@ - -.sidebar-avatar-tippy { - padding: var(--sp-extra-tight) var(--sp-normal); - background-color: var(--bg-tooltip); - border-radius: var(--bo-radius); - box-shadow: var(--bs-popup); - - .text { - color: var(--tc-tooltip); - } -} - .sidebar-avatar { position: relative; display: flex; justify-content: center; align-items: center; - width: 100%; cursor: pointer; & .notification-badge { position: absolute; - right: var(--sp-extra-tight); - top: calc(-1 * var(--sp-ultra-tight)); + right: 0; + top: 0; box-shadow: 0 0 0 2px var(--bg-surface-low); + transform: translate(20%, -20%); + + margin: 0 !important; } &:focus { outline: none; @@ -37,7 +27,7 @@ content: ""; display: block; position: absolute; - left: 0; + left: -11px; top: 50%; transform: translateY(-50%); @@ -48,7 +38,8 @@ transition: height 200ms linear; [dir=rtl] & { - right: 0; + left: unset; + right: -11px; border-radius: 4px 0 0 4px; } } diff --git a/src/app/organisms/navigation/Directs.jsx b/src/app/organisms/navigation/Directs.jsx index a907980bc..639f4cd4e 100644 --- a/src/app/organisms/navigation/Directs.jsx +++ b/src/app/organisms/navigation/Directs.jsx @@ -12,7 +12,7 @@ import { AtoZ } from './common'; const drawerPostie = new Postie(); function Directs() { - const { roomList } = initMatrix; + const { roomList, notifications } = initMatrix; const directIds = [...roomList.directs].sort(AtoZ); const [, forceUpdate] = useState({}); @@ -26,10 +26,11 @@ function Directs() { drawerPostie.post('selector-change', addresses, selectedRoomId); } - function unreadChanged(roomId) { - if (!drawerPostie.hasTopic('unread-change')) return; - if (!drawerPostie.hasSubscriber('unread-change', roomId)) return; - drawerPostie.post('unread-change', roomId); + function notiChanged(roomId, total, prevTotal) { + if (total === prevTotal) return; + if (drawerPostie.hasTopicAndSubscriber('unread-change', roomId)) { + drawerPostie.post('unread-change', roomId); + } } function roomListUpdated() { @@ -47,13 +48,11 @@ function Directs() { useEffect(() => { roomList.on(cons.events.roomList.ROOMLIST_UPDATED, roomListUpdated); navigation.on(cons.events.navigation.ROOM_SELECTED, selectorChanged); - roomList.on(cons.events.roomList.MY_RECEIPT_ARRIVED, unreadChanged); - roomList.on(cons.events.roomList.EVENT_ARRIVED, unreadChanged); + notifications.on(cons.events.notifications.NOTI_CHANGED, notiChanged); return () => { roomList.removeListener(cons.events.roomList.ROOMLIST_UPDATED, roomListUpdated); navigation.removeListener(cons.events.navigation.ROOM_SELECTED, selectorChanged); - roomList.removeListener(cons.events.roomList.MY_RECEIPT_ARRIVED, unreadChanged); - roomList.removeListener(cons.events.roomList.EVENT_ARRIVED, unreadChanged); + notifications.removeListener(cons.events.notifications.NOTI_CHANGED, notiChanged); }; }, []); diff --git a/src/app/organisms/navigation/DrawerBreadcrumb.jsx b/src/app/organisms/navigation/DrawerBreadcrumb.jsx index e7843626b..7eaae4ef3 100644 --- a/src/app/organisms/navigation/DrawerBreadcrumb.jsx +++ b/src/app/organisms/navigation/DrawerBreadcrumb.jsx @@ -1,4 +1,4 @@ -import React, { useEffect, useRef } from 'react'; +import React, { useState, useEffect, useRef } from 'react'; import PropTypes from 'prop-types'; import './DrawerBreadcrumb.scss'; @@ -6,51 +6,108 @@ import initMatrix from '../../../client/initMatrix'; import cons from '../../../client/state/cons'; import { selectSpace } from '../../../client/action/navigation'; import navigation from '../../../client/state/navigation'; +import { abbreviateNumber } from '../../../util/common'; import Text from '../../atoms/text/Text'; import RawIcon from '../../atoms/system-icons/RawIcon'; import Button from '../../atoms/button/Button'; import ScrollView from '../../atoms/scroll/ScrollView'; +import NotificationBadge from '../../atoms/badge/NotificationBadge'; import ChevronRightIC from '../../../../public/res/ic/outlined/chevron-right.svg'; function DrawerBreadcrumb({ spaceId }) { + const [, forceUpdate] = useState({}); const scrollRef = useRef(null); + const { roomList, notifications } = initMatrix; const mx = initMatrix.matrixClient; const spacePath = navigation.selectedSpacePath; + function onNotiChanged(roomId, total, prevTotal) { + if (total === prevTotal) return; + if (navigation.selectedSpacePath.includes(roomId)) { + forceUpdate({}); + } + if (navigation.selectedSpacePath[0] === cons.tabs.HOME) { + if (!roomList.isOrphan(roomId)) return; + if (roomList.directs.has(roomId)) return; + forceUpdate({}); + } + } + useEffect(() => { requestAnimationFrame(() => { if (scrollRef?.current === null) return; scrollRef.current.scrollLeft = scrollRef.current.scrollWidth; }); + notifications.on(cons.events.notifications.NOTI_CHANGED, onNotiChanged); + return () => { + notifications.removeListener(cons.events.notifications.NOTI_CHANGED, onNotiChanged); + }; }, [spaceId]); if (spacePath.length === 1) return null; + function getHomeNotiExcept(childId) { + const orphans = roomList.getOrphans(); + const childIndex = orphans.indexOf(childId); + if (childId !== -1) orphans.splice(childIndex, 1); + + let noti = null; + + orphans.forEach((roomId) => { + if (!notifications.hasNoti(roomId)) return; + if (noti === null) noti = { total: 0, highlight: 0 }; + const childNoti = notifications.getNoti(roomId); + noti.total += childNoti.total; + noti.highlight += childNoti.highlight; + }); + + return noti; + } + + function getNotiExcept(roomId, childId) { + if (!notifications.hasNoti(roomId)) return null; + + const noti = notifications.getNoti(roomId); + if (!notifications.hasNoti(childId)) return noti; + if (noti.from === null) return noti; + if (noti.from.has(childId) && noti.from.size === 1) return null; + + const childNoti = notifications.getNoti(childId); + + return { + total: noti.total - childNoti.total, + highlight: noti.highlight - childNoti.highlight, + }; + } + return (
{ spacePath.map((id, index) => { - if (index === 0) { - return ( - - ); - } + const noti = (id !== cons.tabs.HOME && index < spacePath.length) + ? getNotiExcept(id, (index === spacePath.length - 1) ? null : spacePath[index + 1]) + : getHomeNotiExcept((index === spacePath.length - 1) ? null : spacePath[index + 1]); + return ( - + { index !== 0 && } ); diff --git a/src/app/organisms/navigation/DrawerBreadcrumb.scss b/src/app/organisms/navigation/DrawerBreadcrumb.scss index 80262a9d0..60cd47f15 100644 --- a/src/app/organisms/navigation/DrawerBreadcrumb.scss +++ b/src/app/organisms/navigation/DrawerBreadcrumb.scss @@ -51,6 +51,14 @@ overflow: hidden; text-overflow: ellipsis; } + + & .notification-badge { + margin-left: var(--sp-extra-tight); + [dir=rtl] & { + margin-left: 0; + margin-right: var(--sp-extra-tight); + } + } } &__btn--selected { diff --git a/src/app/organisms/navigation/Home.jsx b/src/app/organisms/navigation/Home.jsx index 120ceb7fe..2c505f723 100644 --- a/src/app/organisms/navigation/Home.jsx +++ b/src/app/organisms/navigation/Home.jsx @@ -15,7 +15,7 @@ import { AtoZ } from './common'; const drawerPostie = new Postie(); function Home({ spaceId }) { const [, forceUpdate] = useState({}); - const { roomList } = initMatrix; + const { roomList, notifications } = initMatrix; let spaceIds = []; let roomIds = []; let directIds = []; @@ -40,10 +40,11 @@ function Home({ spaceId }) { if (addresses.length === 0) return; drawerPostie.post('selector-change', addresses, selectedRoomId); } - function unreadChanged(roomId) { - if (!drawerPostie.hasTopic('unread-change')) return; - if (!drawerPostie.hasSubscriber('unread-change', roomId)) return; - drawerPostie.post('unread-change', roomId); + function notiChanged(roomId, total, prevTotal) { + if (total === prevTotal) return; + if (drawerPostie.hasTopicAndSubscriber('unread-change', roomId)) { + drawerPostie.post('unread-change', roomId); + } } function roomListUpdated() { @@ -61,13 +62,11 @@ function Home({ spaceId }) { useEffect(() => { roomList.on(cons.events.roomList.ROOMLIST_UPDATED, roomListUpdated); navigation.on(cons.events.navigation.ROOM_SELECTED, selectorChanged); - roomList.on(cons.events.roomList.MY_RECEIPT_ARRIVED, unreadChanged); - roomList.on(cons.events.roomList.EVENT_ARRIVED, unreadChanged); + notifications.on(cons.events.notifications.NOTI_CHANGED, notiChanged); return () => { roomList.removeListener(cons.events.roomList.ROOMLIST_UPDATED, roomListUpdated); navigation.removeListener(cons.events.navigation.ROOM_SELECTED, selectorChanged); - roomList.removeListener(cons.events.roomList.MY_RECEIPT_ARRIVED, unreadChanged); - roomList.removeListener(cons.events.roomList.EVENT_ARRIVED, unreadChanged); + notifications.removeListener(cons.events.notifications.NOTI_CHANGED, notiChanged); }; }, []); diff --git a/src/app/organisms/navigation/Selector.jsx b/src/app/organisms/navigation/Selector.jsx index 1a47a57e1..7ec7c0b0e 100644 --- a/src/app/organisms/navigation/Selector.jsx +++ b/src/app/organisms/navigation/Selector.jsx @@ -3,11 +3,10 @@ import React, { useState, useEffect } from 'react'; import PropTypes from 'prop-types'; import initMatrix from '../../../client/initMatrix'; -import { doesRoomHaveUnread } from '../../../util/matrixUtil'; import navigation from '../../../client/state/navigation'; import { openRoomOptions } from '../../../client/action/navigation'; import { createSpaceShortcut, deleteSpaceShortcut } from '../../../client/action/room'; -import { getEventCords } from '../../../util/common'; +import { getEventCords, abbreviateNumber } from '../../../util/common'; import IconButton from '../../atoms/button/IconButton'; import RoomSelector from '../../molecules/room-selector/RoomSelector'; @@ -24,6 +23,7 @@ function Selector({ roomId, isDM, drawerPostie, onClick, }) { const mx = initMatrix.matrixClient; + const noti = initMatrix.notifications; const room = mx.getRoom(roomId); let imageSrc = room.getAvatarFallbackMember()?.getAvatarUrl(mx.baseUrl, 24, 24, 'crop') || null; if (imageSrc === null) imageSrc = room.getAvatarUrl(mx.baseUrl, 24, 24, 'crop') || null; @@ -54,9 +54,9 @@ function Selector({ name={room.name} roomId={roomId} iconSrc={room.getJoinRule() === 'invite' ? SpaceLockIC : SpaceIC} - isUnread={doesRoomHaveUnread(room)} - notificationCount={room.getUnreadNotificationCount('total') || 0} - isAlert={room.getUnreadNotificationCount('highlight') !== 0} + isUnread={noti.hasNoti(roomId)} + notificationCount={abbreviateNumber(noti.getTotalNoti(roomId))} + isAlert={noti.getHighlightNoti(roomId) !== 0} onClick={onClick} options={( roomList.inviteRooms.size + roomList.inviteSpaces.size @@ -74,33 +75,83 @@ function SideBar() { function onSpaceShortcutUpdated() { forceUpdate({}); } + function onNotificationChanged(roomId, total, prevTotal) { + if (total === prevTotal) return; + forceUpdate({}); + } useEffect(() => { navigation.on(cons.events.navigation.TAB_SELECTED, onTabSelected); roomList.on(cons.events.roomList.SPACE_SHORTCUT_UPDATED, onSpaceShortcutUpdated); - initMatrix.roomList.on( - cons.events.roomList.INVITELIST_UPDATED, - onInviteListChange, - ); + roomList.on(cons.events.roomList.INVITELIST_UPDATED, onInviteListChange); + notifications.on(cons.events.notifications.NOTI_CHANGED, onNotificationChanged); return () => { navigation.removeListener(cons.events.navigation.TAB_SELECTED, onTabSelected); roomList.removeListener(cons.events.roomList.SPACE_SHORTCUT_UPDATED, onSpaceShortcutUpdated); - initMatrix.roomList.removeListener( - cons.events.roomList.INVITELIST_UPDATED, - onInviteListChange, - ); + roomList.removeListener(cons.events.roomList.INVITELIST_UPDATED, onInviteListChange); + notifications.removeListener(cons.events.notifications.NOTI_CHANGED, onNotificationChanged); }; }, []); + function getHomeNoti() { + const orphans = roomList.getOrphans(); + let noti = null; + + orphans.forEach((roomId) => { + if (!notifications.hasNoti(roomId)) return; + if (noti === null) noti = { total: 0, highlight: 0 }; + const childNoti = notifications.getNoti(roomId); + noti.total += childNoti.total; + noti.highlight += childNoti.highlight; + }); + + return noti; + } + function getDMsNoti() { + if (roomList.directs.size === 0) return null; + let noti = null; + + [...roomList.directs].forEach((roomId) => { + if (!notifications.hasNoti(roomId)) return; + if (noti === null) noti = { total: 0, highlight: 0 }; + const childNoti = notifications.getNoti(roomId); + noti.total += childNoti.total; + noti.highlight += childNoti.highlight; + }); + + return noti; + } + + // TODO: bellow operations are heavy. + // refactor this component into more smaller components. + const dmsNoti = getDMsNoti(); + const homeNoti = getHomeNoti(); + return (
- selectTab(cons.tabs.HOME)} tooltip="Home" iconSrc={HomeIC} /> - selectTab(cons.tabs.DIRECTS)} tooltip="People" iconSrc={UserIC} /> + selectTab(cons.tabs.HOME)} + tooltip="Home" + iconSrc={HomeIC} + isUnread={homeNoti !== null} + notificationCount={homeNoti !== null ? abbreviateNumber(homeNoti.total) : 0} + isAlert={homeNoti?.highlight > 0} + /> + selectTab(cons.tabs.DIRECTS)} + tooltip="People" + iconSrc={UserIC} + isUnread={dmsNoti !== null} + notificationCount={dmsNoti !== null ? abbreviateNumber(dmsNoti.total) : 0} + isAlert={dmsNoti?.highlight > 0} + /> openPublicRooms()} tooltip="Public rooms" iconSrc={HashSearchIC} />
@@ -117,6 +168,9 @@ function SideBar() { bgColor={colorMXID(room.roomId)} imageSrc={room.getAvatarUrl(initMatrix.matrixClient.baseUrl, 42, 42, 'crop') || null} text={room.name.slice(0, 1)} + isUnread={notifications.hasNoti(sRoomId)} + notificationCount={abbreviateNumber(notifications.getTotalNoti(sRoomId))} + isAlert={notifications.getHighlightNoti(sRoomId) !== 0} onClick={() => selectTab(shortcut)} /> ); @@ -131,7 +185,9 @@ function SideBar() {
{ totalInvites !== 0 && ( openInviteList()} tooltip="Invites" iconSrc={InviteIC} diff --git a/src/client/state/Notifications.js b/src/client/state/Notifications.js index f3b56acea..f5ecce2b5 100644 --- a/src/client/state/Notifications.js +++ b/src/client/state/Notifications.js @@ -58,11 +58,27 @@ class Notifications extends EventEmitter { return this.roomIdToNoti.get(roomId) || { total: 0, highlight: 0, from: null }; } + getTotalNoti(roomId) { + const { total } = this.getNoti(roomId); + return total; + } + + getHighlightNoti(roomId) { + const { highlight } = this.getNoti(roomId); + return highlight; + } + + getFromNoti(roomId) { + const { from } = this.getNoti(roomId); + return from; + } + hasNoti(roomId) { return this.roomIdToNoti.has(roomId); } _setNoti(roomId, total, highlight, childId) { + const prevTotal = this.roomIdToNoti.get(roomId)?.total ?? null; const noti = this.getNoti(roomId); noti.total += total; @@ -73,7 +89,7 @@ class Notifications extends EventEmitter { } this.roomIdToNoti.set(roomId, noti); - this.emit(cons.events.notification.NOTI_CHANGED, roomId); + this.emit(cons.events.notifications.NOTI_CHANGED, roomId, noti.total, prevTotal); const parentIds = this.roomList.roomIdToParents.get(roomId); if (typeof parentIds === 'undefined') return; @@ -84,6 +100,7 @@ class Notifications extends EventEmitter { if (this.roomIdToNoti.has(roomId) === false) return; const noti = this.getNoti(roomId); + const prevTotal = noti.total; noti.total -= total; noti.highlight -= highlight; if (childId && noti.from !== null) { @@ -91,10 +108,11 @@ class Notifications extends EventEmitter { } if (noti.from === null || noti.from.size === 0) { this.roomIdToNoti.delete(roomId); - this.emit(cons.events.notification.FULL_READ, roomId); + this.emit(cons.events.notifications.FULL_READ, roomId); + this.emit(cons.events.notifications.NOTI_CHANGED, roomId, null, prevTotal); } else { this.roomIdToNoti.set(roomId, noti); - this.emit(cons.events.notification.NOTI_CHANGED, roomId); + this.emit(cons.events.notifications.NOTI_CHANGED, roomId, noti.total, prevTotal); } const parentIds = this.roomList.roomIdToParents.get(roomId); @@ -120,8 +138,6 @@ class Notifications extends EventEmitter { this.matrixClient.on('Room.receipt', (mEvent, room) => { if (mEvent.getType() === 'm.receipt') { - if (typeof mEvent.event.room_id === 'string') return; - const content = mEvent.getContent(); const readedEventId = Object.keys(content)[0]; const readerUserId = Object.keys(content[readedEventId]['m.read'])[0]; diff --git a/src/client/state/RoomList.js b/src/client/state/RoomList.js index c6b6f86bd..b746a4681 100644 --- a/src/client/state/RoomList.js +++ b/src/client/state/RoomList.js @@ -41,6 +41,15 @@ class RoomList extends EventEmitter { this.matrixClient.setAccountData(cons['in.cinny.spaces'], spaceContent); } + isOrphan(roomId) { + return !this.roomIdToParents.has(roomId); + } + + getOrphans() { + const rooms = [...this.spaces].concat([...this.rooms]); + return rooms.filter((roomId) => !this.roomIdToParents.has(roomId)); + } + getSpaceChildren(roomId) { const space = this.matrixClient.getRoom(roomId); const mSpaceChild = space?.currentState.getStateEvents('m.space.child'); @@ -254,15 +263,6 @@ class RoomList extends EventEmitter { this.matrixClient.on('Room.name', () => { this.emit(cons.events.roomList.ROOMLIST_UPDATED); }); - this.matrixClient.on('Room.receipt', (event, room) => { - if (event.getType() === 'm.receipt') { - const content = event.getContent(); - const userReadEventId = Object.keys(content)[0]; - const eventReaderUserId = Object.keys(content[userReadEventId]['m.read'])[0]; - if (eventReaderUserId !== this.matrixClient.getUserId()) return; - this.emit(cons.events.roomList.MY_RECEIPT_ARRIVED, room.roomId); - } - }); this.matrixClient.on('RoomState.events', (mEvent) => { if (mEvent.getType() === 'm.space.child') { @@ -387,16 +387,6 @@ class RoomList extends EventEmitter { } this.emit(cons.events.roomList.ROOMLIST_UPDATED); }); - - this.matrixClient.on('Room.timeline', (event, room) => { - const supportEvents = ['m.room.message', 'm.room.encrypted', 'm.sticker']; - if (!supportEvents.includes(event.getType())) return; - - const lastTimelineEvent = room.timeline[room.timeline.length - 1]; - if (lastTimelineEvent.getId() !== event.getId()) return; - if (event.getSender() === this.matrixClient.getUserId()) return; - this.emit(cons.events.roomList.EVENT_ARRIVED, room.roomId); - }); } } export default RoomList; diff --git a/src/client/state/cons.js b/src/client/state/cons.js index 6211348b3..fee81b5ed 100644 --- a/src/client/state/cons.js +++ b/src/client/state/cons.js @@ -67,11 +67,9 @@ const cons = { ROOM_JOINED: 'ROOM_JOINED', ROOM_LEAVED: 'ROOM_LEAVED', ROOM_CREATED: 'ROOM_CREATED', - MY_RECEIPT_ARRIVED: 'MY_RECEIPT_ARRIVED', - EVENT_ARRIVED: 'EVENT_ARRIVED', SPACE_SHORTCUT_UPDATED: 'SPACE_SHORTCUT_UPDATED', }, - notification: { + notifications: { NOTI_CHANGED: 'NOTI_CHANGED', FULL_READ: 'FULL_READ', }, diff --git a/src/index.scss b/src/index.scss index 552e9b083..77261e546 100644 --- a/src/index.scss +++ b/src/index.scss @@ -220,6 +220,8 @@ --bg-surface-low: hsl(64, 6%, 10%); --bg-surface-low-transparent: hsla(64, 6%, 14%, 0); + --bg-badge: #c4c1ab; + /* text color | --tc-[background type]-[priority]: value */ --tc-surface-high: rgb(255, 251, 222, 94%); From 93d8ba0b0f6bb44961cbf2369aa81af5e4640689 Mon Sep 17 00:00:00 2001 From: kfiven <33421343+kfiven@users.noreply.github.com> Date: Sun, 12 Sep 2021 21:18:45 +0530 Subject: [PATCH 26/39] Replaced preview url with img from site repo (#89) --- README.md | 4 ++-- preview-light.png | Bin 297408 -> 0 bytes 2 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 preview-light.png diff --git a/README.md b/README.md index 3ac8273fd..e4995d9ab 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Cinny is a [Matrix](https://matrix.org) client focusing primarily on simple, elegant and secure interface. -![preview](./preview-light.png) +![preview](https://github.com/ajbura/cinny-site/blob/master/assets/preview-light.png) ## Building and Running @@ -50,4 +50,4 @@ Copyright (c) 2021 Ajay Bura (ajbura) and other contributors Code licensed under the MIT License: -Graphics licensed under CC-BY 4.0: +Graphics licensed under CC-BY 4.0: \ No newline at end of file diff --git a/preview-light.png b/preview-light.png deleted file mode 100644 index fd76bca92b41fe6cc92cf6bbd159febf04edc982..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 297408 zcmaI81ys{-`#-)h93Tu(6vt>05$Wy{1eFq{8%9ebU86xt1PN&nMCooAAdQ4{mxOe8 z{NMBW*6;cF{0}?qoSn0K*L`)ou6M{w1sT{)#7z(g1bhBW>J;`ZkGH=t1%0A6f7AL-Q2m9C8N4~_wcceIk{e$m6 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%0DN*k#} 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

a9-614y4?r*6s;f)yHm0&o0qV$Axt>q^ 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 X|Lfy^=XPv3$p8YLu6{1-oD!M<>{NMS From f97596689fc8fea987911e4194110d5f9928adb8 Mon Sep 17 00:00:00 2001 From: jamesjulich <51384945+jamesjulich@users.noreply.github.com> Date: Sun, 12 Sep 2021 22:25:58 -0500 Subject: [PATCH 27/39] Move files and rename classes. --- .../image-upload/ImageUpload.jsx | 14 +++++++------- .../image-upload/ImageUpload.scss | 10 +++++----- .../profile-editor/ProfileEditor.jsx | 6 +++--- .../profile-editor/ProfileEditor.scss | 6 +++--- src/app/organisms/settings/Settings.jsx | 7 ++++--- 5 files changed, 22 insertions(+), 21 deletions(-) rename src/app/{atoms => molecules}/image-upload/ImageUpload.jsx (76%) rename src/app/{atoms => molecules}/image-upload/ImageUpload.scss (58%) rename src/app/{molecules => organisms}/profile-editor/ProfileEditor.jsx (87%) rename src/app/{molecules => organisms}/profile-editor/ProfileEditor.scss (75%) diff --git a/src/app/atoms/image-upload/ImageUpload.jsx b/src/app/molecules/image-upload/ImageUpload.jsx similarity index 76% rename from src/app/atoms/image-upload/ImageUpload.jsx rename to src/app/molecules/image-upload/ImageUpload.jsx index e8a267149..992d5bca0 100644 --- a/src/app/atoms/image-upload/ImageUpload.jsx +++ b/src/app/molecules/image-upload/ImageUpload.jsx @@ -3,10 +3,10 @@ import PropTypes from 'prop-types'; import initMatrix from '../../../client/initMatrix'; -import GenIC from '../../../../public/res/ic/outlined/settings.svg'; -import Avatar from '../avatar/Avatar'; +import SettingsIC from '../../../../public/res/ic/outlined/settings.svg'; +import Avatar from '../../atoms/avatar/Avatar'; -import RawIcon from '../system-icons/RawIcon'; +import RawIcon from '../../atoms/system-icons/RawIcon'; import './ImageUpload.scss'; function ImageUpload({ @@ -29,8 +29,8 @@ function ImageUpload({ } return ( - diff --git a/src/app/atoms/image-upload/ImageUpload.scss b/src/app/molecules/image-upload/ImageUpload.scss similarity index 58% rename from src/app/atoms/image-upload/ImageUpload.scss rename to src/app/molecules/image-upload/ImageUpload.scss index c7118ba8e..dbf2bace9 100644 --- a/src/app/atoms/image-upload/ImageUpload.scss +++ b/src/app/molecules/image-upload/ImageUpload.scss @@ -1,20 +1,20 @@ -.img-upload-container { +.img-upload { display: flex; flex-direction: row-reverse; width: 80px; height: 80px; } -.img-upload-container:hover { +.img-upload:hover { cursor: pointer; } -.img-upload-mask { +.img-upload__mask { mask: url('../../../../public/res/svg/avatar-clip.svg'); - //width: 80px; + -webkit-mask: url('../../../../public/res/svg/avatar-clip.svg'); } -.img-upload-icon { +.img-upload__icon { z-index: 1; position: absolute; } \ No newline at end of file diff --git a/src/app/molecules/profile-editor/ProfileEditor.jsx b/src/app/organisms/profile-editor/ProfileEditor.jsx similarity index 87% rename from src/app/molecules/profile-editor/ProfileEditor.jsx rename to src/app/organisms/profile-editor/ProfileEditor.jsx index 797c40031..61cd896d2 100644 --- a/src/app/molecules/profile-editor/ProfileEditor.jsx +++ b/src/app/organisms/profile-editor/ProfileEditor.jsx @@ -5,7 +5,7 @@ import initMatrix from '../../../client/initMatrix'; import colorMXID from '../../../util/colorMXID'; import Button from '../../atoms/button/Button'; -import ImageUpload from '../../atoms/image-upload/ImageUpload'; +import ImageUpload from '../../molecules/image-upload/ImageUpload'; import Input from '../../atoms/input/Input'; import Text from '../../atoms/text/Text'; @@ -45,12 +45,12 @@ function ProfileEditor({ return (

-
+
Display name of  {mx.getUserId()} - +
diff --git a/src/app/molecules/profile-editor/ProfileEditor.scss b/src/app/organisms/profile-editor/ProfileEditor.scss similarity index 75% rename from src/app/molecules/profile-editor/ProfileEditor.scss rename to src/app/organisms/profile-editor/ProfileEditor.scss index 98a453aa2..015b920f9 100644 --- a/src/app/molecules/profile-editor/ProfileEditor.scss +++ b/src/app/organisms/profile-editor/ProfileEditor.scss @@ -3,11 +3,11 @@ align-items: end; } -.img-upload-container { +.img-upload { margin-right: var(--sp-normal) } -.display-name-input-container { +.profile-editor__input-container { display: flex; flex-direction: column; margin-right: var(--sp-normal); @@ -15,7 +15,7 @@ max-width: 400px; } -.display-name-input-container > .text-b3 { +.profile-editor__input-container > .text-b3 { margin-bottom: var(--sp-ultra-tight) } diff --git a/src/app/organisms/settings/Settings.jsx b/src/app/organisms/settings/Settings.jsx index 91be164fb..f97c942c1 100644 --- a/src/app/organisms/settings/Settings.jsx +++ b/src/app/organisms/settings/Settings.jsx @@ -14,10 +14,11 @@ import SegmentedControls from '../../atoms/segmented-controls/SegmentedControls' import PopupWindow, { PWContentSelector } from '../../molecules/popup-window/PopupWindow'; import SettingTile from '../../molecules/setting-tile/SettingTile'; -import ProfileEditor from '../../molecules/profile-editor/ProfileEditor'; import ImportE2ERoomKeys from '../../molecules/import-e2e-room-keys/ImportE2ERoomKeys'; -import GenIC from '../../../../public/res/ic/outlined/settings.svg'; +import ProfileEditor from '../profile-editor/ProfileEditor'; + +import SettingsIC from '../../../../public/res/ic/outlined/settings.svg'; import SunIC from '../../../../public/res/ic/outlined/sun.svg'; import LockIC from '../../../../public/res/ic/outlined/lock.svg'; import InfoIC from '../../../../public/res/ic/outlined/info.svg'; @@ -120,7 +121,7 @@ function AboutSection() { function Settings({ isOpen, onRequestClose }) { const settingSections = [{ name: 'General', - iconSrc: GenIC, + iconSrc: SettingsIC, render() { return ; }, From 09f7225eb717a3547a07e506ea795f3bbb0a96c9 Mon Sep 17 00:00:00 2001 From: Ajay Bura Date: Mon, 13 Sep 2021 12:27:55 +0530 Subject: [PATCH 28/39] Added progress spinner in ImageUplaod (#91) --- public/res/svg/avatar-clip.svg | 3 - .../molecules/image-upload/ImageUpload.jsx | 75 ++++++++++++------- .../molecules/image-upload/ImageUpload.scss | 58 ++++++++++---- .../profile-editor/ProfileEditor.jsx | 23 ++++-- .../profile-editor/ProfileEditor.scss | 6 +- src/app/organisms/settings/Settings.jsx | 2 +- 6 files changed, 114 insertions(+), 53 deletions(-) delete mode 100644 public/res/svg/avatar-clip.svg diff --git a/public/res/svg/avatar-clip.svg b/public/res/svg/avatar-clip.svg deleted file mode 100644 index ffaa1a2f6..000000000 --- a/public/res/svg/avatar-clip.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/app/molecules/image-upload/ImageUpload.jsx b/src/app/molecules/image-upload/ImageUpload.jsx index 992d5bca0..da7948925 100644 --- a/src/app/molecules/image-upload/ImageUpload.jsx +++ b/src/app/molecules/image-upload/ImageUpload.jsx @@ -1,48 +1,73 @@ -import React, { useRef } from 'react'; +import React, { useState, useRef } from 'react'; import PropTypes from 'prop-types'; +import './ImageUpload.scss'; import initMatrix from '../../../client/initMatrix'; -import SettingsIC from '../../../../public/res/ic/outlined/settings.svg'; +import Text from '../../atoms/text/Text'; import Avatar from '../../atoms/avatar/Avatar'; - -import RawIcon from '../../atoms/system-icons/RawIcon'; -import './ImageUpload.scss'; +import Spinner from '../../atoms/spinner/Spinner'; function ImageUpload({ - text, bgColor, imageSrc, onUpload, + text, bgColor, imageSrc, onUpload, onRequestRemove, }) { + const [uploadPromise, setUploadPromise] = useState(null); const uploadImageRef = useRef(null); - // Uploads image and passes resulting URI to onUpload function provided in component props. - function uploadImage(e) { + async function uploadImage(e) { const file = e.target.files.item(0); - if (file !== null) { // TODO Add upload progress spinner - initMatrix.matrixClient.uploadContent(file, { onlyContentUri: false }).then((res) => { - if (res.content_uri !== null) { - onUpload({ content_uri: res.content_uri }); - } - }, (err) => { - console.log(err); // TODO Replace with alert banner. - }); + if (file === null) return; + try { + const uPromise = initMatrix.matrixClient.uploadContent(file, { onlyContentUri: false }); + setUploadPromise(uPromise); + + const res = await uPromise; + if (typeof res?.content_uri === 'string') onUpload(res.content_uri); + setUploadPromise(null); + } catch { + setUploadPromise(null); } + uploadImageRef.current.value = null; + } + + function cancelUpload() { + initMatrix.matrixClient.cancelUpload(uploadPromise); + setUploadPromise(null); + uploadImageRef.current.value = null; } return ( -
-
- -
+
+ {uploadPromise === null && Upload} + {uploadPromise !== null && } +
+ + { (typeof imageSrc === 'string' || uploadPromise !== null) && ( + + )} - +
); } @@ -50,14 +75,14 @@ ImageUpload.defaultProps = { text: null, bgColor: 'transparent', imageSrc: null, - onUpload: null, }; ImageUpload.propTypes = { text: PropTypes.string, bgColor: PropTypes.string, imageSrc: PropTypes.string, - onUpload: PropTypes.func, + onUpload: PropTypes.func.isRequired, + onRequestRemove: PropTypes.func.isRequired, }; export default ImageUpload; diff --git a/src/app/molecules/image-upload/ImageUpload.scss b/src/app/molecules/image-upload/ImageUpload.scss index dbf2bace9..9e0f312f5 100644 --- a/src/app/molecules/image-upload/ImageUpload.scss +++ b/src/app/molecules/image-upload/ImageUpload.scss @@ -1,20 +1,50 @@ -.img-upload { +.img-upload__wrapper { display: flex; - flex-direction: row-reverse; - width: 80px; - height: 80px; + flex-direction: column; + align-items: center; } -.img-upload:hover { +.img-upload { + display: flex; cursor: pointer; -} + position: relative; + + &__process { + width: 100%; + height: 100%; + border-radius: var(--bo-radius); + display: flex; + justify-content: center; + align-items: center; + background-color: rgba(0, 0, 0, .6); + + position: absolute; + left: 0; + right: 0; + z-index: 1; + & .text { + text-transform: uppercase; + font-weight: 600; + color: white; + } + &--stopped { + display: none; + } + & .donut-spinner { + border-color: rgb(255, 255, 255, .3); + border-left-color: white; + } + } + &:hover .img-upload__process--stopped { + display: flex; + } -.img-upload__mask { - mask: url('../../../../public/res/svg/avatar-clip.svg'); - -webkit-mask: url('../../../../public/res/svg/avatar-clip.svg'); -} -.img-upload__icon { - z-index: 1; - position: absolute; -} \ No newline at end of file + &__btn-cancel { + margin-top: var(--sp-extra-tight); + cursor: pointer; + & .text { + color: var(--tc-danger-normal) + } + } +} diff --git a/src/app/organisms/profile-editor/ProfileEditor.jsx b/src/app/organisms/profile-editor/ProfileEditor.jsx index 61cd896d2..9dd308a4b 100644 --- a/src/app/organisms/profile-editor/ProfileEditor.jsx +++ b/src/app/organisms/profile-editor/ProfileEditor.jsx @@ -18,15 +18,22 @@ function ProfileEditor({ const mx = initMatrix.matrixClient; const displayNameRef = useRef(null); const bgColor = colorMXID(userId); - const [imageSrc, updateImgSrc] = useState(mx.mxcUrlToHttp(mx.getUser(mx.getUserId()).avatarUrl)); + const [avatarSrc, setAvatarSrc] = useState(mx.mxcUrlToHttp(mx.getUser(mx.getUserId()).avatarUrl, 80, 80, 'crop') || null); const [disabled, setDisabled] = useState(true); let username = mx.getUser(mx.getUserId()).displayName; // Sets avatar URL and updates the avatar component in profile editor to reflect new upload - function handleUpload(e) { - mx.setAvatarUrl(e.content_uri); - updateImgSrc(mx.mxcUrlToHttp(e.content_uri)); + function handleAvatarUpload(url) { + if (url === null) { + if (confirm('Are you sure you want to remove avatar?')) { + mx.setAvatarUrl(''); + setAvatarSrc(null); + } + return; + } + mx.setAvatarUrl(url); + setAvatarSrc(mx.mxcUrlToHttp(url, 80, 80, 'crop')); } function saveDisplayName() { @@ -44,7 +51,13 @@ function ProfileEditor({ return (
- + handleAvatarUpload(null)} + />
Display name of  diff --git a/src/app/organisms/profile-editor/ProfileEditor.scss b/src/app/organisms/profile-editor/ProfileEditor.scss index 015b920f9..882f07926 100644 --- a/src/app/organisms/profile-editor/ProfileEditor.scss +++ b/src/app/organisms/profile-editor/ProfileEditor.scss @@ -3,14 +3,10 @@ align-items: end; } -.img-upload { - margin-right: var(--sp-normal) -} - .profile-editor__input-container { display: flex; flex-direction: column; - margin-right: var(--sp-normal); + margin: 0 var(--sp-normal); width: 100%; max-width: 400px; } diff --git a/src/app/organisms/settings/Settings.jsx b/src/app/organisms/settings/Settings.jsx index f97c942c1..b20364c60 100644 --- a/src/app/organisms/settings/Settings.jsx +++ b/src/app/organisms/settings/Settings.jsx @@ -30,7 +30,7 @@ function GeneralSection() { return (
)} From 872e2f9753d0ef9a2fd31636b7708ed6b1a4683c Mon Sep 17 00:00:00 2001 From: Ajay Bura Date: Mon, 13 Sep 2021 13:33:24 +0530 Subject: [PATCH 29/39] Added cancel button and support for empty display name (#91) --- .../profile-editor/ProfileEditor.jsx | 35 ++++++++++++------- .../profile-editor/ProfileEditor.scss | 34 +++++++++++------- 2 files changed, 44 insertions(+), 25 deletions(-) diff --git a/src/app/organisms/profile-editor/ProfileEditor.jsx b/src/app/organisms/profile-editor/ProfileEditor.jsx index 9dd308a4b..a124acaa9 100644 --- a/src/app/organisms/profile-editor/ProfileEditor.jsx +++ b/src/app/organisms/profile-editor/ProfileEditor.jsx @@ -37,20 +37,27 @@ function ProfileEditor({ } function saveDisplayName() { - if (displayNameRef.current.value !== null && displayNameRef.current.value !== '') { - mx.setDisplayName(displayNameRef.current.value); - username = displayNameRef.current.value; + const newDisplayName = displayNameRef.current.value; + if (newDisplayName !== null && newDisplayName !== username) { + mx.setDisplayName(newDisplayName); + username = newDisplayName; setDisabled(true); } } - // Enables/disables button depending on if the typed displayname is different than the current. function onDisplayNameInputChange() { - setDisabled((username === displayNameRef.current.value) || displayNameRef.current.value === '' || displayNameRef.current.value == null); + setDisabled(username === displayNameRef.current.value || displayNameRef.current.value == null); + } + function cancelDisplayNameChanges() { + displayNameRef.current.value = username; + onDisplayNameInputChange(); } return ( - + { e.preventDefault(); saveDisplayName(); }} + > handleAvatarUpload(null)} /> -
- - Display name of  - {mx.getUserId()} - - +
+ + +
- ); } diff --git a/src/app/organisms/profile-editor/ProfileEditor.scss b/src/app/organisms/profile-editor/ProfileEditor.scss index 882f07926..10d62c75b 100644 --- a/src/app/organisms/profile-editor/ProfileEditor.scss +++ b/src/app/organisms/profile-editor/ProfileEditor.scss @@ -1,20 +1,30 @@ .profile-editor { display: flex; - align-items: end; + align-items: flex-start; } -.profile-editor__input-container { +.profile-editor__input-wrapper { + flex: 1; + min-width: 0; + margin-top: 10px; + display: flex; - flex-direction: column; - margin: 0 var(--sp-normal); - width: 100%; - max-width: 400px; -} + align-items: flex-end; + flex-wrap: wrap; -.profile-editor__input-container > .text-b3 { - margin-bottom: var(--sp-ultra-tight) -} + & > .input-container { + flex: 1; + } + & > button { + height: 46px; + margin-top: var(--sp-normal); + } -.profile-editor > .btn-primary { - height: 46px; + & > * { + margin-left: var(--sp-normal); + [dir=rtl] & { + margin-left: 0; + margin-right: var(--sp-normal); + } + } } \ No newline at end of file From 767784a79cfbbd43eb2efffcadba33d79784af54 Mon Sep 17 00:00:00 2001 From: Ajay Bura Date: Mon, 13 Sep 2021 16:29:42 +0530 Subject: [PATCH 30/39] Added onKeyDown prop to Input comp --- src/app/atoms/input/Input.jsx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/app/atoms/input/Input.jsx b/src/app/atoms/input/Input.jsx index c5401a3f0..7b5f0967c 100644 --- a/src/app/atoms/input/Input.jsx +++ b/src/app/atoms/input/Input.jsx @@ -8,6 +8,7 @@ function Input({ id, label, value, placeholder, required, type, onChange, forwardRef, resizable, minHeight, onResize, state, + onKeyDown, }) { return (
@@ -26,6 +27,7 @@ function Input({ autoComplete="off" onChange={onChange} onResize={onResize} + onKeyDown={onKeyDown} /> ) : ( )}
@@ -57,6 +60,7 @@ Input.defaultProps = { minHeight: 46, onResize: null, state: 'normal', + onKeyDown: null, }; Input.propTypes = { @@ -72,6 +76,7 @@ Input.propTypes = { minHeight: PropTypes.number, onResize: PropTypes.func, state: PropTypes.oneOf(['normal', 'success', 'error']), + onKeyDown: PropTypes.func, }; export default Input; From 0bbe6a0a12e9a38a5a56c88f6ac3643e51c50f5d Mon Sep 17 00:00:00 2001 From: Ajay Bura Date: Mon, 13 Sep 2021 16:30:23 +0530 Subject: [PATCH 31/39] Save edited message on enter (#78) --- src/app/molecules/message/Message.jsx | 9 +++++++++ src/app/organisms/profile-editor/ProfileEditor.jsx | 1 - 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/app/molecules/message/Message.jsx b/src/app/molecules/message/Message.jsx index c1da0f06a..440197b39 100644 --- a/src/app/molecules/message/Message.jsx +++ b/src/app/molecules/message/Message.jsx @@ -128,10 +128,19 @@ MessageContent.propTypes = { function MessageEdit({ content, onSave, onCancel }) { const editInputRef = useRef(null); + + function handleKeyDown(e) { + if (e.keyCode === 13 && e.shiftKey === false) { + e.preventDefault(); + onSave(editInputRef.current.value); + } + } + return (
{ e.preventDefault(); onSave(editInputRef.current.value); }}> Date: Mon, 13 Sep 2021 17:58:58 +0530 Subject: [PATCH 32/39] Updated dependencies --- package-lock.json | 426 +++++++++++++++++++++++++++++++++++++++++++--- package.json | 4 +- 2 files changed, 400 insertions(+), 30 deletions(-) diff --git a/package-lock.json b/package-lock.json index 68bca03d6..171d33701 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cinny", - "version": "1.1.0", + "version": "1.2.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -20,29 +20,272 @@ "dev": true }, "@babel/core": { - "version": "7.13.13", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.13.tgz", - "integrity": "sha512-1xEs9jZAyKIouOoCmpsgk/I26PoKyvzQ2ixdRpRzfbcp1fL+ozw7TUgdDgwonbTovqRaTfRh50IXuw4QrWO0GA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.9", - "@babel/helper-compilation-targets": "^7.13.13", - "@babel/helper-module-transforms": "^7.13.12", - "@babel/helpers": "^7.13.10", - "@babel/parser": "^7.13.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.13", + "version": "7.15.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.15.5.tgz", + "integrity": "sha512-pYgXxiwAgQpgM1bNkZsDEq85f0ggXMA5L7c+o3tskGMh2BunCI9QUwB9Z4jpvXUOuMdyGKiGKQiRe11VS6Jzvg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-compilation-targets": "^7.15.4", + "@babel/helper-module-transforms": "^7.15.4", + "@babel/helpers": "^7.15.4", + "@babel/parser": "^7.15.5", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.1.2", - "lodash": "^4.17.19", "semver": "^6.3.0", "source-map": "^0.5.0" }, "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/compat-data": { + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz", + "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==", + "dev": true + }, + "@babel/generator": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", + "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.4.tgz", + "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.15.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.16.6", + "semver": "^6.3.0" + } + }, + "@babel/helper-function-name": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", + "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.4.tgz", + "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-module-imports": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz", + "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-module-transforms": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.4.tgz", + "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.15.4", + "@babel/helper-replace-supers": "^7.15.4", + "@babel/helper-simple-access": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/helper-validator-identifier": "^7.14.9", + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.15.4.tgz", + "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-replace-supers": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.4.tgz", + "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.15.4", + "@babel/helper-optimise-call-expression": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-simple-access": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz", + "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", + "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.6.tgz", + "integrity": "sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q==", + "dev": true + }, + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/traverse": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + }, + "browserslist": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.17.0.tgz", + "integrity": "sha512-g2BJ2a0nEYvEFQC208q8mVAhfNwpZ5Mu8BwgtCdZKO3qx98HChmeg448fPdUzld8aFmfLgVh7yymqV+q1lJZ5g==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001254", + "colorette": "^1.3.0", + "electron-to-chromium": "^1.3.830", + "escalade": "^3.1.1", + "node-releases": "^1.1.75" + } + }, + "caniuse-lite": { + "version": "1.0.30001257", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001257.tgz", + "integrity": "sha512-JN49KplOgHSXpIsVSF+LUyhD8PUp6xPpAXeRrrcBh4KBeP7W864jHn6RvzJgDlrReyeVjMFJL3PLpPvKIxlIHA==", + "dev": true + }, + "colorette": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.836", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.836.tgz", + "integrity": "sha512-Ney3pHOJBWkG/AqYjrW0hr2AUCsao+2uvq9HUlRP8OlpSdk/zOHOUJP7eu0icDvePC9DlgffuelP4TnOJmMRUg==", + "dev": true + }, + "node-releases": { + "version": "1.1.75", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.75.tgz", + "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==", + "dev": true + }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", @@ -303,14 +546,141 @@ } }, "@babel/helpers": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.10.tgz", - "integrity": "sha512-4VO883+MWPDUVRF3PhiLBUFHoX/bsLTGFpFK/HqvvfBZz2D57u9XzPVNFVBTc0PW/CWR9BXTOKt8NF4DInUHcQ==", + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.15.4.tgz", + "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==", "dev": true, "requires": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" + "@babel/template": "^7.15.4", + "@babel/traverse": "^7.15.4", + "@babel/types": "^7.15.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz", + "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.14.5" + } + }, + "@babel/generator": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.15.4.tgz", + "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.15.4.tgz", + "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.15.4", + "@babel/template": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.15.4.tgz", + "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.15.4.tgz", + "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.15.4.tgz", + "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==", + "dev": true, + "requires": { + "@babel/types": "^7.15.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.14.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", + "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", + "dev": true + }, + "@babel/highlight": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", + "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.5", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.15.6.tgz", + "integrity": "sha512-S/TSCcsRuCkmpUuoWijua0Snt+f3ewU/8spLo+4AXJCZfT0bVCzLD5MuOKdrx0mlAptbKzn5AdgEIIKXxXkz9Q==", + "dev": true + }, + "@babel/template": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.15.4.tgz", + "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4" + } + }, + "@babel/traverse": { + "version": "7.15.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.4.tgz", + "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.14.5", + "@babel/generator": "^7.15.4", + "@babel/helper-function-name": "^7.15.4", + "@babel/helper-hoist-variables": "^7.15.4", + "@babel/helper-split-export-declaration": "^7.15.4", + "@babel/parser": "^7.15.4", + "@babel/types": "^7.15.4", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.15.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.15.6.tgz", + "integrity": "sha512-BPU+7QhqNjmWyDO0/vitH/CuhpV8ZmK1wpKva8nuyNF5MJfuRNWMc+hc14+u9xT93kvykMdncrJT19h74uB1Ig==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.14.9", + "to-fast-properties": "^2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } } }, "@babel/highlight": { @@ -3492,9 +3862,9 @@ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" }, "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", "dev": true, "requires": { "safe-buffer": "~5.1.1" @@ -7951,9 +8321,9 @@ } }, "matrix-js-sdk": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-12.2.0.tgz", - "integrity": "sha512-foSs3uKRc6uvFNhgY35eErBvLWVDd5RNIxxsdFKlmU3B+70YUf3BP3petyBNW34ORyOqNdX36IiApfLo3npNEw==", + "version": "12.4.1", + "resolved": "https://registry.npmjs.org/matrix-js-sdk/-/matrix-js-sdk-12.4.1.tgz", + "integrity": "sha512-C9aSGX9e4GoCm0Rli+iGBXmcnRxnwETw7MvgNcSBfPaLHOMZi/wz4YOV7HEZK8R+OXuDrDYyglncWSJkkoDpAQ==", "requires": { "@babel/runtime": "^7.12.5", "another-json": "^0.2.0", diff --git a/package.json b/package.json index 62846f3c0..ff54890c7 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "flux": "^4.0.1", "html-react-parser": "^1.2.7", "linkifyjs": "^3.0.0-beta.3", - "matrix-js-sdk": "^12.2.0", + "matrix-js-sdk": "^12.4.1", "micromark": "^3.0.3", "micromark-extension-gfm": "^1.0.0", "prop-types": "^15.7.2", @@ -41,7 +41,7 @@ "twemoji": "^13.1.0" }, "devDependencies": { - "@babel/core": "^7.13.13", + "@babel/core": "^7.15.5", "@babel/preset-env": "^7.13.12", "@babel/preset-react": "^7.13.13", "assert": "^2.0.0", From 2ed4fc9fbfb59e06209397216bac4524f7e41a2e Mon Sep 17 00:00:00 2001 From: Ajay Bura Date: Mon, 13 Sep 2021 19:47:40 +0530 Subject: [PATCH 33/39] Fixed read recipt issue --- src/app/organisms/room/RoomViewContent.jsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/app/organisms/room/RoomViewContent.jsx b/src/app/organisms/room/RoomViewContent.jsx index 57784b633..efa8318cf 100644 --- a/src/app/organisms/room/RoomViewContent.jsx +++ b/src/app/organisms/room/RoomViewContent.jsx @@ -198,7 +198,9 @@ function RoomViewContent({ } function trySendingReadReceipt() { const { room, timeline } = roomTimeline; - if (doesRoomHaveUnread(room) && timeline.length !== 0) { + if ( + (doesRoomHaveUnread(room) || initMatrix.notifications.hasNoti(roomId)) + && timeline.length !== 0) { mx.sendReadReceipt(timeline[timeline.length - 1]); } } From 6434d10e5287282d13b7e8ca9c2891d8736797e2 Mon Sep 17 00:00:00 2001 From: jamesjulich <51384945+jamesjulich@users.noreply.github.com> Date: Mon, 13 Sep 2021 09:34:08 -0500 Subject: [PATCH 34/39] Support pasting images as attachments. Fixes #87. --- src/app/organisms/room/RoomViewInput.jsx | 27 ++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/app/organisms/room/RoomViewInput.jsx b/src/app/organisms/room/RoomViewInput.jsx index a72f1e34e..1e0f12699 100644 --- a/src/app/organisms/room/RoomViewInput.jsx +++ b/src/app/organisms/room/RoomViewInput.jsx @@ -285,6 +285,32 @@ function RoomViewInput({ } } + function handlePaste(e) { + if (e.clipboardData === false) { + return; + } + + if (e.clipboardData.items === undefined) { + return; + } + + for (let i = 0; i < e.clipboardData.items.length; i += 1) { + const item = e.clipboardData.items[i]; + if (item.type.indexOf('image') !== -1) { + const image = item.getAsFile(); + if (attachment === null) { + setAttachment(image); + if (image !== null) { + roomsInput.setAttachment(roomId, image); + return; + } + } else { + return; + } + } + } + } + function addEmoji(emoji) { textAreaRef.current.value += emoji.unicode; } @@ -315,6 +341,7 @@ function RoomViewInput({ timelineScroll.autoReachBottom()} onKeyDown={handleKeyDown} placeholder="Send a message..." From 7ba1aabc09347d9be492e3837ce3d5e362abd3e3 Mon Sep 17 00:00:00 2001 From: Ajay Bura Date: Tue, 14 Sep 2021 08:33:17 +0530 Subject: [PATCH 35/39] Fixed scroll issue on login screen --- src/app/templates/auth/Auth.jsx | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/app/templates/auth/Auth.jsx b/src/app/templates/auth/Auth.jsx index 74c4fd1df..09202ef53 100644 --- a/src/app/templates/auth/Auth.jsx +++ b/src/app/templates/auth/Auth.jsx @@ -10,6 +10,7 @@ import Text from '../../atoms/text/Text'; import Button from '../../atoms/button/Button'; import Input from '../../atoms/input/Input'; import Spinner from '../../atoms/spinner/Spinner'; +import ScrollView from '../../atoms/scroll/ScrollView'; import CinnySvg from '../../../../public/res/svg/cinny.svg'; @@ -266,20 +267,22 @@ Auth.propTypes = { function StaticWrapper({ children }) { return ( -
-
-
-
- Cinny logo -
- Cinny - Yet another matrix client + +
+
+
+
+ Cinny logo +
+ Cinny + Yet another matrix client +
+ { children }
- { children }
-
+ ); } From 65d55d66603afed59231015be49621100fe26311 Mon Sep 17 00:00:00 2001 From: Ajay Bura Date: Tue, 14 Sep 2021 09:01:31 +0530 Subject: [PATCH 36/39] Added toggle to see password (#73) --- public/res/ic/outlined/eye.svg | 13 ++++++++ src/app/templates/auth/Auth.jsx | 56 +++++++++++++++++++++++--------- src/app/templates/auth/Auth.scss | 16 +++++++++ 3 files changed, 69 insertions(+), 16 deletions(-) create mode 100644 public/res/ic/outlined/eye.svg diff --git a/public/res/ic/outlined/eye.svg b/public/res/ic/outlined/eye.svg new file mode 100644 index 000000000..fb31e4f47 --- /dev/null +++ b/public/res/ic/outlined/eye.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + diff --git a/src/app/templates/auth/Auth.jsx b/src/app/templates/auth/Auth.jsx index 09202ef53..cf4b51d71 100644 --- a/src/app/templates/auth/Auth.jsx +++ b/src/app/templates/auth/Auth.jsx @@ -8,10 +8,12 @@ import * as auth from '../../../client/action/auth'; import Text from '../../atoms/text/Text'; import Button from '../../atoms/button/Button'; +import IconButton from '../../atoms/button/IconButton'; import Input from '../../atoms/input/Input'; import Spinner from '../../atoms/spinner/Spinner'; import ScrollView from '../../atoms/scroll/ScrollView'; +import EyeIC from '../../../../public/res/ic/outlined/eye.svg'; import CinnySvg from '../../../../public/res/svg/cinny.svg'; // This regex validates historical usernames, which don't satisfy today's username requirements. @@ -207,24 +209,46 @@ function Auth({ type }) { required />
- validateOnChange(e, ((type === 'login') ? PASSWORD_REGEX : PASSWORD_STRENGHT_REGEX), BAD_PASSWORD_ERROR)} - id="auth_password" - type="password" - label="Password" - required - /> +
+ validateOnChange(e, ((type === 'login') ? PASSWORD_REGEX : PASSWORD_STRENGHT_REGEX), BAD_PASSWORD_ERROR)} + id="auth_password" + type="password" + label="Password" + required + /> + { + if (passwordRef.current.type === 'password') { + passwordRef.current.type = 'text'; + } else passwordRef.current.type = 'password'; + }} + size="extra-small" + src={EyeIC} + /> +
{type === 'register' && ( <> - validateOnChange(e, new RegExp(`^(${passwordRef.current.value})$`), CONFIRM_PASSWORD_ERROR)} - id="auth_confirmPassword" - type="password" - label="Confirm password" - required - /> +
+ validateOnChange(e, new RegExp(`^(${passwordRef.current.value})$`), CONFIRM_PASSWORD_ERROR)} + id="auth_confirmPassword" + type="password" + label="Confirm password" + required + /> + { + if (confirmPasswordRef.current.type === 'password') { + confirmPasswordRef.current.type = 'text'; + } else confirmPasswordRef.current.type = 'password'; + }} + size="extra-small" + src={EyeIC} + /> +
validateOnChange(e, EMAIL_REGEX, BAD_EMAIL_ERROR)} diff --git a/src/app/templates/auth/Auth.scss b/src/app/templates/auth/Auth.scss index 875801d9d..678b90f14 100644 --- a/src/app/templates/auth/Auth.scss +++ b/src/app/templates/auth/Auth.scss @@ -122,6 +122,22 @@ } } +.password__wrapper { + margin-top: var(--sp-tight); + position: relative; + + & .ic-btn { + position: absolute; + right: 6px; + bottom: 6px; + border-radius: calc(var(--bo-radius) / 2); + [dir=rtl] & { + left: 6px; + right: unset; + } + } +} + @media (max-width: 462px) { .auth__wrapper { padding: 0; From 437c6f826297f3a197d864449bf5ef3430042fa7 Mon Sep 17 00:00:00 2001 From: Ajay Bura Date: Tue, 14 Sep 2021 09:31:15 +0530 Subject: [PATCH 37/39] Renamed favourite to pin --- public/res/ic/filled/pin.svg | 8 ++++++++ public/res/ic/outlined/pin.svg | 8 ++++++++ src/app/organisms/navigation/DrawerHeader.jsx | 10 +++++----- src/app/organisms/navigation/Selector.jsx | 10 +++++----- 4 files changed, 26 insertions(+), 10 deletions(-) create mode 100644 public/res/ic/filled/pin.svg create mode 100644 public/res/ic/outlined/pin.svg diff --git a/public/res/ic/filled/pin.svg b/public/res/ic/filled/pin.svg new file mode 100644 index 000000000..6a7014740 --- /dev/null +++ b/public/res/ic/filled/pin.svg @@ -0,0 +1,8 @@ + + + + + + diff --git a/public/res/ic/outlined/pin.svg b/public/res/ic/outlined/pin.svg new file mode 100644 index 000000000..211242cd8 --- /dev/null +++ b/public/res/ic/outlined/pin.svg @@ -0,0 +1,8 @@ + + + + + + diff --git a/src/app/organisms/navigation/DrawerHeader.jsx b/src/app/organisms/navigation/DrawerHeader.jsx index 220633c04..5d705252d 100644 --- a/src/app/organisms/navigation/DrawerHeader.jsx +++ b/src/app/organisms/navigation/DrawerHeader.jsx @@ -16,8 +16,8 @@ import ContextMenu, { MenuItem, MenuHeader } from '../../atoms/context-menu/Cont import PlusIC from '../../../../public/res/ic/outlined/plus.svg'; import HashPlusIC from '../../../../public/res/ic/outlined/hash-plus.svg'; import HashSearchIC from '../../../../public/res/ic/outlined/hash-search.svg'; -import StarIC from '../../../../public/res/ic/outlined/star.svg'; -import FilledStarIC from '../../../../public/res/ic/filled/star.svg'; +import PinIC from '../../../../public/res/ic/outlined/pin.svg'; +import PinFilledIC from '../../../../public/res/ic/filled/pin.svg'; function DrawerHeader({ selectedTab, spaceId }) { const [, forceUpdate] = useState({}); @@ -35,9 +35,9 @@ function DrawerHeader({ selectedTab, spaceId }) { {spaceName && ( { if (initMatrix.roomList.spaceShortcut.has(spaceId)) deleteSpaceShortcut(spaceId); else createSpaceShortcut(spaceId); diff --git a/src/app/organisms/navigation/Selector.jsx b/src/app/organisms/navigation/Selector.jsx index 7ec7c0b0e..a60422df3 100644 --- a/src/app/organisms/navigation/Selector.jsx +++ b/src/app/organisms/navigation/Selector.jsx @@ -15,8 +15,8 @@ import HashIC from '../../../../public/res/ic/outlined/hash.svg'; import HashLockIC from '../../../../public/res/ic/outlined/hash-lock.svg'; import SpaceIC from '../../../../public/res/ic/outlined/space.svg'; import SpaceLockIC from '../../../../public/res/ic/outlined/space-lock.svg'; -import StarIC from '../../../../public/res/ic/outlined/star.svg'; -import FilledStarIC from '../../../../public/res/ic/filled/star.svg'; +import PinIC from '../../../../public/res/ic/outlined/pin.svg'; +import PinFilledIC from '../../../../public/res/ic/filled/pin.svg'; import VerticalMenuIC from '../../../../public/res/ic/outlined/vertical-menu.svg'; function Selector({ @@ -61,10 +61,10 @@ function Selector({ options={( { if (initMatrix.roomList.spaceShortcut.has(roomId)) deleteSpaceShortcut(roomId); else createSpaceShortcut(roomId); From 5a17badfaee60345f6ce8df6c10c238ab8cffa03 Mon Sep 17 00:00:00 2001 From: Ajay Bura Date: Tue, 14 Sep 2021 10:10:11 +0530 Subject: [PATCH 38/39] Added server disconnection message (#35) --- src/app/organisms/navigation/Drawer.jsx | 21 +++++++++++++++++++++ src/app/organisms/navigation/Drawer.scss | 11 +++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/app/organisms/navigation/Drawer.jsx b/src/app/organisms/navigation/Drawer.jsx index b76347e53..5e9d2fb4c 100644 --- a/src/app/organisms/navigation/Drawer.jsx +++ b/src/app/organisms/navigation/Drawer.jsx @@ -6,6 +6,7 @@ import cons from '../../../client/state/cons'; import navigation from '../../../client/state/navigation'; import { selectTab, selectSpace } from '../../../client/action/navigation'; +import Text from '../../atoms/text/Text'; import ScrollView from '../../atoms/scroll/ScrollView'; import DrawerHeader from './DrawerHeader'; @@ -14,6 +15,7 @@ import Home from './Home'; import Directs from './Directs'; function Drawer() { + const [systemState, setSystemState] = useState(null); const [selectedTab, setSelectedTab] = useState(navigation.selectedTab); const [spaceId, setSpaceId] = useState(navigation.selectedSpaceId); @@ -30,6 +32,13 @@ function Drawer() { else selectSpace(navigation.selectedSpacePath[lRoomIndex - 1]); } + function handleSystemState(state) { + if (state === 'ERROR' || state === 'RECONNECTING' || state === 'STOPPED') { + setSystemState({ status: 'Connection lost!' }); + } + if (systemState !== null) setSystemState(null); + } + useEffect(() => { navigation.on(cons.events.navigation.TAB_SELECTED, onTabSelected); navigation.on(cons.events.navigation.SPACE_SELECTED, onSpaceSelected); @@ -40,6 +49,13 @@ function Drawer() { initMatrix.roomList.removeListener(cons.events.roomList.ROOM_LEAVED, onRoomLeaved); }; }, []); + useEffect(() => { + initMatrix.matrixClient.on('sync', handleSystemState); + return () => { + initMatrix.matrixClient.removeListener('sync', handleSystemState); + }; + }, [systemState]); + return (
@@ -57,6 +73,11 @@ function Drawer() {
+ { systemState !== null && ( +
+ {systemState.status} +
+ )}
); } diff --git a/src/app/organisms/navigation/Drawer.scss b/src/app/organisms/navigation/Drawer.scss index e93761a2e..c16b9748b 100644 --- a/src/app/organisms/navigation/Drawer.scss +++ b/src/app/organisms/navigation/Drawer.scss @@ -26,6 +26,17 @@ @extend .drawer-flexItem; @extend .drawer-flexBox; } + + &__state { + padding: var(--sp-extra-tight); + border-top: 1px solid var(--bg-surface-border); + display: flex; + justify-content: center; + + & .text { + color: var(--tc-danger-high); + } + } } .rooms__wrapper { @extend .drawer-flexItem; From 0e9228ba7c0fedfc592dff1930ab8fe25a1f6bfc Mon Sep 17 00:00:00 2001 From: Ajay Bura Date: Tue, 14 Sep 2021 10:24:42 +0530 Subject: [PATCH 39/39] v1.3.0 --- package-lock.json | 2 +- package.json | 2 +- src/app/organisms/settings/Settings.jsx | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 171d33701..00e58670c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "cinny", - "version": "1.2.0", + "version": "1.3.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index ff54890c7..8316b001c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cinny", - "version": "1.2.0", + "version": "1.3.0", "description": "Yet another matrix client", "main": "index.js", "engines": { diff --git a/src/app/organisms/settings/Settings.jsx b/src/app/organisms/settings/Settings.jsx index b20364c60..6f7bf2411 100644 --- a/src/app/organisms/settings/Settings.jsx +++ b/src/app/organisms/settings/Settings.jsx @@ -104,7 +104,7 @@ function AboutSection() {
Cinny - v1.2.0 + v1.3.0 Yet another matrix client