Skip to content

Commit e57bcc8

Browse files
authored
[Bugfix] Prevent CLI from crashing while using FlutterFlowApi (#17)
* [Bugfix] Prevent CLI from crashing while using `FlutterFlowApi` * Refactor to throw the exception in a better way * Change to a bit cleaner structure
1 parent af72144 commit e57bcc8

File tree

3 files changed

+24
-15
lines changed

3 files changed

+24
-15
lines changed

bin/flutterflow_cli.dart

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'dart:io';
22

33
import 'package:args/args.dart';
4-
import 'package:flutterflow_cli/src/flutterflow_cli_base.dart';
4+
import 'package:flutterflow_cli/src/flutterflow_api_client.dart';
55

66
const kDefaultEndpoint = 'https://api.flutterflow.io/v1';
77

@@ -43,17 +43,21 @@ void main(List<String> args) async {
4343
endpoint = kDefaultEndpoint;
4444
}
4545

46-
await exportCode(
47-
token: token,
48-
endpoint: endpoint,
49-
projectId: project,
50-
destinationPath: parsedArguments.command!['dest'],
51-
includeAssets: parsedArguments.command!['include-assets'],
52-
branchName: parsedArguments.command!['branch-name'],
53-
unzipToParentFolder: parsedArguments.command!['parent-folder'],
54-
fix: parsedArguments.command!['fix'],
55-
exportAsModule: parsedArguments.command!['as-module'],
56-
);
46+
try {
47+
await exportCode(
48+
token: token,
49+
endpoint: endpoint,
50+
projectId: project,
51+
destinationPath: parsedArguments.command!['dest'],
52+
includeAssets: parsedArguments.command!['include-assets'],
53+
branchName: parsedArguments.command!['branch-name'],
54+
unzipToParentFolder: parsedArguments.command!['parent-folder'],
55+
fix: parsedArguments.command!['fix'],
56+
exportAsModule: parsedArguments.command!['as-module'],
57+
);
58+
} catch (_) {
59+
exit(1);
60+
}
5761
}
5862

5963
ArgResults _parseArgs(List<String> args) {

lib/flutterflow_cli.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
library flutterflow_cli;
22

3-
export 'package:flutterflow_cli/src/flutterflow_cli_base.dart';
3+
export 'package:flutterflow_cli/src/flutterflow_api_client.dart';
Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,11 +159,15 @@ Future<dynamic> _callExport({
159159
},
160160
);
161161

162+
if (response.statusCode == 429) {
163+
throw 'Too many requests. Please try again later.';
164+
}
165+
162166
if (response.statusCode != 200) {
163167
stderr.write('Unexpected error from the server.\n');
164168
stderr.write('Status: ${response.statusCode}\n');
165169
stderr.write('Body: ${response.body}\n');
166-
exit(1);
170+
throw ('Unexpected error from the server.');
167171
}
168172

169173
final parsedResponse = jsonDecode(response.body);
@@ -172,10 +176,11 @@ Future<dynamic> _callExport({
172176
if (parsedResponse['reason'] != null &&
173177
parsedResponse['reason'].isNotEmpty) {
174178
stderr.write('Error: ${parsedResponse['reason']}.\n');
179+
throw 'Error: ${parsedResponse['reason']}.';
175180
} else {
176181
stderr.write('Unexpected server error.\n');
182+
throw 'Unexpected server error.';
177183
}
178-
exit(1);
179184
}
180185

181186
return parsedResponse['value'];

0 commit comments

Comments
 (0)