Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: #51 Rewrite Parse Logic By Dart #52

Merged
merged 6 commits into from
Jul 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion assets/js/psl.min.js

This file was deleted.

3,119 changes: 0 additions & 3,119 deletions assets/js/radar-rules-ios.js

This file was deleted.

2,637 changes: 0 additions & 2,637 deletions assets/js/radar-rules.js

This file was deleted.

700 changes: 0 additions & 700 deletions assets/js/route-recognizer.min.js

This file was deleted.

8,700 changes: 0 additions & 8,700 deletions assets/js/url.min.js

This file was deleted.

221 changes: 0 additions & 221 deletions assets/js/utils.js

This file was deleted.

2 changes: 2 additions & 0 deletions changelogs/3.0.0.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
feat: rewrite parse logic by dart
feat: support fetch rules by api
39 changes: 13 additions & 26 deletions lib/common/common.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import 'dart:convert';
import 'dart:io';

import 'package:shared_preferences/shared_preferences.dart';
import 'package:rssaid/common/link_helper.dart';
import 'package:rssaid/shared_prefs.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:system_proxy/system_proxy.dart';

Expand All @@ -20,11 +21,12 @@ extension HttpClientExtension on HttpClient {
}

class Common {
static Future<SharedPreferences> _prefs = SharedPreferences.getInstance();
static SharedPrefs prefs = SharedPrefs();

static Future<void> launchInBrowser(String url) async {
if (await canLaunch(url)) {
await launch(url, forceSafariVC: false, forceWebView: false);
var uri = Uri.parse(url);
if (await canLaunchUrl(uri)) {
await launchUrl(uri);
}
}

Expand Down Expand Up @@ -53,34 +55,19 @@ class Common {
}

static refreshRules() async {
final SharedPreferences prefs = await _prefs;
if (prefs.containsKey("Rules")) {
if (prefs.rules.isNotEmpty) {
return;
}
var url =
'https://raw.githubusercontent.com/Cay-Zhang/RSSBudRules/main/rules/radar-rules.js';

if (prefs.containsKey("ruleSource")) {
url = prefs.getString("ruleSource")!;
}

var jsCode = await getContentByUrl(Uri.parse(url));
if (jsCode != null) {
bool setRules = await prefs.setString("Rules", "$jsCode");
if (setRules) {
print('成功加载规则文件!');
}
var url = '${prefs.domain}/api/radar/rules';
var ruleUrl = LinkHelper.removeDuplicateSlashes(url);
var jsonResp = await getContentByUrl(Uri.parse(ruleUrl));
if (jsonResp != null) {
prefs.rules = jsonResp;
}
}

static Future<String?> getRules() async {
await Common.refreshRules();
final SharedPreferences prefs = await _prefs;
return await prefs.getString("Rules");
}

static Future<bool> setRuleSource(String source) async {
final SharedPreferences prefs = await _prefs;
return await prefs.setString("ruleSource", source);
return prefs.rules;
}
}
29 changes: 12 additions & 17 deletions lib/common/link_helper.dart
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
import 'package:linkify/linkify.dart';
import 'package:rssaid/models/radar.dart';
import 'package:rssaid/shared_prefs.dart';
import 'package:shared_preferences/shared_preferences.dart';

class LinkHelper {
final SharedPrefs prefs = SharedPrefs();
static final SharedPrefs prefs = SharedPrefs();
/// verify link return link
/// else return null
static String? verifyLink(String? url) {
Expand Down Expand Up @@ -53,25 +52,21 @@ class LinkHelper {
return newUrl;
}

static getSubscriptionUrl(Radar radar) async {
Future<SharedPreferences> _prefs = SharedPreferences.getInstance();
final SharedPreferences prefs = await _prefs;
var host = "https://rsshub.app/";
if (prefs.containsKey("RSSHUB")) {
host = prefs.getString("RSSHUB")!;
}
var url = "$host${radar.path}";
static getSubscriptionUrl(bool isRssHub, String path) async {
var host = prefs.domain;
var url = "$host/$path";

url = removeDuplicateSlashes(url);
if (!radar.isRssHub) {
url = radar.path!;

if (!isRssHub) {
url = path;
return url;
}

if (prefs.containsKey("currentParams")) {
url += prefs.getString("currentParams")!;
if (prefs.currentParams.isNotEmpty) {
url += prefs.currentParams;
} else {
url += (prefs.containsKey("defaultParams")
? prefs.getString("defaultParams")
: "")!;
url += prefs.defaultParams;
}
return url;
}
Expand Down
3 changes: 2 additions & 1 deletion lib/l10n/app_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -52,5 +52,6 @@
"settings": "Settings",
"common": "General",
"about": "About",
"refreshRules":"Refresh Rules"
"refreshRules":"Refresh Rules",
"preview": "Preview"
}
3 changes: 2 additions & 1 deletion lib/l10n/app_zh.arb
Original file line number Diff line number Diff line change
Expand Up @@ -52,5 +52,6 @@
"settings": "设置",
"common": "通用",
"about": "关于",
"refreshRules":"更新规则"
"refreshRules":"更新规则",
"preview": "预览"
}
7 changes: 3 additions & 4 deletions lib/models/radar.dart
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
class Radar {
String? title;
String? _url;
String? path;
bool? _isDocs = true;
bool isRssHub = true;
String? docs;

Radar({required this.title, this.path, this.isRssHub = true, this.docs});

Radar.fromJson(Map<String, dynamic> json) {
if (json.isEmpty) return;
title = json['title'];
_url = json['_url'];
path = json['path'];
_isDocs = json['_isDocs'];
isRssHub = json['isRssHub'] == null ? true : json['isRssHub'];
}

Expand Down
Loading