Skip to content

Commit

Permalink
Merge pull request JordyHers-org#227 from JordyHers-org/feature/154-r…
Browse files Browse the repository at this point in the history
…evamp-app-look

Feature/154 revamp app look
  • Loading branch information
JordyHers committed Oct 31, 2023
2 parents a63cc2e + 4c7c9b1 commit 45b41ca
Show file tree
Hide file tree
Showing 19 changed files with 161 additions and 106 deletions.
4 changes: 3 additions & 1 deletion .idea/libraries/Flutter_Plugins.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
compileSdkVersion 33
compileSdkVersion 34

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
Expand Down
1 change: 1 addition & 0 deletions android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />

<application
Expand Down
3 changes: 0 additions & 3 deletions android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,6 @@ allprojects {
repositories {
google()
jcenter()
maven {
url "${project(':background_fetch').projectDir}/libs"
}
}
}

Expand Down
35 changes: 0 additions & 35 deletions lib/app/config/android_config.dart
Original file line number Diff line number Diff line change
@@ -1,36 +1 @@
import 'package:background_fetch/background_fetch.dart';
import 'package:times_up_flutter/widgets/show_logger.dart';

@pragma('vm:entry-point')
Future<void> backgroundFetchHeadlessTask(HeadlessTask task) async {
final taskId = task.taskId;
final isTimeout = task.timeout;

JHLogger.$.e('[BackgroundFetch] Headless event received.');

if (isTimeout) {
JHLogger.$.e('[BackgroundFetch] Headless task timed-out: $taskId');
BackgroundFetch.finish(taskId);
return;
}
}

