diff --git a/lib/api/marianumcloud/talk/getParticipants/getParticipantsResponse.dart b/lib/api/marianumcloud/talk/getParticipants/getParticipantsResponse.dart index e6f495c..85b99fb 100644 --- a/lib/api/marianumcloud/talk/getParticipants/getParticipantsResponse.dart +++ b/lib/api/marianumcloud/talk/getParticipants/getParticipantsResponse.dart @@ -1,6 +1,7 @@ import 'package:json_annotation/json_annotation.dart'; -import 'package:marianum_mobile/api/apiResponse.dart'; + +import '../../../apiResponse.dart'; part 'getParticipantsResponse.g.dart'; diff --git a/lib/api/marianumcloud/talk/getReactions/getReactionsResponse.dart b/lib/api/marianumcloud/talk/getReactions/getReactionsResponse.dart index a2c73d6..419389a 100644 --- a/lib/api/marianumcloud/talk/getReactions/getReactionsResponse.dart +++ b/lib/api/marianumcloud/talk/getReactions/getReactionsResponse.dart @@ -1,5 +1,6 @@ import 'package:json_annotation/json_annotation.dart'; -import 'package:marianum_mobile/api/apiResponse.dart'; + +import '../../../apiResponse.dart'; part 'getReactionsResponse.g.dart'; diff --git a/lib/api/marianumcloud/talk/talkApi.dart b/lib/api/marianumcloud/talk/talkApi.dart index 233232b..12ca1df 100644 --- a/lib/api/marianumcloud/talk/talkApi.dart +++ b/lib/api/marianumcloud/talk/talkApi.dart @@ -1,13 +1,13 @@ import 'dart:developer'; import 'package:http/http.dart' as http; -import 'package:marianum_mobile/api/apiResponse.dart'; import '../../../model/accountData.dart'; import '../../../model/endpointData.dart'; import '../../apiError.dart'; import '../../apiParams.dart'; import '../../apiRequest.dart'; +import '../../apiResponse.dart'; enum TalkApiMethod { get, diff --git a/lib/api/requestCache.dart b/lib/api/requestCache.dart index 8e15830..b08c89a 100644 --- a/lib/api/requestCache.dart +++ b/lib/api/requestCache.dart @@ -1,8 +1,8 @@ import 'dart:convert'; import 'package:localstore/localstore.dart'; -import 'package:marianum_mobile/api/apiResponse.dart'; +import 'apiResponse.dart'; import 'webuntis/webuntisError.dart'; abstract class RequestCache { diff --git a/lib/extensions/renderNotNull.dart b/lib/extensions/renderNotNull.dart new file mode 100644 index 0000000..86d9207 --- /dev/null +++ b/lib/extensions/renderNotNull.dart @@ -0,0 +1,5 @@ +extension RenderNotNullExt on T? { + R? wrapNullable(R Function(T data) defaultValueCallback) { + return this != null ? defaultValueCallback(this as T) : null; + } +} \ No newline at end of file diff --git a/lib/view/pages/overhang.dart b/lib/view/pages/overhang.dart index be3f4e1..0da5293 100644 --- a/lib/view/pages/overhang.dart +++ b/lib/view/pages/overhang.dart @@ -1,11 +1,14 @@ +import 'dart:io'; + import 'package:flutter/material.dart'; import 'package:in_app_review/in_app_review.dart'; -import 'package:marianum_mobile/widget/infoDialog.dart'; +import 'package:marianum_mobile/extensions/renderNotNull.dart'; import 'package:persistent_bottom_nav_bar_v2/persistent-tab-view.dart'; import '../../widget/ListItem.dart'; import '../../widget/centeredLeading.dart'; +import '../../widget/infoDialog.dart'; import '../settings/settings.dart'; import 'more/feedback/feedbackDialog.dart'; import 'more/gradeAverages/gradeAverage.dart'; @@ -37,6 +40,7 @@ class Overhang extends StatelessWidget { ListTile( leading: const Icon(Icons.share_outlined), title: const Text("Teile die App"), + subtitle: const Text("Mit Freunden und deiner Klasse teilen"), trailing: const Icon(Icons.arrow_right), onTap: () => showDialog(context: context, builder: (context) => const SelectShareTypeDialog()) ), @@ -45,11 +49,18 @@ class Overhang extends StatelessWidget { builder: (context, snapshot) { if(!snapshot.hasData) return const SizedBox.shrink(); + String? getPlatformStoreName() { + if(Platform.isAndroid) return "Play store"; + if(Platform.isIOS) return "App store"; + return null; + } + return Visibility( visible: snapshot.requireData, child: ListTile( leading: const CenteredLeading(Icon(Icons.star_rate_outlined)), title: const Text("App Bewerten"), + subtitle: getPlatformStoreName().wrapNullable((data) => Text("Im $data")), trailing: const Icon(Icons.arrow_right), onTap: () { InAppReview.instance.openStoreListing(appStoreId: "6458789560").then(