display error banners below ente logo and search icon
This commit is contained in:
parent
df76813c2d
commit
59c93e1b23
|
@ -49,11 +49,6 @@ class HeaderErrorWidget extends StatelessWidget {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const Padding(padding: EdgeInsets.all(12)),
|
const Padding(padding: EdgeInsets.all(12)),
|
||||||
const Divider(
|
|
||||||
thickness: 2,
|
|
||||||
height: 0,
|
|
||||||
),
|
|
||||||
const Padding(padding: EdgeInsets.all(12)),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
@ -93,11 +88,6 @@ class HeaderErrorWidget extends StatelessWidget {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const Padding(padding: EdgeInsets.all(12)),
|
const Padding(padding: EdgeInsets.all(12)),
|
||||||
const Divider(
|
|
||||||
thickness: 2,
|
|
||||||
height: 0,
|
|
||||||
),
|
|
||||||
const Padding(padding: EdgeInsets.all(12)),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
@ -105,6 +95,7 @@ class HeaderErrorWidget extends StatelessWidget {
|
||||||
return Center(
|
return Center(
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
|
const SizedBox(height: 8),
|
||||||
Icon(
|
Icon(
|
||||||
Icons.error_outline,
|
Icons.error_outline,
|
||||||
color: Colors.red[400],
|
color: Colors.red[400],
|
||||||
|
@ -150,11 +141,6 @@ class HeaderErrorWidget extends StatelessWidget {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const Padding(padding: EdgeInsets.all(16)),
|
const Padding(padding: EdgeInsets.all(16)),
|
||||||
const Divider(
|
|
||||||
thickness: 2,
|
|
||||||
height: 0,
|
|
||||||
),
|
|
||||||
const Padding(padding: EdgeInsets.all(12)),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
@ -21,10 +21,20 @@ class StatusBarWidget extends StatefulWidget {
|
||||||
class _StatusBarWidgetState extends State<StatusBarWidget> {
|
class _StatusBarWidgetState extends State<StatusBarWidget> {
|
||||||
StreamSubscription<SyncStatusUpdate> _subscription;
|
StreamSubscription<SyncStatusUpdate> _subscription;
|
||||||
bool _showStatus = false;
|
bool _showStatus = false;
|
||||||
|
bool _showErrorBanner = false;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
_subscription = Bus.instance.on<SyncStatusUpdate>().listen((event) {
|
_subscription = Bus.instance.on<SyncStatusUpdate>().listen((event) {
|
||||||
|
if (event.status == SyncStatus.error) {
|
||||||
|
setState(() {
|
||||||
|
_showErrorBanner = true;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
setState(() {
|
||||||
|
_showErrorBanner = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
if (event.status == SyncStatus.completedFirstGalleryImport ||
|
if (event.status == SyncStatus.completedFirstGalleryImport ||
|
||||||
event.status == SyncStatus.completedBackup) {
|
event.status == SyncStatus.completedBackup) {
|
||||||
Future.delayed(const Duration(milliseconds: 2000), () {
|
Future.delayed(const Duration(milliseconds: 2000), () {
|
||||||
|
@ -58,7 +68,11 @@ class _StatusBarWidgetState extends State<StatusBarWidget> {
|
||||||
Stack(
|
Stack(
|
||||||
children: [
|
children: [
|
||||||
AnimatedOpacity(
|
AnimatedOpacity(
|
||||||
opacity: _showStatus ? 0 : 1,
|
opacity: _showStatus
|
||||||
|
? _showErrorBanner
|
||||||
|
? 1
|
||||||
|
: 0
|
||||||
|
: 1,
|
||||||
duration: const Duration(milliseconds: 1000),
|
duration: const Duration(milliseconds: 1000),
|
||||||
child: const BrandingWidget(),
|
child: const BrandingWidget(),
|
||||||
),
|
),
|
||||||
|
@ -70,7 +84,6 @@ class _StatusBarWidgetState extends State<StatusBarWidget> {
|
||||||
Positioned(
|
Positioned(
|
||||||
right: 0,
|
right: 0,
|
||||||
top: 0,
|
top: 0,
|
||||||
bottom: 0,
|
|
||||||
child: FeatureFlagService.instance.enableSearchFeature()
|
child: FeatureFlagService.instance.enableSearchFeature()
|
||||||
? Container(
|
? Container(
|
||||||
color: Theme.of(context)
|
color: Theme.of(context)
|
||||||
|
@ -79,7 +92,7 @@ class _StatusBarWidgetState extends State<StatusBarWidget> {
|
||||||
height: kContainerHeight,
|
height: kContainerHeight,
|
||||||
child: const SearchIconWidget(),
|
child: const SearchIconWidget(),
|
||||||
)
|
)
|
||||||
: const SizedBox.shrink(),
|
: const SizedBox(height: 36, width: 48),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
@ -135,7 +148,10 @@ class _SyncStatusWidgetState extends State<SyncStatusWidget> {
|
||||||
return const SizedBox.shrink();
|
return const SizedBox.shrink();
|
||||||
}
|
}
|
||||||
if (_event.status == SyncStatus.error) {
|
if (_event.status == SyncStatus.error) {
|
||||||
return HeaderErrorWidget(error: _event.error);
|
return Padding(
|
||||||
|
padding: const EdgeInsets.only(top: kContainerHeight + 8),
|
||||||
|
child: HeaderErrorWidget(error: _event.error),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
if (_event.status == SyncStatus.completedBackup) {
|
if (_event.status == SyncStatus.completedBackup) {
|
||||||
return const SyncStatusCompletedWidget();
|
return const SyncStatusCompletedWidget();
|
||||||
|
|
Loading…
Reference in a new issue