mirror of
https://github.com/arsvendg/Stirling-PDF.git
synced 2026-09-13 04:08:22 +02:00
# Description of Changes When I added Prettier formatting in #6052, my aim was to use just the default settings in Prettier. Turns out, Prettier looks _really hard_ for any config files if it's not explicitly given one, which means that if a developer has some sort of Prettier config file lying around on their system, Prettier might find it and use it. Also, Prettier changes its defaults based on stuff in `.editorconfig` without any good way of disabling that behaviour explicitly in its config file. To solve both of these issues, I've introduced a `.prettierrc` file which sets Prettier's defaults explicitly, and then reformatted all our code _again_ in Prettier's actual default settings. This should achieve the aim of #6052 and remove the possibility for it breaking on different dev computers.
61 lines
1.5 KiB
TypeScript
61 lines
1.5 KiB
TypeScript
import { useEffect, useRef } from "react";
|
|
import Userback from "@userback/widget";
|
|
import { useAuth } from "@app/auth/UseSession";
|
|
|
|
interface UserbackWidgetProps {
|
|
token: string;
|
|
}
|
|
|
|
interface UserbackInstance {
|
|
destroy: () => void;
|
|
}
|
|
|
|
export default function UserbackWidget({ token }: UserbackWidgetProps) {
|
|
const { user } = useAuth();
|
|
const userbackRef = useRef<UserbackInstance | null>(null);
|
|
const initializingRef = useRef(false);
|
|
|
|
useEffect(() => {
|
|
if (!user || initializingRef.current) return;
|
|
|
|
initializingRef.current = true;
|
|
|
|
const initializeUserback = async () => {
|
|
try {
|
|
// Prepare user data options
|
|
const userInfo: { name?: string; email?: string } = {};
|
|
if (user.user_metadata?.full_name)
|
|
userInfo.name = user.user_metadata.full_name;
|
|
if (user.email) userInfo.email = user.email;
|
|
|
|
const options = {
|
|
user_data: {
|
|
id: user.id,
|
|
info: userInfo,
|
|
},
|
|
};
|
|
|
|
// Initialize Userback
|
|
userbackRef.current = await Userback(token, options);
|
|
} finally {
|
|
initializingRef.current = false;
|
|
}
|
|
};
|
|
|
|
initializeUserback();
|
|
|
|
// Cleanup function
|
|
return () => {
|
|
if (
|
|
userbackRef.current &&
|
|
typeof userbackRef.current.destroy === "function"
|
|
) {
|
|
userbackRef.current.destroy();
|
|
}
|
|
initializingRef.current = false;
|
|
};
|
|
}, [user, token]);
|
|
|
|
return null; // This component doesn't render anything visible
|
|
}
|