mirror of
https://github.com/foss42/apidash.git
synced 2025-08-06 13:51:20 +08:00
Default code generator settings
This commit is contained in:
@ -9,6 +9,7 @@ class SettingsModel {
|
|||||||
this.size,
|
this.size,
|
||||||
this.offset,
|
this.offset,
|
||||||
this.defaultUriScheme = kDefaultUriScheme,
|
this.defaultUriScheme = kDefaultUriScheme,
|
||||||
|
this.defaultCodeGenLang = CodegenLanguage.curl,
|
||||||
this.saveResponses = true});
|
this.saveResponses = true});
|
||||||
|
|
||||||
final bool isDark;
|
final bool isDark;
|
||||||
@ -16,6 +17,7 @@ class SettingsModel {
|
|||||||
final Size? size;
|
final Size? size;
|
||||||
final Offset? offset;
|
final Offset? offset;
|
||||||
final String defaultUriScheme;
|
final String defaultUriScheme;
|
||||||
|
final CodegenLanguage defaultCodeGenLang;
|
||||||
final bool saveResponses;
|
final bool saveResponses;
|
||||||
|
|
||||||
SettingsModel copyWith({
|
SettingsModel copyWith({
|
||||||
@ -24,6 +26,7 @@ class SettingsModel {
|
|||||||
Size? size,
|
Size? size,
|
||||||
Offset? offset,
|
Offset? offset,
|
||||||
String? defaultUriScheme,
|
String? defaultUriScheme,
|
||||||
|
CodegenLanguage? defaultCodeGenLang,
|
||||||
bool? saveResponses,
|
bool? saveResponses,
|
||||||
}) {
|
}) {
|
||||||
return SettingsModel(
|
return SettingsModel(
|
||||||
@ -32,6 +35,7 @@ class SettingsModel {
|
|||||||
this.alwaysShowCollectionPaneScrollbar,
|
this.alwaysShowCollectionPaneScrollbar,
|
||||||
size: size ?? this.size,
|
size: size ?? this.size,
|
||||||
defaultUriScheme: defaultUriScheme ?? this.defaultUriScheme,
|
defaultUriScheme: defaultUriScheme ?? this.defaultUriScheme,
|
||||||
|
defaultCodeGenLang: defaultCodeGenLang ?? this.defaultCodeGenLang,
|
||||||
offset: offset ?? this.offset,
|
offset: offset ?? this.offset,
|
||||||
saveResponses: saveResponses ?? this.saveResponses,
|
saveResponses: saveResponses ?? this.saveResponses,
|
||||||
);
|
);
|
||||||
@ -54,6 +58,16 @@ class SettingsModel {
|
|||||||
offset = Offset(dx, dy);
|
offset = Offset(dx, dy);
|
||||||
}
|
}
|
||||||
final defaultUriScheme = data["defaultUriScheme"] as String?;
|
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?;
|
final saveResponses = data["saveResponses"] as bool?;
|
||||||
|
|
||||||
const sm = SettingsModel();
|
const sm = SettingsModel();
|
||||||
@ -64,6 +78,7 @@ class SettingsModel {
|
|||||||
size: size,
|
size: size,
|
||||||
offset: offset,
|
offset: offset,
|
||||||
defaultUriScheme: defaultUriScheme,
|
defaultUriScheme: defaultUriScheme,
|
||||||
|
defaultCodeGenLang: defaultCodeGenLang,
|
||||||
saveResponses: saveResponses,
|
saveResponses: saveResponses,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -77,6 +92,7 @@ class SettingsModel {
|
|||||||
"dx": offset?.dx,
|
"dx": offset?.dx,
|
||||||
"dy": offset?.dy,
|
"dy": offset?.dy,
|
||||||
"defaultUriScheme": defaultUriScheme,
|
"defaultUriScheme": defaultUriScheme,
|
||||||
|
"defaultCodeGenLang": defaultCodeGenLang.name,
|
||||||
"saveResponses": saveResponses,
|
"saveResponses": saveResponses,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,11 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'package:apidash/models/models.dart' show SettingsModel;
|
import '../models/models.dart' show SettingsModel;
|
||||||
import 'package:apidash/services/services.dart' show hiveHandler, HiveHandler;
|
import '../services/services.dart' show hiveHandler, HiveHandler;
|
||||||
|
import '../consts.dart';
|
||||||
|
|
||||||
|
final codegenLanguageStateProvider = StateProvider<CodegenLanguage>((ref) =>
|
||||||
|
ref.watch(settingsProvider.select((value) => value.defaultCodeGenLang)));
|
||||||
|
|
||||||
final StateNotifierProvider<ThemeStateNotifier, SettingsModel>
|
final StateNotifierProvider<ThemeStateNotifier, SettingsModel>
|
||||||
settingsProvider =
|
settingsProvider =
|
||||||
@ -19,6 +23,7 @@ class ThemeStateNotifier extends StateNotifier<SettingsModel> {
|
|||||||
Size? size,
|
Size? size,
|
||||||
Offset? offset,
|
Offset? offset,
|
||||||
String? defaultUriScheme,
|
String? defaultUriScheme,
|
||||||
|
CodegenLanguage? defaultCodeGenLang,
|
||||||
bool? saveResponses,
|
bool? saveResponses,
|
||||||
}) async {
|
}) async {
|
||||||
state = state.copyWith(
|
state = state.copyWith(
|
||||||
@ -27,6 +32,7 @@ class ThemeStateNotifier extends StateNotifier<SettingsModel> {
|
|||||||
size: size,
|
size: size,
|
||||||
offset: offset,
|
offset: offset,
|
||||||
defaultUriScheme: defaultUriScheme,
|
defaultUriScheme: defaultUriScheme,
|
||||||
|
defaultCodeGenLang: defaultCodeGenLang,
|
||||||
saveResponses: saveResponses,
|
saveResponses: saveResponses,
|
||||||
);
|
);
|
||||||
await hiveHandler.saveSettings(state.toJson());
|
await hiveHandler.saveSettings(state.toJson());
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
import 'package:apidash/consts.dart';
|
|
||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
|
|
||||||
final navRailIndexStateProvider = StateProvider<int>((ref) => 0);
|
final navRailIndexStateProvider = StateProvider<int>((ref) => 0);
|
||||||
@ -8,5 +7,3 @@ final sentRequestIdStateProvider = StateProvider<String?>((ref) => null);
|
|||||||
final codePaneVisibleStateProvider = StateProvider<bool>((ref) => false);
|
final codePaneVisibleStateProvider = StateProvider<bool>((ref) => false);
|
||||||
final saveDataStateProvider = StateProvider<bool>((ref) => false);
|
final saveDataStateProvider = StateProvider<bool>((ref) => false);
|
||||||
final clearDataStateProvider = StateProvider<bool>((ref) => false);
|
final clearDataStateProvider = StateProvider<bool>((ref) => false);
|
||||||
final codegenLanguageStateProvider =
|
|
||||||
StateProvider<CodegenLanguage>((ref) => CodegenLanguage.curl);
|
|
||||||
|
@ -75,6 +75,25 @@ class _SettingsPageState extends ConsumerState<SettingsPage> {
|
|||||||
);
|
);
|
||||||
}).toList()),
|
}).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<DropdownMenuEntry<CodegenLanguage>>((value) {
|
||||||
|
return DropdownMenuEntry<CodegenLanguage>(
|
||||||
|
value: value,
|
||||||
|
label: value.label,
|
||||||
|
);
|
||||||
|
}).toList()),
|
||||||
|
),
|
||||||
CheckboxListTile(
|
CheckboxListTile(
|
||||||
contentPadding: EdgeInsets.zero,
|
contentPadding: EdgeInsets.zero,
|
||||||
title: const Text("Save Responses"),
|
title: const Text("Save Responses"),
|
||||||
|
Reference in New Issue
Block a user