@synonymdev/react-native-pubky 0.11.2 → 0.11.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -31,6 +31,10 @@ npm install @synonymdev/react-native-pubky
31
31
  - [x] [create_recovery_file](#createRecoveryFile): Create a recovery file.
32
32
  - [x] [decrypt_recovery_file](#decryptRecoveryFile): Decrypt a recovery file.
33
33
  - [x] [getHomeserver](#getHomeserver): Get homeserver URL from a public key.
34
+ - [x] [startAuthFlow](#startAuthFlow): Start a Ring authentication flow with requested capabilities.
35
+ - [x] [awaitAuthApproval](#awaitAuthApproval): Await approval of a pending Ring auth flow.
36
+ - [x] [putWithSession](#putWithSession): Upload content to a path using session-based authentication.
37
+ - [x] [deleteWithSession](#deleteWithSession): Delete content at a path using session-based authentication.
34
38
  ## Usage
35
39
  ### <a name="auth"></a>Auth
36
40
  ```js
@@ -342,6 +346,65 @@ if (decryptRecoveryFileRes.isErr()) {
342
346
  console.log(decryptRecoveryFileRes.value);
343
347
  ```
344
348
 
349
+ ### <a name="startAuthFlow"></a>startAuthFlow
350
+ Start a Ring authentication flow with requested capabilities. Returns a URL to present to the user for approval.
351
+ ```js
352
+ import { startAuthFlow } from '@synonymdev/react-native-pubky';
353
+
354
+ const startRes = await startAuthFlow('/pub/att.app/:rw');
355
+ if (startRes.isErr()) {
356
+ console.log(startRes.error.message);
357
+ return;
358
+ }
359
+ console.log(startRes.value); // Auth URL to present to user
360
+ ```
361
+
362
+ ### <a name="awaitAuthApproval"></a>awaitAuthApproval
363
+ Await approval of a pending Ring auth flow. Returns session info upon approval.
364
+ ```js
365
+ import { awaitAuthApproval } from '@synonymdev/react-native-pubky';
366
+
367
+ const approvalRes = await awaitAuthApproval();
368
+ if (approvalRes.isErr()) {
369
+ console.log(approvalRes.error.message);
370
+ return;
371
+ }
372
+ console.log(approvalRes.value); // { pubky, capabilities, session_secret }
373
+ ```
374
+
375
+ ### <a name="putWithSession"></a>putWithSession
376
+ Upload content to a path using session-based authentication (instead of a secret key).
377
+ ```js
378
+ import { putWithSession } from '@synonymdev/react-native-pubky';
379
+
380
+ const putRes = await putWithSession(
381
+ 'pubky://z4e8s17cou9qmuwen8p1556jzhf1wktmzo6ijsfnri9c4hnrdfty/pub/app/profile.json', // URL
382
+ JSON.stringify({ name: 'Alice' }), // Content (string)
383
+ 'session_secret_from_auth_flow' // Session Secret
384
+ );
385
+ if (putRes.isErr()) {
386
+ console.log(putRes.error.message);
387
+ return;
388
+ }
389
+ console.log(putRes.value);
390
+ ```
391
+
392
+ ### <a name="deleteWithSession"></a>deleteWithSession
393
+ Delete content at a path using session-based authentication (instead of a secret key).
394
+ ```js
395
+ import { deleteWithSession } from '@synonymdev/react-native-pubky';
396
+
397
+ const deleteRes = await deleteWithSession(
398
+ 'pubky://z4e8s17cou9qmuwen8p1556jzhf1wktmzo6ijsfnri9c4hnrdfty/pub/app/profile.json', // URL
399
+ 'session_secret_from_auth_flow' // Session Secret
400
+ );
401
+ if (deleteRes.isErr()) {
402
+ console.log(deleteRes.error.message);
403
+ return;
404
+ }
405
+ console.log(deleteRes.value);
406
+ ```
407
+
345
408
  ## Local Installation
346
409
 
347
410
  1. Clone & npm install:
@@ -98,7 +98,7 @@ dependencies {
98
98
  implementation "com.facebook.react:react-native:+"
99
99
  implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
100
100
  // Uniffi
101
- implementation("net.java.dev.jna:jna:5.16.0@aar")
101
+ implementation("net.java.dev.jna:jna:5.18.1@aar")
102
102
  implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")
103
103
  }
104
104
 
@@ -528,6 +528,82 @@ class PubkyModule(reactContext: ReactApplicationContext) :
528
528
  }
529
529
  }
530
530
 
531
+ @ReactMethod
532
+ fun startAuthFlow(capabilities: String, promise: Promise) {
533
+ CoroutineScope(Dispatchers.IO).launch {
534
+ try {
535
+ val result = startAuthFlow(capabilities)
536
+ val array = Arguments.createArray().apply {
537
+ result.forEach { pushString(it) }
538
+ }
539
+ withContext(Dispatchers.Main) {
540
+ promise.resolve(array)
541
+ }
542
+ } catch (e: Exception) {
543
+ withContext(Dispatchers.Main) {
544
+ promise.reject("Error", e.message)
545
+ }
546
+ }
547
+ }
548
+ }
549
+
550
+ @ReactMethod
551
+ fun awaitAuthApproval(promise: Promise) {
552
+ CoroutineScope(Dispatchers.IO).launch {
553
+ try {
554
+ val result = awaitAuthApproval()
555
+ val array = Arguments.createArray().apply {
556
+ result.forEach { pushString(it) }
557
+ }
558
+ withContext(Dispatchers.Main) {
559
+ promise.resolve(array)
560
+ }
561
+ } catch (e: Exception) {
562
+ withContext(Dispatchers.Main) {
563
+ promise.reject("Error", e.message)
564
+ }
565
+ }
566
+ }
567
+ }
568
+
569
+ @ReactMethod
570
+ fun putWithSession(url: String, content: String, sessionSecret: String, promise: Promise) {
571
+ CoroutineScope(Dispatchers.IO).launch {
572
+ try {
573
+ val result = putWithSession(url, content, sessionSecret)
574
+ val array = Arguments.createArray().apply {
575
+ result.forEach { pushString(it) }
576
+ }
577
+ withContext(Dispatchers.Main) {
578
+ promise.resolve(array)
579
+ }
580
+ } catch (e: Exception) {
581
+ withContext(Dispatchers.Main) {
582
+ promise.reject("Error", e.message)
583
+ }
584
+ }
585
+ }
586
+ }
587
+
588
+ @ReactMethod
589
+ fun deleteWithSession(url: String, sessionSecret: String, promise: Promise) {
590
+ CoroutineScope(Dispatchers.IO).launch {
591
+ try {
592
+ val result = deleteWithSession(url, sessionSecret)
593
+ val array = Arguments.createArray().apply {
594
+ result.forEach { pushString(it) }
595
+ }
596
+ withContext(Dispatchers.Main) {
597
+ promise.resolve(array)
598
+ }
599
+ } catch (e: Exception) {
600
+ withContext(Dispatchers.Main) {
601
+ promise.reject("Error", e.message)
602
+ }
603
+ }
604
+ }
605
+ }
606
+
531
607
  companion object {
532
608
  const val NAME = "Pubky"
533
609
  }
@@ -392,12 +392,16 @@ internal interface _UniFFILib : Library {
392
392
  ): Unit
393
393
  fun uniffi_pubkycore_fn_func_auth(`url`: RustBuffer.ByValue,`secretKey`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus,
394
394
  ): RustBuffer.ByValue
395
+ fun uniffi_pubkycore_fn_func_await_auth_approval(_uniffi_out_err: RustCallStatus,
396
+ ): RustBuffer.ByValue
395
397
  fun uniffi_pubkycore_fn_func_create_recovery_file(`secretKey`: RustBuffer.ByValue,`passphrase`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus,
396
398
  ): RustBuffer.ByValue
397
399
  fun uniffi_pubkycore_fn_func_decrypt_recovery_file(`recoveryFile`: RustBuffer.ByValue,`passphrase`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus,
398
400
  ): RustBuffer.ByValue
399
401
  fun uniffi_pubkycore_fn_func_delete_file(`url`: RustBuffer.ByValue,`secretKey`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus,
400
402
  ): RustBuffer.ByValue
403
+ fun uniffi_pubkycore_fn_func_delete_with_session(`url`: RustBuffer.ByValue,`sessionSecret`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus,
404
+ ): RustBuffer.ByValue
401
405
  fun uniffi_pubkycore_fn_func_generate_mnemonic_phrase(_uniffi_out_err: RustCallStatus,
402
406
  ): RustBuffer.ByValue
403
407
  fun uniffi_pubkycore_fn_func_generate_mnemonic_phrase_and_keypair(_uniffi_out_err: RustCallStatus,
@@ -424,6 +428,8 @@ internal interface _UniFFILib : Library {
424
428
  ): RustBuffer.ByValue
425
429
  fun uniffi_pubkycore_fn_func_put(`url`: RustBuffer.ByValue,`content`: RustBuffer.ByValue,`secretKey`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus,
426
430
  ): RustBuffer.ByValue
431
+ fun uniffi_pubkycore_fn_func_put_with_session(`url`: RustBuffer.ByValue,`content`: RustBuffer.ByValue,`sessionSecret`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus,
432
+ ): RustBuffer.ByValue
427
433
  fun uniffi_pubkycore_fn_func_remove_event_listener(_uniffi_out_err: RustCallStatus,
428
434
  ): Unit
429
435
  fun uniffi_pubkycore_fn_func_republish_homeserver(`secretKey`: RustBuffer.ByValue,`homeserver`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus,
@@ -442,6 +448,8 @@ internal interface _UniFFILib : Library {
442
448
  ): RustBuffer.ByValue
443
449
  fun uniffi_pubkycore_fn_func_sign_up(`secretKey`: RustBuffer.ByValue,`homeserver`: RustBuffer.ByValue,`signupToken`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus,
444
450
  ): RustBuffer.ByValue
451
+ fun uniffi_pubkycore_fn_func_start_auth_flow(`capabilitiesStr`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus,
452
+ ): RustBuffer.ByValue
445
453
  fun uniffi_pubkycore_fn_func_switch_network(`useTestnet`: Byte,_uniffi_out_err: RustCallStatus,
446
454
  ): RustBuffer.ByValue
447
455
  fun uniffi_pubkycore_fn_func_validate_mnemonic_phrase(`mnemonicPhrase`: RustBuffer.ByValue,_uniffi_out_err: RustCallStatus,
@@ -562,12 +570,16 @@ internal interface _UniFFILib : Library {
562
570
  ): Unit
563
571
  fun uniffi_pubkycore_checksum_func_auth(
564
572
  ): Short
573
+ fun uniffi_pubkycore_checksum_func_await_auth_approval(
574
+ ): Short
565
575
  fun uniffi_pubkycore_checksum_func_create_recovery_file(
566
576
  ): Short
567
577
  fun uniffi_pubkycore_checksum_func_decrypt_recovery_file(
568
578
  ): Short
569
579
  fun uniffi_pubkycore_checksum_func_delete_file(
570
580
  ): Short
581
+ fun uniffi_pubkycore_checksum_func_delete_with_session(
582
+ ): Short
571
583
  fun uniffi_pubkycore_checksum_func_generate_mnemonic_phrase(
572
584
  ): Short
573
585
  fun uniffi_pubkycore_checksum_func_generate_mnemonic_phrase_and_keypair(
@@ -594,6 +606,8 @@ internal interface _UniFFILib : Library {
594
606
  ): Short
595
607
  fun uniffi_pubkycore_checksum_func_put(
596
608
  ): Short
609
+ fun uniffi_pubkycore_checksum_func_put_with_session(
610
+ ): Short
597
611
  fun uniffi_pubkycore_checksum_func_remove_event_listener(
598
612
  ): Short
599
613
  fun uniffi_pubkycore_checksum_func_republish_homeserver(
@@ -612,6 +626,8 @@ internal interface _UniFFILib : Library {
612
626
  ): Short
613
627
  fun uniffi_pubkycore_checksum_func_sign_up(
614
628
  ): Short
629
+ fun uniffi_pubkycore_checksum_func_start_auth_flow(
630
+ ): Short
615
631
  fun uniffi_pubkycore_checksum_func_switch_network(
616
632
  ): Short
617
633
  fun uniffi_pubkycore_checksum_func_validate_mnemonic_phrase(
@@ -638,6 +654,9 @@ private fun uniffiCheckApiChecksums(lib: _UniFFILib) {
638
654
  if (lib.uniffi_pubkycore_checksum_func_auth() != 51826.toShort()) {
639
655
  throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
640
656
  }
657
+ if (lib.uniffi_pubkycore_checksum_func_await_auth_approval() != 56488.toShort()) {
658
+ throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
659
+ }
641
660
  if (lib.uniffi_pubkycore_checksum_func_create_recovery_file() != 48846.toShort()) {
642
661
  throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
643
662
  }
@@ -647,6 +666,9 @@ private fun uniffiCheckApiChecksums(lib: _UniFFILib) {
647
666
  if (lib.uniffi_pubkycore_checksum_func_delete_file() != 47931.toShort()) {
648
667
  throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
649
668
  }
669
+ if (lib.uniffi_pubkycore_checksum_func_delete_with_session() != 26332.toShort()) {
670
+ throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
671
+ }
650
672
  if (lib.uniffi_pubkycore_checksum_func_generate_mnemonic_phrase() != 2358.toShort()) {
651
673
  throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
652
674
  }
@@ -686,6 +708,9 @@ private fun uniffiCheckApiChecksums(lib: _UniFFILib) {
686
708
  if (lib.uniffi_pubkycore_checksum_func_put() != 64514.toShort()) {
687
709
  throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
688
710
  }
711
+ if (lib.uniffi_pubkycore_checksum_func_put_with_session() != 17390.toShort()) {
712
+ throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
713
+ }
689
714
  if (lib.uniffi_pubkycore_checksum_func_remove_event_listener() != 23534.toShort()) {
690
715
  throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
691
716
  }
@@ -713,6 +738,9 @@ private fun uniffiCheckApiChecksums(lib: _UniFFILib) {
713
738
  if (lib.uniffi_pubkycore_checksum_func_sign_up() != 48789.toShort()) {
714
739
  throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
715
740
  }
741
+ if (lib.uniffi_pubkycore_checksum_func_start_auth_flow() != 25681.toShort()) {
742
+ throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
743
+ }
716
744
  if (lib.uniffi_pubkycore_checksum_func_switch_network() != 64215.toShort()) {
717
745
  throw RuntimeException("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
718
746
  }
@@ -1243,6 +1271,14 @@ fun `auth`(`url`: String, `secretKey`: String): List<String> {
1243
1271
  }
1244
1272
 
1245
1273
 
1274
+ fun `awaitAuthApproval`(): List<String> {
1275
+ return FfiConverterSequenceString.lift(
1276
+ rustCall() { _status ->
1277
+ _UniFFILib.INSTANCE.uniffi_pubkycore_fn_func_await_auth_approval(_status)
1278
+ })
1279
+ }
1280
+
1281
+
1246
1282
  fun `createRecoveryFile`(`secretKey`: String, `passphrase`: String): List<String> {
1247
1283
  return FfiConverterSequenceString.lift(
1248
1284
  rustCall() { _status ->
@@ -1267,6 +1303,14 @@ fun `deleteFile`(`url`: String, `secretKey`: String): List<String> {
1267
1303
  }
1268
1304
 
1269
1305
 
1306
+ fun `deleteWithSession`(`url`: String, `sessionSecret`: String): List<String> {
1307
+ return FfiConverterSequenceString.lift(
1308
+ rustCall() { _status ->
1309
+ _UniFFILib.INSTANCE.uniffi_pubkycore_fn_func_delete_with_session(FfiConverterString.lower(`url`),FfiConverterString.lower(`sessionSecret`),_status)
1310
+ })
1311
+ }
1312
+
1313
+
1270
1314
  fun `generateMnemonicPhrase`(): List<String> {
1271
1315
  return FfiConverterSequenceString.lift(
1272
1316
  rustCall() { _status ->
@@ -1371,6 +1415,14 @@ fun `put`(`url`: String, `content`: String, `secretKey`: String): List<String> {
1371
1415
  }
1372
1416
 
1373
1417
 
1418
+ fun `putWithSession`(`url`: String, `content`: String, `sessionSecret`: String): List<String> {
1419
+ return FfiConverterSequenceString.lift(
1420
+ rustCall() { _status ->
1421
+ _UniFFILib.INSTANCE.uniffi_pubkycore_fn_func_put_with_session(FfiConverterString.lower(`url`),FfiConverterString.lower(`content`),FfiConverterString.lower(`sessionSecret`),_status)
1422
+ })
1423
+ }
1424
+
1425
+
1374
1426
  fun `removeEventListener`() =
1375
1427
 
1376
1428
  rustCall() { _status ->
@@ -1443,6 +1495,14 @@ fun `signUp`(`secretKey`: String, `homeserver`: String, `signupToken`: String?):
1443
1495
  }
1444
1496
 
1445
1497
 
1498
+ fun `startAuthFlow`(`capabilitiesStr`: String): List<String> {
1499
+ return FfiConverterSequenceString.lift(
1500
+ rustCall() { _status ->
1501
+ _UniFFILib.INSTANCE.uniffi_pubkycore_fn_func_start_auth_flow(FfiConverterString.lower(`capabilitiesStr`),_status)
1502
+ })
1503
+ }
1504
+
1505
+
1446
1506
  fun `switchNetwork`(`useTestnet`: Boolean): List<String> {
1447
1507
  return FfiConverterSequenceString.lift(
1448
1508
  rustCall() { _status ->
@@ -10,7 +10,7 @@
10
10
  <key>HeadersPath</key>
11
11
  <string>Headers</string>
12
12
  <key>LibraryIdentifier</key>
13
- <string>ios-arm64</string>
13
+ <string>ios-arm64-simulator</string>
14
14
  <key>LibraryPath</key>
15
15
  <string>libpubkycore.a</string>
16
16
  <key>SupportedArchitectures</key>
@@ -19,6 +19,8 @@
19
19
  </array>
20
20
  <key>SupportedPlatform</key>
21
21
  <string>ios</string>
22
+ <key>SupportedPlatformVariant</key>
23
+ <string>simulator</string>
22
24
  </dict>
23
25
  <dict>
24
26
  <key>BinaryPath</key>
@@ -26,7 +28,7 @@
26
28
  <key>HeadersPath</key>
27
29
  <string>Headers</string>
28
30
  <key>LibraryIdentifier</key>
29
- <string>ios-arm64-simulator</string>
31
+ <string>ios-arm64</string>
30
32
  <key>LibraryPath</key>
31
33
  <string>libpubkycore.a</string>
32
34
  <key>SupportedArchitectures</key>
@@ -35,8 +37,6 @@
35
37
  </array>
36
38
  <key>SupportedPlatform</key>
37
39
  <string>ios</string>
38
- <key>SupportedPlatformVariant</key>
39
- <string>simulator</string>
40
40
  </dict>
41
41
  </array>
42
42
  <key>CFBundlePackageType</key>
@@ -68,6 +68,9 @@ void uniffi_pubkycore_fn_free_eventnotifier(void*_Nonnull ptr, RustCallStatus *_
68
68
  void uniffi_pubkycore_fn_init_callback_eventlistener(ForeignCallback _Nonnull callback_stub, RustCallStatus *_Nonnull out_status
69
69
  );
70
70
  RustBuffer uniffi_pubkycore_fn_func_auth(RustBuffer url, RustBuffer secret_key, RustCallStatus *_Nonnull out_status
71
+ );
72
+ RustBuffer uniffi_pubkycore_fn_func_await_auth_approval(RustCallStatus *_Nonnull out_status
73
+
71
74
  );
72
75
  RustBuffer uniffi_pubkycore_fn_func_create_recovery_file(RustBuffer secret_key, RustBuffer passphrase, RustCallStatus *_Nonnull out_status
73
76
  );
@@ -75,6 +78,8 @@ RustBuffer uniffi_pubkycore_fn_func_decrypt_recovery_file(RustBuffer recovery_fi
75
78
  );
76
79
  RustBuffer uniffi_pubkycore_fn_func_delete_file(RustBuffer url, RustBuffer secret_key, RustCallStatus *_Nonnull out_status
77
80
  );
81
+ RustBuffer uniffi_pubkycore_fn_func_delete_with_session(RustBuffer url, RustBuffer session_secret, RustCallStatus *_Nonnull out_status
82
+ );
78
83
  RustBuffer uniffi_pubkycore_fn_func_generate_mnemonic_phrase(RustCallStatus *_Nonnull out_status
79
84
 
80
85
  );
@@ -104,6 +109,8 @@ RustBuffer uniffi_pubkycore_fn_func_publish_https(RustBuffer record_name, RustBu
104
109
  );
105
110
  RustBuffer uniffi_pubkycore_fn_func_put(RustBuffer url, RustBuffer content, RustBuffer secret_key, RustCallStatus *_Nonnull out_status
106
111
  );
112
+ RustBuffer uniffi_pubkycore_fn_func_put_with_session(RustBuffer url, RustBuffer content, RustBuffer session_secret, RustCallStatus *_Nonnull out_status
113
+ );
107
114
  void uniffi_pubkycore_fn_func_remove_event_listener(RustCallStatus *_Nonnull out_status
108
115
 
109
116
  );
@@ -123,6 +130,8 @@ RustBuffer uniffi_pubkycore_fn_func_sign_out(RustBuffer session_secret, RustCall
123
130
  );
124
131
  RustBuffer uniffi_pubkycore_fn_func_sign_up(RustBuffer secret_key, RustBuffer homeserver, RustBuffer signup_token, RustCallStatus *_Nonnull out_status
125
132
  );
133
+ RustBuffer uniffi_pubkycore_fn_func_start_auth_flow(RustBuffer capabilities_str, RustCallStatus *_Nonnull out_status
134
+ );
126
135
  RustBuffer uniffi_pubkycore_fn_func_switch_network(int8_t use_testnet, RustCallStatus *_Nonnull out_status
127
136
  );
128
137
  RustBuffer uniffi_pubkycore_fn_func_validate_mnemonic_phrase(RustBuffer mnemonic_phrase, RustCallStatus *_Nonnull out_status
@@ -243,6 +252,9 @@ void ffi_pubkycore_rust_future_complete_void(void* _Nonnull handle, RustCallStat
243
252
  );
244
253
  uint16_t uniffi_pubkycore_checksum_func_auth(void
245
254
 
255
+ );
256
+ uint16_t uniffi_pubkycore_checksum_func_await_auth_approval(void
257
+
246
258
  );
247
259
  uint16_t uniffi_pubkycore_checksum_func_create_recovery_file(void
248
260
 
@@ -252,6 +264,9 @@ uint16_t uniffi_pubkycore_checksum_func_decrypt_recovery_file(void
252
264
  );
253
265
  uint16_t uniffi_pubkycore_checksum_func_delete_file(void
254
266
 
267
+ );
268
+ uint16_t uniffi_pubkycore_checksum_func_delete_with_session(void
269
+
255
270
  );
256
271
  uint16_t uniffi_pubkycore_checksum_func_generate_mnemonic_phrase(void
257
272
 
@@ -291,6 +306,9 @@ uint16_t uniffi_pubkycore_checksum_func_publish_https(void
291
306
  );
292
307
  uint16_t uniffi_pubkycore_checksum_func_put(void
293
308
 
309
+ );
310
+ uint16_t uniffi_pubkycore_checksum_func_put_with_session(void
311
+
294
312
  );
295
313
  uint16_t uniffi_pubkycore_checksum_func_remove_event_listener(void
296
314
 
@@ -318,6 +336,9 @@ uint16_t uniffi_pubkycore_checksum_func_sign_out(void
318
336
  );
319
337
  uint16_t uniffi_pubkycore_checksum_func_sign_up(void
320
338
 
339
+ );
340
+ uint16_t uniffi_pubkycore_checksum_func_start_auth_flow(void
341
+
321
342
  );
322
343
  uint16_t uniffi_pubkycore_checksum_func_switch_network(void
323
344
 
@@ -68,6 +68,9 @@ void uniffi_pubkycore_fn_free_eventnotifier(void*_Nonnull ptr, RustCallStatus *_
68
68
  void uniffi_pubkycore_fn_init_callback_eventlistener(ForeignCallback _Nonnull callback_stub, RustCallStatus *_Nonnull out_status
69
69
  );
70
70
  RustBuffer uniffi_pubkycore_fn_func_auth(RustBuffer url, RustBuffer secret_key, RustCallStatus *_Nonnull out_status
71
+ );
72
+ RustBuffer uniffi_pubkycore_fn_func_await_auth_approval(RustCallStatus *_Nonnull out_status
73
+
71
74
  );
72
75
  RustBuffer uniffi_pubkycore_fn_func_create_recovery_file(RustBuffer secret_key, RustBuffer passphrase, RustCallStatus *_Nonnull out_status
73
76
  );
@@ -75,6 +78,8 @@ RustBuffer uniffi_pubkycore_fn_func_decrypt_recovery_file(RustBuffer recovery_fi
75
78
  );
76
79
  RustBuffer uniffi_pubkycore_fn_func_delete_file(RustBuffer url, RustBuffer secret_key, RustCallStatus *_Nonnull out_status
77
80
  );
81
+ RustBuffer uniffi_pubkycore_fn_func_delete_with_session(RustBuffer url, RustBuffer session_secret, RustCallStatus *_Nonnull out_status
82
+ );
78
83
  RustBuffer uniffi_pubkycore_fn_func_generate_mnemonic_phrase(RustCallStatus *_Nonnull out_status
79
84
 
80
85
  );
@@ -104,6 +109,8 @@ RustBuffer uniffi_pubkycore_fn_func_publish_https(RustBuffer record_name, RustBu
104
109
  );
105
110
  RustBuffer uniffi_pubkycore_fn_func_put(RustBuffer url, RustBuffer content, RustBuffer secret_key, RustCallStatus *_Nonnull out_status
106
111
  );
112
+ RustBuffer uniffi_pubkycore_fn_func_put_with_session(RustBuffer url, RustBuffer content, RustBuffer session_secret, RustCallStatus *_Nonnull out_status
113
+ );
107
114
  void uniffi_pubkycore_fn_func_remove_event_listener(RustCallStatus *_Nonnull out_status
108
115
 
109
116
  );
@@ -123,6 +130,8 @@ RustBuffer uniffi_pubkycore_fn_func_sign_out(RustBuffer session_secret, RustCall
123
130
  );
124
131
  RustBuffer uniffi_pubkycore_fn_func_sign_up(RustBuffer secret_key, RustBuffer homeserver, RustBuffer signup_token, RustCallStatus *_Nonnull out_status
125
132
  );
133
+ RustBuffer uniffi_pubkycore_fn_func_start_auth_flow(RustBuffer capabilities_str, RustCallStatus *_Nonnull out_status
134
+ );
126
135
  RustBuffer uniffi_pubkycore_fn_func_switch_network(int8_t use_testnet, RustCallStatus *_Nonnull out_status
127
136
  );
128
137
  RustBuffer uniffi_pubkycore_fn_func_validate_mnemonic_phrase(RustBuffer mnemonic_phrase, RustCallStatus *_Nonnull out_status
@@ -243,6 +252,9 @@ void ffi_pubkycore_rust_future_complete_void(void* _Nonnull handle, RustCallStat
243
252
  );
244
253
  uint16_t uniffi_pubkycore_checksum_func_auth(void
245
254
 
255
+ );
256
+ uint16_t uniffi_pubkycore_checksum_func_await_auth_approval(void
257
+
246
258
  );
247
259
  uint16_t uniffi_pubkycore_checksum_func_create_recovery_file(void
248
260
 
@@ -252,6 +264,9 @@ uint16_t uniffi_pubkycore_checksum_func_decrypt_recovery_file(void
252
264
  );
253
265
  uint16_t uniffi_pubkycore_checksum_func_delete_file(void
254
266
 
267
+ );
268
+ uint16_t uniffi_pubkycore_checksum_func_delete_with_session(void
269
+
255
270
  );
256
271
  uint16_t uniffi_pubkycore_checksum_func_generate_mnemonic_phrase(void
257
272
 
@@ -291,6 +306,9 @@ uint16_t uniffi_pubkycore_checksum_func_publish_https(void
291
306
  );
292
307
  uint16_t uniffi_pubkycore_checksum_func_put(void
293
308
 
309
+ );
310
+ uint16_t uniffi_pubkycore_checksum_func_put_with_session(void
311
+
294
312
  );
295
313
  uint16_t uniffi_pubkycore_checksum_func_remove_event_listener(void
296
314
 
@@ -318,6 +336,9 @@ uint16_t uniffi_pubkycore_checksum_func_sign_out(void
318
336
  );
319
337
  uint16_t uniffi_pubkycore_checksum_func_sign_up(void
320
338
 
339
+ );
340
+ uint16_t uniffi_pubkycore_checksum_func_start_auth_flow(void
341
+
321
342
  );
322
343
  uint16_t uniffi_pubkycore_checksum_func_switch_network(void
323
344
 
package/ios/Pubky.mm CHANGED
@@ -118,6 +118,24 @@ RCT_EXTERN_METHOD(validateMnemonicPhrase:(NSString *)mnemonicPhrase
118
118
  withResolver:(RCTPromiseResolveBlock)resolve
119
119
  withRejecter:(RCTPromiseRejectBlock)reject)
120
120
 
121
+ RCT_EXTERN_METHOD(startAuthFlow:(NSString *)capabilities
122
+ withResolver:(RCTPromiseResolveBlock)resolve
123
+ withRejecter:(RCTPromiseRejectBlock)reject)
124
+
125
+ RCT_EXTERN_METHOD(awaitAuthApproval:(RCTPromiseResolveBlock)resolve
126
+ withRejecter:(RCTPromiseRejectBlock)reject)
127
+
128
+ RCT_EXTERN_METHOD(putWithSession:(NSString *)url
129
+ content:(NSString *)content
130
+ sessionSecret:(NSString *)sessionSecret
131
+ withResolver:(RCTPromiseResolveBlock)resolve
132
+ withRejecter:(RCTPromiseRejectBlock)reject)
133
+
134
+ RCT_EXTERN_METHOD(deleteWithSession:(NSString *)url
135
+ sessionSecret:(NSString *)sessionSecret
136
+ withResolver:(RCTPromiseResolveBlock)resolve
137
+ withRejecter:(RCTPromiseRejectBlock)reject)
138
+
121
139
  + (BOOL)requiresMainQueueSetup
122
140
  {
123
141
  return NO;
package/ios/Pubky.swift CHANGED
@@ -334,4 +334,52 @@ class Pubky: RCTEventEmitter {
334
334
  }
335
335
  }
336
336
  }
337
+
338
+ @objc(startAuthFlow:withResolver:withRejecter:)
339
+ func startAuthFlow(_ capabilities: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
340
+ Task {
341
+ do {
342
+ let result = react_native_pubky.startAuthFlow(capabilitiesStr: capabilities)
343
+ resolve(result)
344
+ } catch {
345
+ reject("startAuthFlow Error", "Failed to start auth flow", error)
346
+ }
347
+ }
348
+ }
349
+
350
+ @objc(awaitAuthApproval:withRejecter:)
351
+ func awaitAuthApproval(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
352
+ Task {
353
+ do {
354
+ let result = react_native_pubky.awaitAuthApproval()
355
+ resolve(result)
356
+ } catch {
357
+ reject("awaitAuthApproval Error", "Failed to await auth approval", error)
358
+ }
359
+ }
360
+ }
361
+
362
+ @objc(putWithSession:content:sessionSecret:withResolver:withRejecter:)
363
+ func putWithSession(_ url: String, content: String, sessionSecret: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
364
+ Task {
365
+ do {
366
+ let result = react_native_pubky.putWithSession(url: url, content: content, sessionSecret: sessionSecret)
367
+ resolve(result)
368
+ } catch {
369
+ reject("putWithSession Error", "Failed to put with session", error)
370
+ }
371
+ }
372
+ }
373
+
374
+ @objc(deleteWithSession:sessionSecret:withResolver:withRejecter:)
375
+ func deleteWithSession(_ url: String, sessionSecret: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
376
+ Task {
377
+ do {
378
+ let result = react_native_pubky.deleteWithSession(url: url, sessionSecret: sessionSecret)
379
+ resolve(result)
380
+ } catch {
381
+ reject("deleteWithSession Error", "Failed to delete with session", error)
382
+ }
383
+ }
384
+ }
337
385
  }