Skip to content
Snippets Groups Projects
utils.provider.tsx 1020 B
Newer Older
  • Learn to ignore specific revisions
  • Matthias Feyll's avatar
    Matthias Feyll committed
    import { BasicProp } from "@shared/types/interfaces.type";
    
    Matthias Feyll's avatar
    Matthias Feyll committed
    import React, { createContext, useContext, useMemo } from "react";
    
    matthiasf's avatar
    matthiasf committed
    import { useTranslation } from "react-i18next";
    import { toast } from "react-toastify";
    
    interface UtilsProviderType {
        toClipboard: (text: string) => void
    }
    
    const UtilsContext = createContext<UtilsProviderType>({
    
    Matthias Feyll's avatar
    Matthias Feyll committed
        toClipboard: function (): void {
    
    matthiasf's avatar
    matthiasf committed
            throw new Error("Function not implemented.");
        }
    })
    
    
    Matthias Feyll's avatar
    Matthias Feyll committed
    export const UtilsProvider: React.FC<BasicProp> = ({ children }) => {
    
    matthiasf's avatar
    matthiasf committed
        const { t } = useTranslation('common');
    
        const value = useMemo<UtilsProviderType>(() => {
            return {
                toClipboard(text) {
                    navigator.clipboard.writeText(text);
                    toast.info(t('global.toast.copied'))
                },
            } as UtilsProviderType
    
    Matthias Feyll's avatar
    Matthias Feyll committed
        }, [t])
    
    matthiasf's avatar
    matthiasf committed
    
        return (
            <UtilsContext.Provider value={value}>
                {children}
            </UtilsContext.Provider>
        )
    }
    
    export const useUtils = () => {
        return useContext(UtilsContext)
    }