mirror of
https://github.com/foss42/apidash.git
synced 2025-05-24 09:46:45 +08:00
56 lines
1.8 KiB
Dart
56 lines
1.8 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:apidash/providers/providers.dart';
|
|
import 'package:apidash/widgets/widgets.dart';
|
|
import 'package:apidash/codegen/codegen.dart';
|
|
import 'package:apidash/utils/utils.dart';
|
|
import 'package:apidash/consts.dart';
|
|
|
|
final Codegen codegen = Codegen();
|
|
|
|
class CodePane extends ConsumerWidget {
|
|
const CodePane({
|
|
super.key,
|
|
this.isHistoryRequest = false,
|
|
});
|
|
|
|
final bool isHistoryRequest;
|
|
|
|
@override
|
|
Widget build(BuildContext context, WidgetRef ref) {
|
|
final CodegenLanguage codegenLanguage =
|
|
ref.watch(codegenLanguageStateProvider);
|
|
|
|
final selectedHistoryRequestModel =
|
|
ref.watch(selectedHistoryRequestModelProvider);
|
|
|
|
final selectedRequestModel = isHistoryRequest
|
|
? getRequestModelFromHistoryModel(selectedHistoryRequestModel!)
|
|
: ref.watch(selectedRequestModelProvider);
|
|
final defaultUriScheme =
|
|
ref.watch(settingsProvider.select((value) => value.defaultUriScheme));
|
|
|
|
var envMap = ref.watch(availableEnvironmentVariablesStateProvider);
|
|
var activeEnvId = ref.watch(activeEnvironmentIdStateProvider);
|
|
|
|
final substitutedRequestModel = selectedRequestModel?.copyWith(
|
|
httpRequestModel: substituteHttpRequestModel(
|
|
selectedRequestModel.httpRequestModel!, envMap, activeEnvId));
|
|
|
|
final code = codegen.getCode(
|
|
codegenLanguage, substitutedRequestModel!, defaultUriScheme);
|
|
if (code == null) {
|
|
return const ErrorMessage(
|
|
message: "An error was encountered while generating code. $kRaiseIssue",
|
|
);
|
|
}
|
|
return ViewCodePane(
|
|
code: code,
|
|
codegenLanguage: codegenLanguage,
|
|
onChangedCodegenLanguage: (CodegenLanguage? value) {
|
|
ref.read(codegenLanguageStateProvider.notifier).state = value!;
|
|
},
|
|
);
|
|
}
|
|
}
|