add breez secrets config + update versions + working receives

This commit is contained in:
fosse 2024-02-07 14:33:56 -05:00
parent ee2d440465
commit 38bf4a04b9
8 changed files with 81 additions and 27 deletions

View file

@ -152,6 +152,8 @@ jobs:
echo "const walletConnectProjectId = '${{ secrets.WALLET_CONNECT_PROJECT_ID }}';" >> lib/.secrets.g.dart
echo "const moralisApiKey = '${{ secrets.MORALIS_API_KEY }}';" >> lib/.secrets.g.dart
echo "const polygonScanApiKey = '${{ secrets.POLYGON_SCAN_API_KEY }}';" >> cw_evm/lib/.secrets.g.dart
echo "const breezApiKey = '${{ secrets.BREEZ_API_KEY }}';" >> cw_bitcoin/lib/.secrets.g.dart
echo "const breezInviteCode = '${{ secrets.BREEZ_INVITE_CODE }}';" >> cw_bitcoin/lib/.secrets.g.dart
- name: Rename app
run: echo -e "id=com.cakewallet.test\nname=${{ env.BRANCH_NAME }}" > /opt/android/cake_wallet/android/app.properties

View file

@ -1,3 +1,5 @@
import 'dart:io';
import 'package:breez_sdk/breez_sdk.dart';
import 'package:breez_sdk/bridge_generated.dart';
import 'package:cw_bitcoin/bitcoin_mnemonic.dart';
@ -13,6 +15,8 @@ import 'package:cw_core/wallet_info.dart';
import 'package:cw_bitcoin/bitcoin_address_record.dart';
import 'package:cw_bitcoin/electrum_balance.dart';
import 'package:cw_bitcoin/bitcoin_wallet_addresses.dart';
import 'package:path_provider/path_provider.dart';
import 'package:cw_bitcoin/.secrets.g.dart' as secrets;
part 'bitcoin_wallet.g.dart';
@ -49,26 +53,7 @@ abstract class BitcoinWalletBase extends ElectrumWallet with Store {
networkType: networkType);
// initialize breeze:
String inviteCode = "<invite code>";
String apiKey = "<api key>";
NodeConfig breezNodeConfig = NodeConfig.greenlight(
config: GreenlightNodeConfig(
partnerCredentials: null,
inviteCode: inviteCode,
),
);
BreezSDK()
.defaultConfig(
envType: EnvironmentType.Production,
apiKey: apiKey,
nodeConfig: breezNodeConfig,
)
.then((value) {
Config breezConfig = value;
// Customize the config object according to your needs
breezConfig = breezConfig.copyWith(workingDir: "/breez/${walletInfo.name}");
BreezSDK().connect(config: breezConfig, seed: seedBytes);
});
setupBreeze(seedBytes);
autorun((_) {
this.walletAddresses.isEnabledAutoGenerateSubaddress = this.isEnabledAutoGenerateSubaddress;
@ -114,4 +99,55 @@ abstract class BitcoinWalletBase extends ElectrumWallet with Store {
initialRegularAddressIndex: snp.regularAddressIndex,
initialChangeAddressIndex: snp.changeAddressIndex);
}
void printDirectoryTree(Directory directory, {String prefix = ''}) {
try {
final files = directory.listSync();
for (var i = 0; i < files.length; i++) {
final isLast = i == files.length - 1;
if (files[i] is File) {
print(
'${prefix}${isLast ? '└─' : '├─'} ${files[i].path.split(Platform.pathSeparator).last}');
} else if (files[i] is Directory) {
print(
'${prefix}${isLast ? '└─' : '├─'} ${files[i].path.split(Platform.pathSeparator).last}');
printDirectoryTree(files[i] as Directory, prefix: '${prefix}${isLast ? ' ' : ''}');
}
}
} catch (e) {
print('Error: $e');
}
}
Future<void> setupBreeze(Uint8List seedBytes) async {
// Initialize SDK logs listener
final sdk = BreezSDK();
sdk.initialize();
NodeConfig breezNodeConfig = NodeConfig.greenlight(
config: GreenlightNodeConfig(
partnerCredentials: null,
inviteCode: secrets.breezInviteCode,
),
);
Config breezConfig = await sdk.defaultConfig(
envType: EnvironmentType.Production,
apiKey: secrets.breezApiKey,
nodeConfig: breezNodeConfig,
);
printDirectoryTree(Directory((await getApplicationDocumentsDirectory()).path));
// Customize the config object according to your needs
String workingDir = (await getApplicationDocumentsDirectory()).path;
workingDir = "$workingDir/wallets/bitcoin/${walletInfo.name}/breez/";
new Directory(workingDir).createSync(recursive: true);
breezConfig = breezConfig.copyWith(workingDir: workingDir);
print(workingDir);
// await sdk.connect(config: breezConfig, seed: seedBytes);
print(await sdk.isInitialized());
print(await sdk.listLsps());
}
}

