Refactor service wrappers

This commit is contained in:
problematicconsumer
2024-01-05 15:21:10 +03:30
parent 8e1045f862
commit 348c2935ec
5 changed files with 7 additions and 8 deletions

View File

@@ -0,0 +1,45 @@
import 'dart:io';
import 'package:hiddify/utils/utils.dart';
import 'package:protocol_handler/protocol_handler.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'deep_link_notifier.g.dart';
typedef NewProfileLink = ({String? url, String? name});
@Riverpod(keepAlive: true)
class DeepLinkNotifier extends _$DeepLinkNotifier
with ProtocolListener, InfraLogger {
@override
Future<NewProfileLink?> build() async {
if (Platform.isLinux) return null;
for (final protocol in LinkParser.protocols) {
await protocolHandler.register(protocol);
}
protocolHandler.addListener(this);
ref.onDispose(() {
protocolHandler.removeListener(this);
});
final initialPayload = await protocolHandler.getInitialUrl();
if (initialPayload != null) {
loggy.debug('initial payload: [$initialPayload]');
final link = LinkParser.deep(initialPayload);
return link;
}
return null;
}
@override
void onProtocolUrlReceived(String url) {
super.onProtocolUrlReceived(url);
loggy.debug("url received: [$url]");
final link = LinkParser.deep(url);
if (link == null) {
loggy.debug("link was not valid");
return;
}
update((_) => link);
}
}