Tweak reporting menu prompt and add setting to toggle on/off

merge-requests/69/head
Hank Grabowski 2025-05-20 09:11:23 -04:00
rodzic 6367571bf1
commit ed354b11bd
5 zmienionych plików z 63 dodań i 3 usunięć

Wyświetl plik

@ -478,8 +478,17 @@ class _StatusControlState extends ConsumerState<FlattenedTreeEntryControl> {
}
Future<void> _report(Profile profile, TimelineEntry entry) async {
final confirm = await showYesNoDialog(context,
'Open the link in the browser to report on your Friendica server?');
final needToConfirm = ref.read(promptOnReportingProvider);
late final bool confirm;
if (needToConfirm) {
confirm = (await showYesNoDialog(context,
'Open the link in the browser to report on your Friendica server? (You will need to be logged in on the browser too)')) ??
false;
} else {
confirm = true;
}
if (confirm == true) {
final link = Uri.https(
profile.serverName,

Wyświetl plik

@ -437,7 +437,7 @@ class _InstanceDataV2ProviderElement
Profile get profile => (origin as _InstanceDataV2Provider).profile;
}
String _$instanceRulesHash() => r'686f3ddc9bf9593457b2f3269e5797495f0f8228';
String _$instanceRulesHash() => r'7d50f58d883237e5876bb5ad2bdf2f32c8637646';
/// See also [instanceRules].
@ProviderFor(instanceRules)

Wyświetl plik

@ -248,3 +248,19 @@ class OpenTagsInApp extends _$SpoilerHidingSetting {
state = value;
}
}
@Riverpod(keepAlive: true)
class PromptOnReporting extends _$SpoilerHidingSetting {
static const _promptOnReporting = 'PromptOnReporting';
@override
bool build() {
return ref.watch(sharedPreferencesProvider).getBool(_promptOnReporting) ??
true;
}
set value(bool value) {
ref.read(sharedPreferencesProvider).setBool(_promptOnReporting, value);
state = value;
}
}

Wyświetl plik

@ -171,5 +171,21 @@ final openTagsInAppProvider = NotifierProvider<OpenTagsInApp, bool>.internal(
);
typedef _$OpenTagsInApp = Notifier<bool>;
String _$promptOnReportingHash() => r'68cf146e3839c0ef1b14a475b461f6899b810b03';
/// See also [PromptOnReporting].
@ProviderFor(PromptOnReporting)
final promptOnReportingProvider =
NotifierProvider<PromptOnReporting, bool>.internal(
PromptOnReporting.new,
name: r'promptOnReportingProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$promptOnReportingHash,
dependencies: null,
allTransitiveDependencies: null,
);
typedef _$PromptOnReporting = Notifier<bool>;
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package

Wyświetl plik

@ -34,6 +34,7 @@ class SettingsScreen extends ConsumerWidget {
_NetworkTimeoutWidget(),
_NotificationGroupingWidget(),
_SpoilerHidingWidget(),
_PromptOnReportingWidget(),
_OpenTagsInAppWidget(),
_ThemeWidget(),
if (!kReleaseMode) _ColorBlindnessWidget(),
@ -224,6 +225,24 @@ class _SpoilerHidingWidget extends ConsumerWidget {
}
}
class _PromptOnReportingWidget extends ConsumerWidget {
const _PromptOnReportingWidget();
@override
Widget build(BuildContext context, WidgetRef ref) {
final promptOnReporting = ref.watch(promptOnReportingProvider);
return ListTile(
title: const Text('Confirm Reporting Prompt'),
trailing: Switch(
onChanged: (value) {
ref.read(promptOnReportingProvider.notifier).value = value;
},
value: promptOnReporting,
),
);
}
}
class _OpenTagsInAppWidget extends ConsumerWidget {
const _OpenTagsInAppWidget();