diff --git a/lib/main.dart b/lib/main.dart index 82770ac..bea375d 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -128,6 +128,7 @@ part 'pages/play_media.page.dart'; part 'entities/entity_page_layout.widget.dart'; part 'entities/media_player/widgets/media_player_seek_bar.widget.dart'; part 'entities/media_player/widgets/media_player_progress_bar.widget.dart'; +part 'pages/whats_new.page.dart'; EventBus eventBus = new EventBus(); final FirebaseMessaging _firebaseMessaging = FirebaseMessaging(); @@ -178,6 +179,7 @@ class HAClientApp extends StatelessWidget { mediaType: "${ModalRoute.of(context).settings.arguments != null ? (ModalRoute.of(context).settings.arguments as Map)['type'] ?? '' : ''}", ), "/log-view": (context) => LogViewPage(title: "Log"), + "/whats-new": (context) => WhatsNewPage(), "/login": (context) => WebviewScaffold( url: "${ConnectionManager().oauthUrl}", appBar: new AppBar( diff --git a/lib/managers/startup_user_messages_manager.class.dart b/lib/managers/startup_user_messages_manager.class.dart index 8a642a1..9823765 100644 --- a/lib/managers/startup_user_messages_manager.class.dart +++ b/lib/managers/startup_user_messages_manager.class.dart @@ -14,7 +14,7 @@ class StartupUserMessagesManager { bool _supportAppDevelopmentMessageShown; bool _whatsNewMessageShown; static final _supportAppDevelopmentMessageKey = "user-message-shown-support-development_3"; - static final _whatsNewMessageKey = "user-message-shown-whats-new-660"; + static final _whatsNewMessageKey = "user-message-shown-whats-new-672"; void checkMessagesToShow() async { SharedPreferences prefs = await SharedPreferences.getInstance(); @@ -49,23 +49,10 @@ class StartupUserMessagesManager { } void _showWhatsNewMessage() { - eventBus.fire(ShowPopupDialogEvent( - title: "What's new", - body: "You can now share any media url to HA Client via Android share menu. It will try to play that media on one of your media player. There is also 'tv' button available in app header if you want to send some url manually", - positiveText: "Full release notes", - negativeText: "Ok", - onPositive: () { - SharedPreferences.getInstance().then((prefs) { - prefs.setBool(_whatsNewMessageKey, true); - Launcher.launchURL("https://github.com/estevez-dev/ha_client/releases"); - }); - }, - onNegative: () { - SharedPreferences.getInstance().then((prefs) { - prefs.setBool(_whatsNewMessageKey, true); - }); - } - )); + SharedPreferences.getInstance().then((prefs) { + prefs.setBool(_whatsNewMessageKey, true); + eventBus.fire(ShowPageEvent(path: "/whats-new")); + }); } } \ No newline at end of file diff --git a/lib/pages/whats_new.page.dart b/lib/pages/whats_new.page.dart new file mode 100644 index 0000000..582139b --- /dev/null +++ b/lib/pages/whats_new.page.dart @@ -0,0 +1,69 @@ +part of '../main.dart'; + +class WhatsNewPage extends StatefulWidget { + WhatsNewPage({Key key}) : super(key: key); + + @override + _WhatsNewPageState createState() => new _WhatsNewPageState(); +} + +class _WhatsNewPageState extends State { + + String data = ""; + String error = ""; + + @override + void initState() { + super.initState(); + _loadData(); + } + + _loadData() async { + setState(() { + data = ""; + error = ""; + }); + http.Response response; + response = await http.get("http://ha-client.homemade.systems/service/whats_new.md"); + if (response.statusCode == 200) { + setState(() { + data = response.body; + }); + } else { + setState(() { + error = "Can't load changelog"; + }); + } + } + + @override + Widget build(BuildContext context) { + Widget body; + if (error.isNotEmpty) { + body = PageLoadingError(errorText: error,); + } else if (data.isEmpty) { + body = PageLoadingIndicator(); + } else { + body = Markdown( + data: data, + ); + } + return new Scaffold( + appBar: new AppBar( + leading: IconButton(icon: Icon(Icons.arrow_back), onPressed: (){ + Navigator.pop(context); + }), + actions: [ + IconButton( + icon: Icon(Icons.refresh), + onPressed: () => _loadData(), + ) + ], + // Here we take the value from the MyHomePage object that was created by + // the App.build method, and use it to set our appbar title. + title: new Text("What's new"), + ), + body: body + ); + } +} \ No newline at end of file