add hiddify/iimport schema
This commit is contained in:
@@ -66,6 +66,8 @@
|
|||||||
<data android:scheme="clashmeta" />
|
<data android:scheme="clashmeta" />
|
||||||
<data android:scheme="hiddify" />
|
<data android:scheme="hiddify" />
|
||||||
<data android:host="install-sub" />
|
<data android:host="install-sub" />
|
||||||
|
<data android:scheme="hiddify" />
|
||||||
|
<data android:host="import" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
|
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
|
|||||||
@@ -10,27 +10,20 @@ abstract class LinkParser {
|
|||||||
static String generateSubShareLink(String url, [String? name]) {
|
static String generateSubShareLink(String url, [String? name]) {
|
||||||
final uri = Uri.tryParse(url);
|
final uri = Uri.tryParse(url);
|
||||||
if (uri == null) return '';
|
if (uri == null) return '';
|
||||||
return Uri(
|
final modifiedUri = Uri(
|
||||||
scheme: 'hiddify',
|
scheme: uri.scheme,
|
||||||
host: 'install-sub',
|
host: uri.host,
|
||||||
queryParameters: {
|
path: uri.path,
|
||||||
"url": uri.toString(),
|
query: uri.query,
|
||||||
if (name != null) "name": name,
|
fragment: name??uri.fragment,
|
||||||
},
|
);
|
||||||
).toString();
|
return 'hiddify://import/$modifiedUri';
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// protocols schemas
|
// protocols schemas
|
||||||
static const protocols = {'clash', 'clashmeta', 'sing-box', 'hiddify'};
|
static const protocols = {'clash', 'clashmeta', 'sing-box', 'hiddify'};
|
||||||
static const rawProtocols = {
|
|
||||||
'ss',
|
|
||||||
'vmess',
|
|
||||||
'vless',
|
|
||||||
'trojan',
|
|
||||||
'tuic',
|
|
||||||
'hysteria2',
|
|
||||||
'ssh',
|
|
||||||
};
|
|
||||||
|
|
||||||
static ProfileLink? parse(String link) {
|
static ProfileLink? parse(String link) {
|
||||||
return simple(link) ?? deep(link);
|
return simple(link) ?? deep(link);
|
||||||
@@ -86,6 +79,10 @@ abstract class LinkParser {
|
|||||||
!queryParams.containsKey('url')) return null;
|
!queryParams.containsKey('url')) return null;
|
||||||
return (url: queryParams['url']!, name: queryParams['name'] ?? '');
|
return (url: queryParams['url']!, name: queryParams['name'] ?? '');
|
||||||
case 'hiddify':
|
case 'hiddify':
|
||||||
|
if (uri.authority=="import") {
|
||||||
|
return (url: uri.path+(uri.hasQuery?"?${uri.query}":""), name: uri.fragment);
|
||||||
|
}
|
||||||
|
//for backward compatibility
|
||||||
if ((uri.authority != 'install-config' &&
|
if ((uri.authority != 'install-config' &&
|
||||||
uri.authority != 'install-sub') ||
|
uri.authority != 'install-sub') ||
|
||||||
!queryParams.containsKey('url')) return null;
|
!queryParams.containsKey('url')) return null;
|
||||||
|
|||||||
Reference in New Issue
Block a user