import 'dart:typed_data';

import 'package:dio/dio.dart';

import '../../marianumconnect_query.dart';

/// Downloads the raw PDF bytes of a Marianum Message from
/// `GET /api/mobile/v1/newsletter/{id}/file`.
///
/// Goes through the shared MC dio so the bearer token is attached automatically;
/// the bytes are handed to `SfPdfViewer.memory` so no auth header has to be
/// plumbed into the viewer itself.
class GetNewsletterFile extends MarianumConnectQuery {
  final String id;

  GetNewsletterFile(this.id, {super.dio});

  Future<Uint8List> run() => guard(() async {
    final response = await dio.get<List<int>>(
      endpoint('newsletter/${Uri.encodeComponent(id)}/file'),
      options: Options(responseType: ResponseType.bytes),
    );
    return Uint8List.fromList(response.data!);
  });
}
