import 'package:aves/model/filters/filters.dart'; import 'package:aves/model/image_entry.dart'; import 'package:aves/services/image_file_service.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; class AppShortcutService { static const platform = MethodChannel('deckers.thibault/aves/shortcut'); // this ability will not change over the lifetime of the app static bool _canPin; static Future canPin() async { if (_canPin != null) { return SynchronousFuture(_canPin); } try { _canPin = await platform.invokeMethod('canPin'); return _canPin; } on PlatformException catch (e) { debugPrint('canPin failed with code=${e.code}, exception=${e.message}, details=${e.details}}'); } return false; } static Future pin(String label, ImageEntry iconEntry, Set filters) async { final iconBytes = iconEntry != null ? await ImageFileService.getThumbnail(iconEntry, 256, 256) : null; try { await platform.invokeMethod('pin', { 'label': label, 'iconBytes': iconBytes, 'filters': filters.map((filter) => filter.toJson()).toList(), }); } on PlatformException catch (e) { debugPrint('pin failed with code=${e.code}, exception=${e.message}, details=${e.details}'); } } }