From c652276066d378a0581790e33839b21c0ff165a8 Mon Sep 17 00:00:00 2001 From: Ivan Murashov Date: Fri, 8 Sep 2017 11:01:42 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=D1=8B=D0=BF=D0=B0=D0=B4=D0=B0=D1=8E?= =?UTF-8?q?=D1=89=D0=B5=D0=B5=20=D0=BC=D0=B5=D0=BD=D1=8E=20=D1=81=20=D1=82?= =?UTF-8?q?=D1=80=D0=B5=D0=BC=D1=8F=20=D0=BA=D0=BD=D0=BE=D0=BF=D0=BA=D0=B0?= =?UTF-8?q?=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ansion_icon.png => faq_expansion_icon.png} | Bin assets/help.png | Bin 0 -> 3632 bytes assets/logout.png | Bin 1300 -> 1213 bytes assets/settings.png | Bin 0 -> 2373 bytes checker.iml | 16 --------- lib/base_state.dart | 30 +++++++++++++---- lib/common.dart | 27 ++++++++------- lib/consts.dart | 8 ++++- lib/db.dart | 19 +++++++++-- lib/main.dart | 2 +- lib/{ => screens}/faq.dart | 8 ++--- lib/{ => screens}/finish_registration.dart | 23 ++++--------- lib/{ => screens}/purchase.dart | 31 ++++++++++-------- lib/{ => screens}/purchase_success.dart | 2 +- lib/{ => screens}/registration.dart | 15 ++++----- lib/{ => screens}/splash.dart | 20 +++++------ pubspec.yaml | 4 ++- 17 files changed, 111 insertions(+), 94 deletions(-) rename assets/{expansion_icon.png => faq_expansion_icon.png} (100%) create mode 100644 assets/help.png create mode 100644 assets/settings.png delete mode 100644 checker.iml rename lib/{ => screens}/faq.dart (97%) rename lib/{ => screens}/finish_registration.dart (89%) rename lib/{ => screens}/purchase.dart (89%) rename lib/{ => screens}/purchase_success.dart (99%) rename lib/{ => screens}/registration.dart (92%) rename lib/{ => screens}/splash.dart (93%) diff --git a/assets/expansion_icon.png b/assets/faq_expansion_icon.png similarity index 100% rename from assets/expansion_icon.png rename to assets/faq_expansion_icon.png diff --git a/assets/help.png b/assets/help.png new file mode 100644 index 0000000000000000000000000000000000000000..5d7029a5a6647403b1e30b0542b651e605d3d062 GIT binary patch literal 3632 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 bfU^9*Hie*$BIC5x00000NkvXXu0mjf9$`9c literal 1300 zcmV+v1?&2WP)<5DFwZf_=3f!fmZHB_1dH8a<^yeql$?m{6Va2A4CYv4 z=Cj&4=AeiOG~z>nR%q9;&&=Ce;gDPe$RN7O%+Q*ub`He>`BF8St}~9)rcQKTDgy+< zI6|*W#`gQnptvLR?E*Dqyv{vler8#`i0n8UlIphF!mbQZLTA*n<`P-;21Eq*?QLd~ zZDz(ksvEmo23itpzj1>Qk=3%}cDR!m_kfwR#(dd8uwFoc8soMJwXa09UTV?ZwfQbG z_8BwZN`2NTfDBNMiRfWqanO*JQXs>48C&p(nKA!Dn+nJP1;^rcU|nWo7}*^Bo?j7- z2;LSV@|lS4RT~HW0AK)jVRwKck-p6gmx#o`?=mxPmGdSdpNQzbem_kmXX}AYi9v~~ zwsjdI5<8+HD6#cer!A2`W#-lYP)6t&twT-uLqyk0K68UUN6fs@BNUCJ)?oh&L%{vm zfJfXN6f9Ll9uU!cBD$8?{ZAsotNU*QLdU*q&?OWH1}}CP=o^VmBVL0Gp*mdP&(STE zDZz9NWhyY;L$QEi=Cua)W%eNK%6W@z$_2r4Hl~TgnS!$5ZI*ro5rH8L8BEh03NURV zZz2K<9*TR+9GOxOL%&SC#{9m@fI;9I`>ATs6aXZ7;h>GMN8nS$z2*K%Pb=59?BF&L|sFf zs)(ptC{q>@bqQtaBBEZQOj<-#4aL>BJaxXzP`X*{r1ellR0Snc@KcqGQ4|r)vUnxF zk+z7a7D}wdq8LmfQr9HhpeZ7%g%S%$<3kpKNz}452{$?;o-87&g_1LfW-y7AOS6ze zu861>3gV;Kc(Z(O4|%96C@##dwTxL32dr8=@%1|V0hiDVe+@|UF{V`{S!%^o!+<$#$#y|n`>G<$@SbHJ?o zw8$@1HuPdsaCGpxz33#^7}j}-W_Oz6r8AJiu%t0U8UaTxmq`0aL@yG*-iTFJHA~3n ziioN`S`VtGC^-9m>7j_I36z$<&FP_ts2YkAi0Y?t&NH68h^PumCXzLrEHw}ZW%44T zS}3t1!XhA^eVVk0s1{1<2TLXm8DC|Y0z!)~q>-I_LexTuRaRC3@s80XMMSkwLII{G zu~ZMt(u;_ypm+<%jR6CR|Hr^mMX6Ekr56!ZLs9Ljkkq^0u!0000< KMNUMnLSTXkYETIP diff --git a/assets/settings.png b/assets/settings.png new file mode 100644 index 0000000000000000000000000000000000000000..1e19365d61f0a0e948320f870109338749f2b274 GIT binary patch literal 2373 zcmV-L3A*-)P)49P41Iq{oJg8i?FcAXb}xWtNnZDvhMty$B^9PB3FzwT zTJ6-WJ^@I3Pho9*Y;9|6>zLH&NdT)#0`k56t;9}If`79ROj?ysUq1_4M%lx(#l4p7bOt+aEo1PGopCfeGwi_lZbUnb^;DDIu zx}1^h@QX8FJ~ROb4jibdU*Av!qh$_w1&sY5-aYcd^N(-cx^;3fLpzU@-lb{uBLMFS z>yTjkziFi1+L~_q>tga#zPe_p+m>kIkl5NWbo$zXkNxjzRw^$q9yQ^R$c$kT2FN8Xlz#tu z&)9+i9tP;melZEyl{NGm{k98Dz^Qbx^R(w;P%D;qy9$%m7IdXGa1Sh4_Fn*0-K%{} zTs~zQ`j#NN0})WPN>?-J(I5&}Y8wJylQmM0`Ss5?0S5;M&pmf+ya&LgewD3o`D3rF zuFG8B(C~^MKYbHW=q=w4<~#f-IcsEz?l9BI@A&c87XcmJX$z6%qO@9VpQ9L>#qgxiQ3vBKn-HD^n% zx%p`kzl4Ix%v!OxzZ2lB2N@PQ@5CN|8&S!01tHJL8Z1!nP z0CC!zO*dU9GKqboxjWnzOC7x%rtOb_XWFRhBQ6E~H6%7zFndUf63Cb%_SiR5PeDH$}y`^SqQ% zz<82tczZ6DdNHUyp$Kr5KE|9#_4VHc=3B$PjnZDzNJcrg%*Lo-l^+T@Av+-YeyO?X zwyTLML4)tM3r)c6ykObxte*^O3^Q%dWs+{H8~Ih}DQ^d{`+gAgDw~F`2W>pJolF9T z!@MUrlSqlCZeblS94V)uvAdfi=rv**y2wrtPkfmKj033k)VQ#KGxEYP0NZ7csd@5j2K6?P9eQAvmPfV%&6~Vp)vKTjd)Ge7F4N zXd2V-+NSvjIRyKJr`Ytti*pW3S%^Db+c<;1nlqC3c^WZKz*ic&oIl8PcX!uLB7M_lJt3E${hA>6qkO@#m-Dt1_ub;% zej_MBUf#Bpf@Qm>8$CA}Nicc=h+rGDFyY(`#w`&{xT0CKw9j>*v&U}JfM10zTUj{LeL)(&G7v>7s(xeTgVQKdQS~D?9|S~@imG23`iTFO zsQQ_w--t<;FZPr^z(hZj@jF{${!%uR`jcc6rNC9)T96d4mJx^|AZD@@0g8Z_BM`HC rH3Ad?F-IU~^=bqt0%DFp% - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/lib/base_state.dart b/lib/base_state.dart index 0ceb4be..4aa805c 100644 --- a/lib/base_state.dart +++ b/lib/base_state.dart @@ -1,5 +1,3 @@ -import 'dart:async'; - import 'package:checker/resources.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; @@ -7,10 +5,12 @@ import 'package:intl/intl.dart'; import 'common.dart'; import 'consts.dart'; -import 'strings.dart'; +import 'package:checker/db.dart'; abstract class BaseState extends State { + SqliteHelper helper; + /// Тип сборки. Определяет, какие брать ресурсы (цвета, картинки) String app; @@ -31,7 +31,10 @@ abstract class BaseState extends State { platform.invokeMethod('getFlavor').then((flavor) { setState(() { app = flavor; - onStart(); + helper = new SqliteHelper(); + helper.open().then((_){ + onStart(); + }); }); }); } @@ -57,7 +60,7 @@ abstract class BaseState extends State { } void onStart() { - + print("ON START!"); } /// Возвращает контейнер с всеми виджетами экрана. @@ -72,7 +75,22 @@ abstract class BaseState extends State { } List getMenuButtons() { - return [getFaqButton()]; + return [ + new PopupMenuButton( + itemBuilder: (BuildContext context) { + [ + new PopupMenuItem( + child: new Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + new Image.asset( + settings_png, width: 48.0, height: 48.0), + new Image.asset(help_png, width: 48.0, height: 48.0), + new Image.asset(logout_png, width: 48.0, height: 48.0), + ])) + ]; + } + )]; } Widget getFaqButton() { diff --git a/lib/common.dart b/lib/common.dart index ce2e840..5a078b8 100644 --- a/lib/common.dart +++ b/lib/common.dart @@ -1,13 +1,13 @@ -import 'db.dart'; -import 'package:flutter/services.dart'; +import 'package:checker/screens/faq.dart'; +import 'package:checker/screens/purchase.dart'; +import 'package:checker/screens/registration.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'consts.dart'; +import 'db.dart'; import 'network.dart'; import 'resources.dart'; -import 'package:checker/registration.dart'; -import 'package:checker/purchase.dart'; -import 'faq.dart'; import 'strings.dart'; // Канал для взаимодействия с кодом платформы. @@ -53,13 +53,18 @@ logout(BuildContext context) async { showYesNoDialog(context, StringsLocalization.confirmation(), StringsLocalization.askChangeStore(), positiveCalback); } -forceLogout(SqliteHelper helper, BuildContext context) async { - String token = await helper.getToken(); +forceLogout(String token , BuildContext context) async { + deleteToken(token).then((response) { print(response.body); - platform.invokeMethod('removeKeys').then((result) { - Navigator.of(context).pop(); - pushRoute(context, new RegistrationScreen()); // Запускаем регистрацию + SqliteHelper helper = new SqliteHelper(); + helper.open().then((_) { + helper.clear().then((_) { + helper.close().then((_) { + Navigator.of(context).pop(); + pushRoute(context, new RegistrationScreen()); // Запускаем регистрацию + }); + }); }); }).catchError((error) { print(error.toString()); @@ -79,7 +84,7 @@ startScanner(BuildContext context, String app, SqliteHelper helper) async { print('call.method: ${call.method}'); if (call.method == 'logout') { - forceLogout(helper, context); + forceLogout(token, context); } else if (call.method == 'faq') { faq(context, true); } else { diff --git a/lib/consts.dart b/lib/consts.dart index a098939..60d9b85 100644 --- a/lib/consts.dart +++ b/lib/consts.dart @@ -8,11 +8,17 @@ const String appToken = '9fec83cdca38c357e6b65dbb17514cdd36bf2a08'; // Assets const String logout_png = 'assets/logout.png'; +const String help_png = 'assets/help.png'; +const String settings_png = 'assets/settings.png'; + const String activate_token_bg_png = 'assets/activate_token_message_background.png'; const String active_token_bg_png = 'assets/active_token_message_background.png'; -const String expansion_icon_png = 'assets/expansion_icon.png'; + +const String expansion_icon_png = 'assets/faq_expansion_icon.png'; + const String powered_by_dinect_splash_png = 'assets/powered_by_dinect_splash.png'; const String powered_by_dinect_png = 'assets/powered_by_dinect.png'; + const String splash_text_png = 'assets/splash_text.png'; const Color greyTextColor = const Color(0xffa5a5a5); diff --git a/lib/db.dart b/lib/db.dart index 2443ccc..db078d3 100644 --- a/lib/db.dart +++ b/lib/db.dart @@ -41,7 +41,8 @@ class SqliteHelper { Map session = { columnMerchantID: merchantID, columnPosID: posID, - columnToken: token + columnToken: token, + columnDocID: 0 }; return db.insert(tableSession, session); @@ -49,12 +50,16 @@ class SqliteHelper { Future getToken() async { Map session = await _getSession(); - return session != null ? session[columnToken] : null; + String token = session != null ? session[columnToken] : null; + print('token: {$token}'); + return token; } Future getMerchantID() async { Map session = await _getSession(); - return session != null ? session[columnMerchantID] : null; + String merchantID = session != null ? session[columnMerchantID] : null; + print('token: {$merchantID}'); + return merchantID; } Future getPosID() async { @@ -62,6 +67,14 @@ class SqliteHelper { return session != null ? session[columnPosID] : new DateTime.now().millisecondsSinceEpoch.toString(); } + Future getDocID() async { + Map session = await _getSession(); + int docID = session != null ? session[columnDocID] : 0; + db.update(tableSession, {columnDocID: docID + 1}); + print('docid: {$docID}'); + return docID; + } + Future _getSession() async { List maps = await db.query(tableSession, columns: null); diff --git a/lib/main.dart b/lib/main.dart index d0d13ae..a9da1c9 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'splash.dart'; +import 'package:checker/screens/splash.dart'; import 'consts.dart'; import 'strings.dart'; import 'common.dart'; diff --git a/lib/faq.dart b/lib/screens/faq.dart similarity index 97% rename from lib/faq.dart rename to lib/screens/faq.dart index c13f87a..481f02c 100644 --- a/lib/faq.dart +++ b/lib/screens/faq.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; -import 'base_state.dart'; -import 'consts.dart'; -import 'common.dart'; +import 'package:checker/base_state.dart'; +import 'package:checker/consts.dart'; +import 'package:checker/common.dart'; /// Класс содержит заголовки и текст блоков FAQ. class Entry { @@ -68,7 +68,7 @@ class FAQScreenState extends BaseState { onWillPop() { if(returnToScanner) { - return startScanner(context, app); + return startScanner(context, app, helper); } else { return true; } diff --git a/lib/finish_registration.dart b/lib/screens/finish_registration.dart similarity index 89% rename from lib/finish_registration.dart rename to lib/screens/finish_registration.dart index 014e8e9..5956f37 100644 --- a/lib/finish_registration.dart +++ b/lib/screens/finish_registration.dart @@ -1,6 +1,5 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:checker/db.dart'; import 'dart:convert'; // Пакет для обработки json с ответом от сервера. import 'package:checker/common.dart'; @@ -15,23 +14,15 @@ class FinishRegistrationScreen extends StatefulWidget { class _RegistrationScreenState extends BaseState { - SqliteHelper helper; - bool _tokenActive = false; - String _merchantID = ''; + String _merchantID; - _RegistrationScreenState() { - helper = new SqliteHelper(); - if (textFieldValue == "") { - helper.open().then((_){ - helper.getMerchantID().then((result) { - setState(() { - _merchantID = result; - print('merchanID: ${_merchantID}'); - }); - }); + @override void onStart() { + helper.getMerchantID().then((result) { + setState(() { + _merchantID = result; }); - } + }); } @override String getTitle() { @@ -39,7 +30,7 @@ class _RegistrationScreenState extends BaseState { } @override getHint() { - return StringsLocalization.idStore(); + return _merchantID; } @override Widget getScreenContent() { diff --git a/lib/purchase.dart b/lib/screens/purchase.dart similarity index 89% rename from lib/purchase.dart rename to lib/screens/purchase.dart index 53887df..88e60b2 100644 --- a/lib/purchase.dart +++ b/lib/screens/purchase.dart @@ -3,13 +3,13 @@ import 'package:flutter/services.dart'; import 'dart:convert'; import 'dart:core'; -import 'resources.dart'; -import 'strings.dart'; -import 'common.dart'; -import 'consts.dart'; -import 'network.dart'; -import 'base_state.dart'; -import 'purchase_success.dart'; +import 'package:checker/resources.dart'; +import 'package:checker/strings.dart'; +import 'package:checker/common.dart'; +import 'package:checker/consts.dart'; +import 'package:checker/network.dart'; +import 'package:checker/base_state.dart'; +import 'package:checker/screens/purchase_success.dart'; /// Экран проведения покупки. class PurchaseScreen extends StatefulWidget { @@ -32,6 +32,9 @@ class PurchaseScreenState extends BaseState { PurchaseScreenState(String userString, String card) { this.user = JSON.decode(userString); this.card = card; + } + + @override void onStart() { getLoyalty(user['loyalty_url']); } @@ -69,7 +72,7 @@ class PurchaseScreenState extends BaseState { child: new Text( title, style: new TextStyle(color: textColor)), - onPressed: () => startScanner(context, app)), + onPressed: () => startScanner(context, app, helper)), decoration: new BoxDecoration( border: new Border.all(color: Resources.getButtonColor(app), width: 1.0), borderRadius: new BorderRadius.all(new Radius.circular(4.0)))); @@ -109,7 +112,7 @@ class PurchaseScreenState extends BaseState { if (await platform.invokeMethod('isOnline')) { - String token = await sqliteHelper.getToken(); + String token = await helper.getToken(); var headers = { 'DM-Authorization': 'dmapptoken $appToken', @@ -199,8 +202,8 @@ class PurchaseScreenState extends BaseState { if (!purchaseInProgress) { purchaseInProgress = true; - String token = await sqliteHelper.getToken(); - platform.invokeMethod('getDocID').then((result) { + String token = await helper.getToken(); + helper.getMerchantID().then((result) { String url = user['purchases_url']; @@ -219,8 +222,10 @@ class PurchaseScreenState extends BaseState { httpClient.post(url, body: body, headers: headers).then((response) { print(response.body); - Navigator.of(context).pop(); - pushRoute(context, new PurchaseSuccessScreen(sumTotal, user['first_name'] == null ? '' : user['first_name'])); + helper.close().then((_) { + Navigator.of(context).pop(); + pushRoute(context, new PurchaseSuccessScreen(sumTotal, user['first_name'] == null ? '' : user['first_name'])); + }); }).catchError((error) { purchaseInProgress = false; diff --git a/lib/purchase_success.dart b/lib/screens/purchase_success.dart similarity index 99% rename from lib/purchase_success.dart rename to lib/screens/purchase_success.dart index dfebd2d..fc0134b 100644 --- a/lib/purchase_success.dart +++ b/lib/screens/purchase_success.dart @@ -50,7 +50,7 @@ class PurchaseSuccessScreenState extends BaseState { getScanButton() { String title = StringsLocalization.scan(); - return buildRaisedButton(title, () => startScanner(context, app)); + return buildRaisedButton(title, () => startScanner(context, app, helper)); } getSuccessMessage() { diff --git a/lib/registration.dart b/lib/screens/registration.dart similarity index 92% rename from lib/registration.dart rename to lib/screens/registration.dart index 4ea45b5..ff61741 100644 --- a/lib/registration.dart +++ b/lib/screens/registration.dart @@ -1,5 +1,5 @@ import 'package:checker/db.dart'; -import 'package:checker/finish_registration.dart'; +import 'package:checker/screens/finish_registration.dart'; import 'package:flutter/material.dart'; import 'dart:convert'; // Пакет для обработки json с ответом от сервера. @@ -72,8 +72,6 @@ class _RegistrationScreenState extends BaseState { _register() async { if (await platform.invokeMethod('isOnline')) { - SqliteHelper helper = new SqliteHelper(); - await helper.open(); String posID = await helper.getPosID(); createToken(textFieldValue, posID).then((response) { @@ -84,21 +82,20 @@ class _RegistrationScreenState extends BaseState { }); print(response.body); - + print(response.statusCode.toString()); Map parsedMap = JSON.decode(response.body); if (response.statusCode == 201) { - helper.insert(textFieldValue, posID, parsedMap['token']); - helper.close(); - pushRoute(context, new FinishRegistrationScreen()); + helper.insert(textFieldValue, posID, parsedMap['token']).then((_) { + helper.close(); + pushRoute(context, new FinishRegistrationScreen()); + }); } else { - helper.close(); setState(() { error = parsedMap['errors'][0]; }); } }).catchError((error) { - helper.close(); print(error.toString()); }); } diff --git a/lib/splash.dart b/lib/screens/splash.dart similarity index 93% rename from lib/splash.dart rename to lib/screens/splash.dart index cde2563..0585269 100644 --- a/lib/splash.dart +++ b/lib/screens/splash.dart @@ -1,16 +1,15 @@ import 'package:flutter/material.dart'; import 'package:http/http.dart'; -import 'package:intl/intl.dart'; import 'dart:convert'; import 'dart:async'; -import 'common.dart'; -import 'network.dart'; -import 'consts.dart'; -import 'registration.dart'; -import 'finish_registration.dart'; -import 'db.dart'; -import 'resources.dart'; -import 'base_state.dart'; +import 'package:checker/common.dart'; +import 'package:checker/network.dart'; +import 'package:checker/consts.dart'; +import 'package:checker/resources.dart'; +import 'package:checker/db.dart'; +import 'package:checker/base_state.dart'; +import 'package:checker/screens/registration.dart'; +import 'package:checker/screens/finish_registration.dart'; class SplashScreen extends StatefulWidget { @override State createState() => new _SplashScreenState(); @@ -37,7 +36,6 @@ class _SplashScreenState extends BaseState { width: 122.0)))]); } - @override Widget getMainWidget() { return getScreenContent(); } @@ -73,8 +71,6 @@ class _SplashScreenState extends BaseState { /// Запуск следующего экрана приложения. showNextScreen(BuildContext context) async { - SqliteHelper helper = new SqliteHelper(); - await helper.open(); String token = await helper.getToken(); // В случае, если в приложении отсутствует токен, diff --git a/pubspec.yaml b/pubspec.yaml index 9d607a0..dc47938 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -32,10 +32,12 @@ flutter: - assets/autobonus_splash.png - assets/pip_splash.png + - assets/settings.png + - assets/help.png - assets/logout.png - assets/activate_token_message_background.png - assets/active_token_message_background.png - - assets/expansion_icon.png + - assets/faq_expansion_icon.png - assets/powered_by_dinect_splash.png - assets/powered_by_dinect.png - assets/autobonus_logo.png