testIf static method

Future<bool> testIf(
  1. String str,
  2. NodeFractal<EventFractal> reNode
)

Implementation

static Future<bool> testIf(String str, NodeFractal reNode) async {
  if (str.contains('in')) {
    var [leftS, rightS] = str.split('in');
    leftS = leftS.trim();
    rightS = rightS.trim();
    if (leftS.isEmpty && rightS.isEmpty) return false;

    final hash = switch (leftS) {
      '' => reNode.hash,
      'owner' => reNode.owner?.hash,
      'account' => UserFractal.active.value?.hash,
      _ => reNode.sub[leftS]?.hash ?? reNode[leftS] as String?,
    };

    final rightF = (rightS.isEmpty)
        ? reNode
        : (EventFractal.isHash(rightS)
            ? (await NetworkFractal.request(rightS))
            : reNode.sub[rightS]);

    final sorted = '${rightF?['sorted'] ?? ''}'.split(',');
    if (!sorted.contains(hash)) return false;
  } else if (!switch (str) {
    'authenticated' => UserFractal.active.value != null,
    'own' => (reNode.owner) == UserFractal.active.value,
    _ => false,
  }) {
    return false;
  }
  return true;
}