Skip to content

Commit 9f438ab

Browse files
authored
fix: refactor status to extendible class [#114] (#133)
* fix: refactor status to extendible class [#114] * fix: add in missing catch all clause in switch [#114]
1 parent 16e1c67 commit 9f438ab

25 files changed

+172
-208
lines changed

packages/clerk_auth/lib/src/models/client/field.dart

+9-10
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,29 @@
1+
import 'package:json_annotation/json_annotation.dart';
12
import 'package:meta/meta.dart';
23

34
/// Pseudo-enum representing fields
45
///
56
@immutable
7+
@JsonSerializable()
68
class Field {
7-
const Field._({required this.name});
9+
const Field._(this.name);
810

911
/// Create a [Field]
1012
factory Field({required String name}) {
11-
return _values[name] ??= Field._(name: name);
13+
return _values[name] ??= Field._(name);
1214
}
1315

14-
/// For a given [name] return the [Field] it identifies.
15-
/// Create one if necessary and possible
16-
///
17-
static Field? named(dynamic name) =>
18-
name is String ? Field(name: name) : null;
16+
/// fromJson factory for JsonSerializable
17+
factory Field.fromJson(String name) => Field(name: name);
1918

2019
/// phone number
21-
static const phoneNumber = Field._(name: 'phone_number');
20+
static const phoneNumber = Field._('phone_number');
2221

2322
/// email address
24-
static const emailAddress = Field._(name: 'email_address');
23+
static const emailAddress = Field._('email_address');
2524

2625
/// username
27-
static const username = Field._(name: 'username');
26+
static const username = Field._('username');
2827

2928
static final _values = <String, Field>{
3029
phoneNumber.name: phoneNumber,

packages/clerk_auth/lib/src/models/client/session.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'package:clerk_auth/src/models/client/session_token.dart';
22
import 'package:clerk_auth/src/models/client/user.dart';
33
import 'package:clerk_auth/src/models/client/user_public.dart';
4-
import 'package:clerk_auth/src/models/enums.dart';
4+
import 'package:clerk_auth/src/models/status.dart';
55
import 'package:clerk_auth/src/utils/json_serialization_helpers.dart';
66
import 'package:json_annotation/json_annotation.dart';
77
import 'package:meta/meta.dart';

packages/clerk_auth/lib/src/models/client/session.g.dart

+2-17
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/clerk_auth/lib/src/models/client/sign_in.dart

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import 'package:clerk_auth/src/models/client/strategy.dart';
44
import 'package:clerk_auth/src/models/client/user_public.dart';
55
import 'package:clerk_auth/src/models/client/verification.dart';
66
import 'package:clerk_auth/src/models/enums.dart';
7+
import 'package:clerk_auth/src/models/status.dart';
78
import 'package:clerk_auth/src/utils/json_serialization_helpers.dart';
89
import 'package:json_annotation/json_annotation.dart';
910
import 'package:meta/meta.dart';

packages/clerk_auth/lib/src/models/client/sign_in.g.dart

+2-17
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/clerk_auth/lib/src/models/client/sign_up.dart

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import 'package:clerk_auth/src/models/client/field.dart';
22
import 'package:clerk_auth/src/models/client/verification.dart';
3-
import 'package:clerk_auth/src/models/enums.dart';
3+
import 'package:clerk_auth/src/models/status.dart';
44
import 'package:clerk_auth/src/utils/json_serialization_helpers.dart';
55
import 'package:json_annotation/json_annotation.dart';
66
import 'package:meta/meta.dart';
@@ -43,19 +43,15 @@ class SignUp {
4343
final Status status;
4444

4545
/// required fields
46-
@JsonKey(fromJson: toFieldList)
4746
final List<Field> requiredFields;
4847

4948
/// optional fields
50-
@JsonKey(fromJson: toFieldList)
5149
final List<Field> optionalFields;
5250

5351
/// missing fields
54-
@JsonKey(fromJson: toFieldList)
5552
final List<Field> missingFields;
5653

5754
/// unverified fields
58-
@JsonKey(fromJson: toFieldList)
5955
final List<Field> unverifiedFields;
6056

6157
/// username

packages/clerk_auth/lib/src/models/client/sign_up.g.dart

+14-21
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/clerk_auth/lib/src/models/client/strategy.dart

+2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import 'package:clerk_auth/src/clerk_auth/auth_error.dart';
2+
import 'package:json_annotation/json_annotation.dart';
23
import 'package:meta/meta.dart';
34

45
/// [Strategy] Clerk object
@@ -7,6 +8,7 @@ import 'package:meta/meta.dart';
78
/// 'oauth_token' and 'oauth_custom') also have a [provider]
89
///
910
@immutable
11+
@JsonSerializable()
1012
class Strategy {
1113
/// Constructor for [Strategy]
1214
const Strategy({required this.name, this.provider});

packages/clerk_auth/lib/src/models/client/user_identifying_data.dart

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'package:clerk_auth/src/models/client/verification.dart';
22
import 'package:clerk_auth/src/models/enums.dart';
3+
import 'package:clerk_auth/src/models/status.dart';
34

45
export 'package:clerk_auth/src/models/client/verification.dart';
56

packages/clerk_auth/lib/src/models/client/verification.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import 'package:clerk_auth/src/models/client/strategy.dart';
2-
import 'package:clerk_auth/src/models/enums.dart';
2+
import 'package:clerk_auth/src/models/status.dart';
33
import 'package:clerk_auth/src/utils/json_serialization_helpers.dart';
44
import 'package:json_annotation/json_annotation.dart';
55
import 'package:meta/meta.dart';

packages/clerk_auth/lib/src/models/client/verification.g.dart

+2-17
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/clerk_auth/lib/src/models/enums.dart

+1-55
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import 'package:clerk_auth/src/clerk_auth/auth_error.dart';
22
import 'package:clerk_auth/src/models/client/field.dart';
33
import 'package:clerk_auth/src/models/client/strategy.dart';
4+
import 'package:clerk_auth/src/models/status.dart';
45
import 'package:collection/collection.dart';
56
import 'package:json_annotation/json_annotation.dart';
67

@@ -26,61 +27,6 @@ enum EnrollmentMode {
2627
String toString() => _$EnrollmentModeEnumMap[this]!;
2728
}
2829

29-
/// [Status] Clerk object
30-
@JsonEnum(fieldRename: FieldRename.snake, alwaysCreate: true)
31-
enum Status {
32-
/// abandoned
33-
abandoned,
34-
35-
/// active
36-
active,
37-
38-
/// missing requirements
39-
missingRequirements,
40-
41-
/// needs identifier
42-
needsIdentifier,
43-
44-
/// needs first factor
45-
needsFirstFactor,
46-
47-
/// needs second factor
48-
needsSecondFactor,
49-
50-
/// transferable
51-
transferable,
52-
53-
/// unverified
54-
unverified,
55-
56-
/// verified
57-
verified,
58-
59-
/// complete
60-
complete,
61-
62-
/// expired
63-
expired,
64-
65-
/// failed
66-
failed;
67-
68-
/// is active?
69-
bool get isActive => this == active;
70-
71-
/// is verified?
72-
bool get isVerified => this == verified;
73-
74-
/// is expired?
75-
bool get isExpired => this == expired;
76-
77-
/// needs factor?
78-
bool get needsFactor => this == needsFirstFactor || this == needsSecondFactor;
79-
80-
@override
81-
String toString() => _$StatusEnumMap[this]!;
82-
}
83-
8430
/// [IdentificationStrategy] Clerk object
8531
@JsonEnum(fieldRename: FieldRename.snake, alwaysCreate: true)
8632
enum IdentificationStrategy {

packages/clerk_auth/lib/src/models/enums.g.dart

-15
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/clerk_auth/lib/src/models/environment/auth_config.dart

-4
Original file line numberDiff line numberDiff line change
@@ -48,19 +48,15 @@ class AuthConfig {
4848
final bool urlBasedSessionSyncing;
4949

5050
/// identification strategies
51-
@JsonKey(fromJson: toStrategyList)
5251
final List<Strategy> identificationStrategies;
5352

5453
/// first factors
55-
@JsonKey(fromJson: toStrategyList)
5654
final List<Strategy> firstFactors;
5755

5856
/// second factors
59-
@JsonKey(fromJson: toStrategyList)
6057
final List<Strategy> secondFactors;
6158

6259
/// email address verification strategy
63-
@JsonKey(fromJson: toStrategyList)
6460
final List<Strategy> emailAddressVerificationStrategies;
6561

6662
/// allows first name?

0 commit comments

Comments
 (0)