Future<void> configureBackgroundFetch() async {
await BackgroundFetch.configure(
BackgroundFetchConfig(
minimumFetchInterval: 1,
stopOnTerminate: false,
enableHeadless: true,
requiresBatteryNotLow: false,
requiresCharging: false,
requiresStorageNotLow: false,
requiresDeviceIdle: false,
requiredNetworkType: NetworkType.NONE,
),
backgroundFetchHeadlessTask,
).then((int status) {
JHLogger.$.e('[BackgroundFetch] Headless task timed-out- $status');
}).catchError((Object e) {
JHLogger.$.d('[BackgroundFetch] configure ERROR: $e');
});
}
1 change: 0 additions & 1 deletion lib/app/features/child_side/child_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,6 @@ class _ChildPageState extends State<ChildPage> with WidgetsBindingObserver {
@override
void initState() {
super.initState();

WidgetsBinding.instance.addObserver(this);
}

Expand Down
13 changes: 7 additions & 6 deletions lib/app/features/child_side/set_child_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -56,26 +56,27 @@ class _SetChildPageState extends State<SetChildPage> {
}

Future<void> _submit(String name, String key, BuildContext context) async {
final database = Provider.of<Database>(context, listen: false);
final databaseStore = Provider.of<Database>(context, listen: false);
final geo = Provider.of<GeoLocatorService>(context, listen: false);
final apps = Provider.of<AppUsageService>(context, listen: false);
final appUsage = Provider.of<AppUsageService>(context, listen: false);
final position = await geo.getInitialLocation();
final battery = await Battery().batteryLevel;

try {
final response = await database.getUserCurrentChild(
final response = await databaseStore.getUserCurrentChild(
key,
apps,
appUsage,
GeoPoint(position.latitude, position.longitude),
battery: battery.toString(),
);
JHLogger.$.d('RESPONSE : $response');

try {
if (mounted) {
await Navigator.of(context).pushReplacement(
MaterialPageRoute<ChildPage>(
fullscreenDialog: true,
builder: (context) =>
ChildPage.create(context, database, response),
ChildPage.create(context, databaseStore, response),
),
);
}
Expand Down
3 changes: 2 additions & 1 deletion lib/app/features/parent_side/notification_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,8 @@ class _NotificationPageState extends State<NotificationPage> {

Future<void> _delete(BuildContext context, NotificationModel model) async {
try {
await widget.database?.deleteNotification(model.id!);
await widget.database
?.deleteNotification(model.timeStamp!.toIso8601String());
} on FirebaseException catch (e) {
await showExceptionAlertDialog(
context,
Expand Down
2 changes: 1 addition & 1 deletion lib/app/features/parent_side/parent_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ class _ParentPageState extends State<ParentPage>

Widget _buildNotificationPage(AuthBase auth) {
return Provider<NotificationService>(
create: (_) => NotificationService(),
create: (context) => NotificationService(),
builder: (context, __) {
return NotificationPage.create(context, auth);
},
Expand Down
9 changes: 2 additions & 7 deletions lib/main_development.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import 'package:flutter/material.dart';
import 'package:package_info_plus/package_info_plus.dart';
import 'package:provider/provider.dart';
import 'package:times_up_flutter/app/app.dart';
import 'package:times_up_flutter/app/config/android_config.dart';
import 'package:times_up_flutter/bootstrap.dart';
import 'package:times_up_flutter/firebase_options_dev.dart';
import 'package:times_up_flutter/services/app_info_service.dart';
Expand All @@ -18,12 +17,12 @@ import 'package:times_up_flutter/theme/theme_notifier.dart';

Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
final packageInfo = await PackageInfo.fromPlatform();
late final packageInfo;
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
).whenComplete(() async {
packageInfo = await PackageInfo.fromPlatform();
await _notificationServiceListener();
await _backgroundListener();
});

await bootstrap(
Expand Down Expand Up @@ -53,10 +52,6 @@ Future<void> main() async {
);
}

Future<void> _backgroundListener() async {
await configureBackgroundFetch();
}

Future<void> _notificationServiceListener() async {
final notificationService = NotificationService();
await notificationService.initialize().whenComplete(
Expand Down
3 changes: 2 additions & 1 deletion lib/main_production.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,11 @@ import 'package:times_up_flutter/theme/theme_notifier.dart';

Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
PackageInfo packageInfo = await PackageInfo.fromPlatform();
late final packageInfo;
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
).whenComplete(() async {
packageInfo = await PackageInfo.fromPlatform();
await _notificationServiceListener();
});

Expand Down
3 changes: 2 additions & 1 deletion lib/main_staging.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,11 @@ import 'package:times_up_flutter/theme/theme_notifier.dart';

Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
PackageInfo packageInfo = await PackageInfo.fromPlatform();
late final packageInfo;
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
).whenComplete(() async {
packageInfo = await PackageInfo.fromPlatform();
await _notificationServiceListener();
});

Expand Down
5 changes: 3 additions & 2 deletions lib/services/api_path.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,13 @@ class APIPath {

static String children(String uid) => 'users/$uid/child/';

static String notifications(String uid, String childId) =>
'users/$uid/notifications/$childId';
static String notifications(String uid, String timestamp) =>
'users/$uid/notifications/$timestamp';

static String notificationsStream(String uid, String childId) =>
'users/$uid/notifications/';

static String mail() => 'mail/';

static String deviceToken() => 'DeviceTokens/';
}
39 changes: 22 additions & 17 deletions lib/services/database.dart
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,17 @@ import 'package:times_up_flutter/utils/constants.dart';
import 'package:times_up_flutter/widgets/show_logger.dart';

abstract class Database {
Future<void> setChild(ChildModel model);
ChildModel? get currentChild;

Future<void> liveUpdateChild(
ChildModel model,
AppUsageService apps,
);
Future<void> setChild(ChildModel model);

Future<void> updateChild(ChildModel model);

Future<void> deleteChild(ChildModel model);

Future<void> deleteNotification(String id);
Future<void> deleteNotification(String timestamp);

Future<void> sendEmail({required EmailModel email});

Stream<List<ChildModel>> childrenStream();

Expand All @@ -35,7 +34,10 @@ abstract class Database {
ChildModel model,
);

Future<void> sendEmail({required EmailModel email});
Future<void> liveUpdateChild(
ChildModel model,
AppUsageService apps,
);

Future<ChildModel> getUserCurrentChild(
String key,
Expand All @@ -46,10 +48,11 @@ abstract class Database {
}

class FireStoreDatabase implements Database {
FireStoreDatabase({
required this.uid,
required this.auth,
}) {
factory FireStoreDatabase({required String uid, required AuthBase auth}) {
return _singleton ??= FireStoreDatabase._internal(uid, auth);
}

FireStoreDatabase._internal(this.uid, this.auth) {
if (auth.isFirstLogin) {
sendEmail(
email: EmailModel(
Expand All @@ -63,14 +66,15 @@ class FireStoreDatabase implements Database {
).then((value) => auth.setFirstLogin(isFirstLogin: false));
}
}

static FireStoreDatabase? _singleton;
GeoLocatorService geo = GeoLocatorService();
final String uid;
final AuthBase auth;
ChildModel? _child;

final _service = FireStoreService.instance;

GeoLocatorService geo = GeoLocatorService();
@override
ChildModel? get currentChild => _child;

@override
Future<void> setChild(ChildModel model) => _service.setData(
Expand Down Expand Up @@ -119,8 +123,8 @@ class FireStoreDatabase implements Database {
}

@override
Future<void> deleteNotification(String id) async {
await _service.deleteData(path: APIPath.notifications(uid, id));
Future<void> deleteNotification(String timestamp) async {
await _service.deleteData(path: APIPath.notifications(uid, timestamp));
}

@override
Expand Down Expand Up @@ -151,7 +155,7 @@ class FireStoreDatabase implements Database {
) async {
await apps.getAppUsageService();

final point = await geo.getInitialLocation();
final point = await geo.getCurrentLocation.last;
final currentLocation = GeoPoint(point.latitude, point.longitude);

_child = ChildModel(
Expand All @@ -166,6 +170,7 @@ class FireStoreDatabase implements Database {
);

await updateChild(_child!);
JHLogger.$.e('Child Updated : $_child');
}

@override
Expand Down
12 changes: 8 additions & 4 deletions lib/services/firestore_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_storage/firebase_storage.dart';
import 'package:flutter/foundation.dart';
import 'package:times_up_flutter/models/notification_model/notification_model.dart';
import 'package:times_up_flutter/widgets/show_logger.dart';

Expand Down Expand Up @@ -36,7 +35,9 @@ class FireStoreService {
required String path,
required Map<String, dynamic> data,
}) async {
final reference = FirebaseFirestore.instance.collection(path).doc();
final reference = FirebaseFirestore.instance
.collection(path)
.doc(data['timeStamp'] as String);
JHLogger.$.d('$path: $data');

await reference.set(data);
Expand Down Expand Up @@ -79,8 +80,11 @@ class FireStoreService {
await reference.delete();
}

debugPrint('delete: $path');
await reference.delete();
try {
await reference.delete();
} catch (e) {
JHLogger.$.e(e);
}
}

Stream<List<T>> collectionStream<T>({
Expand Down
1 change: 1 addition & 0 deletions lib/services/geo_locator_service.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ class GeoLocatorService {

Future<Position> getInitialLocation() async {
permission = await Geolocator.requestPermission();

if (permission == LocationPermission.denied) {
return Future.error('Location permissions are denied');
}
Expand Down
Loading

0 comments on commit 45b41ca

Please sign in to comment.