Teto API was updated, it's time to update
This commit is contained in:
parent
754073a6ad
commit
5098b5ebf9
|
@ -801,8 +801,8 @@ class EndContextMulti {
|
|||
required this.success});
|
||||
|
||||
EndContextMulti.fromJson(Map<String, dynamic> json) {
|
||||
userId = json['user']['_id'];
|
||||
username = json['user']['username'];
|
||||
userId = json['id'] ?? json['user']['_id'];
|
||||
username = json['username'] ?? json['user']['username'];
|
||||
handling = Handling.fromJson(json['handling']);
|
||||
success = json['success'];
|
||||
inputs = json['inputs'];
|
||||
|
|
|
@ -4,9 +4,9 @@
|
|||
/// To regenerate, run: `dart run slang`
|
||||
///
|
||||
/// Locales: 2
|
||||
/// Strings: 970 (485 per locale)
|
||||
/// Strings: 986 (493 per locale)
|
||||
///
|
||||
/// Built on 2023-10-07 at 16:34 UTC
|
||||
/// Built on 2023-11-08 at 22:09 UTC
|
||||
|
||||
// coverage:ignore-file
|
||||
// ignore_for_file: type=lint
|
||||
|
@ -196,10 +196,9 @@ class _StringsEn implements BaseTranslations<AppLocale, _StringsEn> {
|
|||
String get notSupporter => 'Not a supporter';
|
||||
String get assignedManualy => 'That badge was assigned manualy by TETR.IO admins';
|
||||
String supporter({required Object tier}) => 'Supporter tier ${tier}';
|
||||
String comparingWith({required Object date}) => 'Comparing with data from ${date}';
|
||||
String comparingWith({required Object newDate, required Object oldDate}) => 'Data from ${newDate} comparing with ${oldDate}';
|
||||
String get top => 'Top';
|
||||
String get topRank => 'Top Rank';
|
||||
String get decaying => 'Decaying';
|
||||
String gamesUntilRanked({required Object left}) => '${left} games until being ranked';
|
||||
String get nerdStats => 'Nerd Stats';
|
||||
String get playersYouTrack => 'Players you track';
|
||||
|
@ -222,7 +221,7 @@ class _StringsEn implements BaseTranslations<AppLocale, _StringsEn> {
|
|||
String get yourIDText => 'Every time when app loads, stats of that player will be fetched. Please prefer ID over nickname because nickname can be changed.';
|
||||
String get language => 'Language';
|
||||
String get aboutApp => 'About app';
|
||||
String aboutAppText({required Object appName, required Object packageName, required Object version, required Object buildNumber}) => '${appName} (${packageName}) Version ${version} Build ${buildNumber}\n\nDeveloped by dan63047\nFormulas provided by kerrmunism\nHistory provided by p1nkl0bst3r';
|
||||
String aboutAppText({required Object appName, required Object packageName, required Object version, required Object buildNumber}) => '${appName} (${packageName}) Version ${version} Build ${buildNumber}\n\nDeveloped by dan63047\nFormulas provided by kerrmunism\nHistory provided by p1nkl0bst3r\nTETR.IO replay grabber API by szy';
|
||||
String stateViewTitle({required Object nickname, required Object date}) => '${nickname} account on ${date}';
|
||||
String statesViewTitle({required Object number, required Object nickname}) => '${number} states of ${nickname} account';
|
||||
String matchesViewTitle({required Object nickname}) => '${nickname} TL matches';
|
||||
|
@ -237,9 +236,15 @@ class _StringsEn implements BaseTranslations<AppLocale, _StringsEn> {
|
|||
String trackedPlayersEntry({required Object nickname, required Object numberOfStates}) => '${nickname}: ${numberOfStates} states';
|
||||
String trackedPlayersDescription({required Object firstStateDate, required Object lastStateDate}) => 'From ${firstStateDate} until ${lastStateDate}';
|
||||
String trackedPlayersStatesDeleted({required Object nickname}) => '${nickname} states was removed from database!';
|
||||
String get duplicatedFix => 'Remove duplicated TL mathces';
|
||||
String get compressDB => 'Compress DB';
|
||||
String SpaceSaved({required Object size}) => 'Space saved: ${size}';
|
||||
String averageXrank({required Object rankLetter}) => 'Average ${rankLetter} rank';
|
||||
String get vs => 'vs';
|
||||
String get inTLmatch => 'in TL match';
|
||||
String get downloadReplay => 'Download .ttrm replay';
|
||||
String get openReplay => 'Open replay in TETR.IO';
|
||||
String replaySaved({required Object path}) => 'Replay saved to ${path}';
|
||||
String get match => 'Match';
|
||||
String roundNumber({required Object n}) => 'Round ${n}';
|
||||
String get statsFor => 'Stats for';
|
||||
|
@ -693,6 +698,9 @@ class _StringsErrorsEn {
|
|||
String get p1nkl0bst3rTooManyRequests => 'Too many requests to third party API. Try again later';
|
||||
String get p1nkl0bst3rinternal => 'Something happend on the p1nkl0bst3r side';
|
||||
String get p1nkl0bst3rinternalWebVersion => 'Something happend on the p1nkl0bst3r side (or on oskware_bridge, idk honestly)';
|
||||
String get replayAlreadySaved => 'Replay already saved';
|
||||
String get replayExpired => 'Replay expired and not available anymore';
|
||||
String get replayRejected => 'Third party API blocked your IP address.\nChange IP address or reach out to szy';
|
||||
}
|
||||
|
||||
// Path: <root>
|
||||
|
@ -766,10 +774,9 @@ class _StringsRu implements _StringsEn {
|
|||
@override String get notSupporter => 'Нет саппортерки';
|
||||
@override String supporter({required Object tier}) => 'Саппортерка ${tier} уровня';
|
||||
@override String get assignedManualy => 'Этот значок был присвоен вручную администрацией TETR.IO';
|
||||
@override String comparingWith({required Object date}) => 'Сравнивая с данными от ${date}';
|
||||
@override String comparingWith({required Object newDate, required Object oldDate}) => 'Данные от ${newDate} в сравнении с данными от ${oldDate}';
|
||||
@override String get top => 'Топ';
|
||||
@override String get topRank => 'Топ Ранг';
|
||||
@override String get decaying => 'Загнивает';
|
||||
@override String gamesUntilRanked({required Object left}) => '${left} матчей до получения рейтинга';
|
||||
@override String get nerdStats => 'Для задротов';
|
||||
@override String get playersYouTrack => 'Отслеживаемые игроки';
|
||||
|
@ -792,7 +799,7 @@ class _StringsRu implements _StringsEn {
|
|||
@override String get yourIDText => 'Каждый раз, когда приложение запускается, приложение будет получать статистику этого игрока. Пожалуйста, отдайте предпочтение ID, так как никнейм можно изменить.';
|
||||
@override String get language => 'Язык (Language)';
|
||||
@override String get aboutApp => 'О приложении';
|
||||
@override String aboutAppText({required Object appName, required Object packageName, required Object version, required Object buildNumber}) => '${appName} (${packageName}) Версия ${version} Сборка ${buildNumber}\n\nРазработал dan63047\nФормулы предоставил kerrmunism\nИсторию предоставляет p1nkl0bst3r';
|
||||
@override String aboutAppText({required Object appName, required Object packageName, required Object version, required Object buildNumber}) => '${appName} (${packageName}) Версия ${version} Сборка ${buildNumber}\n\nРазработал dan63047\nФормулы предоставил kerrmunism\nИсторию предоставляет p1nkl0bst3r\nВозможность скачивать повторы из TETR.IO предоставляет szy';
|
||||
@override String stateViewTitle({required Object nickname, required Object date}) => 'Аккаунт ${nickname} ${date}';
|
||||
@override String statesViewTitle({required Object number, required Object nickname}) => '${number} состояний аккаунта ${nickname}';
|
||||
@override String matchesViewTitle({required Object nickname}) => 'Матчи аккаунта ${nickname}';
|
||||
|
@ -807,9 +814,15 @@ class _StringsRu implements _StringsEn {
|
|||
@override String trackedPlayersEntry({required Object nickname, required Object numberOfStates}) => '${nickname}: ${numberOfStates} состояний';
|
||||
@override String trackedPlayersDescription({required Object firstStateDate, required Object lastStateDate}) => 'Начиная с ${firstStateDate} и заканчивая ${lastStateDate}';
|
||||
@override String trackedPlayersStatesDeleted({required Object nickname}) => 'Состояния аккаунта ${nickname} были удалены из локальной базы данных!';
|
||||
@override String get duplicatedFix => 'Удалить дубликаты матчей в Тетра Лиге';
|
||||
@override String get compressDB => 'Сжать базу данных';
|
||||
@override String SpaceSaved({required Object size}) => 'Места освобождено: ${size}';
|
||||
@override String averageXrank({required Object rankLetter}) => 'Средний ${rankLetter} ранг';
|
||||
@override String get vs => 'против';
|
||||
@override String get inTLmatch => 'в матче ТЛ';
|
||||
@override String get downloadReplay => 'Скачать .ttrm повтор';
|
||||
@override String get openReplay => 'Открыть повтор в TETR.IO';
|
||||
@override String replaySaved({required Object path}) => 'Повтор сохранён по пути ${path}';
|
||||
@override String get match => 'Матч';
|
||||
@override String roundNumber({required Object n}) => 'Раунд ${n}';
|
||||
@override String get statsFor => 'Статистика за';
|
||||
|
@ -1263,6 +1276,9 @@ class _StringsErrorsRu implements _StringsErrorsEn {
|
|||
@override String get p1nkl0bst3rTooManyRequests => 'Слишком много запросов к стороннему API. Попробуйте позже';
|
||||
@override String get p1nkl0bst3rinternal => 'Что-то случилось на стороне p1nkl0bst3r-а';
|
||||
@override String get p1nkl0bst3rinternalWebVersion => 'Что-то случилось на стороне p1nkl0bst3r-а (или на стороне oskware_bridge, я хз если честно)';
|
||||
@override String get replayAlreadySaved => 'Повтор уже сохранён';
|
||||
@override String get replayExpired => 'Повтор истёк и больше недоступен';
|
||||
@override String get replayRejected => 'Стороннее API заблокировало ваш IP адрес.\nСмените IP адрес или свяжитесь с szy';
|
||||
}
|
||||
|
||||
/// Flat map(s) containing all translations.
|
||||
|
@ -1327,10 +1343,9 @@ extension on _StringsEn {
|
|||
case 'notSupporter': return 'Not a supporter';
|
||||
case 'assignedManualy': return 'That badge was assigned manualy by TETR.IO admins';
|
||||
case 'supporter': return ({required Object tier}) => 'Supporter tier ${tier}';
|
||||
case 'comparingWith': return ({required Object date}) => 'Comparing with data from ${date}';
|
||||
case 'comparingWith': return ({required Object newDate, required Object oldDate}) => 'Data from ${newDate} comparing with ${oldDate}';
|
||||
case 'top': return 'Top';
|
||||
case 'topRank': return 'Top Rank';
|
||||
case 'decaying': return 'Decaying';
|
||||
case 'gamesUntilRanked': return ({required Object left}) => '${left} games until being ranked';
|
||||
case 'nerdStats': return 'Nerd Stats';
|
||||
case 'playersYouTrack': return 'Players you track';
|
||||
|
@ -1353,7 +1368,7 @@ extension on _StringsEn {
|
|||
case 'yourIDText': return 'Every time when app loads, stats of that player will be fetched. Please prefer ID over nickname because nickname can be changed.';
|
||||
case 'language': return 'Language';
|
||||
case 'aboutApp': return 'About app';
|
||||
case 'aboutAppText': return ({required Object appName, required Object packageName, required Object version, required Object buildNumber}) => '${appName} (${packageName}) Version ${version} Build ${buildNumber}\n\nDeveloped by dan63047\nFormulas provided by kerrmunism\nHistory provided by p1nkl0bst3r';
|
||||
case 'aboutAppText': return ({required Object appName, required Object packageName, required Object version, required Object buildNumber}) => '${appName} (${packageName}) Version ${version} Build ${buildNumber}\n\nDeveloped by dan63047\nFormulas provided by kerrmunism\nHistory provided by p1nkl0bst3r\nTETR.IO replay grabber API by szy';
|
||||
case 'stateViewTitle': return ({required Object nickname, required Object date}) => '${nickname} account on ${date}';
|
||||
case 'statesViewTitle': return ({required Object number, required Object nickname}) => '${number} states of ${nickname} account';
|
||||
case 'matchesViewTitle': return ({required Object nickname}) => '${nickname} TL matches';
|
||||
|
@ -1368,9 +1383,15 @@ extension on _StringsEn {
|
|||
case 'trackedPlayersEntry': return ({required Object nickname, required Object numberOfStates}) => '${nickname}: ${numberOfStates} states';
|
||||
case 'trackedPlayersDescription': return ({required Object firstStateDate, required Object lastStateDate}) => 'From ${firstStateDate} until ${lastStateDate}';
|
||||
case 'trackedPlayersStatesDeleted': return ({required Object nickname}) => '${nickname} states was removed from database!';
|
||||
case 'duplicatedFix': return 'Remove duplicated TL mathces';
|
||||
case 'compressDB': return 'Compress DB';
|
||||
case 'SpaceSaved': return ({required Object size}) => 'Space saved: ${size}';
|
||||
case 'averageXrank': return ({required Object rankLetter}) => 'Average ${rankLetter} rank';
|
||||
case 'vs': return 'vs';
|
||||
case 'inTLmatch': return 'in TL match';
|
||||
case 'downloadReplay': return 'Download .ttrm replay';
|
||||
case 'openReplay': return 'Open replay in TETR.IO';
|
||||
case 'replaySaved': return ({required Object path}) => 'Replay saved to ${path}';
|
||||
case 'match': return 'Match';
|
||||
case 'roundNumber': return ({required Object n}) => 'Round ${n}';
|
||||
case 'statsFor': return 'Stats for';
|
||||
|
@ -1499,6 +1520,9 @@ extension on _StringsEn {
|
|||
case 'errors.p1nkl0bst3rTooManyRequests': return 'Too many requests to third party API. Try again later';
|
||||
case 'errors.p1nkl0bst3rinternal': return 'Something happend on the p1nkl0bst3r side';
|
||||
case 'errors.p1nkl0bst3rinternalWebVersion': return 'Something happend on the p1nkl0bst3r side (or on oskware_bridge, idk honestly)';
|
||||
case 'errors.replayAlreadySaved': return 'Replay already saved';
|
||||
case 'errors.replayExpired': return 'Replay expired and not available anymore';
|
||||
case 'errors.replayRejected': return 'Third party API blocked your IP address.\nChange IP address or reach out to szy';
|
||||
case 'countries.': return 'Not selected';
|
||||
case 'countries.AF': return 'Afghanistan';
|
||||
case 'countries.AX': return 'Åland Islands';
|
||||
|
@ -1822,10 +1846,9 @@ extension on _StringsRu {
|
|||
case 'notSupporter': return 'Нет саппортерки';
|
||||
case 'supporter': return ({required Object tier}) => 'Саппортерка ${tier} уровня';
|
||||
case 'assignedManualy': return 'Этот значок был присвоен вручную администрацией TETR.IO';
|
||||
case 'comparingWith': return ({required Object date}) => 'Сравнивая с данными от ${date}';
|
||||
case 'comparingWith': return ({required Object newDate, required Object oldDate}) => 'Данные от ${newDate} в сравнении с данными от ${oldDate}';
|
||||
case 'top': return 'Топ';
|
||||
case 'topRank': return 'Топ Ранг';
|
||||
case 'decaying': return 'Загнивает';
|
||||
case 'gamesUntilRanked': return ({required Object left}) => '${left} матчей до получения рейтинга';
|
||||
case 'nerdStats': return 'Для задротов';
|
||||
case 'playersYouTrack': return 'Отслеживаемые игроки';
|
||||
|
@ -1848,7 +1871,7 @@ extension on _StringsRu {
|
|||
case 'yourIDText': return 'Каждый раз, когда приложение запускается, приложение будет получать статистику этого игрока. Пожалуйста, отдайте предпочтение ID, так как никнейм можно изменить.';
|
||||
case 'language': return 'Язык (Language)';
|
||||
case 'aboutApp': return 'О приложении';
|
||||
case 'aboutAppText': return ({required Object appName, required Object packageName, required Object version, required Object buildNumber}) => '${appName} (${packageName}) Версия ${version} Сборка ${buildNumber}\n\nРазработал dan63047\nФормулы предоставил kerrmunism\nИсторию предоставляет p1nkl0bst3r';
|
||||
case 'aboutAppText': return ({required Object appName, required Object packageName, required Object version, required Object buildNumber}) => '${appName} (${packageName}) Версия ${version} Сборка ${buildNumber}\n\nРазработал dan63047\nФормулы предоставил kerrmunism\nИсторию предоставляет p1nkl0bst3r\nВозможность скачивать повторы из TETR.IO предоставляет szy';
|
||||
case 'stateViewTitle': return ({required Object nickname, required Object date}) => 'Аккаунт ${nickname} ${date}';
|
||||
case 'statesViewTitle': return ({required Object number, required Object nickname}) => '${number} состояний аккаунта ${nickname}';
|
||||
case 'matchesViewTitle': return ({required Object nickname}) => 'Матчи аккаунта ${nickname}';
|
||||
|
@ -1863,9 +1886,15 @@ extension on _StringsRu {
|
|||
case 'trackedPlayersEntry': return ({required Object nickname, required Object numberOfStates}) => '${nickname}: ${numberOfStates} состояний';
|
||||
case 'trackedPlayersDescription': return ({required Object firstStateDate, required Object lastStateDate}) => 'Начиная с ${firstStateDate} и заканчивая ${lastStateDate}';
|
||||
case 'trackedPlayersStatesDeleted': return ({required Object nickname}) => 'Состояния аккаунта ${nickname} были удалены из локальной базы данных!';
|
||||
case 'duplicatedFix': return 'Удалить дубликаты матчей в Тетра Лиге';
|
||||
case 'compressDB': return 'Сжать базу данных';
|
||||
case 'SpaceSaved': return ({required Object size}) => 'Места освобождено: ${size}';
|
||||
case 'averageXrank': return ({required Object rankLetter}) => 'Средний ${rankLetter} ранг';
|
||||
case 'vs': return 'против';
|
||||
case 'inTLmatch': return 'в матче ТЛ';
|
||||
case 'downloadReplay': return 'Скачать .ttrm повтор';
|
||||
case 'openReplay': return 'Открыть повтор в TETR.IO';
|
||||
case 'replaySaved': return ({required Object path}) => 'Повтор сохранён по пути ${path}';
|
||||
case 'match': return 'Матч';
|
||||
case 'roundNumber': return ({required Object n}) => 'Раунд ${n}';
|
||||
case 'statsFor': return 'Статистика за';
|
||||
|
@ -1994,6 +2023,9 @@ extension on _StringsRu {
|
|||
case 'errors.p1nkl0bst3rTooManyRequests': return 'Слишком много запросов к стороннему API. Попробуйте позже';
|
||||
case 'errors.p1nkl0bst3rinternal': return 'Что-то случилось на стороне p1nkl0bst3r-а';
|
||||
case 'errors.p1nkl0bst3rinternalWebVersion': return 'Что-то случилось на стороне p1nkl0bst3r-а (или на стороне oskware_bridge, я хз если честно)';
|
||||
case 'errors.replayAlreadySaved': return 'Повтор уже сохранён';
|
||||
case 'errors.replayExpired': return 'Повтор истёк и больше недоступен';
|
||||
case 'errors.replayRejected': return 'Стороннее API заблокировало ваш IP адрес.\nСмените IP адрес или свяжитесь с szy';
|
||||
case 'countries.': return 'Не выбрана';
|
||||
case 'countries.AF': return 'Афганистан';
|
||||
case 'countries.AX': return 'Аландские острова';
|
||||
|
|
|
@ -59,8 +59,8 @@ class TetrioService extends DB {
|
|||
final Map<String, List<News>> _newsCache = {};
|
||||
final Map<String, Map<String, double?>> _topTRcache = {};
|
||||
final Map<String, TetraLeagueAlphaStream> _tlStreamsCache = {}; // i'm trying to respect oskware api It should look something like {"cached_until": TetrioPlayer}
|
||||
// final client = UserAgentClient("Tetra Stats v${packageInfo.version} (dm @dan63047 if someone abuse that software)", http.Client());
|
||||
final client = UserAgentClient("Kagari-chan loves osk (Tetra Stats dev build)", http.Client());
|
||||
final client = UserAgentClient("Tetra Stats v${packageInfo.version} (dm @dan63047 if someone abuse that software)", http.Client());
|
||||
// final client = UserAgentClient("Kagari-chan loves osk (Tetra Stats dev build)", http.Client());
|
||||
static final TetrioService _shared = TetrioService._sharedInstance();
|
||||
factory TetrioService() => _shared;
|
||||
late final StreamController<Map<String, List<TetrioPlayer>>> _tetrioStreamController;
|
||||
|
|
|
@ -113,9 +113,11 @@ class CustomizationState extends State<CustomizationView> {
|
|||
}),
|
||||
ListTile(
|
||||
title: Text("Font"),
|
||||
subtitle: Text("Not implemented"),
|
||||
),
|
||||
ListTile(
|
||||
title: Text("Stats Table in TL mathes list"),
|
||||
subtitle: Text("Not implemented"),
|
||||
),
|
||||
],
|
||||
)),
|
||||
|
|
|
@ -63,13 +63,13 @@ class TlMatchResultState extends State<TlMatchResultView> {
|
|||
PopupMenuButton(
|
||||
enabled: widget.record.replayAvalable,
|
||||
itemBuilder: (BuildContext context) => <PopupMenuEntry>[
|
||||
const PopupMenuItem(
|
||||
PopupMenuItem(
|
||||
value: 1,
|
||||
child: Text("Download le replay"),
|
||||
child: Text(t.downloadReplay),
|
||||
),
|
||||
const PopupMenuItem(
|
||||
PopupMenuItem(
|
||||
value: 2,
|
||||
child: Text("Open le replay in TETR.IO"),
|
||||
child: Text(t.openReplay),
|
||||
),
|
||||
],
|
||||
onSelected: (value) async {
|
||||
|
@ -86,13 +86,13 @@ class TlMatchResultState extends State<TlMatchResultView> {
|
|||
} else{
|
||||
try{
|
||||
String path = await teto.szyDownloadAndSaveReplay(widget.record.replayId);
|
||||
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text("Replay saved to $path")));
|
||||
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(t.replaySaved(path: path))));
|
||||
} on TetrioReplayAlreadyExist{
|
||||
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text("Replay already saved")));
|
||||
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(t.errors.replayAlreadySaved)));
|
||||
} on SzyNotFound {
|
||||
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text("Replay expired (i think)")));
|
||||
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(t.errors.replayExpired)));
|
||||
} on SzyForbidden {
|
||||
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text("Request has been rejected")));
|
||||
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(t.errors.replayRejected)));
|
||||
} on SzyTooManyRequests {
|
||||
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(t.errors.tooManyRequests)));
|
||||
}
|
||||
|
|
|
@ -48,11 +48,11 @@ class TrackedPlayersState extends State<TrackedPlayersView> {
|
|||
itemBuilder: (BuildContext context) => <PopupMenuEntry>[
|
||||
PopupMenuItem(
|
||||
value: 1,
|
||||
child: Text("Remove duplicated TL mathces"),
|
||||
child: Text(t.duplicatedFix),
|
||||
),
|
||||
PopupMenuItem(
|
||||
value: 2,
|
||||
child: Text("Compress DB"),
|
||||
child: Text(t.compressDB),
|
||||
),
|
||||
],
|
||||
onSelected: (value) {
|
||||
|
@ -61,7 +61,7 @@ class TrackedPlayersState extends State<TrackedPlayersView> {
|
|||
teto.removeDuplicatesFromTLMatches();
|
||||
break;
|
||||
case 2:
|
||||
teto.compressDB().then((value) => ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text("Space saved: ${bytesToSize(value)}"))));
|
||||
teto.compressDB().then((value) => ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(t.SpaceSaved(size: bytesToSize(value))))));
|
||||
break;
|
||||
default:
|
||||
}
|
||||
|
|
|
@ -47,7 +47,6 @@ class _TLThingyState extends State<TLThingy> {
|
|||
final t = Translations.of(context);
|
||||
return LayoutBuilder(builder: (context, constraints) {
|
||||
bool bigScreen = constraints.maxWidth > 768;
|
||||
print(_currentRangeValues);
|
||||
return ListView.builder(
|
||||
physics: const ClampingScrollPhysics(),
|
||||
itemCount: 1,
|
||||
|
@ -56,7 +55,8 @@ class _TLThingyState extends State<TLThingy> {
|
|||
children: (currentTl.gamesPlayed > 0)
|
||||
? [
|
||||
if (widget.showTitle) Text(t.tetraLeague, style: TextStyle(fontFamily: "Eurostile Round Extended", fontSize: bigScreen ? 42 : 28)),
|
||||
if (oldTl != null) Text(t.comparingWith(date: dateFormat.format(oldTl!.timestamp))),
|
||||
if (oldTl != null) Text(t.comparingWith(newDate: dateFormat.format(currentTl.timestamp), oldDate: dateFormat.format(oldTl!.timestamp)),
|
||||
textAlign: TextAlign.center,),
|
||||
if (oldTl != null) RangeSlider(values: _currentRangeValues, max: widget.states.length.toDouble(),
|
||||
labels: RangeLabels(
|
||||
_currentRangeValues.start.round().toString(),
|
||||
|
|
|
@ -2,7 +2,7 @@ name: tetra_stats
|
|||
description: Track your and other player stats in TETR.IO
|
||||
publish_to: 'none'
|
||||
|
||||
version: 1.2.4+12
|
||||
version: 1.3.0+13
|
||||
|
||||
environment:
|
||||
sdk: '>=3.0.0'
|
||||
|
|
|
@ -59,10 +59,9 @@
|
|||
"notSupporter": "Not a supporter",
|
||||
"assignedManualy": "That badge was assigned manualy by TETR.IO admins",
|
||||
"supporter": "Supporter tier ${tier}",
|
||||
"comparingWith": "Comparing with data from ${date}",
|
||||
"comparingWith": "Data from ${newDate} comparing with ${oldDate}",
|
||||
"top": "Top",
|
||||
"topRank": "Top Rank",
|
||||
"decaying": "Decaying",
|
||||
"gamesUntilRanked": "${left} games until being ranked",
|
||||
"nerdStats": "Nerd Stats",
|
||||
"playersYouTrack": "Players you track",
|
||||
|
@ -85,7 +84,7 @@
|
|||
"yourIDText": "Every time when app loads, stats of that player will be fetched. Please prefer ID over nickname because nickname can be changed.",
|
||||
"language": "Language",
|
||||
"aboutApp": "About app",
|
||||
"aboutAppText": "${appName} (${packageName}) Version ${version} Build ${buildNumber}\n\nDeveloped by dan63047\nFormulas provided by kerrmunism\nHistory provided by p1nkl0bst3r",
|
||||
"aboutAppText": "${appName} (${packageName}) Version ${version} Build ${buildNumber}\n\nDeveloped by dan63047\nFormulas provided by kerrmunism\nHistory provided by p1nkl0bst3r\nTETR.IO replay grabber API by szy",
|
||||
"stateViewTitle": "${nickname} account on ${date}",
|
||||
"statesViewTitle": "${number} states of ${nickname} account",
|
||||
"matchesViewTitle": "${nickname} TL matches",
|
||||
|
@ -100,9 +99,15 @@
|
|||
"trackedPlayersEntry": "${nickname}: ${numberOfStates} states",
|
||||
"trackedPlayersDescription": "From ${firstStateDate} until ${lastStateDate}",
|
||||
"trackedPlayersStatesDeleted": "${nickname} states was removed from database!",
|
||||
"duplicatedFix": "Remove duplicated TL mathces",
|
||||
"compressDB": "Compress DB",
|
||||
"SpaceSaved": "Space saved: ${size}",
|
||||
"averageXrank": "Average ${rankLetter} rank",
|
||||
"vs": "vs",
|
||||
"inTLmatch": "in TL match",
|
||||
"downloadReplay": "Download .ttrm replay",
|
||||
"openReplay": "Open replay in TETR.IO",
|
||||
"replaySaved": "Replay saved to ${path}",
|
||||
"match": "Match",
|
||||
"roundNumber": "Round $n",
|
||||
"statsFor": "Stats for",
|
||||
|
@ -239,7 +244,10 @@
|
|||
"p1nkl0bst3rForbidden": "Third party API blocked your IP address.\nChange IP address or reach out to p1nkl0bst3r",
|
||||
"p1nkl0bst3rTooManyRequests": "Too many requests to third party API. Try again later",
|
||||
"p1nkl0bst3rinternal": "Something happend on the p1nkl0bst3r side",
|
||||
"p1nkl0bst3rinternalWebVersion": "Something happend on the p1nkl0bst3r side (or on oskware_bridge, idk honestly)"
|
||||
"p1nkl0bst3rinternalWebVersion": "Something happend on the p1nkl0bst3r side (or on oskware_bridge, idk honestly)",
|
||||
"replayAlreadySaved": "Replay already saved",
|
||||
"replayExpired": "Replay expired and not available anymore",
|
||||
"replayRejected": "Third party API blocked your IP address.\nChange IP address or reach out to szy"
|
||||
},
|
||||
"countries(map)": {
|
||||
"": "Not selected",
|
||||
|
|
|
@ -59,10 +59,9 @@
|
|||
"notSupporter": "Нет саппортерки",
|
||||
"supporter": "Саппортерка ${tier} уровня",
|
||||
"assignedManualy": "Этот значок был присвоен вручную администрацией TETR.IO",
|
||||
"comparingWith": "Сравнивая с данными от ${date}",
|
||||
"comparingWith": "Данные от ${newDate} в сравнении с данными от ${oldDate}",
|
||||
"top": "Топ",
|
||||
"topRank": "Топ Ранг",
|
||||
"decaying": "Загнивает",
|
||||
"gamesUntilRanked": "${left} матчей до получения рейтинга",
|
||||
"nerdStats": "Для задротов",
|
||||
"playersYouTrack": "Отслеживаемые игроки",
|
||||
|
@ -85,7 +84,7 @@
|
|||
"yourIDText": "Каждый раз, когда приложение запускается, приложение будет получать статистику этого игрока. Пожалуйста, отдайте предпочтение ID, так как никнейм можно изменить.",
|
||||
"language": "Язык (Language)",
|
||||
"aboutApp": "О приложении",
|
||||
"aboutAppText": "${appName} (${packageName}) Версия ${version} Сборка ${buildNumber}\n\nРазработал dan63047\nФормулы предоставил kerrmunism\nИсторию предоставляет p1nkl0bst3r",
|
||||
"aboutAppText": "${appName} (${packageName}) Версия ${version} Сборка ${buildNumber}\n\nРазработал dan63047\nФормулы предоставил kerrmunism\nИсторию предоставляет p1nkl0bst3r\nВозможность скачивать повторы из TETR.IO предоставляет szy",
|
||||
"stateViewTitle": "Аккаунт ${nickname} ${date}",
|
||||
"statesViewTitle": "${number} состояний аккаунта ${nickname}",
|
||||
"matchesViewTitle": "Матчи аккаунта ${nickname}",
|
||||
|
@ -100,9 +99,15 @@
|
|||
"trackedPlayersEntry": "${nickname}: ${numberOfStates} состояний",
|
||||
"trackedPlayersDescription": "Начиная с ${firstStateDate} и заканчивая ${lastStateDate}",
|
||||
"trackedPlayersStatesDeleted": "Состояния аккаунта ${nickname} были удалены из локальной базы данных!",
|
||||
"duplicatedFix": "Удалить дубликаты матчей в Тетра Лиге",
|
||||
"compressDB": "Сжать базу данных",
|
||||
"SpaceSaved": "Места освобождено: ${size}",
|
||||
"averageXrank": "Средний ${rankLetter} ранг",
|
||||
"vs": "против",
|
||||
"inTLmatch": "в матче ТЛ",
|
||||
"downloadReplay": "Скачать .ttrm повтор",
|
||||
"openReplay": "Открыть повтор в TETR.IO",
|
||||
"replaySaved": "Повтор сохранён по пути ${path}",
|
||||
"match": "Матч",
|
||||
"roundNumber": "Раунд $n",
|
||||
"statsFor": "Статистика за",
|
||||
|
@ -239,7 +244,10 @@
|
|||
"p1nkl0bst3rForbidden": "Стороннее API заблокировало ваш IP адрес.\nСмените IP адрес или свяжитесь с p1nkl0bst3r-ом",
|
||||
"p1nkl0bst3rTooManyRequests": "Слишком много запросов к стороннему API. Попробуйте позже",
|
||||
"p1nkl0bst3rinternal": "Что-то случилось на стороне p1nkl0bst3r-а",
|
||||
"p1nkl0bst3rinternalWebVersion": "Что-то случилось на стороне p1nkl0bst3r-а (или на стороне oskware_bridge, я хз если честно)"
|
||||
"p1nkl0bst3rinternalWebVersion": "Что-то случилось на стороне p1nkl0bst3r-а (или на стороне oskware_bridge, я хз если честно)",
|
||||
"replayAlreadySaved": "Повтор уже сохранён",
|
||||
"replayExpired": "Повтор истёк и больше недоступен",
|
||||
"replayRejected": "Стороннее API заблокировало ваш IP адрес.\nСмените IP адрес или свяжитесь с szy"
|
||||
},
|
||||
"countries(map)": {
|
||||
"": "Не выбрана",
|
||||
|
|
Loading…
Reference in New Issue