diff --git a/lib/ui/update_dialog.dart b/lib/ui/update_dialog.dart index 9983e6e..ab110b0 100644 --- a/lib/ui/update_dialog.dart +++ b/lib/ui/update_dialog.dart @@ -117,6 +117,10 @@ Future chooseVersion(BuildContext context, AppController c) async { await installRelease(context, c, picked, current); } +/// 169: 버전 고르기 창에서 처음 고를 버전: 이 기기용 파일이 있는 것 중 가장 새것, 없으면 지금 버전 (목록은 새것이 앞) +ReleaseInfo initialVersionPick(List all, String current) => + all.firstWhere((r) => r.zipUrl != null, orElse: () => all.firstWhere((r) => r.version == current, orElse: () => all.first)); + /// 버전 고르기 창 class _VersionPicker extends StatefulWidget { final Updater up; @@ -134,10 +138,11 @@ class _VersionPickerState extends State<_VersionPicker> { @override void initState() { super.initState(); - // 처음엔 지금 쓰는 버전을 골라 둔다 (목록을 다 읽은 뒤 버튼 글도 맞게) + // 169: 처음엔 최신 버전 (이 기기용 파일이 있는 것 중 가장 새것) 을 골라 둔다 - 이 창을 여는 사람은 대개 업데이트하려는 것. + // 이 기기용 파일이 하나도 없으면 지금 쓰는 버전. (목록을 다 읽은 뒤 버튼 글도 맞게) _list.then((all) { if (!mounted || _sel != null || all.isEmpty) return; - setState(() => _sel = all.firstWhere((r) => r.version == widget.current, orElse: () => all.first)); + setState(() => _sel = initialVersionPick(all, widget.current)); }, onError: (_) {}); } diff --git a/test/update_ui_test.dart b/test/update_ui_test.dart index f2a00bc..b7c980a 100644 --- a/test/update_ui_test.dart +++ b/test/update_ui_test.dart @@ -210,10 +210,11 @@ void main() { } expect(find.text('지금'), findsOneWidget); expect(find.text('최신'), findsOneWidget); - expect(find.text('다시 설치'), findsOneWidget); // 처음엔 지금 버전이 골라져 있음 - await tester.tap(find.text('v1.0.2').first); - await tester.pumpAndSettle(); + // 169: 처음엔 최신 버전이 골라져 있음 (이 창을 여는 사람은 대개 업데이트하려는 것) expect(find.text('이 버전으로 업데이트'), findsOneWidget); + await tester.tap(find.text('v1.0.1').first); + await tester.pumpAndSettle(); + expect(find.text('다시 설치'), findsOneWidget); await tester.tap(find.text('v1.0.0').first); await tester.pumpAndSettle(); expect(find.text('이 버전으로 되돌리기'), findsOneWidget);