pickAlbumMedia method

Future<void> pickAlbumMedia({
  1. required String conversationID,
  2. required AlbumPickerMediaSendListener listener,
  3. AlbumPickerConfig? config,
  4. AlbumPickerTheme? theme,
})

Implementation

Future<void> pickAlbumMedia({
  required String conversationID,
  required AlbumPickerMediaSendListener listener,
  AlbumPickerConfig? config,
  AlbumPickerTheme? theme,
}) async {
  final sessionKey = '${DateTime.now().millisecondsSinceEpoch}_${conversationID.hashCode}';
  final session = _PickerSession(
    sessionKey: sessionKey,
    conversationID: conversationID,
    listener: listener,
  );
  _pickerSessions[sessionKey] = session;

  debugPrint("[MediaSendManager] pickAlbumMedia: session=$sessionKey, conversationID=$conversationID");

  await AlbumPicker.pickMedia(
    config: config,
    theme: theme,
    onPickConfirm: (pickedAlbumMedias, textMessage) {
      debugPrint("[MediaSendManager] onPickConfirm: ${pickedAlbumMedias.length} items, session=$sessionKey");
    },
    onMediaProcessing: (albumMedia, progress, error) {
      _handleMediaProcessing(media: albumMedia, progress: progress, error: error, session: session);
    },
    onMediaProcessed: () {
      debugPrint("[MediaSendManager] onMediaProcessed: session=$sessionKey");
      _pickerSessions.remove(sessionKey);
    },
    onCancel: () {
      debugPrint("[MediaSendManager] onCancel: session=$sessionKey");
      _pickerSessions.remove(sessionKey);
    },
  );
}