mirror of
https://git.selfprivacy.org/kherel/selfprivacy.org.app.git
synced 2025-03-11 09:14:10 +00:00
Linting
Co-authored-by: Inex Code <inex.code@selfprivacy.org>
This commit is contained in:
parent
14acfdec6b
commit
5dcaa060a1
32 changed files with 93 additions and 61 deletions
analysis_options.yaml
lib
logic/cubit/forms/validations
main.dartui
components
brand_button
brand_md
brand_tab_bar
brand_timer
icon_status_mask
not_ready_card
pre_styled_buttons
progress_bar
pages
backup_details
dns_details
more
onboarding
providers
root_route.dartserver_details
services
setup
initializing.dart
recovering
ssh_keys
|
@ -9,6 +9,10 @@
|
||||||
# packages, and plugins designed to encourage good coding practices.
|
# packages, and plugins designed to encourage good coding practices.
|
||||||
include: package:flutter_lints/flutter.yaml
|
include: package:flutter_lints/flutter.yaml
|
||||||
|
|
||||||
|
analyzer:
|
||||||
|
exclude:
|
||||||
|
- lib/generated_plugin_registrant.dart
|
||||||
|
|
||||||
linter:
|
linter:
|
||||||
# The lint rules applied to this project can be customized in the
|
# The lint rules applied to this project can be customized in the
|
||||||
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
|
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
|
||||||
|
|
|
@ -6,10 +6,10 @@ abstract class LengthStringValidation extends ValidationModel<String> {
|
||||||
: super(predicate, errorMessage);
|
: super(predicate, errorMessage);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String? check(String value) {
|
String? check(String val) {
|
||||||
var length = value.length;
|
var length = val.length;
|
||||||
var errorMessage = errorMassage.replaceAll('[]', length.toString());
|
var errorMessage = errorMassage.replaceAll('[]', length.toString());
|
||||||
return test(value) ? errorMessage : null;
|
return test(val) ? errorMessage : null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ import 'package:selfprivacy/config/hive_config.dart';
|
||||||
import 'package:selfprivacy/theming/factory/app_theme_factory.dart';
|
import 'package:selfprivacy/theming/factory/app_theme_factory.dart';
|
||||||
import 'package:selfprivacy/ui/pages/setup/initializing.dart';
|
import 'package:selfprivacy/ui/pages/setup/initializing.dart';
|
||||||
import 'package:selfprivacy/ui/pages/onboarding/onboarding.dart';
|
import 'package:selfprivacy/ui/pages/onboarding/onboarding.dart';
|
||||||
import 'package:selfprivacy/ui/pages/rootRoute.dart';
|
import 'package:selfprivacy/ui/pages/root_route.dart';
|
||||||
import 'package:wakelock/wakelock.dart';
|
import 'package:wakelock/wakelock.dart';
|
||||||
import 'package:timezone/data/latest.dart' as tz;
|
import 'package:timezone/data/latest.dart' as tz;
|
||||||
|
|
||||||
|
@ -55,9 +55,10 @@ void main() async {
|
||||||
|
|
||||||
class MyApp extends StatelessWidget {
|
class MyApp extends StatelessWidget {
|
||||||
const MyApp({
|
const MyApp({
|
||||||
|
Key? key,
|
||||||
required this.lightThemeData,
|
required this.lightThemeData,
|
||||||
required this.darkThemeData,
|
required this.darkThemeData,
|
||||||
});
|
}) : super(key: key);
|
||||||
|
|
||||||
final ThemeData lightThemeData;
|
final ThemeData lightThemeData;
|
||||||
final ThemeData darkThemeData;
|
final ThemeData darkThemeData;
|
||||||
|
@ -84,7 +85,7 @@ class MyApp extends StatelessWidget {
|
||||||
themeMode:
|
themeMode:
|
||||||
appSettings.isDarkModeOn ? ThemeMode.dark : ThemeMode.light,
|
appSettings.isDarkModeOn ? ThemeMode.dark : ThemeMode.light,
|
||||||
home: appSettings.isOnboardingShowing
|
home: appSettings.isOnboardingShowing
|
||||||
? OnboardingPage(nextPage: InitializingPage())
|
? const OnboardingPage(nextPage: InitializingPage())
|
||||||
: const RootPage(),
|
: const RootPage(),
|
||||||
builder: (BuildContext context, Widget? widget) {
|
builder: (BuildContext context, Widget? widget) {
|
||||||
Widget error = const Text('...rendering error...');
|
Widget error = const Text('...rendering error...');
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:selfprivacy/ui/components/brand_button/FilledButton.dart';
|
import 'package:selfprivacy/ui/components/brand_button/filled_button.dart';
|
||||||
import 'package:selfprivacy/ui/components/brand_text/brand_text.dart';
|
import 'package:selfprivacy/ui/components/brand_text/brand_text.dart';
|
||||||
|
|
||||||
enum BrandButtonTypes { rised, text, iconText }
|
enum BrandButtonTypes { rised, text, iconText }
|
||||||
|
|
|
@ -15,7 +15,7 @@ class BrandMarkdown extends StatefulWidget {
|
||||||
final String fileName;
|
final String fileName;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_BrandMarkdownState createState() => _BrandMarkdownState();
|
State<BrandMarkdown> createState() => _BrandMarkdownState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _BrandMarkdownState extends State<BrandMarkdown> {
|
class _BrandMarkdownState extends State<BrandMarkdown> {
|
||||||
|
|
|
@ -7,7 +7,7 @@ class BrandTabBar extends StatefulWidget {
|
||||||
|
|
||||||
final TabController? controller;
|
final TabController? controller;
|
||||||
@override
|
@override
|
||||||
_BrandTabBarState createState() => _BrandTabBarState();
|
State<BrandTabBar> createState() => _BrandTabBarState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _BrandTabBarState extends State<BrandTabBar> {
|
class _BrandTabBarState extends State<BrandTabBar> {
|
||||||
|
|
|
@ -16,7 +16,7 @@ class BrandTimer extends StatefulWidget {
|
||||||
final Duration duration;
|
final Duration duration;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_BrandTimerState createState() => _BrandTimerState();
|
State<BrandTimer> createState() => _BrandTimerState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _BrandTimerState extends State<BrandTimer> {
|
class _BrandTimerState extends State<BrandTimer> {
|
||||||
|
|
|
@ -3,7 +3,11 @@ import 'package:selfprivacy/config/brand_colors.dart';
|
||||||
import 'package:selfprivacy/logic/models/state_types.dart';
|
import 'package:selfprivacy/logic/models/state_types.dart';
|
||||||
|
|
||||||
class IconStatusMask extends StatelessWidget {
|
class IconStatusMask extends StatelessWidget {
|
||||||
const IconStatusMask({required this.child, required this.status});
|
const IconStatusMask({
|
||||||
|
Key? key,
|
||||||
|
required this.child,
|
||||||
|
required this.status,
|
||||||
|
}) : super(key: key);
|
||||||
final Icon child;
|
final Icon child;
|
||||||
|
|
||||||
final StateType status;
|
final StateType status;
|
||||||
|
|
|
@ -27,7 +27,7 @@ class NotReadyCard extends StatelessWidget {
|
||||||
child: GestureDetector(
|
child: GestureDetector(
|
||||||
onTap: () => Navigator.of(context).push(
|
onTap: () => Navigator.of(context).push(
|
||||||
materialRoute(
|
materialRoute(
|
||||||
InitializingPage(),
|
const InitializingPage(),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
child: Text(
|
child: Text(
|
||||||
|
|
|
@ -11,7 +11,7 @@ class BrandFab extends StatefulWidget {
|
||||||
const BrandFab({Key? key}) : super(key: key);
|
const BrandFab({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_BrandFabState createState() => _BrandFabState();
|
State<BrandFab> createState() => _BrandFabState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _BrandFabState extends State<BrandFab>
|
class _BrandFabState extends State<BrandFab>
|
||||||
|
|
|
@ -17,7 +17,7 @@ class ProgressBar extends StatefulWidget {
|
||||||
final List<String> steps;
|
final List<String> steps;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_ProgressBarState createState() => _ProgressBarState();
|
State<ProgressBar> createState() => _ProgressBarState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _ProgressBarState extends State<ProgressBar> {
|
class _ProgressBarState extends State<ProgressBar> {
|
||||||
|
|
|
@ -21,7 +21,7 @@ class BackupDetails extends StatefulWidget {
|
||||||
const BackupDetails({Key? key}) : super(key: key);
|
const BackupDetails({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_BackupDetailsState createState() => _BackupDetailsState();
|
State<BackupDetails> createState() => _BackupDetailsState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _BackupDetailsState extends State<BackupDetails>
|
class _BackupDetailsState extends State<BackupDetails>
|
||||||
|
|
|
@ -8,8 +8,10 @@ import 'package:selfprivacy/ui/components/brand_hero_screen/brand_hero_screen.da
|
||||||
import 'package:selfprivacy/ui/components/brand_icons/brand_icons.dart';
|
import 'package:selfprivacy/ui/components/brand_icons/brand_icons.dart';
|
||||||
|
|
||||||
class DnsDetailsPage extends StatefulWidget {
|
class DnsDetailsPage extends StatefulWidget {
|
||||||
|
const DnsDetailsPage({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_DnsDetailsPageState createState() => _DnsDetailsPageState();
|
State<DnsDetailsPage> createState() => _DnsDetailsPageState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _DnsDetailsPageState extends State<DnsDetailsPage> {
|
class _DnsDetailsPageState extends State<DnsDetailsPage> {
|
||||||
|
|
|
@ -16,7 +16,7 @@ class AppSettingsPage extends StatefulWidget {
|
||||||
const AppSettingsPage({Key? key}) : super(key: key);
|
const AppSettingsPage({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_AppSettingsPageState createState() => _AppSettingsPageState();
|
State<AppSettingsPage> createState() => _AppSettingsPageState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _AppSettingsPageState extends State<AppSettingsPage> {
|
class _AppSettingsPageState extends State<AppSettingsPage> {
|
||||||
|
@ -50,6 +50,7 @@ class _AppSettingsPageState extends State<AppSettingsPage> {
|
||||||
child: _TextColumn(
|
child: _TextColumn(
|
||||||
title: 'more.settings.1'.tr(),
|
title: 'more.settings.1'.tr(),
|
||||||
value: 'more.settings.2'.tr(),
|
value: 'more.settings.2'.tr(),
|
||||||
|
hasWarning: false,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(width: 5),
|
const SizedBox(width: 5),
|
||||||
|
@ -76,6 +77,7 @@ class _AppSettingsPageState extends State<AppSettingsPage> {
|
||||||
child: _TextColumn(
|
child: _TextColumn(
|
||||||
title: 'more.settings.3'.tr(),
|
title: 'more.settings.3'.tr(),
|
||||||
value: 'more.settings.4'.tr(),
|
value: 'more.settings.4'.tr(),
|
||||||
|
hasWarning: false,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(width: 5),
|
const SizedBox(width: 5),
|
||||||
|
@ -144,6 +146,7 @@ class _AppSettingsPageState extends State<AppSettingsPage> {
|
||||||
child: _TextColumn(
|
child: _TextColumn(
|
||||||
title: 'more.settings.5'.tr(),
|
title: 'more.settings.5'.tr(),
|
||||||
value: 'more.settings.6'.tr(),
|
value: 'more.settings.6'.tr(),
|
||||||
|
hasWarning: false,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(width: 5),
|
const SizedBox(width: 5),
|
||||||
|
@ -177,6 +180,7 @@ class _AppSettingsPageState extends State<AppSettingsPage> {
|
||||||
await context
|
await context
|
||||||
.read<ServerInstallationCubit>()
|
.read<ServerInstallationCubit>()
|
||||||
.serverDelete();
|
.serverDelete();
|
||||||
|
if (!mounted) return;
|
||||||
Navigator.of(context).pop();
|
Navigator.of(context).pop();
|
||||||
}),
|
}),
|
||||||
ActionButton(
|
ActionButton(
|
||||||
|
|
|
@ -11,7 +11,7 @@ class Console extends StatefulWidget {
|
||||||
const Console({Key? key}) : super(key: key);
|
const Console({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_ConsoleState createState() => _ConsoleState();
|
State<Console> createState() => _ConsoleState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _ConsoleState extends State<Console> {
|
class _ConsoleState extends State<Console> {
|
||||||
|
|
|
@ -10,7 +10,7 @@ import 'package:selfprivacy/ui/components/brand_icons/brand_icons.dart';
|
||||||
import 'package:selfprivacy/ui/components/brand_text/brand_text.dart';
|
import 'package:selfprivacy/ui/components/brand_text/brand_text.dart';
|
||||||
import 'package:selfprivacy/ui/pages/setup/initializing.dart';
|
import 'package:selfprivacy/ui/pages/setup/initializing.dart';
|
||||||
import 'package:selfprivacy/ui/pages/onboarding/onboarding.dart';
|
import 'package:selfprivacy/ui/pages/onboarding/onboarding.dart';
|
||||||
import 'package:selfprivacy/ui/pages/rootRoute.dart';
|
import 'package:selfprivacy/ui/pages/root_route.dart';
|
||||||
import 'package:selfprivacy/ui/pages/ssh_keys/ssh_keys.dart';
|
import 'package:selfprivacy/ui/pages/ssh_keys/ssh_keys.dart';
|
||||||
import 'package:selfprivacy/utils/route_transitions/basic.dart';
|
import 'package:selfprivacy/utils/route_transitions/basic.dart';
|
||||||
|
|
||||||
|
@ -43,7 +43,7 @@ class MorePage extends StatelessWidget {
|
||||||
_NavItem(
|
_NavItem(
|
||||||
title: 'more.configuration_wizard'.tr(),
|
title: 'more.configuration_wizard'.tr(),
|
||||||
iconData: BrandIcons.triangle,
|
iconData: BrandIcons.triangle,
|
||||||
goTo: InitializingPage(),
|
goTo: const InitializingPage(),
|
||||||
),
|
),
|
||||||
_NavItem(
|
_NavItem(
|
||||||
title: 'more.settings.title'.tr(),
|
title: 'more.settings.title'.tr(),
|
||||||
|
|
|
@ -10,7 +10,7 @@ class OnboardingPage extends StatefulWidget {
|
||||||
|
|
||||||
final Widget nextPage;
|
final Widget nextPage;
|
||||||
@override
|
@override
|
||||||
_OnboardingPageState createState() => _OnboardingPageState();
|
State<OnboardingPage> createState() => _OnboardingPageState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _OnboardingPageState extends State<OnboardingPage> {
|
class _OnboardingPageState extends State<OnboardingPage> {
|
||||||
|
|
|
@ -24,7 +24,7 @@ class ProvidersPage extends StatefulWidget {
|
||||||
const ProvidersPage({Key? key}) : super(key: key);
|
const ProvidersPage({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_ProvidersPageState createState() => _ProvidersPageState();
|
State<ProvidersPage> createState() => _ProvidersPageState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _ProvidersPageState extends State<ProvidersPage> {
|
class _ProvidersPageState extends State<ProvidersPage> {
|
||||||
|
@ -124,7 +124,7 @@ class _Card extends StatelessWidget {
|
||||||
stableText = 'providers.domain.status'.tr();
|
stableText = 'providers.domain.status'.tr();
|
||||||
|
|
||||||
onTap = () => Navigator.of(context).push(materialRoute(
|
onTap = () => Navigator.of(context).push(materialRoute(
|
||||||
DnsDetailsPage(),
|
const DnsDetailsPage(),
|
||||||
));
|
));
|
||||||
break;
|
break;
|
||||||
case ProviderType.backup:
|
case ProviderType.backup:
|
||||||
|
|
|
@ -13,7 +13,7 @@ class RootPage extends StatefulWidget {
|
||||||
const RootPage({Key? key}) : super(key: key);
|
const RootPage({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_RootPageState createState() => _RootPageState();
|
State<RootPage> createState() => _RootPageState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _RootPageState extends State<RootPage>
|
class _RootPageState extends State<RootPage>
|
||||||
|
|
|
@ -90,7 +90,11 @@ class _Chart extends StatelessWidget {
|
||||||
|
|
||||||
return SizedBox(
|
return SizedBox(
|
||||||
height: 200,
|
height: 200,
|
||||||
child: CpuChart(data, state.period, state.start),
|
child: CpuChart(
|
||||||
|
data: data,
|
||||||
|
period: state.period,
|
||||||
|
start: state.start,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,9 +105,9 @@ class _Chart extends StatelessWidget {
|
||||||
return SizedBox(
|
return SizedBox(
|
||||||
height: 200,
|
height: 200,
|
||||||
child: NetworkChart(
|
child: NetworkChart(
|
||||||
[ppsIn, ppsOut],
|
listData: [ppsIn, ppsOut],
|
||||||
state.period,
|
period: state.period,
|
||||||
state.start,
|
start: state.start,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -115,9 +119,9 @@ class _Chart extends StatelessWidget {
|
||||||
return SizedBox(
|
return SizedBox(
|
||||||
height: 200,
|
height: 200,
|
||||||
child: NetworkChart(
|
child: NetworkChart(
|
||||||
[ppsIn, ppsOut],
|
listData: [ppsIn, ppsOut],
|
||||||
state.period,
|
period: state.period,
|
||||||
state.start,
|
start: state.start,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,12 @@ import 'package:selfprivacy/logic/models/hetzner_metrics.dart';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
|
|
||||||
class CpuChart extends StatelessWidget {
|
class CpuChart extends StatelessWidget {
|
||||||
const CpuChart(this.data, this.period, this.start);
|
const CpuChart({
|
||||||
|
Key? key,
|
||||||
|
required this.data,
|
||||||
|
required this.period,
|
||||||
|
required this.start,
|
||||||
|
}) : super(key: key);
|
||||||
|
|
||||||
final List<TimeSeriesData> data;
|
final List<TimeSeriesData> data;
|
||||||
final Period period;
|
final Period period;
|
||||||
|
@ -103,8 +108,8 @@ class CpuChart extends StatelessWidget {
|
||||||
} else if (value == 0) {
|
} else if (value == 0) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
var _value = value - minValue;
|
var localValue = value - minValue;
|
||||||
var v = _value / 20;
|
var v = localValue / 20;
|
||||||
return v - v.floor() == 0;
|
return v - v.floor() == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,11 +9,12 @@ import 'package:selfprivacy/logic/models/hetzner_metrics.dart';
|
||||||
import 'package:intl/intl.dart';
|
import 'package:intl/intl.dart';
|
||||||
|
|
||||||
class NetworkChart extends StatelessWidget {
|
class NetworkChart extends StatelessWidget {
|
||||||
const NetworkChart(
|
const NetworkChart({
|
||||||
this.listData,
|
Key? key,
|
||||||
this.period,
|
required this.listData,
|
||||||
this.start,
|
required this.period,
|
||||||
);
|
required this.start,
|
||||||
|
}) : super(key: key);
|
||||||
|
|
||||||
final List<List<TimeSeriesData>> listData;
|
final List<List<TimeSeriesData>> listData;
|
||||||
final Period period;
|
final Period period;
|
||||||
|
@ -132,9 +133,9 @@ class NetworkChart extends StatelessWidget {
|
||||||
} else if (value == 0) {
|
} else if (value == 0) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
var _value = value - minValue;
|
var diff = value - minValue;
|
||||||
var v = _value / 20;
|
var finalValue = diff / 20;
|
||||||
return v - v.floor() == 0;
|
return finalValue - finalValue.floor() == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
String bottomTitle(int value) {
|
String bottomTitle(int value) {
|
||||||
|
|
|
@ -37,7 +37,7 @@ class ServerDetailsScreen extends StatefulWidget {
|
||||||
const ServerDetailsScreen({Key? key}) : super(key: key);
|
const ServerDetailsScreen({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_ServerDetailsScreenState createState() => _ServerDetailsScreenState();
|
State<ServerDetailsScreen> createState() => _ServerDetailsScreenState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _ServerDetailsScreenState extends State<ServerDetailsScreen>
|
class _ServerDetailsScreenState extends State<ServerDetailsScreen>
|
||||||
|
|
|
@ -42,6 +42,7 @@ class _ServerSettings extends StatelessWidget {
|
||||||
child: const _TextColumn(
|
child: const _TextColumn(
|
||||||
title: 'Allow Auto-upgrade',
|
title: 'Allow Auto-upgrade',
|
||||||
value: 'Wether to allow automatic packages upgrades',
|
value: 'Wether to allow automatic packages upgrades',
|
||||||
|
hasWarning: false,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
SwitcherBlock(
|
SwitcherBlock(
|
||||||
|
@ -50,15 +51,17 @@ class _ServerSettings extends StatelessWidget {
|
||||||
child: const _TextColumn(
|
child: const _TextColumn(
|
||||||
title: 'Reboot after upgrade',
|
title: 'Reboot after upgrade',
|
||||||
value: 'Reboot without prompt after applying updates',
|
value: 'Reboot without prompt after applying updates',
|
||||||
|
hasWarning: false,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
_Button(
|
_Button(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
Navigator.of(context).push(materialRoute(SelectTimezone()));
|
Navigator.of(context).push(materialRoute(const SelectTimezone()));
|
||||||
},
|
},
|
||||||
child: _TextColumn(
|
child: _TextColumn(
|
||||||
title: 'Server Timezone',
|
title: 'Server Timezone',
|
||||||
value: serverDetailsState.serverTimezone.timezone.name,
|
value: serverDetailsState.serverTimezone.timezone.name,
|
||||||
|
hasWarning: false,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
|
|
|
@ -8,7 +8,7 @@ class SelectTimezone extends StatefulWidget {
|
||||||
const SelectTimezone({Key? key}) : super(key: key);
|
const SelectTimezone({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_SelectTimezoneState createState() => _SelectTimezoneState();
|
State<SelectTimezone> createState() => _SelectTimezoneState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _SelectTimezoneState extends State<SelectTimezone> {
|
class _SelectTimezoneState extends State<SelectTimezone> {
|
||||||
|
|
|
@ -35,13 +35,13 @@ class ServicesPage extends StatefulWidget {
|
||||||
const ServicesPage({Key? key}) : super(key: key);
|
const ServicesPage({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_ServicesPageState createState() => _ServicesPageState();
|
State<ServicesPage> createState() => _ServicesPageState();
|
||||||
}
|
}
|
||||||
|
|
||||||
void _launchURL(url) async {
|
void _launchURL(url) async {
|
||||||
var _possible = await canLaunchUrlString(url);
|
var canLaunch = await canLaunchUrlString(url);
|
||||||
|
|
||||||
if (_possible) {
|
if (canLaunch) {
|
||||||
try {
|
try {
|
||||||
await launchUrlString(
|
await launchUrlString(
|
||||||
url,
|
url,
|
||||||
|
|
|
@ -21,6 +21,8 @@ import 'package:selfprivacy/ui/pages/setup/recovering/recovery_routing.dart';
|
||||||
import 'package:selfprivacy/utils/route_transitions/basic.dart';
|
import 'package:selfprivacy/utils/route_transitions/basic.dart';
|
||||||
|
|
||||||
class InitializingPage extends StatelessWidget {
|
class InitializingPage extends StatelessWidget {
|
||||||
|
const InitializingPage({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
var cubit = context.watch<ServerInstallationCubit>();
|
var cubit = context.watch<ServerInstallationCubit>();
|
||||||
|
|
|
@ -10,7 +10,9 @@ import 'package:selfprivacy/logic/cubit/forms/factories/field_cubit_factory.dart
|
||||||
|
|
||||||
class RecoverByOldTokenInstruction extends StatelessWidget {
|
class RecoverByOldTokenInstruction extends StatelessWidget {
|
||||||
@override
|
@override
|
||||||
const RecoverByOldTokenInstruction({required this.instructionFilename});
|
const RecoverByOldTokenInstruction(
|
||||||
|
{Key? key, required this.instructionFilename})
|
||||||
|
: super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
|
|
@ -11,7 +11,7 @@ class RecoveryConfirmServer extends StatefulWidget {
|
||||||
const RecoveryConfirmServer({Key? key}) : super(key: key);
|
const RecoveryConfirmServer({Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_RecoveryConfirmServerState createState() => _RecoveryConfirmServerState();
|
State<RecoveryConfirmServer> createState() => _RecoveryConfirmServerState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _RecoveryConfirmServerState extends State<RecoveryConfirmServer> {
|
class _RecoveryConfirmServerState extends State<RecoveryConfirmServer> {
|
||||||
|
@ -57,11 +57,11 @@ class _RecoveryConfirmServerState extends State<RecoveryConfirmServer> {
|
||||||
children: [
|
children: [
|
||||||
if (servers.length == 1 ||
|
if (servers.length == 1 ||
|
||||||
(!_isExtended && _isServerFound(servers)))
|
(!_isExtended && _isServerFound(servers)))
|
||||||
_ConfirmServer(context, _firstValidServer(servers),
|
confirmServer(context, _firstValidServer(servers),
|
||||||
servers.length > 1),
|
servers.length > 1),
|
||||||
if (servers.length > 1 &&
|
if (servers.length > 1 &&
|
||||||
(_isExtended || !_isServerFound(servers)))
|
(_isExtended || !_isServerFound(servers)))
|
||||||
_ChooseServer(context, servers),
|
chooseServer(context, servers),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
if (servers?.isEmpty ?? true)
|
if (servers?.isEmpty ?? true)
|
||||||
|
@ -84,14 +84,14 @@ class _RecoveryConfirmServerState extends State<RecoveryConfirmServer> {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _ConfirmServer(
|
Widget confirmServer(
|
||||||
BuildContext context,
|
BuildContext context,
|
||||||
ServerBasicInfoWithValidators server,
|
ServerBasicInfoWithValidators server,
|
||||||
bool showMoreServersButton,
|
bool showMoreServersButton,
|
||||||
) {
|
) {
|
||||||
return Column(
|
return Column(
|
||||||
children: [
|
children: [
|
||||||
_ServerCard(
|
serverCard(
|
||||||
context: context,
|
context: context,
|
||||||
server: server,
|
server: server,
|
||||||
),
|
),
|
||||||
|
@ -110,14 +110,14 @@ class _RecoveryConfirmServerState extends State<RecoveryConfirmServer> {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _ChooseServer(
|
Widget chooseServer(
|
||||||
BuildContext context, List<ServerBasicInfoWithValidators> servers) {
|
BuildContext context, List<ServerBasicInfoWithValidators> servers) {
|
||||||
return Column(
|
return Column(
|
||||||
children: [
|
children: [
|
||||||
for (final server in servers)
|
for (final server in servers)
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.symmetric(vertical: 8.0),
|
padding: const EdgeInsets.symmetric(vertical: 8.0),
|
||||||
child: _ServerCard(
|
child: serverCard(
|
||||||
context: context,
|
context: context,
|
||||||
server: server,
|
server: server,
|
||||||
onTap: () => _showConfirmationDialog(context, server),
|
onTap: () => _showConfirmationDialog(context, server),
|
||||||
|
@ -127,7 +127,7 @@ class _RecoveryConfirmServerState extends State<RecoveryConfirmServer> {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _ServerCard(
|
Widget serverCard(
|
||||||
{required BuildContext context,
|
{required BuildContext context,
|
||||||
required ServerBasicInfoWithValidators server,
|
required ServerBasicInfoWithValidators server,
|
||||||
VoidCallback? onTap}) {
|
VoidCallback? onTap}) {
|
||||||
|
|
|
@ -47,7 +47,7 @@ class RecoveryMethodSelect extends StatelessWidget {
|
||||||
BrandButton.text(
|
BrandButton.text(
|
||||||
title: 'recovering.method_select_nothing'.tr(),
|
title: 'recovering.method_select_nothing'.tr(),
|
||||||
onPressed: () => Navigator.of(context)
|
onPressed: () => Navigator.of(context)
|
||||||
.push(materialRoute(RecoveryFallbackMethodSelect())),
|
.push(materialRoute(const RecoveryFallbackMethodSelect())),
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
|
|
@ -36,10 +36,10 @@ class RecoveryRouting extends StatelessWidget {
|
||||||
currentPage = const RecoverByRecoveryKey();
|
currentPage = const RecoverByRecoveryKey();
|
||||||
break;
|
break;
|
||||||
case RecoveryStep.newDeviceKey:
|
case RecoveryStep.newDeviceKey:
|
||||||
currentPage = RecoverByNewDeviceKeyInstruction();
|
currentPage = const RecoverByNewDeviceKeyInstruction();
|
||||||
break;
|
break;
|
||||||
case RecoveryStep.oldToken:
|
case RecoveryStep.oldToken:
|
||||||
currentPage = RecoverByOldToken();
|
currentPage = const RecoverByOldToken();
|
||||||
break;
|
break;
|
||||||
case RecoveryStep.hetznerToken:
|
case RecoveryStep.hetznerToken:
|
||||||
currentPage = const RecoveryHetznerConnected();
|
currentPage = const RecoveryHetznerConnected();
|
||||||
|
|
|
@ -24,7 +24,7 @@ class SshKeysPage extends StatefulWidget {
|
||||||
const SshKeysPage({Key? key, required this.user}) : super(key: key);
|
const SshKeysPage({Key? key, required this.user}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_SshKeysPageState createState() => _SshKeysPageState();
|
State<SshKeysPage> createState() => _SshKeysPageState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _SshKeysPageState extends State<SshKeysPage> {
|
class _SshKeysPageState extends State<SshKeysPage> {
|
||||||
|
|
Loading…
Add table
Reference in a new issue