diff --git a/example/lib/constants.dart b/example/lib/constants.dart index 03f0f1a..3062317 100644 --- a/example/lib/constants.dart +++ b/example/lib/constants.dart @@ -22,7 +22,10 @@ FontWeight kFwMedium = FontWeight.w500; FontWeight kFwBlack = FontWeight.w900; TextStyle kTitleText = kRobotoText.copyWith( - fontWeight: kFwMedium, color: Colors.black, fontSize: kTitle); + fontWeight: kFwMedium, + color: Colors.black, + fontSize: kTitle, +); // Vertical Spacing Widget get verticalSpaceSmall => SizedBox(height: 8.0.h); @@ -31,7 +34,9 @@ Widget get verticalSpaceMedium => SizedBox(height: 24.0.h); //Box Decoration BoxDecoration roundedBoxRegular = BoxDecoration( - color: Colors.black, borderRadius: BorderRadius.all(Radius.circular(16.r))); + color: Colors.black, + borderRadius: BorderRadius.all(Radius.circular(16.r)), +); //color const kColorGrey = Color(0xFF676767); diff --git a/example/lib/encrypted_box.dart b/example/lib/encrypted_box.dart index 2c8b01e..a42c775 100644 --- a/example/lib/encrypted_box.dart +++ b/example/lib/encrypted_box.dart @@ -22,12 +22,8 @@ class EncryptedBox { static Future init() async { _instance = EncryptedBox._privateConstructor(); _instance!._secureStorage = const FlutterSecureStorage( - aOptions: AndroidOptions( - encryptedSharedPreferences: true, - ), - iOptions: IOSOptions( - accessibility: KeychainAccessibility.first_unlock, - ), + aOptions: AndroidOptions(encryptedSharedPreferences: true), + iOptions: IOSOptions(accessibility: KeychainAccessibility.first_unlock), webOptions: WebOptions( dbName: 'app_secure_storage', publicKey: 'app_public_key', @@ -88,4 +84,4 @@ class EncryptedBox { debugPrint("clear() failed: ${e.toString()}"); } } -} \ No newline at end of file +} diff --git a/example/lib/main.dart b/example/lib/main.dart index a1363aa..3d74669 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -19,12 +19,12 @@ void main() async { usePathUrlStrategy(); await dotenv.load(fileName: ".env"); await KindeFlutterSDK.initializeSDK( - authDomain: dotenv.env['KINDE_AUTH_DOMAIN']!, - authClientId: dotenv.env['KINDE_AUTH_CLIENT_ID']!, - loginRedirectUri: dotenv.env['KINDE_LOGIN_REDIRECT_URI']!, - logoutRedirectUri: dotenv.env['KINDE_LOGOUT_REDIRECT_URI']!, - scopes: ["email", "profile", "offline", "openid"] // optional - ); + authDomain: dotenv.env['KINDE_AUTH_DOMAIN']!, + authClientId: dotenv.env['KINDE_AUTH_CLIENT_ID']!, + loginRedirectUri: dotenv.env['KINDE_LOGIN_REDIRECT_URI']!, + logoutRedirectUri: dotenv.env['KINDE_LOGOUT_REDIRECT_URI']!, + scopes: ["email", "profile", "offline", "openid"], // optional + ); await EncryptedBox.init(); runApp(const MyApp()); @@ -52,15 +52,15 @@ class _MyAppState extends State { if (kIsWeb) return; _userStreamSubscription = AppStateManager.instance.userProfileStream.stream .listen((userProfileChanges) { - final oldUser = userProfileChanges.$1; - final newUser = userProfileChanges.$2; - if (oldUser == null && newUser != null) { - _navigateToHome(); - } - if (oldUser != null && newUser == null) { - _navigateToWelcome(); - } - }); + final oldUser = userProfileChanges.$1; + final newUser = userProfileChanges.$2; + if (oldUser == null && newUser != null) { + _navigateToHome(); + } + if (oldUser != null && newUser == null) { + _navigateToWelcome(); + } + }); } void _navigateToHome() { diff --git a/example/lib/navigation/router.dart b/example/lib/navigation/router.dart index b6ba561..71cab77 100644 --- a/example/lib/navigation/router.dart +++ b/example/lib/navigation/router.dart @@ -8,26 +8,29 @@ import '../screens/home/home_screen.dart'; import '../screens/routes.dart'; GoRouter createRouter() => GoRouter( - debugLogDiagnostics: kDebugMode, - initialLocation: AppRoutes.SPLASH, - errorBuilder: (context, state) { - return const UnknownScreen(); + debugLogDiagnostics: kDebugMode, + initialLocation: AppRoutes.SPLASH, + errorBuilder: (context, state) { + return const UnknownScreen(); + }, + routes: [ + GoRoute( + path: AppRoutes.HOME, + builder: (context, state) { + return const HomeScreen(); }, - routes: [ - GoRoute( - path: AppRoutes.HOME, - builder: (context, state) { - return const HomeScreen(); - }), - GoRoute( - path: AppRoutes.SPLASH, - builder: (context, state) { - return const SplashScreen(); - }), - GoRoute( - path: AppRoutes.WELCOME, - builder: (context, state) { - return const WelcomeScreen(); - }), - ], - ); + ), + GoRoute( + path: AppRoutes.SPLASH, + builder: (context, state) { + return const SplashScreen(); + }, + ), + GoRoute( + path: AppRoutes.WELCOME, + builder: (context, state) { + return const WelcomeScreen(); + }, + ), + ], +); diff --git a/example/lib/screens/home/home_screen.dart b/example/lib/screens/home/home_screen.dart index 82b8c3f..e8879f2 100644 --- a/example/lib/screens/home/home_screen.dart +++ b/example/lib/screens/home/home_screen.dart @@ -30,10 +30,11 @@ class _HomeScreenState extends State { extendBodyBehindAppBar: true, body: Padding( padding: EdgeInsets.only( - top: MediaQuery.viewPaddingOf(context).top, - left: 16.w, - right: 16.w, - bottom: MediaQuery.viewPaddingOf(context).bottom), + top: MediaQuery.viewPaddingOf(context).top, + left: 16.w, + right: 16.w, + bottom: MediaQuery.viewPaddingOf(context).bottom, + ), child: Column( mainAxisSize: MainAxisSize.min, children: [ @@ -58,8 +59,7 @@ class _HomeScreenState extends State { SchedulerBinding.instance.addPostFrameCallback((_) { context.pushReplacement(AppRoutes.WELCOME); }); - return const SizedBox - .shrink(); // Return empty widget while navigating + return const SizedBox.shrink(); // Return empty widget while navigating } else { return Text( '${user.givenName} ${user.familyName}', @@ -69,61 +69,62 @@ class _HomeScreenState extends State { } } return const Center( - child: CircularProgressIndicator.adaptive()); + child: CircularProgressIndicator.adaptive(), + ); }, ), const SizedBox(height: 10), InkWell( - onTap: AppStateManager.instance.signOut, - child: const Text('Sign out')), + onTap: AppStateManager.instance.signOut, + child: const Text('Sign out'), + ), ], ), ), Expanded( - child: SingleChildScrollView( - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - verticalSpaceMedium, - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Container( - width: double.infinity, - padding: EdgeInsets.all(32.w), - decoration: roundedBoxRegular, - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - verticalSpaceMedium, - Text( - "Woohoo!", - textAlign: TextAlign.center, - style: kTitleText.copyWith(color: Colors.white), - ), - verticalSpaceMedium, - Text( - "Your\nauthentication is\nall sorted.\nBuild the\nimportant stuff.", - textAlign: TextAlign.center, - style: kRobotoText.copyWith( + child: SingleChildScrollView( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + verticalSpaceMedium, + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + width: double.infinity, + padding: EdgeInsets.all(32.w), + decoration: roundedBoxRegular, + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + verticalSpaceMedium, + Text( + "Woohoo!", + textAlign: TextAlign.center, + style: kTitleText.copyWith(color: Colors.white), + ), + verticalSpaceMedium, + Text( + "Your\nauthentication is\nall sorted.\nBuild the\nimportant stuff.", + textAlign: TextAlign.center, + style: kRobotoText.copyWith( fontWeight: kFwBlack, color: Colors.white, - fontSize: kTitleLarge), - ), - ], + fontSize: kTitleLarge, + ), + ), + ], + ), ), - ), - verticalSpaceRegular, - Text( - "Next steps for you", - style: kTitleText, - ), - ], - ), - const PageFooter(), - ], + verticalSpaceRegular, + Text("Next steps for you", style: kTitleText), + ], + ), + const PageFooter(), + ], + ), ), - )) + ), ], ), ), diff --git a/example/lib/screens/splash/splash_screen.dart b/example/lib/screens/splash/splash_screen.dart index 58f111f..57ecdd1 100644 --- a/example/lib/screens/splash/splash_screen.dart +++ b/example/lib/screens/splash/splash_screen.dart @@ -29,23 +29,24 @@ class _SplashScreenState extends State { backgroundColor: Colors.white, extendBodyBehindAppBar: true, body: FutureBuilder( - future: future, - builder: (context, asyncSnapshot) { - if (asyncSnapshot.connectionState == ConnectionState.done) { - final user = asyncSnapshot.data; - final route = user == null ? AppRoutes.WELCOME : AppRoutes.HOME; - SchedulerBinding.instance.addPostFrameCallback((_) { - context.pushReplacement(route); - }); - } - return Center( - child: Text( - "K", - style: TextStyle(fontSize: 48.h, color: Colors.black), - textAlign: TextAlign.center, - ), - ); - }), + future: future, + builder: (context, asyncSnapshot) { + if (asyncSnapshot.connectionState == ConnectionState.done) { + final user = asyncSnapshot.data; + final route = user == null ? AppRoutes.WELCOME : AppRoutes.HOME; + SchedulerBinding.instance.addPostFrameCallback((_) { + context.pushReplacement(route); + }); + } + return Center( + child: Text( + "K", + style: TextStyle(fontSize: 48.h, color: Colors.black), + textAlign: TextAlign.center, + ), + ); + }, + ), ); } } diff --git a/example/lib/screens/unknown/unknown_screen.dart b/example/lib/screens/unknown/unknown_screen.dart index b9aa992..6c3c42f 100644 --- a/example/lib/screens/unknown/unknown_screen.dart +++ b/example/lib/screens/unknown/unknown_screen.dart @@ -7,9 +7,7 @@ class UnknownScreen extends StatelessWidget { Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text('Unknown Page')), - body: const Center( - child: Text('404 - Page not found'), - ), + body: const Center(child: Text('404 - Page not found')), ); } } diff --git a/example/lib/screens/welcome/welcome_screen.dart b/example/lib/screens/welcome/welcome_screen.dart index b3084e3..0287b5c 100644 --- a/example/lib/screens/welcome/welcome_screen.dart +++ b/example/lib/screens/welcome/welcome_screen.dart @@ -14,10 +14,11 @@ class WelcomeScreen extends StatelessWidget { extendBodyBehindAppBar: true, body: Padding( padding: EdgeInsets.only( - top: MediaQuery.viewPaddingOf(context).top, - left: 16.w, - right: 16.w, - bottom: MediaQuery.viewPaddingOf(context).bottom), + top: MediaQuery.viewPaddingOf(context).top, + left: 16.w, + right: 16.w, + bottom: MediaQuery.viewPaddingOf(context).bottom, + ), child: Column( mainAxisSize: MainAxisSize.min, children: [ @@ -34,7 +35,9 @@ class WelcomeScreen extends StatelessWidget { child: Text( 'Sign in', style: kRobotoText.copyWith( - fontWeight: kFwBold, color: kColorGrey), + fontWeight: kFwBold, + color: kColorGrey, + ), ), ), MaterialButton( @@ -45,9 +48,11 @@ class WelcomeScreen extends StatelessWidget { child: Text( 'Sign up', style: kRobotoText.copyWith( - fontWeight: kFwBold, color: Colors.white), + fontWeight: kFwBold, + color: Colors.white, + ), ), - ) + ), ], ), Expanded( @@ -69,16 +74,19 @@ class WelcomeScreen extends StatelessWidget { "Let's Start\nauthenticating\nwith KindeAuth", textAlign: TextAlign.center, style: kRobotoText.copyWith( - fontWeight: kFwBlack, - color: Colors.white, - fontSize: kTitleLarge), + fontWeight: kFwBlack, + color: Colors.white, + fontSize: kTitleLarge, + ), ), verticalSpaceMedium, Text( "Configure your app", textAlign: TextAlign.center, style: kTitleText.copyWith( - fontWeight: kFwBlack, color: Colors.white), + fontWeight: kFwBlack, + color: Colors.white, + ), ), verticalSpaceMedium, ElevatedButton( @@ -94,8 +102,10 @@ class WelcomeScreen extends StatelessWidget { } else { ScaffoldMessenger.of(context).showSnackBar( SnackBar( - content: Text( - 'Could not open documentation')), + content: Text( + 'Could not open documentation', + ), + ), ); } }); @@ -104,9 +114,10 @@ class WelcomeScreen extends StatelessWidget { 'Go to docs', textAlign: TextAlign.center, style: kRobotoText.copyWith( - fontWeight: kFwBlack, - color: Colors.black, - fontSize: kHeadingTwo), + fontWeight: kFwBlack, + color: Colors.black, + fontSize: kHeadingTwo, + ), ), ), ], @@ -117,7 +128,7 @@ class WelcomeScreen extends StatelessWidget { ), ), ), - ) + ), ], ), ), diff --git a/example/lib/screens/widgets/page_footer.dart b/example/lib/screens/widgets/page_footer.dart index 85d320d..09ce88f 100644 --- a/example/lib/screens/widgets/page_footer.dart +++ b/example/lib/screens/widgets/page_footer.dart @@ -13,32 +13,32 @@ class PageFooter extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Text( - appTitle, - style: kTitleText, - ), + Text(appTitle, style: kTitleText), verticalSpaceSmall, RichText( text: TextSpan( - text: 'Visit our ', - style: kTitleText.copyWith(fontSize: kHeadingTwo), - children: [ - TextSpan( - text: 'help center', - style: const TextStyle( - decoration: TextDecoration.underline, - ), - recognizer: TapGestureRecognizer() - ..onTap = () { - launchUrl(Uri.parse(helpUrl)); - }) - ]), + text: 'Visit our ', + style: kTitleText.copyWith(fontSize: kHeadingTwo), + children: [ + TextSpan( + text: 'help center', + style: const TextStyle(decoration: TextDecoration.underline), + recognizer: TapGestureRecognizer() + ..onTap = () { + launchUrl(Uri.parse(helpUrl)); + }, + ), + ], + ), ), verticalSpaceSmall, Text( '© 2022 KindeAuth, Inc. All rights reserved', style: kRobotoText.copyWith( - fontWeight: kFwMedium, color: kColorGrey, fontSize: kBodySmall), + fontWeight: kFwMedium, + color: kColorGrey, + fontSize: kBodySmall, + ), ), ], ), diff --git a/example/lib/state/app_state_manager.dart b/example/lib/state/app_state_manager.dart index baa143a..3c548ca 100644 --- a/example/lib/state/app_state_manager.dart +++ b/example/lib/state/app_state_manager.dart @@ -10,7 +10,7 @@ class AppStateManager { late final EncryptedBox _encryptedBox; late final StreamController<(UserProfileV2?, UserProfileV2?)> - userProfileStream; + userProfileStream; UserProfileV2? _userProfile; UserProfileV2? get userProfile => _userProfile; diff --git a/lib/src/additional_params.dart b/lib/src/additional_params.dart index 2316795..221e108 100644 --- a/lib/src/additional_params.dart +++ b/lib/src/additional_params.dart @@ -47,14 +47,15 @@ abstract class BaseAdditionalParameters { /// When provided, initiates an invitation acceptance flow. final String? invitationCode; - const BaseAdditionalParameters( - {this.lang, - this.connectionId, - this.loginHint, - this.orgCode, - this.planInterest, - this.pricingTableKey, - this.invitationCode}); + const BaseAdditionalParameters({ + this.lang, + this.connectionId, + this.loginHint, + this.orgCode, + this.planInterest, + this.pricingTableKey, + this.invitationCode, + }); Map toWebParams() { final params = {}; @@ -86,24 +87,25 @@ abstract class BaseAdditionalParameters { } class AdditionalParameters extends BaseAdditionalParameters { - const AdditionalParameters( - {super.lang, - super.connectionId, - super.loginHint, - super.orgCode, - super.planInterest, - super.pricingTableKey, - super.invitationCode}); + const AdditionalParameters({ + super.lang, + super.connectionId, + super.loginHint, + super.orgCode, + super.planInterest, + super.pricingTableKey, + super.invitationCode, + }); Map toJson() => { - if (lang != null) 'lang': lang, - if (connectionId != null) 'connectionId': connectionId, - if (loginHint != null) 'loginHint': loginHint, - if (orgCode != null) 'orgCode': orgCode, - if (planInterest != null) 'planInterest': planInterest, - if (pricingTableKey != null) 'pricingTableKey': pricingTableKey, - if (invitationCode != null) 'invitationCode': invitationCode, - }; + if (lang != null) 'lang': lang, + if (connectionId != null) 'connectionId': connectionId, + if (loginHint != null) 'loginHint': loginHint, + if (orgCode != null) 'orgCode': orgCode, + if (planInterest != null) 'planInterest': planInterest, + if (pricingTableKey != null) 'pricingTableKey': pricingTableKey, + if (invitationCode != null) 'invitationCode': invitationCode, + }; factory AdditionalParameters.fromJson(Map json) => AdditionalParameters( @@ -128,27 +130,28 @@ class InternalAdditionalParameters extends BaseAdditionalParameters { bool? supportsReauth; String? reauthState; - InternalAdditionalParameters( - {this.audience, - this.promptValues, - this.scopes, - this.state, - this.registrationPage, - this.createOrg, - this.orgName, - this.supportsReauth, - this.reauthState, - super.lang, - super.connectionId, - super.loginHint, - super.orgCode, - super.planInterest, - super.pricingTableKey, - super.invitationCode, - }); + InternalAdditionalParameters({ + this.audience, + this.promptValues, + this.scopes, + this.state, + this.registrationPage, + this.createOrg, + this.orgName, + this.supportsReauth, + this.reauthState, + super.lang, + super.connectionId, + super.loginHint, + super.orgCode, + super.planInterest, + super.pricingTableKey, + super.invitationCode, + }); factory InternalAdditionalParameters.fromUserAdditionalParams( - AdditionalParameters userParams) { + AdditionalParameters userParams, + ) { return InternalAdditionalParameters( lang: userParams.lang, connectionId: userParams.connectionId, diff --git a/lib/src/api.dart b/lib/src/api.dart index 3bac79c..b7eeb20 100644 --- a/lib/src/api.dart +++ b/lib/src/api.dart @@ -80,7 +80,10 @@ class KindeApi { if (dio.interceptors.any((i) => i is BasicAuthInterceptor)) { (dio.interceptors.firstWhere((i) => i is BasicAuthInterceptor) as BasicAuthInterceptor) - .authInfo[name] = BasicAuthInfo(username, password); + .authInfo[name] = BasicAuthInfo( + username, + password, + ); } } diff --git a/lib/src/api/apis_api.dart b/lib/src/api/apis_api.dart index ba746eb..e3fc2d1 100644 --- a/lib/src/api/apis_api.dart +++ b/lib/src/api/apis_api.dart @@ -85,14 +85,13 @@ class APIsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -172,14 +171,13 @@ class APIsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -259,14 +257,13 @@ class APIsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(Api), - ) - as Api; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(Api), + ) + as Api; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -335,14 +332,13 @@ class APIsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(Apis), - ) - as Apis; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(Apis), + ) + as Apis; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -443,14 +439,13 @@ class APIsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, diff --git a/lib/src/api/applications_api.dart b/lib/src/api/applications_api.dart index 966b28d..38f1a7b 100644 --- a/lib/src/api/applications_api.dart +++ b/lib/src/api/applications_api.dart @@ -63,13 +63,12 @@ class ApplicationsApi { try { const type = FullType(CreateApplicationRequest); - bodyData = - createApplicationRequest == null - ? null - : _serializers.serialize( - createApplicationRequest, - specifiedType: type, - ); + bodyData = createApplicationRequest == null + ? null + : _serializers.serialize( + createApplicationRequest, + specifiedType: type, + ); } catch (error, stackTrace) { throw DioException( requestOptions: options.compose(_dio.options, path), @@ -92,14 +91,13 @@ class ApplicationsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(CreateApplicationResponse), - ) - as CreateApplicationResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(CreateApplicationResponse), + ) + as CreateApplicationResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -179,14 +177,13 @@ class ApplicationsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -266,14 +263,13 @@ class ApplicationsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(GetApplicationResponse), - ) - as GetApplicationResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(GetApplicationResponse), + ) + as GetApplicationResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -363,14 +359,13 @@ class ApplicationsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(GetApplicationsResponse), - ) - as GetApplicationsResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(GetApplicationsResponse), + ) + as GetApplicationsResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -445,13 +440,12 @@ class ApplicationsApi { try { const type = FullType(UpdateApplicationRequest); - bodyData = - updateApplicationRequest == null - ? null - : _serializers.serialize( - updateApplicationRequest, - specifiedType: type, - ); + bodyData = updateApplicationRequest == null + ? null + : _serializers.serialize( + updateApplicationRequest, + specifiedType: type, + ); } catch (error, stackTrace) { throw DioException( requestOptions: options.compose(_dio.options, path), diff --git a/lib/src/api/business_api.dart b/lib/src/api/business_api.dart index dac3e78..9c8235e 100644 --- a/lib/src/api/business_api.dart +++ b/lib/src/api/business_api.dart @@ -117,14 +117,13 @@ class BusinessApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -269,14 +268,13 @@ class BusinessApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, diff --git a/lib/src/api/callbacks_api.dart b/lib/src/api/callbacks_api.dart index 13fe87a..1b58003 100644 --- a/lib/src/api/callbacks_api.dart +++ b/lib/src/api/callbacks_api.dart @@ -99,14 +99,13 @@ class CallbacksApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -208,14 +207,13 @@ class CallbacksApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -302,14 +300,13 @@ class CallbacksApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -396,14 +393,13 @@ class CallbacksApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -483,14 +479,13 @@ class CallbacksApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(RedirectCallbackUrls), - ) - as RedirectCallbackUrls; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(RedirectCallbackUrls), + ) + as RedirectCallbackUrls; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -570,14 +565,13 @@ class CallbacksApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(LogoutRedirectUrls), - ) - as LogoutRedirectUrls; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(LogoutRedirectUrls), + ) + as LogoutRedirectUrls; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -678,14 +672,13 @@ class CallbacksApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -787,14 +780,13 @@ class CallbacksApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, diff --git a/lib/src/api/connected_apps_api.dart b/lib/src/api/connected_apps_api.dart index 92f17b2..83890ce 100644 --- a/lib/src/api/connected_apps_api.dart +++ b/lib/src/api/connected_apps_api.dart @@ -83,14 +83,13 @@ class ConnectedAppsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(ConnectedAppsAuthUrl), - ) - as ConnectedAppsAuthUrl; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(ConnectedAppsAuthUrl), + ) + as ConnectedAppsAuthUrl; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -170,14 +169,13 @@ class ConnectedAppsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(ConnectedAppsAccessToken), - ) - as ConnectedAppsAccessToken; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(ConnectedAppsAccessToken), + ) + as ConnectedAppsAccessToken; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -257,14 +255,13 @@ class ConnectedAppsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, diff --git a/lib/src/api/environments_api.dart b/lib/src/api/environments_api.dart index 2a8c148..f6ee8b8 100644 --- a/lib/src/api/environments_api.dart +++ b/lib/src/api/environments_api.dart @@ -77,14 +77,13 @@ class EnvironmentsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -153,14 +152,13 @@ class EnvironmentsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -230,16 +228,15 @@ class EnvironmentsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType( - GetEnvironmentFeatureFlagsResponse, - ), - ) - as GetEnvironmentFeatureFlagsResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType( + GetEnvironmentFeatureFlagsResponse, + ), + ) + as GetEnvironmentFeatureFlagsResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -342,14 +339,13 @@ class EnvironmentsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, diff --git a/lib/src/api/feature_flags_api.dart b/lib/src/api/feature_flags_api.dart index 9a30cd9..d923b73 100644 --- a/lib/src/api/feature_flags_api.dart +++ b/lib/src/api/feature_flags_api.dart @@ -85,14 +85,13 @@ class FeatureFlagsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -172,14 +171,13 @@ class FeatureFlagsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -290,14 +288,13 @@ class FeatureFlagsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, diff --git a/lib/src/api/industries_api.dart b/lib/src/api/industries_api.dart index 5178b79..2dc5c71 100644 --- a/lib/src/api/industries_api.dart +++ b/lib/src/api/industries_api.dart @@ -83,14 +83,13 @@ class IndustriesApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, diff --git a/lib/src/api/o_auth_api.dart b/lib/src/api/o_auth_api.dart index 4d6c6a3..529e17e 100644 --- a/lib/src/api/o_auth_api.dart +++ b/lib/src/api/o_auth_api.dart @@ -65,14 +65,13 @@ class OAuthApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(UserProfile), - ) - as UserProfile; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(UserProfile), + ) + as UserProfile; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -100,18 +99,13 @@ class OAuthApi { throw ArgumentError('URL cannot be empty'); } - final options = Options( - method: r'GET', - ); + final options = Options(method: r'GET'); var dioClient = dio ?? Dio(); try { - final response = await dioClient.request( - url, - options: options, - ); + final response = await dioClient.request(url, options: options); - return response.statusCode == 200; + return response.statusCode == 200; } on DioException { return false; } @@ -163,14 +157,13 @@ class OAuthApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(UserProfileV2), - ) - as UserProfileV2; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(UserProfileV2), + ) + as UserProfileV2; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -271,14 +264,13 @@ class OAuthApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(TokenIntrospect), - ) - as TokenIntrospect; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(TokenIntrospect), + ) + as TokenIntrospect; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, diff --git a/lib/src/api/organizations_api.dart b/lib/src/api/organizations_api.dart index 3cbfccf..56943b0 100644 --- a/lib/src/api/organizations_api.dart +++ b/lib/src/api/organizations_api.dart @@ -84,13 +84,12 @@ class OrganizationsApi { try { const type = FullType(AddOrganizationUsersRequest); - bodyData = - addOrganizationUsersRequest == null - ? null - : _serializers.serialize( - addOrganizationUsersRequest, - specifiedType: type, - ); + bodyData = addOrganizationUsersRequest == null + ? null + : _serializers.serialize( + addOrganizationUsersRequest, + specifiedType: type, + ); } catch (error, stackTrace) { throw DioException( requestOptions: options.compose(_dio.options, path), @@ -113,14 +112,13 @@ class OrganizationsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(AddOrganizationUsersResponse), - ) - as AddOrganizationUsersResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(AddOrganizationUsersResponse), + ) + as AddOrganizationUsersResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -184,13 +182,12 @@ class OrganizationsApi { try { const type = FullType(CreateOrganizationRequest); - bodyData = - createOrganizationRequest == null - ? null - : _serializers.serialize( - createOrganizationRequest, - specifiedType: type, - ); + bodyData = createOrganizationRequest == null + ? null + : _serializers.serialize( + createOrganizationRequest, + specifiedType: type, + ); } catch (error, stackTrace) { throw DioException( requestOptions: options.compose(_dio.options, path), @@ -213,14 +210,13 @@ class OrganizationsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(CreateOrganizationResponse), - ) - as CreateOrganizationResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(CreateOrganizationResponse), + ) + as CreateOrganizationResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -335,14 +331,13 @@ class OrganizationsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -457,14 +452,13 @@ class OrganizationsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -614,14 +608,13 @@ class OrganizationsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -701,14 +694,13 @@ class OrganizationsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -814,14 +806,13 @@ class OrganizationsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -927,14 +918,13 @@ class OrganizationsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -1015,14 +1005,13 @@ class OrganizationsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(Organization), - ) - as Organization; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(Organization), + ) + as Organization; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -1103,16 +1092,15 @@ class OrganizationsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType( - GetOrganizationFeatureFlagsResponse, - ), - ) - as GetOrganizationFeatureFlagsResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType( + GetOrganizationFeatureFlagsResponse, + ), + ) + as GetOrganizationFeatureFlagsResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -1217,16 +1205,15 @@ class OrganizationsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType( - GetOrganizationsUserPermissionsResponse, - ), - ) - as GetOrganizationsUserPermissionsResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType( + GetOrganizationsUserPermissionsResponse, + ), + ) + as GetOrganizationsUserPermissionsResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -1319,16 +1306,15 @@ class OrganizationsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType( - GetOrganizationsUserRolesResponse, - ), - ) - as GetOrganizationsUserRolesResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType( + GetOrganizationsUserRolesResponse, + ), + ) + as GetOrganizationsUserRolesResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -1445,14 +1431,13 @@ class OrganizationsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(GetOrganizationUsersResponse), - ) - as GetOrganizationUsersResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(GetOrganizationUsersResponse), + ) + as GetOrganizationUsersResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -1542,14 +1527,13 @@ class OrganizationsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(GetOrganizationsResponse), - ) - as GetOrganizationsResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(GetOrganizationsResponse), + ) + as GetOrganizationsResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -1642,14 +1626,13 @@ class OrganizationsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -1724,13 +1707,12 @@ class OrganizationsApi { try { const type = FullType(UpdateOrganizationRequest); - bodyData = - updateOrganizationRequest == null - ? null - : _serializers.serialize( - updateOrganizationRequest, - specifiedType: type, - ); + bodyData = updateOrganizationRequest == null + ? null + : _serializers.serialize( + updateOrganizationRequest, + specifiedType: type, + ); } catch (error, stackTrace) { throw DioException( requestOptions: options.compose(_dio.options, path), @@ -1753,14 +1735,13 @@ class OrganizationsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -1865,14 +1846,13 @@ class OrganizationsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -1947,13 +1927,12 @@ class OrganizationsApi { try { const type = FullType(UpdateOrganizationUsersRequest); - bodyData = - updateOrganizationUsersRequest == null - ? null - : _serializers.serialize( - updateOrganizationUsersRequest, - specifiedType: type, - ); + bodyData = updateOrganizationUsersRequest == null + ? null + : _serializers.serialize( + updateOrganizationUsersRequest, + specifiedType: type, + ); } catch (error, stackTrace) { throw DioException( requestOptions: options.compose(_dio.options, path), @@ -1976,16 +1955,15 @@ class OrganizationsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType( - UpdateOrganizationUsersResponse, - ), - ) - as UpdateOrganizationUsersResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType( + UpdateOrganizationUsersResponse, + ), + ) + as UpdateOrganizationUsersResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, diff --git a/lib/src/api/permissions_api.dart b/lib/src/api/permissions_api.dart index 5948c91..c35c32c 100644 --- a/lib/src/api/permissions_api.dart +++ b/lib/src/api/permissions_api.dart @@ -60,13 +60,12 @@ class PermissionsApi { try { const type = FullType(CreatePermissionRequest); - bodyData = - createPermissionRequest == null - ? null - : _serializers.serialize( - createPermissionRequest, - specifiedType: type, - ); + bodyData = createPermissionRequest == null + ? null + : _serializers.serialize( + createPermissionRequest, + specifiedType: type, + ); } catch (error, stackTrace) { throw DioException( requestOptions: options.compose(_dio.options, path), @@ -89,14 +88,13 @@ class PermissionsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -176,14 +174,13 @@ class PermissionsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -273,14 +270,13 @@ class PermissionsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(GetPermissionsResponse), - ) - as GetPermissionsResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(GetPermissionsResponse), + ) + as GetPermissionsResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -355,13 +351,12 @@ class PermissionsApi { try { const type = FullType(CreatePermissionRequest); - bodyData = - createPermissionRequest == null - ? null - : _serializers.serialize( - createPermissionRequest, - specifiedType: type, - ); + bodyData = createPermissionRequest == null + ? null + : _serializers.serialize( + createPermissionRequest, + specifiedType: type, + ); } catch (error, stackTrace) { throw DioException( requestOptions: options.compose(_dio.options, path), @@ -384,14 +379,13 @@ class PermissionsApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, diff --git a/lib/src/api/roles_api.dart b/lib/src/api/roles_api.dart index 456e1f4..749610b 100644 --- a/lib/src/api/roles_api.dart +++ b/lib/src/api/roles_api.dart @@ -65,10 +65,9 @@ class RolesApi { try { const type = FullType(CreateRoleRequest); - bodyData = - createRoleRequest == null - ? null - : _serializers.serialize(createRoleRequest, specifiedType: type); + bodyData = createRoleRequest == null + ? null + : _serializers.serialize(createRoleRequest, specifiedType: type); } catch (error, stackTrace) { throw DioException( requestOptions: options.compose(_dio.options, path), @@ -91,14 +90,13 @@ class RolesApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -178,14 +176,13 @@ class RolesApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -286,16 +283,15 @@ class RolesApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(BuiltList, [ - FullType(RolesPermissionResponseInner), - ]), - ) - as BuiltList; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(BuiltList, [ + FullType(RolesPermissionResponseInner), + ]), + ) + as BuiltList; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -385,14 +381,13 @@ class RolesApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(GetRolesResponse), - ) - as GetRolesResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(GetRolesResponse), + ) + as GetRolesResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -485,14 +480,13 @@ class RolesApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -593,16 +587,13 @@ class RolesApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType( - UpdateRolePermissionsResponse, - ), - ) - as UpdateRolePermissionsResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(UpdateRolePermissionsResponse), + ) + as UpdateRolePermissionsResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -677,10 +668,9 @@ class RolesApi { try { const type = FullType(UpdateRolesRequest); - bodyData = - updateRolesRequest == null - ? null - : _serializers.serialize(updateRolesRequest, specifiedType: type); + bodyData = updateRolesRequest == null + ? null + : _serializers.serialize(updateRolesRequest, specifiedType: type); } catch (error, stackTrace) { throw DioException( requestOptions: options.compose(_dio.options, path), @@ -703,14 +693,13 @@ class RolesApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, diff --git a/lib/src/api/self_serve_portal_api.dart b/lib/src/api/self_serve_portal_api.dart index 0328e23..78561b5 100644 --- a/lib/src/api/self_serve_portal_api.dart +++ b/lib/src/api/self_serve_portal_api.dart @@ -11,7 +11,6 @@ import 'package:kinde_flutter_sdk/src/utils/api_util.dart'; import 'package:kinde_flutter_sdk/src/model/portal_link.dart'; class SelfServePortalApi { - final Dio _dio; final Serializers _serializers; @@ -46,16 +45,10 @@ class SelfServePortalApi { final _path = r'/account_api/v1/portal_link'; final _options = Options( method: r'GET', - headers: { - ...?headers, - }, + headers: {...?headers}, extra: { 'secure': >[ - { - 'type': 'http', - 'scheme': 'bearer', - 'name': 'kindeBearerAuth', - }, + {'type': 'http', 'scheme': 'bearer', 'name': 'kindeBearerAuth'}, ], ...?extra, }, @@ -63,8 +56,16 @@ class SelfServePortalApi { ); final _queryParameters = { - r'subnav': encodeQueryParameter(_serializers, subnav, const FullType(String)), - r'return_url': encodeQueryParameter(_serializers, returnUrl, const FullType(String)), + r'subnav': encodeQueryParameter( + _serializers, + subnav, + const FullType(String), + ), + r'return_url': encodeQueryParameter( + _serializers, + returnUrl, + const FullType(String), + ), }; final _response = await _dio.request( @@ -80,11 +81,13 @@ class SelfServePortalApi { try { final rawResponse = _response.data; - _responseData = rawResponse == null ? null : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(PortalLink), - ) as PortalLink; - + _responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(PortalLink), + ) + as PortalLink; } catch (error, stackTrace) { throw DioException( requestOptions: _response.requestOptions, @@ -106,5 +109,4 @@ class SelfServePortalApi { extra: _response.extra, ); } - } diff --git a/lib/src/api/subscribers_api.dart b/lib/src/api/subscribers_api.dart index b922b1e..985d741 100644 --- a/lib/src/api/subscribers_api.dart +++ b/lib/src/api/subscribers_api.dart @@ -90,16 +90,15 @@ class SubscribersApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType( - CreateSubscriberSuccessResponse, - ), - ) - as CreateSubscriberSuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType( + CreateSubscriberSuccessResponse, + ), + ) + as CreateSubscriberSuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -179,14 +178,13 @@ class SubscribersApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(GetSubscriberResponse), - ) - as GetSubscriberResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(GetSubscriberResponse), + ) + as GetSubscriberResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -276,14 +274,13 @@ class SubscribersApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(GetSubscribersResponse), - ) - as GetSubscribersResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(GetSubscribersResponse), + ) + as GetSubscribersResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, diff --git a/lib/src/api/timezones_api.dart b/lib/src/api/timezones_api.dart index 4da14eb..9698b69 100644 --- a/lib/src/api/timezones_api.dart +++ b/lib/src/api/timezones_api.dart @@ -83,14 +83,13 @@ class TimezonesApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, diff --git a/lib/src/api/users_api.dart b/lib/src/api/users_api.dart index 571eef8..ae3e49a 100644 --- a/lib/src/api/users_api.dart +++ b/lib/src/api/users_api.dart @@ -64,10 +64,9 @@ class UsersApi { try { const type = FullType(CreateUserRequest); - bodyData = - createUserRequest == null - ? null - : _serializers.serialize(createUserRequest, specifiedType: type); + bodyData = createUserRequest == null + ? null + : _serializers.serialize(createUserRequest, specifiedType: type); } catch (error, stackTrace) { throw DioException( requestOptions: options.compose(_dio.options, path), @@ -90,14 +89,13 @@ class UsersApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(CreateUserResponse), - ) - as CreateUserResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(CreateUserResponse), + ) + as CreateUserResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -181,14 +179,13 @@ class UsersApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -271,14 +268,13 @@ class UsersApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(User), - ) - as User; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(User), + ) + as User; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -389,14 +385,13 @@ class UsersApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(UsersResponse), - ) - as UsersResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(UsersResponse), + ) + as UsersResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -476,14 +471,13 @@ class UsersApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(SuccessResponse), - ) - as SuccessResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(SuccessResponse), + ) + as SuccessResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, @@ -582,14 +576,13 @@ class UsersApi { try { final rawResponse = response.data; - responseData = - rawResponse == null - ? null - : _serializers.deserialize( - rawResponse, - specifiedType: const FullType(UpdateUserResponse), - ) - as UpdateUserResponse; + responseData = rawResponse == null + ? null + : _serializers.deserialize( + rawResponse, + specifiedType: const FullType(UpdateUserResponse), + ) + as UpdateUserResponse; } catch (error, stackTrace) { throw DioException( requestOptions: response.requestOptions, diff --git a/lib/src/auth/kinde_end_session_request.dart b/lib/src/auth/kinde_end_session_request.dart index d36aee2..c73a0d6 100644 --- a/lib/src/auth/kinde_end_session_request.dart +++ b/lib/src/auth/kinde_end_session_request.dart @@ -59,4 +59,4 @@ class KindeEndSessionRequest implements EndSessionRequest { 'provided', ); } -} \ No newline at end of file +} diff --git a/lib/src/auth_config.dart b/lib/src/auth_config.dart index 81936bb..32d2733 100644 --- a/lib/src/auth_config.dart +++ b/lib/src/auth_config.dart @@ -12,7 +12,7 @@ class AuthConfig { required this.loginRedirectUri, required this.logoutRedirectUri, required this.scopes, - this.audience + this.audience, }) { _validateUrls(); } @@ -26,7 +26,9 @@ class AuthConfig { try { Uri.parse(logoutRedirectUri); } catch (e) { - throw ArgumentError('Invalid logoutRedirectUri format: $logoutRedirectUri'); + throw ArgumentError( + 'Invalid logoutRedirectUri format: $logoutRedirectUri', + ); } } } diff --git a/lib/src/auth_url_params.dart b/lib/src/auth_url_params.dart index e69de29..8b13789 100644 --- a/lib/src/auth_url_params.dart +++ b/lib/src/auth_url_params.dart @@ -0,0 +1 @@ + diff --git a/lib/src/error/authorization_kinde_error.dart b/lib/src/error/authorization_kinde_error.dart index 35507c1..b5f1c46 100644 --- a/lib/src/error/authorization_kinde_error.dart +++ b/lib/src/error/authorization_kinde_error.dart @@ -9,15 +9,19 @@ class AuthorizationKindeError extends KindeError { @override String get code => super.code; - AuthorizationKindeError._(String code, String description, StackTrace? stackTrace) - : super(code: code, message: description, stackTrace: stackTrace); + AuthorizationKindeError._( + String code, + String description, + StackTrace? stackTrace, + ) : super(code: code, message: description, stackTrace: stackTrace); @protected factory AuthorizationKindeError.fromOauth2Exception( - AuthorizationException error, StackTrace stackTrace) => - AuthorizationKindeError._( - error.error, - error.description ?? "Unknown OAuth2 authorization error", - stackTrace, - ); + AuthorizationException error, + StackTrace stackTrace, + ) => AuthorizationKindeError._( + error.error, + error.description ?? "Unknown OAuth2 authorization error", + stackTrace, + ); } diff --git a/lib/src/error/kinde_error.dart b/lib/src/error/kinde_error.dart index 14e3784..80bfa98 100644 --- a/lib/src/error/kinde_error.dart +++ b/lib/src/error/kinde_error.dart @@ -13,12 +13,9 @@ part 'login_link_expired_kinde_error.dart'; @immutable class KindeError implements Exception { - KindeError({ - String? message, - String? code, - this.stackTrace, - }) : code = code ?? KindeErrorCode.unknown.code, - message = message ?? ""; + KindeError({String? message, String? code, this.stackTrace}) + : code = code ?? KindeErrorCode.unknown.code, + message = message ?? ""; /// The long form message of the exception. final String message; @@ -57,14 +54,18 @@ class KindeError implements Exception { /// Uses pattern matching with switch expressions for type-safe error handling. /// Delegates specific error types to appropriate handler functions. /// Preserves stack traces for debugging. - factory KindeError.fromError(Object error, StackTrace stackTrace) => switch (error) { - KindeError e => e, - PlatformException e => _flutterAppAuthExceptionMapper(e, stackTrace), - AuthorizationException e => AuthorizationKindeError.fromOauth2Exception(e, stackTrace), - FormatException e => _handleFormatException(e, stackTrace), - Exception e => _handleError(e, stackTrace), - _ => KindeError(message: error.toString(), stackTrace: stackTrace), - }; + factory KindeError.fromError(Object error, StackTrace stackTrace) => + switch (error) { + KindeError e => e, + PlatformException e => _flutterAppAuthExceptionMapper(e, stackTrace), + AuthorizationException e => AuthorizationKindeError.fromOauth2Exception( + e, + stackTrace, + ), + FormatException e => _handleFormatException(e, stackTrace), + Exception e => _handleError(e, stackTrace), + _ => KindeError(message: error.toString(), stackTrace: stackTrace), + }; } /// Handles [Exception] types and converts them to [KindeError]. @@ -72,11 +73,12 @@ class KindeError implements Exception { /// Uses pattern matching for type-safe exception handling. /// Delegates [DioException] handling to [_handleDioException]. /// Preserves stack trace for debugging. -KindeError _handleError(Exception error, StackTrace stackTrace) => switch (error) { - KindeError e => e, - DioException e => _handleDioException(e, stackTrace), - _ => KindeError(message: error.toString(), stackTrace: stackTrace), -}; +KindeError _handleError(Exception error, StackTrace stackTrace) => + switch (error) { + KindeError e => e, + DioException e => _handleDioException(e, stackTrace), + _ => KindeError(message: error.toString(), stackTrace: stackTrace), + }; /// Handles [DioException] types with exhaustive pattern matching. /// @@ -85,30 +87,35 @@ KindeError _handleError(Exception error, StackTrace stackTrace) => switch (error /// - For bad responses on token endpoint, creates a refresh token expired error /// - Falls back to generic error for other cases /// Preserves stack trace for debugging. -KindeError _handleDioException(DioException dioError, StackTrace stackTrace) => switch (dioError.type) { - DioExceptionType.cancel || - DioExceptionType.connectionTimeout || - DioExceptionType.receiveTimeout || - DioExceptionType.sendTimeout || - DioExceptionType.connectionError || - DioExceptionType.badCertificate || - DioExceptionType.unknown when dioError.error is KindeError => - dioError.error as KindeError, - DioExceptionType.badResponse when dioError.requestOptions.path == "/oauth2/token" => - KindeError( - code: KindeErrorCode.refreshTokenExpired.code, - message: dioError.message, - stackTrace: stackTrace, - ), - _ => KindeError(message: dioError.toString(), stackTrace: stackTrace), -}; +KindeError _handleDioException(DioException dioError, StackTrace stackTrace) => + switch (dioError.type) { + DioExceptionType.cancel || + DioExceptionType.connectionTimeout || + DioExceptionType.receiveTimeout || + DioExceptionType.sendTimeout || + DioExceptionType.connectionError || + DioExceptionType.badCertificate || + DioExceptionType.unknown when dioError.error is KindeError => + dioError.error as KindeError, + DioExceptionType.badResponse + when dioError.requestOptions.path == "/oauth2/token" => + KindeError( + code: KindeErrorCode.refreshTokenExpired.code, + message: dioError.message, + stackTrace: stackTrace, + ), + _ => KindeError(message: dioError.toString(), stackTrace: stackTrace), + }; /// Handles [FormatException] types with pattern-based logic. /// /// Attempts to extract error information from JSON embedded in format exception messages. /// Special handling for OAuth state parameter mismatches. /// Preserves stack trace for debugging. -KindeError _handleFormatException(FormatException error, StackTrace stackTrace) { +KindeError _handleFormatException( + FormatException error, + StackTrace stackTrace, +) { // Check for OAuth state parameter mismatch if (error.message.contains("parameter \"state\" expected")) { return KindeError( @@ -151,7 +158,9 @@ KindeError _handleFormatException(FormatException error, StackTrace stackTrace) } KindeError _flutterAppAuthExceptionMapper( - PlatformException platformException, StackTrace stackTrace) { + PlatformException platformException, + StackTrace stackTrace, +) { if (platformException is FlutterAppAuthUserCancelledException) { return KindeError( code: KindeErrorCode.userCanceled.code, diff --git a/lib/src/kinde_flutter_sdk.dart b/lib/src/kinde_flutter_sdk.dart index 927accf..43f824e 100644 --- a/lib/src/kinde_flutter_sdk.dart +++ b/lib/src/kinde_flutter_sdk.dart @@ -73,8 +73,10 @@ class KindeFlutterSDK with TokenUtils { return _instance ??= KindeFlutterSDK._internal(); } - KindeFlutterSDK._internal( - {KindeSecureStorageInterface? secureStorage, Dio? dio}) { + KindeFlutterSDK._internal({ + KindeSecureStorageInterface? secureStorage, + Dio? dio, + }) { if (_config == null) { throw KindeError( code: KindeErrorCode.missingConfig.code, @@ -87,20 +89,19 @@ class KindeFlutterSDK with TokenUtils { final domainUrl = _normalizeDomain(_config!.authDomain); _serviceConfiguration = AuthorizationServiceConfiguration( - authorizationEndpoint: '$domainUrl$_authPath', - tokenEndpoint: '$domainUrl$_tokenPath', - endSessionEndpoint: '$domainUrl$_logoutPath'); - dio ??= Dio(BaseOptions( - baseUrl: domainUrl, - )); - - _kindeApi = KindeApi(dio: dio, interceptors: [ - BearerAuthInterceptor(), - RefreshTokenInterceptor( - dio: dio, - refreshToken: getToken, - ), - ]); + authorizationEndpoint: '$domainUrl$_authPath', + tokenEndpoint: '$domainUrl$_tokenPath', + endSessionEndpoint: '$domainUrl$_logoutPath', + ); + dio ??= Dio(BaseOptions(baseUrl: domainUrl)); + + _kindeApi = KindeApi( + dio: dio, + interceptors: [ + BearerAuthInterceptor(), + RefreshTokenInterceptor(dio: dio, refreshToken: getToken), + ], + ); _keysApi = KeysApi(_kindeApi.dio); _tokenApi = TokenApi(_kindeApi.dio); @@ -146,22 +147,24 @@ class KindeFlutterSDK with TokenUtils { String? audience, }) async { return _initializeSDK( - authDomain: authDomain, - authClientId: authClientId, - loginRedirectUri: loginRedirectUri, - logoutRedirectUri: logoutRedirectUri, - scopes: scopes, - audience: audience); + authDomain: authDomain, + authClientId: authClientId, + loginRedirectUri: loginRedirectUri, + logoutRedirectUri: logoutRedirectUri, + scopes: scopes, + audience: audience, + ); } - static Future _initializeSDK( - {required String authDomain, - required String authClientId, - required String loginRedirectUri, - required String logoutRedirectUri, - required List scopes, - String? audience, - Dio? dio}) async { + static Future _initializeSDK({ + required String authDomain, + required String authClientId, + required String loginRedirectUri, + required String logoutRedirectUri, + required List scopes, + String? audience, + Dio? dio, + }) async { String step = 'initializing'; void updateStep(String newStep) { step = newStep; @@ -182,13 +185,17 @@ class KindeFlutterSDK with TokenUtils { await _initializeStore(kindeSecureStorage, stepUpdater: updateStep); - await _initializeWebLayerIfNeeded(kindeSecureStorage, - stepUpdater: updateStep); + await _initializeWebLayerIfNeeded( + kindeSecureStorage, + stepUpdater: updateStep, + ); updateStep('finalization'); - _instance = - KindeFlutterSDK._internal(secureStorage: kindeSecureStorage, dio: dio); + _instance = KindeFlutterSDK._internal( + secureStorage: kindeSecureStorage, + dio: dio, + ); kindeDebugPrint( methodName: 'initializeSDK', @@ -218,8 +225,10 @@ class KindeFlutterSDK with TokenUtils { } } - static Future _initializeStore(KindeSecureStorage kindeSecureStorage, - {required InitializationStepUpdater stepUpdater}) async { + static Future _initializeStore( + KindeSecureStorage kindeSecureStorage, { + required InitializationStepUpdater stepUpdater, + }) async { stepUpdater('secure storage initialization'); await Store.init(); @@ -228,8 +237,9 @@ class KindeFlutterSDK with TokenUtils { } static Future _initializeWebLayerIfNeeded( - KindeSecureStorage kindeSecureStorage, - {required InitializationStepUpdater stepUpdater}) async { + KindeSecureStorage kindeSecureStorage, { + required InitializationStepUpdater stepUpdater, + }) async { if (kIsWeb) { stepUpdater('web layer initialization'); await KindeWeb.initialize(secureStorage: kindeSecureStorage); @@ -275,9 +285,10 @@ class KindeFlutterSDK with TokenUtils { await _handleWebLogout(); } else { await _handleNonWebLogout( - dio: dio, - macosLogoutWithoutRedirection: macosLogoutWithoutRedirection, - timeout: timeout); + dio: dio, + macosLogoutWithoutRedirection: macosLogoutWithoutRedirection, + timeout: timeout, + ); } await _commonLogoutCleanup(); @@ -309,12 +320,17 @@ class KindeFlutterSDK with TokenUtils { additionalParameters: {'client_id': _config!.authClientId}, ); - await appAuth.endSession(endSessionRequest).timeout(timeout, - onTimeout: () { - throw KindeError( - code: KindeErrorCode.requestTimedOut.code, - message: 'Logout request timed out'); - }); + await appAuth + .endSession(endSessionRequest) + .timeout( + timeout, + onTimeout: () { + throw KindeError( + code: KindeErrorCode.requestTimedOut.code, + message: 'Logout request timed out', + ); + }, + ); } catch (e, st) { kindeDebugPrint(methodName: "Logout", message: e.toString()); throw KindeError.fromError(e, st); @@ -349,16 +365,17 @@ class KindeFlutterSDK with TokenUtils { Future _logoutWithoutRedirection({Dio? dio}) async { try { var dioClient = dio ?? Dio(); - final response = - await dioClient.get(_serviceConfiguration.endSessionEndpoint!); + final response = await dioClient.get( + _serviceConfiguration.endSessionEndpoint!, + ); await _commonLogoutCleanup(); if (response.statusCode != null && response.statusCode! >= 400) { final errorMessage = response.data is Map ? response.data['error_description'] ?? - response.data['error'] ?? - "Unknown error" + response.data['error'] ?? + "Unknown error" : "Logout failed with status: ${response.statusCode}"; kindeDebugPrint( methodName: '_logoutWithoutRedirection', @@ -366,7 +383,9 @@ class KindeFlutterSDK with TokenUtils { context: {'statusCode': response.statusCode}, ); throw KindeError( - code: KindeErrorCode.logoutRequestFailed.code, message: errorMessage); + code: KindeErrorCode.logoutRequestFailed.code, + message: errorMessage, + ); } } catch (error, st) { kindeDebugPrint( @@ -391,8 +410,9 @@ class KindeFlutterSDK with TokenUtils { 'platform': kIsWeb ? 'web' : Platform.operatingSystem, }, ); - final internalAdditionalParams = - _prepareInternalAdditionalParameters(additionalParams); + final internalAdditionalParams = _prepareInternalAdditionalParameters( + additionalParams, + ); internalAdditionalParams.promptValues = additionalParams.invitationCode != null ? ['create'] : ['login']; return _redirectToKinde( @@ -402,7 +422,8 @@ class KindeFlutterSDK with TokenUtils { } InternalAdditionalParameters _prepareInternalAdditionalParameters( - AdditionalParameters additionalParams) { + AdditionalParameters additionalParams, + ) { final internalAdditionalParams = InternalAdditionalParameters.fromUserAdditionalParams(additionalParams); internalAdditionalParams.audience = _config!.audience; @@ -419,7 +440,11 @@ class KindeFlutterSDK with TokenUtils { if (kIsWeb) { _handleWebLogin(internalAdditionalParameters); } else { - return _handleOtherLogin(type, internalAdditionalParameters, isRetrying: false,); + return _handleOtherLogin( + type, + internalAdditionalParameters, + isRetrying: false, + ); } return null; } @@ -430,24 +455,31 @@ class KindeFlutterSDK with TokenUtils { /// We currently only retry once if the login link has expired. /// Future _handleOtherLogin( - AuthFlowType? type, InternalAdditionalParameters params, {required bool isRetrying,}) async { + AuthFlowType? type, + InternalAdditionalParameters params, { + required bool isRetrying, + }) async { const appAuth = FlutterAppAuth(); TokenResponse tokenResponse; try { if (type == AuthFlowType.pkce) { final authorizationRequest = _createAuthorizationRequest(params); - final AuthorizationResponse result = - await appAuth.authorize(authorizationRequest); + final AuthorizationResponse result = await appAuth.authorize( + authorizationRequest, + ); final tokenRequest = _createTokenRequest( - authorizationResponse: result, - scopes: params.scopes, - additionalParameters: authorizationRequest.additionalParameters); + authorizationResponse: result, + scopes: params.scopes, + additionalParameters: authorizationRequest.additionalParameters, + ); tokenResponse = await appAuth.token(tokenRequest); } else { - final authorizationTokenRequest = - _createAuthorizationTokenRequest(params); - tokenResponse = - await appAuth.authorizeAndExchangeCode(authorizationTokenRequest); + final authorizationTokenRequest = _createAuthorizationTokenRequest( + params, + ); + tokenResponse = await appAuth.authorizeAndExchangeCode( + authorizationTokenRequest, + ); } if (params.orgName != null) { @@ -494,85 +526,89 @@ class KindeFlutterSDK with TokenUtils { } } - TokenRequest _createTokenRequest( - {required AuthorizationResponse authorizationResponse, - List? scopes, - Map? additionalParameters}) => - TokenRequest( - _config!.authClientId, - _config!.loginRedirectUri, - codeVerifier: authorizationResponse.codeVerifier, - authorizationCode: authorizationResponse.authorizationCode, - serviceConfiguration: _serviceConfiguration, - nonce: authorizationResponse.nonce, - scopes: scopes, - additionalParameters: additionalParameters, - ); + TokenRequest _createTokenRequest({ + required AuthorizationResponse authorizationResponse, + List? scopes, + Map? additionalParameters, + }) => TokenRequest( + _config!.authClientId, + _config!.loginRedirectUri, + codeVerifier: authorizationResponse.codeVerifier, + authorizationCode: authorizationResponse.authorizationCode, + serviceConfiguration: _serviceConfiguration, + nonce: authorizationResponse.nonce, + scopes: scopes, + additionalParameters: additionalParameters, + ); AuthorizationRequest _createAuthorizationRequest( - InternalAdditionalParameters additionalParameters) { - final authorizationRequestParams = - additionalParameters.toAuthorizationRequestParams(); + InternalAdditionalParameters additionalParameters, + ) { + final authorizationRequestParams = additionalParameters + .toAuthorizationRequestParams(); final authorizationRequest = AuthorizationRequest( - _config!.authClientId, _config!.loginRedirectUri, - serviceConfiguration: _serviceConfiguration, - externalUserAgent: - ExternalUserAgent.ephemeralAsWebAuthenticationSession, - additionalParameters: authorizationRequestParams, - scopes: additionalParameters.scopes, - promptValues: additionalParameters.promptValues); + _config!.authClientId, + _config!.loginRedirectUri, + serviceConfiguration: _serviceConfiguration, + externalUserAgent: ExternalUserAgent.ephemeralAsWebAuthenticationSession, + additionalParameters: authorizationRequestParams, + scopes: additionalParameters.scopes, + promptValues: additionalParameters.promptValues, + ); return authorizationRequest; } AuthorizationTokenRequest _createAuthorizationTokenRequest( - InternalAdditionalParameters additionalParameters) { - final authorizationRequestParams = - additionalParameters.toAuthorizationRequestParams(); + InternalAdditionalParameters additionalParameters, + ) { + final authorizationRequestParams = additionalParameters + .toAuthorizationRequestParams(); final authorizationTokenRequest = AuthorizationTokenRequest( - _config!.authClientId, _config!.loginRedirectUri, - serviceConfiguration: _serviceConfiguration, - externalUserAgent: - ExternalUserAgent.ephemeralAsWebAuthenticationSession, - additionalParameters: authorizationRequestParams, - scopes: additionalParameters.scopes, - promptValues: additionalParameters.promptValues); + _config!.authClientId, + _config!.loginRedirectUri, + serviceConfiguration: _serviceConfiguration, + externalUserAgent: ExternalUserAgent.ephemeralAsWebAuthenticationSession, + additionalParameters: authorizationRequestParams, + scopes: additionalParameters.scopes, + promptValues: additionalParameters.promptValues, + ); return authorizationTokenRequest; } - void _handleWebLogin( - InternalAdditionalParameters params, - ) { + void _handleWebLogin(InternalAdditionalParameters params) { WebUtils.setSessionItem( _webSavedParamsKey, jsonEncode(params.toUserAdditionalParams().toJson()), ); KindeWeb.instance.startLoginFlow( - AuthorizationRequest( - _config!.authClientId, - _config!.loginRedirectUri, - serviceConfiguration: _serviceConfiguration, - externalUserAgent: - ExternalUserAgent.ephemeralAsWebAuthenticationSession, - ), - additionalParameters: params); + AuthorizationRequest( + _config!.authClientId, + _config!.loginRedirectUri, + serviceConfiguration: _serviceConfiguration, + externalUserAgent: + ExternalUserAgent.ephemeralAsWebAuthenticationSession, + ), + additionalParameters: params, + ); } Future _finishWebLogin(String responseUrl) async { WebUtils.removeSessionItem(_webSavedParamsKey); WebUtils.removeSessionItem(_webAuthRetriedFlag); final credentials = await KindeWeb.instance.finishLoginFlow( - scopes: _config!.scopes, - redirectUrl: _config!.loginRedirectUri, - responseUrl: responseUrl, - clientId: _config!.authClientId, - authorizationEndpoint: _serviceConfiguration.authorizationEndpoint, - tokenEndpoint: _serviceConfiguration.tokenEndpoint); + scopes: _config!.scopes, + redirectUrl: _config!.loginRedirectUri, + responseUrl: responseUrl, + clientId: _config!.authClientId, + authorizationEndpoint: _serviceConfiguration.authorizationEndpoint, + tokenEndpoint: _serviceConfiguration.tokenEndpoint, + ); if (credentials == null) { kindeDebugPrint( - methodName: "finishWebLogin", - message: - "No credentials received - login may have been canceled"); + methodName: "finishWebLogin", + message: "No credentials received - login may have been canceled", + ); return false; } @@ -582,15 +618,17 @@ class KindeFlutterSDK with TokenUtils { context: {'expiresAt': credentials.expiration?.toIso8601String()}, ); - _saveState(TokenResponse( - credentials.accessToken, - credentials.refreshToken, - credentials.expiration, - credentials.idToken, - null, - credentials.scopes, - null, - )); + _saveState( + TokenResponse( + credentials.accessToken, + credentials.refreshToken, + credentials.expiration, + credentials.idToken, + null, + credentials.scopes, + null, + ), + ); return true; } @@ -608,28 +646,39 @@ class KindeFlutterSDK with TokenUtils { 'platform': kIsWeb ? 'web' : Platform.operatingSystem, }, ); - final internalAdditionalParams = - _prepareInternalAdditionalParameters(additionalParams); + final internalAdditionalParams = _prepareInternalAdditionalParameters( + additionalParams, + ); internalAdditionalParams.registrationPage = _registrationPageParamValue; return _redirectToKinde( - type: type, internalAdditionalParameters: internalAdditionalParams); + type: type, + internalAdditionalParameters: internalAdditionalParams, + ); } Future getUserProfileV2() async { - return _kindeApi.getOAuthApi().getUserProfileV2().then((value) { - return value.data; - }).catchError((error, st) { - throw KindeError.fromError(error, st); - }); + return _kindeApi + .getOAuthApi() + .getUserProfileV2() + .then((value) { + return value.data; + }) + .catchError((error, st) { + throw KindeError.fromError(error, st); + }); } Future getUser() async { - return _kindeApi.getOAuthApi().getUser().then((value) { - return value.data; - }).catchError((error, st) { - throw KindeError.fromError(error, st); - }); + return _kindeApi + .getOAuthApi() + .getUser() + .then((value) { + return value.data; + }) + .catchError((error, st) { + throw KindeError.fromError(error, st); + }); } Future createOrg({ @@ -638,10 +687,12 @@ class KindeFlutterSDK with TokenUtils { String? planInterest, String? pricingTableKey, }) async { - final params = _prepareInternalAdditionalParameters(AdditionalParameters( - planInterest: planInterest, - pricingTableKey: pricingTableKey, - )); + final params = _prepareInternalAdditionalParameters( + AdditionalParameters( + planInterest: planInterest, + pricingTableKey: pricingTableKey, + ), + ); params.registrationPage = _registrationPageParamValue; params.createOrg = true; params.orgName = orgName; @@ -683,9 +734,10 @@ class KindeFlutterSDK with TokenUtils { throw KindeError(code: KindeErrorCode.sessionExpiredOrInvalid.code); } final data = await _tokenApi.retrieveToken( - versionParam, - _store.authState!.createRequestTokenParam() - ..putIfAbsent(_clientIdParamName, () => _config!.authClientId)); + versionParam, + _store.authState!.createRequestTokenParam() + ..putIfAbsent(_clientIdParamName, () => _config!.authClientId), + ); _store.authState = AuthState.fromJson(data as Map); _kindeApi.setBearerAuth(_bearerAuth, _store.authState?.accessToken ?? ''); @@ -765,12 +817,15 @@ class KindeFlutterSDK with TokenUtils { 'reauth_state': String reauthState, }) { _handleExpiredWebLogin(reauthState: reauthState); + /// Returning false because we aren't actually completing the auth process here /// We're rather retrying the flow if expired return false; } - final finishLoginUri = _isCurrentUrlContainWebAuthParams(currentUrl: currentUrl); + final finishLoginUri = _isCurrentUrlContainWebAuthParams( + currentUrl: currentUrl, + ); if (finishLoginUri != null) { final storedState = await _kindeSecureStorage.getAuthRequestState(); if (storedState != null) { @@ -809,9 +864,10 @@ class KindeFlutterSDK with TokenUtils { final savedParamsJson = WebUtils.getSessionItem(_webSavedParamsKey); final recoveredUserParams = savedParamsJson != null && savedParamsJson.isNotEmpty - ? AdditionalParameters.fromJson( - jsonDecode(savedParamsJson) as Map) - : const AdditionalParameters(); + ? AdditionalParameters.fromJson( + jsonDecode(savedParamsJson) as Map, + ) + : const AdditionalParameters(); final params = _prepareInternalAdditionalParameters(recoveredUserParams); params.reauthState = reauthState; @@ -854,17 +910,19 @@ class KindeFlutterSDK with TokenUtils { } catch (e) { kindeDebugPrint( methodName: "_startInvitationLoginIfNeeded", - message: "Failed to setup invitation code deep link listener: ${e.toString()}", + message: + "Failed to setup invitation code deep link listener: ${e.toString()}", ); } } Future _handleInvitationCode(String invitationCode) async { try { - if (_handlingInvitationCode) { + if (_handlingInvitationCode) { kindeDebugPrint( methodName: "_handleInvitationCode", - message: "Invitation code already being handled. Returning without processing", + message: + "Invitation code already being handled. Returning without processing", ); return; } @@ -873,8 +931,7 @@ class KindeFlutterSDK with TokenUtils { kindeDebugPrint( methodName: "_handleInvitationCode", - message: - "Starting invitation login for invitation code", + message: "Starting invitation login for invitation code", ); await login( additionalParams: AdditionalParameters(invitationCode: invitationCode), @@ -882,7 +939,8 @@ class KindeFlutterSDK with TokenUtils { } catch (e) { kindeDebugPrint( methodName: "_handleInvitationCode", - message: "Failed to handle invitation code: ${e.toString()}"); + message: "Failed to handle invitation code: ${e.toString()}", + ); } finally { _handlingInvitationCode = false; } @@ -890,12 +948,13 @@ class KindeFlutterSDK with TokenUtils { _saveState(TokenResponse? tokenResponse) { _store.authState = AuthState( - accessToken: tokenResponse?.accessToken, - idToken: tokenResponse?.idToken, - accessTokenExpirationDateTime: - tokenResponse?.accessTokenExpirationDateTime, - refreshToken: tokenResponse?.refreshToken, - scope: tokenResponse?.scopes?.join(' ')); + accessToken: tokenResponse?.accessToken, + idToken: tokenResponse?.idToken, + accessTokenExpirationDateTime: + tokenResponse?.accessTokenExpirationDateTime, + refreshToken: tokenResponse?.refreshToken, + scope: tokenResponse?.scopes?.join(' '), + ); _kindeApi.setBearerAuth(_bearerAuth, tokenResponse?.accessToken ?? ''); kindeDebugPrint( @@ -1086,20 +1145,22 @@ class KindeFlutterSDK with TokenUtils { } } -Future initializeKindeFlutterSdkForTest( - {required String authDomain, - required String authClientId, - required String loginRedirectUri, - required String logoutRedirectUri, - List scopes = KindeFlutterSDK._defaultScopes, - String? audience, - Dio? dio}) async { +Future initializeKindeFlutterSdkForTest({ + required String authDomain, + required String authClientId, + required String loginRedirectUri, + required String logoutRedirectUri, + List scopes = KindeFlutterSDK._defaultScopes, + String? audience, + Dio? dio, +}) async { return KindeFlutterSDK._initializeSDK( - authDomain: authDomain, - authClientId: authClientId, - loginRedirectUri: loginRedirectUri, - logoutRedirectUri: logoutRedirectUri, - scopes: scopes, - audience: audience, - dio: dio); + authDomain: authDomain, + authClientId: authClientId, + loginRedirectUri: loginRedirectUri, + logoutRedirectUri: logoutRedirectUri, + scopes: scopes, + audience: audience, + dio: dio, + ); } diff --git a/lib/src/kinde_secure_storage/kinde_secure_storage.dart b/lib/src/kinde_secure_storage/kinde_secure_storage.dart index f9f8b30..766efb7 100644 --- a/lib/src/kinde_secure_storage/kinde_secure_storage.dart +++ b/lib/src/kinde_secure_storage/kinde_secure_storage.dart @@ -12,15 +12,16 @@ abstract class SecureStorageKey { class KindeSecureStorage implements KindeSecureStorageInterface { KindeSecureStorage({FlutterSecureStorage? secureStorage}) - : _secureStorage = secureStorage ?? const FlutterSecureStorage(); + : _secureStorage = secureStorage ?? const FlutterSecureStorage(); final FlutterSecureStorage _secureStorage; @override Future?> getSecureKey() async { try { - final base64 = - await _secureStorage.read(key: SecureStorageKey.encryption); + final base64 = await _secureStorage.read( + key: SecureStorageKey.encryption, + ); if (base64 == null) return null; return base64Url.decode(base64); } catch (e) { @@ -40,10 +41,7 @@ class KindeSecureStorage implements KindeSecureStorageInterface { value: base64UrlEncode(secureKey), ); } catch (e) { - kindeDebugPrint( - methodName: "saveSecureKey", - message: e.toString(), - ); + kindeDebugPrint(methodName: "saveSecureKey", message: e.toString()); } } @@ -52,10 +50,7 @@ class KindeSecureStorage implements KindeSecureStorageInterface { try { return await _secureStorage.read(key: SecureStorageKey.authRequestState); } catch (e) { - kindeDebugPrint( - methodName: "getAuthRequestState", - message: e.toString(), - ); + kindeDebugPrint(methodName: "getAuthRequestState", message: e.toString()); return null; } } @@ -89,7 +84,9 @@ class KindeSecureStorage implements KindeSecureStorageInterface { } String generateAuthState() { - final randomBytes = - List.generate(32, (i) => Random.secure().nextInt(256)); + final randomBytes = List.generate( + 32, + (i) => Random.secure().nextInt(256), + ); return base64UrlEncode(randomBytes); } diff --git a/lib/src/kinde_web/kinde_web.dart b/lib/src/kinde_web/kinde_web.dart index 724ad12..effd95e 100644 --- a/lib/src/kinde_web/kinde_web.dart +++ b/lib/src/kinde_web/kinde_web.dart @@ -36,9 +36,10 @@ class KindeWeb { late final CodeVerifierStorage _codeVerifierStorage; - static Future initialize( - {String? appBaseUrl, - required KindeSecureStorageInterface secureStorage}) async { + static Future initialize({ + String? appBaseUrl, + required KindeSecureStorageInterface secureStorage, + }) async { try { String? tempAppBaseUrl = appBaseUrl; @@ -48,14 +49,16 @@ class KindeWeb { // Log when using fallback strategy if (urlStrategy == null) { kindeDebugPrint( - methodName: 'KindeWeb.initialize', - message: - '[Kinde] No urlStrategy detected. Defaulting to path strategy.'); + methodName: 'KindeWeb.initialize', + message: + '[Kinde] No urlStrategy detected. Defaulting to path strategy.', + ); } else { kindeDebugPrint( - methodName: 'KindeWeb.initialize', - message: - '[Kinde] Using custom urlStrategy: ${urlStrategy.runtimeType}'); + methodName: 'KindeWeb.initialize', + message: + '[Kinde] Using custom urlStrategy: ${urlStrategy.runtimeType}', + ); } tempAppBaseUrl ??= Uri.base.origin; @@ -65,12 +68,14 @@ class KindeWeb { final isBaseUrlValid = isSafeWebUrl(tempAppBaseUrl); if (!isBaseUrlValid) { throw ArgumentError( - 'Invalid appBaseUrl: must be a valid HTTP/HTTPS URL'); + 'Invalid appBaseUrl: must be a valid HTTP/HTTPS URL', + ); } kindeDebugPrint( - methodName: 'KindeWeb.initialize', - message: 'Successfully validated base URL: $tempAppBaseUrl'); + methodName: 'KindeWeb.initialize', + message: 'Successfully validated base URL: $tempAppBaseUrl', + ); // Proceed _instance = KindeWeb._(secureStorage); @@ -98,8 +103,9 @@ class KindeWeb { } if (!isSafeWebUrl(logoutUrl)) { throw KindeError( - code: KindeErrorCode.invalidRedirect.code, - message: 'Unsafe or untrusted logout URL detected'); + code: KindeErrorCode.invalidRedirect.code, + message: 'Unsafe or untrusted logout URL detected', + ); } await _clear(); WebUtils.replacePage(logoutUrl); @@ -109,8 +115,10 @@ class KindeWeb { ///Starts the OAuth login flow. Only one login can be in progress at a time. ///Throws [KindeError] with [KindeErrorCode.loginInProcess] if a login is already in progress. - Future startLoginFlow(AuthorizationRequest configuration, - {required InternalAdditionalParameters additionalParameters}) async { + Future startLoginFlow( + AuthorizationRequest configuration, { + required InternalAdditionalParameters additionalParameters, + }) async { if (_loginInProgress) { throw KindeError(code: KindeErrorCode.loginInProcess.code); } @@ -125,39 +133,44 @@ class KindeWeb { additionalParameters.state = authState; } catch (e, st) { throw KindeError( - code: KindeErrorCode.unknown.code, - message: e.toString(), - stackTrace: st); + code: KindeErrorCode.unknown.code, + message: e.toString(), + stackTrace: st, + ); } WebOAuthFlow.login( - configuration: configuration, - additionalParameters: additionalParameters, - codeVerifier: codeVerifier); + configuration: configuration, + additionalParameters: additionalParameters, + codeVerifier: codeVerifier, + ); } catch (e, st) { await _clear(); throw e is KindeError ? e : KindeError.fromError(e, st); } } - Future finishLoginFlow( - {required String redirectUrl, - required String responseUrl, - required String clientId, - required String authorizationEndpoint, - required String tokenEndpoint, - required List scopes}) async { + Future finishLoginFlow({ + required String redirectUrl, + required String responseUrl, + required String clientId, + required String authorizationEndpoint, + required String tokenEndpoint, + required List scopes, + }) async { final codeVerifier = _codeVerifierStorage.restore(); if (codeVerifier == null) { throw KindeError( - code: KindeErrorCode.noCodeVerifier.code, - message: "No code verifier in storage."); + code: KindeErrorCode.noCodeVerifier.code, + message: "No code verifier in storage.", + ); } final authRequestState = await _kindeSecureStorage.getAuthRequestState(); if (authRequestState == null) { throw KindeError( - code: KindeErrorCode.noAuthRequestStateStored.code, - message: "No auth request state in storage."); + code: KindeErrorCode.noAuthRequestStateStored.code, + message: "No auth request state in storage.", + ); } final authorizationCodeGrant = AuthorizationCodeGrant( @@ -170,11 +183,12 @@ class KindeWeb { try { final credentials = await WebOAuthFlow.finishLogin( - authRequestState: authRequestState, - responseUrl: responseUrl, - authorizationCodeGrant: authorizationCodeGrant, - redirectUrl: redirectUrl, - scopes: scopes); + authRequestState: authRequestState, + responseUrl: responseUrl, + authorizationCodeGrant: authorizationCodeGrant, + redirectUrl: redirectUrl, + scopes: scopes, + ); await _clear(); return credentials; } catch (e, st) { diff --git a/lib/src/kinde_web/src/base/web_oauth_flow.dart b/lib/src/kinde_web/src/base/web_oauth_flow.dart index 1e092b0..8fd023d 100644 --- a/lib/src/kinde_web/src/base/web_oauth_flow.dart +++ b/lib/src/kinde_web/src/base/web_oauth_flow.dart @@ -10,14 +10,16 @@ const int _httpDefaultPort = 80; const int _httpsDefaultPort = 443; abstract class WebOAuthFlow { - static Future login( - {required AuthorizationRequest configuration, - required InternalAdditionalParameters additionalParameters, - required String codeVerifier}) async { + static Future login({ + required AuthorizationRequest configuration, + required InternalAdditionalParameters additionalParameters, + required String codeVerifier, + }) async { final initialUri = _getInitialUrl( - configuration: configuration, - additionalParameters: additionalParameters, - codeVerifier: codeVerifier); + configuration: configuration, + additionalParameters: additionalParameters, + codeVerifier: codeVerifier, + ); WebUtils.replacePage(initialUri.toString()); } @@ -32,16 +34,22 @@ abstract class WebOAuthFlow { final Uri responseUri = Uri.parse(responseUrl); ///preparing for handling authorization response - authorizationCodeGrant.getAuthorizationUrl(Uri.parse(redirectUrl), - scopes: scopes, state: authRequestState); + authorizationCodeGrant.getAuthorizationUrl( + Uri.parse(redirectUrl), + scopes: scopes, + state: authRequestState, + ); /// throws KindeError with code=notRedirectUrl _compareActualRedirectUriWithExpected( - actual: responseUri, expected: redirectUrl); + actual: responseUri, + expected: redirectUrl, + ); ///Get client credentials - final client = await authorizationCodeGrant - .handleAuthorizationResponse(responseUri.queryParameters); + final client = await authorizationCodeGrant.handleAuthorizationResponse( + responseUri.queryParameters, + ); return client.credentials; } catch (e, st) { throw KindeError.fromError(e, st); @@ -50,22 +58,27 @@ abstract class WebOAuthFlow { /// Ensures the responseRedirect matches a known valid redirect URL, /// throws KindeError with code=not=redirect-url - static void _compareActualRedirectUriWithExpected( - {required Uri actual, required String expected}) { + static void _compareActualRedirectUriWithExpected({ + required Uri actual, + required String expected, + }) { final Uri validUri = Uri.parse(expected); if (_urisMatch(actual, validUri)) { return; } - final comparingSummary = ''' + final comparingSummary = + ''' Expected: $validUri, Actual: ${actual.toString()} '''; kindeDebugPrint(methodName: "isValidRedirect", message: comparingSummary); throw KindeError( - code: KindeErrorCode.notRedirectUrl.code, message: comparingSummary); + code: KindeErrorCode.notRedirectUrl.code, + message: comparingSummary, + ); } /// Ignoring query parameters. @@ -112,14 +125,15 @@ abstract class WebOAuthFlow { Uri initialUri = authorizationCodeGrant.getAuthorizationUrl( Uri.parse(redirectUrl), state: additionalParameters.state, - scopes: additionalParameters.scopes + scopes: additionalParameters.scopes, ); additionalParameters.state = null; additionalParameters.scopes = null; - final Map queryParameters = - Map.from(initialUri.queryParameters); + final Map queryParameters = Map.from( + initialUri.queryParameters, + ); for (final param in additionalParameters.toWebParams().entries) { queryParameters.putIfAbsent(param.key, () => param.value); diff --git a/lib/src/kinde_web/src/utils/code_verifier_generator.dart b/lib/src/kinde_web/src/utils/code_verifier_generator.dart index 2551c6d..6eef893 100644 --- a/lib/src/kinde_web/src/utils/code_verifier_generator.dart +++ b/lib/src/kinde_web/src/utils/code_verifier_generator.dart @@ -6,7 +6,9 @@ import 'dart:math'; /// [RFC 7636]: https://tools.ietf.org/html/rfc7636#section-4.1 String generateCodeVerifier() { return List.generate( - 128, (i) => _charset[Random.secure().nextInt(_charset.length)]).join(); + 128, + (i) => _charset[Random.secure().nextInt(_charset.length)], + ).join(); } /// Allowed characters for generating a codeVerifier diff --git a/lib/src/kinde_web/src/utils/code_verifier_storage.dart b/lib/src/kinde_web/src/utils/code_verifier_storage.dart index 6cb8989..4841195 100644 --- a/lib/src/kinde_web/src/utils/code_verifier_storage.dart +++ b/lib/src/kinde_web/src/utils/code_verifier_storage.dart @@ -15,10 +15,10 @@ class CodeVerifierStorage { try { instance._sharedPreferences = await SharedPreferences.getInstance(); _instance = instance; - } catch (e) { - debugPrint('Failed to initialize SharedPreferences: $e'); - rethrow; - } + } catch (e) { + debugPrint('Failed to initialize SharedPreferences: $e'); + rethrow; + } return instance; } diff --git a/lib/src/model/add_organization_users_request.g.dart b/lib/src/model/add_organization_users_request.g.dart index 8641b39..8c0dc2e 100644 --- a/lib/src/model/add_organization_users_request.g.dart +++ b/lib/src/model/add_organization_users_request.g.dart @@ -41,8 +41,9 @@ class _$AddOrganizationUsersRequest extends AddOrganizationUsersRequest { @override String toString() { - return (newBuiltValueToStringHelper(r'AddOrganizationUsersRequest') - ..add('users', users)).toString(); + return (newBuiltValueToStringHelper( + r'AddOrganizationUsersRequest', + )..add('users', users)).toString(); } } diff --git a/lib/src/model/add_organization_users_request_users_inner.g.dart b/lib/src/model/add_organization_users_request_users_inner.g.dart index 0a895b9..7bae127 100644 --- a/lib/src/model/add_organization_users_request_users_inner.g.dart +++ b/lib/src/model/add_organization_users_request_users_inner.g.dart @@ -17,9 +17,8 @@ class _$AddOrganizationUsersRequestUsersInner factory _$AddOrganizationUsersRequestUsersInner([ void Function(AddOrganizationUsersRequestUsersInnerBuilder)? updates, - ]) => - (new AddOrganizationUsersRequestUsersInnerBuilder()..update(updates)) - ._build(); + ]) => (new AddOrganizationUsersRequestUsersInnerBuilder()..update(updates)) + ._build(); _$AddOrganizationUsersRequestUsersInner._({ this.id, diff --git a/lib/src/model/api_result.g.dart b/lib/src/model/api_result.g.dart index 71ed083..9109506 100644 --- a/lib/src/model/api_result.g.dart +++ b/lib/src/model/api_result.g.dart @@ -38,8 +38,9 @@ class _$ApiResult extends ApiResult { @override String toString() { - return (newBuiltValueToStringHelper(r'ApiResult') - ..add('result', result)).toString(); + return (newBuiltValueToStringHelper( + r'ApiResult', + )..add('result', result)).toString(); } } diff --git a/lib/src/model/auth_flow_type.dart b/lib/src/model/auth_flow_type.dart index 6dcf3f2..8497d43 100644 --- a/lib/src/model/auth_flow_type.dart +++ b/lib/src/model/auth_flow_type.dart @@ -6,10 +6,7 @@ enum AuthFlowType { /// /// Used as a default or placeholder value when no specific /// flow is required or selected. - none( - 'none', - 'No specific authentication flow', - ), + none('none', 'No specific authentication flow'), /// Proof Key for Code Exchange (PKCE) flow. /// diff --git a/lib/src/model/create_application_request.g.dart b/lib/src/model/create_application_request.g.dart index 88a59ea..c586d9f 100644 --- a/lib/src/model/create_application_request.g.dart +++ b/lib/src/model/create_application_request.g.dart @@ -29,13 +29,14 @@ CreateApplicationRequestTypeEnum _$createApplicationRequestTypeEnumValueOf( } final BuiltSet -_$createApplicationRequestTypeEnumValues = new BuiltSet< - CreateApplicationRequestTypeEnum ->(const [ - _$createApplicationRequestTypeEnum_reg, - _$createApplicationRequestTypeEnum_spa, - _$createApplicationRequestTypeEnum_m2m, -]); +_$createApplicationRequestTypeEnumValues = + new BuiltSet( + const [ + _$createApplicationRequestTypeEnum_reg, + _$createApplicationRequestTypeEnum_spa, + _$createApplicationRequestTypeEnum_m2m, + ], + ); Serializer _$createApplicationRequestTypeEnumSerializer = diff --git a/lib/src/model/create_application_response_application.g.dart b/lib/src/model/create_application_response_application.g.dart index 27145ac..c9e8161 100644 --- a/lib/src/model/create_application_response_application.g.dart +++ b/lib/src/model/create_application_response_application.g.dart @@ -17,9 +17,8 @@ class _$CreateApplicationResponseApplication factory _$CreateApplicationResponseApplication([ void Function(CreateApplicationResponseApplicationBuilder)? updates, - ]) => - (new CreateApplicationResponseApplicationBuilder()..update(updates)) - ._build(); + ]) => (new CreateApplicationResponseApplicationBuilder()..update(updates)) + ._build(); _$CreateApplicationResponseApplication._({ this.id, diff --git a/lib/src/model/create_feature_flag_request.g.dart b/lib/src/model/create_feature_flag_request.g.dart index e7ab953..56218cb 100644 --- a/lib/src/model/create_feature_flag_request.g.dart +++ b/lib/src/model/create_feature_flag_request.g.dart @@ -30,13 +30,14 @@ CreateFeatureFlagRequestTypeEnum _$createFeatureFlagRequestTypeEnumValueOf( } final BuiltSet -_$createFeatureFlagRequestTypeEnumValues = new BuiltSet< - CreateFeatureFlagRequestTypeEnum ->(const [ - _$createFeatureFlagRequestTypeEnum_str, - _$createFeatureFlagRequestTypeEnum_int_, - _$createFeatureFlagRequestTypeEnum_bool_, -]); +_$createFeatureFlagRequestTypeEnumValues = + new BuiltSet( + const [ + _$createFeatureFlagRequestTypeEnum_str, + _$createFeatureFlagRequestTypeEnum_int_, + _$createFeatureFlagRequestTypeEnum_bool_, + ], + ); const CreateFeatureFlagRequestAllowOverrideLevelEnum _$createFeatureFlagRequestAllowOverrideLevelEnum_env = @@ -58,12 +59,13 @@ _$createFeatureFlagRequestAllowOverrideLevelEnumValueOf(String name) { } final BuiltSet -_$createFeatureFlagRequestAllowOverrideLevelEnumValues = new BuiltSet< - CreateFeatureFlagRequestAllowOverrideLevelEnum ->(const [ - _$createFeatureFlagRequestAllowOverrideLevelEnum_env, - _$createFeatureFlagRequestAllowOverrideLevelEnum_org, -]); +_$createFeatureFlagRequestAllowOverrideLevelEnumValues = + new BuiltSet( + const [ + _$createFeatureFlagRequestAllowOverrideLevelEnum_env, + _$createFeatureFlagRequestAllowOverrideLevelEnum_org, + ], + ); Serializer _$createFeatureFlagRequestTypeEnumSerializer = diff --git a/lib/src/model/create_organization_request.g.dart b/lib/src/model/create_organization_request.g.dart index 80e11b8..05aceb9 100644 --- a/lib/src/model/create_organization_request.g.dart +++ b/lib/src/model/create_organization_request.g.dart @@ -31,13 +31,14 @@ _$createOrganizationRequestFeatureFlagsEnumValueOf(String name) { } final BuiltSet -_$createOrganizationRequestFeatureFlagsEnumValues = new BuiltSet< - CreateOrganizationRequestFeatureFlagsEnum ->(const [ - _$createOrganizationRequestFeatureFlagsEnum_str, - _$createOrganizationRequestFeatureFlagsEnum_int_, - _$createOrganizationRequestFeatureFlagsEnum_bool_, -]); +_$createOrganizationRequestFeatureFlagsEnumValues = + new BuiltSet( + const [ + _$createOrganizationRequestFeatureFlagsEnum_str, + _$createOrganizationRequestFeatureFlagsEnum_int_, + _$createOrganizationRequestFeatureFlagsEnum_bool_, + ], + ); Serializer _$createOrganizationRequestFeatureFlagsEnumSerializer = @@ -172,9 +173,8 @@ class CreateOrganizationRequestBuilder MapBuilder? _featureFlags; MapBuilder - get featureFlags => - _$this._featureFlags ??= - new MapBuilder(); + get featureFlags => _$this._featureFlags ??= + new MapBuilder(); set featureFlags( MapBuilder? featureFlags, ) => _$this._featureFlags = featureFlags; diff --git a/lib/src/model/create_organization_response_organization.g.dart b/lib/src/model/create_organization_response_organization.g.dart index 749c00f..f371ab9 100644 --- a/lib/src/model/create_organization_response_organization.g.dart +++ b/lib/src/model/create_organization_response_organization.g.dart @@ -13,9 +13,8 @@ class _$CreateOrganizationResponseOrganization factory _$CreateOrganizationResponseOrganization([ void Function(CreateOrganizationResponseOrganizationBuilder)? updates, - ]) => - (new CreateOrganizationResponseOrganizationBuilder()..update(updates)) - ._build(); + ]) => (new CreateOrganizationResponseOrganizationBuilder()..update(updates)) + ._build(); _$CreateOrganizationResponseOrganization._({this.code}) : super._(); diff --git a/lib/src/model/create_organization_user_permission_request.g.dart b/lib/src/model/create_organization_user_permission_request.g.dart index acf63fe..63d3740 100644 --- a/lib/src/model/create_organization_user_permission_request.g.dart +++ b/lib/src/model/create_organization_user_permission_request.g.dart @@ -13,9 +13,8 @@ class _$CreateOrganizationUserPermissionRequest factory _$CreateOrganizationUserPermissionRequest([ void Function(CreateOrganizationUserPermissionRequestBuilder)? updates, - ]) => - (new CreateOrganizationUserPermissionRequestBuilder()..update(updates)) - ._build(); + ]) => (new CreateOrganizationUserPermissionRequestBuilder()..update(updates)) + ._build(); _$CreateOrganizationUserPermissionRequest._({this.permissionId}) : super._(); diff --git a/lib/src/model/create_organization_user_role_request.g.dart b/lib/src/model/create_organization_user_role_request.g.dart index c25e399..ad204f2 100644 --- a/lib/src/model/create_organization_user_role_request.g.dart +++ b/lib/src/model/create_organization_user_role_request.g.dart @@ -13,9 +13,8 @@ class _$CreateOrganizationUserRoleRequest factory _$CreateOrganizationUserRoleRequest([ void Function(CreateOrganizationUserRoleRequestBuilder)? updates, - ]) => - (new CreateOrganizationUserRoleRequestBuilder()..update(updates)) - ._build(); + ]) => (new CreateOrganizationUserRoleRequestBuilder()..update(updates)) + ._build(); _$CreateOrganizationUserRoleRequest._({this.roleId}) : super._(); @@ -44,8 +43,9 @@ class _$CreateOrganizationUserRoleRequest @override String toString() { - return (newBuiltValueToStringHelper(r'CreateOrganizationUserRoleRequest') - ..add('roleId', roleId)).toString(); + return (newBuiltValueToStringHelper( + r'CreateOrganizationUserRoleRequest', + )..add('roleId', roleId)).toString(); } } diff --git a/lib/src/model/create_subscriber_success_response.g.dart b/lib/src/model/create_subscriber_success_response.g.dart index 42bbcd2..322fce8 100644 --- a/lib/src/model/create_subscriber_success_response.g.dart +++ b/lib/src/model/create_subscriber_success_response.g.dart @@ -44,8 +44,9 @@ class _$CreateSubscriberSuccessResponse @override String toString() { - return (newBuiltValueToStringHelper(r'CreateSubscriberSuccessResponse') - ..add('subscriber', subscriber)).toString(); + return (newBuiltValueToStringHelper( + r'CreateSubscriberSuccessResponse', + )..add('subscriber', subscriber)).toString(); } } diff --git a/lib/src/model/create_user_request_identities_inner_details.g.dart b/lib/src/model/create_user_request_identities_inner_details.g.dart index d5c94a3..1ee38ea 100644 --- a/lib/src/model/create_user_request_identities_inner_details.g.dart +++ b/lib/src/model/create_user_request_identities_inner_details.g.dart @@ -13,9 +13,8 @@ class _$CreateUserRequestIdentitiesInnerDetails factory _$CreateUserRequestIdentitiesInnerDetails([ void Function(CreateUserRequestIdentitiesInnerDetailsBuilder)? updates, - ]) => - (new CreateUserRequestIdentitiesInnerDetailsBuilder()..update(updates)) - ._build(); + ]) => (new CreateUserRequestIdentitiesInnerDetailsBuilder()..update(updates)) + ._build(); _$CreateUserRequestIdentitiesInnerDetails._({this.email}) : super._(); diff --git a/lib/src/model/error_response.g.dart b/lib/src/model/error_response.g.dart index fb77418..b0b44de 100644 --- a/lib/src/model/error_response.g.dart +++ b/lib/src/model/error_response.g.dart @@ -38,8 +38,9 @@ class _$ErrorResponse extends ErrorResponse { @override String toString() { - return (newBuiltValueToStringHelper(r'ErrorResponse') - ..add('errors', errors)).toString(); + return (newBuiltValueToStringHelper( + r'ErrorResponse', + )..add('errors', errors)).toString(); } } diff --git a/lib/src/model/get_application_response_application.g.dart b/lib/src/model/get_application_response_application.g.dart index d4bfa90..f8f727d 100644 --- a/lib/src/model/get_application_response_application.g.dart +++ b/lib/src/model/get_application_response_application.g.dart @@ -21,9 +21,8 @@ class _$GetApplicationResponseApplication factory _$GetApplicationResponseApplication([ void Function(GetApplicationResponseApplicationBuilder)? updates, - ]) => - (new GetApplicationResponseApplicationBuilder()..update(updates)) - ._build(); + ]) => (new GetApplicationResponseApplicationBuilder()..update(updates)) + ._build(); _$GetApplicationResponseApplication._({ this.id, diff --git a/lib/src/model/get_environment_feature_flags_response.g.dart b/lib/src/model/get_environment_feature_flags_response.g.dart index c2dab58..c758782 100644 --- a/lib/src/model/get_environment_feature_flags_response.g.dart +++ b/lib/src/model/get_environment_feature_flags_response.g.dart @@ -20,9 +20,8 @@ class _$GetEnvironmentFeatureFlagsResponse factory _$GetEnvironmentFeatureFlagsResponse([ void Function(GetEnvironmentFeatureFlagsResponseBuilder)? updates, - ]) => - (new GetEnvironmentFeatureFlagsResponseBuilder()..update(updates)) - ._build(); + ]) => (new GetEnvironmentFeatureFlagsResponseBuilder()..update(updates)) + ._build(); _$GetEnvironmentFeatureFlagsResponse._({ this.code, @@ -91,12 +90,11 @@ class GetEnvironmentFeatureFlagsResponseBuilder MapBuilder? _featureFlags; MapBuilder - get featureFlags => - _$this._featureFlags ??= - new MapBuilder< - String, - GetOrganizationFeatureFlagsResponseFeatureFlagsValue - >(); + get featureFlags => _$this._featureFlags ??= + new MapBuilder< + String, + GetOrganizationFeatureFlagsResponseFeatureFlagsValue + >(); set featureFlags( MapBuilder? featureFlags, diff --git a/lib/src/model/get_organization_feature_flags_response.g.dart b/lib/src/model/get_organization_feature_flags_response.g.dart index dd96753..20b1729 100644 --- a/lib/src/model/get_organization_feature_flags_response.g.dart +++ b/lib/src/model/get_organization_feature_flags_response.g.dart @@ -18,9 +18,8 @@ class _$GetOrganizationFeatureFlagsResponse factory _$GetOrganizationFeatureFlagsResponse([ void Function(GetOrganizationFeatureFlagsResponseBuilder)? updates, - ]) => - (new GetOrganizationFeatureFlagsResponseBuilder()..update(updates)) - ._build(); + ]) => (new GetOrganizationFeatureFlagsResponseBuilder()..update(updates)) + ._build(); _$GetOrganizationFeatureFlagsResponse._({ this.code, @@ -85,12 +84,11 @@ class GetOrganizationFeatureFlagsResponseBuilder MapBuilder? _featureFlags; MapBuilder - get featureFlags => - _$this._featureFlags ??= - new MapBuilder< - String, - GetOrganizationFeatureFlagsResponseFeatureFlagsValue - >(); + get featureFlags => _$this._featureFlags ??= + new MapBuilder< + String, + GetOrganizationFeatureFlagsResponseFeatureFlagsValue + >(); set featureFlags( MapBuilder? featureFlags, diff --git a/lib/src/model/get_organizations_user_permissions_response.g.dart b/lib/src/model/get_organizations_user_permissions_response.g.dart index 0cadeb8..0210dd4 100644 --- a/lib/src/model/get_organizations_user_permissions_response.g.dart +++ b/lib/src/model/get_organizations_user_permissions_response.g.dart @@ -17,9 +17,8 @@ class _$GetOrganizationsUserPermissionsResponse factory _$GetOrganizationsUserPermissionsResponse([ void Function(GetOrganizationsUserPermissionsResponseBuilder)? updates, - ]) => - (new GetOrganizationsUserPermissionsResponseBuilder()..update(updates)) - ._build(); + ]) => (new GetOrganizationsUserPermissionsResponseBuilder()..update(updates)) + ._build(); _$GetOrganizationsUserPermissionsResponse._({ this.code, diff --git a/lib/src/model/get_organizations_user_roles_response.g.dart b/lib/src/model/get_organizations_user_roles_response.g.dart index e6e5e0d..4f2466f 100644 --- a/lib/src/model/get_organizations_user_roles_response.g.dart +++ b/lib/src/model/get_organizations_user_roles_response.g.dart @@ -19,9 +19,8 @@ class _$GetOrganizationsUserRolesResponse factory _$GetOrganizationsUserRolesResponse([ void Function(GetOrganizationsUserRolesResponseBuilder)? updates, - ]) => - (new GetOrganizationsUserRolesResponseBuilder()..update(updates)) - ._build(); + ]) => (new GetOrganizationsUserRolesResponseBuilder()..update(updates)) + ._build(); _$GetOrganizationsUserRolesResponse._({ this.code, diff --git a/lib/src/model/get_redirect_callback_urls_response.g.dart b/lib/src/model/get_redirect_callback_urls_response.g.dart index 037ab99..0f97ff5 100644 --- a/lib/src/model/get_redirect_callback_urls_response.g.dart +++ b/lib/src/model/get_redirect_callback_urls_response.g.dart @@ -44,8 +44,9 @@ class _$GetRedirectCallbackUrlsResponse @override String toString() { - return (newBuiltValueToStringHelper(r'GetRedirectCallbackUrlsResponse') - ..add('redirectUrls', redirectUrls)).toString(); + return (newBuiltValueToStringHelper( + r'GetRedirectCallbackUrlsResponse', + )..add('redirectUrls', redirectUrls)).toString(); } } diff --git a/lib/src/model/logout_redirect_urls.g.dart b/lib/src/model/logout_redirect_urls.g.dart index 7e9dbc4..858e308 100644 --- a/lib/src/model/logout_redirect_urls.g.dart +++ b/lib/src/model/logout_redirect_urls.g.dart @@ -41,8 +41,9 @@ class _$LogoutRedirectUrls extends LogoutRedirectUrls { @override String toString() { - return (newBuiltValueToStringHelper(r'LogoutRedirectUrls') - ..add('redirectUrls', redirectUrls)).toString(); + return (newBuiltValueToStringHelper( + r'LogoutRedirectUrls', + )..add('redirectUrls', redirectUrls)).toString(); } } diff --git a/lib/src/model/organization_user_permission_roles_inner.g.dart b/lib/src/model/organization_user_permission_roles_inner.g.dart index 9fc2e84..be90b24 100644 --- a/lib/src/model/organization_user_permission_roles_inner.g.dart +++ b/lib/src/model/organization_user_permission_roles_inner.g.dart @@ -15,9 +15,8 @@ class _$OrganizationUserPermissionRolesInner factory _$OrganizationUserPermissionRolesInner([ void Function(OrganizationUserPermissionRolesInnerBuilder)? updates, - ]) => - (new OrganizationUserPermissionRolesInnerBuilder()..update(updates)) - ._build(); + ]) => (new OrganizationUserPermissionRolesInnerBuilder()..update(updates)) + ._build(); _$OrganizationUserPermissionRolesInner._({this.id, this.key}) : super._(); diff --git a/lib/src/model/portal_link.dart b/lib/src/model/portal_link.dart index e2842f0..d94c8a6 100644 --- a/lib/src/model/portal_link.dart +++ b/lib/src/model/portal_link.dart @@ -56,7 +56,11 @@ class _$PortalLinkSerializer implements PrimitiveSerializer { PortalLink object, { FullType specifiedType = FullType.unspecified, }) { - return _serializeProperties(serializers, object, specifiedType: specifiedType).toList(); + return _serializeProperties( + serializers, + object, + specifiedType: specifiedType, + ).toList(); } void _deserializeProperties( @@ -72,10 +76,12 @@ class _$PortalLinkSerializer implements PrimitiveSerializer { final value = serializedList[i + 1]; switch (key) { case r'url': - final valueDes = serializers.deserialize( - value, - specifiedType: const FullType(String), - ) as String; + final valueDes = + serializers.deserialize( + value, + specifiedType: const FullType(String), + ) + as String; result.url = valueDes; break; default: @@ -106,4 +112,3 @@ class _$PortalLinkSerializer implements PrimitiveSerializer { return result.build(); } } - diff --git a/lib/src/model/portal_link.g.dart b/lib/src/model/portal_link.g.dart index f1d4296..9a8205a 100644 --- a/lib/src/model/portal_link.g.dart +++ b/lib/src/model/portal_link.g.dart @@ -37,8 +37,9 @@ class _$PortalLink extends PortalLink { @override String toString() { - return (newBuiltValueToStringHelper(r'PortalLink')..add('url', url)) - .toString(); + return (newBuiltValueToStringHelper( + r'PortalLink', + )..add('url', url)).toString(); } } @@ -76,10 +77,7 @@ class PortalLinkBuilder implements Builder { PortalLink build() => _build(); _$PortalLink _build() { - final _$result = _$v ?? - _$PortalLink._( - url: url, - ); + final _$result = _$v ?? _$PortalLink._(url: url); replace(_$result); return _$result; } diff --git a/lib/src/model/redirect_callback_urls.g.dart b/lib/src/model/redirect_callback_urls.g.dart index efe5414..67d9ff2 100644 --- a/lib/src/model/redirect_callback_urls.g.dart +++ b/lib/src/model/redirect_callback_urls.g.dart @@ -41,8 +41,9 @@ class _$RedirectCallbackUrls extends RedirectCallbackUrls { @override String toString() { - return (newBuiltValueToStringHelper(r'RedirectCallbackUrls') - ..add('redirectUrls', redirectUrls)).toString(); + return (newBuiltValueToStringHelper( + r'RedirectCallbackUrls', + )..add('redirectUrls', redirectUrls)).toString(); } } diff --git a/lib/src/model/replace_logout_redirect_urls_request.g.dart b/lib/src/model/replace_logout_redirect_urls_request.g.dart index bf02aca..c855401 100644 --- a/lib/src/model/replace_logout_redirect_urls_request.g.dart +++ b/lib/src/model/replace_logout_redirect_urls_request.g.dart @@ -43,8 +43,9 @@ class _$ReplaceLogoutRedirectURLsRequest @override String toString() { - return (newBuiltValueToStringHelper(r'ReplaceLogoutRedirectURLsRequest') - ..add('urls', urls)).toString(); + return (newBuiltValueToStringHelper( + r'ReplaceLogoutRedirectURLsRequest', + )..add('urls', urls)).toString(); } } diff --git a/lib/src/model/replace_redirect_callback_urls_request.g.dart b/lib/src/model/replace_redirect_callback_urls_request.g.dart index 1160182..a0671b5 100644 --- a/lib/src/model/replace_redirect_callback_urls_request.g.dart +++ b/lib/src/model/replace_redirect_callback_urls_request.g.dart @@ -13,9 +13,8 @@ class _$ReplaceRedirectCallbackURLsRequest factory _$ReplaceRedirectCallbackURLsRequest([ void Function(ReplaceRedirectCallbackURLsRequestBuilder)? updates, - ]) => - (new ReplaceRedirectCallbackURLsRequestBuilder()..update(updates)) - ._build(); + ]) => (new ReplaceRedirectCallbackURLsRequestBuilder()..update(updates)) + ._build(); _$ReplaceRedirectCallbackURLsRequest._({this.urls}) : super._(); @@ -44,8 +43,9 @@ class _$ReplaceRedirectCallbackURLsRequest @override String toString() { - return (newBuiltValueToStringHelper(r'ReplaceRedirectCallbackURLsRequest') - ..add('urls', urls)).toString(); + return (newBuiltValueToStringHelper( + r'ReplaceRedirectCallbackURLsRequest', + )..add('urls', urls)).toString(); } } diff --git a/lib/src/model/token_type.dart b/lib/src/model/token_type.dart index 5965f51..6e1e0ac 100644 --- a/lib/src/model/token_type.dart +++ b/lib/src/model/token_type.dart @@ -21,10 +21,7 @@ enum TokenType { /// to the client application. /// /// See: https://oauth.net/2/access-tokens/ - accessToken( - 'access_token', - 'Access Token for authenticating API requests', - ); + accessToken('access_token', 'Access Token for authenticating API requests'); /// Creates a token type with associated metadata. const TokenType(this.value, this.description); diff --git a/lib/src/model/update_api_applications_request.g.dart b/lib/src/model/update_api_applications_request.g.dart index 56a549e..073ae05 100644 --- a/lib/src/model/update_api_applications_request.g.dart +++ b/lib/src/model/update_api_applications_request.g.dart @@ -48,8 +48,9 @@ class _$UpdateAPIApplicationsRequest extends UpdateAPIApplicationsRequest { @override String toString() { - return (newBuiltValueToStringHelper(r'UpdateAPIApplicationsRequest') - ..add('applications', applications)).toString(); + return (newBuiltValueToStringHelper( + r'UpdateAPIApplicationsRequest', + )..add('applications', applications)).toString(); } } diff --git a/lib/src/model/update_organization_users_request.g.dart b/lib/src/model/update_organization_users_request.g.dart index 94adb85..b3ec407 100644 --- a/lib/src/model/update_organization_users_request.g.dart +++ b/lib/src/model/update_organization_users_request.g.dart @@ -41,8 +41,9 @@ class _$UpdateOrganizationUsersRequest extends UpdateOrganizationUsersRequest { @override String toString() { - return (newBuiltValueToStringHelper(r'UpdateOrganizationUsersRequest') - ..add('users', users)).toString(); + return (newBuiltValueToStringHelper( + r'UpdateOrganizationUsersRequest', + )..add('users', users)).toString(); } } diff --git a/lib/src/model/update_organization_users_request_users_inner.g.dart b/lib/src/model/update_organization_users_request_users_inner.g.dart index 7f8aacf..3b767a0 100644 --- a/lib/src/model/update_organization_users_request_users_inner.g.dart +++ b/lib/src/model/update_organization_users_request_users_inner.g.dart @@ -19,9 +19,8 @@ class _$UpdateOrganizationUsersRequestUsersInner factory _$UpdateOrganizationUsersRequestUsersInner([ void Function(UpdateOrganizationUsersRequestUsersInnerBuilder)? updates, - ]) => - (new UpdateOrganizationUsersRequestUsersInnerBuilder()..update(updates)) - ._build(); + ]) => (new UpdateOrganizationUsersRequestUsersInnerBuilder()..update(updates)) + ._build(); _$UpdateOrganizationUsersRequestUsersInner._({ this.id, diff --git a/lib/src/model/update_role_permissions_request.g.dart b/lib/src/model/update_role_permissions_request.g.dart index 1729491..db64593 100644 --- a/lib/src/model/update_role_permissions_request.g.dart +++ b/lib/src/model/update_role_permissions_request.g.dart @@ -42,8 +42,9 @@ class _$UpdateRolePermissionsRequest extends UpdateRolePermissionsRequest { @override String toString() { - return (newBuiltValueToStringHelper(r'UpdateRolePermissionsRequest') - ..add('permissions', permissions)).toString(); + return (newBuiltValueToStringHelper( + r'UpdateRolePermissionsRequest', + )..add('permissions', permissions)).toString(); } } diff --git a/lib/src/model/user_identity_result.g.dart b/lib/src/model/user_identity_result.g.dart index 5aca3c6..82eebf7 100644 --- a/lib/src/model/user_identity_result.g.dart +++ b/lib/src/model/user_identity_result.g.dart @@ -41,8 +41,9 @@ class _$UserIdentityResult extends UserIdentityResult { @override String toString() { - return (newBuiltValueToStringHelper(r'UserIdentityResult') - ..add('created', created)).toString(); + return (newBuiltValueToStringHelper( + r'UserIdentityResult', + )..add('created', created)).toString(); } } diff --git a/lib/src/store/store.dart b/lib/src/store/store.dart index a03721f..162e68d 100644 --- a/lib/src/store/store.dart +++ b/lib/src/store/store.dart @@ -22,9 +22,7 @@ class Store { static Future init() async { _instance = Store._internal(); _instance!._storage = const FlutterSecureStorage( - iOptions: IOSOptions( - accessibility: KeychainAccessibility.first_unlock, - ), + iOptions: IOSOptions(accessibility: KeychainAccessibility.first_unlock), webOptions: WebOptions( dbName: 'kinde_secure_storage', publicKey: 'kinde_public_key', @@ -104,7 +102,9 @@ class Store { if (currentData == null || currentData.toLowerCase() == "null") { _cachedKeys = null; } else { - _cachedKeys = Keys.fromJson(jsonDecode(currentData) as Map); + _cachedKeys = Keys.fromJson( + jsonDecode(currentData) as Map, + ); } } catch (e) { kindeDebugPrint( diff --git a/lib/src/token/auth_state.dart b/lib/src/token/auth_state.dart index 30e532d..984a072 100644 --- a/lib/src/token/auth_state.dart +++ b/lib/src/token/auth_state.dart @@ -27,8 +27,8 @@ class AuthState { return { 'access_token': accessToken, 'refresh_token': refreshToken, - 'access_token_expiration_date_time': - accessTokenExpirationDateTime?.toIso8601String(), + 'access_token_expiration_date_time': accessTokenExpirationDateTime + ?.toIso8601String(), 'id_token': idToken, 'grant_type': grantType, 'scope': scope, diff --git a/lib/src/token/token_utils.dart b/lib/src/token/token_utils.dart index 0d323e5..7c9d959 100644 --- a/lib/src/token/token_utils.dart +++ b/lib/src/token/token_utils.dart @@ -44,30 +44,35 @@ mixin TokenUtils implements ClaimApi { } @override - Claim getClaim( - {required String claim, TokenType tokenType = TokenType.accessToken}) { + Claim getClaim({ + required String claim, + TokenType tokenType = TokenType.accessToken, + }) { return Claim(claim, _getClaim(claim, tokenType: tokenType)); } @override ClaimPermission getPermission(String permission) { return ClaimPermission( - _getClaim(_orgCodeClaim) ?? '', - (_getClaim>(_permissionsClaim) ?? []) - .contains(permission)); + _getClaim(_orgCodeClaim) ?? '', + (_getClaim>(_permissionsClaim) ?? []).contains(permission), + ); } @override ClaimPermissions getPermissions() { - return ClaimPermissions(_getClaim(_orgCodeClaim) ?? '', - _getClaim?>(_permissionsClaim) ?? []); + return ClaimPermissions( + _getClaim(_orgCodeClaim) ?? '', + _getClaim?>(_permissionsClaim) ?? [], + ); } @override ClaimOrganizations getUserOrganizations() { return ClaimOrganizations( - _getClaim>(_orgCodesClaim, tokenType: TokenType.idToken) ?? - []); + _getClaim>(_orgCodesClaim, tokenType: TokenType.idToken) ?? + [], + ); } @override @@ -83,8 +88,10 @@ mixin TokenUtils implements ClaimApi { final flagClaim = _getClaim(_featureFlagsClaim) as Map?; if (flagClaim == null || !flagClaim.containsKey(code)) { if (defaultValue == null) { - throw KindeError(message: - 'Flag $code was not found, and no default value has been provided'); + throw KindeError( + message: + 'Flag $code was not found, and no default value has been provided', + ); } } else { flagObj = flagClaim[code]; @@ -92,37 +99,54 @@ mixin TokenUtils implements ClaimApi { if (type != null && flagType != null && type.character != flagType.character) { - throw KindeError(message: 'Flag $code is type $flagType - requested type $type'); + throw KindeError( + message: 'Flag $code is type $flagType - requested type $type', + ); } } - return Flag(code, flagType ?? type, - flagObj != null ? flagObj[_flagValue] : defaultValue, flagObj == null); + return Flag( + code, + flagType ?? type, + flagObj != null ? flagObj[_flagValue] : defaultValue, + flagObj == null, + ); } @override bool? getBooleanFlag({required String code, bool? defaultValue}) { - return getFlag(code: code, defaultValue: defaultValue, type: FlagType.bool) - ?.value as bool?; + return getFlag( + code: code, + defaultValue: defaultValue, + type: FlagType.bool, + )?.value + as bool?; } @override String? getStringFlag({required String code, String? defaultValue}) { return getFlag( - code: code, defaultValue: defaultValue, type: FlagType.string) - ?.value as String?; + code: code, + defaultValue: defaultValue, + type: FlagType.string, + )?.value + as String?; } @override int? getIntegerFlag({required String code, int? defaultValue}) { return getFlag( - code: code, defaultValue: defaultValue, type: FlagType.integer) - ?.value as int?; + code: code, + defaultValue: defaultValue, + type: FlagType.integer, + )?.value + as int?; } Map parseToken(String? token) { final parts = token?.split(r'.'); return jsonDecode( - utf8.decode(base64Url.decode(base64Url.normalize(parts![1])))); + utf8.decode(base64Url.decode(base64Url.normalize(parts![1]))), + ); } T? _getClaim(String claim, {TokenType tokenType = TokenType.accessToken}) { @@ -160,8 +184,10 @@ mixin TokenUtils implements ClaimApi { abstract class ClaimApi { UserDetails? getUserDetails(); - Claim getClaim( - {required String claim, TokenType tokenType = TokenType.accessToken}); + Claim getClaim({ + required String claim, + TokenType tokenType = TokenType.accessToken, + }); ClaimPermissions getPermissions(); diff --git a/lib/src/utils/app_lifecycle_util.dart b/lib/src/utils/app_lifecycle_util.dart index f99bd88..0ec56ad 100644 --- a/lib/src/utils/app_lifecycle_util.dart +++ b/lib/src/utils/app_lifecycle_util.dart @@ -55,4 +55,3 @@ class _ResumedLifecycleObserver extends WidgetsBindingObserver { } } } - diff --git a/lib/src/utils/deep_link_util.dart b/lib/src/utils/deep_link_util.dart index 273bd33..d8e1035 100644 --- a/lib/src/utils/deep_link_util.dart +++ b/lib/src/utils/deep_link_util.dart @@ -2,11 +2,11 @@ import 'dart:async'; import 'package:app_links/app_links.dart'; class DeepLinkUtil { - StreamSubscription listenForDeepLinks( - {required Function(Uri uri) onNewLink}) { + StreamSubscription listenForDeepLinks({ + required Function(Uri uri) onNewLink, + }) { return AppLinks().uriLinkStream.listen((uri) { onNewLink(uri); }); } } - diff --git a/test/environments_api_test.dart b/test/environments_api_test.dart index 9f86cb4..ab383dd 100644 --- a/test/environments_api_test.dart +++ b/test/environments_api_test.dart @@ -30,8 +30,8 @@ void main() { //Future deleteEnvironementFeatureFlagOverrides() async test('test deleteEnvironementFeatureFlagOverrides', () async { // TODO - final responseData = - await instance.deleteEnvironementFeatureFlagOverrides(); + final responseData = await instance + .deleteEnvironementFeatureFlagOverrides(); expect(responseData, isNotNull); }); diff --git a/test/error/kinde_error_code_test.dart b/test/error/kinde_error_code_test.dart index e47703c..067e580 100644 --- a/test/error/kinde_error_code_test.dart +++ b/test/error/kinde_error_code_test.dart @@ -10,26 +10,41 @@ void main() { test('should convert camelCase enum names to kebab-case strings', () { expect(KindeErrorCode.userCanceled.code, 'user-canceled'); - expect(KindeErrorCode.sessionExpiredOrInvalid.code, - 'session-expired-or-invalid'); - expect(KindeErrorCode.refreshTokenExpired.code, - 'refresh-token-expired'); + expect( + KindeErrorCode.sessionExpiredOrInvalid.code, + 'session-expired-or-invalid', + ); + expect( + KindeErrorCode.refreshTokenExpired.code, + 'refresh-token-expired', + ); expect(KindeErrorCode.missingConfig.code, 'missing-config'); - expect(KindeErrorCode.webInitializingFailed.code, - 'web-initializing-failed'); + expect( + KindeErrorCode.webInitializingFailed.code, + 'web-initializing-failed', + ); expect(KindeErrorCode.initializingFailed.code, 'initializing-failed'); expect( - KindeErrorCode.logoutRequestFailed.code, 'logout-request-failed'); + KindeErrorCode.logoutRequestFailed.code, + 'logout-request-failed', + ); expect(KindeErrorCode.requestTimedOut.code, 'request-timed-out'); expect(KindeErrorCode.noCodeVerifier.code, 'no-code-verifier'); - expect(KindeErrorCode.noAuthRequestStateStored.code, - 'no-auth-request-state-stored'); - expect(KindeErrorCode.authRequestStateNotMatch.code, - 'auth-request-state-not-match'); + expect( + KindeErrorCode.noAuthRequestStateStored.code, + 'no-auth-request-state-stored', + ); + expect( + KindeErrorCode.authRequestStateNotMatch.code, + 'auth-request-state-not-match', + ); expect(KindeErrorCode.notRedirectUrl.code, 'not-redirect-url'); expect(KindeErrorCode.invalidRedirect.code, 'invalid-redirect'); expect(KindeErrorCode.unsupportedScheme.code, 'unsupported-scheme'); - expect(KindeErrorCode.portalLinkUrlIsNull.code, 'portal-link-url-is-null'); + expect( + KindeErrorCode.portalLinkUrlIsNull.code, + 'portal-link-url-is-null', + ); expect(KindeErrorCode.loginInProcess.code, 'login-in-process'); expect(KindeErrorCode.loginLinkExpired.code, 'login-link-expired'); expect(KindeErrorCode.unknown.code, 'unknown'); @@ -37,8 +52,10 @@ void main() { test('toString() should return the kebab-case code string', () { expect(KindeErrorCode.userCanceled.toString(), 'user-canceled'); - expect(KindeErrorCode.sessionExpiredOrInvalid.toString(), - 'session-expired-or-invalid'); + expect( + KindeErrorCode.sessionExpiredOrInvalid.toString(), + 'session-expired-or-invalid', + ); expect(KindeErrorCode.unknown.toString(), 'unknown'); }); @@ -69,23 +86,32 @@ void main() { for (final errorCode in KindeErrorCode.values) { final codeString = errorCode.code; final found = KindeErrorCode.fromString(codeString); - expect(found, errorCode, - reason: - 'Should find ${errorCode.code} correctly via fromString()'); + expect( + found, + errorCode, + reason: 'Should find ${errorCode.code} correctly via fromString()', + ); } }); test('should work with common error codes', () { - expect(KindeErrorCode.fromString('user-canceled'), - KindeErrorCode.userCanceled); - expect(KindeErrorCode.fromString('refresh-token-expired'), - KindeErrorCode.refreshTokenExpired); - expect(KindeErrorCode.fromString('session-expired-or-invalid'), - KindeErrorCode.sessionExpiredOrInvalid); - expect(KindeErrorCode.fromString('login-link-expired'), - KindeErrorCode.loginLinkExpired); expect( - KindeErrorCode.fromString('unknown'), KindeErrorCode.unknown); + KindeErrorCode.fromString('user-canceled'), + KindeErrorCode.userCanceled, + ); + expect( + KindeErrorCode.fromString('refresh-token-expired'), + KindeErrorCode.refreshTokenExpired, + ); + expect( + KindeErrorCode.fromString('session-expired-or-invalid'), + KindeErrorCode.sessionExpiredOrInvalid, + ); + expect( + KindeErrorCode.fromString('login-link-expired'), + KindeErrorCode.loginLinkExpired, + ); + expect(KindeErrorCode.fromString('unknown'), KindeErrorCode.unknown); }); }); @@ -122,13 +148,22 @@ void main() { // All error codes should use kebab-case (hyphen-separated, lowercase) // matching TypeScript, Python, and other Kinde SDKs for (final code in KindeErrorCode.values) { - expect(code.code, isNot(contains('_')), - reason: '${code.code} should not contain underscores'); - expect(code.code, isNot(matches(RegExp(r'[A-Z]'))), - reason: '${code.code} should not contain uppercase letters'); - expect(code.code, matches(RegExp(r'^[a-z0-9-]+$')), - reason: - '${code.code} should only contain lowercase letters, numbers, and hyphens'); + expect( + code.code, + isNot(contains('_')), + reason: '${code.code} should not contain underscores', + ); + expect( + code.code, + isNot(matches(RegExp(r'[A-Z]'))), + reason: '${code.code} should not contain uppercase letters', + ); + expect( + code.code, + matches(RegExp(r'^[a-z0-9-]+$')), + reason: + '${code.code} should only contain lowercase letters, numbers, and hyphens', + ); } }); @@ -136,16 +171,19 @@ void main() { // These error codes are expected to exist across multiple Kinde SDKs expect(KindeErrorCode.values.any((e) => e.code == 'unknown'), isTrue); expect( - KindeErrorCode.values.any((e) => e.code == 'user-canceled'), - isTrue); + KindeErrorCode.values.any((e) => e.code == 'user-canceled'), + isTrue, + ); expect( - KindeErrorCode.values - .any((e) => e.code == 'refresh-token-expired'), - isTrue); + KindeErrorCode.values.any((e) => e.code == 'refresh-token-expired'), + isTrue, + ); expect( - KindeErrorCode.values - .any((e) => e.code == 'session-expired-or-invalid'), - isTrue); + KindeErrorCode.values.any( + (e) => e.code == 'session-expired-or-invalid', + ), + isTrue, + ); }); test('error codes use simple string pattern', () { @@ -184,4 +222,3 @@ void main() { }); }); } - diff --git a/test/invitation_code_test.dart b/test/invitation_code_test.dart index 4e5657e..91d8213 100644 --- a/test/invitation_code_test.dart +++ b/test/invitation_code_test.dart @@ -44,30 +44,32 @@ void main() { group('BaseAdditionalParameters.toWebParams()', () { test('should include invitation_code in web params when provided', () { - const params = AdditionalParameters( - invitationCode: 'test-code-xyz', - ); + const params = AdditionalParameters(invitationCode: 'test-code-xyz'); final webParams = params.toWebParams(); expect(webParams['invitation_code'], 'test-code-xyz'); }); - test('should auto-derive is_invitation=true when invitation_code is present', () { - const params = AdditionalParameters( - invitationCode: 'test-code-xyz', - ); - final webParams = params.toWebParams(); + test( + 'should auto-derive is_invitation=true when invitation_code is present', + () { + const params = AdditionalParameters(invitationCode: 'test-code-xyz'); + final webParams = params.toWebParams(); - expect(webParams['is_invitation'], 'true'); - }); + expect(webParams['is_invitation'], 'true'); + }, + ); - test('should not include invitation params when invitationCode is null', () { - const params = AdditionalParameters(); - final webParams = params.toWebParams(); + test( + 'should not include invitation params when invitationCode is null', + () { + const params = AdditionalParameters(); + final webParams = params.toWebParams(); - expect(webParams.containsKey('invitation_code'), isFalse); - expect(webParams.containsKey('is_invitation'), isFalse); - }); + expect(webParams.containsKey('invitation_code'), isFalse); + expect(webParams.containsKey('is_invitation'), isFalse); + }, + ); test('should include both invitation params alongside other params', () { const params = AdditionalParameters( @@ -92,18 +94,21 @@ void main() { expect(params.invitationCode, 'internal-invite-code'); }); - test('should copy invitationCode from AdditionalParameters via factory', () { - const userParams = AdditionalParameters( - invitationCode: 'user-invite-code', - orgCode: 'org_456', - ); + test( + 'should copy invitationCode from AdditionalParameters via factory', + () { + const userParams = AdditionalParameters( + invitationCode: 'user-invite-code', + orgCode: 'org_456', + ); - final internalParams = - InternalAdditionalParameters.fromUserAdditionalParams(userParams); + final internalParams = + InternalAdditionalParameters.fromUserAdditionalParams(userParams); - expect(internalParams.invitationCode, 'user-invite-code'); - expect(internalParams.orgCode, 'org_456'); - }); + expect(internalParams.invitationCode, 'user-invite-code'); + expect(internalParams.orgCode, 'org_456'); + }, + ); test('should include invitation params in toWebParams()', () { final params = InternalAdditionalParameters( @@ -117,21 +122,24 @@ void main() { expect(webParams['audience'], 'https://api.example.com'); }); - test('should include invitation params in toAuthorizationRequestParams()', () { - final params = InternalAdditionalParameters( - invitationCode: 'auth-invite-code', - promptValues: ['create'], - scopes: ['openid', 'profile'], - ); - final authParams = params.toAuthorizationRequestParams(); - - // invitation params should be included - expect(authParams['invitation_code'], 'auth-invite-code'); - expect(authParams['is_invitation'], 'true'); - // scope and prompt should be removed (set via builder) - expect(authParams.containsKey('scope'), isFalse); - expect(authParams.containsKey('prompt'), isFalse); - }); + test( + 'should include invitation params in toAuthorizationRequestParams()', + () { + final params = InternalAdditionalParameters( + invitationCode: 'auth-invite-code', + promptValues: ['create'], + scopes: ['openid', 'profile'], + ); + final authParams = params.toAuthorizationRequestParams(); + + // invitation params should be included + expect(authParams['invitation_code'], 'auth-invite-code'); + expect(authParams['is_invitation'], 'true'); + // scope and prompt should be removed (set via builder) + expect(authParams.containsKey('scope'), isFalse); + expect(authParams.containsKey('prompt'), isFalse); + }, + ); }); group('Parameter Serialization', () { @@ -143,20 +151,25 @@ void main() { expect(Parameter.isInvitation.name, 'is_invitation'); }); - test('is_invitation is automatically set when invitationCode is present', () { - const params = AdditionalParameters(invitationCode: 'any-code'); - final webParams = params.toWebParams(); - expect(webParams['is_invitation'], 'true'); - }); + test( + 'is_invitation is automatically set when invitationCode is present', + () { + const params = AdditionalParameters(invitationCode: 'any-code'); + final webParams = params.toWebParams(); + expect(webParams['is_invitation'], 'true'); + }, + ); test('is_invitation is not set when invitationCode is absent', () { const paramsWithCode = AdditionalParameters(invitationCode: 'code'); const paramsWithoutCode = AdditionalParameters(); expect(paramsWithCode.toWebParams()['is_invitation'], 'true'); - expect(paramsWithoutCode.toWebParams().containsKey('is_invitation'), isFalse); + expect( + paramsWithoutCode.toWebParams().containsKey('is_invitation'), + isFalse, + ); }); }); }); } - diff --git a/test/kinde_flutter_sdk_test.dart b/test/kinde_flutter_sdk_test.dart index 141d2e5..51f6ffa 100644 --- a/test/kinde_flutter_sdk_test.dart +++ b/test/kinde_flutter_sdk_test.dart @@ -6,7 +6,6 @@ import 'mock_channels.dart'; import 'test_helpers/dio_adapter.dart'; void main() async { - TestWidgetsFlutterBinding.ensureInitialized(); mockChannels.setupMockChannel(); @@ -16,38 +15,35 @@ void main() async { group(KindeFlutterSDK, () { test('test initializeSDK', () async { await initializeKindeFlutterSdkForTest( - authDomain: "authDomain", - authClientId: "authClientId", - loginRedirectUri: "loginRedirectUri", - logoutRedirectUri: "logoutRedirectUri", - dio: mockDio); + authDomain: "authDomain", + authClientId: "authClientId", + loginRedirectUri: "loginRedirectUri", + logoutRedirectUri: "logoutRedirectUri", + dio: mockDio, + ); expect(() => KindeFlutterSDK.instance, returnsNormally); }); test('test sdk login', () async { - await KindeFlutterSDK.instance.login(); expect(KindeFlutterSDK.instance.authState, isNotNull); }); test('test sdk login pkce', () async { - await KindeFlutterSDK.instance.login(type: AuthFlowType.pkce); expect(KindeFlutterSDK.instance.authState, isNotNull); }); test('test sdk register', () async { - await KindeFlutterSDK.instance.register(type: AuthFlowType.pkce); expect(KindeFlutterSDK.instance.authState, isNotNull); }); test('test sdk register pkce', () async { - await KindeFlutterSDK.instance.register(type: AuthFlowType.pkce); expect(KindeFlutterSDK.instance.authState, isNotNull); @@ -59,9 +55,7 @@ void main() async { }); test('test create org', () async { - await KindeFlutterSDK.instance.createOrg(orgName: 'test'); - }); test('test create org pkce', () async { diff --git a/test/mock_channels.dart b/test/mock_channels.dart index 8e6f4c0..5743b20 100644 --- a/test/mock_channels.dart +++ b/test/mock_channels.dart @@ -6,7 +6,7 @@ var tokenResponseMap = { 'refreshToken': 'refreshToken', 'accessTokenExpirationTime': DateTime.now().millisecondsSinceEpoch, 'idToken': 'idToken', - 'scopes': ['openid', 'profile', 'email', 'offline'] + 'scopes': ['openid', 'profile', 'email', 'offline'], }; var authorizeResponse = { @@ -16,63 +16,68 @@ var authorizeResponse = { 'authorizationAdditionalParameters': {}, }; -var endSessionResponse = { - 'state': null, -}; +var endSessionResponse = {'state': null}; final mockChannels = MockChannels(); class MockChannels { setupMockChannel() { - const MethodChannel flutterSecureStorage = - MethodChannel('plugins.it_nomads.com/flutter_secure_storage'); + const MethodChannel flutterSecureStorage = MethodChannel( + 'plugins.it_nomads.com/flutter_secure_storage', + ); - const MethodChannel flutterAppauth = - MethodChannel('crossingthestreams.io/flutter_appauth'); + const MethodChannel flutterAppauth = MethodChannel( + 'crossingthestreams.io/flutter_appauth', + ); - const MethodChannel pathProvider = - MethodChannel('plugins.flutter.io/path_provider'); + const MethodChannel pathProvider = MethodChannel( + 'plugins.flutter.io/path_provider', + ); - const MethodChannel sharedPreferences = - MethodChannel('plugins.flutter.io/shared_preferences'); + const MethodChannel sharedPreferences = MethodChannel( + 'plugins.flutter.io/shared_preferences', + ); TestWidgetsFlutterBinding.instance.defaultBinaryMessenger - .setMockMethodCallHandler(sharedPreferences, - (MethodCall methodCall) async { - if (methodCall.method == 'getAll') { - return null; - } - return false; - }); + .setMockMethodCallHandler(sharedPreferences, ( + MethodCall methodCall, + ) async { + if (methodCall.method == 'getAll') { + return null; + } + return false; + }); TestWidgetsFlutterBinding.instance.defaultBinaryMessenger - .setMockMethodCallHandler(flutterSecureStorage, - (MethodCall methodCall) async { - if (methodCall.method == 'read') { - return null; - } - return false; - }); + .setMockMethodCallHandler(flutterSecureStorage, ( + MethodCall methodCall, + ) async { + if (methodCall.method == 'read') { + return null; + } + return false; + }); TestWidgetsFlutterBinding.instance.defaultBinaryMessenger .setMockMethodCallHandler(pathProvider, (MethodCall methodCall) async { - return './'; - }); + return './'; + }); TestWidgetsFlutterBinding.instance.defaultBinaryMessenger - .setMockMethodCallHandler(flutterAppauth, - (MethodCall methodCall) async { - if (methodCall.method == 'authorizeAndExchangeCode' || - methodCall.method == 'token') { - return tokenResponseMap; - } - if (methodCall.method == 'authorize') { - return authorizeResponse; - } - if (methodCall.method == 'endSession') { - return endSessionResponse; - } - return null; - }); + .setMockMethodCallHandler(flutterAppauth, ( + MethodCall methodCall, + ) async { + if (methodCall.method == 'authorizeAndExchangeCode' || + methodCall.method == 'token') { + return tokenResponseMap; + } + if (methodCall.method == 'authorize') { + return authorizeResponse; + } + if (methodCall.method == 'endSession') { + return endSessionResponse; + } + return null; + }); } } diff --git a/test/self_serve_portal_api_test.dart b/test/self_serve_portal_api_test.dart index 5bed0a7..02f3b91 100644 --- a/test/self_serve_portal_api_test.dart +++ b/test/self_serve_portal_api_test.dart @@ -9,9 +9,7 @@ void main() { Dio dioSuccess = DioAdapterMock(); final dioError = DioAdapterMockError(); - SelfServePortalApi getInstance({ - Dio? dioInstance, - }) { + SelfServePortalApi getInstance({Dio? dioInstance}) { return KindeApi(dio: dioInstance ?? dioSuccess).getSelfServePortalApi(); } @@ -22,19 +20,24 @@ void main() { }); test('test generatePortalUrl with subnav', () async { - final responseData = await getInstance().generatePortalUrl(subnav: 'subnav'); + final responseData = await getInstance().generatePortalUrl( + subnav: 'subnav', + ); expect(responseData, isNotNull); }); test('test generatePortalUrl with returnUrl', () async { - final responseData = - await getInstance().generatePortalUrl(returnUrl: 'returnUrl'); + final responseData = await getInstance().generatePortalUrl( + returnUrl: 'returnUrl', + ); expect(responseData, isNotNull); }); test('test generatePortalUrl with subnav and returnUrl', () async { - final responseData = await getInstance() - .generatePortalUrl(subnav: 'subnav', returnUrl: 'returnUrl'); + final responseData = await getInstance().generatePortalUrl( + subnav: 'subnav', + returnUrl: 'returnUrl', + ); expect(responseData, isNotNull); }); @@ -45,8 +48,10 @@ void main() { test('test generatePortalUrl in error case throws DioException', () async { expect( - () async => await getInstance(dioInstance: dioError).generatePortalUrl(), - throwsA(isA())); + () async => + await getInstance(dioInstance: dioError).generatePortalUrl(), + throwsA(isA()), + ); }); }); } diff --git a/test/src/auth/kinde_end_session_request_test.dart b/test/src/auth/kinde_end_session_request_test.dart index bd9ad4d..5e70288 100644 --- a/test/src/auth/kinde_end_session_request_test.dart +++ b/test/src/auth/kinde_end_session_request_test.dart @@ -93,4 +93,4 @@ void main() { }); }); }); -} \ No newline at end of file +} diff --git a/test/test_helpers/dio_adapter.dart b/test/test_helpers/dio_adapter.dart index c3e243f..043b4a1 100644 --- a/test/test_helpers/dio_adapter.dart +++ b/test/test_helpers/dio_adapter.dart @@ -17,9 +17,9 @@ Dio setupDioMock() { "kid": "9e: ea: ac: 9a: 8c: 7c: d4: 6c: d3: 6c: 8d: f6: 6c: 8b: c5: 68", "kty": "RSA", - "use": "sig" - } - ] + "use": "sig", + }, + ], }), ); diff --git a/test/test_helpers/dio_mock.dart b/test/test_helpers/dio_mock.dart index 2b48efa..32331bd 100644 --- a/test/test_helpers/dio_mock.dart +++ b/test/test_helpers/dio_mock.dart @@ -36,11 +36,13 @@ class DioAdapterMockError extends Mock implements Dio { ProgressCallback? onReceiveProgress, }) { throw DioException.badResponse( + requestOptions: RequestOptions(path: 'path'), + response: Response( + data: {"message": "error", "code": "400"}, requestOptions: RequestOptions(path: 'path'), - response: Response( - data: {"message": "error", "code": "400"}, - requestOptions: RequestOptions(path: 'path')), - statusCode: 400); + ), + statusCode: 400, + ); } @override