From 82f28d675ff36eeb5684a0ae9ab21ef8eefd64b4 Mon Sep 17 00:00:00 2001 From: Ashita Prasad Date: Mon, 30 Oct 2023 18:26:57 +0530 Subject: [PATCH] Default code generator settings --- lib/models/settings_model.dart | 16 ++++++++++++++++ lib/providers/settings_providers.dart | 10 ++++++++-- lib/providers/ui_providers.dart | 3 --- lib/screens/settings_page.dart | 19 +++++++++++++++++++ 4 files changed, 43 insertions(+), 5 deletions(-) diff --git a/lib/models/settings_model.dart b/lib/models/settings_model.dart index e705c8b5..eaeb4fa7 100644 --- a/lib/models/settings_model.dart +++ b/lib/models/settings_model.dart @@ -9,6 +9,7 @@ class SettingsModel { this.size, this.offset, this.defaultUriScheme = kDefaultUriScheme, + this.defaultCodeGenLang = CodegenLanguage.curl, this.saveResponses = true}); final bool isDark; @@ -16,6 +17,7 @@ class SettingsModel { final Size? size; final Offset? offset; final String defaultUriScheme; + final CodegenLanguage defaultCodeGenLang; final bool saveResponses; SettingsModel copyWith({ @@ -24,6 +26,7 @@ class SettingsModel { Size? size, Offset? offset, String? defaultUriScheme, + CodegenLanguage? defaultCodeGenLang, bool? saveResponses, }) { return SettingsModel( @@ -32,6 +35,7 @@ class SettingsModel { this.alwaysShowCollectionPaneScrollbar, size: size ?? this.size, defaultUriScheme: defaultUriScheme ?? this.defaultUriScheme, + defaultCodeGenLang: defaultCodeGenLang ?? this.defaultCodeGenLang, offset: offset ?? this.offset, saveResponses: saveResponses ?? this.saveResponses, ); @@ -54,6 +58,16 @@ class SettingsModel { offset = Offset(dx, dy); } final defaultUriScheme = data["defaultUriScheme"] as String?; + final defaultCodeGenLangStr = data["defaultCodeGenLang"] as String?; + CodegenLanguage? defaultCodeGenLang; + if (defaultCodeGenLangStr != null) { + try { + defaultCodeGenLang = + CodegenLanguage.values.byName(defaultCodeGenLangStr); + } catch (e) { + // pass + } + } final saveResponses = data["saveResponses"] as bool?; const sm = SettingsModel(); @@ -64,6 +78,7 @@ class SettingsModel { size: size, offset: offset, defaultUriScheme: defaultUriScheme, + defaultCodeGenLang: defaultCodeGenLang, saveResponses: saveResponses, ); } @@ -77,6 +92,7 @@ class SettingsModel { "dx": offset?.dx, "dy": offset?.dy, "defaultUriScheme": defaultUriScheme, + "defaultCodeGenLang": defaultCodeGenLang.name, "saveResponses": saveResponses, }; } diff --git a/lib/providers/settings_providers.dart b/lib/providers/settings_providers.dart index 6f8938e2..b4d43d51 100644 --- a/lib/providers/settings_providers.dart +++ b/lib/providers/settings_providers.dart @@ -1,7 +1,11 @@ import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:apidash/models/models.dart' show SettingsModel; -import 'package:apidash/services/services.dart' show hiveHandler, HiveHandler; +import '../models/models.dart' show SettingsModel; +import '../services/services.dart' show hiveHandler, HiveHandler; +import '../consts.dart'; + +final codegenLanguageStateProvider = StateProvider((ref) => + ref.watch(settingsProvider.select((value) => value.defaultCodeGenLang))); final StateNotifierProvider settingsProvider = @@ -19,6 +23,7 @@ class ThemeStateNotifier extends StateNotifier { Size? size, Offset? offset, String? defaultUriScheme, + CodegenLanguage? defaultCodeGenLang, bool? saveResponses, }) async { state = state.copyWith( @@ -27,6 +32,7 @@ class ThemeStateNotifier extends StateNotifier { size: size, offset: offset, defaultUriScheme: defaultUriScheme, + defaultCodeGenLang: defaultCodeGenLang, saveResponses: saveResponses, ); await hiveHandler.saveSettings(state.toJson()); diff --git a/lib/providers/ui_providers.dart b/lib/providers/ui_providers.dart index eceba834..f5499d16 100644 --- a/lib/providers/ui_providers.dart +++ b/lib/providers/ui_providers.dart @@ -1,4 +1,3 @@ -import 'package:apidash/consts.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; final navRailIndexStateProvider = StateProvider((ref) => 0); @@ -8,5 +7,3 @@ final sentRequestIdStateProvider = StateProvider((ref) => null); final codePaneVisibleStateProvider = StateProvider((ref) => false); final saveDataStateProvider = StateProvider((ref) => false); final clearDataStateProvider = StateProvider((ref) => false); -final codegenLanguageStateProvider = - StateProvider((ref) => CodegenLanguage.curl); diff --git a/lib/screens/settings_page.dart b/lib/screens/settings_page.dart index e732908f..28e93658 100644 --- a/lib/screens/settings_page.dart +++ b/lib/screens/settings_page.dart @@ -75,6 +75,25 @@ class _SettingsPageState extends ConsumerState { ); }).toList()), ), + ListTile( + contentPadding: EdgeInsets.zero, + hoverColor: kColorTransparent, + title: const Text('Default Code Generator'), + trailing: DropdownMenu( + onSelected: (value) { + ref + .read(settingsProvider.notifier) + .update(defaultCodeGenLang: value); + }, + initialSelection: settings.defaultCodeGenLang, + dropdownMenuEntries: CodegenLanguage.values + .map>((value) { + return DropdownMenuEntry( + value: value, + label: value.label, + ); + }).toList()), + ), CheckboxListTile( contentPadding: EdgeInsets.zero, title: const Text("Save Responses"),