RemoteAttachmentContent.create constructor

RemoteAttachmentContent.create({
  1. required String url,
  2. required String contentDigest,
  3. required Uint8List secret,
  4. required Uint8List salt,
  5. required Uint8List nonce,
  6. required int contentLength,
  7. required String filename,
  8. String? description,
})

Factory constructor with validation to ensure XMTP spec compliance

Implementation

factory RemoteAttachmentContent.create({
  required String url,
  required String contentDigest,
  required Uint8List secret,
  required Uint8List salt,
  required Uint8List nonce,
  required int contentLength,
  required String filename,
  String? description,
}) {
  // Validate URL scheme — accept http (LAN/dev) and https (production)
  if (!url.startsWith('http://') && !url.startsWith('https://')) {
    throw ArgumentError('Invalid URL scheme. Remote attachments require http or https URLs. '
        'Received: ${url.split('://').first}://');
  }

  return RemoteAttachmentContent(
    url: url,
    contentDigest: contentDigest,
    secret: secret,
    salt: salt,
    nonce: nonce,
    scheme: Uri.parse(url).scheme,
    contentLength: contentLength,
    filename: filename,
    description: description,
  );
}