Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions packages/corbado_api_client/lib/corbado_api_client.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,5 @@ import 'package:openapi_generator_annotations/openapi_generator_annotations.dart
generatorName: Generator.dio,
outputDirectory: './lib/frontendapi',
)

/// Represents the Corbado API client
class CorbadoApiClient {}
class CorbadoApiClient {}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
//

import 'dart:convert';
import 'dart:io';

import 'package:dio/dio.dart';
import 'package:built_value/serializer.dart';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,13 @@
//

// ignore_for_file: unused_element
import 'package:corbado_frontend_api_client/src/model/social_data.dart';
import 'package:corbado_frontend_api_client/src/model/general_block_login_init.dart';
import 'package:corbado_frontend_api_client/src/model/general_block_verify_identifier_alternative_verification_methods_inner.dart';
import 'package:corbado_frontend_api_client/src/model/full_name_with_error.dart';
import 'package:corbado_frontend_api_client/src/model/general_block_passkey_append.dart';
import 'package:corbado_frontend_api_client/src/model/login_identifier_with_error.dart';
import 'package:corbado_frontend_api_client/src/model/passkey_icon_set.dart';
import 'package:corbado_frontend_api_client/src/model/verification_method.dart';
import 'package:corbado_frontend_api_client/src/model/passkey_operation.dart';
import 'package:corbado_frontend_api_client/src/model/general_block_completed.dart';
import 'package:corbado_frontend_api_client/src/model/general_block_verify_identifier.dart';
import 'package:corbado_frontend_api_client/src/model/general_block_passkey_appended.dart';
import 'package:corbado_frontend_api_client/src/model/general_block_signup_init.dart';
import 'package:built_collection/built_collection.dart';
import 'package:corbado_frontend_api_client/src/model/request_error.dart';
import 'package:corbado_frontend_api_client/src/model/login_identifier_type.dart';
import 'package:corbado_frontend_api_client/src/model/general_block_passkey_verify.dart';
import 'package:corbado_frontend_api_client/src/model/general_block_post_signup_email_verify.dart';
import 'package:built_value/built_value.dart';
Expand Down Expand Up @@ -156,10 +147,7 @@ class _$BlockBodyDataSerializer implements PrimitiveSerializer<BlockBodyData> {
final String wireName = r'BlockBodyData';

Iterable<Object?> _serializeProperties(
Serializers serializers,
BlockBodyData object, {
FullType specifiedType = FullType.unspecified,
}) sync* {}
Serializers serializers, BlockBodyData object) sync* {}

