@umituz/react-native-firebase 2.6.3 → 2.6.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/package.json +1 -1
  2. package/src/application/auth/index.ts +2 -34
  3. package/src/application/auth/use-cases/index.ts +1 -21
  4. package/src/domains/account-deletion/domain/index.ts +1 -8
  5. package/src/domains/account-deletion/index.ts +0 -42
  6. package/src/domains/account-deletion/infrastructure/services/AccountDeletionExecutor.ts +79 -0
  7. package/src/domains/account-deletion/infrastructure/services/AccountDeletionTypes.ts +0 -1
  8. package/src/domains/account-deletion/infrastructure/services/account-deletion.service.ts +2 -14
  9. package/src/domains/auth/index.ts +3 -12
  10. package/src/domains/auth/infrastructure/config/FirebaseAuthClient.ts +48 -60
  11. package/src/domains/auth/infrastructure/config/index.ts +2 -0
  12. package/src/domains/auth/infrastructure/config/initializers/index.ts +1 -0
  13. package/src/domains/auth/infrastructure/services/index.ts +16 -0
  14. package/src/domains/auth/infrastructure/services/utils/index.ts +1 -0
  15. package/src/domains/auth/infrastructure/stores/index.ts +1 -0
  16. package/src/domains/auth/infrastructure/utils/index.ts +1 -0
  17. package/src/domains/auth/infrastructure.ts +11 -0
  18. package/src/domains/auth/presentation/hooks/useGoogleOAuth.ts +18 -59
  19. package/src/domains/firestore/domain/entities/Collection.ts +0 -2
  20. package/src/domains/firestore/domain/index.ts +6 -2
  21. package/src/domains/firestore/domain/value-objects/WhereClause.ts +0 -14
  22. package/src/domains/firestore/index.ts +0 -1
  23. package/src/domains/firestore/infrastructure/config/FirestoreClient.ts +42 -60
  24. package/src/domains/firestore/presentation/hooks/useFirestoreMutation.ts +1 -1
  25. package/src/domains/firestore/presentation/hooks/useFirestoreQuery.ts +1 -1
  26. package/src/shared/infrastructure/base/ErrorHandler.ts +81 -0
  27. package/src/shared/infrastructure/base/ServiceBase.ts +62 -0
  28. package/src/shared/infrastructure/config/base/ServiceClientSingleton.ts +39 -0
  29. package/src/application/auth/ports/AuthPort.ts.bak +0 -164
  30. package/src/application/auth/ports/AuthPort_part_aa +0 -150
  31. package/src/application/auth/ports/AuthPort_part_ab +0 -14
  32. package/src/application/auth/use-cases/SignInUseCase.ts.bak +0 -253
  33. package/src/application/auth/use-cases/SignInUseCaseHelpers.ts +0 -0
  34. package/src/application/auth/use-cases/SignInUseCaseMain.ts +0 -0
  35. package/src/application/auth/use-cases/SignInUseCase_part_aa +0 -150
  36. package/src/application/auth/use-cases/SignInUseCase_part_ab +0 -103
  37. package/src/application/auth/use-cases/SignOutUseCase.ts.bak +0 -288
  38. package/src/application/auth/use-cases/SignOutUseCaseCleanup.ts +0 -0
  39. package/src/application/auth/use-cases/SignOutUseCaseMain.ts +0 -0
  40. package/src/application/auth/use-cases/SignOutUseCase_part_aa +0 -150
  41. package/src/application/auth/use-cases/SignOutUseCase_part_ab +0 -138
  42. package/src/domains/account-deletion/domain/services/UserValidationHelpers.ts.bak +0 -181
  43. package/src/domains/account-deletion/domain/services/UserValidationHelpers_part_aa +0 -150
  44. package/src/domains/account-deletion/domain/services/UserValidationHelpers_part_ab +0 -31
  45. package/src/domains/account-deletion/domain/services/UserValidationService.ts.bak +0 -286
  46. package/src/domains/account-deletion/domain/services/UserValidationService_part_aa +0 -150
  47. package/src/domains/account-deletion/domain/services/UserValidationService_part_ab +0 -136
  48. package/src/domains/account-deletion/infrastructure/services/AccountDeletionExecutor.ts.bak +0 -230
  49. package/src/domains/account-deletion/infrastructure/services/AccountDeletionExecutor_part_aa +0 -150
  50. package/src/domains/account-deletion/infrastructure/services/AccountDeletionExecutor_part_ab +0 -80
  51. package/src/domains/account-deletion/infrastructure/services/AccountDeletionReauthHandler.ts.bak +0 -174
  52. package/src/domains/account-deletion/infrastructure/services/AccountDeletionReauthHandler_part_aa +0 -150
  53. package/src/domains/account-deletion/infrastructure/services/AccountDeletionReauthHandler_part_ab +0 -24
  54. package/src/domains/account-deletion/infrastructure/services/AccountDeletionRepository.ts.bak +0 -266
  55. package/src/domains/account-deletion/infrastructure/services/AccountDeletionRepository_part_aa +0 -150
  56. package/src/domains/account-deletion/infrastructure/services/AccountDeletionRepository_part_ab +0 -116
  57. package/src/domains/account-deletion/infrastructure/services/reauthentication.service.ts.bak +0 -160
  58. package/src/domains/account-deletion/infrastructure/services/reauthentication.service_part_aa +0 -150
  59. package/src/domains/account-deletion/infrastructure/services/reauthentication.service_part_ab +0 -10
  60. package/src/domains/auth/infrastructure.ts.bak +0 -156
  61. package/src/domains/auth/infrastructure_part_aa +0 -150
  62. package/src/domains/auth/infrastructure_part_ab +0 -6
  63. package/src/domains/auth/presentation/hooks/GoogleOAuthHelpers.ts +0 -0
  64. package/src/domains/auth/presentation/hooks/GoogleOAuthHookService.ts.bak +0 -247
  65. package/src/domains/auth/presentation/hooks/GoogleOAuthHookService_part_aa +0 -150
  66. package/src/domains/auth/presentation/hooks/GoogleOAuthHookService_part_ab +0 -97
  67. package/src/domains/auth/presentation/hooks/GoogleOAuthService.ts +0 -0
  68. package/src/domains/firestore/domain/entities/Collection.ts.bak +0 -288
  69. package/src/domains/firestore/domain/entities/Collection_part_aa +0 -150
  70. package/src/domains/firestore/domain/entities/Collection_part_ab +0 -138
  71. package/src/domains/firestore/domain/entities/Document.ts.bak +0 -233
  72. package/src/domains/firestore/domain/entities/DocumentHelpers.ts +0 -0
  73. package/src/domains/firestore/domain/entities/DocumentMain.ts +0 -0
  74. package/src/domains/firestore/domain/entities/Document_part_aa +0 -150
  75. package/src/domains/firestore/domain/entities/Document_part_ab +0 -83
  76. package/src/domains/firestore/domain/services/QueryService.ts.bak +0 -182
  77. package/src/domains/firestore/domain/services/QueryServiceAnalysis.ts.bak +0 -169
  78. package/src/domains/firestore/domain/services/QueryServiceAnalysis_part_aa +0 -150
  79. package/src/domains/firestore/domain/services/QueryServiceAnalysis_part_ab +0 -19
  80. package/src/domains/firestore/domain/services/QueryServiceHelpers.ts.bak +0 -151
  81. package/src/domains/firestore/domain/services/QueryServiceHelpers_part_aa +0 -150
  82. package/src/domains/firestore/domain/services/QueryServiceHelpers_part_ab +0 -1
  83. package/src/domains/firestore/domain/services/QueryService_part_aa +0 -150
  84. package/src/domains/firestore/domain/services/QueryService_part_ab +0 -32
  85. package/src/domains/firestore/domain/value-objects/QueryOptions.ts.bak +0 -191
  86. package/src/domains/firestore/domain/value-objects/QueryOptionsSerialization.ts.bak +0 -207
  87. package/src/domains/firestore/domain/value-objects/QueryOptionsSerialization_part_aa +0 -150
  88. package/src/domains/firestore/domain/value-objects/QueryOptionsSerialization_part_ab +0 -57
  89. package/src/domains/firestore/domain/value-objects/QueryOptionsValidation.ts.bak +0 -182
  90. package/src/domains/firestore/domain/value-objects/QueryOptionsValidation_part_aa +0 -150
  91. package/src/domains/firestore/domain/value-objects/QueryOptionsValidation_part_ab +0 -32
  92. package/src/domains/firestore/domain/value-objects/QueryOptions_part_aa +0 -150
  93. package/src/domains/firestore/domain/value-objects/QueryOptions_part_ab +0 -41
  94. package/src/domains/firestore/domain/value-objects/WhereClause.ts.bak +0 -299
  95. package/src/domains/firestore/domain/value-objects/WhereClauseFactory.ts.bak +0 -207
  96. package/src/domains/firestore/domain/value-objects/WhereClauseFactory_part_aa +0 -150
  97. package/src/domains/firestore/domain/value-objects/WhereClauseFactory_part_ab +0 -57
  98. package/src/domains/firestore/domain/value-objects/WhereClause_part_aa +0 -150
  99. package/src/domains/firestore/domain/value-objects/WhereClause_part_ab +0 -149
  100. package/src/shared/infrastructure/base/ErrorHandler.ts.bak +0 -189
  101. package/src/shared/infrastructure/base/ErrorHandler_part_aa +0 -150
  102. package/src/shared/infrastructure/base/ErrorHandler_part_ab +0 -39
  103. package/src/shared/infrastructure/base/ServiceBase.ts.bak +0 -220
  104. package/src/shared/infrastructure/base/ServiceBase_part_aa +0 -150
  105. package/src/shared/infrastructure/base/ServiceBase_part_ab +0 -70
  106. package/src/shared/infrastructure/config/base/ServiceClientSingleton.ts.bak +0 -155
  107. package/src/shared/infrastructure/config/base/ServiceClientSingleton_part_aa +0 -150
  108. package/src/shared/infrastructure/config/base/ServiceClientSingleton_part_ab +0 -5
