CacheLoadingScreen: Show the git commit dates

Makes it easier to wait
This commit is contained in:
Vishesh Handa
2021-12-09 17:34:01 +01:00
parent 91c33204b5
commit a8e52ac18b
3 changed files with 61 additions and 6 deletions

View File

@ -4,6 +4,8 @@
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import 'package:flutter/foundation.dart';
import 'package:dart_git/blob_ctime_builder.dart';
import 'package:dart_git/dart_git.dart';
import 'package:dart_git/file_mtime_builder.dart';
@ -13,17 +15,28 @@ import 'package:universal_io/io.dart' as io;
import 'file.dart';
class FileStorage {
class FileStorage with ChangeNotifier {
final String repoPath;
final GitRepository gitRepo;
final BlobCTimeBuilder blobCTimeBuilder;
final FileMTimeBuilder fileMTimeBuilder;
MultiTreeEntryVisitor get visitor => MultiTreeEntryVisitor([
var _dateTime = DateTime.now();
DateTime get dateTime => _dateTime;
TreeEntryVisitor get visitor {
return MultiTreeEntryVisitor(
[
blobCTimeBuilder,
fileMTimeBuilder,
]);
],
afterCommitCallback: (commit) {
_dateTime = commit.author.date;
notifyListeners();
},
);
}
FileStorage({
required this.gitRepo,

View File

@ -7,19 +7,53 @@
import 'package:flutter/material.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:provider/provider.dart';
import 'package:gitjournal/core/file/file_storage.dart';
import 'package:gitjournal/generated/locale_keys.g.dart';
import 'package:gitjournal/repository.dart';
class CacheLoadingScreen extends StatefulWidget {
class CacheLoadingScreen extends StatelessWidget {
const CacheLoadingScreen({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
var fileStorage = context.read<GitJournalRepo>().fileStorage;
return _CacheLoadingScreen(fileStorage);
}
}
class _CacheLoadingScreen extends StatefulWidget {
final FileStorage fileStorage;
const _CacheLoadingScreen(this.fileStorage, {Key? key}) : super(key: key);
@override
_CacheLoadingScreenState createState() => _CacheLoadingScreenState();
}
class _CacheLoadingScreenState extends State<CacheLoadingScreen> {
class _CacheLoadingScreenState extends State<_CacheLoadingScreen> {
@override
void initState() {
super.initState();
widget.fileStorage.addListener(_rebuild);
}
@override
void dispose() {
widget.fileStorage.removeListener(_rebuild);
super.dispose();
}
void _rebuild() {
setState(() {});
}
@override
Widget build(BuildContext context) {
var date = widget.fileStorage.dateTime;
var dateText = date.toIso8601String().substring(0, 10);
var text = LocaleKeys.screens_cacheLoading_text.tr();
var children = <Widget>[
Padding(
@ -30,6 +64,14 @@ class _CacheLoadingScreenState extends State<CacheLoadingScreen> {
style: Theme.of(context).textTheme.headline4,
),
),
Padding(
padding: const EdgeInsets.all(4.0),
child: Text(
dateText,
textAlign: TextAlign.center,
style: Theme.of(context).textTheme.subtitle1,
),
),
const SizedBox(height: 8.0),
const Padding(
padding: EdgeInsets.all(8.0),

View File

@ -328,7 +328,7 @@ packages:
description:
path: "."
ref: HEAD
resolved-ref: "8eca53caed5629f79405b72ba6083eca72d64693"
resolved-ref: "0369ae80dfde703b3a22ade5adf350800d649153"
url: "https://github.com/GitJournal/dart-git.git"
source: git
version: "0.0.2"