2021-08-30 22:38:58 +02:00

377 lines
15 KiB
Dart

// import 'dart:io';
// import 'dart:typed_data';
// import 'package:feather_icons_flutter/feather_icons_flutter.dart';
// import 'package:filcnaplo/data/context/app.dart';
// import 'package:filcnaplo/ui/common/bottom_card.dart';
// import 'package:filcnaplo/utils/colors.dart';
// import 'package:flutter/cupertino.dart';
// import 'package:flutter/material.dart';
// import 'package:filcnaplo/generated/i18n.dart';
// import 'package:flutter_markdown/flutter_markdown.dart';
// import 'package:http/http.dart' as http;
// import 'package:path_provider/path_provider.dart';
// import 'package:open_file/open_file.dart';
// import 'package:filcnaplo/data/context/theme.dart';
// import '../../ui/common/custom_snackbar.dart';
// enum InstallState { update, downloading, saving, installing }
// class AutoUpdater extends StatefulWidget {
// @override
// _AutoUpdaterState createState() => _AutoUpdaterState();
// }
// class _AutoUpdaterState extends State<AutoUpdater> {
// bool buttonPressed = false;
// double progress;
// bool displayProgress = false;
// InstallState installState;
// void downloadCallback(
// double progress, bool displayProgress, InstallState installState) {
// if (mounted) {
// setState(() {
// this.progress = progress;
// this.displayProgress = displayProgress;
// this.installState = installState;
// });
// }
// }
// @override
// Widget build(BuildContext context) {
// if (!buttonPressed) installState = InstallState.update;
// String buttonText;
// switch (installState) {
// case InstallState.update:
// buttonText = I18n.of(context).update;
// break;
// case InstallState.downloading:
// buttonText = I18n.of(context).updateDownloading;
// break;
// case InstallState.saving:
// buttonText = I18n.of(context).updateSaving;
// break;
// case InstallState.installing:
// buttonText = I18n.of(context).updateInstalling;
// break;
// default:
// buttonText = I18n.of(context).error;
// }
// return BottomCard(
// child: Padding(
// padding: EdgeInsets.only(top: 13),
// child: Column(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [
// Expanded(
// child: Column(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: [
// Row(
// crossAxisAlignment: CrossAxisAlignment.start,
// children: [
// Expanded(
// child: ListTile(
// contentPadding: EdgeInsets.only(left: 8.0),
// title: Text(
// I18n.of(context).updateNewVersion,
// style: TextStyle(
// fontSize: 23,
// fontWeight: FontWeight.bold,
// ),
// ),
// subtitle: Text(
// app.user.sync.release.latestRelease.version,
// style: TextStyle(
// fontWeight: FontWeight.bold,
// fontSize: 18,
// ),
// ),
// ),
// ),
// ClipRRect(
// borderRadius: BorderRadius.circular(12.0),
// child: Image.asset(
// "assets/logo.png",
// width: 60,
// ),
// ),
// ],
// ),
// Padding(
// padding: EdgeInsets.all(8),
// child: Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [
// Text(
// I18n.of(context).updateChanges + ":",
// style: TextStyle(fontSize: 18),
// ),
// Text(
// I18n.of(context).updateCurrentVersion +
// ": " +
// app.currentAppVersion,
// style:
// TextStyle(color: Colors.white.withAlpha(180)),
// ),
// ],
// ),
// ),
// Expanded(
// child: Padding(
// padding: EdgeInsets.all(8.0),
// child: Builder(builder: (context) {
// try {
// return Markdown(
// shrinkWrap: true,
// data: app.user.sync.release.latestRelease.notes,
// padding: EdgeInsets.all(0),
// physics: BouncingScrollPhysics(),
// styleSheet: MarkdownStyleSheet(
// p: TextStyle(
// fontSize: 15,
// color: app.settings.theme.textTheme
// .bodyText1.color,
// ),
// ),
// );
// } catch (e) {
// print(
// "ERROR: autoUpdater.dart failed to show markdown release notes: " +
// e.toString());
// return Text(
// app.user.sync.release.latestRelease.notes);
// }
// })),
// )
// ],
// ),
// ),
// Stack(
// children: [
// Row(
// mainAxisSize: MainAxisSize.max,
// mainAxisAlignment: MainAxisAlignment.end,
// crossAxisAlignment: CrossAxisAlignment.center,
// children: [
// IconButton(
// icon: Icon(FeatherIcons.helpCircle),
// onPressed: () {
// showDialog(
// context: context,
// builder: (context) => HelpDialog());
// })
// ],
// ),
// Center(
// child: MaterialButton(
// color: ThemeContext.filcGreen,
// elevation: 0,
// highlightElevation: 0,
// shape: RoundedRectangleBorder(
// borderRadius: BorderRadius.circular(45.0)),
// child: Padding(
// padding: EdgeInsets.symmetric(vertical: 9),
// child: Row(
// mainAxisSize: MainAxisSize.min,
// children: [
// if (displayProgress)
// Container(
// margin: EdgeInsets.only(right: 10),
// height: 19,
// width: 19,
// child: CircularProgressIndicator(
// value: progress,
// valueColor: AlwaysStoppedAnimation<Color>(
// Colors.white),
// strokeWidth: 3.2,
// ),
// ),
// Text(
// buttonText.toUpperCase(),
// style: TextStyle(
// fontSize: 17,
// fontWeight: FontWeight.bold,
// color: Colors.white),
// )
// ],
// ),
// ),
// onPressed: () {
// if (!buttonPressed)
// installUpdate(context, downloadCallback);
// buttonPressed = true;
// },
// ),
// ),
// ],
// ),
// ]),
// ),
// );
// }
// Future installUpdate(BuildContext context, Function updateDisplay) async {
// updateDisplay(null, true, InstallState.downloading);
// String dir = (await getApplicationDocumentsDirectory()).path;
// String latestVersion = app.user.sync.release.latestRelease.version;
// String filename = "filcnaplo-$latestVersion.apk";
// File apk = File("$dir/$filename");
// var httpClient = http.Client();
// var request = new http.Request(
// 'GET', Uri.parse(app.user.sync.release.latestRelease.url));
// var response = httpClient.send(request);
// List<List<int>> chunks = [];
// int downloaded = 0;
// response.asStream().listen((http.StreamedResponse r) {
// r.stream.listen((List<int> chunk) {
// // Display percentage of completion
// updateDisplay(
// downloaded / r.contentLength, true, InstallState.downloading);
// chunks.add(chunk);
// downloaded += chunk.length;
// }, onDone: () async {
// // Display percentage of completion
// updateDisplay(null, true, InstallState.saving);
// // Save the file
// final Uint8List bytes = Uint8List(r.contentLength);
// int offset = 0;
// for (List<int> chunk in chunks) {
// bytes.setRange(offset, offset + chunk.length, chunk);
// offset += chunk.length;
// }
// await apk.writeAsBytes(bytes);
// updateDisplay(null, true, InstallState.installing);
// if (mounted) {
// OpenFile.open(apk.path).then((result) {
// if (result.type != ResultType.done) {
// print("ERROR: installUpdate.openFile: " + result.message);
// ScaffoldMessenger.of(context).showSnackBar(CustomSnackBar(
// message: I18n.of(context).error,
// color: Colors.red,
// ));
// }
// Navigator.pop(context);
// });
// }
// });
// });
// }
// }
// class HelpDialog extends StatelessWidget {
// @override
// Widget build(BuildContext context) {
// return Scaffold(
// backgroundColor: Colors.transparent,
// body: Container(
// decoration: BoxDecoration(
// color: app.settings.theme.backgroundColor,
// borderRadius: BorderRadius.circular(4.0),
// ),
// padding: EdgeInsets.symmetric(vertical: 15, horizontal: 10),
// margin: EdgeInsets.all(32.0),
// child: Column(children: [
// Padding(
// padding: EdgeInsets.all(8.0),
// child: Center(
// child: Icon(FeatherIcons.helpCircle),
// ),
// ),
// Expanded(
// child: Markdown(
// shrinkWrap: true,
// data: helpText,
// padding: EdgeInsets.all(0),
// physics: BouncingScrollPhysics(),
// styleSheet: MarkdownStyleSheet(
// p: TextStyle(
// fontSize: 15,
// color: Colors.white,
// ),
// ),
// ),
// ),
// MaterialButton(
// child: Text(I18n.of(context).dialogDone),
// onPressed: () {
// Navigator.of(context).pop();
// })
// ])));
// }
// }
// const String helpText =
// """A **FRISSÍTÉS** gombot megnyomva az app automatikusan letölti a GitHubról a legfrissebb Filc telepítőt.\\
// Ez kb. 50 MB adatforgalommal jár.\\
// A letöltött telepítőt ezután megnyitja az app.
// Telefonmárkától és Android verziótól függően nagyon különböző a telepítés folyamata, de ezekre figyelj:
// - Ha kérdezi a telefon, **engedélyezd a Filctől származó appok telepítését**, majd nyomd meg a vissza gombot.\\
// _(Újabb Android verziók)_
// - Ha szól a telefon hogy a külső appok telepítése biztonsági okokból tiltott, a megjelenő gombbal **ugorj a beállításokba és kapcsold be az Ismeretlen források lehetőséget.**\\
// _(Régi Android verziók)_
// A telepítés után újra megnyílik az app, immár a legfrissebb verzióval. Az indítás során törli a telepítéshez használt .apk fájlokat, így a tárhelyed miatt nem kell aggódnod.
// """;
// class AutoUpdateButton extends StatelessWidget {
// @override
// Widget build(BuildContext context) {
// return Padding(
// padding: EdgeInsets.only(bottom: 5.0),
// child: Container(
// margin: EdgeInsets.symmetric(horizontal: 14.0),
// child: MaterialButton(
// color: textColor(Theme.of(context).backgroundColor).withAlpha(25),
// elevation: 0,
// highlightElevation: 0,
// shape:
// RoundedRectangleBorder(borderRadius: BorderRadius.circular(12.0)),
// child: ListTile(
// contentPadding: EdgeInsets.zero,
// leading: Icon(FeatherIcons.download, color: app.settings.appColor),
// title: Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [
// Flexible(
// child: Text(
// I18n.of(context).updateAvailable,
// softWrap: false,
// overflow: TextOverflow.fade,
// )),
// Text(
// app.user.sync.release.latestRelease.version,
// style: TextStyle(
// color: app.settings.appColor,
// fontWeight: FontWeight.bold),
// )
// ],
// ),
// ),
// onPressed: () {
// showModalBottomSheet(
// context: context,
// backgroundColor: Colors.transparent,
// builder: (BuildContext context) => AutoUpdater(),
// );
// },
// ),
// ),
// );
// }
// }