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 * 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/blob_ctime_builder.dart';
import 'package:dart_git/dart_git.dart'; import 'package:dart_git/dart_git.dart';
import 'package:dart_git/file_mtime_builder.dart'; import 'package:dart_git/file_mtime_builder.dart';
@ -13,17 +15,28 @@ import 'package:universal_io/io.dart' as io;
import 'file.dart'; import 'file.dart';
class FileStorage { class FileStorage with ChangeNotifier {
final String repoPath; final String repoPath;
final GitRepository gitRepo; final GitRepository gitRepo;
final BlobCTimeBuilder blobCTimeBuilder; final BlobCTimeBuilder blobCTimeBuilder;
final FileMTimeBuilder fileMTimeBuilder; final FileMTimeBuilder fileMTimeBuilder;
MultiTreeEntryVisitor get visitor => MultiTreeEntryVisitor([ var _dateTime = DateTime.now();
DateTime get dateTime => _dateTime;
TreeEntryVisitor get visitor {
return MultiTreeEntryVisitor(
[
blobCTimeBuilder, blobCTimeBuilder,
fileMTimeBuilder, fileMTimeBuilder,
]); ],
afterCommitCallback: (commit) {
_dateTime = commit.author.date;
notifyListeners();
},
);
}
FileStorage({ FileStorage({
required this.gitRepo, required this.gitRepo,

View File

@ -7,19 +7,53 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:easy_localization/easy_localization.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/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); 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 @override
_CacheLoadingScreenState createState() => _CacheLoadingScreenState(); _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 @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
var date = widget.fileStorage.dateTime;
var dateText = date.toIso8601String().substring(0, 10);
var text = LocaleKeys.screens_cacheLoading_text.tr(); var text = LocaleKeys.screens_cacheLoading_text.tr();
var children = <Widget>[ var children = <Widget>[
Padding( Padding(
@ -30,6 +64,14 @@ class _CacheLoadingScreenState extends State<CacheLoadingScreen> {
style: Theme.of(context).textTheme.headline4, 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 SizedBox(height: 8.0),
const Padding( const Padding(
padding: EdgeInsets.all(8.0), padding: EdgeInsets.all(8.0),

View File

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