Skip to content

Commit 9c4c5aa

Browse files
authored
Merge branch 'main' into scroll-notifier
2 parents b178efe + f4c8497 commit 9c4c5aa

File tree

5 files changed

+48
-2
lines changed

5 files changed

+48
-2
lines changed

lib/framework/action.dart

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import 'package:ensemble/framework/widget/view_util.dart';
2727
import 'package:ensemble/receive_intent_manager.dart';
2828
import 'package:ensemble/screen_controller.dart';
2929
import 'package:ensemble/util/utils.dart';
30+
import 'package:ensemble/widget/stub_widgets.dart';
3031
import 'package:ensemble_ts_interpreter/invokables/invokable.dart';
3132
import 'package:flutter/material.dart';
3233
import 'package:source_span/source_span.dart';
@@ -980,6 +981,25 @@ class SaveKeychain extends EnsembleAction {
980981
}
981982
}
982983

984+
class SignInAnonymousAction extends EnsembleAction {
985+
final EnsembleAction? onAuthenticated;
986+
final EnsembleAction? onError;
987+
988+
SignInAnonymousAction({
989+
super.initiator,
990+
super.inputs,
991+
required this.onAuthenticated,
992+
required this.onError,
993+
});
994+
995+
factory SignInAnonymousAction.fromYaml({Map? payload}) {
996+
return SignInAnonymousAction(
997+
onAuthenticated: EnsembleAction.fromYaml(payload?['onAuthenticated']),
998+
onError: EnsembleAction.fromYaml(payload?['onError']),
999+
);
1000+
}
1001+
}
1002+
9831003
class ClearKeychain extends EnsembleAction {
9841004
ClearKeychain({
9851005
required this.key,
@@ -1083,6 +1103,8 @@ enum ActionType {
10831103
callNativeMethod,
10841104
deeplinkInit,
10851105
authenticateByBiometric,
1106+
setLanguage,
1107+
signInAnonymous,
10861108
handleDeeplink,
10871109
createDeeplink,
10881110
verifySignIn,
@@ -1193,6 +1215,8 @@ abstract class EnsembleAction {
11931215
return FilePickerAction.fromYaml(payload: payload);
11941216
} else if (actionType == ActionType.uploadFiles) {
11951217
return FileUploadAction.fromYaml(payload: payload);
1218+
} else if (actionType == ActionType.signInAnonymous) {
1219+
return SignInAnonymousAction.fromYaml(payload: payload);
11961220
} else if (actionType == ActionType.pickFiles) {
11971221
return FilePickerAction.fromYaml(payload: payload);
11981222
} else if (actionType == ActionType.openUrl) {

lib/framework/stub/auth_context_manager.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ class AuthenticatedUser with Invokable {
3737
this.emailLVerified,
3838
this.tenantId,
3939
this.creationTime,
40-
this.lastSignInTime});
40+
this.lastSignInTime,
41+
this.isAnonymous = false});
4142

4243
final SignInClient? client;
4344
SignInProvider? provider;
@@ -55,6 +56,8 @@ class AuthenticatedUser with Invokable {
5556
DateTime? creationTime;
5657
DateTime? lastSignInTime;
5758

59+
bool isAnonymous;
60+
5861
// optional server credentials (bearer token, cookies, ....) associated with this user account
5962
// TODO: move to secure storage
6063
Map? data;

lib/module/auth_module.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class AuthModuleStub implements AuthModule {
1616
GetIt.I.registerFactory<SignInWithAuth0>(() => const SignInWithAuth0Stub());
1717
GetIt.I.registerSingleton<TokenManager>(TokenManagerStub());
1818
GetIt.I.registerFactory<OAuthController>(() => OAuthControllerStub());
19-
19+
GetIt.I.registerFactory<SignInAnonymous>(() => SignInAnonymousStub());
2020
// note that we don't inject AuthContextManagerStub(), since its presence
2121
// will prevent data_context to load
2222
}

lib/screen_controller.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import 'package:ensemble/layout/ensemble_page_route.dart';
3434
import 'package:ensemble/page_model.dart';
3535
import 'package:ensemble/util/notification_utils.dart';
3636
import 'package:ensemble/util/utils.dart';
37+
import 'package:ensemble/widget/stub_widgets.dart';
3738
import 'package:ensemble_ts_interpreter/invokables/context.dart';
3839
import 'package:ensemble_ts_interpreter/parser/newjs_interpreter.dart';
3940
import 'package:flutter/foundation.dart';
@@ -465,6 +466,8 @@ class ScreenController {
465466
scopeManager: scopeManager);
466467
} else if (action is FilePickerAction) {
467468
GetIt.I<FileManager>().pickFiles(context, action, scopeManager);
469+
} else if (action is SignInAnonymousAction) {
470+
GetIt.I<SignInAnonymous>().signInAnonymously(context, action: action);
468471
} else if (action is WalletConnectAction) {
469472
// TODO store session: WalletConnectSession? session = await sessionStorage.getSession();
470473

lib/widget/stub_widgets.dart

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1+
import 'package:ensemble/framework/action.dart';
12
import 'package:ensemble/framework/error_handling.dart';
3+
import 'package:ensemble/framework/scope.dart';
24
import 'package:flutter/cupertino.dart';
35

46
class StubWidget extends StatelessWidget {
@@ -52,3 +54,17 @@ abstract class SignInWithAuth0 {
5254
class SignInWithAuth0Stub extends StubWidget implements SignInWithAuth0 {
5355
const SignInWithAuth0Stub({super.key}) : super(moduleName: 'Auth');
5456
}
57+
58+
abstract class SignInAnonymous {
59+
Future<void> signInAnonymously(BuildContext context,
60+
{required SignInAnonymousAction action});
61+
}
62+
63+
class SignInAnonymousStub implements SignInAnonymous {
64+
@override
65+
Future<void> signInAnonymously(BuildContext context,
66+
{required SignInAnonymousAction action}) {
67+
throw ConfigError(
68+
"Auth is not enabled. Please review the Ensemble documentation.");
69+
}
70+
}

0 commit comments

Comments
 (0)