mirror of
https://github.com/duckietm/Nitro-V3.git
synced 2026-06-20 23:46:19 +00:00
🆙 Fix Group Forum buy
This commit is contained in:
@@ -1,32 +1,31 @@
|
||||
import { CatalogGroupsComposer, GuildMembershipsMessageEvent, HabboGroupEntryData } from '@nitrots/nitro-renderer';
|
||||
import { UseQueryResult } from '@tanstack/react-query';
|
||||
import { useNitroQuery } from '../../api/nitro-query';
|
||||
import { useCallback, useEffect, useState } from 'react';
|
||||
import { useBetween } from 'use-between';
|
||||
import { SendMessageComposer } from '../../api';
|
||||
import { useMessageEvent } from '../events';
|
||||
|
||||
/**
|
||||
* The list of guilds the current Habbo belongs to, as returned by
|
||||
* the `CatalogGroupsComposer` → `GuildMembershipsMessageEvent`
|
||||
* request/response pair.
|
||||
*
|
||||
* Cached at session level: the membership list is stable for the
|
||||
* session unless the user joins/leaves a guild (in which case the
|
||||
* relevant flow should invalidate the `['nitro', 'user', 'groups']`
|
||||
* query key, which today nobody does — re-mounting the consumer
|
||||
* refetches via React Query's default behavior).
|
||||
*
|
||||
* Replaces three duplicate request+listener pairs that previously
|
||||
* each issued their own CatalogGroupsComposer:
|
||||
* - useCatalog (catalogOptions.groups)
|
||||
* - WiredSelectorUsersGroupView
|
||||
* - WiredConditionActorIsGroupMemberView
|
||||
*/
|
||||
export const useUserGroups = (
|
||||
options: { enabled?: boolean } = {}
|
||||
): UseQueryResult<HabboGroupEntryData[]> =>
|
||||
useNitroQuery<GuildMembershipsMessageEvent, HabboGroupEntryData[]>({
|
||||
key: [ 'nitro', 'user', 'groups' ],
|
||||
request: () => new CatalogGroupsComposer(),
|
||||
parser: GuildMembershipsMessageEvent,
|
||||
select: event => (event.getParser().groups || []),
|
||||
enabled: options.enabled,
|
||||
staleTime: Infinity
|
||||
});
|
||||
const useUserGroupsStore = () =>
|
||||
{
|
||||
const [ groups, setGroups ] = useState<HabboGroupEntryData[]>([]);
|
||||
|
||||
const onGuildMemberships = useCallback((event: GuildMembershipsMessageEvent) =>
|
||||
{
|
||||
setGroups(event.getParser()?.groups || []);
|
||||
}, []);
|
||||
|
||||
useMessageEvent<GuildMembershipsMessageEvent>(GuildMembershipsMessageEvent, onGuildMemberships);
|
||||
|
||||
useEffect(() =>
|
||||
{
|
||||
SendMessageComposer(new CatalogGroupsComposer());
|
||||
}, []);
|
||||
|
||||
return { groups };
|
||||
};
|
||||
|
||||
export const useUserGroups = (): { data: HabboGroupEntryData[] } =>
|
||||
{
|
||||
const { groups } = useBetween(useUserGroupsStore);
|
||||
|
||||
return { data: groups };
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user