diff --git a/examples/.gitignore b/examples/.gitignore index 40603ec..49091b7 100644 --- a/examples/.gitignore +++ b/examples/.gitignore @@ -44,4 +44,7 @@ app.*.map.json /android/app/release .flutter-plugins-dependencies -.flutter-plugins \ No newline at end of file +.flutter-plugins + + +.env \ No newline at end of file diff --git a/examples/use_cases/.env.sample b/examples/use_cases/.env.sample new file mode 100644 index 0000000..2dcc097 --- /dev/null +++ b/examples/use_cases/.env.sample @@ -0,0 +1,32 @@ +# MAKE A COPY OF THIS AND FILL WITH YOUR CREDENTIALS AND NAME IT .env (Remove .sample Part) + +# ENVIRONMENT | 'STAGING' or 'PROD' or 'DEV' +ENV=env_name + +## CHANNEL WITH ALIAS +BERACHAIN_CHANNEL_PRIVATE_KEY=your_berachain_channel_private_key +LINEA_CHANNEL_PRIVATE_KEY=your_linea_channel_private_key +ARBITRUM_CHANNEL_PRIVATE_KEY=your_arbitrum_channel_private_key +OPTIMISM_CHANNEL_PRIVATE_KEY=your_optimism_channel_private_key +POLYGON_CHANNEL_PRIVATE_KEY=your_polygon_channel_private_key +POLYGON_ZKEVM_CHANNEL_PRIVATE_KEY=your_polygon_zkevm_channel_private_key +CYBER_CONNECT_CHANNEL_PRIVATE_KEY=your_cyber_connect_channel_private_key + +WALLET_PRIVATE_KEY=your_wallet_private_key +WALLET_PRIVATE_KEY_2=your_wallet_private_key_2 +WALLET_RECIPIENT_PK=your_wallet_recipient_pk +NFT_PROFILE_PASSWORD_1=nft_profile_password_1 +NFT_PROFILE_PASSWORD_2=nft_profile_password_2 +NFT_PROFILE_PASSWORD_3=nft_profile_password_3 +NFT_CONTRACT_ADDRESS_1=nft_contract_address_1 +NFT_CHAIN_ID_1=nft_chain_id_1 +NFT_TOKEN_ID_1=nft_token_id_1 +NFT_HOLDER_WALLET_PRIVATE_KEY_1=nft_holder_wallet_private_key_1 +NFT_CONTRACT_ADDRESS_2=nft_contract_address_2 +NFT_CHAIN_ID_2=nft_chain_id_2 +NFT_TOKEN_ID_2=nft_token_id_2 +NFT_HOLDER_WALLET_PRIVATE_KEY_2=nft_holder_wallet_private_key_2 +NFT_CONTRACT_ADDRESS_3=nft_contract_address_3 +NFT_CHAIN_ID_3=nft_chain_id_3 +NFT_TOKEN_ID_3=nft_token_id_3 +NFT_HOLDER_WALLET_PRIVATE_KEY_3=nft_holder_wallet_private_key_3 diff --git a/examples/use_cases/ios/Podfile.lock b/examples/use_cases/ios/Podfile.lock index 7cc1366..57afb9d 100644 --- a/examples/use_cases/ios/Podfile.lock +++ b/examples/use_cases/ios/Podfile.lock @@ -62,4 +62,4 @@ SPEC CHECKSUMS: PODFILE CHECKSUM: f9420bd595da8fbce156b547dcd3368afc5226ff -COCOAPODS: 1.14.2 +COCOAPODS: 1.15.2 diff --git a/examples/use_cases/lib/main.dart b/examples/use_cases/lib/main.dart index cc821ed..57a9b51 100644 --- a/examples/use_cases/lib/main.dart +++ b/examples/use_cases/lib/main.dart @@ -1,8 +1,14 @@ import 'package:flutter/material.dart'; +import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:use_cases/chats/chat.dart'; +import 'pushAPI/notificaton/notification.test.dart'; + void main() async { + await dotenv.load(fileName: ".env"); + runApp(const MainApp()); + runNotificationTest(); log(r''' diff --git a/examples/use_cases/lib/pushAPI/notificaton/notification.test.dart b/examples/use_cases/lib/pushAPI/notificaton/notification.test.dart new file mode 100644 index 0000000..6c782eb --- /dev/null +++ b/examples/use_cases/lib/pushAPI/notificaton/notification.test.dart @@ -0,0 +1,31 @@ +import 'package:flutter_dotenv/flutter_dotenv.dart'; +import 'package:push_restapi_dart/push_restapi_dart.dart'; +import 'package:ethers/signers/wallet.dart' as ether; + +import '../../models/signer.dart'; + +runNotificationTest() async { + log("runNotificationTest() started..."); + final signer1PK = dotenv.get('WALLET_PRIVATE_KEY'); + + final ethersWallet1 = ether.Wallet.fromPrivateKey(signer1PK); + + final signer1 = EthersSigner( + ethersWallet: ethersWallet1, + address: ethersWallet1.address!, + ); + + final userAlice = await PushAPI.initialize( + signer: signer1, + options: PushAPIInitializeOptions(env: ENV.staging), + ); + + log('PushAPI.notification.subscribe'); + final subscribeResponse = await userAlice.notification.subscribe( + channel: + 'eip155:11155111:0xD8634C39BBFd4033c0d3289C4515275102423681' // channel to subscribe + ); + + log(subscribeResponse); + log('PushAPI.notification.subscribe | Response - 200 OK\n\n'); +} diff --git a/examples/use_cases/lib/test_functions/chat/approve_intent.dart b/examples/use_cases/lib/test_functions/chat/approve_intent.dart index fef288e..c9cd4e3 100644 --- a/examples/use_cases/lib/test_functions/chat/approve_intent.dart +++ b/examples/use_cases/lib/test_functions/chat/approve_intent.dart @@ -15,7 +15,6 @@ void testApproveIntent() async { final user = await getUser(address: ethersWallet.address!); if (user == null) { - print('Cannot get user'); return; } @@ -26,11 +25,10 @@ void testApproveIntent() async { wallet: getWallet(signer: signer), ); } - final result = await requests( + await requests( toDecrypt: true, accountAddress: signer.address, pgpPrivateKey: pgpPrivateKey); - print(result); approve( senderAddress: "0xaba32d63052de97Bc3bc749b7241cB4E2479c401", account: signer.address, diff --git a/examples/use_cases/pubspec.yaml b/examples/use_cases/pubspec.yaml index d37cd37..8c3ccc0 100644 --- a/examples/use_cases/pubspec.yaml +++ b/examples/use_cases/pubspec.yaml @@ -21,6 +21,7 @@ dependencies: path: '../../' unique_names_generator: ^1.0.0 logger: ^2.0.2+1 + flutter_dotenv: ^5.1.0 dev_dependencies: flutter_test: @@ -29,3 +30,8 @@ dev_dependencies: flutter: uses-material-design: true + + assets: + - .env + + diff --git a/lib/src/channels/src/subscribeV2.dart b/lib/src/channels/src/subscribeV2.dart index 249e1c5..033c574 100644 --- a/lib/src/channels/src/subscribeV2.dart +++ b/lib/src/channels/src/subscribeV2.dart @@ -32,7 +32,6 @@ Future> subscribeV2(SubscribeOptionsV2Type options) async { if (channelCAIPDetails == null) throw Exception('Invalid Channel CAIP!'); final chainId = int.parse(channelCAIPDetails.networkId); - final userAddress = await getCAIPAddress(address: options.userAddress); final userCAIPDetails = getCAIPDetails(userAddress); diff --git a/lib/src/values/src/config.dart b/lib/src/values/src/config.dart index 06faa59..f7ed3fb 100644 --- a/lib/src/values/src/config.dart +++ b/lib/src/values/src/config.dart @@ -6,15 +6,24 @@ import '../../../push_restapi_dart.dart'; const BLOCKCHAIN_NETWORK = { 'ETH_MAINNET': 'eip155:1', - 'ETH_GOERLI': 'eip155:5', + 'ETH_SEPOLIA': 'eip155:11155111', 'POLYGON_MAINNET': 'eip155:137', - 'POLYGON_MUMBAI': 'eip155:80001', + 'POLYGON_AMOY': 'eip155:80002', 'BSC_MAINNET': 'eip155:56', 'BSC_TESTNET': 'eip155:97', - 'OPTIMISM_TESTNET': 'eip155:420', + 'OPTIMISM_TESTNET': 'eip155:11155420', 'OPTIMISM_MAINNET': 'eip155:10', - 'POLYGON_ZK_EVM_TESTNET': 'eip155:1442', - 'POLYGON_ZK_EVM_MAINNET': 'eip155:1101' + 'POLYGON_ZK_EVM_TESTNET': 'eip155:2442', + 'POLYGON_ZK_EVM_MAINNET': 'eip155:1101', + 'ARBITRUM_TESTNET': 'eip155:421614', + 'ARBITRUMONE_MAINNET': 'eip155:42161', + 'FUSE_TESTNET': 'eip155:123', + 'FUSE_MAINNET': 'eip155:122', + 'BERACHAIN_TESTNET': 'eip155:80085', + 'LINEA_MAINNET': 'eip155:59144', + 'LINEA_TESTNET': 'eip155:59141', + 'CYBER_CONNECT_TESTNET': 'eip155:111557560', + 'CYBER_CONNECT_MAINNET': 'eip155:7560' }; // typedef ALIAS_CHAIN = 'POLYGON' | 'BSC' | 'OPTIMISM' | 'POLYGONZKEVM'; @@ -60,7 +69,6 @@ final CONFIG = { ENV.prod: { BLOCKCHAIN_NETWORK['ETH_MAINNET']: ConfigType( API_BASE_URL: Api.getAPIBaseUrls(ENV.prod), - // API_BASE_URL: Api.getAPIBaseUrls(ENV.prod), EPNS_COMMUNICATOR_CONTRACT: '0xb3971BCef2D791bc4027BbfedFb47319A4AAaaAa', ), BLOCKCHAIN_NETWORK['POLYGON_MAINNET']: ConfigType( @@ -79,13 +87,29 @@ final CONFIG = { API_BASE_URL: Api.getAPIBaseUrls(ENV.prod), EPNS_COMMUNICATOR_CONTRACT: '0xb3971BCef2D791bc4027BbfedFb47319A4AAaaAa', ), + BLOCKCHAIN_NETWORK['ARBITRUMONE_MAINNET']: ConfigType( + API_BASE_URL: Api.getAPIBaseUrls(ENV.prod), + EPNS_COMMUNICATOR_CONTRACT: '0xb3971BCef2D791bc4027BbfedFb47319A4AAaaAa', + ), + BLOCKCHAIN_NETWORK['FUSE_MAINNET']: ConfigType( + API_BASE_URL: Api.getAPIBaseUrls(ENV.prod), + EPNS_COMMUNICATOR_CONTRACT: '0xb3971BCef2D791bc4027BbfedFb47319A4AAaaAa', + ), + BLOCKCHAIN_NETWORK['CYBER_CONNECT_MAINNET']: ConfigType( + API_BASE_URL: Api.getAPIBaseUrls(ENV.prod), + EPNS_COMMUNICATOR_CONTRACT: '0xb3971BCef2D791bc4027BbfedFb47319A4AAaaAa', + ), + BLOCKCHAIN_NETWORK['LINEA_MAINNET']: ConfigType( + API_BASE_URL: Api.getAPIBaseUrls(ENV.prod), + EPNS_COMMUNICATOR_CONTRACT: '0x0d8e75CB5d8873c43c5d9Add71Fd71a09F7Ef890', + ), }, ENV.staging: { - BLOCKCHAIN_NETWORK['ETH_GOERLI']: ConfigType( + BLOCKCHAIN_NETWORK['ETH_SEPOLIA']: ConfigType( API_BASE_URL: Api.getAPIBaseUrls(ENV.staging), - EPNS_COMMUNICATOR_CONTRACT: '0xb3971BCef2D791bc4027BbfedFb47319A4AAaaAa', + EPNS_COMMUNICATOR_CONTRACT: '0x0c34d54a09cfe75bccd878a469206ae77e0fe6e7', ), - BLOCKCHAIN_NETWORK['POLYGON_MUMBAI']: ConfigType( + BLOCKCHAIN_NETWORK['POLYGON_AMOY']: ConfigType( API_BASE_URL: Api.getAPIBaseUrls(ENV.staging), EPNS_COMMUNICATOR_CONTRACT: '0xb3971BCef2D791bc4027BbfedFb47319A4AAaaAa', ), @@ -95,21 +119,41 @@ final CONFIG = { ), BLOCKCHAIN_NETWORK['OPTIMISM_TESTNET']: ConfigType( API_BASE_URL: Api.getAPIBaseUrls(ENV.staging), - EPNS_COMMUNICATOR_CONTRACT: '0xb3971BCef2D791bc4027BbfedFb47319A4AAaaAa', + EPNS_COMMUNICATOR_CONTRACT: '0x9Dc25996ba72A2FD7E64e7a674232a683f406F1A', ), BLOCKCHAIN_NETWORK['POLYGON_ZK_EVM_TESTNET']: ConfigType( + API_BASE_URL: Api.getAPIBaseUrls(ENV.staging), + EPNS_COMMUNICATOR_CONTRACT: '0x6e489b7af21ceb969f49a90e481274966ce9d74d', + ), + BLOCKCHAIN_NETWORK['ARBITRUM_TESTNET']: ConfigType( + API_BASE_URL: Api.getAPIBaseUrls(ENV.staging), + EPNS_COMMUNICATOR_CONTRACT: '0x9Dc25996ba72A2FD7E64e7a674232a683f406F1A', + ), + BLOCKCHAIN_NETWORK['FUSE_TESTNET']: ConfigType( API_BASE_URL: Api.getAPIBaseUrls(ENV.staging), EPNS_COMMUNICATOR_CONTRACT: '0xb3971BCef2D791bc4027BbfedFb47319A4AAaaAa', ), + BLOCKCHAIN_NETWORK['BERACHAIN_TESTNET']: ConfigType( + API_BASE_URL: Api.getAPIBaseUrls(ENV.staging), + EPNS_COMMUNICATOR_CONTRACT: '0x7b9C405e261ba671f008c20D0321f62d08C140EC', + ), + BLOCKCHAIN_NETWORK['LINEA_TESTNET']: ConfigType( + API_BASE_URL: Api.getAPIBaseUrls(ENV.staging), + EPNS_COMMUNICATOR_CONTRACT: '0x9cb3bd7550B5c92baA056Fc0F08132f49508145F', + ), + BLOCKCHAIN_NETWORK['CYBER_CONNECT_TESTNET']: ConfigType( + API_BASE_URL: Api.getAPIBaseUrls(ENV.staging), + EPNS_COMMUNICATOR_CONTRACT: '0x6e489B7af21cEb969f49A90E481274966ce9D74d', + ), }, ENV.dev: { - BLOCKCHAIN_NETWORK['ETH_GOERLI']: ConfigType( + BLOCKCHAIN_NETWORK['ETH_SEPOLIA']: ConfigType( API_BASE_URL: Api.getAPIBaseUrls(ENV.dev), - EPNS_COMMUNICATOR_CONTRACT: '0xc064F30bac07e84500c97A04D21a9d1bfFC72Ec0', + EPNS_COMMUNICATOR_CONTRACT: '0x9dDCD7ed7151afab43044E4D694FA064742C428c', ), - BLOCKCHAIN_NETWORK['POLYGON_MUMBAI']: ConfigType( + BLOCKCHAIN_NETWORK['POLYGON_AMOY']: ConfigType( API_BASE_URL: Api.getAPIBaseUrls(ENV.dev), - EPNS_COMMUNICATOR_CONTRACT: '0xAf55BE8e6b0d6107891bA76eADeEa032ef8A4504', + EPNS_COMMUNICATOR_CONTRACT: '0x9cb3bd7550b5c92baa056fc0f08132f49508145f', ), BLOCKCHAIN_NETWORK['BSC_TESTNET']: ConfigType( API_BASE_URL: Api.getAPIBaseUrls(ENV.dev), @@ -117,21 +161,41 @@ final CONFIG = { ), BLOCKCHAIN_NETWORK['OPTIMISM_TESTNET']: ConfigType( API_BASE_URL: Api.getAPIBaseUrls(ENV.dev), - EPNS_COMMUNICATOR_CONTRACT: '0x4305D572F2bf38Fc2AE8D0172055b1EFd18F57a6', + EPNS_COMMUNICATOR_CONTRACT: '0x754787358fac861ef904c92d54f7adb659779317', ), BLOCKCHAIN_NETWORK['POLYGON_ZK_EVM_TESTNET']: ConfigType( API_BASE_URL: Api.getAPIBaseUrls(ENV.dev), - EPNS_COMMUNICATOR_CONTRACT: '0x630b152e4185c63D7177c656b56b26f878C61572', + EPNS_COMMUNICATOR_CONTRACT: '0x9cb3bd7550b5c92baa056fc0f08132f49508145f', + ), + BLOCKCHAIN_NETWORK['ARBITRUM_TESTNET']: ConfigType( + API_BASE_URL: Api.getAPIBaseUrls(ENV.dev), + EPNS_COMMUNICATOR_CONTRACT: '0x754787358fac861ef904c92d54f7adb659779317', + ), + BLOCKCHAIN_NETWORK['FUSE_TESTNET']: ConfigType( + API_BASE_URL: Api.getAPIBaseUrls(ENV.dev), + EPNS_COMMUNICATOR_CONTRACT: '0x7eBb54D86CF928115965DB596a3E600404dD8039', + ), + BLOCKCHAIN_NETWORK['BERACHAIN_TESTNET']: ConfigType( + API_BASE_URL: Api.getAPIBaseUrls(ENV.dev), + EPNS_COMMUNICATOR_CONTRACT: '0xA1DF3E68D085aa6918bcc2506b24e499830Db0eB', + ), + BLOCKCHAIN_NETWORK['LINEA_TESTNET']: ConfigType( + API_BASE_URL: Api.getAPIBaseUrls(ENV.dev), + EPNS_COMMUNICATOR_CONTRACT: '0x9cb3bd7550B5c92baA056Fc0F08132f49508145F', + ), + BLOCKCHAIN_NETWORK['CYBER_CONNECT_TESTNET']: ConfigType( + API_BASE_URL: Api.getAPIBaseUrls(ENV.dev), + EPNS_COMMUNICATOR_CONTRACT: '0x9cb3bd7550B5c92baA056Fc0F08132f49508145F', ), }, ENV.local: { - BLOCKCHAIN_NETWORK['ETH_GOERLI']: ConfigType( + BLOCKCHAIN_NETWORK['ETH_SEPOLIA']: ConfigType( API_BASE_URL: Api.getAPIBaseUrls(ENV.local), - EPNS_COMMUNICATOR_CONTRACT: '0xc064F30bac07e84500c97A04D21a9d1bfFC72Ec0', + EPNS_COMMUNICATOR_CONTRACT: '0x9dDCD7ed7151afab43044E4D694FA064742C428c', ), - BLOCKCHAIN_NETWORK['POLYGON_MUMBAI']: ConfigType( + BLOCKCHAIN_NETWORK['POLYGON_AMOY']: ConfigType( API_BASE_URL: Api.getAPIBaseUrls(ENV.local), - EPNS_COMMUNICATOR_CONTRACT: '0xAf55BE8e6b0d6107891bA76eADeEa032ef8A4504', + EPNS_COMMUNICATOR_CONTRACT: '0x9cb3bd7550b5c92baa056fc0f08132f49508145f', ), BLOCKCHAIN_NETWORK['BSC_TESTNET']: ConfigType( API_BASE_URL: Api.getAPIBaseUrls(ENV.local), @@ -139,11 +203,31 @@ final CONFIG = { ), BLOCKCHAIN_NETWORK['OPTIMISM_TESTNET']: ConfigType( API_BASE_URL: Api.getAPIBaseUrls(ENV.local), - EPNS_COMMUNICATOR_CONTRACT: '0x4305D572F2bf38Fc2AE8D0172055b1EFd18F57a6', + EPNS_COMMUNICATOR_CONTRACT: '0x754787358fac861ef904c92d54f7adb659779317', ), BLOCKCHAIN_NETWORK['POLYGON_ZK_EVM_TESTNET']: ConfigType( API_BASE_URL: Api.getAPIBaseUrls(ENV.local), - EPNS_COMMUNICATOR_CONTRACT: '0x630b152e4185c63D7177c656b56b26f878C61572', + EPNS_COMMUNICATOR_CONTRACT: '0x9cb3bd7550b5c92baa056fc0f08132f49508145f', + ), + BLOCKCHAIN_NETWORK['ARBITRUM_TESTNET']: ConfigType( + API_BASE_URL: Api.getAPIBaseUrls(ENV.local), + EPNS_COMMUNICATOR_CONTRACT: '0x754787358fac861ef904c92d54f7adb659779317', + ), + BLOCKCHAIN_NETWORK['FUSE_TESTNET']: ConfigType( + API_BASE_URL: Api.getAPIBaseUrls(ENV.local), + EPNS_COMMUNICATOR_CONTRACT: '0x7eBb54D86CF928115965DB596a3E600404dD8039', + ), + BLOCKCHAIN_NETWORK['BERACHAIN_TESTNET']: ConfigType( + API_BASE_URL: Api.getAPIBaseUrls(ENV.local), + EPNS_COMMUNICATOR_CONTRACT: '0xA1DF3E68D085aa6918bcc2506b24e499830Db0eB', + ), + BLOCKCHAIN_NETWORK['LINEA_TESTNET']: ConfigType( + API_BASE_URL: Api.getAPIBaseUrls(ENV.local), + EPNS_COMMUNICATOR_CONTRACT: '0x9cb3bd7550B5c92baA056Fc0F08132f49508145F', + ), + BLOCKCHAIN_NETWORK['CYBER_CONNECT_TESTNET']: ConfigType( + API_BASE_URL: Api.getAPIBaseUrls(ENV.local), + EPNS_COMMUNICATOR_CONTRACT: '0x9cb3bd7550B5c92baA056Fc0F08132f49508145F', ), }, };