Skip to content

Commit

Permalink
Merge pull request #78 from LtbLightning/v31-upgrade
Browse files Browse the repository at this point in the history
V31 upgrade
  • Loading branch information
BitcoinZavior authored Feb 5, 2024
2 parents 933cee7 + 9bb7856 commit 790be7d
Show file tree
Hide file tree
Showing 33 changed files with 326 additions and 183 deletions.
13 changes: 12 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,21 @@
## [0.31.0]

#### APIs Changed:

- `BumpFeeTxBuilder.allowShrinking()` now takes a `Script` as its argument.
- The `Address` constructor now takes a `Network` argument.
- The `Payload::PubkeyHash` and `Payload::ScriptHash` now have string arguments instead of byte arrays.

#### APIs Added:

- The `Address` type now has the `isValidForNetwork()` method.

## [0.30.0]

#### APIs added

- Added `BIP-86` descriptor templates


## [0.29.0]

#### APIs added
Expand Down
9 changes: 8 additions & 1 deletion __tests__/classes/Address.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ describe('Address', () => {
const addressString = 'tb1qccmtnhczmv3a6k4mtq8twm7ltj3e32qsntmamv';

beforeAll(async () => {
address = await new Address().create('address');
address = await new Address().create('address', Network.Testnet);
});
afterEach(() => {
jest.clearAllMocks();
Expand Down Expand Up @@ -69,4 +69,11 @@ describe('Address', () => {
expect(res).toBe(addressString);
expect(mockBdkRnModule.addressAsString).toHaveBeenCalledWith(address.id);
});

it('verify addressIsValidForNetwork()', async () => {
mockBdkRnModule.addressIsValidForNetwork.mockResolvedValueOnce(true);
let res = await address.isValidForNetwork(Network.Testnet);
expect(res).toBe(true);
expect(mockBdkRnModule.addressIsValidForNetwork).toHaveBeenCalledWith(address.id, Network.Testnet);
});
});
7 changes: 3 additions & 4 deletions __tests__/classes/BumpFeeTxBuilder.spec.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { BumpFeeTxBuilder, DatabaseConfig, Descriptor, PartiallySignedTransaction, Wallet } from '../../src';
import { Network } from '../../src/lib/enums';
import { mockWallet } from '../mockData';
import { mockScript, mockWallet } from '../mockData';
import { mockBdkRnModule } from '../setup';

const id = 'instanceId';
Expand All @@ -27,9 +27,8 @@ describe('BumpFeeTxBuilder', () => {
expect(bumpFeeTxBuilder).toBeInstanceOf(BumpFeeTxBuilder);
});
it('should allow shrinking', async () => {
const address = 'address';
await bumpFeeTxBuilder.allowShrinking(address);
expect(mockBdkRnModule.bumpFeeTxBuilderAllowShrinking).toHaveBeenCalledWith(id, address);
await bumpFeeTxBuilder.allowShrinking(mockScript);
expect(mockBdkRnModule.bumpFeeTxBuilderAllowShrinking).toHaveBeenCalledWith(id, mockScript.id);
});
it('should enable rbf', async () => {
await bumpFeeTxBuilder.enableRbf();
Expand Down
1 change: 1 addition & 0 deletions __tests__/setup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ export const mockBdkRnModule = {
addressNetwork: jest.fn(),
addressToQrUri: jest.fn(),
addressAsString: jest.fn(),
addressIsValidForNetwork: jest.fn(),

addRecipient: jest.fn(),
finish: jest.fn(),
Expand Down
6 changes: 6 additions & 0 deletions android/.classpath
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-16/"/>
<classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer"/>
<classpathentry kind="output" path="bin/default"/>
</classpath>
34 changes: 34 additions & 0 deletions android/.project
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>bdk-rn</name>
<comment>Project bdk-rn created by Buildship.</comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.buildship.core.gradleprojectbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.buildship.core.gradleprojectnature</nature>
</natures>
<filteredResources>
<filter>
<id>1706000397923</id>
<name></name>
<type>30</type>
<matcher>
<id>org.eclipse.core.resources.regexFilterMatcher</id>
<arguments>node_modules|\.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
</matcher>
</filter>
</filteredResources>
</projectDescription>
2 changes: 2 additions & 0 deletions android/.settings/org.eclipse.buildship.core.prefs
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
connection.project.dir=../../../android
eclipse.preferences.version=1
4 changes: 4 additions & 0 deletions android/.settings/org.eclipse.jdt.core.prefs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=16
org.eclipse.jdt.core.compiler.compliance=16
org.eclipse.jdt.core.compiler.source=16
2 changes: 1 addition & 1 deletion android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -41,5 +41,5 @@ dependencies {
implementation 'com.facebook.react:react-native:+'

// bitcoindevkit
implementation 'org.bitcoindevkit:bdk-android:0.30.0'
implementation 'org.bitcoindevkit:bdk-android:0.31.0'
}
35 changes: 22 additions & 13 deletions android/src/main/java/io/ltbl/bdkrn/BdkRnModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -411,20 +411,22 @@ class BdkRnModule(reactContext: ReactApplicationContext) :
dbConfigID: String,
result: Promise
) {
Thread {
try {
val id = randomId()
try {
val id = randomId()
val nativeDescriptor = _descriptors[descriptor]!!
val nativeChangeDescriptor = if (changeDescriptor != null) _descriptors[changeDescriptor]!! else null
Thread {
_wallets[id] = Wallet(
_descriptors[descriptor]!!,
if (changeDescriptor != null) _descriptors[changeDescriptor]!! else null,
nativeDescriptor,
nativeChangeDescriptor,
setNetwork(network),
_databaseConfigs[dbConfigID]!!
)
result.resolve(id)
} catch (error: Throwable) {
result.reject("Init wallet error", error.localizedMessage, error)
}
}.start()
}.start()
} catch (error: Throwable) {
result.reject("Init wallet error", error.localizedMessage, error)
}
}

@ReactMethod
Expand Down Expand Up @@ -608,11 +610,11 @@ class BdkRnModule(reactContext: ReactApplicationContext) :

/** Address methods starts*/
@ReactMethod
fun initAddress(address: String, result: Promise) {
fun initAddress(address: String, network: String, result: Promise) {
Thread {
try {
val id = randomId()
_addresses[id] = Address(address)
_addresses[id] = Address(address, setNetwork(network))
result.resolve(id)
} catch (error: Throwable) {
result.reject("Address error", error.localizedMessage, error)
Expand Down Expand Up @@ -675,6 +677,13 @@ class BdkRnModule(reactContext: ReactApplicationContext) :
}.start()
}

@ReactMethod
fun addressIsValidForNetwork(id: String, network: String, result: Promise) {
Thread {
result.resolve(_addresses[id]!!.isValidForNetwork(setNetwork(network)))
}.start()
}

/** Address methods ends*/


Expand Down Expand Up @@ -1150,9 +1159,9 @@ class BdkRnModule(reactContext: ReactApplicationContext) :
}

@ReactMethod
fun bumpFeeTxBuilderAllowShrinking(id: String, address: String, result: Promise) {
fun bumpFeeTxBuilderAllowShrinking(id: String, scriptId: String, result: Promise) {
Thread {
_bumpFeeTxBuilders[id] = _bumpFeeTxBuilders[id]!!.allowShrinking(address)
_bumpFeeTxBuilders[id] = _bumpFeeTxBuilders[id]!!.allowShrinking(_scripts[scriptId]!!)
result.resolve(true)
}.start()
}
Expand Down
11 changes: 10 additions & 1 deletion ios/BdkRnModule.m
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,7 @@ @interface RCT_EXTERN_MODULE(BdkRnModule, NSObject)
/** Address methods */
RCT_EXTERN_METHOD(
initAddress:(nonnull NSString*)address
network: (nonnull NSString*)network
resolve: (RCTPromiseResolveBlock)resolve
reject:(RCTPromiseRejectBlock)reject
)
Expand Down Expand Up @@ -290,6 +291,14 @@ @interface RCT_EXTERN_MODULE(BdkRnModule, NSObject)
reject:(RCTPromiseRejectBlock)reject
)

RCT_EXTERN_METHOD(
addressIsValidForNetwork:(nonnull NSString*)id
network: (nonnull NSString*)network
resolve: (RCTPromiseResolveBlock)resolve
reject:(RCTPromiseRejectBlock)reject
)


/** TxBuilder methods */
RCT_EXTERN_METHOD(createTxBuilder:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)

Expand Down Expand Up @@ -551,7 +560,7 @@ @interface RCT_EXTERN_MODULE(BdkRnModule, NSObject)

RCT_EXTERN_METHOD(
bumpFeeTxBuilderAllowShrinking: (nonnull NSString*)id
address: (nonnull NSString*)address
scriptId: (nonnull NSString*)scriptId
resolve: (RCTPromiseResolveBlock)resolve
reject: (RCTPromiseRejectBlock)reject
)
Expand Down
23 changes: 20 additions & 3 deletions ios/BdkRnModule.swift
Original file line number Diff line number Diff line change
Expand Up @@ -783,13 +783,14 @@ class BdkRnModule: NSObject {
@objc
func initAddress(_
address: String,
network: String,
resolve: @escaping RCTPromiseResolveBlock,
reject: @escaping RCTPromiseRejectBlock
) {
DispatchQueue.global(qos: .userInteractive).async { [self] in
do {
let id = randomId()
_addresses[id] = try Address(address: address)
_addresses[id] = try Address(address: address, network: setNetwork(networkStr: network))
DispatchQueue.main.async {
resolve(id)
}
Expand Down Expand Up @@ -888,6 +889,22 @@ class BdkRnModule: NSObject {
}
}
}


@objc
func addressIsValidForNetwork(_
id: String,
network: String,
resolve: @escaping RCTPromiseResolveBlock,
reject: @escaping RCTPromiseRejectBlock
) {
DispatchQueue.global(qos: .userInteractive).async { [self] in
DispatchQueue.main.async { [self] in
resolve(_addresses[id]!.isValidForNetwork(network: setNetwork(networkStr: network)))
}
}
}


/** Address methods ends*/

Expand Down Expand Up @@ -1583,12 +1600,12 @@ class BdkRnModule: NSObject {
@objc
func bumpFeeTxBuilderAllowShrinking(_
id: String,
address: String,
scriptId: String,
resolve: @escaping RCTPromiseResolveBlock,
reject: @escaping RCTPromiseRejectBlock
) {
DispatchQueue.global(qos: .userInteractive).async { [self] in
_bumpFeeTxBuilders[id] = _bumpFeeTxBuilders[id]!.allowShrinking(address: address)
_bumpFeeTxBuilders[id] = _bumpFeeTxBuilders[id]!.allowShrinking(scriptPubkey: _scripts[scriptId]!)
DispatchQueue.main.async {
resolve(true)
}
Expand Down
Loading

0 comments on commit 790be7d

Please sign in to comment.