Get user list from community (#86)
This commit is contained in:
parent
ea10e1f335
commit
2b2a82828d
|
@ -2,7 +2,7 @@ import React, { useMemo } from "react";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
|
|
||||||
import { useNarrow } from "../../contexts/narrowProvider";
|
import { useNarrow } from "../../contexts/narrowProvider";
|
||||||
import { ChannelData } from "../../helpers/channelsMock";
|
import { ChannelData } from "../../models/ChannelData";
|
||||||
import { MutedIcon } from "../Icons/MutedIcon";
|
import { MutedIcon } from "../Icons/MutedIcon";
|
||||||
import { textMediumStyles } from "../Text";
|
import { textMediumStyles } from "../Text";
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import React, { useEffect } from "react";
|
import React, { useEffect } from "react";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
|
|
||||||
import { ChannelData } from "../../helpers/channelsMock";
|
import { ChannelData } from "../../models/ChannelData";
|
||||||
|
|
||||||
import { Channel } from "./Channel";
|
import { Channel } from "./Channel";
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
|
|
||||||
import { ChannelData } from "../../helpers/channelsMock";
|
import { ChannelData } from "../../models/ChannelData";
|
||||||
import { textMediumStyles } from "../Text";
|
import { textMediumStyles } from "../Text";
|
||||||
|
|
||||||
import { ChannelInfo, ChannelLogo, ChannelName } from "./Channel";
|
import { ChannelInfo, ChannelLogo, ChannelName } from "./Channel";
|
||||||
|
|
|
@ -2,11 +2,11 @@ import React, { useEffect, useMemo, useState } from "react";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
|
|
||||||
import { useNarrow } from "../contexts/narrowProvider";
|
import { useNarrow } from "../contexts/narrowProvider";
|
||||||
import { ChannelData } from "../helpers/channelsMock";
|
|
||||||
import { uintToImgUrl } from "../helpers/uintToImgUrl";
|
|
||||||
import { useMessenger } from "../hooks/useMessenger";
|
import { useMessenger } from "../hooks/useMessenger";
|
||||||
|
import { ChannelData } from "../models/ChannelData";
|
||||||
import { Metadata } from "../models/Metadata";
|
import { Metadata } from "../models/Metadata";
|
||||||
import { Theme } from "../styles/themes";
|
import { Theme } from "../styles/themes";
|
||||||
|
import { uintToImgUrl } from "../utils/uintToImgUrl";
|
||||||
|
|
||||||
import { Channels } from "./Channels/Channels";
|
import { Channels } from "./Channels/Channels";
|
||||||
import { ChatBody } from "./Chat/ChatBody";
|
import { ChatBody } from "./Chat/ChatBody";
|
||||||
|
@ -46,6 +46,7 @@ export function Chat({ theme, communityKey, fetchMetadata }: ChatProps) {
|
||||||
|
|
||||||
const communityData = useMemo(() => {
|
const communityData = useMemo(() => {
|
||||||
if (community?.description) {
|
if (community?.description) {
|
||||||
|
console.log(Object.keys(community.description.proto.members));
|
||||||
return {
|
return {
|
||||||
id: 1,
|
id: 1,
|
||||||
name: community.description.identity?.displayName ?? "",
|
name: community.description.identity?.displayName ?? "",
|
||||||
|
@ -54,7 +55,7 @@ export function Chat({ theme, communityKey, fetchMetadata }: ChatProps) {
|
||||||
new Uint8Array()
|
new Uint8Array()
|
||||||
),
|
),
|
||||||
members: 0,
|
members: 0,
|
||||||
membersList: [],
|
membersList: Object.keys(community.description.proto.members),
|
||||||
description: community.description.identity?.description ?? "",
|
description: community.description.identity?.description ?? "",
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
|
@ -70,7 +71,6 @@ export function Chat({ theme, communityKey, fetchMetadata }: ChatProps) {
|
||||||
}, [community]);
|
}, [community]);
|
||||||
|
|
||||||
const channels = useMemo(() => {
|
const channels = useMemo(() => {
|
||||||
console.log(community?.chats);
|
|
||||||
if (community?.chats) {
|
if (community?.chats) {
|
||||||
return Array.from(community.chats.values()).map((chat) => {
|
return Array.from(community.chats.values()).map((chat) => {
|
||||||
return {
|
return {
|
||||||
|
|
|
@ -2,9 +2,9 @@ import React, { useCallback, useEffect, useMemo, useState } from "react";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
|
|
||||||
import { useNarrow } from "../../contexts/narrowProvider";
|
import { useNarrow } from "../../contexts/narrowProvider";
|
||||||
import { ChannelData } from "../../helpers/channelsMock";
|
import { ChannelData } from "../../models/ChannelData";
|
||||||
import { CommunityData } from "../../helpers/communityMock";
|
|
||||||
import { ChatMessage } from "../../models/ChatMessage";
|
import { ChatMessage } from "../../models/ChatMessage";
|
||||||
|
import { CommunityData } from "../../models/CommunityData";
|
||||||
import { Metadata } from "../../models/Metadata";
|
import { Metadata } from "../../models/Metadata";
|
||||||
import { Theme } from "../../styles/themes";
|
import { Theme } from "../../styles/themes";
|
||||||
import { Channel } from "../Channels/Channel";
|
import { Channel } from "../Channels/Channel";
|
||||||
|
|
|
@ -3,8 +3,8 @@ import React, { useCallback, useMemo, useState } from "react";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
|
|
||||||
import { useLow } from "../../contexts/narrowProvider";
|
import { useLow } from "../../contexts/narrowProvider";
|
||||||
import { uintToImgUrl } from "../../helpers/uintToImgUrl";
|
|
||||||
import { lightTheme, Theme } from "../../styles/themes";
|
import { lightTheme, Theme } from "../../styles/themes";
|
||||||
|
import { uintToImgUrl } from "../../utils/uintToImgUrl";
|
||||||
import { EmojiIcon } from "../Icons/EmojiIcon";
|
import { EmojiIcon } from "../Icons/EmojiIcon";
|
||||||
import { GifIcon } from "../Icons/GifIcon";
|
import { GifIcon } from "../Icons/GifIcon";
|
||||||
import { PictureIcon } from "../Icons/PictureIcon";
|
import { PictureIcon } from "../Icons/PictureIcon";
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
|
|
||||||
import { CommunityData } from "../helpers/communityMock";
|
import { CommunityData } from "../models/CommunityData";
|
||||||
|
|
||||||
import { CommunityIdentity } from "./CommunityIdentity";
|
import { CommunityIdentity } from "./CommunityIdentity";
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ import { Icon } from "../Chat/ChatMessages";
|
||||||
import { UserIcon } from "../Icons/UserIcon";
|
import { UserIcon } from "../Icons/UserIcon";
|
||||||
|
|
||||||
interface MemberProps {
|
interface MemberProps {
|
||||||
member: any;
|
member: string;
|
||||||
isOnline: boolean;
|
isOnline: boolean;
|
||||||
setShowChannels: (val: boolean) => void;
|
setShowChannels: (val: boolean) => void;
|
||||||
setShowMembers?: (val: boolean) => void;
|
setShowMembers?: (val: boolean) => void;
|
||||||
|
@ -33,13 +33,13 @@ export function Member({
|
||||||
>
|
>
|
||||||
<MemberIcon
|
<MemberIcon
|
||||||
style={{
|
style={{
|
||||||
backgroundImage: member.avatar ? `url(${member.avatar})` : "unset",
|
backgroundImage: "unset",
|
||||||
}}
|
}}
|
||||||
className={isOnline ? "online" : "offline"}
|
className={isOnline ? "online" : "offline"}
|
||||||
>
|
>
|
||||||
{!member.avatar && <UserIcon memberView={true} />}
|
<UserIcon memberView={true} />
|
||||||
</MemberIcon>
|
</MemberIcon>
|
||||||
<MemberName>{member.name}</MemberName>
|
<MemberName>{member}</MemberName>
|
||||||
</MemberData>
|
</MemberData>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
|
|
||||||
import { CommunityData } from "../../helpers/communityMock";
|
import { CommunityData } from "../../models/CommunityData";
|
||||||
|
|
||||||
import { MembersList } from "./MembersList";
|
import { MembersList } from "./MembersList";
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
|
|
||||||
import { CommunityData } from "../../helpers/communityMock";
|
import { CommunityData } from "../../models/CommunityData";
|
||||||
import { UserIcon } from "../Icons/UserIcon";
|
import { UserIcon } from "../Icons/UserIcon";
|
||||||
|
|
||||||
import { Member, MemberData, MemberIcon } from "./Member";
|
import { Member, MemberData, MemberIcon } from "./Member";
|
||||||
|
@ -31,12 +31,12 @@ export function MembersList({
|
||||||
<MemberCategory>
|
<MemberCategory>
|
||||||
<MemberCategoryName>Online</MemberCategoryName>
|
<MemberCategoryName>Online</MemberCategoryName>
|
||||||
{community.membersList
|
{community.membersList
|
||||||
.filter((member) => member.isOnline)
|
.filter(() => false)
|
||||||
.map((member) => (
|
.map((member) => (
|
||||||
<Member
|
<Member
|
||||||
key={member.id}
|
key={member}
|
||||||
member={member}
|
member={member}
|
||||||
isOnline={member.isOnline}
|
isOnline={false}
|
||||||
setShowChannels={setShowChannels}
|
setShowChannels={setShowChannels}
|
||||||
setShowMembers={setShowMembers}
|
setShowMembers={setShowMembers}
|
||||||
/>
|
/>
|
||||||
|
@ -44,17 +44,15 @@ export function MembersList({
|
||||||
</MemberCategory>
|
</MemberCategory>
|
||||||
<MemberCategory>
|
<MemberCategory>
|
||||||
<MemberCategoryName>Offline</MemberCategoryName>
|
<MemberCategoryName>Offline</MemberCategoryName>
|
||||||
{community.membersList
|
{community.membersList.map((member) => (
|
||||||
.filter((member) => !member.isOnline)
|
<Member
|
||||||
.map((member) => (
|
key={member}
|
||||||
<Member
|
member={member}
|
||||||
key={member.id}
|
isOnline={false}
|
||||||
member={member}
|
setShowChannels={setShowChannels}
|
||||||
isOnline={member.isOnline}
|
setShowMembers={setShowMembers}
|
||||||
setShowChannels={setShowChannels}
|
/>
|
||||||
setShowMembers={setShowMembers}
|
))}
|
||||||
/>
|
|
||||||
))}
|
|
||||||
</MemberCategory>
|
</MemberCategory>
|
||||||
</MembersListWrap>
|
</MembersListWrap>
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
|
|
||||||
import { ChannelData } from "../../helpers/channelsMock";
|
import { ChannelData } from "../../models/ChannelData";
|
||||||
import { Channels } from "../Channels/Channels";
|
import { Channels } from "../Channels/Channels";
|
||||||
|
|
||||||
import { NarrowTopbar } from "./NarrowTopbar";
|
import { NarrowTopbar } from "./NarrowTopbar";
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import styled from "styled-components";
|
import styled from "styled-components";
|
||||||
|
|
||||||
import { CommunityData } from "../../helpers/communityMock";
|
import { CommunityData } from "../../models/CommunityData";
|
||||||
import { MembersList } from "../Members/MembersList";
|
import { MembersList } from "../Members/MembersList";
|
||||||
|
|
||||||
import { NarrowTopbar } from "./NarrowTopbar";
|
import { NarrowTopbar } from "./NarrowTopbar";
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
export type ChannelData = {
|
|
||||||
id: string;
|
|
||||||
name: string;
|
|
||||||
description: string;
|
|
||||||
icon?: string;
|
|
||||||
isMuted?: boolean;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const channels = [
|
|
||||||
{
|
|
||||||
id: 1,
|
|
||||||
name: "welcome",
|
|
||||||
description: "Welcome to CryptoKitties community!",
|
|
||||||
icon: "https://www.cryptokitties.co/icons/logo.svg",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 2,
|
|
||||||
name: "general",
|
|
||||||
description: "General discussions about CryptoKitties",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 3,
|
|
||||||
name: "beginners",
|
|
||||||
description: "How to start",
|
|
||||||
notifications: 1,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 4,
|
|
||||||
name: "random",
|
|
||||||
description: "Whatever you want to talk",
|
|
||||||
isMuted: true,
|
|
||||||
},
|
|
||||||
];
|
|
|
@ -1,57 +0,0 @@
|
||||||
export type CommunityData = {
|
|
||||||
id: number;
|
|
||||||
name: string;
|
|
||||||
icon: string;
|
|
||||||
members: number;
|
|
||||||
membersList: any[];
|
|
||||||
description: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const community = {
|
|
||||||
id: 1,
|
|
||||||
name: "CryptoKitties",
|
|
||||||
icon: "https://www.cryptokitties.co/icons/logo.svg",
|
|
||||||
members: 186,
|
|
||||||
membersList: [
|
|
||||||
{
|
|
||||||
id: 1,
|
|
||||||
name: "jason.eth",
|
|
||||||
avatar:
|
|
||||||
"https://images.unsplash.com/photo-1613329150701-f8cecb3900e0?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=928&q=80",
|
|
||||||
isOnline: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 2,
|
|
||||||
name: "viola.stateofus.eth",
|
|
||||||
avatar:
|
|
||||||
"https://images.unsplash.com/photo-1603924885283-b6674696b114?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=774&q=80",
|
|
||||||
isOnline: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 3,
|
|
||||||
name: "GuestFest",
|
|
||||||
isOnline: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 4,
|
|
||||||
name: "Guest33334",
|
|
||||||
isOnline: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 5,
|
|
||||||
name: "Guest333",
|
|
||||||
isOnline: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 6,
|
|
||||||
name: "Guest33",
|
|
||||||
isOnline: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 7,
|
|
||||||
name: "Guest9283",
|
|
||||||
isOnline: true,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
description: "A community of cat lovers, meow!",
|
|
||||||
};
|
|
|
@ -4,9 +4,9 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
||||||
import { Community, Identity, Messenger } from "status-communities/dist/cjs";
|
import { Community, Identity, Messenger } from "status-communities/dist/cjs";
|
||||||
import { ApplicationMetadataMessage } from "status-communities/dist/cjs";
|
import { ApplicationMetadataMessage } from "status-communities/dist/cjs";
|
||||||
|
|
||||||
import { uintToImgUrl } from "../helpers/uintToImgUrl";
|
|
||||||
import { ChatMessage } from "../models/ChatMessage";
|
import { ChatMessage } from "../models/ChatMessage";
|
||||||
import { loadIdentity, saveIdentity } from "../utils/identityStorage";
|
import { loadIdentity, saveIdentity } from "../utils/identityStorage";
|
||||||
|
import { uintToImgUrl } from "../utils/uintToImgUrl";
|
||||||
|
|
||||||
const _MS_PER_DAY = 1000 * 60 * 60 * 24;
|
const _MS_PER_DAY = 1000 * 60 * 60 * 24;
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import { ReactChat } from "./components/ReactChat";
|
import { ReactChat } from "./components/ReactChat";
|
||||||
import { community } from "./helpers/communityMock";
|
|
||||||
import { darkTheme, lightTheme } from "./styles/themes";
|
import { darkTheme, lightTheme } from "./styles/themes";
|
||||||
|
|
||||||
export { ReactChat, lightTheme, darkTheme, community };
|
export { ReactChat, lightTheme, darkTheme };
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
export type ChannelData = {
|
||||||
|
id: string;
|
||||||
|
name: string;
|
||||||
|
description: string;
|
||||||
|
icon?: string;
|
||||||
|
isMuted?: boolean;
|
||||||
|
};
|
|
@ -0,0 +1,8 @@
|
||||||
|
export type CommunityData = {
|
||||||
|
id: number;
|
||||||
|
name: string;
|
||||||
|
icon: string;
|
||||||
|
members: number;
|
||||||
|
membersList: string[];
|
||||||
|
description: string;
|
||||||
|
};
|
Loading…
Reference in New Issue