object method

Map<String, dynamic> object(
  1. dynamic value
)

Implementation

Map<String, dynamic> object(dynamic value) {
  if (value is Function) {
    return object(value(this));
  }

  if (value is Map && value['\$kind'] != null) {
    final kind = value['\$kind'];
    if (kind == 'GasCoin' || kind == 'Input' || kind == 'Result' || kind == 'NestedResult') {
      return value as Map<String, dynamic>;
    }
  }

  final id = getIdFromCallArg(value);

  final inserted = _blockData.inputs
      .firstWhere((i) => id == getIdFromCallArg(i), orElse: () => <String, dynamic>{});

  // Upgrade shared object inputs to mutable if needed:
  if (inserted.isNotEmpty &&
      inserted['Object']?['SharedObject'] != null &&
      value is Map<String, dynamic> &&
      value['Object']?['SharedObject'] != null) {
    inserted['Object']['SharedObject']['mutable'] = inserted['Object']['SharedObject']
            ['mutable'] ||
        value['Object']['SharedObject']['mutable'];
  }

  if (inserted.isNotEmpty) {
    return {'\$kind': 'Input', 'Input': _blockData.inputs.indexOf(inserted), 'type': 'object'};
  } else {
    return _blockData.addInput(
      'object',
      value is String
          ? {
              '\$kind': 'UnresolvedObject',
              'UnresolvedObject': {'objectId': normalizeSuiAddress(value)},
            }
          : value,
    );
  }
}