新增信息流 (接入 Anicat G佬 新闻组+)

This commit is contained in:
2023-11-28 23:08:34 +08:00
parent 4f6623a4cd
commit 4d7f73ffc4
5 changed files with 214 additions and 105 deletions

View File

@ -2,11 +2,13 @@ import 'dart:async';
import 'dart:convert';
import 'dart:io';
import 'package:dart_rss/dart_rss.dart';
import 'package:desktop_webview_window/desktop_webview_window.dart';
import 'package:dio/dio.dart';
import 'package:hive/hive.dart';
import 'package:starcitizen_doctor/api/analytics.dart';
import 'package:starcitizen_doctor/api/api.dart';
import 'package:starcitizen_doctor/api/rss.dart';
import 'package:starcitizen_doctor/base/ui_model.dart';
import 'package:starcitizen_doctor/common/conf.dart';
import 'package:starcitizen_doctor/common/helper/log_helper.dart';
@ -25,6 +27,9 @@ import 'package:starcitizen_doctor/ui/home/webview/webview.dart';
import 'package:starcitizen_doctor/ui/home/webview/webview_localization_capture_ui_model.dart';
import 'package:url_launcher/url_launcher_string.dart';
import 'package:html/parser.dart' as html;
import 'package:html/dom.dart' as htmlDom;
import 'countdown/countdown_dialog_ui.dart';
import 'localization/localization_ui.dart';
import 'performance/performance_ui.dart';
@ -48,6 +53,9 @@ class HomeUIModel extends BaseUIModel {
bool get isCurGameRunning => _isGameRunning[scInstalledPath] ?? false;
List<RssItem>? rssVideoItems;
List<RssItem>? rssTextItems;
set lastScreenInfo(String info) {
_lastScreenInfo = info;
notifyListeners();
@ -98,6 +106,7 @@ class HomeUIModel extends BaseUIModel {
.data));
countdownFestivalListData = await Api.getFestivalCountdownList();
notifyListeners();
handleError(() => _loadRRS());
} catch (e) {
dPrint(e);
}
@ -158,6 +167,15 @@ class HomeUIModel extends BaseUIModel {
}
}
Future _loadRRS() async {
final v = await RSSApi.getRssVideo();
rssVideoItems = v;
notifyListeners();
final t = await RSSApi.getRssText();
rssTextItems = t;
notifyListeners();
}
VoidCallback? doCheck() {
if (isChecking) return null;
return () async {
@ -573,4 +591,17 @@ class HomeUIModel extends BaseUIModel {
CountdownDialogUIModel(countdownFestivalListData!));
});
}
getRssImage(RssItem item) {
final h = html.parse(item.description ?? "");
if (h.body == null) return "";
for (var node in h.body!.nodes) {
if (node is htmlDom.Element) {
if (node.localName == "img") {
return node.attributes["src"]?.trim() ?? "";
}
}
}
return "";
}
}