From 619a43eaede4ee818cbee55c1bd7f564919fc15c Mon Sep 17 00:00:00 2001 From: Andrew nuark G Date: Mon, 24 Apr 2023 12:57:43 +0700 Subject: [PATCH] Better behaviour for checkup page as well --- lib/pages/checkup_page.dart | 94 +++++++++++++++++++------------------ 1 file changed, 48 insertions(+), 46 deletions(-) diff --git a/lib/pages/checkup_page.dart b/lib/pages/checkup_page.dart index d25468a..eaddd0f 100644 --- a/lib/pages/checkup_page.dart +++ b/lib/pages/checkup_page.dart @@ -1,65 +1,67 @@ import 'package:animated_background/animated_background.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; -import 'package:get_storage/get_storage.dart'; -import 'package:tuuli_app/api/api_client.dart'; - -class CheckupPage extends StatefulWidget { - const CheckupPage({super.key}); +import 'package:tuuli_app/api_controller.dart'; +class CheckupPageController extends GetxController { @override - State createState() => _CheckupPageState(); + void onInit() { + super.onInit(); + } + + Future checkCredentials() async { + if (ApiController.to.token.isEmpty) { + WidgetsBinding.instance.addPostFrameCallback((_) { + Get.offAllNamed("/login"); + }); + } else { + try { + final resp = + await ApiController.to.apiClient.listTablesApiListTablesGet( + accessToken: ApiController.to.token, + ); + + WidgetsBinding.instance.addPostFrameCallback((_) { + if (resp.statusCode == 200) { + Get.offAllNamed("/home"); + } else { + Get.offAllNamed("/login"); + } + }); + } catch (e) { + WidgetsBinding.instance.addPostFrameCallback((_) { + Get.offAllNamed("/login"); + }); + } + } + } } -class _CheckupPageState extends State - with TickerProviderStateMixin { - @override - void initState() { - super.initState(); - - WidgetsBinding.instance.addPostFrameCallback((_) { - checkCredentials(); - }); - } +class CheckupPage extends GetView { + const CheckupPage({super.key}); @override Widget build(BuildContext context) { return Scaffold( - body: AnimatedBackground( - behaviour: RandomParticleBehaviour(), - vsync: this, - child: Center( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Text( - 'Checking credentials...', - style: Theme.of(context).textTheme.headlineMedium, - ), - const SizedBox(height: 16), - const SizedBox.square( + body: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + 'Checking credentials...', + style: Theme.of(context).textTheme.headlineMedium, + ), + const SizedBox(height: 16), + FutureBuilder( + future: controller.checkCredentials(), + builder: (ctx, _) => const SizedBox.square( dimension: 32, child: CircularProgressIndicator(), ), - ], - ), + ), + ], ), ), ); } - - Future checkCredentials() async { - final accessToken = GetStorage().read("accessToken"); - if (accessToken == null) { - Get.offAllNamed("/login"); - } else { - final apiClient = Get.find(); - (await apiClient.tablesList()).unfold((data) { - Get.offAllNamed("/home"); - }, (error) async { - await GetStorage().remove("accessToken"); - Get.offAllNamed("/login"); - }); - } - } }