22 lines
875 B
TypeScript
22 lines
875 B
TypeScript
import type { ClassValue } from "clsx";
|
|
import { clsx } from "clsx";
|
|
import { twMerge } from "tailwind-merge";
|
|
|
|
export function cn(...inputs: ClassValue[]) {
|
|
return twMerge(clsx(inputs));
|
|
}
|
|
|
|
export function errorMessage(caught: unknown, fallback: string) {
|
|
return caught instanceof Error ? caught.message : fallback;
|
|
}
|
|
|
|
export function oauthErrorMessage(caught: unknown) {
|
|
const message = errorMessage(caught, "GitHub sign-in failed");
|
|
if (/popup.*block|blocked.*popup/iu.test(message))
|
|
return "GitHub sign-in popup was blocked. Allow popups for this site and try again.";
|
|
if (/cancel|closed.*popup|popup.*closed/iu.test(message)) return "GitHub sign-in was cancelled before it completed.";
|
|
if (/provider|oauth|redirect|callback|client.?id/iu.test(message))
|
|
return "GitHub sign-in is not configured correctly on the Workshop server.";
|
|
return message;
|
|
}
|