switch to new intent plugin

This commit is contained in:
Fabian Freund
2025-05-05 14:31:15 +02:00
parent a2d59e2e39
commit 53bba6e633
6 changed files with 33 additions and 24 deletions
@@ -1,6 +1,11 @@
class ReceivedIntentParameter {
import 'package:fast_equatable/fast_equatable.dart';
class ReceivedIntentParameter with FastEquatable {
final String? content;
final String? tool;
ReceivedIntentParameter(this.content, this.tool);
@override
List<Object?> get hashParameters => [content, tool];
}
@@ -1,7 +1,8 @@
import 'package:fast_equatable/fast_equatable.dart';
import 'package:lensai/utils/uri_parser.dart' as uri_parser;
sealed class SharedContent {
const SharedContent();
sealed class SharedContent with FastEquatable {
SharedContent();
factory SharedContent.parse(String content) {
if (uri_parser.tryParseUrl(content, eagerParsing: true)
@@ -16,17 +17,23 @@ sealed class SharedContent {
final class SharedUrl extends SharedContent {
final Uri url;
const SharedUrl(this.url);
SharedUrl(this.url);
@override
String toString() => url.toString();
@override
List<Object?> get hashParameters => [url];
}
final class SharedText extends SharedContent {
final String text;
const SharedText(this.text);
SharedText(this.text);
@override
String toString() => text;
@override
List<Object?> get hashParameters => [text];
}
@@ -3,10 +3,9 @@ import 'dart:async';
import 'package:lensai/core/logger.dart';
import 'package:lensai/data/models/received_intent_parameter.dart';
import 'package:mime/mime.dart' as mime;
import 'package:receive_intent/receive_intent.dart';
import 'package:riverpod/riverpod.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:rxdart/rxdart.dart';
import 'package:simple_intent_receiver/simple_intent_receiver.dart';
import 'package:uri_to_file/uri_to_file.dart' as uri_to_file;
part 'sharing_intent.g.dart';
@@ -16,11 +15,11 @@ final _sharingIntentTransformer =
handleData: (intent, sink) async {
final data = switch (intent.action) {
'android.intent.action.WEB_SEARCH' =>
intent.extra?['query'] as String?,
intent.extra['query'] as String?,
'android.intent.action.VIEW' => intent.data,
'android.intent.action.SEND' =>
intent.extra?['android.intent.extra.STREAM'] as String? ??
intent.extra?['android.intent.extra.TEXT'] as String?,
intent.extra['android.intent.extra.STREAM'] as String? ??
intent.extra['android.intent.extra.TEXT'] as String?,
_ => null,
};
@@ -41,11 +40,9 @@ final _sharingIntentTransformer =
},
);
@Riverpod()
@Riverpod(keepAlive: true)
Raw<Stream<ReceivedIntentParameter>> sharingIntentStream(Ref ref) {
return ConcatStream([
// ignore: discarded_futures
ReceiveIntent.getInitialIntent().asStream(),
ReceiveIntent.receivedIntentStream,
]).whereNotNull().transform(_sharingIntentTransformer);
final receiver = IntentReceiver.setUp();
return receiver.events.transform(_sharingIntentTransformer);
}
@@ -7,12 +7,12 @@ part of 'sharing_intent.dart';
// **************************************************************************
String _$sharingIntentStreamHash() =>
r'caf4ba31e79fd028a2497f6acc6d5a927924ed78';
r'486f994fc0e01a2cffdb19d93f0a332f96a9850c';
/// See also [sharingIntentStream].
@ProviderFor(sharingIntentStream)
final sharingIntentStreamProvider =
AutoDisposeProvider<Raw<Stream<ReceivedIntentParameter>>>.internal(
Provider<Raw<Stream<ReceivedIntentParameter>>>.internal(
sharingIntentStream,
name: r'sharingIntentStreamProvider',
debugGetCreateSourceHash:
@@ -26,6 +26,6 @@ final sharingIntentStreamProvider =
@Deprecated('Will be removed in 3.0. Use Ref instead')
// ignore: unused_element
typedef SharingIntentStreamRef =
AutoDisposeProviderRef<Raw<Stream<ReceivedIntentParameter>>>;
ProviderRef<Raw<Stream<ReceivedIntentParameter>>>;
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package
+2 -4
View File
@@ -64,15 +64,13 @@ dependencies:
path_provider: ^2.1.5
pocketbase: ^0.22.0
provider: ^6.1.5
receive_intent:
git:
url: https://github.com/FaFre/receive_intent.git
ref: fix_recreate_activity
riverpod: ^2.6.1
riverpod_annotation: ^2.6.1
rss_dart: ^1.0.12
rxdart: ^0.28.0
share_plus: ^11.0.0
simple_intent_receiver:
path: ../packages/simple_intent_receiver
skeletonizer: ^1.4.3
sliver_tools: ^0.2.12
speech_to_text_google_dialog:
+3 -1
View File
@@ -1,7 +1,9 @@
# melos_managed_dependency_overrides: flutter_mozilla_components,cross_cache,flutter_chat_core,langchain_core,tavily_dart
# melos_managed_dependency_overrides: flutter_mozilla_components,simple_intent_receiver,cross_cache,flutter_chat_core,langchain_core,tavily_dart
dependency_overrides:
flutter_mozilla_components:
path: ../packages/flutter_mozilla_components
simple_intent_receiver:
path: ../packages/simple_intent_receiver
cross_cache:
path: ../../flutter_chat_ui/packages/cross_cache
flutter_chat_core: