@@ -263,10 +263,16 @@ public boolean isMember(String currency, String pubkey) {
263
263
return response .getHits () != null && response .getHits ().getTotalHits () > 0 ;
264
264
}
265
265
266
- public List <WotRequirements > getRequirements (String currency , String pubkey ) {
266
+ public List <WotRequirements > getRequirements (String currency , String uidOrPubkey ) {
267
267
waitReady ();
268
268
final String currencyId = safeGetCurrency (currency );
269
- return this .wotRemoteService .getRequirements (currencyId , pubkey );
269
+ return this .wotRemoteService .getRequirements (currencyId , uidOrPubkey );
270
+ }
271
+
272
+ public List <WotRequirements > getRequirementsByPubkey (String currency , String pubkey ) {
273
+ waitReady ();
274
+ final String currencyId = safeGetCurrency (currency );
275
+ return this .wotRemoteService .getRequirementsByPubkey (currencyId , pubkey );
270
276
}
271
277
272
278
public Optional <Member > getMemberByPubkey (String currency , String pubkey ) {
@@ -277,19 +283,25 @@ public Optional<Member> getMemberByPubkey(String currency, String pubkey) {
277
283
}
278
284
// Fallback to remote duniter node (e.g. Blockchain not yet indexed)
279
285
else {
280
- Identity source = this .wotRemoteService .getIdentity (currencyId , pubkey );
281
- if (source == null
282
- || !currencyId .equals (source .getCurrency ())
283
- || (!source .getIsMember () && source .getWasMember ())) return Optional .empty (); // Not a member
284
-
285
- Member target = new Member ();
286
- target .setPubkey (pubkey );
287
- target .setCurrency (currencyId );
288
- target .setUid (source .getUid ());
289
- target .setIsMember (source .getIsMember ());
290
- target .setWasMember (source .getWasMember ());
291
- target .setTimestamp (source .getTimestamp ());
292
- return Optional .of (target );
286
+ return this .wotRemoteService .getRequirementsByPubkey (currencyId , pubkey )
287
+ .stream ()
288
+ .map (source -> {
289
+ Member target = new Member ();
290
+ target .setPubkey (pubkey );
291
+ target .setCurrency (currencyId );
292
+ target .setUid (source .getUid ());
293
+ target .setWasMember (source .getWasMember ());
294
+ Boolean isMember = Boolean .FALSE .equals (source .getRevoked ())
295
+ && source .getMembershipExpiresIn () != null
296
+ && source .getMembershipExpiresIn () > 0 ;
297
+ target .setIsMember (isMember );
298
+ if (source .getMeta () != null ) {
299
+ target .setTimestamp (source .getMeta ().getTimestamp ());
300
+ }
301
+ return target ;
302
+ })
303
+ .filter (source -> Boolean .TRUE .equals (source .getWasMember ()) || source .getIsMember ())
304
+ .findFirst ();
293
305
}
294
306
}
295
307
0 commit comments