diff --git a/apps/mobile/.env.example b/apps/mobile/.env.example index f4f974a9..56cacea1 100644 --- a/apps/mobile/.env.example +++ b/apps/mobile/.env.example @@ -22,4 +22,12 @@ EXPO_PUBLIC_DYNAMIC_API_KEY="DYNAMIC_API_KEY" EXPO_PUBLIC_LAYERSWAP_CLIENT_ID="" EXPO_PUBLIC_LAYERSWAP_API_KEY="API_KEY_LAYER_SWAP" -EXPO_PUBLIC_GOOGLE_TAG_ID= \ No newline at end of file +EXPO_PUBLIC_GOOGLE_TAG_ID= + + +# EKUBU API +EXPO_PUBLIC_EKUBO_API="https://mainnet-api.ekubo.org" +EXPO_PUBLIC_EKUBO_ROUTE_API="https://quoter-mainnet-api.ekubo.org" + +# AVNU API +EXPO_PUBLIC_AVNU_API="https://starknet.api.avnu.fi" \ No newline at end of file diff --git a/apps/mobile/package.json b/apps/mobile/package.json index 00808c10..7b8233f7 100644 --- a/apps/mobile/package.json +++ b/apps/mobile/package.json @@ -2,7 +2,7 @@ "name": "mobile", "version": "1.0.0", "main": "index.js", - "packageManager": "pnpm@8.15.9", + "packageManager": "pnpm@8.15.9", "scripts": { "dev": "expo start", "build:web": "npx expo export --platform web", @@ -10,10 +10,10 @@ "start:tunnel": "expo start --tunnel", "android": "expo run:android", "build:android": "expo build:android", - "build:android:eas":"eas build -p android", + "build:android:eas": "eas build -p android", "ios": "expo run:ios", "build:ios": "expo build:ios", - "build:ios:eas":"eas build -p ios", + "build:ios:eas": "eas build -p ios", "web": "expo start --web", "postinstall": "patch-package", "format": "prettier --write \"src/**/*.{ts,tsx}\"", @@ -75,6 +75,7 @@ "expo": "~51.0.28", "expo-application": "^5.9.1", "expo-auth-session": "^5.5.2", + "expo-av": "~14.0.7", "expo-camera": "^15.0.16", "expo-clipboard": "~6.0.3", "expo-constants": "^16.0.2", @@ -146,4 +147,4 @@ "typescript": "~5.3.3" }, "private": true -} \ No newline at end of file +} diff --git a/apps/mobile/patches/@reown__appkit-siwe-react-native@1.0.0.patch b/apps/mobile/patches/@reown__appkit-siwe-react-native@1.0.0.patch deleted file mode 100644 index 8b1044b7..00000000 Binary files a/apps/mobile/patches/@reown__appkit-siwe-react-native@1.0.0.patch and /dev/null differ diff --git a/apps/mobile/src/app/Router.tsx b/apps/mobile/src/app/Router.tsx index 9668c8d9..5016ffd2 100644 --- a/apps/mobile/src/app/Router.tsx +++ b/apps/mobile/src/app/Router.tsx @@ -15,6 +15,8 @@ import GroupChatGroupRequest from '../modules/Group/memberAction/ViewRequest'; import GroupChat from '../modules/Group/message/GroupMessage'; import AuthSidebar from '../modules/Layout/auth-sidebar'; import Sidebar from '../modules/Layout/sidebar'; +import RightSidebar from '../modules/Layout/RightSideBar'; +import ShortVideosModule from '../modules/ShortVideos'; // import RightSidebar from '../modules/Layout/RightSideBar'; // Components @@ -305,6 +307,8 @@ const MainNavigator: React.FC = () => { + + ); diff --git a/apps/mobile/src/app/Wrapper.tsx b/apps/mobile/src/app/Wrapper.tsx index c4b3b7b9..0665036c 100644 --- a/apps/mobile/src/app/Wrapper.tsx +++ b/apps/mobile/src/app/Wrapper.tsx @@ -22,6 +22,7 @@ import {EVMProvider} from './EVMProvider'; import {WalletModalEVMProvider} from '../context/WalletModalEvmProvider'; import {CashuProvider} from '../providers/CashuProvider'; import {dynamicClient} from './DynamicClient'; +import {SwapModalEVMProvider} from '../context/SwapModalProvider'; const queryClient = new QueryClient({ defaultOptions: {queries: {retry: 2}}, @@ -31,19 +32,21 @@ const ModalProviders = ({children}: {children: React.ReactNode}) => { return ( - - - - - - - {children} - - - - - - + + + + + + + + {children} + + + + + + + ); diff --git a/apps/mobile/src/components/NostrVideo/index.tsx b/apps/mobile/src/components/NostrVideo/index.tsx new file mode 100644 index 00000000..f2f5e813 --- /dev/null +++ b/apps/mobile/src/components/NostrVideo/index.tsx @@ -0,0 +1,80 @@ +import {NostrEvent} from '@nostr-dev-kit/ndk'; +import {ResizeMode, Video} from 'expo-av'; +import React, {useEffect, useState} from 'react'; +import {Pressable, TouchableOpacity, View} from 'react-native'; + +import {BookmarkIcon, LikeIcon, RepostIcon} from '../../assets/icons'; +import {useStyles} from '../../hooks'; +import stylesheet from './styles'; + +const NostrVideo = ({item, shouldPlay}: {shouldPlay: boolean; item: NostrEvent}) => { + const video = React.useRef