Advertisement
TIMAS_Bro

src/hooks/ActionAllPackages.tsx

Mar 12th, 2024 (edited)
570
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2.  
  3.  
  4. import { ColumnDef } from "@tanstack/react-table"
  5. import { MoreHorizontal } from "lucide-react"
  6. import axios from "axios";
  7. import { AxiosError } from 'axios'; // Import AxiosError type
  8. import { Button } from "@/components/ui/button"
  9. import Snackbar from '@mui/material/Snackbar';
  10. import Alert from '@mui/material/Alert';
  11. import SnackbarContent from '@mui/material/SnackbarContent';
  12. import React, { useState } from 'react';
  13. import { useRouter } from "next/navigation";
  14. import toast, { Toaster } from 'react-hot-toast';
  15. import {
  16.   DropdownMenu,
  17.   DropdownMenuContent,
  18.   DropdownMenuItem,
  19.   DropdownMenuLabel,
  20.   DropdownMenuSeparator,
  21.   DropdownMenuTrigger,
  22. } from "@/components/ui/dropdown-menu"
  23.  
  24. const ActionAllPackages = (paket) => {
  25.   const router = useRouter();
  26.   const handleCloseSnackbar = () => {
  27.   const handleCopyPackagaName = (dependency) => {
  28.     navigator.clipboard.writeText(dependency)
  29.       .then(() => {
  30.         toast.success("Copied package name!")
  31.       })
  32.       .catch(error => {
  33.         toast.error("Failed to copy the package name...")
  34.       });
  35.   }
  36.  
  37.   const copyLink = () => {
  38.     const selectedPackage = paket;
  39.  
  40.     // Return a new Promise
  41.     return new Promise((resolve, reject) => {
  42.       setTimeout(() => {
  43.         navigator.clipboard.writeText(paket.link)
  44.           .then(() => {
  45.             // Resolve the promise if copying is successful
  46.             resolve(paket.link);
  47.           })
  48.           .catch(error => {
  49.             // Reject the promise if copying fails
  50.             console.log("COPY-ERROR: ", error);
  51.             reject(error);
  52.           });
  53.       }, 1000);
  54.  
  55.     });
  56.   };
  57.   const handleCopyInstallLink = (e) => {
  58.       const copyPromise = copyLink();
  59.       toast.promise(
  60.         copyPromise,
  61.        {
  62.          loading: 'Copying...',
  63.          success: <b>Copied the install link!</b>,
  64.          error: <b>Could not copy the install link!</b>,
  65.        }
  66.      );
  67.   };
  68.   const handleDetailedView = () => {
  69.     router.push(`/detailed_view?name=${paket.name}`);
  70.   };
  71.   return (
  72.     <div>
  73.     <Toaster position="bottom-right" reverseOrder={false} />
  74.     <DropdownMenu>
  75.       <DropdownMenuTrigger asChild>
  76.         <Button variant="ghost" className="h-8 w-8 p-0">
  77.           <span className="sr-only">Open menu</span>
  78.           <MoreHorizontal className="h-4 w-4" />
  79.         </Button>
  80.       </DropdownMenuTrigger>
  81.       <DropdownMenuContent align="end">
  82.         <DropdownMenuLabel>Actions</DropdownMenuLabel>
  83.         <DropdownMenuItem
  84.           onClick={() => handleCopyPackagaName(paket.name)}
  85.         >
  86.           Copy package name
  87.         </DropdownMenuItem>
  88.         <DropdownMenuItem
  89.           onClick={handleCopyInstallLink}
  90.         >
  91.           Copy install link
  92.         </DropdownMenuItem>
  93.         <DropdownMenuSeparator />
  94.         <DropdownMenuItem
  95.           onClick={handleDetailedView}
  96.         >
  97.           Detailed view
  98.         </DropdownMenuItem>
  99.       </DropdownMenuContent>
  100.     </DropdownMenu>
  101.     </div>
  102.   )
  103. }
  104.  
  105. export default ActionAllPackages;
  106.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement