MemberCount: Fix misleading count, add tooltip
This commit is contained in:
		
							parent
							
								
									c583bad6bf
								
							
						
					
					
						commit
						e884738f42
					
				
					 1 changed files with 42 additions and 29 deletions
				
			
		| 
						 | 
				
			
			@ -22,7 +22,7 @@ import { Devs } from "@utils/constants";
 | 
			
		|||
import { getCurrentChannel } from "@utils/discord";
 | 
			
		||||
import { useForceUpdater } from "@utils/misc";
 | 
			
		||||
import definePlugin from "@utils/types";
 | 
			
		||||
import { FluxDispatcher } from "@webpack/common";
 | 
			
		||||
import { FluxDispatcher, Tooltip } from "@webpack/common";
 | 
			
		||||
 | 
			
		||||
const counts = {} as Record<string, [number, number]>;
 | 
			
		||||
let forceUpdate: () => void;
 | 
			
		||||
| 
						 | 
				
			
			@ -49,7 +49,9 @@ function MemberCount() {
 | 
			
		|||
            alignContent: "center",
 | 
			
		||||
            gap: 0
 | 
			
		||||
        }}>
 | 
			
		||||
            <div>
 | 
			
		||||
            <Tooltip text={`${c[1]} Online`} position="bottom">
 | 
			
		||||
                {props => (
 | 
			
		||||
                    <div {...props}>
 | 
			
		||||
                        <span
 | 
			
		||||
                            style={{
 | 
			
		||||
                                backgroundColor: "var(--status-green-600)",
 | 
			
		||||
| 
						 | 
				
			
			@ -62,7 +64,11 @@ function MemberCount() {
 | 
			
		|||
                        />
 | 
			
		||||
                        <span style={{ color: "var(--status-green-600)" }}>{c[1]}</span>
 | 
			
		||||
                    </div>
 | 
			
		||||
            <div>
 | 
			
		||||
                )}
 | 
			
		||||
            </Tooltip>
 | 
			
		||||
            <Tooltip text={`${c[0] || "?"} Total Members`} position="bottom">
 | 
			
		||||
                {props => (
 | 
			
		||||
                    <div {...props}>
 | 
			
		||||
                        <span
 | 
			
		||||
                            style={{
 | 
			
		||||
                                width: "6px",
 | 
			
		||||
| 
						 | 
				
			
			@ -76,6 +82,8 @@ function MemberCount() {
 | 
			
		|||
                        />
 | 
			
		||||
                        <span style={{ color: "var(--status-grey-500)" }}>{total}</span>
 | 
			
		||||
                    </div>
 | 
			
		||||
                )}
 | 
			
		||||
            </Tooltip>
 | 
			
		||||
        </Flex>
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -93,7 +101,12 @@ export default definePlugin({
 | 
			
		|||
        }
 | 
			
		||||
    }],
 | 
			
		||||
 | 
			
		||||
    onGuildMemberListUpdate({ guildId, groups, memberCount }) {
 | 
			
		||||
    onGuildMemberListUpdate({ guildId, groups, memberCount, id }) {
 | 
			
		||||
        // eeeeeh - sometimes it has really wrong counts??? like 10 times less than actual
 | 
			
		||||
        // but if we only listen to everyone updates, sometimes we never get the count?
 | 
			
		||||
        // this seems to work but isn't optional
 | 
			
		||||
        if (id !== "everyone" && counts[guildId]) return;
 | 
			
		||||
 | 
			
		||||
        let count = 0;
 | 
			
		||||
        for (const group of groups) {
 | 
			
		||||
            if (group.id !== "offline")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue