copying guild ordering logic for DAOs 🫶🏾

This commit is contained in:
dysbulic
2023-11-26 03:13:59 -05:00
committed by Alec LaLonde
parent 18b2d0cacd
commit f05cfeb36e
4 changed files with 40 additions and 14 deletions

View File

@@ -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;

View File

@@ -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,
]);

View File

@@ -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];

View File

@@ -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 } }