@@ -1,288 +0,0 @@
1
- /**
2
- * Sign Out Use Case
3
- * Single Responsibility: Handle user sign out operations
4
- *
5
- * Application use case for user sign out.
6
- * Ensures proper cleanup and state management.
7
- *
8
- * Max lines: 150 (enforced for maintainability)
9
- */
10
-
11
- import type { User } from 'firebase/auth';
12
- import type { Result } from '../../../shared/domain/utils';
13
- import type { IAuthPort } from '../ports/AuthPort';
14
-
15
- /**
16
- * Sign out use case result
17
- */
18
- export interface SignOutUseCaseResult extends Result<void> {
19
- readonly wasSignedIn: boolean;
20
- }
21
-
22
- /**
23
- * Sign out use case options
24
- */
25
- export interface SignOutOptions {
26
- /** Clear local data */
27
- readonly clearLocalData?: boolean;
28
- /** Navigate to sign in screen */
29
- readonly navigateToSignIn?: boolean;
30
- /** Show confirmation dialog */
31
- readonly showConfirmation?: boolean;
32
- }
33
-
34
- /**
35
- * Sign out use case
36
- * Handles user sign out with proper cleanup
37
- */
38
- export class SignOutUseCase {
39
- private readonly authPort: IAuthPort;
40
-
41
- constructor(authPort: IAuthPort) {
42
- this.authPort = authPort;
43
- }
44
-
45
- /**
46
- * Execute sign out use case
47
- * Signs out user and performs cleanup
48
- */
49
- async execute(options: SignOutOptions = {}): Promise<SignOutUseCaseResult> {
50
- const wasSignedIn = this.authPort.isAuthenticated();
51
-
52
- // Check if user is signed in
53
- if (!wasSignedIn) {
54
- return {
55
- success: true,
56
- wasSignedIn: false,
57
- };
58
- }
59
-
60
- // Sign out from auth
61
- const result = await this.authPort.signOut();
62
-
63
- if (!result.success) {
64
- return {
65
- success: false,
66
- error: result.error,
67
- wasSignedIn,
68
- };
69
- }
70
-
71
- // Perform cleanup
72
- await this.performCleanup(options);
73
-
74
- return {
75
- success: true,
76
- wasSignedIn,
77
- };
78
- }
79
-
80
- /**
81
- * Perform cleanup after sign out
82
- */
83
- private async performCleanup(options: SignOutOptions): Promise<void> {
84
- // Clear local data if requested
85
- if (options.clearLocalData) {
86
- await this.clearLocalData();
87
- }
88
-
89
- // Additional cleanup can be added here
90
- // For example: clear cache, reset state, etc.
91
- }
92
-
93
- /**
94
- * Clear local data
95
- * Override in subclass for custom cleanup
96
- */
97
- protected async clearLocalData(): Promise<void> {
98
- // Default implementation does nothing
99
- // Subclass can override for custom cleanup
100
- if (__DEV__) {
101
- console.log('[SignOutUseCase] Clearing local data');
102
- }
103
- }
104
-
105
- /**
106
- * Check if user is signed in
107
- */
108
- isSignedIn(): boolean {
109
- return this.authPort.isAuthenticated();
110
- }
111
-
112
- /**
113
- * Get current user
114
- */
115
- getCurrentUser(): User | null {
116
- return this.authPort.getCurrentUser();
117
- }
118
-
119
- /**
120
- * Get current user ID
121
- */
122
- getCurrentUserId(): string | null {
123
- return this.authPort.getCurrentUserId();
124
- }
125
-
126
- /**
127
- * Check if user is anonymous
128
- */
129
- isAnonymous(): boolean {
130
- return this.authPort.isAnonymous();
131
- }
132
-
133
- /**
134
- * Confirm sign out
135
- * Useful for showing confirmation dialog
136
- */
137
- async confirmSignOut(): Promise<boolean> {
138
- // Default implementation always returns true
139
- // Override in subclass to show confirmation dialog
140
- return true;
141
- }
142
-
143
- /**
144
- * Validate can sign out
145
- * Check if sign out is allowed
146
- */
147
- async canSignOut(): Promise<Result<void>> {
148
- if (!this.isSignedIn()) {
149
- return {
150
- success: false,
151
- error: {
152
- code: 'auth/not-signed-in',
153
- message: 'No user is currently signed in',
154
- },
155
- };
156
- }
157
-
158
- // Additional checks can be added here
159
- // For example: check for unsaved changes, active operations, etc.
160
-
161
- return { success: true };
162
- }
163
-
164
- /**
165
- * Sign out with confirmation
166
- * Shows confirmation dialog before signing out
167
- */
168
- async signOutWithConfirmation(): Promise<SignOutUseCaseResult> {
169
- const confirmed = await this.confirmSignOut();
170
-
171
- if (!confirmed) {
172
- return {
173
- success: false,
174
- error: {
175
- code: 'auth/sign-out-cancelled',
176
- message: 'Sign out was cancelled',
177
- },
178
- wasSignedIn: this.isSignedIn(),
179
- };
180
- }
181
-
182
- return this.execute();
183
- }
184
-
185
- /**
186
- * Sign out and navigate
187
- * Signs out and navigates to sign in screen
188
- */
189
- async signOutAndNavigate(): Promise<SignOutUseCaseResult> {
190
- return this.execute({
191
- clearLocalData: true,
192
- navigateToSignIn: true,
193
- });
194
- }
195
-
196
- /**
197
- * Force sign out
198
- * Signs out even if there are errors
199
- */
200
- async forceSignOut(): Promise<void> {
201
- try {
202
- await this.execute({
203
- clearLocalData: true,
204
- });
205
- } catch (error) {
206
- // Ignore errors during force sign out
207
- if (__DEV__) {
208
- console.error('[SignOutUseCase] Force sign out error:', error);
209
- }
210
- }
211
-
212
- // Ensure local data is cleared
213
- await this.clearLocalData();
214
- }
215
-
216
- /**
217
- * Get sign out statistics
218
- */
219
- getSignOutStats(): {
220
- readonly isSignedIn: boolean;
221
- readonly isAnonymous: boolean;
222
- readonly hasUserId: boolean;
223
- } {
224
- return {
225
- isSignedIn: this.isSignedIn(),
226
- isAnonymous: this.isAnonymous(),
227
- hasUserId: this.getCurrentUserId() !== null,
228
- };
229
- }
230
-
231
- /**
232
- * Create sign out options
233
- */
234
- createOptions(options: Partial<SignOutOptions> = {}): SignOutOptions {
235
- return {
236
- clearLocalData: false,
237
- navigateToSignIn: false,
238
- showConfirmation: false,
239
- ...options,
240
- };
241
- }
242
-
243
- /**
244
- * Quick sign out helper
245
- */
246
- async quickSignOut(): Promise<SignOutUseCaseResult> {
247
- return this.execute();
248
- }
249
-
250
- /**
251
- * Check if confirmation should be shown
252
- */
253
- shouldShowConfirmation(): boolean {
254
- // Default: show confirmation for authenticated users
255
- return this.isSignedIn() && !this.isAnonymous();
256
- }
257
-
258
- /**
259
- * Get user-friendly sign out message
260
- */
261
- getSignOutMessage(): string {
262
- if (!this.isSignedIn()) {
263
- return 'You are not signed in';
264
- }
265
-
266
- if (this.isAnonymous()) {
267
- return 'Sign out from guest session?';
268
- }
269
-
270
- return 'Are you sure you want to sign out?';
271
- }
272
- }
273
-
274
- /**
275
- * Factory function to create sign out use case
276
- */
277
- export function createSignOutUseCase(authPort: IAuthPort): SignOutUseCase {
278
- return new SignOutUseCase(authPort);
279
- }
280
-
281
- /**
282
- * Factory function to create sign out use case with default auth port
283
- */
284
- export async function createDefaultSignOutUseCase(): Promise<SignOutUseCase> {
285
- const { createAuthPort } = await import('../ports/AuthPort');
286
- const authPort = createAuthPort();
287
- return createSignOutUseCase(authPort);
288
- }
@@ -1,150 +0,0 @@
1
- /**
2
- * Sign Out Use Case
3
- * Single Responsibility: Handle user sign out operations
4
- *
5
- * Application use case for user sign out.
6
- * Ensures proper cleanup and state management.
7
- *
8
- * Max lines: 150 (enforced for maintainability)
9
- */
10
-
11
- import type { User } from 'firebase/auth';
12
- import type { Result } from '../../../shared/domain/utils';
13
- import type { IAuthPort } from '../ports/AuthPort';
14
-
15
- /**
16
- * Sign out use case result
17
- */
18
- export interface SignOutUseCaseResult extends Result<void> {
19
- readonly wasSignedIn: boolean;
20
- }
21
-
22
- /**
23
- * Sign out use case options
24
- */
25
- export interface SignOutOptions {
26
- /** Clear local data */
27
- readonly clearLocalData?: boolean;
28
- /** Navigate to sign in screen */
29
- readonly navigateToSignIn?: boolean;
30
- /** Show confirmation dialog */
31
- readonly showConfirmation?: boolean;
32
- }
33
-
34
- /**
35
- * Sign out use case
36
- * Handles user sign out with proper cleanup
37
- */
38
- export class SignOutUseCase {
39
- private readonly authPort: IAuthPort;
40
-
41
- constructor(authPort: IAuthPort) {
42
- this.authPort = authPort;
43
- }
44
-
45
- /**
46
- * Execute sign out use case
47
- * Signs out user and performs cleanup
48
- */
49
- async execute(options: SignOutOptions = {}): Promise<SignOutUseCaseResult> {
50
- const wasSignedIn = this.authPort.isAuthenticated();
51
-
52
- // Check if user is signed in
53
- if (!wasSignedIn) {
54
- return {
55
- success: true,
56
- wasSignedIn: false,
57
- };
58
- }
59
-
60
- // Sign out from auth
61
- const result = await this.authPort.signOut();
62
-
63
- if (!result.success) {
64
- return {
65
- success: false,
66
- error: result.error,
67
- wasSignedIn,
68
- };
69
- }
70
-
71
- // Perform cleanup
72
- await this.performCleanup(options);
73
-
74
- return {
75
- success: true,
76
- wasSignedIn,
77
- };
78
- }
79
-
80
- /**
81
- * Perform cleanup after sign out
82
- */
83
- private async performCleanup(options: SignOutOptions): Promise<void> {
84
- // Clear local data if requested
85
- if (options.clearLocalData) {
86
- await this.clearLocalData();
87
- }
88
-
89
- // Additional cleanup can be added here
90
- // For example: clear cache, reset state, etc.
91
- }
92
-
93
- /**
94
- * Clear local data
95
- * Override in subclass for custom cleanup
96
- */
97
- protected async clearLocalData(): Promise<void> {
98
- // Default implementation does nothing
99
- // Subclass can override for custom cleanup
100
- if (__DEV__) {
101
- console.log('[SignOutUseCase] Clearing local data');
102
- }
103
- }
104
-
105
- /**
106
- * Check if user is signed in
107
- */
108
- isSignedIn(): boolean {
109
- return this.authPort.isAuthenticated();
110
- }
111
-
112
- /**
113
- * Get current user
114
- */
115
- getCurrentUser(): User | null {
116
- return this.authPort.getCurrentUser();
117
- }
118
-
119
- /**
120
- * Get current user ID
121
- */
122
- getCurrentUserId(): string | null {
123
- return this.authPort.getCurrentUserId();
124
- }
125
-
126
- /**
127
- * Check if user is anonymous
128
- */
129
- isAnonymous(): boolean {
130
- return this.authPort.isAnonymous();
131
- }
132
-
133
- /**
134
- * Confirm sign out
135
- * Useful for showing confirmation dialog
136
- */
137
- async confirmSignOut(): Promise<boolean> {
138
- // Default implementation always returns true
139
- // Override in subclass to show confirmation dialog
140
- return true;
141
- }
142
-
143
- /**
144
- * Validate can sign out
145
- * Check if sign out is allowed
146
- */
147
- async canSignOut(): Promise<Result<void>> {
148
- if (!this.isSignedIn()) {
149
- return {
150
- success: false,
@@ -1,138 +0,0 @@
1
- error: {
2
- code: 'auth/not-signed-in',
3
- message: 'No user is currently signed in',
4
- },
5
- };
6
- }
7
-
8
- // Additional checks can be added here
9
- // For example: check for unsaved changes, active operations, etc.
10
-
11
- return { success: true };
12
- }
13
-
14
- /**
15
- * Sign out with confirmation
16
- * Shows confirmation dialog before signing out
17
- */
18
- async signOutWithConfirmation(): Promise<SignOutUseCaseResult> {
19
- const confirmed = await this.confirmSignOut();
20
-
21
- if (!confirmed) {
22
- return {
23
- success: false,
24
- error: {
25
- code: 'auth/sign-out-cancelled',
26
- message: 'Sign out was cancelled',
27
- },
28
- wasSignedIn: this.isSignedIn(),
29
- };
30
- }
31
-
32
- return this.execute();
33
- }
34
-
35
- /**
36
- * Sign out and navigate
37
- * Signs out and navigates to sign in screen
38
- */
39
- async signOutAndNavigate(): Promise<SignOutUseCaseResult> {
40
- return this.execute({
41
- clearLocalData: true,
42
- navigateToSignIn: true,
43
- });
44
- }
45
-
46
- /**
47
- * Force sign out
48
- * Signs out even if there are errors
49
- */
50
- async forceSignOut(): Promise<void> {
51
- try {
52
- await this.execute({
53
- clearLocalData: true,
54
- });
55
- } catch (error) {
56
- // Ignore errors during force sign out
57
- if (__DEV__) {
58
- console.error('[SignOutUseCase] Force sign out error:', error);
59
- }
60
- }
61
-
62
- // Ensure local data is cleared
63
- await this.clearLocalData();
64
- }
65
-
66
- /**
67
- * Get sign out statistics
68
- */
69
- getSignOutStats(): {
70
- readonly isSignedIn: boolean;
71
- readonly isAnonymous: boolean;
72
- readonly hasUserId: boolean;
73
- } {
74
- return {
75
- isSignedIn: this.isSignedIn(),
76
- isAnonymous: this.isAnonymous(),
77
- hasUserId: this.getCurrentUserId() !== null,
78
- };
79
- }
80
-
81
- /**
82
- * Create sign out options
83
- */
84
- createOptions(options: Partial<SignOutOptions> = {}): SignOutOptions {
85
- return {
86
- clearLocalData: false,
87
- navigateToSignIn: false,
88
- showConfirmation: false,
89
- ...options,
90
- };
91
- }
92
-
93
- /**
94
- * Quick sign out helper
95
- */
96
- async quickSignOut(): Promise<SignOutUseCaseResult> {
97
- return this.execute();
98
- }
99
-
100
- /**
101
- * Check if confirmation should be shown
102
- */
103
- shouldShowConfirmation(): boolean {
104
- // Default: show confirmation for authenticated users
105
- return this.isSignedIn() && !this.isAnonymous();
106
- }
107
-
108
- /**
109
- * Get user-friendly sign out message
110
- */
111
- getSignOutMessage(): string {
112
- if (!this.isSignedIn()) {
113
- return 'You are not signed in';
114
- }
115
-
116
- if (this.isAnonymous()) {
117
- return 'Sign out from guest session?';
118
- }
119
-
120
- return 'Are you sure you want to sign out?';
121
- }
122
- }
123
-
124
- /**
125
- * Factory function to create sign out use case
126
- */
127
- export function createSignOutUseCase(authPort: IAuthPort): SignOutUseCase {
128
- return new SignOutUseCase(authPort);
129
- }
130
-
131
- /**
132
- * Factory function to create sign out use case with default auth port
133
- */
134
- export async function createDefaultSignOutUseCase(): Promise<SignOutUseCase> {
135
- const { createAuthPort } = await import('../ports/AuthPort');
136
- const authPort = createAuthPort();
137
- return createSignOutUseCase(authPort);
138
- }