Skip to content

Commit 78b4e16

Browse files
author
Paul Philion
committed
Adding invite code to profile page
1 parent f62f54e commit 78b4e16

File tree

8 files changed

+71
-32
lines changed

8 files changed

+71
-32
lines changed

src/support_sphere/lib/data/repositories/authentication.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,4 +82,8 @@ class AuthenticationRepository {
8282

8383
return _parseUser(response.user, _parseUserRole(session));
8484
}
85+
86+
Future<String?> getSignUpCodeForHousehold(String household_id) async {
87+
return _authService.getSignUpCodeForHousehold(household_id);
88+
}
8589
}

src/support_sphere/lib/data/repositories/user.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,9 @@ class UserRepository {
219219
userId: userId, givenName: givenName, familyName: familyName, householdId: data["household_id"]);
220220

221221
// Invalidate the signup code used to create the user
222-
await _authService.invalidateSignupCode(data["code"]);
222+
//await _authService.invalidateSignupCode(data["code"]);
223+
String email = user.email ?? '[unknown]';
224+
await _authService.logUseOfSignupCode(email, data["household_id"], data["code"]);
223225
}
224226

225227
Future<void> updateUserName({

src/support_sphere/lib/data/services/auth_service.dart

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import 'package:logging/logging.dart' show Logger;
33
import 'package:support_sphere/utils/supabase.dart';
44
import 'package:supabase_flutter/supabase_flutter.dart';
55
import 'package:support_sphere/constants/string_catalog.dart';
6+
import 'package:uuid/v4.dart' show UuidV4;
67
// TODO: ADD API Handling in here for exceptions
78

89
final _log = Logger('AuthService');
@@ -18,6 +19,24 @@ class AuthService extends Equatable{
1819
return await _supabaseClient.from('signup_codes').select().eq('code', code).maybeSingle();
1920
}
2021

22+
Future<String?> getSignUpCodeForHousehold(String household_id) async {
23+
PostgrestMap? result = await _supabaseClient.from('signup_codes').select().eq('household_id', household_id).maybeSingle();
24+
_log.finer("get SIGNUP CODE for $household_id: $result");
25+
return result?['code'];
26+
}
27+
28+
Future<void> logUseOfSignupCode(String email, String householdId, String code) async {
29+
// add log to table
30+
await _supabaseClient.from('signup_logs').insert({
31+
'id': const UuidV4().generate(),
32+
'created_by': _supabaseClient.auth.currentUser!.id,
33+
'created_at': DateTime.now().toIso8601String(),
34+
'email': email,
35+
'household_id': householdId,
36+
'code': code,
37+
});
38+
}
39+
2140
Future<void> invalidateSignupCode(String code) async {
2241
await _supabaseClient.rpc('invalidate_signup_code', params: {'input_code': code});
2342
}

src/support_sphere/lib/logic/cubit/profile_cubit.dart

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ class ProfileCubit extends Cubit<ProfileState> {
2929
emit(state.copyWith(authUser: authUser));
3030
}
3131

32-
void householdChanged(Household? household) {
33-
emit(state.copyWith(household: household));
32+
void householdChanged(Household? household, String? inviteCode) {
33+
emit(state.copyWith(household: household, inviteCode: inviteCode));
3434
}
3535

3636
void clusterChanged(Cluster? cluster) {
@@ -53,13 +53,15 @@ class ProfileCubit extends Cubit<ProfileState> {
5353
userProfile.id,
5454
);
5555
if (household != null) {
56+
final inviteCode = await _authRepository.getSignUpCodeForHousehold(household.id);
57+
5658
/// Get the household members of the household
5759
final HouseHoldMembers? houseHoldMembers = await _userRepository.getHouseholdMembersByHouseholdId(household.id);
5860

5961
if (houseHoldMembers != null) {
6062
household = household.copyWith(houseHoldMembers: houseHoldMembers);
6163
}
62-
householdChanged(household);
64+
householdChanged(household, inviteCode);
6365
} else {
6466
throw Exception('Household not found');
6567
}
@@ -84,7 +86,7 @@ class ProfileCubit extends Cubit<ProfileState> {
8486
} catch (_) {
8587
/// TODO: Handle error if there are no user profile or household for some reason
8688
profileChanged(null);
87-
householdChanged(null);
89+
householdChanged(null, null);
8890
clusterChanged(null);
8991
}
9092
}

src/support_sphere/lib/logic/cubit/profile_state.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@ class ProfileState extends Equatable {
44
const ProfileState({
55
this.userProfile,
66
this.household,
7+
this.inviteCode,
78
this.authUser,
89
this.cluster,
910
});
1011

1112
final Person? userProfile;
1213
final MyAuthUser? authUser;
1314
final Household? household;
15+
final String? inviteCode;
1416
final Cluster? cluster;
1517

1618
@override
@@ -20,12 +22,14 @@ class ProfileState extends Equatable {
2022
Person? userProfile,
2123
MyAuthUser? authUser,
2224
Household? household,
25+
String? inviteCode,
2326
Cluster? cluster,
2427
}) {
2528
return ProfileState(
2629
userProfile: userProfile ?? this.userProfile,
2730
authUser: authUser ?? this.authUser,
2831
household: household ?? this.household,
32+
inviteCode: inviteCode ?? this.inviteCode,
2933
cluster: cluster ?? this.cluster,
3034
);
3135
}

src/support_sphere/lib/presentation/pages/main_app/profile/profile_body.dart

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@ class _HouseholdInformation extends StatelessWidget {
211211
buildWhen: (previous, current) => previous.household != current.household,
212212
builder: (context, state) {
213213
Household? household = state.household;
214+
String inviteCode = state.inviteCode ?? '';
214215
String address = household?.address ?? '';
215216
String pets = household?.pets ?? '';
216217
String notes = household?.notes ?? '';
@@ -289,14 +290,21 @@ class _HouseholdInformation extends StatelessWidget {
289290
),
290291
),
291292
children: [
293+
Row(
294+
mainAxisAlignment: MainAxisAlignment.spaceBetween,
295+
children: [
296+
const Text("Invite Code"),
297+
Text(inviteCode),
298+
],
299+
),
292300
const Row(
293301
mainAxisAlignment: MainAxisAlignment.spaceBetween,
294302
children: [
295303
Text(UserProfileStrings.householdMembers),
296304
],
297305
),
298306
SizedBox(
299-
height: 50.0,
307+
height: 100.0,
300308
child: ListView(shrinkWrap: true, children: [
301309
for (var member in householdMembers)
302310
Row(

src/support_sphere/pubspec.lock

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -117,10 +117,10 @@ packages:
117117
dependency: "direct dev"
118118
description:
119119
name: build_runner
120-
sha256: ac78098de97893812b7aff1154f29008fa2464cad9e8e7044d39bc905dad4fbc
120+
sha256: "39ad4ca8a2876779737c60e4228b4bcd35d4352ef7e14e47514093edc012c734"
121121
url: "https://pub.dev"
122122
source: hosted
123-
version: "2.11.0"
123+
version: "2.11.1"
124124
built_collection:
125125
dependency: transitive
126126
description:
@@ -141,10 +141,10 @@ packages:
141141
dependency: transitive
142142
description:
143143
name: characters
144-
sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803
144+
sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b
145145
url: "https://pub.dev"
146146
source: hosted
147-
version: "1.4.0"
147+
version: "1.4.1"
148148
checked_yaml:
149149
dependency: transitive
150150
description:
@@ -285,10 +285,10 @@ packages:
285285
dependency: transitive
286286
description:
287287
name: ffi
288-
sha256: d07d37192dbf97461359c1518788f203b0c9102cfd2c35a716b823741219542c
288+
sha256: "6d7fd89431262d8f3125e81b50d3847a091d846eafcd4fdb88dd06f36d705a45"
289289
url: "https://pub.dev"
290290
source: hosted
291-
version: "2.1.5"
291+
version: "2.2.0"
292292
file:
293293
dependency: transitive
294294
description:
@@ -330,10 +330,10 @@ packages:
330330
dependency: "direct main"
331331
description:
332332
name: flutter_form_builder
333-
sha256: "5a0aaed73604686929f176b6b373899c4ab0fad461a971c6a66bfd9f6ad8dbce"
333+
sha256: "1233251b4bc1d5deb245745d2a89dcebf4cdd382e1ec3f21f1c6703b700e574f"
334334
url: "https://pub.dev"
335335
source: hosted
336-
version: "10.3.0+1"
336+
version: "10.3.0+2"
337337
flutter_lints:
338338
dependency: "direct dev"
339339
description:
@@ -513,10 +513,10 @@ packages:
513513
dependency: "direct main"
514514
description:
515515
name: google_fonts
516-
sha256: c30eef5e7cd26eb89cc8065b4390ac86ce579f2fcdbe35220891c6278b5460da
516+
sha256: db9df7a5898d894eeda4c78143f35c30a243558be439518972366880b80bf88e
517517
url: "https://pub.dev"
518518
source: hosted
519-
version: "8.0.1"
519+
version: "8.0.2"
520520
gotrue:
521521
dependency: transitive
522522
description:
@@ -697,18 +697,18 @@ packages:
697697
dependency: transitive
698698
description:
699699
name: matcher
700-
sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
700+
sha256: "12956d0ad8390bbcc63ca2e1469c0619946ccb52809807067a7020d57e647aa6"
701701
url: "https://pub.dev"
702702
source: hosted
703-
version: "0.12.17"
703+
version: "0.12.18"
704704
material_color_utilities:
705705
dependency: transitive
706706
description:
707707
name: material_color_utilities
708-
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
708+
sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b"
709709
url: "https://pub.dev"
710710
source: hosted
711-
version: "0.11.1"
711+
version: "0.13.0"
712712
meta:
713713
dependency: "direct main"
714714
description:
@@ -769,10 +769,10 @@ packages:
769769
dependency: transitive
770770
description:
771771
name: objective_c
772-
sha256: "983c7fa1501f6dcc0cb7af4e42072e9993cb28d73604d25ebf4dab08165d997e"
772+
sha256: "100a1c87616ab6ed41ec263b083c0ef3261ee6cd1dc3b0f35f8ddfa4f996fe52"
773773
url: "https://pub.dev"
774774
source: hosted
775-
version: "9.2.5"
775+
version: "9.3.0"
776776
package_config:
777777
dependency: transitive
778778
description:
@@ -857,10 +857,10 @@ packages:
857857
dependency: transitive
858858
description:
859859
name: petitparser
860-
sha256: "1a97266a94f7350d30ae522c0af07890c70b8e62c71e8e3920d1db4d23c057d1"
860+
sha256: "91bd59303e9f769f108f8df05e371341b15d59e995e6806aefab827b58336675"
861861
url: "https://pub.dev"
862862
source: hosted
863-
version: "7.0.1"
863+
version: "7.0.2"
864864
platform:
865865
dependency: transitive
866866
description:
@@ -961,10 +961,10 @@ packages:
961961
dependency: "direct main"
962962
description:
963963
name: searchfield
964-
sha256: "9834d251b1e60a7ac5eaef8d832c11e914c18f01958ddba044c9269ff9ad9ad8"
964+
sha256: "09231f4b86c78e2ae03c1ce83b0a9facd44b2ffa8fd9208175a97736092742ba"
965965
url: "https://pub.dev"
966966
source: hosted
967-
version: "1.4.0"
967+
version: "2.0.0"
968968
shared_preferences:
969969
dependency: transitive
970970
description:
@@ -1126,10 +1126,10 @@ packages:
11261126
dependency: transitive
11271127
description:
11281128
name: test_api
1129-
sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55
1129+
sha256: "93167629bfc610f71560ab9312acdda4959de4df6fac7492c89ff0d3886f6636"
11301130
url: "https://pub.dev"
11311131
source: hosted
1132-
version: "0.7.7"
1132+
version: "0.7.9"
11331133
timeago:
11341134
dependency: "direct main"
11351135
description:
@@ -1174,10 +1174,10 @@ packages:
11741174
dependency: transitive
11751175
description:
11761176
name: url_launcher_ios
1177-
sha256: cfde38aa257dae62ffe79c87fab20165dfdf6988c1d31b58ebf59b9106062aad
1177+
sha256: "580fe5dfb51671ae38191d316e027f6b76272b026370708c2d898799750a02b0"
11781178
url: "https://pub.dev"
11791179
source: hosted
1180-
version: "6.3.6"
1180+
version: "6.4.1"
11811181
url_launcher_linux:
11821182
dependency: transitive
11831183
description:
@@ -1324,4 +1324,4 @@ packages:
13241324
version: "2.1.0"
13251325
sdks:
13261326
dart: ">=3.10.3 <4.0.0"
1327-
flutter: ">=3.38.4"
1327+
flutter: ">=3.41.0"

src/support_sphere/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ dependencies:
5656
flutter_form_builder: ^10.0.1
5757
intl: ^0.20.2
5858
expandable_text: ^2.3.0
59-
searchfield: ^1.1.8
59+
searchfield: ^2.0.0
6060
latlong2: ^0.9.0
6161
geodesy: ^0.10.2
6262
geolocator: ^14.0.1

0 commit comments

Comments
 (0)