// ignore_for_file: use_build_context_synchronously import 'dart:io'; import 'dart:typed_data'; import 'package:refilc/api/providers/user_provider.dart'; import 'package:refilc/helpers/storage_helper.dart'; import 'package:refilc_kreta_api/client/client.dart'; import 'package:refilc_kreta_api/models/attachment.dart'; import 'package:refilc_kreta_api/models/homework.dart'; import 'package:flutter/widgets.dart'; import 'package:open_filex/open_filex.dart'; import 'package:provider/provider.dart'; extension AttachmentHelper on Attachment { Future download(BuildContext context, {bool overwrite = false}) async { String downloads = await StorageHelper.downloadsPath(); if (!overwrite && await File("$downloads/$name").exists()) { return "$downloads/$name"; } Uint8List data = await Provider.of(context, listen: false) .getAPI(downloadUrl, rawResponse: true); if (!await StorageHelper.write("$downloads/$name", data)) return ""; return "$downloads/$name"; } Future open(BuildContext context) async { String downloads = await StorageHelper.downloadsPath(); if (!await File("$downloads/$name").exists()) await download(context); var result = await OpenFilex.open("$downloads/$name"); return result.type == ResultType.done; } } extension HomeworkAttachmentHelper on HomeworkAttachment { Future download(BuildContext context, {bool overwrite = false}) async { String downloads = await StorageHelper.downloadsPath(); if (!overwrite && await File("$downloads/$name").exists()) { return "$downloads/$name"; } String url = downloadUrl( Provider.of(context, listen: false).instituteCode ?? ""); Uint8List data = await Provider.of(context, listen: false) .getAPI(url, rawResponse: true); if (!await StorageHelper.write("$downloads/$name", data)) return ""; return "$downloads/$name"; } Future open(BuildContext context) async { String downloads = await StorageHelper.downloadsPath(); if (!await File("$downloads/$name").exists()) await download(context); var result = await OpenFilex.open("$downloads/$name"); return result.type == ResultType.done; } }