add certificate tile
This commit is contained in:
+4
-2
@@ -16,6 +16,7 @@ import 'package:weblibre/features/geckoview/domain/providers/tab_session.dart';
|
||||
import 'package:weblibre/features/geckoview/domain/repositories/tab.dart';
|
||||
import 'package:weblibre/features/geckoview/features/browser/presentation/dialogs/qr_code.dart';
|
||||
import 'package:weblibre/features/geckoview/features/browser/presentation/widgets/browser_modules/address_with_suggestions_field.dart';
|
||||
import 'package:weblibre/features/geckoview/features/browser/presentation/widgets/certificate_tile.dart';
|
||||
import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/container.dart';
|
||||
import 'package:weblibre/features/geckoview/features/tabs/domain/repositories/tab.dart';
|
||||
import 'package:weblibre/features/user/domain/providers.dart';
|
||||
@@ -56,6 +57,8 @@ class WebPageDialog extends HookConsumerWidget {
|
||||
padding: const EdgeInsets.fromLTRB(16.0, 12.0, 16.0, 0.0),
|
||||
child: WebsiteTitleTile(url, precachedInfo: precachedInfo),
|
||||
),
|
||||
CertificateTile(),
|
||||
const Divider(),
|
||||
SizedBox(
|
||||
//We need this to stretch the dialog, then padding from dialog is applied
|
||||
width: double.maxFinite,
|
||||
@@ -67,8 +70,7 @@ class WebPageDialog extends HookConsumerWidget {
|
||||
),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 4),
|
||||
const Divider(),
|
||||
const SizedBox(height: 8),
|
||||
Flexible(
|
||||
child: FadingScroll(
|
||||
fadingSize: 25,
|
||||
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hooks/flutter_hooks.dart';
|
||||
import 'package:flutter_material_design_icons/flutter_material_design_icons.dart';
|
||||
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:skeletonizer/skeletonizer.dart';
|
||||
import 'package:weblibre/features/geckoview/domain/providers/tab_state.dart';
|
||||
|
||||
class CertificateTile extends HookConsumerWidget {
|
||||
@override
|
||||
Widget build(BuildContext context, WidgetRef ref) {
|
||||
final tabState = ref.watch(selectedTabStateProvider);
|
||||
|
||||
if (tabState == null) {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
|
||||
final icon = useMemoized(() {
|
||||
if (tabState.url.isScheme('http')) {
|
||||
return ListTile(
|
||||
leading: Icon(
|
||||
MdiIcons.lockOff,
|
||||
color: Theme.of(context).colorScheme.error,
|
||||
),
|
||||
title: Text(
|
||||
'Connection is not secure',
|
||||
style: TextStyle(color: Theme.of(context).colorScheme.error),
|
||||
),
|
||||
);
|
||||
} else if (!tabState.securityInfoState.secure) {
|
||||
return ListTile(
|
||||
leading: Icon(
|
||||
MdiIcons.lockAlert,
|
||||
color: Theme.of(context).colorScheme.errorContainer,
|
||||
),
|
||||
title: Text(
|
||||
'Connection is not secure',
|
||||
style: TextStyle(
|
||||
color: Theme.of(context).colorScheme.errorContainer,
|
||||
),
|
||||
),
|
||||
);
|
||||
} else if (!tabState.isLoading) {
|
||||
return ListTile(
|
||||
leading: const Icon(MdiIcons.lock),
|
||||
title: const Text('Connection is secure'),
|
||||
subtitle: Text('Verified By: ${tabState.securityInfoState.issuer}'),
|
||||
);
|
||||
} else {
|
||||
return Skeletonizer(
|
||||
child: ListTile(
|
||||
leading: const Skeleton.keep(child: Icon(MdiIcons.timerSand)),
|
||||
title: Text(BoneMock.title),
|
||||
),
|
||||
);
|
||||
}
|
||||
}, [tabState]);
|
||||
|
||||
return icon;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user