From 3fb2b26c4b7aaecd1cf860121c93969183a8383c Mon Sep 17 00:00:00 2001 From: balzack Date: Wed, 3 Jul 2024 16:55:20 -0700 Subject: [PATCH] linking sdk to web app --- app/client/mobile/package.json | 2 +- app/client/mobile/yarn.lock | 10 ++--- app/client/web/package.json | 1 + app/client/web/src/App.tsx | 35 ++++++++-------- app/client/web/src/context/AppContext.js | 14 +++++++ .../web/src/context/useAppContext.hook.ts | 41 +++++++++++++++++++ app/client/web/yarn.lock | 17 ++++++++ app/sdk/package.json | 2 +- app/sdk/src/index.ts | 3 ++ app/sdk/tsup.config.ts | 2 +- 10 files changed, 103 insertions(+), 24 deletions(-) create mode 100644 app/client/web/src/context/AppContext.js create mode 100644 app/client/web/src/context/useAppContext.hook.ts diff --git a/app/client/mobile/package.json b/app/client/mobile/package.json index 36e5cc74..6783a0a6 100644 --- a/app/client/mobile/package.json +++ b/app/client/mobile/package.json @@ -10,7 +10,7 @@ "test": "jest" }, "dependencies": { - "databag-client-sdk": "^0.0.17", + "databag-client-sdk": "^0.0.18", "react": "18.2.0", "react-native": "0.74.3" }, diff --git a/app/client/mobile/yarn.lock b/app/client/mobile/yarn.lock index bf77b6ad..aac50dba 100644 --- a/app/client/mobile/yarn.lock +++ b/app/client/mobile/yarn.lock @@ -3010,7 +3010,7 @@ __metadata: "@types/react": ^18.2.6 "@types/react-test-renderer": ^18.0.0 babel-jest: ^29.6.3 - databag-client-sdk: ^0.0.17 + databag-client-sdk: ^0.0.18 eslint: ^8.19.0 jest: ^29.6.3 prettier: 2.8.8 @@ -4034,12 +4034,12 @@ __metadata: languageName: node linkType: hard -"databag-client-sdk@npm:^0.0.17": - version: 0.0.17 - resolution: "databag-client-sdk@npm:0.0.17" +"databag-client-sdk@npm:^0.0.18": + version: 0.0.18 + resolution: "databag-client-sdk@npm:0.0.18" dependencies: eventemitter3: ^5.0.1 - checksum: 65961dbb1098e6d0ffb31e4bde1fce4e7f778e85abeabfdceae1af7a6f4620e714e81b035881fb214122baaccce0c84d6a59604df006e34baaec40ba78cfe9e7 + checksum: d7afa318a9f0b4474d3d9df247f9ee8ed3f473d2163560b93d62716069650306286413b2d83cb4946fc3cf07575291e45c025475aec7a9e428c4a6318f4c29ec languageName: node linkType: hard diff --git a/app/client/web/package.json b/app/client/web/package.json index bd25017d..dcdc842c 100644 --- a/app/client/web/package.json +++ b/app/client/web/package.json @@ -10,6 +10,7 @@ "@types/node": "^16.18.101", "@types/react": "^18.3.3", "@types/react-dom": "^18.3.0", + "databag-client-sdk": "^0.0.18", "react": "^18.3.1", "react-dom": "^18.3.1", "react-scripts": "5.0.1", diff --git a/app/client/web/src/App.tsx b/app/client/web/src/App.tsx index a53698aa..5234340e 100644 --- a/app/client/web/src/App.tsx +++ b/app/client/web/src/App.tsx @@ -1,25 +1,28 @@ import React from 'react'; import logo from './logo.svg'; import './App.css'; +import { AppContextProvider } from './context/AppContext'; function App() { return ( -
-
- logo -

- Edit src/App.tsx and save to reload. -

- - Learn React - -
-
+ +
+
+ logo +

+ Edit src/App.tsx and save to reload. +

+ + Learn React + +
+
+
); } diff --git a/app/client/web/src/context/AppContext.js b/app/client/web/src/context/AppContext.js new file mode 100644 index 00000000..665eec18 --- /dev/null +++ b/app/client/web/src/context/AppContext.js @@ -0,0 +1,14 @@ +import { createContext } from 'react'; +import { useAppContext } from './useAppContext.hook'; + +export const AppContext = createContext({}); + +export function AppContextProvider({ children }) { + const { state, actions } = useAppContext(); + return ( + + {children} + + ); +} + diff --git a/app/client/web/src/context/useAppContext.hook.ts b/app/client/web/src/context/useAppContext.hook.ts new file mode 100644 index 00000000..9e28541b --- /dev/null +++ b/app/client/web/src/context/useAppContext.hook.ts @@ -0,0 +1,41 @@ +import { useState, useEffect } from 'react'; +import { DatabagSDK, WebStore, Session } from 'databag-client-sdk'; + +class Store implements WebStore { + public async getValue(key: string): Promise { + return ''; + } + + public async setValue(key: string, value: string): Promise { + } + + public async clearValue(key: string): Promise { + } + + public async clearAll(): Promise { + } +}; + +export function useAppContext() { + const [state, setState] = useState({}); + + const updateState = (value: any) => { + setState((s) => ({ ...s, ...value })) + } + + useEffect(() => { init() }, []); + + const init = async () => { + const sdk = new DatabagSDK(null); + const store = new Store(); + const session: Session | null = await sdk.initOnlineStore(store); + console.log(session); + updateState({ sdk, session }); + }; + + const actions = { + } + + return { state, actions } +} + diff --git a/app/client/web/yarn.lock b/app/client/web/yarn.lock index 67ad9c80..874a65eb 100644 --- a/app/client/web/yarn.lock +++ b/app/client/web/yarn.lock @@ -5171,6 +5171,15 @@ __metadata: languageName: node linkType: hard +"databag-client-sdk@npm:^0.0.18": + version: 0.0.18 + resolution: "databag-client-sdk@npm:0.0.18" + dependencies: + eventemitter3: ^5.0.1 + checksum: d7afa318a9f0b4474d3d9df247f9ee8ed3f473d2163560b93d62716069650306286413b2d83cb4946fc3cf07575291e45c025475aec7a9e428c4a6318f4c29ec + languageName: node + linkType: hard + "databag@workspace:.": version: 0.0.0-use.local resolution: "databag@workspace:." @@ -5182,6 +5191,7 @@ __metadata: "@types/node": ^16.18.101 "@types/react": ^18.3.3 "@types/react-dom": ^18.3.0 + databag-client-sdk: ^0.0.18 react: ^18.3.1 react-dom: ^18.3.1 react-scripts: 5.0.1 @@ -6294,6 +6304,13 @@ __metadata: languageName: node linkType: hard +"eventemitter3@npm:^5.0.1": + version: 5.0.1 + resolution: "eventemitter3@npm:5.0.1" + checksum: 543d6c858ab699303c3c32e0f0f47fc64d360bf73c3daf0ac0b5079710e340d6fe9f15487f94e66c629f5f82cd1a8678d692f3dbb6f6fcd1190e1b97fcad36f8 + languageName: node + linkType: hard + "events@npm:^3.2.0": version: 3.3.0 resolution: "events@npm:3.3.0" diff --git a/app/sdk/package.json b/app/sdk/package.json index f24798cb..38457c09 100644 --- a/app/sdk/package.json +++ b/app/sdk/package.json @@ -1,6 +1,6 @@ { "name": "databag-client-sdk", - "version": "0.0.17", + "version": "0.0.18", "description": "an SDK for developing Databag applications", "main": "./dist/index.js", "module": "./dist/index.mjs", diff --git a/app/sdk/src/index.ts b/app/sdk/src/index.ts index efbdb34e..29bfd115 100644 --- a/app/sdk/src/index.ts +++ b/app/sdk/src/index.ts @@ -5,6 +5,9 @@ import { BotModule } from './bot'; import type { Session, Node, Bot, SqlStore, WebStore } from './api'; import type { SessionParams } from './types'; +export * from './api'; +export * from './types'; + export class DatabagSDK { private crypto: Crypto | null; diff --git a/app/sdk/tsup.config.ts b/app/sdk/tsup.config.ts index 7714d960..cfe1f125 100644 --- a/app/sdk/tsup.config.ts +++ b/app/sdk/tsup.config.ts @@ -1,7 +1,7 @@ import { defineConfig } from "tsup"; export default defineConfig({ - entry: ["src/index.ts", "src/api.ts", "src/types.ts"], + entry: ["src/index.ts"], format: ["cjs", "esm"], // Build for commonJS and ESmodules dts: true, // Generate declaration file (.d.ts) splitting: false,