mirror of
https://github.com/Qortal/Qortal-Hub.git
synced 2025-04-25 12:27:51 +00:00
fix chat list and member list
This commit is contained in:
parent
dc104d1539
commit
c777bfe245
@ -25,6 +25,7 @@ export const MessageQueueProvider = ({ children }) => {
|
|||||||
...messageObj,
|
...messageObj,
|
||||||
type,
|
type,
|
||||||
groupDirectId,
|
groupDirectId,
|
||||||
|
signature: uid.rnd(),
|
||||||
identifier: tempId,
|
identifier: tempId,
|
||||||
retries: 0, // Retry count for display purposes
|
retries: 0, // Retry count for display purposes
|
||||||
status: 'pending' // Initial status is 'pending'
|
status: 'pending' // Initial status is 'pending'
|
||||||
|
@ -34,12 +34,13 @@ export const ChatList = ({
|
|||||||
const hasLoadedInitialRef = useRef(false);
|
const hasLoadedInitialRef = useRef(false);
|
||||||
const scrollingIntervalRef = useRef(null);
|
const scrollingIntervalRef = useRef(null);
|
||||||
|
|
||||||
|
|
||||||
// Initialize the virtualizer
|
// Initialize the virtualizer
|
||||||
const rowVirtualizer = useVirtualizer({
|
const rowVirtualizer = useVirtualizer({
|
||||||
count: messages.length,
|
count: messages.length,
|
||||||
getItemKey: (index) => messages[index].signature,
|
getItemKey: (index) => messages[index].signature,
|
||||||
getScrollElement: () => parentRef?.current,
|
getScrollElement: () => parentRef?.current,
|
||||||
estimateSize: () => 80, // Provide an estimated height of items, adjust this as needed
|
estimateSize: useCallback(() => 80, []), // Provide an estimated height of items, adjust this as needed
|
||||||
overscan: 10, // Number of items to render outside the visible area to improve smoothness
|
overscan: 10, // Number of items to render outside the visible area to improve smoothness
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -84,9 +84,9 @@ export const MessageItem = ({
|
|||||||
color: "white",
|
color: "white",
|
||||||
}}
|
}}
|
||||||
alt={message?.senderName}
|
alt={message?.senderName}
|
||||||
src={`${getBaseApiReact()}/arbitrary/THUMBNAIL/${
|
src={message?.senderName ? `${getBaseApiReact()}/arbitrary/THUMBNAIL/${
|
||||||
message?.senderName
|
message?.senderName
|
||||||
}/qortal_avatar?async=true`}
|
}/qortal_avatar?async=true` : ''}
|
||||||
>
|
>
|
||||||
{message?.senderName?.charAt(0)}
|
{message?.senderName?.charAt(0)}
|
||||||
</Avatar>
|
</Avatar>
|
||||||
|
@ -12,7 +12,7 @@ export const getMemberInvites = async (groupNumber) => {
|
|||||||
return groupData;
|
return groupData;
|
||||||
}
|
}
|
||||||
|
|
||||||
const getNames = async (listOfMembers) => {
|
const getNames = async (listOfMembers, includeNoNames) => {
|
||||||
let members = [];
|
let members = [];
|
||||||
if (listOfMembers && Array.isArray(listOfMembers)) {
|
if (listOfMembers && Array.isArray(listOfMembers)) {
|
||||||
for (const member of listOfMembers) {
|
for (const member of listOfMembers) {
|
||||||
@ -20,6 +20,8 @@ const getNames = async (listOfMembers) => {
|
|||||||
const name = await getNameInfo(member.offender);
|
const name = await getNameInfo(member.offender);
|
||||||
if (name) {
|
if (name) {
|
||||||
members.push({ ...member, name });
|
members.push({ ...member, name });
|
||||||
|
} else if(includeNoNames){
|
||||||
|
members.push({ ...member, name: name || "" });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -42,7 +44,7 @@ export const ListOfBans = ({ groupId, setInfoSnack, setOpenSnack, show }) => {
|
|||||||
const getInvites = async (groupId) => {
|
const getInvites = async (groupId) => {
|
||||||
try {
|
try {
|
||||||
const res = await getMemberInvites(groupId);
|
const res = await getMemberInvites(groupId);
|
||||||
const resWithNames = await getNames(res);
|
const resWithNames = await getNames(res, true);
|
||||||
setBans(resWithNames);
|
setBans(resWithNames);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
@ -162,7 +164,7 @@ export const ListOfBans = ({ groupId, setInfoSnack, setOpenSnack, show }) => {
|
|||||||
<ListItemAvatar>
|
<ListItemAvatar>
|
||||||
<Avatar
|
<Avatar
|
||||||
alt={member?.name}
|
alt={member?.name}
|
||||||
src={`${getBaseApiReact()}/arbitrary/THUMBNAIL/${member?.name}/qortal_avatar?async=true`}
|
src={member?.name ? `${getBaseApiReact()}/arbitrary/THUMBNAIL/${member?.name}/qortal_avatar?async=true` : ''}
|
||||||
/>
|
/>
|
||||||
</ListItemAvatar>
|
</ListItemAvatar>
|
||||||
<ListItemText primary={member?.name || member?.offender} />
|
<ListItemText primary={member?.name || member?.offender} />
|
||||||
|
@ -12,7 +12,7 @@ export const getMemberInvites = async (groupNumber) => {
|
|||||||
return groupData;
|
return groupData;
|
||||||
}
|
}
|
||||||
|
|
||||||
const getNames = async (listOfMembers) => {
|
const getNames = async (listOfMembers, includeNoNames) => {
|
||||||
let members = [];
|
let members = [];
|
||||||
if (listOfMembers && Array.isArray(listOfMembers)) {
|
if (listOfMembers && Array.isArray(listOfMembers)) {
|
||||||
for (const member of listOfMembers) {
|
for (const member of listOfMembers) {
|
||||||
@ -20,6 +20,8 @@ const getNames = async (listOfMembers) => {
|
|||||||
const name = await getNameInfo(member.invitee);
|
const name = await getNameInfo(member.invitee);
|
||||||
if (name) {
|
if (name) {
|
||||||
members.push({ ...member, name });
|
members.push({ ...member, name });
|
||||||
|
} else if(includeNoNames){
|
||||||
|
members.push({ ...member, name: name || "" });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -43,7 +45,7 @@ export const ListOfInvites = ({ groupId, setInfoSnack, setOpenSnack, show }) =>
|
|||||||
const getInvites = async (groupId) => {
|
const getInvites = async (groupId) => {
|
||||||
try {
|
try {
|
||||||
const res = await getMemberInvites(groupId);
|
const res = await getMemberInvites(groupId);
|
||||||
const resWithNames = await getNames(res);
|
const resWithNames = await getNames(res, true);
|
||||||
setInvites(resWithNames);
|
setInvites(resWithNames);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
@ -163,7 +165,7 @@ export const ListOfInvites = ({ groupId, setInfoSnack, setOpenSnack, show }) =>
|
|||||||
<ListItemAvatar>
|
<ListItemAvatar>
|
||||||
<Avatar
|
<Avatar
|
||||||
alt={member?.name}
|
alt={member?.name}
|
||||||
src={`${getBaseApiReact()}/arbitrary/THUMBNAIL/${member?.name}/qortal_avatar?async=true`}
|
src={member?.name ? `${getBaseApiReact()}/arbitrary/THUMBNAIL/${member?.name}/qortal_avatar?async=true` : ''}
|
||||||
/>
|
/>
|
||||||
</ListItemAvatar>
|
</ListItemAvatar>
|
||||||
<ListItemText primary={member?.name || member?.invitee} />
|
<ListItemText primary={member?.name || member?.invitee} />
|
||||||
|
@ -12,14 +12,16 @@ export const getMemberInvites = async (groupNumber) => {
|
|||||||
return groupData;
|
return groupData;
|
||||||
}
|
}
|
||||||
|
|
||||||
const getNames = async (listOfMembers) => {
|
const getNames = async (listOfMembers, includeNoNames) => {
|
||||||
let members = [];
|
let members = [];
|
||||||
if (listOfMembers && Array.isArray(listOfMembers)) {
|
if (listOfMembers && Array.isArray(listOfMembers)) {
|
||||||
for (const member of listOfMembers) {
|
for (const member of listOfMembers) {
|
||||||
if (member.joiner) {
|
if (member.joiner) {
|
||||||
const name = await getNameInfo(member.joiner);
|
const name = await getNameInfo(member.joiner);
|
||||||
if (name) {
|
if (name) {
|
||||||
members.push({ ...member, name });
|
members.push({ ...member, name: name || "" });
|
||||||
|
} else if(includeNoNames){
|
||||||
|
members.push({ ...member, name: name || "" });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -44,7 +46,7 @@ export const ListOfJoinRequests = ({ groupId, setInfoSnack, setOpenSnack, show }
|
|||||||
const getInvites = async (groupId) => {
|
const getInvites = async (groupId) => {
|
||||||
try {
|
try {
|
||||||
const res = await getMemberInvites(groupId);
|
const res = await getMemberInvites(groupId);
|
||||||
const resWithNames = await getNames(res);
|
const resWithNames = await getNames(res, true);
|
||||||
setInvites(resWithNames);
|
setInvites(resWithNames);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
@ -181,7 +183,7 @@ export const ListOfJoinRequests = ({ groupId, setInfoSnack, setOpenSnack, show }
|
|||||||
<ListItemAvatar>
|
<ListItemAvatar>
|
||||||
<Avatar
|
<Avatar
|
||||||
alt={member?.name}
|
alt={member?.name}
|
||||||
src={`${getBaseApiReact()}/arbitrary/THUMBNAIL/${member?.name}/qortal_avatar?async=true`}
|
src={member?.name ? `${getBaseApiReact()}/arbitrary/THUMBNAIL/${member?.name}/qortal_avatar?async=true` : ''}
|
||||||
/>
|
/>
|
||||||
</ListItemAvatar>
|
</ListItemAvatar>
|
||||||
<ListItemText primary={member?.name || member?.joiner} />
|
<ListItemText primary={member?.name || member?.joiner} />
|
||||||
|
@ -336,7 +336,7 @@ const ListOfMembers = ({
|
|||||||
<ListItemAvatar>
|
<ListItemAvatar>
|
||||||
<Avatar
|
<Avatar
|
||||||
alt={member?.name || member?.member}
|
alt={member?.name || member?.member}
|
||||||
src={`${getBaseApiReact()}/arbitrary/THUMBNAIL/${member?.name}/qortal_avatar?async=true`}
|
src={member?.name ? `${getBaseApiReact()}/arbitrary/THUMBNAIL/${member?.name}/qortal_avatar?async=true` : ''}
|
||||||
/>
|
/>
|
||||||
</ListItemAvatar>
|
</ListItemAvatar>
|
||||||
<ListItemText
|
<ListItemText
|
||||||
|
@ -25,6 +25,7 @@ import { LoadingSnackbar } from "../Snackbar/LoadingSnackbar";
|
|||||||
import { getFee } from "../../background";
|
import { getFee } from "../../background";
|
||||||
import { LoadingButton } from "@mui/lab";
|
import { LoadingButton } from "@mui/lab";
|
||||||
import { subscribeToEvent, unsubscribeFromEvent } from "../../utils/events";
|
import { subscribeToEvent, unsubscribeFromEvent } from "../../utils/events";
|
||||||
|
import { Spacer } from "../../common/Spacer";
|
||||||
|
|
||||||
function a11yProps(index: number) {
|
function a11yProps(index: number) {
|
||||||
return {
|
return {
|
||||||
@ -113,7 +114,7 @@ export const ManageMembers = ({
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const getMembers = async (groupId) => {
|
const getMembersWithNames = React.useCallback(async (groupId) => {
|
||||||
try {
|
try {
|
||||||
setIsLoadingMembers(true)
|
setIsLoadingMembers(true)
|
||||||
const res = await getGroupMembers(groupId);
|
const res = await getGroupMembers(groupId);
|
||||||
@ -121,6 +122,13 @@ export const ManageMembers = ({
|
|||||||
setMembersWithNames(resWithNames);
|
setMembersWithNames(resWithNames);
|
||||||
setIsLoadingMembers(false)
|
setIsLoadingMembers(false)
|
||||||
} catch (error) {}
|
} catch (error) {}
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const getMembers = async (groupId) => {
|
||||||
|
try {
|
||||||
|
const res = await getGroupMembers(groupId);
|
||||||
|
setMembersWithNames(res?.members || []);
|
||||||
|
} catch (error) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
React.useEffect(()=> {
|
React.useEffect(()=> {
|
||||||
@ -256,6 +264,8 @@ export const ManageMembers = ({
|
|||||||
maxWidth: '750px'
|
maxWidth: '750px'
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
|
<Button variant="contained" onClick={()=> getMembersWithNames(selectedGroup?.groupId)}>Load members with names</Button>
|
||||||
|
<Spacer height="10px" />
|
||||||
<ListOfMembers
|
<ListOfMembers
|
||||||
members={membersWithNames || []}
|
members={membersWithNames || []}
|
||||||
groupId={selectedGroup?.groupId}
|
groupId={selectedGroup?.groupId}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user