I lied i forgor to fix things
This commit is contained in:
parent
249c2c4a68
commit
712a52ad7b
|
@ -1222,7 +1222,7 @@ class News{
|
|||
News(this.id, this.news);
|
||||
|
||||
News.fromJson(Map<String, dynamic> json, String? userID){
|
||||
id = userID != null ? "user_${userID}" : json['news'].first['stream'];
|
||||
id = userID != null ? "user_$userID" : json['news'].first['stream'];
|
||||
news = [for (var entry in json['news']) NewsEntry.fromJson(entry)];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
/// Locales: 2
|
||||
/// Strings: 1182 (591 per locale)
|
||||
///
|
||||
/// Built on 2024-06-16 at 15:08 UTC
|
||||
/// Built on 2024-06-16 at 21:03 UTC
|
||||
|
||||
// coverage:ignore-file
|
||||
// ignore_for_file: type=lint
|
||||
|
|
|
@ -1,10 +1,8 @@
|
|||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
import 'dart:isolate';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/gestures.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'dart:developer' as developer;
|
||||
import 'package:package_info_plus/package_info_plus.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
@ -145,9 +143,9 @@ void main() async {
|
|||
}
|
||||
|
||||
// I dont want to store old cache
|
||||
Timer.periodic(Duration(minutes: 5), (Timer timer) {
|
||||
Timer.periodic(const Duration(minutes: 5), (Timer timer) {
|
||||
teto.cacheRoutine();
|
||||
developer.log("Cache routine complete, next one in ${DateTime.now().add(Duration(minutes: 5))}", name: "main");
|
||||
developer.log("Cache routine complete, next one in ${DateTime.now().add(const Duration(minutes: 5))}", name: "main");
|
||||
// if (prefs.getBool("updateInBG") == true) teto.fetchTracked(); // TODO: Somehow avoid doing that in main isolate
|
||||
});
|
||||
|
||||
|
@ -165,6 +163,12 @@ class MyApp extends StatefulWidget {
|
|||
|
||||
class MyAppState extends State<MyApp> {
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
setAccentColor(prefs.getInt("accentColor") != null ? Color(prefs.getInt("accentColor")!) : Colors.cyanAccent);
|
||||
super.initState();
|
||||
}
|
||||
|
||||
void setAccentColor(Color color){ // does this thing work??? yes??? no???
|
||||
setState(() {
|
||||
theme = theme.copyWith(colorScheme: theme.colorScheme.copyWith(primary: color));
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
// ignore_for_file: type_literal_in_constant_pattern
|
||||
|
||||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
import 'dart:developer' as developer;
|
||||
|
@ -87,7 +89,7 @@ class CacheController {
|
|||
case Cutoffs:
|
||||
return object.runtimeType.toString();
|
||||
case TetrioPlayerFromLeaderboard: // i may be a little stupid
|
||||
return object.runtimeType.toString()+"topone";
|
||||
return "${object.runtimeType}topone";
|
||||
case TetraLeagueAlphaStream:
|
||||
return object.runtimeType.toString()+object.userId;
|
||||
case SingleplayerStream:
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
// ignore_for_file: use_build_context_synchronously
|
||||
|
||||
import 'dart:io';
|
||||
import 'dart:math';
|
||||
import 'package:flutter/foundation.dart';
|
||||
|
|
|
@ -109,6 +109,7 @@ class CustomizationState extends State<CustomizationView> {
|
|||
onPressed: () {
|
||||
setState(() {
|
||||
context.findAncestorStateOfType<MyAppState>()?.setAccentColor(pickerColor);
|
||||
prefs.setInt("accentColor", pickerColor.value);
|
||||
});
|
||||
Navigator.of(context).pop();
|
||||
},
|
||||
|
@ -142,8 +143,8 @@ class CustomizationState extends State<CustomizationView> {
|
|||
trailing: DropdownButton(
|
||||
value: ratingMode,
|
||||
items: <DropdownMenuItem>[
|
||||
DropdownMenuItem(value: 0, child: Text("TR")),
|
||||
DropdownMenuItem(value: 1, child: Text("Glicko")),
|
||||
const DropdownMenuItem(value: 0, child: Text("TR")),
|
||||
const DropdownMenuItem(value: 1, child: Text("Glicko")),
|
||||
DropdownMenuItem(value: 2, child: Text(t.ratingLBposition))
|
||||
],
|
||||
onChanged: (dynamic value){
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// ignore_for_file: type_literal_in_constant_pattern
|
||||
// ignore_for_file: type_literal_in_constant_pattern, use_build_context_synchronously
|
||||
|
||||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
|
@ -75,7 +75,7 @@ class _MainState extends State<MainView> with TickerProviderStateMixin {
|
|||
//var tableData = <TableRow>[];
|
||||
final bodyGlobalKey = GlobalKey();
|
||||
bool _showSearchBar = false;
|
||||
Timer backgroundUpdate = Timer(Duration(days: 365), (){});
|
||||
Timer backgroundUpdate = Timer(const Duration(days: 365), (){});
|
||||
bool _TLHistoryWasFetched = false;
|
||||
late TabController _tabController;
|
||||
late TabController _wideScreenTabController;
|
||||
|
@ -743,7 +743,7 @@ class _TLRecords extends StatelessWidget {
|
|||
leading: Text("${data[index].endContext.firstWhere((element) => element.userId == userID).points} : ${data[index].endContext.firstWhere((element) => element.userId != userID).points}",
|
||||
style: bigScreen ? const TextStyle(fontFamily: "Eurostile Round Extended", fontSize: 28, shadows: textShadow) : const TextStyle(fontSize: 28, shadows: textShadow)),
|
||||
title: Text("vs. ${data[index].endContext.firstWhere((element) => element.userId != userID).username}"),
|
||||
subtitle: Text(timestamp(data[index].timestamp), style: TextStyle(color: Colors.grey)),
|
||||
subtitle: Text(timestamp(data[index].timestamp), style: const TextStyle(color: Colors.grey)),
|
||||
trailing: TrailingStats(
|
||||
data[index].endContext.firstWhere((element) => element.userId == userID).secondary,
|
||||
data[index].endContext.firstWhere((element) => element.userId == userID).tertiary,
|
||||
|
@ -1089,8 +1089,8 @@ class _TwoRecordsThingy extends StatelessWidget {
|
|||
crossAxisAlignment: WrapCrossAlignment.start,
|
||||
spacing: 20,
|
||||
children: [
|
||||
TextButton(onPressed: (){launchInBrowser(Uri.parse("https://tetr.io/#r:${sprint!.replayId}"));}, child: Text("Open replay in TETR.IO")),
|
||||
TextButton(onPressed: (){launchInBrowser(Uri.parse("https://inoue.szy.lol/api/replay/${sprint!.replayId}"));}, child: Text("Download replay")),
|
||||
TextButton(onPressed: (){launchInBrowser(Uri.parse("https://tetr.io/#r:${sprint!.replayId}"));}, child: Text(t.openSPreplay)),
|
||||
TextButton(onPressed: (){launchInBrowser(Uri.parse("https://inoue.szy.lol/api/replay/${sprint!.replayId}"));}, child: Text(t.downloadSPreplay)),
|
||||
],
|
||||
),
|
||||
if (sprintStream.records.length > 1) SizedBox(
|
||||
|
@ -1102,8 +1102,8 @@ class _TwoRecordsThingy extends StatelessWidget {
|
|||
onTap: () => Navigator.push(context, MaterialPageRoute(builder: (context) => SingleplayerRecordView(record: sprintStream.records[i]))),
|
||||
leading: Text("#${i+1}", style: const TextStyle(fontFamily: "Eurostile Round", fontSize: 28, shadows: textShadow, height: 0.9) ),
|
||||
title: Text(get40lTime(sprintStream.records[i].endContext.finalTime.inMicroseconds),
|
||||
style: TextStyle(fontSize: 18)),
|
||||
subtitle: Text(timestamp(sprintStream.records[i].timestamp), style: TextStyle(color: Colors.grey, height: 0.85)),
|
||||
style: const TextStyle(fontSize: 18)),
|
||||
subtitle: Text(timestamp(sprintStream.records[i].timestamp), style: const TextStyle(color: Colors.grey, height: 0.85)),
|
||||
trailing: SpTrailingStats(sprintStream.records[i].endContext)
|
||||
)
|
||||
],
|
||||
|
@ -1175,8 +1175,8 @@ class _TwoRecordsThingy extends StatelessWidget {
|
|||
crossAxisAlignment: WrapCrossAlignment.start,
|
||||
spacing: 20,
|
||||
children: [
|
||||
TextButton(onPressed: (){launchInBrowser(Uri.parse("https://tetr.io/#r:${blitz!.replayId}"));}, child: Text("Open replay in TETR.IO")),
|
||||
TextButton(onPressed: (){launchInBrowser(Uri.parse("https://inoue.szy.lol/api/replay/${blitz!.replayId}"));}, child: Text("Download replay")),
|
||||
TextButton(onPressed: (){launchInBrowser(Uri.parse("https://tetr.io/#r:${blitz!.replayId}"));}, child: Text(t.openSPreplay)),
|
||||
TextButton(onPressed: (){launchInBrowser(Uri.parse("https://inoue.szy.lol/api/replay/${blitz!.replayId}"));}, child: Text(t.downloadSPreplay)),
|
||||
],
|
||||
),
|
||||
if (blitzStream.records.length > 1) SizedBox(
|
||||
|
@ -1188,8 +1188,8 @@ class _TwoRecordsThingy extends StatelessWidget {
|
|||
onTap: () => Navigator.push(context, MaterialPageRoute(builder: (context) => SingleplayerRecordView(record: blitzStream.records[i]))),
|
||||
leading: Text("#${i+1}", style: const TextStyle(fontFamily: "Eurostile Round", fontSize: 28, shadows: textShadow, height: 0.9) ),
|
||||
title: Text("${NumberFormat.decimalPattern().format(blitzStream.records[i].endContext.score)} points",
|
||||
style: TextStyle(fontSize: 18)),
|
||||
subtitle: Text(timestamp(blitzStream.records[i].timestamp), style: TextStyle(color: Colors.grey, height: 0.85)),
|
||||
style: const TextStyle(fontSize: 18)),
|
||||
subtitle: Text(timestamp(blitzStream.records[i].timestamp), style: const TextStyle(color: Colors.grey, height: 0.85)),
|
||||
trailing: SpTrailingStats(blitzStream.records[i].endContext)
|
||||
)
|
||||
],
|
||||
|
|
|
@ -60,7 +60,7 @@ class SprintAndBlitzState extends State<SprintAndBlitzView> {
|
|||
Table(
|
||||
defaultVerticalAlignment: TableCellVerticalAlignment.middle,
|
||||
border: TableBorder.all(color: Colors.grey.shade900),
|
||||
columnWidths: {0: const FixedColumnWidth(48)},
|
||||
columnWidths: const {0: FixedColumnWidth(48)},
|
||||
children: [
|
||||
TableRow(
|
||||
children: [
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// ignore_for_file: use_build_context_synchronously
|
||||
// ignore_for_file: use_build_context_synchronously, type_literal_in_constant_pattern
|
||||
|
||||
import 'dart:io';
|
||||
import 'package:tetra_stats/data_objects/tetrio_multiplayer_replay.dart';
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
// ignore_for_file: curly_braces_in_flow_control_structures
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:tetra_stats/data_objects/tetrio.dart';
|
||||
import 'package:tetra_stats/utils/numers_formats.dart';
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
// ignore_for_file: curly_braces_in_flow_control_structures
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:syncfusion_flutter_gauges/gauges.dart';
|
||||
import 'package:tetra_stats/data_objects/tetrio.dart';
|
||||
|
|
|
@ -5,7 +5,6 @@ import 'package:tetra_stats/gen/strings.g.dart';
|
|||
import 'package:tetra_stats/utils/relative_timestamps.dart';
|
||||
import 'package:tetra_stats/utils/text_shadow.dart';
|
||||
import 'package:tetra_stats/views/singleplayer_record_view.dart';
|
||||
import 'package:tetra_stats/widgets/singleplayer_record.dart';
|
||||
import 'package:tetra_stats/widgets/sp_trailing_stats.dart';
|
||||
import 'package:tetra_stats/widgets/text_timestamp.dart';
|
||||
|
||||
|
@ -42,7 +41,7 @@ class RecentSingleplayerGames extends StatelessWidget{
|
|||
String() => "huh",
|
||||
},
|
||||
style: const TextStyle(fontSize: 18)),
|
||||
subtitle: Text(timestamp(record.timestamp), style: TextStyle(color: Colors.grey, height: 0.85)),
|
||||
subtitle: Text(timestamp(record.timestamp), style: const TextStyle(color: Colors.grey, height: 0.85)),
|
||||
trailing: SpTrailingStats(record.endContext)
|
||||
)
|
||||
],
|
||||
|
|
|
@ -147,8 +147,8 @@ class SingleplayerRecord extends StatelessWidget {
|
|||
"5mblast" => get40lTime(stream!.records[i].endContext.finalTime.inMicroseconds),
|
||||
String() => "huh",
|
||||
},
|
||||
style: TextStyle(fontSize: 18)),
|
||||
subtitle: Text(timestamp(stream!.records[i].timestamp), style: TextStyle(color: Colors.grey, height: 0.85)),
|
||||
style: const TextStyle(fontSize: 18)),
|
||||
subtitle: Text(timestamp(stream!.records[i].timestamp), style: const TextStyle(color: Colors.grey, height: 0.85)),
|
||||
trailing: SpTrailingStats(stream!.records[i].endContext)
|
||||
)
|
||||
]
|
||||
|
|
|
@ -5,7 +5,7 @@ import 'package:tetra_stats/utils/numers_formats.dart';
|
|||
class SpTrailingStats extends StatelessWidget{
|
||||
final EndContextSingle endContext;
|
||||
|
||||
const SpTrailingStats(this.endContext);
|
||||
const SpTrailingStats(this.endContext, {super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
import 'dart:math';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:tetra_stats/data_objects/tetrio.dart';
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:tetra_stats/gen/strings.g.dart';
|
||||
import 'package:tetra_stats/main.dart';
|
||||
|
|
|
@ -13,7 +13,7 @@ class TLRatingThingy extends StatelessWidget{
|
|||
final TetraLeagueAlpha? oldTl;
|
||||
final double? topTR;
|
||||
|
||||
const TLRatingThingy({required this.userID, required this.tlData, this.oldTl, this.topTR});
|
||||
const TLRatingThingy({super.key, required this.userID, required this.tlData, this.oldTl, this.topTR});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:tetra_stats/data_objects/tetrio.dart';
|
||||
import 'package:syncfusion_flutter_gauges/gauges.dart';
|
||||
|
|
Loading…
Reference in New Issue