Регистрация, проверка токена, обработка ошибок, сканирование
This commit is contained in:
@@ -4,6 +4,7 @@ import 'splash.dart';
|
||||
import 'registration.dart';
|
||||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
import 'purchase.dart';
|
||||
|
||||
/// Главный класс приложения.
|
||||
/// Здесь распоосложены константы и некоторые методы, которые могут вызываться с разных экранов приложения.
|
||||
@@ -21,56 +22,62 @@ const String logo_png = 'assets/registration_logo.png';
|
||||
const String splash_png = 'assets/splash.png';
|
||||
const String logout_png = 'assets/logout.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';
|
||||
|
||||
// Colors
|
||||
const Color primaryColor = const Color(0xffeb0004);
|
||||
const Color disabledColor = const Color(0xffbfbfbf);
|
||||
const Color greyTextColor = const Color(0xffa5a5a5);
|
||||
const Color textBorderColor = const Color(0xffcfd8dc);
|
||||
const Color textFieldBackground = const Color(0xffefefef);
|
||||
const Color tokenActiveTextColor = const Color(0xff1f5a1f);
|
||||
const Color tokenActivateTextColor = const Color(0xff4e3a19);
|
||||
|
||||
// HttpClient
|
||||
final httpClient = createHttpClient();
|
||||
|
||||
void main() {
|
||||
runApp(new Checker());
|
||||
}
|
||||
|
||||
/// Токен кассы. Инициализируется при регистрации.
|
||||
String token;
|
||||
String merchantID = "";
|
||||
|
||||
/// Точка входа в приложение.
|
||||
void main() {
|
||||
runApp(new Checker());
|
||||
}
|
||||
|
||||
/// Проверка статуса токена. Токен может быть активирован, либо не активирован.
|
||||
void checkToken(BuildContext context, Callback callback) {
|
||||
|
||||
String url = intUrl + 'tokens/' + token + '?_dmapptoken=' + intToken;
|
||||
print(url);
|
||||
|
||||
httpClient.get(url).then((response) {
|
||||
|
||||
print(response.body);
|
||||
Map parsedMap = JSON.decode(response.body);
|
||||
bool active = parsedMap['active'];
|
||||
|
||||
if (!active) {
|
||||
callback.call(context);
|
||||
} else {
|
||||
// Запускается экран сканера, токен кассы активирован, с его помощью можно делать запросы к pos-api.
|
||||
startScanner(context);
|
||||
}
|
||||
|
||||
}).catchError((error) {
|
||||
print(error.toString());
|
||||
});
|
||||
checkToken(BuildContext context) async {
|
||||
return httpClient.get(intUrl + 'tokens/' + token + '?_dmapptoken=' + intToken);
|
||||
}
|
||||
|
||||
/// Запуск спецефичной для каждой платформы части приложения - сканера.
|
||||
/// Может производиться с нескольких экранов (splash, finish_registration).
|
||||
startScanner(BuildContext context) async{
|
||||
startScanner(BuildContext context) async {
|
||||
|
||||
const platform = const MethodChannel('com.dinect.checker/instance_id');
|
||||
|
||||
// Канал слушает ловит вызовы методов из "нативной" части приложения.
|
||||
// Могут быть вызваны либо logaut либо faq, либо purchase.
|
||||
platform.setMethodCallHandler((MethodCall call) async {
|
||||
pushRoute(context, new RegistrationScreen());
|
||||
return result;
|
||||
// or
|
||||
// throw new PlatformException(errorCode, anErrorMessage, someDetails);
|
||||
|
||||
if (call.method == 'foo') {
|
||||
|
||||
String url = intUrl + 'tokens/' + token + '?_dmapptoken=' + intToken;
|
||||
|
||||
httpClient.delete(url).then((response) {
|
||||
|
||||
print(response.body);
|
||||
|
||||
}).catchError((error) {
|
||||
print(error.toString());
|
||||
});
|
||||
|
||||
pushRoute(context, new RegistrationScreen());
|
||||
} else {
|
||||
pushRoute(context, new PurchaseScreen());
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
});
|
||||
|
||||
await platform.invokeMethod('startScanner');
|
||||
@@ -87,15 +94,11 @@ pushRoute(BuildContext context, Widget widget) {
|
||||
|
||||
class Checker extends StatelessWidget {
|
||||
@override Widget build(BuildContext context) {
|
||||
return new MaterialApp(title: "DemoApp",
|
||||
return new MaterialApp(title: "AutoClub",
|
||||
home: new SplashScreen(),
|
||||
theme: new ThemeData(
|
||||
primaryColor: primaryColor,
|
||||
accentColor: primaryColor
|
||||
));
|
||||
}
|
||||
}
|
||||
|
||||
abstract class Callback {
|
||||
void call(BuildContext context);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user