@@ -40,7 +40,7 @@ import { v4 as uuidv4 } from 'uuid'
40
40
import base32Encode from 'base32-encode'
41
41
42
42
import browser from 'webextension-polyfill'
43
- import { MimeType , unixtime } from 'armoury'
43
+ import { genOriginId , MimeType , unixtime } from 'armoury'
44
44
import lodash from 'lodash'
45
45
46
46
// TODO[snikitin@outlook .com] Describe that "yek" is "key" in reverse,
@@ -338,6 +338,26 @@ async function getNode({
338
338
return NodeUtil . fromJson ( value )
339
339
}
340
340
341
+ async function getNodesByOrigin ( {
342
+ store,
343
+ origin,
344
+ } : {
345
+ store : YekLavStore
346
+ origin : OriginId
347
+ } ) : Promise < TNode [ ] > {
348
+ const yek : OriginToNidYek = { yek : { kind : 'origin->nid' , key : origin } }
349
+ const lav : OriginToNidLav | undefined = await store . get ( yek )
350
+ if ( lav == null ) {
351
+ return [ ]
352
+ }
353
+ const value : Nid [ ] = lav . lav . value
354
+ const nidYeks : NidYek [ ] = value . map ( ( nid : Nid ) : NidYek => {
355
+ return { yek : { kind : 'nid' , key : nid } }
356
+ } )
357
+ const nidLavs : NidLav [ ] = await store . get ( nidYeks )
358
+ return nidLavs . map ( ( lav : NidLav ) => NodeUtil . fromJson ( lav . lav . value ) )
359
+ }
360
+
341
361
async function getNodeBatch (
342
362
store : YekLavStore ,
343
363
req : NodeBatchRequestBody
@@ -539,7 +559,8 @@ export function makeLocalStorageApi(
539
559
node : {
540
560
get : ( { nid } : { nid : string ; signal ?: AbortSignal } ) =>
541
561
getNode ( { store, nid } ) ,
542
- getByOrigin : throwUnimplementedError ( 'node.getByOrigin' ) ,
562
+ getByOrigin : ( { origin } : { origin : OriginId ; signal ?: AbortSignal } ) =>
563
+ getNodesByOrigin ( { store, origin } ) ,
543
564
update : (
544
565
args : { nid : string } & NodePatchRequest ,
545
566
_signal ?: AbortSignal
0 commit comments