From 5c3c866dbd68073f11e81ada1f2831f921b0093a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wojciech=20Mas=C5=82owski?= <112573426+Mikssxed@users.noreply.github.com> Date: Thu, 15 Aug 2024 15:29:31 +0200 Subject: [PATCH] Add onsei wallet (#185) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: André Sardo --- .../shuttle-port-nextjs/src/app/layout.tsx | 32 +++++++++++-------- examples/shuttle-port-vue/src/main.ts | 16 ++++++---- .../providers/mobile/OnseiMobileProvider.ts | 27 ++++++++++++++++ packages/core/src/providers/mobile/index.ts | 10 +++--- 4 files changed, 61 insertions(+), 24 deletions(-) create mode 100644 packages/core/src/providers/mobile/OnseiMobileProvider.ts diff --git a/examples/shuttle-port-nextjs/src/app/layout.tsx b/examples/shuttle-port-nextjs/src/app/layout.tsx index aae02b6..6e87ac5 100644 --- a/examples/shuttle-port-nextjs/src/app/layout.tsx +++ b/examples/shuttle-port-nextjs/src/app/layout.tsx @@ -1,41 +1,42 @@ "use client"; import { + CitadelOneExtensionProvider, + CosmiframeExtensionProvider, CosmostationExtensionProvider, - KeplrExtensionProvider, - LeapCosmosExtensionProvider, - MetamaskExtensionProvider, - StationExtensionProvider, - XDEFICosmosExtensionProvider, CosmostationMobileProvider, + KeplrExtensionProvider, KeplrMobileProvider, + LeapCosmosExtensionProvider, LeapCosmosMobileProvider, LeapMetamaskCosmosSnapExtensionProvider, + MetamaskExtensionProvider, MetamaskMobileProvider, - ShuttleProvider, - OkxWalletExtensionProvider, NinjiExtensionProvider, OWalletCosmosExtensionProvider, - CosmiframeExtensionProvider, - CitadelOneExtensionProvider, + OkxWalletExtensionProvider, + OnseiMobileProvider, + ShuttleProvider, + StationExtensionProvider, + XDEFICosmosExtensionProvider, SafePalExtensionProvider, imTokenExtensionProvider, } from "@delphi-labs/shuttle-react"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import Header from "@/components/Header"; import { - OSMOSIS_MAINNET, - MARS_MAINNET, - TERRA_MAINNET, - TERRA_TESTNET, INJECTIVE_MAINNET, INJECTIVE_TESTNET, + MARS_MAINNET, NEUTRON_MAINNET, NEUTRON_TESTNET, ORAI_MAINNET, ORAI_TESTNET, + OSMOSIS_MAINNET, + TERRA_MAINNET, + TERRA_TESTNET, } from "@/config/networks"; -import Header from "@/components/Header"; import "./globals.css"; @@ -135,6 +136,9 @@ const mobileProviders = [ new MetamaskMobileProvider({ networks: [INJECTIVE_MAINNET, INJECTIVE_TESTNET], }), + new OnseiMobileProvider({ + networks: [OSMOSIS_MAINNET], + }), ]; export default function RootLayout({ children }: { children: React.ReactNode }) { diff --git a/examples/shuttle-port-vue/src/main.ts b/examples/shuttle-port-vue/src/main.ts index a4e9954..19019b3 100644 --- a/examples/shuttle-port-vue/src/main.ts +++ b/examples/shuttle-port-vue/src/main.ts @@ -1,10 +1,7 @@ import "./assets/main.css"; -import { createApp } from "vue"; -import { VueQueryPlugin } from "@tanstack/vue-query"; -import { createPinia } from "pinia"; -import piniaPluginPersistedstate from "pinia-plugin-persistedstate"; import { + CitadelOneExtensionProvider, CosmostationExtensionProvider, CosmostationMobileProvider, KeplrExtensionProvider, @@ -13,16 +10,19 @@ import { LeapCosmosMobileProvider, MetamaskExtensionProvider, MetamaskMobileProvider, + OnseiMobileProvider, StationExtensionProvider, XDEFICosmosExtensionProvider, - CitadelOneExtensionProvider, SafePalExtensionProvider, imTokenExtensionProvider, createShuttle, } from "@delphi-labs/shuttle-vue"; +import { VueQueryPlugin } from "@tanstack/vue-query"; +import { createPinia } from "pinia"; +import piniaPluginPersistedstate from "pinia-plugin-persistedstate"; +import { createApp } from "vue"; import App from "./App.vue"; -import router from "./router"; import { INJECTIVE_MAINNET, INJECTIVE_TESTNET, @@ -31,6 +31,7 @@ import { TERRA_MAINNET, TERRA_TESTNET, } from "./config/networks"; +import router from "./router"; export const pinia = createPinia(); pinia.use(piniaPluginPersistedstate); @@ -81,6 +82,9 @@ const shuttle = createShuttle({ new MetamaskMobileProvider({ networks: [INJECTIVE_MAINNET, INJECTIVE_TESTNET], }), + new OnseiMobileProvider({ + networks: [OSMOSIS_MAINNET], + }), ], }); diff --git a/packages/core/src/providers/mobile/OnseiMobileProvider.ts b/packages/core/src/providers/mobile/OnseiMobileProvider.ts new file mode 100644 index 0000000..ac610b2 --- /dev/null +++ b/packages/core/src/providers/mobile/OnseiMobileProvider.ts @@ -0,0 +1,27 @@ +import CosmosWalletConnect from "../../internals/adapters/mobile/CosmosWalletConnect"; +import type { Network } from "../../internals/network"; +import WalletMobileProvider from "./WalletMobileProvider"; + +export const OnseiMobileProvider = class OnseiMobileProvider extends WalletMobileProvider { + constructor({ networks, walletConnectProjectId }: { networks: Network[]; walletConnectProjectId?: string }) { + super({ + id: "mobile-onsei-wallet", + name: "onsei wallet - WalletConnect", + networks, + mobileProviderAdapter: new CosmosWalletConnect({ + walletConnectPeerName: "onsei wallet", + walletConnectProjectId, + }), + }); + } + + generateIntents(uri?: string): { qrCodeUrl: string; iosUrl: string; androidUrl: string } { + return { + qrCodeUrl: uri || "", + iosUrl: `onseiwallet://wcV2?${uri}`, + androidUrl: `intent://wcV2?${uri}#Intent;package=com.ulamlabs.seiwallet;scheme=onseiwallet;end;`, + }; + } +}; + +export default OnseiMobileProvider; diff --git a/packages/core/src/providers/mobile/index.ts b/packages/core/src/providers/mobile/index.ts index 9ce9dcb..02a3cab 100644 --- a/packages/core/src/providers/mobile/index.ts +++ b/packages/core/src/providers/mobile/index.ts @@ -1,6 +1,8 @@ -export * from "./WalletMobileProvider"; -export * from "./MetamaskMobileProvider"; +export * from "./BitgetMobileProvider"; +export * from "./CosmostationMobileProvider"; export * from "./KeplrMobileProvider"; export * from "./LeapCosmosMobileProvider"; -export * from "./CosmostationMobileProvider"; -export * from "./BitgetMobileProvider"; +export * from "./MetamaskMobileProvider"; +export * from './OnseiMobileProvider'; +export * from "./WalletMobileProvider"; +