Add optional KYC flow and service-backed account limits
This commit is contained in:
1 parent
61ccfc1844
commit
3397f04ab7
38 files changed
+3443
-36
No files matched your search
@@ -2,11 +2,22 @@ import 'dart:async';
|
||||
import 'dart:collection';
|
||||
import 'dart:math';
|
||||
|
||||
enum JourneyKind { login, signup, verification }
|
||||
enum JourneyKind { login, signup, verification, kyc }
|
||||
|
||||
enum JourneyStep { login, signup, emailDelivery, emailConfirmation }
|
||||
enum JourneyStep {
|
||||
login,
|
||||
signup,
|
||||
emailDelivery,
|
||||
emailConfirmation,
|
||||
kycPreparation,
|
||||
kycPassport,
|
||||
kycSelfie,
|
||||
kycSubmission,
|
||||
kycStatus,
|
||||
}
|
||||
|
||||
enum JourneySignal {
|
||||
cancelled,
|
||||
started,
|
||||
requested,
|
||||
succeeded,
|
||||
@@ -16,6 +27,7 @@ enum JourneySignal {
|
||||
}
|
||||
|
||||
enum JourneyFailure {
|
||||
document,
|
||||
invalidCredentials,
|
||||
emailInUse,
|
||||
unavailable,
|
||||
@@ -66,8 +78,13 @@ class AnalyticsEvent {
|
||||
final bool terminal;
|
||||
final bool simulated;
|
||||
final DateTime occurredAt;
|
||||
String get name =>
|
||||
'auth_${step == null ? 'journey' : _snake(step!.name)}_${signal.name}';
|
||||
String get name {
|
||||
final area = kind == JourneyKind.kyc ? 'kyc' : 'auth';
|
||||
var stage = step == null ? 'journey' : _snake(step!.name);
|
||||
if (kind == JourneyKind.kyc) stage = stage.replaceFirst('kyc_', '');
|
||||
return '${area}_${stage}_${signal.name}';
|
||||
}
|
||||
|
||||
Map<String, Object> get properties => Map.unmodifiable({
|
||||
'schema_version': 1,
|
||||
'event_id': eventId,
|
||||
@@ -165,16 +182,19 @@ class JourneyRecorder {
|
||||
bool simulated = false,
|
||||
JourneyFailure? failure,
|
||||
bool terminal = false,
|
||||
bool cancelled = false,
|
||||
}) {
|
||||
final journey = operation._journey;
|
||||
if (_disposed || operation._finished || journey.closed) return;
|
||||
operation._finished = true;
|
||||
journey.pending--;
|
||||
journey.simulated |= simulated;
|
||||
final complete = failure == null && terminal;
|
||||
final complete = failure == null && !cancelled && terminal;
|
||||
_emit(
|
||||
journey,
|
||||
failure != null
|
||||
cancelled
|
||||
? JourneySignal.cancelled
|
||||
: failure != null
|
||||
? JourneySignal.failed
|
||||
: (simulated || (complete && journey.simulated))
|
||||
? JourneySignal.simulated
|
||||
|
||||
Reference in new issue
Block a user