View file

@ -46,9 +46,6 @@ class BitcoinWalletService extends WalletService<
final walletInfo = walletInfoSource.values.firstWhereOrNull(
(info) => info.id == WalletBase.idFor(name, getType()))!;
// Initialize SDK logs listener
BreezSDK().initialize();
final wallet = await BitcoinWalletBase.open(
password: password, name: name, walletInfo: walletInfo,
unspentCoinsInfo: unspentCoinsInfoSource);

View file

@ -30,6 +30,7 @@ dependencies:
breez_sdk:
git:
url: https://github.com/breez/breez-sdk-flutter.git
ref: v0.2.14
rxdart: ^0.27.5
unorm_dart: ^0.2.0
cryptography: ^2.0.5

View file

@ -182,7 +182,7 @@ class AddressPage extends BasePage {
ReceiveOnchainRequest req = const ReceiveOnchainRequest();
SwapInfo swapInfo = await BreezSDK().receiveOnchain(req: req);
// Send your funds to the below bitcoin address
// Send your funds to the below bitcoin address
String address = swapInfo.bitcoinAddress;
print(address);
print("Minimum amount allowed to deposit in sats: ${swapInfo.minAllowedDeposit}");

View file

@ -110,6 +110,7 @@ dependencies:
breez_sdk:
git:
url: https://github.com/breez/breez-sdk-flutter.git
ref: v0.2.12
dev_dependencies:
@ -133,7 +134,8 @@ dependency_overrides:
bech32:
git:
url: https://github.com/cake-tech/bech32.git
flutter_rust_bridge: ^1.82.1
flutter_rust_bridge: ^1.82.6
uuid: ^4.1.0
flutter_icons:
image_path: "assets/images/app_logo.png"

View file

@ -5,6 +5,7 @@ import 'utils/utils.dart';
const configPath = 'tool/.secrets-config.json';
const evmChainsConfigPath = 'tool/.evm-secrets-config.json';
const bitcoinConfigPath = 'tool/.bitcoin-secrets-config.json';
Future<void> main(List<String> args) async => generateSecretsConfig(args);
@ -18,6 +19,8 @@ Future<void> generateSecretsConfig(List<String> args) async {
final configFile = File(configPath);
final evmChainsConfigFile = File(evmChainsConfigPath);
final bitcoinConfigFile = File(bitcoinConfigPath);
final secrets = <String, dynamic>{};
secrets.addAll(extraInfo);
@ -56,8 +59,16 @@ Future<void> generateSecretsConfig(List<String> args) async {
secrets[sec.name] = sec.generate();
});
secretsJson = JsonEncoder.withIndent(' ').convert(secrets);
await evmChainsConfigFile.writeAsString(secretsJson);
secrets.clear();
SecretKey.bitcoinSecrets.forEach((sec) {
if (secrets[sec.name] != null) {
return;
}
secrets[sec.name] = sec.generate();
});
secretsJson = JsonEncoder.withIndent(' ').convert(secrets);
await bitcoinConfigFile.writeAsString(secretsJson);
}

View file

@ -44,6 +44,11 @@ class SecretKey {
SecretKey('polygonScanApiKey', () => ''),
];
static final bitcoinSecrets = [
SecretKey('breezApiKey', () => ''),
SecretKey('breezInviteCode', () => ''),
];
final String name;
final String Function() generate;
}