diff --git a/packages/web/components/Player/Section/MembershipModals/AddPlayerGuild.tsx b/packages/web/components/Player/Section/MembershipModals/AddPlayerGuild.tsx index 20049dc7..a9af9908 100644 --- a/packages/web/components/Player/Section/MembershipModals/AddPlayerGuild.tsx +++ b/packages/web/components/Player/Section/MembershipModals/AddPlayerGuild.tsx @@ -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; diff --git a/packages/web/components/Player/Section/PlayerMemberships.tsx b/packages/web/components/Player/Section/PlayerMemberships.tsx index fb0f49f9..0db175ca 100644 --- a/packages/web/components/Player/Section/PlayerMemberships.tsx +++ b/packages/web/components/Player/Section/PlayerMemberships.tsx @@ -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 = ({ })(), ); 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 = ({ JSON.stringify(layout), ); - const inputs = currentMemberships.map(({ id, guildId, visible }) => ({ - playerId: hydratedPlayer?.id, - guildId, - visible, - position: position[id], - })); + const membershipOrder = (ships: Array) => + 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, ]); diff --git a/packages/web/graphql/getMemberships.ts b/packages/web/graphql/getMemberships.ts index e4d2d209..e23c3e91 100644 --- a/packages/web/graphql/getMemberships.ts +++ b/packages/web/graphql/getMemberships.ts @@ -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 = [...guild, ...daoHaus]; diff --git a/packages/web/graphql/mutations/guild.ts b/packages/web/graphql/mutations/guild.ts index c705f492..27e56cd5 100644 --- a/packages/web/graphql/mutations/guild.ts +++ b/packages/web/graphql/mutations/guild.ts @@ -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 } }