mirror of
https://github.com/stack-auth/stack.git
synced 2026-07-06 21:02:52 +08:00
Some checks failed
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
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 / 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 API Tests with external source of truth / build (22.x) (push) Has been cancelled
Lint & build / lint_and_build (latest) (push) Has been cancelled
Dev Environment Test With Custom Base Port / restart-dev-and-test-with-custom-base-port (push) Has been cancelled
Dev Environment Test / restart-dev-and-test (push) Has been cancelled
Run setup tests with custom base port / setup-tests-with-custom-base-port (push) Has been cancelled
Run setup tests / setup-tests (push) Has been cancelled
TOC Generator / TOC Generator (push) Has been cancelled
Co-authored-by: Konstantin Wohlwend <n2d4xc@gmail.com>
48 lines
1.2 KiB
TypeScript
48 lines
1.2 KiB
TypeScript
"use client";
|
|
|
|
import { isBrowserLike } from "@stackframe/stack-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;
|
|
}
|