@synonymdev/react-native-pubky 0.11.3 → 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/src/index.tsx CHANGED
@@ -20,6 +20,27 @@ const Pubky = NativeModules.Pubky
20
20
 
21
21
  const eventEmitter = new NativeEventEmitter(Pubky);
22
22
 
23
+ const nativeErrorMessage = (error: unknown): string => {
24
+ if (error instanceof Error) return error.message;
25
+ if (typeof error === 'string') return error;
26
+ try {
27
+ return JSON.stringify(error);
28
+ } catch {
29
+ return String(error);
30
+ }
31
+ };
32
+
33
+ const nativeResultError = (res: unknown): string | null => {
34
+ if (!Array.isArray(res)) return null;
35
+
36
+ const isError = String(res[0] ?? '').toLowerCase();
37
+ const payload =
38
+ typeof res[1] === 'string' ? res[1] : nativeErrorMessage(res[1]);
39
+
40
+ if (isError === 'true') return payload;
41
+ return null;
42
+ };
43
+
23
44
  export async function setEventListener(
24
45
  callback: (eventData: string) => void
25
46
  ): Promise<Result<void>> {
@@ -28,7 +49,7 @@ export async function setEventListener(
28
49
  eventEmitter.addListener('PubkyEvent', callback);
29
50
  return ok(undefined);
30
51
  } catch (e) {
31
- return err(JSON.stringify(e));
52
+ return err(nativeErrorMessage(e));
32
53
  }
33
54
  }
34
55
 
@@ -38,7 +59,7 @@ export async function removeEventListener(): Promise<Result<void>> {
38
59
  eventEmitter.removeAllListeners('PubkyEvent');
39
60
  return ok(undefined);
40
61
  } catch (e) {
41
- return err(JSON.stringify(e));
62
+ return err(nativeErrorMessage(e));
42
63
  }
43
64
  }
44
65
 
