Skip to content

Instantly share code, notes, and snippets.

View pontusab's full-sized avatar
🦁

Pontus Abrahamsson pontusab

🦁
View GitHub Profile
@pontusab
pontusab / preview.tsx
Created March 12, 2024 18:51
Preview
"use client";
import { Button } from "@midday/ui/button";
import { Dialog, DialogContent, DialogTrigger } from "@midday/ui/dialog";
import { Icons } from "@midday/ui/icons";
import { Skeleton } from "@midday/ui/skeleton";
import { cn } from "@midday/ui/utils";
import { AnimatePresence, motion } from "framer-motion";
import { useEffect, useState } from "react";
import { Document, Page, pdfjs } from "react-pdf";
@pontusab
pontusab / import.ts
Last active March 14, 2024 13:30
Import background job
import crypto from "node:crypto";
import { ChatPromptTemplate } from "@langchain/core/prompts";
import { ChatOpenAI } from "@langchain/openai";
import { eventTrigger } from "@trigger.dev/sdk";
import { capitalCase } from "change-case";
import * as d3 from "d3-dsv";
import { CSVLoader } from "langchain/document_loaders/fs/csv";
import { TokenTextSplitter } from "langchain/text_splitter";
import { z } from "zod";
import { client, supabase } from "../client";
import { ChatPromptTemplate } from "@langchain/core/prompts";
import { ChatOpenAI } from "@langchain/openai";
import { eventTrigger } from "@trigger.dev/sdk";
import { capitalCase } from "change-case";
import * as d3 from "d3-dsv";
import { CSVLoader } from "langchain/document_loaders/fs/csv";
import { TokenTextSplitter } from "langchain/text_splitter";
import { z } from "zod";
import { client, supabase } from "../client";
import { Events, Jobs } from "../constants";
@pontusab
pontusab / process-job.ts
Created February 27, 2024 08:20
Process PDF
const completion = await io.openai.chat.completions.create("completion", {
model: "gpt-3.5-turbo",
messages: [
{
role: "system",
content:
"You are a invoice parser. From this invoice extract total amount, due date, issuer name, currency and transform currency value to currency code and return it as currency. Return the response in JSON format",
},
{
role: "user",
@pontusab
pontusab / cached-queries.ts
Created January 31, 2024 15:42
cached-queries.ts
export const getMetrics = async (params) => {
const supabase = createClient();
const user = await getUser();
const teamId = user?.data?.team_id;
if (!teamId) {
return null;
}
import { Novu } from "@novu/node";
const novu = new Novu(process.env.NOVU_API_KEY!);
const API_ENDPOINT = "https://api.novu.co/v1";
export enum TriggerEvents {
TransactionNew = "transaction_new",
}
type TriggerUser = {
"use client";
import { useNotifications } from "@/hooks/use-notifications";
import { Button } from "@midday/ui/button";
import { Icons } from "@midday/ui/icons";
import { Popover, PopoverContent, PopoverTrigger } from "@midday/ui/popover";
import { ScrollArea } from "@midday/ui/scroll-area";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@midday/ui/tabs";
import { formatDistanceToNow } from "date-fns";
import Link from "next/link";
import { createClient } from "@midday/supabase/client";
import { getUserQuery } from "@midday/supabase/queries";
import { HeadlessService } from "@novu/headless";
import { useCallback, useEffect, useRef, useState } from "react";
export function useNotifications() {
const supabase = createClient();
const [notifications, setNotifications] = useState([]);
const [subscriberId, setSubscriberId] = useState();
const headlessServiceRef = useRef<HeadlessService>();
@pontusab
pontusab / useUpload.ts
Created October 25, 2023 19:50
useUpload.ts
import { getSupabaseBrowserClient } from "@midday/supabase/browser-client";
import { getUserDetails } from "@midday/supabase/queries";
import { upload } from "@midday/supabase/storage";
import { useState } from "react";
export function useUpload() {
const supabase = getSupabaseBrowserClient();
const [isLoading, setLoading] = useState(false);
const uploadFile = async ({ bucketName, file, path }) => {
@pontusab
pontusab / upload.ts
Created October 25, 2023 19:49
upload.ts
import { SupabaseClient } from "@supabase/auth-helpers-nextjs";
type UploadParams = {
file: File;
path: string;
};
export async function upload(
client: SupabaseClient,
{ file, path }: UploadParams,