File tree 6 files changed +82
-4
lines changed
TimeTrackerTutorial.Android 6 files changed +82
-4
lines changed Original file line number Diff line number Diff line change
1
+ using System ;
2
+ using System . Threading . Tasks ;
3
+ using Android . Gms . Tasks ;
4
+ using Firebase . Firestore ;
5
+ using TimeTrackerTutorial . Models ;
6
+
7
+ namespace TimeTrackerTutorial . Droid . ServiceListeners
8
+ {
9
+ public class OnCompleteListener : Java . Lang . Object , IOnCompleteListener
10
+ {
11
+ private TaskCompletionSource < AuthenticatedUser > _tcs ;
12
+
13
+ public OnCompleteListener ( TaskCompletionSource < AuthenticatedUser > tcs )
14
+ {
15
+ _tcs = tcs ;
16
+ }
17
+
18
+ public void OnComplete ( Android . Gms . Tasks . Task task )
19
+ {
20
+ if ( task . IsSuccessful )
21
+ {
22
+ // process document
23
+ var result = task . Result ;
24
+ if ( result is DocumentSnapshot doc )
25
+ {
26
+ var user = new AuthenticatedUser ( ) ;
27
+ user . Id = doc . Id ;
28
+ user . FirstName = doc . GetString ( "FirstName" ) ;
29
+ user . LastName = doc . GetString ( "LastName" ) ;
30
+ _tcs . TrySetResult ( user ) ;
31
+ return ;
32
+ }
33
+ }
34
+ // something went wrong
35
+ _tcs . TrySetResult ( default ( AuthenticatedUser ) ) ;
36
+ }
37
+ }
38
+ }
Original file line number Diff line number Diff line change 2
2
using System . Threading . Tasks ;
3
3
using Firebase ;
4
4
using Firebase . Auth ;
5
+ using Firebase . Firestore ;
5
6
using Java . Util . Concurrent ;
7
+ using TimeTrackerTutorial . Droid . ServiceListeners ;
6
8
using TimeTrackerTutorial . Droid . Services ;
9
+ using TimeTrackerTutorial . Models ;
7
10
using TimeTrackerTutorial . Services . Account ;
8
11
using Xamarin . Essentials ;
9
12
using Xamarin . Forms ;
@@ -88,5 +91,18 @@ public Task<bool> VerifyOtpCodeAsync(string code)
88
91
}
89
92
return Task . FromResult ( false ) ;
90
93
}
94
+
95
+ public Task < AuthenticatedUser > GetUserAsync ( )
96
+ {
97
+ var tcs = new TaskCompletionSource < AuthenticatedUser > ( ) ;
98
+
99
+ FirebaseFirestore . Instance
100
+ . Collection ( "users" )
101
+ . Document ( FirebaseAuth . Instance . CurrentUser . Uid )
102
+ . Get ( )
103
+ . AddOnCompleteListener ( new OnCompleteListener ( tcs ) ) ;
104
+
105
+ return tcs . Task ;
106
+ }
91
107
}
92
108
}
Original file line number Diff line number Diff line change 55
55
<ItemGroup >
56
56
<PackageReference Include =" Xamarin.Forms" Version =" 4.4.0.991265" />
57
57
<PackageReference Include =" Xamarin.Essentials" Version =" 1.5.3.2" />
58
+ <PackageReference Include =" Xamarin.Build.Download" >
59
+ <Version >0.10.0</Version >
60
+ </PackageReference >
58
61
<PackageReference Include =" Xamarin.Firebase.Analytics" >
59
- <Version >60.1142.1 </Version >
62
+ <Version >71.1630.4 </Version >
60
63
</PackageReference >
61
64
<PackageReference Include =" Xamarin.Firebase.Auth" >
62
- <Version >60.1142.1 </Version >
65
+ <Version >71.1605.4 </Version >
63
66
</PackageReference >
64
- <PackageReference Include =" Xamarin.Build.Download " >
65
- <Version >0.10.0 </Version >
67
+ <PackageReference Include =" Xamarin.Firebase.Firestore " >
68
+ <Version >71.1705.4 </Version >
66
69
</PackageReference >
67
70
</ItemGroup >
68
71
<ItemGroup >
71
74
<Compile Include =" Properties\AssemblyInfo.cs" />
72
75
<Compile Include =" Renderers\HoursProgressViewRenderer.cs" />
73
76
<Compile Include =" Services\AccountService.cs" />
77
+ <Compile Include =" ServiceListeners\OnCompleteListener.cs" />
74
78
</ItemGroup >
75
79
<ItemGroup >
76
80
<None Include =" Resources\AboutResources.txt" />
99
103
<Folder Include =" Resources\drawable\" />
100
104
<Folder Include =" Renderers\" />
101
105
<Folder Include =" Services\" />
106
+ <Folder Include =" ServiceListeners\" />
102
107
</ItemGroup >
103
108
<ItemGroup >
104
109
<ProjectReference Include =" ..\TimeTrackerTutorial\TimeTrackerTutorial.csproj" >
Original file line number Diff line number Diff line change
1
+ using System ;
2
+ namespace TimeTrackerTutorial . Models
3
+ {
4
+ public class AuthenticatedUser
5
+ {
6
+ public string Id { get ; set ; }
7
+ public string FirstName { get ; set ; }
8
+ public string LastName { get ; set ; }
9
+ }
10
+ }
Original file line number Diff line number Diff line change 2
2
using System . Collections . Generic ;
3
3
using System . Text ;
4
4
using System . Threading . Tasks ;
5
+ using TimeTrackerTutorial . Models ;
5
6
6
7
namespace TimeTrackerTutorial . Services . Account
7
8
{
@@ -11,5 +12,7 @@ public interface IAccountService
11
12
Task < double > GetCurrentPayRateAsync ( ) ;
12
13
Task < bool > SendOtpCodeAsync ( string phoneNumber ) ;
13
14
Task < bool > VerifyOtpCodeAsync ( string code ) ;
15
+
16
+ Task < AuthenticatedUser > GetUserAsync ( ) ;
14
17
}
15
18
}
Original file line number Diff line number Diff line change 2
2
using System . Collections . Generic ;
3
3
using System . Text ;
4
4
using System . Threading . Tasks ;
5
+ using TimeTrackerTutorial . Models ;
5
6
6
7
namespace TimeTrackerTutorial . Services . Account
7
8
{
@@ -12,6 +13,11 @@ public Task<double> GetCurrentPayRateAsync()
12
13
return Task . FromResult ( 10.0 ) ;
13
14
}
14
15
16
+ public Task < AuthenticatedUser > GetUserAsync ( )
17
+ {
18
+ throw new NotImplementedException ( ) ;
19
+ }
20
+
15
21
public Task < bool > LoginAsync ( string username , string password )
16
22
{
17
23
if ( string . IsNullOrWhiteSpace ( username ) || string . IsNullOrWhiteSpace ( password ) )
You can’t perform that action at this time.
0 commit comments