Files
stack/apps/dashboard/src/components/dev-error-notifier.tsx
T
BilalG1andGitHub 609579abab
all-good: Did all the other checks pass? / all-good (push) Has been cancelled
Ensure Prisma migrations are in sync with the schema / check_prisma_migrations (22.x) (push) Has been cancelled
DB migration compat / Check if migrations changed (push) Has been cancelled
Docker Server Build and Push / Docker Build and Push Server (push) Has been cancelled
Docker Server Build and Run / docker (push) Has been cancelled
Runs E2E API Tests (Local Emulator) / E2E Tests (Local Emulator, Node ${{ matrix.node-version }}) (22.x) (push) Has been cancelled
Runs E2E API Tests / E2E Tests (Node ${{ matrix.node-version }}, Freestyle ${{ matrix.freestyle-mode }}) (mock, 22.x) (push) Has been cancelled
Runs E2E API Tests / E2E Tests (Node ${{ matrix.node-version }}, Freestyle ${{ matrix.freestyle-mode }}) (prod, 22.x) (push) Has been cancelled
Runs E2E API Tests with custom port prefix / build (22.x) (push) Has been cancelled
Runs E2E Fallback Tests / E2E Fallback Tests (Node ${{ matrix.node-version }}) (22.x) (push) Has been cancelled
Lint & build / lint_and_build (24) (push) Has been cancelled
TOC Generator / TOC Generator (push) Has been cancelled
DB migration compat / Back-compat — Current branch migrations with ${{ needs.check-migrations-changed.outputs.base_branch }} branch code (push) Has been cancelled
DB migration compat / Forward-compat — Current branch code with ${{ needs.check-migrations-changed.outputs.base_branch }} branch migrations (push) Has been cancelled
DB migration compat / No migration changes (skipped) (push) Has been cancelled
feat(hexclave): PR 3 — native @hexclave/* source rename + delete dual-publish wiring (#1482)
2026-05-29 15:21:59 -07:00

48 lines
1.2 KiB
TypeScript

"use client";
import { isBrowserLike } from "@hexclave/shared/dist/utils/env";
import { useToast } from "@/components/ui";
import { useEffect } from "react";
const neverNotify = [
"Failed to fetch RSC payload",
"[Fast Refresh] performing full",
];
let callbacks: ((prop: string, args: any[]) => void)[] = [];
if (process.env.NODE_ENV === 'development' && isBrowserLike()) {
for (const prop of ["error"] as const) {
const original = console[prop];
console[prop] = (...args) => {
original(...args);
if (!neverNotify.some((msg) => args.some((arg) => `${arg}`.includes(msg)))) {
callbacks.forEach((cb) => cb(prop, args));
}
};
}
}
export function DevErrorNotifier() {
const toast = useToast();
useEffect(() => {
const cb = (prop: string, args: any[]) => {
setTimeout(() => {
toast.toast({
title: `[DEV] console.${prop} called!`,
description: `Please check the browser console. ${args.join(" ").slice(0, 100)}...`,
variant: "destructive",
});
});
};
callbacks.push(cb);
return () => {
callbacks = callbacks.filter((c) => c !== cb);
};
}, [toast]);
return null;
}