Skip to content

Commit d7d4c57

Browse files
Merge pull request #20 from JohnRamberger/development
Development
2 parents 5fdeeb5 + 46ca44c commit d7d4c57

File tree

2 files changed

+70
-48
lines changed

2 files changed

+70
-48
lines changed

lib/viewmodel/checkin.viewmodel.dart

Lines changed: 69 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,43 @@ class CheckinViewModel extends ChangeNotifier {
7474
}
7575
}
7676

77+
Future<bool> checkIfUserCheckedIn() async {
78+
var request = GraphQLRequest(document: '''
79+
query queryCheckins {
80+
listCheckins(filter: {user: {eq: "${_user.username}"}}) {
81+
items {
82+
user
83+
updatedAt
84+
createdBy
85+
event {
86+
id
87+
}
88+
}
89+
}
90+
}
91+
''');
92+
93+
var operation = Amplify.API.query(request: request);
94+
var response = await operation.response;
95+
var data = response.data;
96+
var res = responseGetCheckins(data, event);
97+
if (res.error != null && res.error!.isNotEmpty) {
98+
_error = res.error!;
99+
_loadingUser = false;
100+
if (_mounted) notifyListeners();
101+
return false;
102+
}
103+
104+
if (res.checkedIn) {
105+
// user is already checked in
106+
// callback(true, "User is already checked in to this event");
107+
// _error = "User is already checked in to this event";
108+
// _loadingUser = false;
109+
// if (_mounted) notifyListeners();
110+
return true;
111+
}
112+
}
113+
77114
getUser(Function(dynamic data, dynamic error) callback) async {
78115
// hacklytics record is of the form hacklytics://<id>
79116
try {
@@ -98,40 +135,13 @@ class CheckinViewModel extends ChangeNotifier {
98135
try {
99136
// print("checking in user to " + event.name);
100137
// check if user is already checked in
101-
var request = GraphQLRequest(document: '''
102-
query queryCheckins {
103-
listCheckins(filter: {user: {eq: "${_user.username}"}}) {
104-
items {
105-
user
106-
updatedAt
107-
createdBy
108-
event {
109-
id
110-
}
111-
}
112-
}
113-
}
114-
''');
115-
116-
var operation = Amplify.API.query(request: request);
117-
var response = await operation.response;
118-
var data = response.data;
119-
var res = responseGetCheckins(data, event);
120-
if (res.error != null && res.error!.isNotEmpty) {
121-
_error = res.error!;
122-
_loadingUser = false;
123-
if (_mounted) notifyListeners();
124-
return;
125-
}
126-
127-
if (res.checkedIn) {
128-
// user is already checked in
138+
var res1 = await checkIfUserCheckedIn();
139+
if (res1 == true) {
129140
_error = "User is already checked in to this event";
130141
_loadingUser = false;
131142
if (_mounted) notifyListeners();
132143
return;
133144
}
134-
135145
// check for rsvp
136146
if (event.requireRSVP == true) {
137147
// check if user has rsvp'd
@@ -200,25 +210,37 @@ class CheckinViewModel extends ChangeNotifier {
200210
// }
201211
// }
202212
// ''');
203-
Checkin c = Checkin(
204-
user: _user.username,
205-
userName: _user.attributes["name"],
206-
createdBy: currentUser.username,
207-
createdByName: currentUserName,
208-
event: event);
209-
210-
var request2 = ModelMutations.create(c);
211-
var operation2 = Amplify.API.mutate(request: request2);
212-
var response2 = await operation2.response;
213-
214-
print(response2.data);
215-
print(response2.errors);
216-
if (response2.errors.isNotEmpty) {
217-
_error = response2.errors.first.message;
218213

219-
_loadingUser = false;
220-
if (_mounted) notifyListeners();
221-
return;
214+
// attempt to check in until it works
215+
var checkinWorked = false;
216+
217+
while (!checkinWorked) {
218+
Checkin c = Checkin(
219+
user: _user.username,
220+
userName: _user.attributes["name"],
221+
createdBy: currentUser.username,
222+
createdByName: currentUserName,
223+
event: event);
224+
225+
var request2 = ModelMutations.create(c);
226+
var operation2 = Amplify.API.mutate(request: request2);
227+
var response2 = await operation2.response;
228+
229+
print(response2.data);
230+
print(response2.errors);
231+
if (response2.errors.isNotEmpty) {
232+
_error = response2.errors.first.message;
233+
234+
_loadingUser = false;
235+
if (_mounted) notifyListeners();
236+
return;
237+
}
238+
239+
// check if user is already checked in
240+
var res1 = await checkIfUserCheckedIn();
241+
if (res1 == true) {
242+
checkinWorked = true;
243+
}
222244
}
223245

224246
// final predicate = Points.USERID.eq(_user.username);

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
1717
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
1818
# In Windows, build-name is used as the major, minor, and patch parts
1919
# of the product and file versions while build-number is used as the build suffix.
20-
version: 1.1.1
20+
version: 1.1.2
2121

2222
environment:
2323
sdk: '>=2.18.5 <3.0.0'

0 commit comments

Comments
 (0)