@@ -46,11 +67,16 @@ export async function auth(
46
67
  url: string,
47
68
  secretKey: string
48
69
  ): Promise<Result<string[]>> {
49
- const res = await Pubky.auth(url, secretKey);
50
- if (res[0] === 'error') {
51
- return err(res[1]);
70
+ try {
71
+ const res = await Pubky.auth(url, secretKey);
72
+ const errorMessage = nativeResultError(res);
73
+ if (errorMessage) {
74
+ return err(errorMessage);
75
+ }
76
+ return ok(res[1]);
77
+ } catch (e) {
78
+ return err(nativeErrorMessage(e));
52
79
  }
53
- return ok(res[1]);
54
80
  }
55
81
 
56
82
  export type Capability = {
@@ -69,13 +95,14 @@ export async function parseAuthUrl(
69
95
  ): Promise<Result<PubkyAuthDetails>> {
70
96
  try {
71
97
  const res = await Pubky.parseAuthUrl(url);
72
- if (res[0] === 'error') {
73
- return err(res[1]);
98
+ const errorMessage = nativeResultError(res);
99
+ if (errorMessage) {
100
+ return err(errorMessage);
74
101
  }
75
102
  const parsed = JSON.parse(res[1]);
76
103
  return ok(parsed);
77
104
  } catch (e) {
78
- return err(JSON.stringify(e));
105
+ return err(nativeErrorMessage(e));
79
106
  }
80
107
  }
81
108
 
@@ -86,12 +113,13 @@ export async function publish(
86
113
  ): Promise<Result<string[]>> {
87
114
  try {
88
115
  const res = await Pubky.publish(recordName, recordContent, secretKey);
89
- if (res[0] === 'error') {
90
- return err(res[1]);
116
+ const errorMessage = nativeResultError(res);
117
+ if (errorMessage) {
118
+ return err(errorMessage);
91
119
  }
92
120
  return ok(res[1]);
93
121
  } catch (e) {
94
- return err(JSON.stringify(e));
122
+ return err(nativeErrorMessage(e));
95
123
  }
96
124
  }
97
125
 
@@ -117,12 +145,13 @@ export interface IDNSPacket {
117
145
  export async function resolve(publicKey: string): Promise<Result<IDNSPacket>> {
118
146
  try {
119
147
  const res = await Pubky.resolve(publicKey);
120
- if (res[0] === 'error') {
121
- return err(res[1]);
148
+ const errorMessage = nativeResultError(res);
149
+ if (errorMessage) {
150
+ return err(errorMessage);
122
151
  }
123
152
  return ok(JSON.parse(res[1]));
124
153
  } catch (e) {
125
- return err(JSON.stringify(e));
154
+ return err(nativeErrorMessage(e));
126
155
  }
127
156
  }
128
157
 
@@ -135,12 +164,13 @@ export async function getSignupToken(
135
164
  ): Promise<Result<string>> {
136
165
  try {
137
166
  const res = await Pubky.getSignupToken(homeserverPubky, adminPassword);
138
- if (res[0] === 'error') {
139
- return err(res[1]);
167
+ const errorMessage = nativeResultError(res);
168
+ if (errorMessage) {
169
+ return err(errorMessage);
140
170
  }
141
171
  return ok(res[1]);
142
172
  } catch (e) {
143
- return err(JSON.stringify(e));
173
+ return err(nativeErrorMessage(e));
144
174
  }
145
175
  }
146
176
 
@@ -151,12 +181,13 @@ export async function signUp(
151
181
  ): Promise<Result<SessionInfo>> {
152
182
  try {
153
183
  const res = await Pubky.signUp(secretKey, homeserver, signupToken);
154
- if (res[0] === 'error') {
155
- return err(res[1]);
184
+ const errorMessage = nativeResultError(res);
185
+ if (errorMessage) {
186
+ return err(errorMessage);
156
187
  }
157
188
  return ok(JSON.parse(res[1]));
158
189
  } catch (e) {
159
- return err(JSON.stringify(e));
190
+ return err(nativeErrorMessage(e));
160
191
  }
161
192
  }
162
193
 
@@ -166,36 +197,39 @@ export async function republishHomeserver(
166
197
  ): Promise<Result<string>> {
167
198
  try {
168
199
  const res = await Pubky.republishHomeserver(secretKey, homeserver);
169
- if (res[0] === 'error') {
170
- return err(res[1]);
200
+ const errorMessage = nativeResultError(res);
201
+ if (errorMessage) {
202
+ return err(errorMessage);
171
203
  }
172
204
  return ok(res[1]);
173
205
  } catch (e) {
174
- return err(JSON.stringify(e));
206
+ return err(nativeErrorMessage(e));
175
207
  }
176
208
  }
177
209
 
178
210
  export async function signIn(secretKey: string): Promise<Result<SessionInfo>> {
179
211
  try {
180
212
  const res = await Pubky.signIn(secretKey);
181
- if (res[0] === 'error') {
182
- return err(res[1]);
213
+ const errorMessage = nativeResultError(res);
214
+ if (errorMessage) {
215
+ return err(errorMessage);
183
216
  }
184
217
  return ok(JSON.parse(res[1]));
185
218
  } catch (e) {
186
- return err(JSON.stringify(e));
219
+ return err(nativeErrorMessage(e));
187
220
  }
188
221
  }
189
222
 
190
223
  export async function signOut(sessionSecret: string): Promise<Result<string>> {
191
224
  try {
192
225
  const res = await Pubky.signOut(sessionSecret);
193
- if (res[0] === 'error') {
194
- return err(res[1]);
226
+ const errorMessage = nativeResultError(res);
227
+ if (errorMessage) {
228
+ return err(errorMessage);
195
229
  }
196
230
  return ok(res[1]);
197
231
  } catch (e) {
198
- return err(JSON.stringify(e));
232
+ return err(nativeErrorMessage(e));
199
233
  }
200
234
  }
201
235
 
@@ -204,20 +238,22 @@ export async function revalidateSession(
204
238
  ): Promise<Result<SessionInfo>> {
205
239
  try {
206
240
  const res = await Pubky.revalidateSession(sessionSecret);
207
- if (res[0] === 'error') {
208
- return err(res[1]);
241
+ const errorMessage = nativeResultError(res);
242
+ if (errorMessage) {
243
+ return err(errorMessage);
209
244
  }
210
245
  return ok(JSON.parse(res[1]));
211
246
  } catch (e) {
212
- return err(JSON.stringify(e));
247
+ return err(nativeErrorMessage(e));
213
248
  }
214
249
  }
215
250
 
216
251
  export async function get(url: string): Promise<Result<string>> {
217
252
  try {
218
253
  const res = await Pubky.get(url);
219
- if (res[0] === 'error') {
220
- return err(res[1]);
254
+ const errorMessage = nativeResultError(res);
255
+ if (errorMessage) {
256
+ return err(errorMessage);
221
257
  }
222
258
  // Return the raw response directly
223
259
  // It will be either:
@@ -225,7 +261,7 @@ export async function get(url: string): Promise<Result<string>> {
225
261
  // - "base64:..." (for binary content)
226
262
  return ok(res[1]);
227
263
  } catch (e) {
228
- return err(JSON.stringify(e));
264
+ return err(nativeErrorMessage(e));
229
265
  }
230
266
  }
231
267
 
@@ -236,12 +272,13 @@ export async function put(
236
272
  ): Promise<Result<string[]>> {
237
273
  try {
238
274
  const res = await Pubky.put(url, JSON.stringify(content), secretKey);
239
- if (res[0] === 'error') {
240
- return err(res[1]);
275
+ const errorMessage = nativeResultError(res);
276
+ if (errorMessage) {
277
+ return err(errorMessage);
241
278
  }
242
279
  return ok(res[1]);
243
280
  } catch (e) {
244
- return err(JSON.stringify(e));
281
+ return err(nativeErrorMessage(e));
245
282
  }
246
283
  }
247
284
 
@@ -252,12 +289,13 @@ export async function publishHttps(
252
289
  ): Promise<Result<string[]>> {
253
290
  try {
254
291
  const res = await Pubky.publishHttps(recordName, target, secretKey);
255
- if (res[0] === 'error') {
256
- return err(res[1]);
292
+ const errorMessage = nativeResultError(res);
293
+ if (errorMessage) {
294
+ return err(errorMessage);
257
295
  }
258
296
  return ok(res[1]);
259
297
  } catch (e) {
260
- return err(JSON.stringify(e));
298
+ return err(nativeErrorMessage(e));
261
299
  }
262
300
  }
263
301
 
@@ -281,24 +319,26 @@ export async function resolveHttps(
281
319
  ): Promise<Result<IHttpsResolveResult>> {
282
320
  try {
283
321
  const res = await Pubky.resolveHttps(publicKey);
284
- if (res[0] === 'error') {
285
- return err(res[1]);
322
+ const errorMessage = nativeResultError(res);
323
+ if (errorMessage) {
324
+ return err(errorMessage);
286
325
  }
287
326
  return ok(JSON.parse(res[1]));
288
327
  } catch (e) {
289
- return err(JSON.stringify(e));
328
+ return err(nativeErrorMessage(e));
290
329
  }
291
330
  }
292
331
 
293
332
  export async function list(url: string): Promise<Result<string[]>> {
294
333
  try {
295
334
  const res = await Pubky.list(url);
296
- if (res[0] === 'error') {
297
- return err(res[1]);
335
+ const errorMessage = nativeResultError(res);
336
+ if (errorMessage) {
337
+ return err(errorMessage);
298
338
  }
299
339
  return ok(JSON.parse(res[1]));
300
340
  } catch (e) {
301
- return err(JSON.stringify(e));
341
+ return err(nativeErrorMessage(e));
302
342
  }
303
343
  }
304
344
 
@@ -308,12 +348,13 @@ export async function deleteFile(
308
348
  ): Promise<Result<string[]>> {
309
349
  try {
310
350
  const res = await Pubky.deleteFile(url, secretKey);
311
- if (res[0] === 'error') {
312
- return err(res[1]);
351
+ const errorMessage = nativeResultError(res);
352
+ if (errorMessage) {
353
+ return err(errorMessage);
313
354
  }
314
355
  return ok(res[1]);
315
356
  } catch (e) {
316
- return err(JSON.stringify(e));
357
+ return err(nativeErrorMessage(e));
317
358
  }
318
359
  }
319
360
 
@@ -333,12 +374,13 @@ export interface IGenerateSecretKey extends IPublicKeyInfo {
333
374
  export async function generateSecretKey(): Promise<Result<IGenerateSecretKey>> {
334
375
  try {
335
376
  const res = await Pubky.generateSecretKey();
336
- if (res[0] === 'error') {
337
- return err(res[1]);
377
+ const errorMessage = nativeResultError(res);
378
+ if (errorMessage) {
379
+ return err(errorMessage);
338
380
  }
339
381
  return ok(JSON.parse(res[1]));
340
382
  } catch (e) {
341
- return err(JSON.stringify(e));
383
+ return err(nativeErrorMessage(e));
342
384
  }
343
385
  }
344
386
 
@@ -347,12 +389,13 @@ export async function getPublicKeyFromSecretKey(
347
389
  ): Promise<Result<IPublicKeyInfo>> {
348
390
  try {
349
391
  const res = await Pubky.getPublicKeyFromSecretKey(secretKey);
350
- if (res[0] === 'error') {
351
- return err(res[1]);
392
+ const errorMessage = nativeResultError(res);
393
+ if (errorMessage) {
394
+ return err(errorMessage);
352
395
  }
353
396
  return ok(JSON.parse(res[1]));
354
397
  } catch (e) {
355
- return err(JSON.stringify(e));
398
+ return err(nativeErrorMessage(e));
356
399
  }
357
400
  }
358
401
 
@@ -362,12 +405,13 @@ export async function createRecoveryFile(
362
405
  ): Promise<Result<string>> {
363
406
  try {
364
407
  const res = await Pubky.createRecoveryFile(secretKey, passphrase);
365
- if (res[0] === 'error') {
366
- return err(res[1]);
408
+ const errorMessage = nativeResultError(res);
409
+ if (errorMessage) {
410
+ return err(errorMessage);
367
411
  }
368
412
  return ok(res[1]);
369
413
  } catch (e) {
370
- return err(JSON.stringify(e));
414
+ return err(nativeErrorMessage(e));
371
415
  }
372
416
  }
373
417
 
@@ -377,36 +421,39 @@ export async function decryptRecoveryFile(
377
421
  ): Promise<Result<string>> {
378
422
  try {
379
423
  const res = await Pubky.decryptRecoveryFile(recoveryFile, passphrase);
380
- if (res[0] === 'error') {
381
- return err(res[1]);
424
+ const errorMessage = nativeResultError(res);
425
+ if (errorMessage) {
426
+ return err(errorMessage);
382
427
  }
383
428
  return ok(res[1]);
384
429
  } catch (e) {
385
- return err(JSON.stringify(e));
430
+ return err(nativeErrorMessage(e));
386
431
  }
387
432
  }
388
433
 
389
434
  export async function getHomeserver(pubky: string): Promise<Result<string>> {
390
435
  try {
391
436
  const res = await Pubky.getHomeserver(pubky);
392
- if (res[0] === 'error') {
393
- return err(res[1]);
437
+ const errorMessage = nativeResultError(res);
438
+ if (errorMessage) {
439
+ return err(errorMessage);
394
440
  }
395
441
  return ok(res[1]);
396
442
  } catch (e) {
397
- return err(JSON.stringify(e));
443
+ return err(nativeErrorMessage(e));
398
444
  }
399
445
  }
400
446
 
401
447
  export async function generateMnemonicPhrase(): Promise<Result<string>> {
402
448
  try {
403
449
  const res = await Pubky.generateMnemonicPhrase();
404
- if (res[0] === 'error') {
405
- return err(res[1]);
450
+ const errorMessage = nativeResultError(res);
451
+ if (errorMessage) {
452
+ return err(errorMessage);
406
453
  }
407
454
  return ok(res[1]);
408
455
  } catch (e) {
409
- return err(JSON.stringify(e));
456
+ return err(nativeErrorMessage(e));
410
457
  }
411
458
  }
412
459
 
@@ -419,12 +466,13 @@ export async function mnemonicPhraseToKeypair(
419
466
  ): Promise<Result<IGenerateSecretKey>> {
420
467
  try {
421
468
  const res = await Pubky.mnemonicPhraseToKeypair(mnemonicPhrase);
422
- if (res[0] === 'error') {
423
- return err(res[1]);
469
+ const errorMessage = nativeResultError(res);
470
+ if (errorMessage) {
471
+ return err(errorMessage);
424
472
  }
425
473
  return ok(JSON.parse(res[1]));
426
474
  } catch (e) {
427
- return err(JSON.stringify(e));
475
+ return err(nativeErrorMessage(e));
428
476
  }
429
477
  }
430
478
 
@@ -433,12 +481,13 @@ export async function generateMnemonicPhraseAndKeypair(): Promise<
433
481
  > {
434
482
  try {
435
483
  const res = await Pubky.generateMnemonicPhraseAndKeypair();
436
- if (res[0] === 'error') {
437
- return err(res[1]);
484
+ const errorMessage = nativeResultError(res);
485
+ if (errorMessage) {
486
+ return err(errorMessage);
438
487
  }
439
488
  return ok(JSON.parse(res[1]));
440
489
  } catch (e) {
441
- return err(JSON.stringify(e));
490
+ return err(nativeErrorMessage(e));
442
491
  }
443
492
  }
444
493
 
@@ -447,12 +496,13 @@ export async function validateMnemonicPhrase(
447
496
  ): Promise<Result<boolean>> {
448
497
  try {
449
498
  const res = await Pubky.validateMnemonicPhrase(mnemonicPhrase);
450
- if (res[0] === 'error') {
451
- return err(res[1]);
499
+ const errorMessage = nativeResultError(res);
500
+ if (errorMessage) {
501
+ return err(errorMessage);
452
502
  }
453
503
  return ok(res[1] === 'true');
454
504
  } catch (e) {
455
- return err(JSON.stringify(e));
505
+ return err(nativeErrorMessage(e));
456
506
  }
457
507
  }
458
508
 
@@ -461,24 +511,26 @@ export async function startAuthFlow(
461
511
  ): Promise<Result<string>> {
462
512
  try {
463
513
  const res = await Pubky.startAuthFlow(capabilities);
464
- if (res[0] === 'error') {
465
- return err(res[1]);
514
+ const errorMessage = nativeResultError(res);
515
+ if (errorMessage) {
516
+ return err(errorMessage);
466
517
  }
467
518
  return ok(res[1]);
468
519
  } catch (e) {
469
- return err(JSON.stringify(e));
520
+ return err(nativeErrorMessage(e));
470
521
  }
471
522
  }
472
523
 
473
524
  export async function awaitAuthApproval(): Promise<Result<SessionInfo>> {
474
525
  try {
475
526
  const res = await Pubky.awaitAuthApproval();
476
- if (res[0] === 'error') {
477
- return err(res[1]);
527
+ const errorMessage = nativeResultError(res);
528
+ if (errorMessage) {
529
+ return err(errorMessage);
478
530
  }
479
531
  return ok(JSON.parse(res[1]));
480
532
  } catch (e) {
481
- return err(JSON.stringify(e));
533
+ return err(nativeErrorMessage(e));
482
534
  }
483
535
  }
484
536
 
@@ -489,12 +541,13 @@ export async function putWithSession(
489
541
  ): Promise<Result<string>> {
490
542
  try {
491
543
  const res = await Pubky.putWithSession(url, content, sessionSecret);
492
- if (res[0] === 'error') {
493
- return err(res[1]);
544
+ const errorMessage = nativeResultError(res);
545
+ if (errorMessage) {
546
+ return err(errorMessage);
494
547
  }
495
548
  return ok(res[1]);
496
549
  } catch (e) {
497
- return err(JSON.stringify(e));
550
+ return err(nativeErrorMessage(e));
498
551
  }
499
552
  }
500
553
 
@@ -504,11 +557,12 @@ export async function deleteWithSession(
504
557
  ): Promise<Result<string>> {
505
558
  try {
506
559
  const res = await Pubky.deleteWithSession(url, sessionSecret);
507
- if (res[0] === 'error') {
508
- return err(res[1]);
560
+ const errorMessage = nativeResultError(res);
561
+ if (errorMessage) {
562
+ return err(errorMessage);
509
563
  }
510
564
  return ok(res[1]);
511
565
  } catch (e) {
512
- return err(JSON.stringify(e));
566
+ return err(nativeErrorMessage(e));
513
567
  }
514
568
  }