diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index be92bef..eda8cc3 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -33,6 +33,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/lib/pages/illust_page.dart b/lib/pages/illust_page.dart
index 64f5eaa..fe3ad4e 100644
--- a/lib/pages/illust_page.dart
+++ b/lib/pages/illust_page.dart
@@ -981,7 +981,7 @@ class _BottomBarState extends State<_BottomBar> with TickerProviderStateMixin {
).fixWidth(96),
Button(
onPressed: () {
- var text = "https://pixiv.net/artworks/${widget.illust.id}";
+ var text = "https://www.pixiv.net/artworks/${widget.illust.id}";
Clipboard.setData(ClipboardData(text: text));
showToast(context, message: "Copied".tl);
},
diff --git a/lib/utils/app_links.dart b/lib/utils/app_links.dart
index 8495e40..4e8d501 100644
--- a/lib/utils/app_links.dart
+++ b/lib/utils/app_links.dart
@@ -5,7 +5,9 @@ import 'package:pixes/foundation/app.dart';
import 'package:pixes/foundation/log.dart';
import 'package:pixes/pages/illust_page.dart';
import 'package:pixes/pages/novel_page.dart';
+import 'package:pixes/pages/search_page.dart';
import 'package:pixes/pages/user_info_page.dart';
+import 'package:pixes/utils/ext.dart';
import 'package:win32_registry/win32_registry.dart';
Future _register(String scheme) async {
@@ -31,11 +33,17 @@ Future _register(String scheme) async {
bool Function(Uri uri)? onLink;
+bool _firstLink = true;
+
void handleLinks() async {
if (App.isWindows) {
await _register("pixiv");
}
- AppLinks().uriLinkStream.listen((uri) {
+ AppLinks().uriLinkStream.listen((uri) async {
+ if (_firstLink) {
+ await Future.delayed(const Duration(milliseconds: 200));
+ }
+ _firstLink = false;
Log.info("App Link", uri.toString());
if (onLink?.call(uri) == true) {
return;
@@ -70,6 +78,33 @@ bool handleLink(Uri uri) {
}
}
return false;
+ } else if (uri.scheme == "https") {
+ var path = uri.toString().split("/").sublist(3);
+ switch (path[0]) {
+ case "users":
+ if (path.length >= 2) {
+ App.mainNavigatorKey?.currentContext?.to(() => UserInfoPage(path[1]));
+ return true;
+ }
+ case "novel":
+ if (path.length == 2) {
+ App.mainNavigatorKey?.currentContext
+ ?.to(() => NovelPageWithId(path[1].nums));
+ return true;
+ }
+ case "artworks":
+ if (path.length == 2) {
+ App.mainNavigatorKey?.currentContext
+ ?.to(() => IllustPageWithId(path[1]));
+ return true;
+ }
+ case "tags":
+ if (path.length == 2) {
+ App.mainNavigatorKey?.currentContext
+ ?.to(() => SearchResultPage(path[1]));
+ return true;
+ }
+ }
}
return false;
}