import 'package:flutter/foundation.dart'; class PendingShare { final List filePaths; final String? text; final DateTime receivedAt; const PendingShare({ required this.filePaths, required this.text, required this.receivedAt, }); bool get hasFiles => filePaths.isNotEmpty; bool get hasText => text != null && text!.isNotEmpty; bool get isEmpty => !hasFiles && !hasText; /// True when [other] carries the same payload. The iOS Share Extension /// fires two `open(url)` requests per share (see ShareViewController), so /// the same share can arrive twice on the media stream — receivedAt is /// deliberately ignored here so such duplicates compare equal. bool contentEquals(PendingShare other) => text == other.text && listEquals(filePaths, other.filePaths); }