mirror of
https://github.com/MetaFam/TheGame.git
synced 2026-04-24 03:00:09 -04:00
* linting 🃡 * removing MetaMask specificity 🃢 * moving `StrictMode` to Next.js 🃣 * compressing & commafying 🃤 * upgrading eslint 👘 * removing preface from guild name 🃥 * removing unnecessary ESLint `no-console` directives 🌂 * fixing a typo in a comment 🃦 * updating GraphQL codegen for paid subgraph 🦏 * replacing Discord invite link 📌 * passing through The Graph API token to Docker ♾ * setting Docker ARG to set ENV 📟 * missed a file rename in frontend Docker config 🦀 * adding ts-node to fix Docker build issue ⸙ * trying to narrow down the 500 error's source in the test instance ⛄ * exposing The Graph API token on Cloud Run 🦃 * more logging to try & find server error 🐠 * more logging 🧱 * trying to run Node.js in development mode on Cloud Run 🎁 * reconfiguring frontend Dockerfile to also run the dev environment 🌿 * dev mode seems to function 🧨 * 768MiB wasn't enough memory 🍁 * 1GiB wasn't enough memory 🔱 * 1.5GiB was interpreted as 1GiB 🥃 * 1536MiB wasn't enough memory 👾 * 2GiB wasn't enough memory 🧲 * 3GiB wasn't enough memory 🆎 * 4GiB might have been enough, but it still doesn't load 🧻 * 5GiB requires two CPUs 📝 * giving up on dev server; unexplained HTTP 429s 🎨 * disabling Honeybadger in test instances 📮 * trying an `ErrorBoundary` to gather more info 🕷 * setting GraphQL endpoint 🇲🇰 * exposing environment variables ⛈ * trying to expose `` 📻 * the Next compiled version still references `node_modules` 🦢 * removing Alchemy API key from sources ⛺ * trying a different Docker build action 💉 * removing logging 🍿 * switching to Docker Buildx 👠 * missed an escaped newline 🗿 * trying a newer gcloud setup action 🦝 * hopefully fixing authentication 📴 * bunch of changes to the meTokens profile section 🦜 * need credentials file 🐆 * hunting for layout load error & pushing debug statements to testing 🥁 * updating eslint 💓 * trying to debug the missing Breadchain Coop 🧀 * apparently chose the wrong changeset 🐚 * removing logging 🥀
43 lines
1.2 KiB
TypeScript
43 lines
1.2 KiB
TypeScript
import { Maybe } from '@metafam/utils';
|
|
import { useEffect, useState } from 'react';
|
|
import { getBoxKey } from 'utils/boxTypes';
|
|
|
|
export const useBoxHeights = (items: Array<Maybe<HTMLElement>>) => {
|
|
const [heights, setHeights] = useState<Record<string, number>>({});
|
|
|
|
useEffect(() => {
|
|
const observer = new ResizeObserver((entries) => {
|
|
setHeights((oldHeights) => {
|
|
const entryHeights = Object.fromEntries(
|
|
entries.map(({ target }) => [
|
|
getBoxKey(target as HTMLElement),
|
|
target.scrollHeight, // entry.contentRect.height,
|
|
]),
|
|
);
|
|
return { ...oldHeights, ...entryHeights };
|
|
});
|
|
});
|
|
|
|
const newHeights: Record<string, number> = {};
|
|
items.forEach((item) => {
|
|
if (item) {
|
|
const target = item.children[0] as HTMLElement;
|
|
const key = getBoxKey(target);
|
|
if (key && target) {
|
|
newHeights[key] = target.scrollHeight;
|
|
observer.observe(target);
|
|
} else {
|
|
console.warn(`Invalid box data, missing:`, target, key);
|
|
}
|
|
}
|
|
});
|
|
setHeights(newHeights);
|
|
|
|
return () => {
|
|
observer.disconnect();
|
|
};
|
|
}, [items]);
|
|
|
|
return heights;
|
|
};
|