Basic ass "display"

This commit is contained in:
2025-02-22 14:36:18 +01:00
parent 5ed90da80b
commit 8c6ce9f6ff
2 changed files with 39 additions and 11 deletions

View File

@@ -21,6 +21,17 @@ class Game {
this.lastUpdated = '', this.lastUpdated = '',
}) : _internalVersionRegex = RegExp(versionRegex); }) : _internalVersionRegex = RegExp(versionRegex);
factory Game.fromMap(Map<String, dynamic> map) {
return Game(
name: map['name'],
versionRegex: map['version_regex'],
lastPlayed: map['last_played'],
rssFeedUrl: map['rss_feed_url'],
actualVersion: map['actual_version'],
lastUpdated: map['last_updated'],
);
}
Future<void> updateActualVersion() async { Future<void> updateActualVersion() async {
final response = await http.get(Uri.parse(rssFeedUrl)); final response = await http.get(Uri.parse(rssFeedUrl));
final document = RssFeed.parse(response.body); final document = RssFeed.parse(response.body);
@@ -74,6 +85,14 @@ last_updated = excluded.last_updated
); );
return game; return game;
} }
static Future<List<Game>> getAll() async {
final db = DB.db;
final games = await db.rawQuery(
'SELECT name, actual_version, last_played, rss_feed_url, version_regex, last_updated FROM games',
);
return games.map((e) => Game.fromMap(e)).toList();
}
} }
//CREATE TABLE IF NOT EXISTS games ( //CREATE TABLE IF NOT EXISTS games (

View File

@@ -5,16 +5,6 @@ import 'package:gamer_updater/game.dart';
void main() async { void main() async {
await DB.init(); await DB.init();
var game = Game(
name: 'Rimworld',
versionRegex: r'(\d+\.\d+\.\d+)',
lastPlayed: '1.4.3704',
rssFeedUrl:
'https://store.steampowered.com/feeds/news/app/294100/?cc=HR&l=english',
);
await game.updateActualVersion();
await GameRepository.upsert(game);
runApp(const MyApp()); runApp(const MyApp());
} }
@@ -55,6 +45,22 @@ class MyHomePage extends StatefulWidget {
} }
class _MyHomePageState extends State<MyHomePage> { class _MyHomePageState extends State<MyHomePage> {
late List<Game> games = [];
@override
void initState() {
super.initState();
GameRepository.getAll().then((games) {
setState(() {
this.games = games;
});
for (var e in games) {
e.updateActualVersion();
GameRepository.upsert(e);
}
});
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
@@ -65,7 +71,10 @@ class _MyHomePageState extends State<MyHomePage> {
body: Center( body: Center(
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[const Text('Hello cyka')], children: <Widget>[
Text(games.map((e) => e.name).join('\n')),
Text(games.map((e) => e.actualVersion).join('\n')),
],
), ),
), ),
); );