Skip to content

Commit

Permalink
fix: update Fitbit integration and callback URLs
Browse files Browse the repository at this point in the history
  • Loading branch information
ibrahimozkn committed Jan 11, 2025
1 parent e7585ab commit c3b9251
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 20 deletions.
2 changes: 1 addition & 1 deletion app/android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="YOUR_CALLBACK_URL_SCHEME_HERE" />
<data android:scheme="example" />
</intent-filter>
</activity>
<!-- End flutter_web_auth -->
Expand Down
4 changes: 2 additions & 2 deletions app/lib/constants.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const String playStoreUrl =
'https://play.google.com/store/apps/details?id=health.studyu.app';
const String appstoreUrl = 'https://itunes.apple.com/app/id1571991198';
const String fitbitRedirectUrl = 'https://studyu.app/fitbit';
const String fitbitCallbackScheme = 'studyuapp';
const String fitbitRedirectUrl = 'example://fitbit/auth';
const String fitbitCallbackScheme = 'example';
26 changes: 19 additions & 7 deletions app/lib/util/fitbit_handler.dart
Original file line number Diff line number Diff line change
Expand Up @@ -160,11 +160,19 @@ class FitbitHandler {
StudySubject subject,
String taskId,
) async {
final SubjectProgress latestDataEntry = subject.progress.lastWhere(
if (subject.progress.isEmpty) {
return null;
}

final SubjectProgress? latestDataEntry = subject.progress.lastWhere(
(entry) =>
entry.taskId == taskId && entry.resultType == 'QuestionnaireState',
);

if (latestDataEntry == null) {
return null;
}

final questionnaireState = latestDataEntry.result as QuestionnaireState;
final latestData = questionnaireState.answers.entries.where(
(entry) => entry.key.startsWith('fitbit'),
Expand All @@ -188,14 +196,18 @@ class FitbitHandler {
clientSecret: studyCredentials.clientSecret,
);

final fitbitter.FitbitHeartRateIntradayAPIURL
fitbitHeartRateIntradayAPIURL =
fitbitter.FitbitHeartRateIntradayAPIURL fitbitHeartRateIntradayAPIURL =
fitbitter.FitbitHeartRateIntradayAPIURL.dayAndDetailLevel(
date: date,
date: DateTime.now(),
fitbitCredentials: credentials,
intradayDetailLevel: fitbitter.IntradayDetailLevel.ONE_MINUTE,
);

/*FitbitHeartRateIntradayDataManager fitbitHeartRateIntradayDataManager = FitbitHeartRateIntradayDataManager(
clientID: '<OAuth 2.0 Client ID>',
clientSecret: '<Client Secret>',
);*/

final List<fitbitter.FitbitHeartRateIntradayData>
fitbitHeartRateIntradayData = await fitbitHeartRateIntradayDataManager
.fetch(fitbitHeartRateIntradayAPIURL)
Expand All @@ -206,15 +218,15 @@ class FitbitHandler {
.toList();
}

static Future<bool> syncFitbitData(
static Future<List<FitbitData>> syncFitbitData(
Study study,
FitbitQuestion question,
String taskId,
StudySubject subject,
) async {
final fitbitCredentials = await _obtainCredentials(study);
if (fitbitCredentials == null) {
return false;
return [];
}

final fitbitData = await _getFitbitData(
Expand All @@ -227,6 +239,6 @@ class FitbitHandler {

print(fitbitData);

return true;
return fitbitData;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ class _FitbitQuestionWidgetState extends State<FitbitQuestionWidget> {
}

Future<void> _syncFitbitData() async {
final Study study = context.read<AppState>().selectedStudy!;
final Study study = context.read<AppState>().activeSubject!.study;

final success = await FitbitHandler.syncFitbitData(
study,
Expand All @@ -40,7 +40,11 @@ class _FitbitQuestionWidgetState extends State<FitbitQuestionWidget> {
context.read<AppState>().activeSubject!,
);

print(success);
for (final data in success) {
StudyULogger.info(
'Synced Fitbit Data: ${(data as FitbitHeartData).value}');
}
StudyULogger.info('Synced Fitbit Data');
}

@override
Expand Down
15 changes: 8 additions & 7 deletions app/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -308,10 +308,11 @@ packages:
fitbitter:
dependency: "direct main"
description:
name: fitbitter
sha256: beab800f4771867bdffee7ae106ada1eb9582b57e674d1f71fd047ce2c89fed1
url: "https://pub.dev"
source: hosted
path: "."
ref: master
resolved-ref: "660bb548be2cd3e60b49a520464cc6384b62bc2b"
url: "https://github.com/ibrahimozkn/fitbitter.git"
source: git
version: "2.0.4"
fixnum:
dependency: transitive
Expand Down Expand Up @@ -484,10 +485,10 @@ packages:
dependency: transitive
description:
name: flutter_web_auth
sha256: a69fa8f43b9e4d86ac72176bf747b735e7b977dd7cf215076d95b87cb05affdd
sha256: "95e4856e24fb6ac1678f5ff334743b63f782d839ab324543d29ccbd295176209"
url: "https://pub.dev"
source: hosted
version: "0.5.0"
version: "0.6.0"
flutter_web_plugins:
dependency: "direct main"
description: flutter
Expand Down Expand Up @@ -1593,5 +1594,5 @@ packages:
source: hosted
version: "2.0.3"
sdks:
dart: ">=3.5.0 <4.0.0"
dart: ">=3.5.3 <4.0.0"
flutter: ">=3.24.0"
5 changes: 4 additions & 1 deletion app/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,10 @@ dependencies:
url_launcher: ^6.3.0
uuid: ^4.5.1
wakelock_plus: ^1.2.8
fitbitter: ^2.0.4
fitbitter:
git:
url: https://github.com/ibrahimozkn/fitbitter.git
ref: master

dev_dependencies:
flutter_launcher_icons: ^0.14.1
Expand Down

0 comments on commit c3b9251

Please sign in to comment.