upload method

Future<String> upload({
  1. UploadProgressCallback? onProgress,
  2. UploadCompleteCallback? onComplete,
  3. UploadErrorCallback? onError,
})

Implementation

Future<String> upload({
  UploadProgressCallback? onProgress,
  UploadCompleteCallback? onComplete,
  UploadErrorCallback? onError,
}) async {
  _assertMediaReady();
  final uploadId = _mediaDetail!.id!;
  late final StreamSubscription<Map<String, dynamic>> subscription;
  subscription =
      MethodChannelTruvideoMediaSdk.sharedUploadEvents.listen((event) async {
    final id = event['id'];
    final type = event['event'] ?? event['type'];

    if (id != uploadId) return;

    switch (type) {
      case 'onProgress':
      case 'uploadProgress':
        onProgress?.call(event);
      case 'onComplete':
      case 'uploadComplete':
        event['metaData'] = _tryParseJson(event['metaData']);
        event['tags'] = _tryParseJson(event['tags']);
        onComplete?.call(event);
        await subscription.cancel();
      case 'onError':
      case 'uploadError':
        onError?.call(event);
        await subscription.cancel();
    }
  });

  final result = await TruvideoMediaSdk.uploadMedia(uploadId);
  return result ?? 'Upload started';
}