From a31c6437912d41e2bb77c8c447b02772307c292c Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Wed, 30 Oct 2019 10:16:56 +0200 Subject: [PATCH] Settings --- lib/data/repositories/auth_repository.dart | 2 +- lib/ui/app/app_drawer.dart | 9 ++++ lib/ui/app/debug/state_inspector.dart | 57 ++++++++++++++++++++++ 3 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 lib/ui/app/debug/state_inspector.dart diff --git a/lib/data/repositories/auth_repository.dart b/lib/data/repositories/auth_repository.dart index 1a46cc63f..4bfa571d8 100644 --- a/lib/data/repositories/auth_repository.dart +++ b/lib/data/repositories/auth_repository.dart @@ -89,7 +89,7 @@ class AuthRepository { */ url += - '?include=company.groups,company.company_gateways.gateway&include_static=true'; + '?include=account,user,token,company.groups,company.company_gateways.gateway&include_static=true'; final dynamic response = await webClient.post(url, token ?? '', data: json.encode(data)); diff --git a/lib/ui/app/app_drawer.dart b/lib/ui/app/app_drawer.dart index 03714e71c..eb7314b16 100644 --- a/lib/ui/app/app_drawer.dart +++ b/lib/ui/app/app_drawer.dart @@ -2,6 +2,7 @@ import 'dart:io'; import 'package:flutter/foundation.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; +import 'package:invoiceninja_flutter/ui/app/debug/state_inspector.dart'; import 'package:invoiceninja_flutter/ui/app/resources/cached_image.dart'; import 'package:invoiceninja_flutter/ui/app/upgrade_dialog.dart'; import 'package:invoiceninja_flutter/utils/pdf.dart'; @@ -474,6 +475,14 @@ class SidebarFooter extends StatelessWidget { icon: Icon(Icons.info_outline), onPressed: () => showAbout(), ), + IconButton( + icon: Icon(Icons.settings_applications), + onPressed: () => showDialog( + context: context, + builder: (BuildContext context) { + return StateInspector(); + }), + ), if (state.lastError.isNotEmpty) IconButton( icon: Icon( diff --git a/lib/ui/app/debug/state_inspector.dart b/lib/ui/app/debug/state_inspector.dart new file mode 100644 index 000000000..aaebd2dab --- /dev/null +++ b/lib/ui/app/debug/state_inspector.dart @@ -0,0 +1,57 @@ +import 'dart:convert'; + +import 'package:flutter/material.dart'; +import 'package:flutter_redux/flutter_redux.dart'; +import 'package:invoiceninja_flutter/data/models/serializers.dart'; +import 'package:invoiceninja_flutter/redux/app/app_state.dart'; + +class StateInspector extends StatefulWidget { + @override + _StateInspectorState createState() => _StateInspectorState(); +} + +class _StateInspectorState extends State { + + String _text; + + @override + Widget build(BuildContext context) { + final state = StoreProvider.of(context).state; + final data = serializers.serializeWith(AppState.serializer, state); + final json = jsonEncode(data); + + final JsonEncoder encoder = new JsonEncoder.withIndent(' '); + final String prettyJson = encoder.convert(json); + + return Padding( + padding: const EdgeInsets.only(left: 100, top: 20, right: 100), + child: Material( + child: Container( + padding: const EdgeInsets.all(30), + child: Column( + children: [ + TextFormField( + autofocus: true, + onChanged: (value) { + print('TEXT: $value'); + if (value.endsWith('\t')) { + print('ends with tab'); + } + }, + ), + SizedBox(height: 20), + Row( + children: [ + for (var key in (data as Map).keys) + Text('$key') + ], + ), + SizedBox(height: 20), + Text(prettyJson.substring(0, 1000)), + ], + ), + ), + ), + ); + } +}