Files
TubeCards/lib/utils/deep_link_helper.dart
friebetill 80f218097d Initial commit
Add Space version 2.0.1
2022-03-28 14:56:00 +02:00

41 lines
979 B
Dart

import 'dart:async';
import 'dart:io';
import 'package:injectable/injectable.dart';
import 'package:rxdart/rxdart.dart';
import 'package:uni_links/uni_links.dart';
/// Adds a wrapper around the uni_links library.
@singleton
class DeepLinkHelper {
DeepLinkHelper() {
_postInitialLink();
if (Platform.isAndroid || Platform.isIOS) {
_deepLinkStreamSubscription = linkStream.listen(deepLinks.add);
}
}
late final StreamSubscription<String?> _deepLinkStreamSubscription;
final BehaviorSubject<String?> deepLinks = BehaviorSubject();
void clear() => deepLinks.add(null);
Future<void> _postInitialLink() async {
if (Platform.isAndroid || Platform.isIOS) {
try {
final initialLink = await getInitialLink();
if (initialLink != null) {
deepLinks.add(initialLink);
}
} finally {
// NO-OP
}
}
}
void dispose() {
deepLinks.close();
_deepLinkStreamSubscription.cancel();
}
}