6177214e-ce7c-49e3-99de-ff9721b26f63 — Commit 680e1e3f
Changed files
comwell_key_app/lib/home/home_page.dart | 82 +++++++++++++++++++--- .../lib/login/components/azure_b2c_widget.dart | 33 +++++---- comwell_key_app/lib/profile/profile_page.dart | 27 ++++--- comwell_key_app/lib/routing/app_router.dart | 8 +-- 4 files changed, 109 insertions(+), 41 deletions(-)
Diff
diff --git a/comwell_key_app/lib/home/home_page.dart b/comwell_key_app/lib/home/home_page.dart
index 043a18a8..501204d4 100644
--- a/comwell_key_app/lib/home/home_page.dart
+++ b/comwell_key_app/lib/home/home_page.dart
@@ -1,9 +1,10 @@
+import 'package:comwell_key_app/components/bottom_sheet_widget.dart';
import 'package:comwell_key_app/components/comwell_app_bar.dart';
import 'package:comwell_key_app/extensions/scaffold_messenger_state_extension.dart';
import 'package:comwell_key_app/home/bloc/home_bloc.dart';
-import 'package:comwell_key_app/components/bottom_sheet_widget.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
+
class HomeWidget extends StatefulWidget {
const HomeWidget({super.key});
@@ -12,35 +13,39 @@ class HomeWidget extends StatefulWidget {
}
class _HomeWidget extends State<HomeWidget> {
- final _refreshIndicatorKey = GlobalKey<RefreshIndicatorState>();
@override
void initState() {
super.initState();
}
- Future<void> _updateEndpoint() async {
+Future<void> _updateEndpoint() async {
+
try {
context.read<HomeBloc>().add(SearchForKeysEvent());
} catch (e) {
if (!mounted) return;
- ScaffoldMessenger.of(context).showActionSnackBar(
- content: Text('Failed to update endpoint - ${e.toString()}'),
- label: 'Retry',
- onPressed: _updateEndpoint,
+ ScaffoldMessenger.of(context)
+ .showActionSnackBar(
+ content: Text('Failed to update endpoint - ${e.toString()}'),
+ label: 'Retry',
+ onPressed: _updateEndpoint,
);
- }
+
+ }
}
@override
Widget build(BuildContext context) {
//context.read<HomeBloc>().add(SearchForKeysEvent());
return BlocConsumer<HomeBloc, HomeState>(
- listener: (context, state) {},
+ listener: (context, state) {},
builder: (context, state) {
return const Scaffold(
+ backgroundColor: Colors.black,
extendBodyBehindAppBar: true,
appBar: ComwellAppBar(
+
),
body: Stack(
children: [
@@ -61,6 +66,62 @@ class _HomeWidget extends State<HomeWidget> {
);
});
+ /* listener: (context, state) {
+
+
+ },
+ builder: (context, state) {
+ return RefreshIndicator(
+ key: _refreshIndicatorKey,
+ displacement: 20,
+ onRefresh: () async {
+ return await _updateEndpoint();
+ },
+ child: Scaffold(
+ extendBodyBehindAppBar: true,
+ appBar: const ComwellAppBar(
+ shouldShowAppBar: true,
+ )
+ ,
+ body: Column(
+ mainAxisAlignment: MainAxisAlignment.start,
+ children: <Widget>[
+ Expanded(
+ child: Image.asset(
+ 'assets/images/welcome_image.jpeg',
+ width: double.infinity,
+ height: 300,
+ fit: BoxFit.cover,
+ )),
+ const SizedBox(height: 100),
+ if (state is CodeNotRedeemed)
+ ElevatedButton(
+ onPressed: () {
+ context.goNamed( AppRoutes.redeem.name);
+ },
+ child: Text('redeem_code'.tr()),
+ )
+ else if (state is ValidKey)
+ RoomKeyWidget(onPressed: () {
+ context.goNamed(AppRoutes.key.name);
+ })
+ else if (state is InvalidOrNoKey)
+ RoomKeyWidget(isMultipleKeys: true,onPressed: () {
+ context.goNamed(AppRoutes.key.name);
+ })
+ else if (state is MultipleKeys)
+ RoomKeyWidget(isMultipleKeys: true,onPressed: () {
+ context.goNamed(AppRoutes.key.name);
+ }),
+ ElevatedButton(
+
+ onPressed: () => _refreshIndicatorKey.currentState?.show(), child: const Text("refresh")),
+ ElevatedButton(onPressed: () => context.goNamed( AppRoutes.redeem.name), child: const Text("Go to redeem")),
+ const SizedBox(height: 100)
+ ],
+ ),
+ ));
+ }); */
/* body: ListView(
children: _menuList(context),
), */
@@ -69,5 +130,8 @@ class _HomeWidget extends State<HomeWidget> {
if (_toCredentials) _seosMobileKeysPlugin.stopIfScanning();
_toCredentials = false;
}, */
+
+
}
}
+
diff --git a/comwell_key_app/lib/login/components/azure_b2c_widget.dart b/comwell_key_app/lib/login/components/azure_b2c_widget.dart
index fb0cae90..5351993d 100644
--- a/comwell_key_app/lib/login/components/azure_b2c_widget.dart
+++ b/comwell_key_app/lib/login/components/azure_b2c_widget.dart
@@ -1,12 +1,16 @@
import 'package:aad_b2c_webview/aad_b2c_webview.dart';
import 'package:comwell_key_app/login/auth.dart';
+import 'package:comwell_key_app/routing/app_routes.dart';
+import 'package:comwell_key_app/utils/secure_storage.dart';
import 'package:flutter/material.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:comwell_key_app/themes/light_theme.dart';
+import 'package:go_router/go_router.dart';
class AzureB2CWidget extends StatelessWidget {
final Auth authEnum;
- const AzureB2CWidget({
+ final SecureStorage secureStorage = SecureStorage();
+ AzureB2CWidget({
required this.authEnum,
super.key,
});
@@ -14,23 +18,26 @@ class AzureB2CWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ADB2CEmbedWebView(
- tenantBaseUrl:dotenv.env['AAD_B2C_USER_AUTH_FLOW']!,
- userFlowName: Auth.login == authEnum ? dotenv.env['AAD_B2C_USER_FLOW_NAME_LOGIN']! : dotenv.env['AAD_B2C_USER_FLOW_NAME_CREATE_USER']!,
- clientId: dotenv.env['AAD_B2C_CLIENT_ID']!,
+ tenantBaseUrl: dotenv.env['AAD_B2C_USER_AUTH_FLOW']!,
+ userFlowName: Auth.login == authEnum
+ ? dotenv.env['AAD_B2C_USER_FLOW_NAME_LOGIN']!
+ : dotenv.env['AAD_B2C_USER_FLOW_NAME_CREATE_USER']!,
+ clientId: dotenv.env['AAD_B2C_CLIENT_ID']!,
redirectUrl: dotenv.env['AAD_B2C_REDIRECT_URL']!,
scopes: dotenv.env['AAD_B2C_SCOPES']!.split(','),
- onAnyTokenRetrieved: (Token anyToken) {
- print('AnyToken: ${anyToken}');
- },
+ onAnyTokenRetrieved: (Token anyToken) {},
onIDToken: (Token token) {
- print('IDToken: ${token}');
+ secureStorage.write('id_token', token.value);
+ },
+ onRedirect: (context) => context.goNamed(AppRoutes.home.name),
+ onAccessToken: (Token token) {
+ secureStorage.write('access_token', token.value);
+ },
+ onRefreshToken: (Token token) {
+ secureStorage.write('refresh_token', token.value);
},
- onRedirect: (context) => Navigator.of(context).pushNamed('/oauthredirect'),
- onAccessToken: (Token token) {print('AccessToken: ${token}');},
- onRefreshToken: (Token token) {print('RefreshToken: ${token}');},
optionalParameters: const [],
webViewBackgroundColor: sandColor[40]!,
-
);
}
-}
\ No newline at end of file
+}
diff --git a/comwell_key_app/lib/profile/profile_page.dart b/comwell_key_app/lib/profile/profile_page.dart
index 67825d58..696becad 100644
--- a/comwell_key_app/lib/profile/profile_page.dart
+++ b/comwell_key_app/lib/profile/profile_page.dart
@@ -1,11 +1,13 @@
import 'package:comwell_key_app/components/round_icon_button.dart';
+import 'package:comwell_key_app/routing/app_routes.dart';
import 'package:comwell_key_app/themes/light_theme.dart';
+import 'package:comwell_key_app/utils/secure_storage.dart';
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
class ProfilePage extends StatelessWidget {
-
- const ProfilePage({super.key});
+ final SecureStorage secureStorage = SecureStorage();
+ ProfilePage({super.key});
@override
Widget build(BuildContext context) {
@@ -23,7 +25,8 @@ class ProfilePage extends StatelessWidget {
child: Center(
child: ElevatedButton(
onPressed: () {
-
+ secureStorage.deleteAll();
+ context.goNamed(AppRoutes.login.name);
},
child: const Text('Logout'),
),
@@ -32,18 +35,14 @@ class ProfilePage extends StatelessWidget {
Positioned(
top: 60,
right: 10,
- child: RoundIconButton(icon: Icons.close, onPressed: () {
- context.pop();
- }),),
+ child: RoundIconButton(
+ icon: Icons.close,
+ onPressed: () {
+ context.pop();
+ }),
+ ),
],
),
-
);
}
-}
-
-void main() {
- runApp(const MaterialApp(
- home: ProfilePage(),
- ));
-}
+}
\ No newline at end of file
diff --git a/comwell_key_app/lib/routing/app_router.dart b/comwell_key_app/lib/routing/app_router.dart
index 07c3d096..03f7f912 100644
--- a/comwell_key_app/lib/routing/app_router.dart
+++ b/comwell_key_app/lib/routing/app_router.dart
@@ -15,9 +15,7 @@ GoRouter goRouter() {
initialLocation: '/login',
navigatorKey: _rootNavigatorKey,
debugLogDiagnostics: true,
- redirect: (context, state) {
- print(context);
- },
+ redirect: (context, state) {},
routes: <RouteBase>[
GoRoute(
path: "/",
@@ -40,7 +38,7 @@ GoRouter goRouter() {
path: "profile",
name: AppRoutes.profile.name,
builder: (context, state) {
- return const ProfilePage(); //mobileKey: key);
+ return ProfilePage(); //mobileKey: key);
},
)
]),
@@ -49,7 +47,7 @@ GoRouter goRouter() {
name: AppRoutes.login.name,
builder: (context, state) => const LoginPage(),
),
- GoRoute(
+ GoRoute(
path: "/redeem",
name: AppRoutes.redeem.name,
builder: (context, state) => const RedeemPage(),