Files
2024-07-20 22:05:08 +05:30

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!;
},
);
}
}