Skip to content

Commit

Permalink
Upgrading orbis sdk version with changes to authentication pattern
Browse files Browse the repository at this point in the history
mzkrasner committed Oct 18, 2024
1 parent 06e1020 commit 71d19a6
Showing 7 changed files with 10,859 additions and 9,022 deletions.
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -22,7 +22,8 @@ git clone https://github.com/ceramicstudio/deforum && cd deforum
Next, install your dependencies:

```bash
pnpm install
nvm use 20
npm install
```

### Environment Setup
@@ -62,13 +63,13 @@ You are now ready to run the application.
Running in developer mode:

```bash
pnpm dev
npm run dev
```

Building:

```bash
pnpm build
npm run build
```

## Learn More
24 changes: 12 additions & 12 deletions app/context/OrbisContext.tsx
Original file line number Diff line number Diff line change
@@ -8,16 +8,17 @@ import {
import {
OrbisDB,
type OrbisConnectResult,
type SiwxAttestation,
} from "@useorbis/db-sdk";
import type { Cacao } from '@didtools/cacao';
import { env } from "@/env.mjs";
import { OrbisEVMAuth } from "@useorbis/db-sdk/auth";
import { useWalletClient, useAccount, useAccountEffect } from "wagmi";

type OrbisDBProps = {
children: ReactNode;
};

const ENV_ID = process.env.NEXT_PUBLIC_ENV_ID ?? "";
const ENV_ID = env.NEXT_PUBLIC_ENV_ID ?? "";

declare global {
interface Window {
@@ -59,13 +60,13 @@ export const ODB = ({ children }: OrbisDBProps) => {
const StartOrbisAuth = async (): Promise<
OrbisConnectResult | undefined
> => {
const auth = new OrbisEVMAuth(window.ethereum!);
const auth = new OrbisEVMAuth(window.ethereum);
// Authenticate - this option persists the session in local storage
const authResult: OrbisConnectResult = await orbis.connectUser({
auth,
});
if (authResult.session) {
console.log("Orbis Auth'd:", authResult.session);
if (authResult.auth.session) {
console.log("Orbis Auth'd:", authResult.auth.session);
return authResult;
}

@@ -76,14 +77,13 @@ export const ODB = ({ children }: OrbisDBProps) => {
if (walletClient) {
const address = walletClient.account.address;
if (localStorage.getItem("orbis:session") && address) {
const attestation = (
JSON.parse(
localStorage.getItem("orbis:session") ?? "{}",
) as OrbisConnectResult
).session.authAttestation as SiwxAttestation;
const expTime = attestation.siwx.message.expirationTime;
const serializedAttestation = localStorage.getItem("orbis:session") ?? "";
const {cacao} = JSON.parse(Buffer.from(serializedAttestation, "base64").toString()) as {cacao: Cacao};
console.log("Parsed Session:", cacao);
const expTime = cacao.p.exp;
const attestationAddress = cacao.p.iss.replace("did:pkh:eip155:1:", "").toLowerCase();
if (
attestation.siwx.message.address.toLowerCase() !==
attestationAddress !==
address.toLowerCase()
) {
console.log("Address mismatch, removing session");
3 changes: 2 additions & 1 deletion app/context/WalletContext.tsx
Original file line number Diff line number Diff line change
@@ -4,11 +4,12 @@ import {
RainbowKitProvider,
darkTheme,
} from "@rainbow-me/rainbowkit";
import { env } from "@/env.mjs";
import { WagmiProvider } from "wagmi";
import { mainnet } from "wagmi/chains";
import React, { ReactNode } from "react";

const projectId = process.env.NEXT_PUBLIC_PROJECT_ID || "";
const projectId = env.NEXT_PUBLIC_PROJECT_ID || "";

const config = getDefaultConfig({
appName: "test-app",
29 changes: 15 additions & 14 deletions app/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,27 +1,29 @@
"use client";

import "@/styles/globals.css";

import { fontGeist, fontHeading, fontSans, fontUrban } from "@/assets/fonts";
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
import { ThemeProvider } from "next-themes";
import { ThirdwebProvider } from "@thirdweb-dev/react";
import { cn } from "@/lib/utils";
import { Toaster } from "@/components/ui/sonner";
import { TailwindIndicator } from "@/components/tailwind-indicator";
import { env } from "@/env.mjs";
import { ODB } from "./context/OrbisContext";
import { WalletProvider } from "./context/WalletContext";
import { ThirdwebProvider } from "@thirdweb-dev/react";
import { useState } from "react";

interface RootLayoutProps {
children: React.ReactNode;
}

const queryClient = new QueryClient();

// export const metadata = constructMetadata();
export const useQueryClient = () => {
const [queryClient] = useState(() => new QueryClient())
return queryClient
}

export default function RootLayout({ children }: RootLayoutProps) {
const queryClient = useQueryClient();
return (
<html lang="en" suppressHydrationWarning>
<head />
@@ -42,20 +44,19 @@ export default function RootLayout({ children }: RootLayoutProps) {
>
<QueryClientProvider client={queryClient}>
<WalletProvider>
<ODB>
<ThirdwebProvider
activeChain="ethereum"
clientId={env.NEXT_PUBLIC_THIRDWEB_ID}
>
{children}
</ThirdwebProvider>
</ODB>
<ThirdwebProvider
activeChain="ethereum"
clientId={env.NEXT_PUBLIC_THIRDWEB_ID}
>
<ODB>{children}</ODB>
</ThirdwebProvider>
</WalletProvider>
</QueryClientProvider>

<Toaster richColors closeButton />
<TailwindIndicator />
</ThemeProvider>
</body>
</html>
);
}
}
3 changes: 0 additions & 3 deletions next.config.js
Original file line number Diff line number Diff line change
@@ -28,9 +28,6 @@ const nextConfig = {
},
],
},
experimental: {
serverComponentsExternalPackages: ["@prisma/client"],
},
};

export default nextConfig
60 changes: 30 additions & 30 deletions package.json
Original file line number Diff line number Diff line change
@@ -10,50 +10,50 @@
"lint": "next lint"
},
"dependencies": {
"react": "^18",
"react-dom": "^18",
"@didtools/cacao": "^3.0.1",
"@radix-ui/react-dropdown-menu": "^2.1.1",
"@rainbow-me/rainbowkit": "^2.0.5",
"@t3-oss/env-nextjs": "^0.10.1",
"@tailwindcss/line-clamp": "^0.4.4",
"@tailwindcss/typography": "^0.5.13",
"@tanstack/react-query": "^5.32.0",
"@thirdweb-dev/react": "^4.9.4",
"@thirdweb-dev/sdk": "^4.0.99",
"@useorbis/db-sdk": "0.0.33-alpha",
"@thirdweb-dev/sdk": "^4.0.89",
"@typescript-eslint/parser": "^7.2.0",
"@useorbis/db-sdk": "0.0.60-alpha",
"@wagmi/core": "^2.11.6",
"class-variance-authority": "^0.7.0",
"clsx": "^2.1.1",
"ethers": "^5",
"lucide-react": "^0.381.0",
"next-auth": "^4",
"next": "14.2.4",
"next-themes": "^0.3.0",
"prettier": "^3.3.2",
"prettier-plugin-tailwindcss": "^0.6.1",
"react": "18.3.1",
"react-dom": "18.3.1",
"react-loader-spinner": "^6.1.6",
"@radix-ui/react-dropdown-menu": "^2.1.1",
"@typescript-eslint/parser": "^7.14.1",
"sonner": "^1.5.0",
"class-variance-authority": "^0.7.0",
"@tanstack/react-query": "^5.32.0",
"react-textarea-autosize": "^8.5.3",
"next-themes": "^0.3.0",
"@wagmi/core": "^2.5.20",
"sonner": "^1.5.0",
"tailwind-merge": "^2.3.0",
"tailwindcss-animate": "^1.0.7",
"@tailwindcss/line-clamp": "^0.4.4",
"@tailwindcss/typography": "^0.5.13",
"wagmi": "^2.5.20",
"clsx": "^2.1.1",
"vaul": "^0.9.1",
"zod": "^3.23.8",
"prettier": "^3.3.2",
"prettier-plugin-tailwindcss": "^0.6.1",
"ethers": "^5",
"next": "14.2.11"
"wagmi": "^2.5.20",
"zod": "^3.23.8"
},
"devDependencies": {
"typescript": "^5",
"@types/node": "^20",
"@types/react": "^18",
"@types/react-dom": "^18",
"postcss": "^8",
"tailwindcss": "^3.4.1",
"prettier": "^3.3.2",
"prettier-plugin-tailwindcss": "^0.6.1",
"eslint": "^8.57.0",
"@types/react": "18.3.3",
"@types/react-dom": "18.3.0",
"eslint": "^9.12.0",
"eslint-config-next": "14.2.4",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-react": "^7.34.3",
"eslint-plugin-tailwindcss": "^3.17.4"
"eslint-plugin-tailwindcss": "^3.17.4",
"postcss": "^8",
"prettier": "^3.3.2",
"prettier-plugin-tailwindcss": "^0.6.1",
"tailwindcss": "^3.4.1",
"typescript": "5.5.2"
}
}
Loading

0 comments on commit 71d19a6

Please sign in to comment.