@override
Object serialize(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,13 @@ part 'process_common.g.dart';
/// ProcessCommon
///
/// Properties:
/// * [appName]
/// * [frontendApiUrl]
/// * [hideBadge]
/// * [environment]
/// * [appName]
/// * [frontendApiUrl]
/// * [hideBadge]
/// * [environment]
@BuiltValue()
abstract class ProcessCommon implements Built<ProcessCommon, ProcessCommonBuilder> {
abstract class ProcessCommon
implements Built<ProcessCommon, ProcessCommonBuilder> {
@BuiltValueField(wireName: r'appName')
String get appName;

Expand All @@ -31,13 +32,15 @@ abstract class ProcessCommon implements Built<ProcessCommon, ProcessCommonBuilde

ProcessCommon._();

factory ProcessCommon([void updates(ProcessCommonBuilder b)]) = _$ProcessCommon;
factory ProcessCommon([void updates(ProcessCommonBuilder b)]) =
_$ProcessCommon;

@BuiltValueHook(initializeBuilder: true)
static void _defaults(ProcessCommonBuilder b) => b;

@BuiltValueSerializer(custom: true)
static Serializer<ProcessCommon> get serializer => _$ProcessCommonSerializer();
static Serializer<ProcessCommon> get serializer =>
_$ProcessCommonSerializer();
}

class _$ProcessCommonSerializer implements PrimitiveSerializer<ProcessCommon> {
Expand Down Expand Up @@ -80,7 +83,9 @@ class _$ProcessCommonSerializer implements PrimitiveSerializer<ProcessCommon> {
ProcessCommon object, {
FullType specifiedType = FullType.unspecified,
}) {
return _serializeProperties(serializers, object, specifiedType: specifiedType).toList();
return _serializeProperties(serializers, object,
specifiedType: specifiedType)
.toList();
}

void _deserializeProperties(
Expand Down Expand Up @@ -151,4 +156,3 @@ class _$ProcessCommonSerializer implements PrimitiveSerializer<ProcessCommon> {
return result.build();
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
export 'src/corbado_telemetry_api_client.dart';
export 'src/types/types.dart';
export 'src/types/types.dart';
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
// ignore_for_file: avoid_print
import 'package:http/http.dart' as http;

import 'types/types.dart';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
// ignore_for_file: constant_identifier_names
enum TelemetryEventType {
EXAMPLE_APPLICATION_OPENED,
PACKAGE_METADATA,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ class TelemetryEventRequest {
'type': type.toString(),
};

if (payload != null) map['payload'] = jsonEncode(payload);
if (payload != null) map['payload'] = jsonEncode(payload);
if (sdkVersion != null) map['sdk_version'] = sdkVersion;
if (sdkName != null) map['sdk'] = sdkName;
if (sdkName != null) map['sdk'] = sdkName;

return map;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
export 'event.dart';
export 'request.dart';
export 'request.dart';
7 changes: 7 additions & 0 deletions packages/corbado_auth/analysis_options.yaml
Original file line number Diff line number Diff line change
@@ -1 +1,8 @@
include: package:very_good_analysis/analysis_options.5.0.0.yaml

analyzer:
exclude:
- "**/*.g.dart"

formatter:
trailing_commas: preserve
27 changes: 15 additions & 12 deletions packages/corbado_auth/example/integration_test/signup_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import 'package:corbado_auth_example/auth_provider.dart';
import 'package:corbado_auth_example/main.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
// ignore: depend_on_referenced_packages
import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';

Expand All @@ -12,33 +13,35 @@ void main() {
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
final corbadoAuth = CorbadoAuth();
await corbadoAuth.init(
projectId: "pro-4268394291597054564",
customDomain: "https://pro-4268394291597054564.frontendapi.cloud.corbado.io");
projectId: 'pro-4268394291597054564',
// ignore: deprecated_member_use
customDomain:
'https://pro-4268394291597054564.frontendapi.cloud.corbado.io',
);

await tester.pumpWidget(
ProviderScope(
overrides: [
corbadoProvider.overrideWithValue(corbadoAuth),
],
child: const MyApp(),
));
ProviderScope(
overrides: [corbadoProvider.overrideWithValue(corbadoAuth)],
child: const MyApp(),
),
);

await tester.pumpAndSettle();

await Future.delayed(Duration(seconds: 3));
await Future<void>.delayed(const Duration(seconds: 3));
expect(find.text('Sign up'), findsOneWidget);

final textField = find.byKey(ValueKey('textfield-email'));
final textField = find.byKey(const ValueKey('textfield-email'));
await tester.enterText(textField, 'martin+21s4@corbado.com');

// Tap the '+' icon and trigger a frame.
await tester.tap(find.text('Sign up'));
await tester.pumpAndSettle();

await Future.delayed(Duration(seconds: 1));
await Future<void>.delayed(const Duration(seconds: 1));

await tester.tap(find.text('Continue'));

await Future.delayed(Duration(seconds: 5));
await Future<void>.delayed(const Duration(seconds: 5));
});
}
13 changes: 7 additions & 6 deletions packages/corbado_auth/example/lib/auth_provider.dart
Original file line number Diff line number Diff line change
@@ -1,28 +1,29 @@
import 'package:corbado_auth/corbado_auth.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';

// Corbado SDK provider. This will be used by other providers to
// e.g. expose user state.
/// Corbado SDK provider. This will be used by other providers to
/// e.g. expose user state.
final corbadoProvider = Provider<CorbadoAuth>(
(ref) => throw UnimplementedError("no instance of corbadoAuth"));
(ref) => throw UnimplementedError('no instance of corbadoAuth'),
);

// Make the user available throughout the app.
/// Makes the current user available throughout the app.
final userProvider = StreamProvider<User?>((ref) async* {
final corbado = ref.watch(corbadoProvider);
await for (final value in corbado.userChanges) {
yield value;
}
});

// Make the auth state available throughout the app.
/// Makes the authentication state available throughout the app.
final authStateProvider = StreamProvider((ref) async* {
final corbado = ref.watch(corbadoProvider);
await for (final value in corbado.authStateChanges) {
yield value;
}
});

// Make the passkeys available throughout the app.
/// Makes the user's passkeys available throughout the app.
final passkeysProvider = StreamProvider<List<PasskeyInfo>>((ref) async* {
final corbado = ref.watch(corbadoProvider);
await for (final value in corbado.passkeysChanges) {
Expand Down
50 changes: 27 additions & 23 deletions packages/corbado_auth/example/lib/main.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
// ignore_for_file: constant_identifier_names

import 'dart:async';

import 'package:corbado_auth/corbado_auth.dart';
Expand All @@ -10,7 +12,10 @@ import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:overlay_support/overlay_support.dart';

// In your own project you should get this from an ENV variable or from a Flutter flavour.
/// Returns the Corbado project ID to use for the current platform.
///
/// In your own project you should get this from an ENV variable or from a
/// Flutter flavour.
String calculateProjectID() {
if (kIsWeb) {
return 'pro-8751299119685489253';
Expand All @@ -19,8 +24,11 @@ String calculateProjectID() {
}
}

/// Fallback project ID value used when no environment value is provided.
const String DEFAULT_VALUE = 'none';

/// The Corbado project ID provided via the `CORBADO_PROJECT_ID` environment
/// variable, or [DEFAULT_VALUE] if it was not set.
const String envProjectId = String.fromEnvironment(
'CORBADO_PROJECT_ID',
defaultValue: DEFAULT_VALUE,
Expand All @@ -36,36 +44,34 @@ void main() async {
runApp(const LoadingPage());

// Now we do the initialization.
final projectId =
envProjectId == 'none' ? calculateProjectID() : envProjectId;
final projectId = envProjectId == 'none'
? calculateProjectID()
: envProjectId;

final corbadoAuth = CorbadoAuth();
await corbadoAuth.init(
projectId: projectId,
debugMode: true,
);
await corbadoAuth.init(projectId: projectId, debugMode: true);

// Telemetry is used to help us understand how the example is used.
unawaited(CorbadoTelemetryApiClient(
projectId: projectId,
).sendEvent(
type: TelemetryEventType.EXAMPLE_APPLICATION_OPENED,
payload: {
'exampleName': 'corbado/flutter-passkeys/corbado_auth_example',
},
));
unawaited(
CorbadoTelemetryApiClient(projectId: projectId).sendEvent(
type: TelemetryEventType.EXAMPLE_APPLICATION_OPENED,
payload: {'exampleName': 'corbado/flutter-passkeys/corbado_auth_example'},
),
);

// Finally we override the providers that needed initialization.
// Now the real app can be loaded.
runApp(ProviderScope(
overrides: [
corbadoProvider.overrideWithValue(corbadoAuth),
],
child: const MyApp(),
));
runApp(
ProviderScope(
overrides: [corbadoProvider.overrideWithValue(corbadoAuth)],
child: const MyApp(),
),
);
}

/// Root widget of the example application.
class MyApp extends ConsumerWidget {
/// Creates the root widget of the example application.
const MyApp({super.key});

@override
Expand All @@ -87,8 +93,6 @@ class MyApp extends ConsumerWidget {
onSecondary: Color(0xFF1953ff),
error: Colors.redAccent,
onError: Colors.white,
background: Color(0xFF1953ff),
onBackground: Colors.white,
surface: Color(0xFF1953ff),
onSurface: Color(0xFF1953ff),
),
Expand Down
4 changes: 3 additions & 1 deletion packages/corbado_auth/example/lib/pages/auth_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@ import 'package:corbado_auth_example/screens/signup_init.dart';
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';

/// Page that hosts the Corbado sign up and login flow.
class AuthPage extends HookConsumerWidget {
AuthPage({super.key}) {}
/// Creates the authentication page.
const AuthPage({super.key});

@override
Widget build(BuildContext context, WidgetRef ref) {
Expand Down
Loading
Loading