mirror of
https://github.com/MetaFam/TheGame.git
synced 2026-04-24 03:00:09 -04:00
copying guild ordering logic for DAOs 🫶🏾
This commit is contained in:
@@ -12,13 +12,8 @@ import {
|
||||
} from '@metafam/ds';
|
||||
import { UnverifiedGuildForm } from 'components/Guild/UnverifiedGuildForm';
|
||||
import { GuildSearchBar } from 'components/GuildSearchBar';
|
||||
import {
|
||||
AddUnverifiedGuildMutation,
|
||||
Player,
|
||||
useAddUnverifiedGuildMutation,
|
||||
} from 'graphql/autogen/types';
|
||||
import { Player, useAddUnverifiedGuildMutation } from 'graphql/autogen/types';
|
||||
import React, { useState } from 'react';
|
||||
import { CombinedError } from 'urql';
|
||||
|
||||
export const AddPlayerGuild: React.FC<{
|
||||
isOpen: boolean;
|
||||
|
||||
@@ -27,7 +27,11 @@ import {
|
||||
import { LinkGuild } from 'components/Player/PlayerGuild';
|
||||
import { ProfileSection } from 'components/Section/ProfileSection';
|
||||
import { usePlayerHydrationContext } from 'contexts/PlayerHydrationContext';
|
||||
import { Player, useRewriteGuildOrderMutation } from 'graphql/autogen/types';
|
||||
import {
|
||||
Player,
|
||||
useRewriteDaoOrderMutation,
|
||||
useRewriteGuildOrderMutation,
|
||||
} from 'graphql/autogen/types';
|
||||
import { getAllMemberships, GuildMembership } from 'graphql/getMemberships';
|
||||
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
||||
import RGL, { WidthProvider } from 'react-grid-layout';
|
||||
@@ -255,6 +259,7 @@ export const PlayerMemberships: React.FC<MembershipSectionProps> = ({
|
||||
})(),
|
||||
);
|
||||
const [, rewriteGuildOrder] = useRewriteGuildOrderMutation();
|
||||
const [, rewriteDAOOrder] = useRewriteDaoOrderMutation();
|
||||
|
||||
useEffect(() => {
|
||||
setPosition(Object.fromEntries(layout.map(({ i, y }) => [i, y])));
|
||||
@@ -310,19 +315,29 @@ export const PlayerMemberships: React.FC<MembershipSectionProps> = ({
|
||||
JSON.stringify(layout),
|
||||
);
|
||||
|
||||
const inputs = currentMemberships.map(({ id, guildId, visible }) => ({
|
||||
playerId: hydratedPlayer?.id,
|
||||
guildId,
|
||||
visible,
|
||||
position: position[id],
|
||||
}));
|
||||
const membershipOrder = (ships: Array<GuildMembership>) =>
|
||||
ships.map(({ id, guildId, visible }) => ({
|
||||
playerId: hydratedPlayer?.id,
|
||||
guildId: guildId ?? id,
|
||||
visible,
|
||||
position: position[id],
|
||||
}));
|
||||
|
||||
rewriteGuildOrder({ playerId: hydratedPlayer.id, inputs });
|
||||
const guildsInfo = membershipOrder(
|
||||
currentMemberships.filter(({ type }) => type === 'GUILD'),
|
||||
);
|
||||
rewriteGuildOrder({ playerId: hydratedPlayer.id, inputs: guildsInfo });
|
||||
|
||||
const daosInfo = membershipOrder(
|
||||
currentMemberships.filter(({ type }) => type === 'DAO'),
|
||||
);
|
||||
rewriteDAOOrder({ playerId: hydratedPlayer.id, inputs: daosInfo });
|
||||
}, [
|
||||
currentMemberships,
|
||||
hydratedPlayer.id,
|
||||
layout,
|
||||
position,
|
||||
rewriteDAOOrder,
|
||||
rewriteGuildOrder,
|
||||
]);
|
||||
|
||||
|
||||
@@ -97,6 +97,7 @@ export type GuildMembership = {
|
||||
visible?: boolean;
|
||||
guildId?: string;
|
||||
legitimacy?: string | null;
|
||||
type: 'GUILD' | 'DAO';
|
||||
};
|
||||
|
||||
export const getAllMemberships = async (player: Player, cache = true) => {
|
||||
@@ -129,6 +130,7 @@ export const getAllMemberships = async (player: Player, cache = true) => {
|
||||
guildId: gp.guildId,
|
||||
legitimacy: gp.Guild.legitimacy,
|
||||
position: gp.position,
|
||||
type: 'GUILD' as const,
|
||||
}));
|
||||
|
||||
const daoHaus = (filteredMemberships || []).map((m) => ({
|
||||
@@ -139,6 +141,7 @@ export const getAllMemberships = async (player: Player, cache = true) => {
|
||||
chain: m.moloch.chain,
|
||||
logoURL: m.moloch.avatarURL ?? undefined,
|
||||
address: m.molochAddress,
|
||||
type: 'DAO' as const,
|
||||
}));
|
||||
|
||||
const all: Array<GuildMembership> = [...guild, ...daoHaus];
|
||||
|
||||
@@ -35,6 +35,19 @@ export const UpdateGuildMutations = /* GraphQL */ `
|
||||
}
|
||||
}
|
||||
|
||||
mutation RewriteDAOOrder(
|
||||
$playerId: uuid!
|
||||
$inputs: [dao_player_insert_input!]!
|
||||
) {
|
||||
delete_dao_player(where: { playerId: { _eq: $playerId } }) {
|
||||
affected_rows
|
||||
}
|
||||
|
||||
insert_dao_player(objects: $inputs) {
|
||||
affected_rows
|
||||
}
|
||||
}
|
||||
|
||||
mutation GetGuildLinksNoCache($guildId: uuid!, $updatedAt: timestamptz!) {
|
||||
update_guild(
|
||||
where: { id: { _eq: $guildId } }
|
||||
|
||||
Reference in New Issue
Block a user