Skip to content

Commit

Permalink
fix: Display the correct "Certificates not passed" message when untru…
Browse files Browse the repository at this point in the history
…sted domains are allowed
  • Loading branch information
bdlukaa committed Apr 23, 2024
1 parent 7dd956a commit 8ec08f6
Show file tree
Hide file tree
Showing 6 changed files with 80 additions and 34 deletions.
13 changes: 13 additions & 0 deletions lib/providers/settings_provider.dart
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

import 'dart:io';

import 'package:bluecherry_client/models/server.dart';
import 'package:bluecherry_client/providers/app_provider_interface.dart';
import 'package:bluecherry_client/providers/downloads_provider.dart';
import 'package:bluecherry_client/providers/update_provider.dart';
Expand Down Expand Up @@ -573,6 +574,18 @@ class SettingsProvider extends UnityProvider {
await settings.delete();
await initialize();
}

/// Check if the server certificates passes
///
/// If [kAllowUntrustedCertificates] is enabled, it will return true.
/// Otherwise, it will return the server's [Server.passedCertificates] value.
bool checkServerCertificates(Server server) {
if (kAllowUntrustedCertificates.value) {
return true;
}

return server.passedCertificates;
}
}

enum NotificationClickBehavior {
Expand Down
16 changes: 11 additions & 5 deletions lib/screens/direct_camera.dart
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import 'package:bluecherry_client/models/device.dart';
import 'package:bluecherry_client/models/server.dart';
import 'package:bluecherry_client/providers/server_provider.dart';
import 'package:bluecherry_client/providers/settings_provider.dart';
import 'package:bluecherry_client/utils/constants.dart';
import 'package:bluecherry_client/utils/extensions.dart';
import 'package:bluecherry_client/utils/theme.dart';
Expand Down Expand Up @@ -108,17 +109,22 @@ class _DevicesForServer extends StatelessWidget {
final theme = Theme.of(context);
final loc = AppLocalizations.of(context);
final servers = context.watch<ServersProvider>();
final settings = context.watch<SettingsProvider>();

final isLoading = servers.isServerLoading(server);

final serverIndicator = SubHeader(
server.name,
materialType: MaterialType.canvas,
subtext: !server.passedCertificates
? loc.certificateNotPassed
: server.online
? loc.nDevices(server.devices.length)
: loc.offline,
subtext: () {
if (!settings.checkServerCertificates(server)) {
return loc.certificateNotPassed;
} else if (server.online) {
return loc.nDevices(server.devices.length);
} else {
return loc.offline;
}
}(),
subtextStyle: TextStyle(
color: !server.online ? theme.colorScheme.error : null,
),
Expand Down
15 changes: 10 additions & 5 deletions lib/screens/events_browser/events_screen_mobile.dart
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ class _EventsScreenMobileState extends State<EventsScreenMobile> {
final theme = Theme.of(context);
final servers = context.watch<ServersProvider>();
final loc = AppLocalizations.of(context);
final settings = context.watch<SettingsProvider>();

final isLoading = context.watch<HomeProvider>().isLoadingFor(
UnityLoadingReason.fetchingEventsHistory,
Expand Down Expand Up @@ -137,11 +138,15 @@ class _EventsScreenMobileState extends State<EventsScreenMobile> {
style: const TextStyle(fontWeight: FontWeight.bold),
),
subtitle: Text(
!server.passedCertificates
? loc.certificateNotPassed
: server.online
? loc.nEvents(serverEvents.length)
: loc.offline,
() {
if (!settings.checkServerCertificates(server)) {
return loc.certificateNotPassed;
} else if (server.online) {
return loc.nEvents(serverEvents.length);
} else {
return loc.offline;
}
}(),
),
trailing: !server.online
? Icon(
Expand Down
15 changes: 10 additions & 5 deletions lib/screens/layouts/desktop/sidebar.dart
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ class _DesktopSidebarState extends State<DesktopSidebar> {

final servers = context.watch<ServersProvider>();
final view = context.watch<DesktopViewProvider>();
final settings = context.watch<SettingsProvider>();

return SafeArea(
top: false,
Expand Down Expand Up @@ -99,11 +100,15 @@ class _DesktopSidebarState extends State<DesktopSidebar> {
child: SubHeader(
server.name,
materialType: MaterialType.canvas,
subtext: !server.passedCertificates
? loc.certificateNotPassed
: server.online
? loc.nDevices(devices.length)
: loc.offline,
subtext: () {
if (!settings.checkServerCertificates(server)) {
return loc.certificateNotPassed;
} else if (server.online) {
return loc.nDevices(devices.length);
} else {
return loc.offline;
}
}(),
subtextStyle: TextStyle(
color: !server.online
? theme.colorScheme.error
Expand Down
37 changes: 24 additions & 13 deletions lib/screens/settings/shared/server_tile.dart
Original file line number Diff line number Diff line change
Expand Up @@ -203,12 +203,11 @@ class ServerTile extends StatelessWidget {
!isLoading
? [
if (server.name != server.ip) server.ip,
if (!server.passedCertificates)
loc.certificateNotPassed
else if (server.online)
if (server.online)
loc.nDevices(server.devices.length)
else
loc.offline,
if (!server.passedCertificates) loc.certificateNotPassed
].join(' • ')
: loc.gettingDevices,
overflow: TextOverflow.ellipsis,
Expand Down Expand Up @@ -246,6 +245,7 @@ class ServerCard extends StatelessWidget {
final loc = AppLocalizations.of(context);
final theme = Theme.of(context);
final servers = context.watch<ServersProvider>();
final settings = context.watch<SettingsProvider>();

final isLoading = servers.isServerLoading(server);

Expand Down Expand Up @@ -299,17 +299,28 @@ class ServerCard extends StatelessWidget {
style: theme.textTheme.bodySmall,
),
Text(
!server.passedCertificates
? loc.certificateNotPassed
: !server.online
? loc.offline
: !isLoading
? loc.nDevices(server.devices.length)
: '',
() {
if (!settings.checkServerCertificates(server)) {
return loc.certificateNotPassed;
} else if (!server.online) {
return loc.offline;
} else if (!isLoading) {
return loc.nDevices(server.devices.length);
}

return '';
}(),
style: TextStyle(
color: !server.online || !server.passedCertificates
? theme.colorScheme.error
: null,
color: () {
if (settings.checkServerCertificates(server)) {
return theme.colorScheme.error;
}
if (!server.online) {
return theme.colorScheme.error;
}

return null;
}(),
),
textAlign: TextAlign.center,
),
Expand Down
18 changes: 12 additions & 6 deletions lib/widgets/device_selector.dart
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@

import 'package:bluecherry_client/models/device.dart';
import 'package:bluecherry_client/providers/server_provider.dart';
import 'package:bluecherry_client/providers/settings_provider.dart';
import 'package:bluecherry_client/utils/extensions.dart';
import 'package:bluecherry_client/utils/theme.dart';
import 'package:bluecherry_client/widgets/error_warning.dart';
Expand Down Expand Up @@ -80,9 +81,10 @@ class DeviceSelector extends StatelessWidget {
@override
Widget build(BuildContext context) {
final theme = Theme.of(context);
final servers = context.watch<ServersProvider>();
final loc = AppLocalizations.of(context);
final viewPadding = MediaQuery.viewPaddingOf(context);
final servers = context.watch<ServersProvider>();
final settings = context.watch<SettingsProvider>();

return Scaffold(
appBar: AppBar(
Expand All @@ -109,11 +111,15 @@ class DeviceSelector extends StatelessWidget {
child: SubHeader(
server.name,
materialType: MaterialType.canvas,
subtext: !server.passedCertificates
? loc.certificateNotPassed
: server.online
? loc.nDevices(server.devices.length)
: loc.offline,
subtext: () {
if (!settings.checkServerCertificates(server)) {
return loc.certificateNotPassed;
} else if (server.online) {
return loc.nDevices(server.devices.length);
} else {
return loc.offline;
}
}(),
subtextStyle: TextStyle(
color: !server.online || !server.passedCertificates
? theme.colorScheme.error
Expand Down

0 comments on commit 8ec08f6

Please sign in to comment.