firka: add Generate widget state for date to developer options

This commit is contained in:
2026-02-28 15:51:05 +01:00
parent c58f34f499
commit b99051dbfc
2 changed files with 46 additions and 1 deletions

View File

@@ -109,7 +109,11 @@ class WidgetCacheHelper {
final dataDir = await getApplicationDocumentsDirectory();
final dayStart = DateTime(date.year, date.month, date.day);
final dayEnd = dayStart.add(Duration(hours: 23, minutes: 59));
final lessons = await client.getTimeTable(dayStart, dayEnd, forceCache: false);
final lessons = await client.getTimeTable(
dayStart,
dayEnd,
forceCache: false,
);
final dayLessons = lessons.response ?? [];
final json = toJson(style, dayLessons);

View File

@@ -17,6 +17,8 @@ import 'package:firka/core/debug_helper.dart';
import 'package:firka/core/state/firka_state.dart';
import 'package:firka/data/widget.dart';
import 'package:firka/ui/shared/firka_icon.dart';
import 'package:firka/ui/theme/style.dart';
import 'package:home_widget/home_widget.dart';
import 'package:path/path.dart' as p;
import 'package:path_provider/path_provider.dart';
@@ -131,6 +133,45 @@ class _DebugScreen extends FirkaState<DebugScreen> {
},
child: const Text('Set fake time'),
),
ElevatedButton(
onPressed: () async {
final d = await showDatePicker(
context: context,
firstDate: DateTime.now().subtract(Duration(days: 365)),
lastDate: DateTime.now().add(Duration(days: 365)),
);
if (!context.mounted || d == null) return;
try {
await WidgetCacheHelper.generateWidgetStateForDate(
d,
appStyle,
widget.data.client,
);
if (Platform.isAndroid) {
await HomeWidget.updateWidget(
qualifiedAndroidName:
'app.firka.naplo.glance.TimetableWidgetReceiver',
);
}
if (!context.mounted) return;
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(
'Widget state generated for ${d.year}-${d.month.toString().padLeft(2, '0')}-${d.day.toString().padLeft(2, '0')}',
),
),
);
} catch (e) {
if (!context.mounted) return;
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text('Failed to generate widget state: $e'),
),
);
}
},
child: const Text('Generate widget state for date'),
),
const SizedBox(height: 20),
ElevatedButton(
onPressed: () async {