Manually merged.

This commit is contained in:
Oliver Hauff 2021-12-08 17:57:30 +01:00
parent d5832e010e
commit c7c9f252af
112 changed files with 1127 additions and 352 deletions

View file

@ -60,7 +60,9 @@
<BundleAssemblies>false</BundleAssemblies>
<AndroidSupportedAbis>armeabi-v7a;x86;x86_64;arm64-v8a</AndroidSupportedAbis>
<MandroidI18n />
<AndroidPackageFormat>apk</AndroidPackageFormat>
<AndroidPackageFormat>aab</AndroidPackageFormat>
<AndroidUseAapt2>true</AndroidUseAapt2>
<AndroidCreatePackagePerAbi>false</AndroidCreatePackagePerAbi>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />

View file

@ -4,6 +4,7 @@ using Android.Content.PM;
using Android.OS;
using Android.Content;
using Java.Interop;
using Plugin.Permissions;
namespace TINK.Droid
{
@ -51,7 +52,13 @@ namespace TINK.Droid
{
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
else if (App.PermissionsService.GetType() == typeof(TINK.Services.Permissions.Plugin.Permissions))
{
// Bug in 3.0.244 and earlier versions of sharee.bike app: Call of PermissionsImplementation.Current.OnRequestedPermission result was missing.
// see https://dev.azure.com/TeilRad/sharee.bike%20Buchungsplattform/_workitems/edit/136 for further details.
PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}

View file

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.TeilRad.LastenradBayern" android:versionName="3.0.262" android:versionCode="262">
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.TeilRad.LastenradBayern" android:versionName="3.0.263" android:versionCode="263">
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="30" />
<!-- Google Maps related permissions -->
<!-- Permission to receive remote notifications from Google Play Services -->
<!-- Notice here that we have the package name of our application as a prefix on the permissions. -->
<permission android:name="com.TeilRad.LastenradBayern.permission.MAPS_RECEIVE" android:protectionLevel="signature" />
<!-- Permission to receive remote notifications from Google Play Services -->
<!-- Notice here that we have the package name of our application as a prefix on the permissions. -->
<permission android:name="com.TeilRad.LastenradBayern.permission.MAPS_RECEIVE" android:protectionLevel="signature" />
<!-- Network connectivity permissions -->
<!-- Access Google based webservices -->
<!-- External storage for caching. -->

View file

@ -14,7 +14,7 @@ namespace TINK.Droid
{
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "12.1.0.11")]
public partial class Resource
{
@ -29,6 +29,228 @@ namespace TINK.Droid
global::PCLCrypto.Resource.String.Hello = global::TINK.Droid.Resource.String.Hello;
global::PCLStorage.Resource.String.ApplicationName = global::TINK.Droid.Resource.String.ApplicationName;
global::PCLStorage.Resource.String.Hello = global::TINK.Droid.Resource.String.Hello;
global::Plugin.Permissions.Resource.Attribute.alpha = global::TINK.Droid.Resource.Attribute.alpha;
global::Plugin.Permissions.Resource.Attribute.coordinatorLayoutStyle = global::TINK.Droid.Resource.Attribute.coordinatorLayoutStyle;
global::Plugin.Permissions.Resource.Attribute.font = global::TINK.Droid.Resource.Attribute.font;
global::Plugin.Permissions.Resource.Attribute.fontProviderAuthority = global::TINK.Droid.Resource.Attribute.fontProviderAuthority;
global::Plugin.Permissions.Resource.Attribute.fontProviderCerts = global::TINK.Droid.Resource.Attribute.fontProviderCerts;
global::Plugin.Permissions.Resource.Attribute.fontProviderFetchStrategy = global::TINK.Droid.Resource.Attribute.fontProviderFetchStrategy;
global::Plugin.Permissions.Resource.Attribute.fontProviderFetchTimeout = global::TINK.Droid.Resource.Attribute.fontProviderFetchTimeout;
global::Plugin.Permissions.Resource.Attribute.fontProviderPackage = global::TINK.Droid.Resource.Attribute.fontProviderPackage;
global::Plugin.Permissions.Resource.Attribute.fontProviderQuery = global::TINK.Droid.Resource.Attribute.fontProviderQuery;
global::Plugin.Permissions.Resource.Attribute.fontStyle = global::TINK.Droid.Resource.Attribute.fontStyle;
global::Plugin.Permissions.Resource.Attribute.fontVariationSettings = global::TINK.Droid.Resource.Attribute.fontVariationSettings;
global::Plugin.Permissions.Resource.Attribute.fontWeight = global::TINK.Droid.Resource.Attribute.fontWeight;
global::Plugin.Permissions.Resource.Attribute.keylines = global::TINK.Droid.Resource.Attribute.keylines;
global::Plugin.Permissions.Resource.Attribute.layout_anchor = global::TINK.Droid.Resource.Attribute.layout_anchor;
global::Plugin.Permissions.Resource.Attribute.layout_anchorGravity = global::TINK.Droid.Resource.Attribute.layout_anchorGravity;
global::Plugin.Permissions.Resource.Attribute.layout_behavior = global::TINK.Droid.Resource.Attribute.layout_behavior;
global::Plugin.Permissions.Resource.Attribute.layout_dodgeInsetEdges = global::TINK.Droid.Resource.Attribute.layout_dodgeInsetEdges;
global::Plugin.Permissions.Resource.Attribute.layout_insetEdge = global::TINK.Droid.Resource.Attribute.layout_insetEdge;
global::Plugin.Permissions.Resource.Attribute.layout_keyline = global::TINK.Droid.Resource.Attribute.layout_keyline;
global::Plugin.Permissions.Resource.Attribute.statusBarBackground = global::TINK.Droid.Resource.Attribute.statusBarBackground;
global::Plugin.Permissions.Resource.Attribute.ttcIndex = global::TINK.Droid.Resource.Attribute.ttcIndex;
global::Plugin.Permissions.Resource.Color.browser_actions_bg_grey = global::TINK.Droid.Resource.Color.browser_actions_bg_grey;
global::Plugin.Permissions.Resource.Color.browser_actions_divider_color = global::TINK.Droid.Resource.Color.browser_actions_divider_color;
global::Plugin.Permissions.Resource.Color.browser_actions_text_color = global::TINK.Droid.Resource.Color.browser_actions_text_color;
global::Plugin.Permissions.Resource.Color.browser_actions_title_color = global::TINK.Droid.Resource.Color.browser_actions_title_color;
global::Plugin.Permissions.Resource.Color.notification_action_color_filter = global::TINK.Droid.Resource.Color.notification_action_color_filter;
global::Plugin.Permissions.Resource.Color.notification_icon_bg_color = global::TINK.Droid.Resource.Color.notification_icon_bg_color;
global::Plugin.Permissions.Resource.Color.ripple_material_light = global::TINK.Droid.Resource.Color.ripple_material_light;
global::Plugin.Permissions.Resource.Color.secondary_text_default_material_light = global::TINK.Droid.Resource.Color.secondary_text_default_material_light;
global::Plugin.Permissions.Resource.Dimension.browser_actions_context_menu_max_width = global::TINK.Droid.Resource.Dimension.browser_actions_context_menu_max_width;
global::Plugin.Permissions.Resource.Dimension.browser_actions_context_menu_min_padding = global::TINK.Droid.Resource.Dimension.browser_actions_context_menu_min_padding;
global::Plugin.Permissions.Resource.Dimension.compat_button_inset_horizontal_material = global::TINK.Droid.Resource.Dimension.compat_button_inset_horizontal_material;
global::Plugin.Permissions.Resource.Dimension.compat_button_inset_vertical_material = global::TINK.Droid.Resource.Dimension.compat_button_inset_vertical_material;
global::Plugin.Permissions.Resource.Dimension.compat_button_padding_horizontal_material = global::TINK.Droid.Resource.Dimension.compat_button_padding_horizontal_material;
global::Plugin.Permissions.Resource.Dimension.compat_button_padding_vertical_material = global::TINK.Droid.Resource.Dimension.compat_button_padding_vertical_material;
global::Plugin.Permissions.Resource.Dimension.compat_control_corner_material = global::TINK.Droid.Resource.Dimension.compat_control_corner_material;
global::Plugin.Permissions.Resource.Dimension.compat_notification_large_icon_max_height = global::TINK.Droid.Resource.Dimension.compat_notification_large_icon_max_height;
global::Plugin.Permissions.Resource.Dimension.compat_notification_large_icon_max_width = global::TINK.Droid.Resource.Dimension.compat_notification_large_icon_max_width;
global::Plugin.Permissions.Resource.Dimension.notification_action_icon_size = global::TINK.Droid.Resource.Dimension.notification_action_icon_size;
global::Plugin.Permissions.Resource.Dimension.notification_action_text_size = global::TINK.Droid.Resource.Dimension.notification_action_text_size;
global::Plugin.Permissions.Resource.Dimension.notification_big_circle_margin = global::TINK.Droid.Resource.Dimension.notification_big_circle_margin;
global::Plugin.Permissions.Resource.Dimension.notification_content_margin_start = global::TINK.Droid.Resource.Dimension.notification_content_margin_start;
global::Plugin.Permissions.Resource.Dimension.notification_large_icon_height = global::TINK.Droid.Resource.Dimension.notification_large_icon_height;
global::Plugin.Permissions.Resource.Dimension.notification_large_icon_width = global::TINK.Droid.Resource.Dimension.notification_large_icon_width;
global::Plugin.Permissions.Resource.Dimension.notification_main_column_padding_top = global::TINK.Droid.Resource.Dimension.notification_main_column_padding_top;
global::Plugin.Permissions.Resource.Dimension.notification_media_narrow_margin = global::TINK.Droid.Resource.Dimension.notification_media_narrow_margin;
global::Plugin.Permissions.Resource.Dimension.notification_right_icon_size = global::TINK.Droid.Resource.Dimension.notification_right_icon_size;
global::Plugin.Permissions.Resource.Dimension.notification_right_side_padding_top = global::TINK.Droid.Resource.Dimension.notification_right_side_padding_top;
global::Plugin.Permissions.Resource.Dimension.notification_small_icon_background_padding = global::TINK.Droid.Resource.Dimension.notification_small_icon_background_padding;
global::Plugin.Permissions.Resource.Dimension.notification_small_icon_size_as_large = global::TINK.Droid.Resource.Dimension.notification_small_icon_size_as_large;
global::Plugin.Permissions.Resource.Dimension.notification_subtext_size = global::TINK.Droid.Resource.Dimension.notification_subtext_size;
global::Plugin.Permissions.Resource.Dimension.notification_top_pad = global::TINK.Droid.Resource.Dimension.notification_top_pad;
global::Plugin.Permissions.Resource.Dimension.notification_top_pad_large_text = global::TINK.Droid.Resource.Dimension.notification_top_pad_large_text;
global::Plugin.Permissions.Resource.Drawable.notification_action_background = global::TINK.Droid.Resource.Drawable.notification_action_background;
global::Plugin.Permissions.Resource.Drawable.notification_bg = global::TINK.Droid.Resource.Drawable.notification_bg;
global::Plugin.Permissions.Resource.Drawable.notification_bg_low = global::TINK.Droid.Resource.Drawable.notification_bg_low;
global::Plugin.Permissions.Resource.Drawable.notification_bg_low_normal = global::TINK.Droid.Resource.Drawable.notification_bg_low_normal;
global::Plugin.Permissions.Resource.Drawable.notification_bg_low_pressed = global::TINK.Droid.Resource.Drawable.notification_bg_low_pressed;
global::Plugin.Permissions.Resource.Drawable.notification_bg_normal = global::TINK.Droid.Resource.Drawable.notification_bg_normal;
global::Plugin.Permissions.Resource.Drawable.notification_bg_normal_pressed = global::TINK.Droid.Resource.Drawable.notification_bg_normal_pressed;
global::Plugin.Permissions.Resource.Drawable.notification_icon_background = global::TINK.Droid.Resource.Drawable.notification_icon_background;
global::Plugin.Permissions.Resource.Drawable.notification_template_icon_bg = global::TINK.Droid.Resource.Drawable.notification_template_icon_bg;
global::Plugin.Permissions.Resource.Drawable.notification_template_icon_low_bg = global::TINK.Droid.Resource.Drawable.notification_template_icon_low_bg;
global::Plugin.Permissions.Resource.Drawable.notification_tile_bg = global::TINK.Droid.Resource.Drawable.notification_tile_bg;
global::Plugin.Permissions.Resource.Drawable.notify_panel_notification_icon_bg = global::TINK.Droid.Resource.Drawable.notify_panel_notification_icon_bg;
global::Plugin.Permissions.Resource.Id.accessibility_action_clickable_span = global::TINK.Droid.Resource.Id.accessibility_action_clickable_span;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_0 = global::TINK.Droid.Resource.Id.accessibility_custom_action_0;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_1 = global::TINK.Droid.Resource.Id.accessibility_custom_action_1;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_10 = global::TINK.Droid.Resource.Id.accessibility_custom_action_10;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_11 = global::TINK.Droid.Resource.Id.accessibility_custom_action_11;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_12 = global::TINK.Droid.Resource.Id.accessibility_custom_action_12;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_13 = global::TINK.Droid.Resource.Id.accessibility_custom_action_13;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_14 = global::TINK.Droid.Resource.Id.accessibility_custom_action_14;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_15 = global::TINK.Droid.Resource.Id.accessibility_custom_action_15;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_16 = global::TINK.Droid.Resource.Id.accessibility_custom_action_16;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_17 = global::TINK.Droid.Resource.Id.accessibility_custom_action_17;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_18 = global::TINK.Droid.Resource.Id.accessibility_custom_action_18;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_19 = global::TINK.Droid.Resource.Id.accessibility_custom_action_19;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_2 = global::TINK.Droid.Resource.Id.accessibility_custom_action_2;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_20 = global::TINK.Droid.Resource.Id.accessibility_custom_action_20;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_21 = global::TINK.Droid.Resource.Id.accessibility_custom_action_21;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_22 = global::TINK.Droid.Resource.Id.accessibility_custom_action_22;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_23 = global::TINK.Droid.Resource.Id.accessibility_custom_action_23;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_24 = global::TINK.Droid.Resource.Id.accessibility_custom_action_24;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_25 = global::TINK.Droid.Resource.Id.accessibility_custom_action_25;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_26 = global::TINK.Droid.Resource.Id.accessibility_custom_action_26;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_27 = global::TINK.Droid.Resource.Id.accessibility_custom_action_27;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_28 = global::TINK.Droid.Resource.Id.accessibility_custom_action_28;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_29 = global::TINK.Droid.Resource.Id.accessibility_custom_action_29;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_3 = global::TINK.Droid.Resource.Id.accessibility_custom_action_3;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_30 = global::TINK.Droid.Resource.Id.accessibility_custom_action_30;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_31 = global::TINK.Droid.Resource.Id.accessibility_custom_action_31;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_4 = global::TINK.Droid.Resource.Id.accessibility_custom_action_4;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_5 = global::TINK.Droid.Resource.Id.accessibility_custom_action_5;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_6 = global::TINK.Droid.Resource.Id.accessibility_custom_action_6;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_7 = global::TINK.Droid.Resource.Id.accessibility_custom_action_7;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_8 = global::TINK.Droid.Resource.Id.accessibility_custom_action_8;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_9 = global::TINK.Droid.Resource.Id.accessibility_custom_action_9;
global::Plugin.Permissions.Resource.Id.actions = global::TINK.Droid.Resource.Id.actions;
global::Plugin.Permissions.Resource.Id.action_container = global::TINK.Droid.Resource.Id.action_container;
global::Plugin.Permissions.Resource.Id.action_divider = global::TINK.Droid.Resource.Id.action_divider;
global::Plugin.Permissions.Resource.Id.action_image = global::TINK.Droid.Resource.Id.action_image;
global::Plugin.Permissions.Resource.Id.action_text = global::TINK.Droid.Resource.Id.action_text;
global::Plugin.Permissions.Resource.Id.all = global::TINK.Droid.Resource.Id.all;
global::Plugin.Permissions.Resource.Id.async = global::TINK.Droid.Resource.Id.async;
global::Plugin.Permissions.Resource.Id.blocking = global::TINK.Droid.Resource.Id.blocking;
global::Plugin.Permissions.Resource.Id.bottom = global::TINK.Droid.Resource.Id.bottom;
global::Plugin.Permissions.Resource.Id.browser_actions_header_text = global::TINK.Droid.Resource.Id.browser_actions_header_text;
global::Plugin.Permissions.Resource.Id.browser_actions_menu_items = global::TINK.Droid.Resource.Id.browser_actions_menu_items;
global::Plugin.Permissions.Resource.Id.browser_actions_menu_item_icon = global::TINK.Droid.Resource.Id.browser_actions_menu_item_icon;
global::Plugin.Permissions.Resource.Id.browser_actions_menu_item_text = global::TINK.Droid.Resource.Id.browser_actions_menu_item_text;
global::Plugin.Permissions.Resource.Id.browser_actions_menu_view = global::TINK.Droid.Resource.Id.browser_actions_menu_view;
global::Plugin.Permissions.Resource.Id.center = global::TINK.Droid.Resource.Id.center;
global::Plugin.Permissions.Resource.Id.center_horizontal = global::TINK.Droid.Resource.Id.center_horizontal;
global::Plugin.Permissions.Resource.Id.center_vertical = global::TINK.Droid.Resource.Id.center_vertical;
global::Plugin.Permissions.Resource.Id.chronometer = global::TINK.Droid.Resource.Id.chronometer;
global::Plugin.Permissions.Resource.Id.clip_horizontal = global::TINK.Droid.Resource.Id.clip_horizontal;
global::Plugin.Permissions.Resource.Id.clip_vertical = global::TINK.Droid.Resource.Id.clip_vertical;
global::Plugin.Permissions.Resource.Id.dialog_button = global::TINK.Droid.Resource.Id.dialog_button;
global::Plugin.Permissions.Resource.Id.end = global::TINK.Droid.Resource.Id.end;
global::Plugin.Permissions.Resource.Id.fill = global::TINK.Droid.Resource.Id.fill;
global::Plugin.Permissions.Resource.Id.fill_horizontal = global::TINK.Droid.Resource.Id.fill_horizontal;
global::Plugin.Permissions.Resource.Id.fill_vertical = global::TINK.Droid.Resource.Id.fill_vertical;
global::Plugin.Permissions.Resource.Id.forever = global::TINK.Droid.Resource.Id.forever;
global::Plugin.Permissions.Resource.Id.icon = global::TINK.Droid.Resource.Id.icon;
global::Plugin.Permissions.Resource.Id.icon_group = global::TINK.Droid.Resource.Id.icon_group;
global::Plugin.Permissions.Resource.Id.info = global::TINK.Droid.Resource.Id.info;
global::Plugin.Permissions.Resource.Id.italic = global::TINK.Droid.Resource.Id.italic;
global::Plugin.Permissions.Resource.Id.left = global::TINK.Droid.Resource.Id.left;
global::Plugin.Permissions.Resource.Id.line1 = global::TINK.Droid.Resource.Id.line1;
global::Plugin.Permissions.Resource.Id.line3 = global::TINK.Droid.Resource.Id.line3;
global::Plugin.Permissions.Resource.Id.none = global::TINK.Droid.Resource.Id.none;
global::Plugin.Permissions.Resource.Id.normal = global::TINK.Droid.Resource.Id.normal;
global::Plugin.Permissions.Resource.Id.notification_background = global::TINK.Droid.Resource.Id.notification_background;
global::Plugin.Permissions.Resource.Id.notification_main_column = global::TINK.Droid.Resource.Id.notification_main_column;
global::Plugin.Permissions.Resource.Id.notification_main_column_container = global::TINK.Droid.Resource.Id.notification_main_column_container;
global::Plugin.Permissions.Resource.Id.right = global::TINK.Droid.Resource.Id.right;
global::Plugin.Permissions.Resource.Id.right_icon = global::TINK.Droid.Resource.Id.right_icon;
global::Plugin.Permissions.Resource.Id.right_side = global::TINK.Droid.Resource.Id.right_side;
global::Plugin.Permissions.Resource.Id.start = global::TINK.Droid.Resource.Id.start;
global::Plugin.Permissions.Resource.Id.tag_accessibility_actions = global::TINK.Droid.Resource.Id.tag_accessibility_actions;
global::Plugin.Permissions.Resource.Id.tag_accessibility_clickable_spans = global::TINK.Droid.Resource.Id.tag_accessibility_clickable_spans;
global::Plugin.Permissions.Resource.Id.tag_accessibility_heading = global::TINK.Droid.Resource.Id.tag_accessibility_heading;
global::Plugin.Permissions.Resource.Id.tag_accessibility_pane_title = global::TINK.Droid.Resource.Id.tag_accessibility_pane_title;
global::Plugin.Permissions.Resource.Id.tag_screen_reader_focusable = global::TINK.Droid.Resource.Id.tag_screen_reader_focusable;
global::Plugin.Permissions.Resource.Id.tag_transition_group = global::TINK.Droid.Resource.Id.tag_transition_group;
global::Plugin.Permissions.Resource.Id.tag_unhandled_key_event_manager = global::TINK.Droid.Resource.Id.tag_unhandled_key_event_manager;
global::Plugin.Permissions.Resource.Id.tag_unhandled_key_listeners = global::TINK.Droid.Resource.Id.tag_unhandled_key_listeners;
global::Plugin.Permissions.Resource.Id.text = global::TINK.Droid.Resource.Id.text;
global::Plugin.Permissions.Resource.Id.text2 = global::TINK.Droid.Resource.Id.text2;
global::Plugin.Permissions.Resource.Id.time = global::TINK.Droid.Resource.Id.time;
global::Plugin.Permissions.Resource.Id.title = global::TINK.Droid.Resource.Id.title;
global::Plugin.Permissions.Resource.Id.top = global::TINK.Droid.Resource.Id.top;
global::Plugin.Permissions.Resource.Integer.status_bar_notification_info_maxnum = global::TINK.Droid.Resource.Integer.status_bar_notification_info_maxnum;
global::Plugin.Permissions.Resource.Layout.browser_actions_context_menu_page = global::TINK.Droid.Resource.Layout.browser_actions_context_menu_page;
global::Plugin.Permissions.Resource.Layout.browser_actions_context_menu_row = global::TINK.Droid.Resource.Layout.browser_actions_context_menu_row;
global::Plugin.Permissions.Resource.Layout.custom_dialog = global::TINK.Droid.Resource.Layout.custom_dialog;
global::Plugin.Permissions.Resource.Layout.notification_action = global::TINK.Droid.Resource.Layout.notification_action;
global::Plugin.Permissions.Resource.Layout.notification_action_tombstone = global::TINK.Droid.Resource.Layout.notification_action_tombstone;
global::Plugin.Permissions.Resource.Layout.notification_template_custom_big = global::TINK.Droid.Resource.Layout.notification_template_custom_big;
global::Plugin.Permissions.Resource.Layout.notification_template_icon_group = global::TINK.Droid.Resource.Layout.notification_template_icon_group;
global::Plugin.Permissions.Resource.Layout.notification_template_part_chronometer = global::TINK.Droid.Resource.Layout.notification_template_part_chronometer;
global::Plugin.Permissions.Resource.Layout.notification_template_part_time = global::TINK.Droid.Resource.Layout.notification_template_part_time;
global::Plugin.Permissions.Resource.String.status_bar_notification_info_overflow = global::TINK.Droid.Resource.String.status_bar_notification_info_overflow;
global::Plugin.Permissions.Resource.Style.TextAppearance_Compat_Notification = global::TINK.Droid.Resource.Style.TextAppearance_Compat_Notification;
global::Plugin.Permissions.Resource.Style.TextAppearance_Compat_Notification_Info = global::TINK.Droid.Resource.Style.TextAppearance_Compat_Notification_Info;
global::Plugin.Permissions.Resource.Style.TextAppearance_Compat_Notification_Line2 = global::TINK.Droid.Resource.Style.TextAppearance_Compat_Notification_Line2;
global::Plugin.Permissions.Resource.Style.TextAppearance_Compat_Notification_Time = global::TINK.Droid.Resource.Style.TextAppearance_Compat_Notification_Time;
global::Plugin.Permissions.Resource.Style.TextAppearance_Compat_Notification_Title = global::TINK.Droid.Resource.Style.TextAppearance_Compat_Notification_Title;
global::Plugin.Permissions.Resource.Style.Widget_Compat_NotificationActionContainer = global::TINK.Droid.Resource.Style.Widget_Compat_NotificationActionContainer;
global::Plugin.Permissions.Resource.Style.Widget_Compat_NotificationActionText = global::TINK.Droid.Resource.Style.Widget_Compat_NotificationActionText;
global::Plugin.Permissions.Resource.Style.Widget_Support_CoordinatorLayout = global::TINK.Droid.Resource.Style.Widget_Support_CoordinatorLayout;
global::Plugin.Permissions.Resource.Styleable.ColorStateListItem = global::TINK.Droid.Resource.Styleable.ColorStateListItem;
global::Plugin.Permissions.Resource.Styleable.ColorStateListItem_alpha = global::TINK.Droid.Resource.Styleable.ColorStateListItem_alpha;
global::Plugin.Permissions.Resource.Styleable.ColorStateListItem_android_alpha = global::TINK.Droid.Resource.Styleable.ColorStateListItem_android_alpha;
global::Plugin.Permissions.Resource.Styleable.ColorStateListItem_android_color = global::TINK.Droid.Resource.Styleable.ColorStateListItem_android_color;
global::Plugin.Permissions.Resource.Styleable.CoordinatorLayout = global::TINK.Droid.Resource.Styleable.CoordinatorLayout;
global::Plugin.Permissions.Resource.Styleable.CoordinatorLayout_keylines = global::TINK.Droid.Resource.Styleable.CoordinatorLayout_keylines;
global::Plugin.Permissions.Resource.Styleable.CoordinatorLayout_Layout = global::TINK.Droid.Resource.Styleable.CoordinatorLayout_Layout;
global::Plugin.Permissions.Resource.Styleable.CoordinatorLayout_Layout_android_layout_gravity = global::TINK.Droid.Resource.Styleable.CoordinatorLayout_Layout_android_layout_gravity;
global::Plugin.Permissions.Resource.Styleable.CoordinatorLayout_Layout_layout_anchor = global::TINK.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_anchor;
global::Plugin.Permissions.Resource.Styleable.CoordinatorLayout_Layout_layout_anchorGravity = global::TINK.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_anchorGravity;
global::Plugin.Permissions.Resource.Styleable.CoordinatorLayout_Layout_layout_behavior = global::TINK.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_behavior;
global::Plugin.Permissions.Resource.Styleable.CoordinatorLayout_Layout_layout_dodgeInsetEdges = global::TINK.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_dodgeInsetEdges;
global::Plugin.Permissions.Resource.Styleable.CoordinatorLayout_Layout_layout_insetEdge = global::TINK.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_insetEdge;
global::Plugin.Permissions.Resource.Styleable.CoordinatorLayout_Layout_layout_keyline = global::TINK.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_keyline;
global::Plugin.Permissions.Resource.Styleable.CoordinatorLayout_statusBarBackground = global::TINK.Droid.Resource.Styleable.CoordinatorLayout_statusBarBackground;
global::Plugin.Permissions.Resource.Styleable.FontFamily = global::TINK.Droid.Resource.Styleable.FontFamily;
global::Plugin.Permissions.Resource.Styleable.FontFamilyFont = global::TINK.Droid.Resource.Styleable.FontFamilyFont;
global::Plugin.Permissions.Resource.Styleable.FontFamilyFont_android_font = global::TINK.Droid.Resource.Styleable.FontFamilyFont_android_font;
global::Plugin.Permissions.Resource.Styleable.FontFamilyFont_android_fontStyle = global::TINK.Droid.Resource.Styleable.FontFamilyFont_android_fontStyle;
global::Plugin.Permissions.Resource.Styleable.FontFamilyFont_android_fontVariationSettings = global::TINK.Droid.Resource.Styleable.FontFamilyFont_android_fontVariationSettings;
global::Plugin.Permissions.Resource.Styleable.FontFamilyFont_android_fontWeight = global::TINK.Droid.Resource.Styleable.FontFamilyFont_android_fontWeight;
global::Plugin.Permissions.Resource.Styleable.FontFamilyFont_android_ttcIndex = global::TINK.Droid.Resource.Styleable.FontFamilyFont_android_ttcIndex;
global::Plugin.Permissions.Resource.Styleable.FontFamilyFont_font = global::TINK.Droid.Resource.Styleable.FontFamilyFont_font;
global::Plugin.Permissions.Resource.Styleable.FontFamilyFont_fontStyle = global::TINK.Droid.Resource.Styleable.FontFamilyFont_fontStyle;
global::Plugin.Permissions.Resource.Styleable.FontFamilyFont_fontVariationSettings = global::TINK.Droid.Resource.Styleable.FontFamilyFont_fontVariationSettings;
global::Plugin.Permissions.Resource.Styleable.FontFamilyFont_fontWeight = global::TINK.Droid.Resource.Styleable.FontFamilyFont_fontWeight;
global::Plugin.Permissions.Resource.Styleable.FontFamilyFont_ttcIndex = global::TINK.Droid.Resource.Styleable.FontFamilyFont_ttcIndex;
global::Plugin.Permissions.Resource.Styleable.FontFamily_fontProviderAuthority = global::TINK.Droid.Resource.Styleable.FontFamily_fontProviderAuthority;
global::Plugin.Permissions.Resource.Styleable.FontFamily_fontProviderCerts = global::TINK.Droid.Resource.Styleable.FontFamily_fontProviderCerts;
global::Plugin.Permissions.Resource.Styleable.FontFamily_fontProviderFetchStrategy = global::TINK.Droid.Resource.Styleable.FontFamily_fontProviderFetchStrategy;
global::Plugin.Permissions.Resource.Styleable.FontFamily_fontProviderFetchTimeout = global::TINK.Droid.Resource.Styleable.FontFamily_fontProviderFetchTimeout;
global::Plugin.Permissions.Resource.Styleable.FontFamily_fontProviderPackage = global::TINK.Droid.Resource.Styleable.FontFamily_fontProviderPackage;
global::Plugin.Permissions.Resource.Styleable.FontFamily_fontProviderQuery = global::TINK.Droid.Resource.Styleable.FontFamily_fontProviderQuery;
global::Plugin.Permissions.Resource.Styleable.GradientColor = global::TINK.Droid.Resource.Styleable.GradientColor;
global::Plugin.Permissions.Resource.Styleable.GradientColorItem = global::TINK.Droid.Resource.Styleable.GradientColorItem;
global::Plugin.Permissions.Resource.Styleable.GradientColorItem_android_color = global::TINK.Droid.Resource.Styleable.GradientColorItem_android_color;
global::Plugin.Permissions.Resource.Styleable.GradientColorItem_android_offset = global::TINK.Droid.Resource.Styleable.GradientColorItem_android_offset;
global::Plugin.Permissions.Resource.Styleable.GradientColor_android_centerColor = global::TINK.Droid.Resource.Styleable.GradientColor_android_centerColor;
global::Plugin.Permissions.Resource.Styleable.GradientColor_android_centerX = global::TINK.Droid.Resource.Styleable.GradientColor_android_centerX;
global::Plugin.Permissions.Resource.Styleable.GradientColor_android_centerY = global::TINK.Droid.Resource.Styleable.GradientColor_android_centerY;
global::Plugin.Permissions.Resource.Styleable.GradientColor_android_endColor = global::TINK.Droid.Resource.Styleable.GradientColor_android_endColor;
global::Plugin.Permissions.Resource.Styleable.GradientColor_android_endX = global::TINK.Droid.Resource.Styleable.GradientColor_android_endX;
global::Plugin.Permissions.Resource.Styleable.GradientColor_android_endY = global::TINK.Droid.Resource.Styleable.GradientColor_android_endY;
global::Plugin.Permissions.Resource.Styleable.GradientColor_android_gradientRadius = global::TINK.Droid.Resource.Styleable.GradientColor_android_gradientRadius;
global::Plugin.Permissions.Resource.Styleable.GradientColor_android_startColor = global::TINK.Droid.Resource.Styleable.GradientColor_android_startColor;
global::Plugin.Permissions.Resource.Styleable.GradientColor_android_startX = global::TINK.Droid.Resource.Styleable.GradientColor_android_startX;
global::Plugin.Permissions.Resource.Styleable.GradientColor_android_startY = global::TINK.Droid.Resource.Styleable.GradientColor_android_startY;
global::Plugin.Permissions.Resource.Styleable.GradientColor_android_tileMode = global::TINK.Droid.Resource.Styleable.GradientColor_android_tileMode;
global::Plugin.Permissions.Resource.Styleable.GradientColor_android_type = global::TINK.Droid.Resource.Styleable.GradientColor_android_type;
global::Plugin.Permissions.Resource.Xml.xamarin_essentials_fileprovider_file_paths = global::TINK.Droid.Resource.Xml.xamarin_essentials_fileprovider_file_paths;
global::Xamarin.Auth.Resource.Animation.slide_in_right = global::TINK.Droid.Resource.Animation.slide_in_right;
global::Xamarin.Auth.Resource.Animation.slide_out_left = global::TINK.Droid.Resource.Animation.slide_out_left;
global::Xamarin.Auth.Resource.Attribute.alpha = global::TINK.Droid.Resource.Attribute.alpha;

View file

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
@ -49,8 +49,8 @@
<key>CFBundleDisplayName</key>
<string>LastenradBayern</string>
<key>CFBundleVersion</key>
<string>262</string>
<string>263</string>
<key>CFBundleShortVersionString</key>
<string>3.0.262</string>
<string>3.0.263</string>
</dict>
</plist>

View file

@ -15,6 +15,7 @@ using MonkeyCache.FileStore;
using Plugin.Connectivity;
using System.Threading;
using TINK.Model.Settings;
using Plugin.Permissions;
using TINK.Services.BluetoothLock.Crypto;
using TINK.Model.Services.Geolocation;
using TINK.Services;
@ -151,6 +152,7 @@ namespace TINK
DependencyService.Get<ISmartDevice>(),
specialFolders,
new Cipher(),
null, // Permissions, no more used.
#if ARENDI
DependencyService.Get<ICentral>(),
#else
@ -282,7 +284,7 @@ namespace TINK
if (_PermissionsService != null)
return _PermissionsService;
_PermissionsService = new Services.Permissions.Essentials.Permissions();
_PermissionsService = new Services.Permissions.Plugin.Permissions();
return _PermissionsService;
}
}

View file

@ -33,6 +33,7 @@
<tr><td>PCLStorage von Daniel Plaisted </td><td><a href="#MSPL_Long">Microsoft Public License (Ms-PL)</a> </td></tr>
<tr><td>Pinvoke von AArnott </td><td><a href="#MITLicenseAArnott">MIT- Lizenz für Pinvoke</a> </td></tr>
<tr><td>Plugin.BLE Adrian Seceleanu, Sven-Michael Stübe </td><td><a href="#ApacheLicense2.0_2004">Apache License 2.0</a> </td></tr>
<tr><td>Plugin.Permissions von James Montemagno </td><td><a href="#MITLicenseMontemagno2016">MIT Lizenz 2016</a> </td></tr>
<tr><td>Polly von Michael Wolfenden, App vNext </td><td><a href="#NewBSDLicense">New BSD License</a> </td></tr>
<tr><td>Serilog von Serilog Contributors </td><td><a href="#ApacheLicense2.0_2004">Apache License 2.0</a> </td></tr>
<tr><td>Serilog.Sinks.Debug von Serilog Contributors </td><td><a href="#ApacheLicense2.0_2004">Apache License 2.0</a> </td></tr>

View file

@ -149,7 +149,7 @@ namespace TINK.View.Account
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
}
}

View file

@ -228,7 +228,10 @@ using TINK.View.MasterDetail;
#if USCSHARP9
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#else
public async Task<IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
/// <summary> Displays user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
/// <returns>User feedback.</returns>
public async Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(co2Saving));
#endif
}
}

View file

@ -88,7 +88,7 @@ namespace TINK.View.Contact
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
#if USEFLYOUT

View file

@ -114,7 +114,7 @@ namespace TINK.View.Contact
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
#if USEFLYOUT

View file

@ -12,11 +12,14 @@
<Grid.RowDefinitions>
<!-- Head and title row -->
<RowDefinition Height="auto"/>
<!--- Co2saving-->
<RowDefinition Height="auto"/>
<!--- checkbox and input elements-->
<RowDefinition Height="*"/>
<!--- ok button-->
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<!-- Head and title -->
<Grid
Padding="30"
BackgroundColor="{DynamicResource primary-back-title-color}">
@ -34,7 +37,16 @@
</Image.Source>
</Image>
</Grid>
<ScrollView Grid.Row="1">
<!-- Co2saving -->
<Frame
x:Name="Co2SavingFrame"
Grid.Row="1">
<Label
x:Name="Co2SavingLabel"
Text=""/>
</Frame>
<!-- Checkbox and input elements -->
<ScrollView Grid.Row="2">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
@ -77,8 +89,9 @@
</StackLayout>
</Grid>
</ScrollView>
<!-- Buttons -->
<Button
Grid.Row="2"
Grid.Row="3"
Clicked="OnOkClicked"
Text="OK"/>
</Grid>

View file

@ -7,9 +7,15 @@ namespace TINK.View
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class FeedbackPopup : Popup<FeedbackPopup.Result>
{
public FeedbackPopup()
/// <summary> Constructs user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
public FeedbackPopup(string co2Saving = null)
{
InitializeComponent();
if (string.IsNullOrEmpty(co2Saving))
Co2SavingFrame.IsVisible = false;
else
Co2SavingLabel.Text = co2Saving;
}
protected override FeedbackPopup.Result GetLightDismissResult()

View file

@ -138,7 +138,10 @@ namespace TINK.View.FindBike
#if USCSHARP9
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#else
public async Task<IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
/// <summary> Displays user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
/// <returns>User feedback.</returns>
public async Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(co2Saving));
#endif
}
}

View file

@ -122,7 +122,7 @@ namespace TINK.View.Info.BikeInfo
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
}
}

View file

@ -116,7 +116,7 @@ namespace TINK.View.Login
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
}
}

View file

@ -117,7 +117,7 @@ namespace TINK.View.Map
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
#if USEFLYOUT

View file

@ -89,7 +89,10 @@ namespace TINK.View.MiniSurvey
#if USCSHARP9
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#else
public async Task<IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
/// <summary> Displays user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
/// <returns>User feedback.</returns>
public async Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(co2Saving));
#endif
}
}

View file

@ -163,7 +163,7 @@ namespace TINK.View.MyBikes
#if USCSHARP9
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#else
public async Task<IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
public async Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(co2Saving));
#endif
}
}

View file

@ -146,7 +146,10 @@ namespace TINK.View.Settings
#if USCSHARP9
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#else
public async Task<IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
/// <summary> Displays user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
/// <returns>User feedback.</returns>
public async Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(co2Saving));
#endif
#if USERFEEDBACKDLG_TRYOUT

View file

@ -75,7 +75,7 @@ namespace TINK.View.WhatsNew.Agb
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
}
}

View file

@ -79,7 +79,7 @@ namespace TINK.View.WhatsNew
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
/// <summary>

View file

@ -4,6 +4,7 @@ using Android.Content.PM;
using Android.OS;
using Android.Content;
using Java.Interop;
using Plugin.Permissions;
namespace TINK.Droid
{
@ -51,6 +52,12 @@ namespace TINK.Droid
{
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
else if (App.PermissionsService.GetType() == typeof(TINK.Services.Permissions.Plugin.Permissions))
{
// Bug in 3.0.244 and earlier versions of sharee.bike app: Call of PermissionsImplementation.Current.OnRequestedPermission result was missing.
// see https://dev.azure.com/TeilRad/sharee.bike%20Buchungsplattform/_workitems/edit/136 for further details.
PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}

View file

@ -60,6 +60,9 @@
<BundleAssemblies>false</BundleAssemblies>
<AndroidSupportedAbis>armeabi-v7a;x86;x86_64;arm64-v8a</AndroidSupportedAbis>
<MandroidI18n />
<AndroidPackageFormat>aab</AndroidPackageFormat>
<AndroidUseAapt2>true</AndroidUseAapt2>
<AndroidCreatePackagePerAbi>false</AndroidCreatePackagePerAbi>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.TeilRad.Meinkonrad" android:versionName="3.0.262" android:versionCode="262">
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="internalOnly" package="com.TeilRad.Meinkonrad" android:versionName="3.0.263" android:versionCode="263">
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="30" />
<!-- Google Maps related permissions -->
<!-- Permission to receive remote notifications from Google Play Services -->

View file

@ -14,7 +14,7 @@ namespace TINK.Droid
{
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "12.1.0.11")]
public partial class Resource
{
@ -29,6 +29,228 @@ namespace TINK.Droid
global::PCLCrypto.Resource.String.Hello = global::TINK.Droid.Resource.String.Hello;
global::PCLStorage.Resource.String.ApplicationName = global::TINK.Droid.Resource.String.ApplicationName;
global::PCLStorage.Resource.String.Hello = global::TINK.Droid.Resource.String.Hello;
global::Plugin.Permissions.Resource.Attribute.alpha = global::TINK.Droid.Resource.Attribute.alpha;
global::Plugin.Permissions.Resource.Attribute.coordinatorLayoutStyle = global::TINK.Droid.Resource.Attribute.coordinatorLayoutStyle;
global::Plugin.Permissions.Resource.Attribute.font = global::TINK.Droid.Resource.Attribute.font;
global::Plugin.Permissions.Resource.Attribute.fontProviderAuthority = global::TINK.Droid.Resource.Attribute.fontProviderAuthority;
global::Plugin.Permissions.Resource.Attribute.fontProviderCerts = global::TINK.Droid.Resource.Attribute.fontProviderCerts;
global::Plugin.Permissions.Resource.Attribute.fontProviderFetchStrategy = global::TINK.Droid.Resource.Attribute.fontProviderFetchStrategy;
global::Plugin.Permissions.Resource.Attribute.fontProviderFetchTimeout = global::TINK.Droid.Resource.Attribute.fontProviderFetchTimeout;
global::Plugin.Permissions.Resource.Attribute.fontProviderPackage = global::TINK.Droid.Resource.Attribute.fontProviderPackage;
global::Plugin.Permissions.Resource.Attribute.fontProviderQuery = global::TINK.Droid.Resource.Attribute.fontProviderQuery;
global::Plugin.Permissions.Resource.Attribute.fontStyle = global::TINK.Droid.Resource.Attribute.fontStyle;
global::Plugin.Permissions.Resource.Attribute.fontVariationSettings = global::TINK.Droid.Resource.Attribute.fontVariationSettings;
global::Plugin.Permissions.Resource.Attribute.fontWeight = global::TINK.Droid.Resource.Attribute.fontWeight;
global::Plugin.Permissions.Resource.Attribute.keylines = global::TINK.Droid.Resource.Attribute.keylines;
global::Plugin.Permissions.Resource.Attribute.layout_anchor = global::TINK.Droid.Resource.Attribute.layout_anchor;
global::Plugin.Permissions.Resource.Attribute.layout_anchorGravity = global::TINK.Droid.Resource.Attribute.layout_anchorGravity;
global::Plugin.Permissions.Resource.Attribute.layout_behavior = global::TINK.Droid.Resource.Attribute.layout_behavior;
global::Plugin.Permissions.Resource.Attribute.layout_dodgeInsetEdges = global::TINK.Droid.Resource.Attribute.layout_dodgeInsetEdges;
global::Plugin.Permissions.Resource.Attribute.layout_insetEdge = global::TINK.Droid.Resource.Attribute.layout_insetEdge;
global::Plugin.Permissions.Resource.Attribute.layout_keyline = global::TINK.Droid.Resource.Attribute.layout_keyline;
global::Plugin.Permissions.Resource.Attribute.statusBarBackground = global::TINK.Droid.Resource.Attribute.statusBarBackground;
global::Plugin.Permissions.Resource.Attribute.ttcIndex = global::TINK.Droid.Resource.Attribute.ttcIndex;
global::Plugin.Permissions.Resource.Color.browser_actions_bg_grey = global::TINK.Droid.Resource.Color.browser_actions_bg_grey;
global::Plugin.Permissions.Resource.Color.browser_actions_divider_color = global::TINK.Droid.Resource.Color.browser_actions_divider_color;
global::Plugin.Permissions.Resource.Color.browser_actions_text_color = global::TINK.Droid.Resource.Color.browser_actions_text_color;
global::Plugin.Permissions.Resource.Color.browser_actions_title_color = global::TINK.Droid.Resource.Color.browser_actions_title_color;
global::Plugin.Permissions.Resource.Color.notification_action_color_filter = global::TINK.Droid.Resource.Color.notification_action_color_filter;
global::Plugin.Permissions.Resource.Color.notification_icon_bg_color = global::TINK.Droid.Resource.Color.notification_icon_bg_color;
global::Plugin.Permissions.Resource.Color.ripple_material_light = global::TINK.Droid.Resource.Color.ripple_material_light;
global::Plugin.Permissions.Resource.Color.secondary_text_default_material_light = global::TINK.Droid.Resource.Color.secondary_text_default_material_light;
global::Plugin.Permissions.Resource.Dimension.browser_actions_context_menu_max_width = global::TINK.Droid.Resource.Dimension.browser_actions_context_menu_max_width;
global::Plugin.Permissions.Resource.Dimension.browser_actions_context_menu_min_padding = global::TINK.Droid.Resource.Dimension.browser_actions_context_menu_min_padding;
global::Plugin.Permissions.Resource.Dimension.compat_button_inset_horizontal_material = global::TINK.Droid.Resource.Dimension.compat_button_inset_horizontal_material;
global::Plugin.Permissions.Resource.Dimension.compat_button_inset_vertical_material = global::TINK.Droid.Resource.Dimension.compat_button_inset_vertical_material;
global::Plugin.Permissions.Resource.Dimension.compat_button_padding_horizontal_material = global::TINK.Droid.Resource.Dimension.compat_button_padding_horizontal_material;
global::Plugin.Permissions.Resource.Dimension.compat_button_padding_vertical_material = global::TINK.Droid.Resource.Dimension.compat_button_padding_vertical_material;
global::Plugin.Permissions.Resource.Dimension.compat_control_corner_material = global::TINK.Droid.Resource.Dimension.compat_control_corner_material;
global::Plugin.Permissions.Resource.Dimension.compat_notification_large_icon_max_height = global::TINK.Droid.Resource.Dimension.compat_notification_large_icon_max_height;
global::Plugin.Permissions.Resource.Dimension.compat_notification_large_icon_max_width = global::TINK.Droid.Resource.Dimension.compat_notification_large_icon_max_width;
global::Plugin.Permissions.Resource.Dimension.notification_action_icon_size = global::TINK.Droid.Resource.Dimension.notification_action_icon_size;
global::Plugin.Permissions.Resource.Dimension.notification_action_text_size = global::TINK.Droid.Resource.Dimension.notification_action_text_size;
global::Plugin.Permissions.Resource.Dimension.notification_big_circle_margin = global::TINK.Droid.Resource.Dimension.notification_big_circle_margin;
global::Plugin.Permissions.Resource.Dimension.notification_content_margin_start = global::TINK.Droid.Resource.Dimension.notification_content_margin_start;
global::Plugin.Permissions.Resource.Dimension.notification_large_icon_height = global::TINK.Droid.Resource.Dimension.notification_large_icon_height;
global::Plugin.Permissions.Resource.Dimension.notification_large_icon_width = global::TINK.Droid.Resource.Dimension.notification_large_icon_width;
global::Plugin.Permissions.Resource.Dimension.notification_main_column_padding_top = global::TINK.Droid.Resource.Dimension.notification_main_column_padding_top;
global::Plugin.Permissions.Resource.Dimension.notification_media_narrow_margin = global::TINK.Droid.Resource.Dimension.notification_media_narrow_margin;
global::Plugin.Permissions.Resource.Dimension.notification_right_icon_size = global::TINK.Droid.Resource.Dimension.notification_right_icon_size;
global::Plugin.Permissions.Resource.Dimension.notification_right_side_padding_top = global::TINK.Droid.Resource.Dimension.notification_right_side_padding_top;
global::Plugin.Permissions.Resource.Dimension.notification_small_icon_background_padding = global::TINK.Droid.Resource.Dimension.notification_small_icon_background_padding;
global::Plugin.Permissions.Resource.Dimension.notification_small_icon_size_as_large = global::TINK.Droid.Resource.Dimension.notification_small_icon_size_as_large;
global::Plugin.Permissions.Resource.Dimension.notification_subtext_size = global::TINK.Droid.Resource.Dimension.notification_subtext_size;
global::Plugin.Permissions.Resource.Dimension.notification_top_pad = global::TINK.Droid.Resource.Dimension.notification_top_pad;
global::Plugin.Permissions.Resource.Dimension.notification_top_pad_large_text = global::TINK.Droid.Resource.Dimension.notification_top_pad_large_text;
global::Plugin.Permissions.Resource.Drawable.notification_action_background = global::TINK.Droid.Resource.Drawable.notification_action_background;
global::Plugin.Permissions.Resource.Drawable.notification_bg = global::TINK.Droid.Resource.Drawable.notification_bg;
global::Plugin.Permissions.Resource.Drawable.notification_bg_low = global::TINK.Droid.Resource.Drawable.notification_bg_low;
global::Plugin.Permissions.Resource.Drawable.notification_bg_low_normal = global::TINK.Droid.Resource.Drawable.notification_bg_low_normal;
global::Plugin.Permissions.Resource.Drawable.notification_bg_low_pressed = global::TINK.Droid.Resource.Drawable.notification_bg_low_pressed;
global::Plugin.Permissions.Resource.Drawable.notification_bg_normal = global::TINK.Droid.Resource.Drawable.notification_bg_normal;
global::Plugin.Permissions.Resource.Drawable.notification_bg_normal_pressed = global::TINK.Droid.Resource.Drawable.notification_bg_normal_pressed;
global::Plugin.Permissions.Resource.Drawable.notification_icon_background = global::TINK.Droid.Resource.Drawable.notification_icon_background;
global::Plugin.Permissions.Resource.Drawable.notification_template_icon_bg = global::TINK.Droid.Resource.Drawable.notification_template_icon_bg;
global::Plugin.Permissions.Resource.Drawable.notification_template_icon_low_bg = global::TINK.Droid.Resource.Drawable.notification_template_icon_low_bg;
global::Plugin.Permissions.Resource.Drawable.notification_tile_bg = global::TINK.Droid.Resource.Drawable.notification_tile_bg;
global::Plugin.Permissions.Resource.Drawable.notify_panel_notification_icon_bg = global::TINK.Droid.Resource.Drawable.notify_panel_notification_icon_bg;
global::Plugin.Permissions.Resource.Id.accessibility_action_clickable_span = global::TINK.Droid.Resource.Id.accessibility_action_clickable_span;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_0 = global::TINK.Droid.Resource.Id.accessibility_custom_action_0;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_1 = global::TINK.Droid.Resource.Id.accessibility_custom_action_1;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_10 = global::TINK.Droid.Resource.Id.accessibility_custom_action_10;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_11 = global::TINK.Droid.Resource.Id.accessibility_custom_action_11;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_12 = global::TINK.Droid.Resource.Id.accessibility_custom_action_12;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_13 = global::TINK.Droid.Resource.Id.accessibility_custom_action_13;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_14 = global::TINK.Droid.Resource.Id.accessibility_custom_action_14;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_15 = global::TINK.Droid.Resource.Id.accessibility_custom_action_15;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_16 = global::TINK.Droid.Resource.Id.accessibility_custom_action_16;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_17 = global::TINK.Droid.Resource.Id.accessibility_custom_action_17;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_18 = global::TINK.Droid.Resource.Id.accessibility_custom_action_18;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_19 = global::TINK.Droid.Resource.Id.accessibility_custom_action_19;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_2 = global::TINK.Droid.Resource.Id.accessibility_custom_action_2;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_20 = global::TINK.Droid.Resource.Id.accessibility_custom_action_20;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_21 = global::TINK.Droid.Resource.Id.accessibility_custom_action_21;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_22 = global::TINK.Droid.Resource.Id.accessibility_custom_action_22;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_23 = global::TINK.Droid.Resource.Id.accessibility_custom_action_23;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_24 = global::TINK.Droid.Resource.Id.accessibility_custom_action_24;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_25 = global::TINK.Droid.Resource.Id.accessibility_custom_action_25;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_26 = global::TINK.Droid.Resource.Id.accessibility_custom_action_26;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_27 = global::TINK.Droid.Resource.Id.accessibility_custom_action_27;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_28 = global::TINK.Droid.Resource.Id.accessibility_custom_action_28;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_29 = global::TINK.Droid.Resource.Id.accessibility_custom_action_29;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_3 = global::TINK.Droid.Resource.Id.accessibility_custom_action_3;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_30 = global::TINK.Droid.Resource.Id.accessibility_custom_action_30;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_31 = global::TINK.Droid.Resource.Id.accessibility_custom_action_31;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_4 = global::TINK.Droid.Resource.Id.accessibility_custom_action_4;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_5 = global::TINK.Droid.Resource.Id.accessibility_custom_action_5;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_6 = global::TINK.Droid.Resource.Id.accessibility_custom_action_6;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_7 = global::TINK.Droid.Resource.Id.accessibility_custom_action_7;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_8 = global::TINK.Droid.Resource.Id.accessibility_custom_action_8;
global::Plugin.Permissions.Resource.Id.accessibility_custom_action_9 = global::TINK.Droid.Resource.Id.accessibility_custom_action_9;
global::Plugin.Permissions.Resource.Id.actions = global::TINK.Droid.Resource.Id.actions;
global::Plugin.Permissions.Resource.Id.action_container = global::TINK.Droid.Resource.Id.action_container;
global::Plugin.Permissions.Resource.Id.action_divider = global::TINK.Droid.Resource.Id.action_divider;
global::Plugin.Permissions.Resource.Id.action_image = global::TINK.Droid.Resource.Id.action_image;
global::Plugin.Permissions.Resource.Id.action_text = global::TINK.Droid.Resource.Id.action_text;
global::Plugin.Permissions.Resource.Id.all = global::TINK.Droid.Resource.Id.all;
global::Plugin.Permissions.Resource.Id.async = global::TINK.Droid.Resource.Id.async;
global::Plugin.Permissions.Resource.Id.blocking = global::TINK.Droid.Resource.Id.blocking;
global::Plugin.Permissions.Resource.Id.bottom = global::TINK.Droid.Resource.Id.bottom;
global::Plugin.Permissions.Resource.Id.browser_actions_header_text = global::TINK.Droid.Resource.Id.browser_actions_header_text;
global::Plugin.Permissions.Resource.Id.browser_actions_menu_items = global::TINK.Droid.Resource.Id.browser_actions_menu_items;
global::Plugin.Permissions.Resource.Id.browser_actions_menu_item_icon = global::TINK.Droid.Resource.Id.browser_actions_menu_item_icon;
global::Plugin.Permissions.Resource.Id.browser_actions_menu_item_text = global::TINK.Droid.Resource.Id.browser_actions_menu_item_text;
global::Plugin.Permissions.Resource.Id.browser_actions_menu_view = global::TINK.Droid.Resource.Id.browser_actions_menu_view;
global::Plugin.Permissions.Resource.Id.center = global::TINK.Droid.Resource.Id.center;
global::Plugin.Permissions.Resource.Id.center_horizontal = global::TINK.Droid.Resource.Id.center_horizontal;
global::Plugin.Permissions.Resource.Id.center_vertical = global::TINK.Droid.Resource.Id.center_vertical;
global::Plugin.Permissions.Resource.Id.chronometer = global::TINK.Droid.Resource.Id.chronometer;
global::Plugin.Permissions.Resource.Id.clip_horizontal = global::TINK.Droid.Resource.Id.clip_horizontal;
global::Plugin.Permissions.Resource.Id.clip_vertical = global::TINK.Droid.Resource.Id.clip_vertical;
global::Plugin.Permissions.Resource.Id.dialog_button = global::TINK.Droid.Resource.Id.dialog_button;
global::Plugin.Permissions.Resource.Id.end = global::TINK.Droid.Resource.Id.end;
global::Plugin.Permissions.Resource.Id.fill = global::TINK.Droid.Resource.Id.fill;
global::Plugin.Permissions.Resource.Id.fill_horizontal = global::TINK.Droid.Resource.Id.fill_horizontal;
global::Plugin.Permissions.Resource.Id.fill_vertical = global::TINK.Droid.Resource.Id.fill_vertical;
global::Plugin.Permissions.Resource.Id.forever = global::TINK.Droid.Resource.Id.forever;
global::Plugin.Permissions.Resource.Id.icon = global::TINK.Droid.Resource.Id.icon;
global::Plugin.Permissions.Resource.Id.icon_group = global::TINK.Droid.Resource.Id.icon_group;
global::Plugin.Permissions.Resource.Id.info = global::TINK.Droid.Resource.Id.info;
global::Plugin.Permissions.Resource.Id.italic = global::TINK.Droid.Resource.Id.italic;
global::Plugin.Permissions.Resource.Id.left = global::TINK.Droid.Resource.Id.left;
global::Plugin.Permissions.Resource.Id.line1 = global::TINK.Droid.Resource.Id.line1;
global::Plugin.Permissions.Resource.Id.line3 = global::TINK.Droid.Resource.Id.line3;
global::Plugin.Permissions.Resource.Id.none = global::TINK.Droid.Resource.Id.none;
global::Plugin.Permissions.Resource.Id.normal = global::TINK.Droid.Resource.Id.normal;
global::Plugin.Permissions.Resource.Id.notification_background = global::TINK.Droid.Resource.Id.notification_background;
global::Plugin.Permissions.Resource.Id.notification_main_column = global::TINK.Droid.Resource.Id.notification_main_column;
global::Plugin.Permissions.Resource.Id.notification_main_column_container = global::TINK.Droid.Resource.Id.notification_main_column_container;
global::Plugin.Permissions.Resource.Id.right = global::TINK.Droid.Resource.Id.right;
global::Plugin.Permissions.Resource.Id.right_icon = global::TINK.Droid.Resource.Id.right_icon;
global::Plugin.Permissions.Resource.Id.right_side = global::TINK.Droid.Resource.Id.right_side;
global::Plugin.Permissions.Resource.Id.start = global::TINK.Droid.Resource.Id.start;
global::Plugin.Permissions.Resource.Id.tag_accessibility_actions = global::TINK.Droid.Resource.Id.tag_accessibility_actions;
global::Plugin.Permissions.Resource.Id.tag_accessibility_clickable_spans = global::TINK.Droid.Resource.Id.tag_accessibility_clickable_spans;
global::Plugin.Permissions.Resource.Id.tag_accessibility_heading = global::TINK.Droid.Resource.Id.tag_accessibility_heading;
global::Plugin.Permissions.Resource.Id.tag_accessibility_pane_title = global::TINK.Droid.Resource.Id.tag_accessibility_pane_title;
global::Plugin.Permissions.Resource.Id.tag_screen_reader_focusable = global::TINK.Droid.Resource.Id.tag_screen_reader_focusable;
global::Plugin.Permissions.Resource.Id.tag_transition_group = global::TINK.Droid.Resource.Id.tag_transition_group;
global::Plugin.Permissions.Resource.Id.tag_unhandled_key_event_manager = global::TINK.Droid.Resource.Id.tag_unhandled_key_event_manager;
global::Plugin.Permissions.Resource.Id.tag_unhandled_key_listeners = global::TINK.Droid.Resource.Id.tag_unhandled_key_listeners;
global::Plugin.Permissions.Resource.Id.text = global::TINK.Droid.Resource.Id.text;
global::Plugin.Permissions.Resource.Id.text2 = global::TINK.Droid.Resource.Id.text2;
global::Plugin.Permissions.Resource.Id.time = global::TINK.Droid.Resource.Id.time;
global::Plugin.Permissions.Resource.Id.title = global::TINK.Droid.Resource.Id.title;
global::Plugin.Permissions.Resource.Id.top = global::TINK.Droid.Resource.Id.top;
global::Plugin.Permissions.Resource.Integer.status_bar_notification_info_maxnum = global::TINK.Droid.Resource.Integer.status_bar_notification_info_maxnum;
global::Plugin.Permissions.Resource.Layout.browser_actions_context_menu_page = global::TINK.Droid.Resource.Layout.browser_actions_context_menu_page;
global::Plugin.Permissions.Resource.Layout.browser_actions_context_menu_row = global::TINK.Droid.Resource.Layout.browser_actions_context_menu_row;
global::Plugin.Permissions.Resource.Layout.custom_dialog = global::TINK.Droid.Resource.Layout.custom_dialog;
global::Plugin.Permissions.Resource.Layout.notification_action = global::TINK.Droid.Resource.Layout.notification_action;
global::Plugin.Permissions.Resource.Layout.notification_action_tombstone = global::TINK.Droid.Resource.Layout.notification_action_tombstone;
global::Plugin.Permissions.Resource.Layout.notification_template_custom_big = global::TINK.Droid.Resource.Layout.notification_template_custom_big;
global::Plugin.Permissions.Resource.Layout.notification_template_icon_group = global::TINK.Droid.Resource.Layout.notification_template_icon_group;
global::Plugin.Permissions.Resource.Layout.notification_template_part_chronometer = global::TINK.Droid.Resource.Layout.notification_template_part_chronometer;
global::Plugin.Permissions.Resource.Layout.notification_template_part_time = global::TINK.Droid.Resource.Layout.notification_template_part_time;
global::Plugin.Permissions.Resource.String.status_bar_notification_info_overflow = global::TINK.Droid.Resource.String.status_bar_notification_info_overflow;
global::Plugin.Permissions.Resource.Style.TextAppearance_Compat_Notification = global::TINK.Droid.Resource.Style.TextAppearance_Compat_Notification;
global::Plugin.Permissions.Resource.Style.TextAppearance_Compat_Notification_Info = global::TINK.Droid.Resource.Style.TextAppearance_Compat_Notification_Info;
global::Plugin.Permissions.Resource.Style.TextAppearance_Compat_Notification_Line2 = global::TINK.Droid.Resource.Style.TextAppearance_Compat_Notification_Line2;
global::Plugin.Permissions.Resource.Style.TextAppearance_Compat_Notification_Time = global::TINK.Droid.Resource.Style.TextAppearance_Compat_Notification_Time;
global::Plugin.Permissions.Resource.Style.TextAppearance_Compat_Notification_Title = global::TINK.Droid.Resource.Style.TextAppearance_Compat_Notification_Title;
global::Plugin.Permissions.Resource.Style.Widget_Compat_NotificationActionContainer = global::TINK.Droid.Resource.Style.Widget_Compat_NotificationActionContainer;
global::Plugin.Permissions.Resource.Style.Widget_Compat_NotificationActionText = global::TINK.Droid.Resource.Style.Widget_Compat_NotificationActionText;
global::Plugin.Permissions.Resource.Style.Widget_Support_CoordinatorLayout = global::TINK.Droid.Resource.Style.Widget_Support_CoordinatorLayout;
global::Plugin.Permissions.Resource.Styleable.ColorStateListItem = global::TINK.Droid.Resource.Styleable.ColorStateListItem;
global::Plugin.Permissions.Resource.Styleable.ColorStateListItem_alpha = global::TINK.Droid.Resource.Styleable.ColorStateListItem_alpha;
global::Plugin.Permissions.Resource.Styleable.ColorStateListItem_android_alpha = global::TINK.Droid.Resource.Styleable.ColorStateListItem_android_alpha;
global::Plugin.Permissions.Resource.Styleable.ColorStateListItem_android_color = global::TINK.Droid.Resource.Styleable.ColorStateListItem_android_color;
global::Plugin.Permissions.Resource.Styleable.CoordinatorLayout = global::TINK.Droid.Resource.Styleable.CoordinatorLayout;
global::Plugin.Permissions.Resource.Styleable.CoordinatorLayout_keylines = global::TINK.Droid.Resource.Styleable.CoordinatorLayout_keylines;
global::Plugin.Permissions.Resource.Styleable.CoordinatorLayout_Layout = global::TINK.Droid.Resource.Styleable.CoordinatorLayout_Layout;
global::Plugin.Permissions.Resource.Styleable.CoordinatorLayout_Layout_android_layout_gravity = global::TINK.Droid.Resource.Styleable.CoordinatorLayout_Layout_android_layout_gravity;
global::Plugin.Permissions.Resource.Styleable.CoordinatorLayout_Layout_layout_anchor = global::TINK.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_anchor;
global::Plugin.Permissions.Resource.Styleable.CoordinatorLayout_Layout_layout_anchorGravity = global::TINK.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_anchorGravity;
global::Plugin.Permissions.Resource.Styleable.CoordinatorLayout_Layout_layout_behavior = global::TINK.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_behavior;
global::Plugin.Permissions.Resource.Styleable.CoordinatorLayout_Layout_layout_dodgeInsetEdges = global::TINK.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_dodgeInsetEdges;
global::Plugin.Permissions.Resource.Styleable.CoordinatorLayout_Layout_layout_insetEdge = global::TINK.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_insetEdge;
global::Plugin.Permissions.Resource.Styleable.CoordinatorLayout_Layout_layout_keyline = global::TINK.Droid.Resource.Styleable.CoordinatorLayout_Layout_layout_keyline;
global::Plugin.Permissions.Resource.Styleable.CoordinatorLayout_statusBarBackground = global::TINK.Droid.Resource.Styleable.CoordinatorLayout_statusBarBackground;
global::Plugin.Permissions.Resource.Styleable.FontFamily = global::TINK.Droid.Resource.Styleable.FontFamily;
global::Plugin.Permissions.Resource.Styleable.FontFamilyFont = global::TINK.Droid.Resource.Styleable.FontFamilyFont;
global::Plugin.Permissions.Resource.Styleable.FontFamilyFont_android_font = global::TINK.Droid.Resource.Styleable.FontFamilyFont_android_font;
global::Plugin.Permissions.Resource.Styleable.FontFamilyFont_android_fontStyle = global::TINK.Droid.Resource.Styleable.FontFamilyFont_android_fontStyle;
global::Plugin.Permissions.Resource.Styleable.FontFamilyFont_android_fontVariationSettings = global::TINK.Droid.Resource.Styleable.FontFamilyFont_android_fontVariationSettings;
global::Plugin.Permissions.Resource.Styleable.FontFamilyFont_android_fontWeight = global::TINK.Droid.Resource.Styleable.FontFamilyFont_android_fontWeight;
global::Plugin.Permissions.Resource.Styleable.FontFamilyFont_android_ttcIndex = global::TINK.Droid.Resource.Styleable.FontFamilyFont_android_ttcIndex;
global::Plugin.Permissions.Resource.Styleable.FontFamilyFont_font = global::TINK.Droid.Resource.Styleable.FontFamilyFont_font;
global::Plugin.Permissions.Resource.Styleable.FontFamilyFont_fontStyle = global::TINK.Droid.Resource.Styleable.FontFamilyFont_fontStyle;
global::Plugin.Permissions.Resource.Styleable.FontFamilyFont_fontVariationSettings = global::TINK.Droid.Resource.Styleable.FontFamilyFont_fontVariationSettings;
global::Plugin.Permissions.Resource.Styleable.FontFamilyFont_fontWeight = global::TINK.Droid.Resource.Styleable.FontFamilyFont_fontWeight;
global::Plugin.Permissions.Resource.Styleable.FontFamilyFont_ttcIndex = global::TINK.Droid.Resource.Styleable.FontFamilyFont_ttcIndex;
global::Plugin.Permissions.Resource.Styleable.FontFamily_fontProviderAuthority = global::TINK.Droid.Resource.Styleable.FontFamily_fontProviderAuthority;
global::Plugin.Permissions.Resource.Styleable.FontFamily_fontProviderCerts = global::TINK.Droid.Resource.Styleable.FontFamily_fontProviderCerts;
global::Plugin.Permissions.Resource.Styleable.FontFamily_fontProviderFetchStrategy = global::TINK.Droid.Resource.Styleable.FontFamily_fontProviderFetchStrategy;
global::Plugin.Permissions.Resource.Styleable.FontFamily_fontProviderFetchTimeout = global::TINK.Droid.Resource.Styleable.FontFamily_fontProviderFetchTimeout;
global::Plugin.Permissions.Resource.Styleable.FontFamily_fontProviderPackage = global::TINK.Droid.Resource.Styleable.FontFamily_fontProviderPackage;
global::Plugin.Permissions.Resource.Styleable.FontFamily_fontProviderQuery = global::TINK.Droid.Resource.Styleable.FontFamily_fontProviderQuery;
global::Plugin.Permissions.Resource.Styleable.GradientColor = global::TINK.Droid.Resource.Styleable.GradientColor;
global::Plugin.Permissions.Resource.Styleable.GradientColorItem = global::TINK.Droid.Resource.Styleable.GradientColorItem;
global::Plugin.Permissions.Resource.Styleable.GradientColorItem_android_color = global::TINK.Droid.Resource.Styleable.GradientColorItem_android_color;
global::Plugin.Permissions.Resource.Styleable.GradientColorItem_android_offset = global::TINK.Droid.Resource.Styleable.GradientColorItem_android_offset;
global::Plugin.Permissions.Resource.Styleable.GradientColor_android_centerColor = global::TINK.Droid.Resource.Styleable.GradientColor_android_centerColor;
global::Plugin.Permissions.Resource.Styleable.GradientColor_android_centerX = global::TINK.Droid.Resource.Styleable.GradientColor_android_centerX;
global::Plugin.Permissions.Resource.Styleable.GradientColor_android_centerY = global::TINK.Droid.Resource.Styleable.GradientColor_android_centerY;
global::Plugin.Permissions.Resource.Styleable.GradientColor_android_endColor = global::TINK.Droid.Resource.Styleable.GradientColor_android_endColor;
global::Plugin.Permissions.Resource.Styleable.GradientColor_android_endX = global::TINK.Droid.Resource.Styleable.GradientColor_android_endX;
global::Plugin.Permissions.Resource.Styleable.GradientColor_android_endY = global::TINK.Droid.Resource.Styleable.GradientColor_android_endY;
global::Plugin.Permissions.Resource.Styleable.GradientColor_android_gradientRadius = global::TINK.Droid.Resource.Styleable.GradientColor_android_gradientRadius;
global::Plugin.Permissions.Resource.Styleable.GradientColor_android_startColor = global::TINK.Droid.Resource.Styleable.GradientColor_android_startColor;
global::Plugin.Permissions.Resource.Styleable.GradientColor_android_startX = global::TINK.Droid.Resource.Styleable.GradientColor_android_startX;
global::Plugin.Permissions.Resource.Styleable.GradientColor_android_startY = global::TINK.Droid.Resource.Styleable.GradientColor_android_startY;
global::Plugin.Permissions.Resource.Styleable.GradientColor_android_tileMode = global::TINK.Droid.Resource.Styleable.GradientColor_android_tileMode;
global::Plugin.Permissions.Resource.Styleable.GradientColor_android_type = global::TINK.Droid.Resource.Styleable.GradientColor_android_type;
global::Plugin.Permissions.Resource.Xml.xamarin_essentials_fileprovider_file_paths = global::TINK.Droid.Resource.Xml.xamarin_essentials_fileprovider_file_paths;
global::Xamarin.Auth.Resource.Animation.slide_in_right = global::TINK.Droid.Resource.Animation.slide_in_right;
global::Xamarin.Auth.Resource.Animation.slide_out_left = global::TINK.Droid.Resource.Animation.slide_out_left;
global::Xamarin.Auth.Resource.Attribute.alpha = global::TINK.Droid.Resource.Attribute.alpha;

View file

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
@ -49,8 +49,8 @@
<key>CFBundleDisplayName</key>
<string>Mein konrad</string>
<key>CFBundleVersion</key>
<string>262</string>
<string>263</string>
<key>CFBundleShortVersionString</key>
<string>3.0.262</string>
<string>3.0.263</string>
</dict>
</plist>

View file

@ -151,6 +151,7 @@ namespace TINK
DependencyService.Get<ISmartDevice>(),
specialFolders,
new Cipher(),
null, // Permissions, no more used.
#if ARENDI
DependencyService.Get<ICentral>(),
#else
@ -282,7 +283,7 @@ namespace TINK
if (_PermissionsService != null)
return _PermissionsService;
_PermissionsService = new Services.Permissions.Essentials.Permissions();
_PermissionsService = new Services.Permissions.Plugin.Permissions();
return _PermissionsService;
}
}

View file

@ -33,6 +33,7 @@
<tr><td>PCLStorage von Daniel Plaisted </td><td><a href="#MSPL_Long">Microsoft Public License (Ms-PL)</a> </td></tr>
<tr><td>Pinvoke von AArnott </td><td><a href="#MITLicenseAArnott">MIT- Lizenz für Pinvoke</a> </td></tr>
<tr><td>Plugin.BLE Adrian Seceleanu, Sven-Michael Stübe </td><td><a href="#ApacheLicense2.0_2004">Apache License 2.0</a> </td></tr>
<tr><td>Plugin.Permissions von James Montemagno </td><td><a href="#MITLicenseMontemagno2016">MIT Lizenz 2016</a> </td></tr>
<tr><td>Polly von Michael Wolfenden, App vNext </td><td><a href="#NewBSDLicense">New BSD License</a> </td></tr>
<tr><td>Serilog von Serilog Contributors </td><td><a href="#ApacheLicense2.0_2004">Apache License 2.0</a> </td></tr>
<tr><td>Serilog.Sinks.Debug von Serilog Contributors </td><td><a href="#ApacheLicense2.0_2004">Apache License 2.0</a> </td></tr>

View file

@ -149,7 +149,7 @@ namespace TINK.View.Account
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
}
}

View file

@ -228,7 +228,10 @@ using TINK.View.MasterDetail;
#if USCSHARP9
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#else
public async Task<IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
/// <summary> Displays user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
/// <returns>User feedback.</returns>
public async Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(co2Saving));
#endif
}
}

View file

@ -88,7 +88,7 @@ namespace TINK.View.Contact
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
#if USEFLYOUT

View file

@ -114,7 +114,7 @@ namespace TINK.View.Contact
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
#if USEFLYOUT

View file

@ -12,11 +12,14 @@
<Grid.RowDefinitions>
<!-- Head and title row -->
<RowDefinition Height="auto"/>
<!--- Co2saving-->
<RowDefinition Height="auto"/>
<!--- checkbox and input elements-->
<RowDefinition Height="*"/>
<!--- ok button-->
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<!-- Head and title -->
<Grid
Padding="30"
BackgroundColor="{DynamicResource primary-back-title-color}">
@ -34,7 +37,16 @@
</Image.Source>
</Image>
</Grid>
<ScrollView Grid.Row="1">
<!-- Co2saving -->
<Frame
x:Name="Co2SavingFrame"
Grid.Row="1">
<Label
x:Name="Co2SavingLabel"
Text=""/>
</Frame>
<!-- Checkbox and input elements -->
<ScrollView Grid.Row="2">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
@ -77,8 +89,9 @@
</StackLayout>
</Grid>
</ScrollView>
<!-- Buttons -->
<Button
Grid.Row="2"
Grid.Row="3"
Clicked="OnOkClicked"
Text="OK"/>
</Grid>

View file

@ -7,9 +7,15 @@ namespace TINK.View
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class FeedbackPopup : Popup<FeedbackPopup.Result>
{
public FeedbackPopup()
/// <summary> Constructs user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
public FeedbackPopup(string co2Saving = null)
{
InitializeComponent();
if (string.IsNullOrEmpty(co2Saving))
Co2SavingFrame.IsVisible = false;
else
Co2SavingLabel.Text = co2Saving;
}
protected override FeedbackPopup.Result GetLightDismissResult()

View file

@ -138,7 +138,7 @@ namespace TINK.View.FindBike
#if USCSHARP9
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#else
public async Task<IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
public async Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(co2Saving));
#endif
}
}

View file

@ -122,7 +122,7 @@ namespace TINK.View.Info.BikeInfo
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
}
}

View file

@ -116,7 +116,7 @@ namespace TINK.View.Login
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
}
}

View file

@ -117,7 +117,7 @@ namespace TINK.View.Map
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
#if USEFLYOUT

View file

@ -89,7 +89,10 @@ namespace TINK.View.MiniSurvey
#if USCSHARP9
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#else
public async Task<IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
/// <summary> Displays user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
/// <returns>User feedback.</returns>
public async Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(co2Saving));
#endif
}
}

View file

@ -163,7 +163,10 @@ namespace TINK.View.MyBikes
#if USCSHARP9
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#else
public async Task<IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
/// <summary> Displays user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
/// <returns>User feedback.</returns>
public async Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(co2Saving));
#endif
}
}

View file

@ -146,7 +146,10 @@ namespace TINK.View.Settings
#if USCSHARP9
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#else
public async Task<IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
/// <summary> Displays user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
/// <returns>User feedback.</returns>
public async Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#endif
#if USERFEEDBACKDLG_TRYOUT

View file

@ -75,7 +75,7 @@ namespace TINK.View.WhatsNew.Agb
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
}
}

View file

@ -79,7 +79,7 @@ namespace TINK.View.WhatsNew
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
/// <summary>

View file

@ -4,6 +4,7 @@ using Android.Content.PM;
using Android.OS;
using Android.Content;
using Java.Interop;
using Plugin.Permissions;
namespace TINK.Droid
{
@ -51,6 +52,12 @@ namespace TINK.Droid
{
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
else if (App.PermissionsService.GetType() == typeof(TINK.Services.Permissions.Plugin.Permissions))
{
// Bug in 3.0.244 and earlier versions of sharee.bike app: Call of PermissionsImplementation.Current.OnRequestedPermission result was missing.
// see https://dev.azure.com/TeilRad/sharee.bike%20Buchungsplattform/_workitems/edit/136 for further details.
PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferExternal" package="com.hauffware.sharee" android:versionName="3.0.262" android:versionCode="262">
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferExternal" package="com.hauffware.sharee" android:versionName="3.0.263" android:versionCode="263">
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="30" />
<!-- Google Maps related permissions -->
<!-- Permission to receive remote notifications from Google Play Services -->

View file

@ -14,7 +14,7 @@ namespace TINK.Droid
{
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "12.1.0.11")]
public partial class Resource
{

View file

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
@ -49,8 +49,8 @@
<key>CFBundleDisplayName</key>
<string>sharee.bike</string>
<key>CFBundleVersion</key>
<string>262</string>
<string>263</string>
<key>CFBundleShortVersionString</key>
<string>3.0.262</string>
<string>3.0.263</string>
</dict>
</plist>

View file

@ -282,7 +282,7 @@ namespace TINK
if (_PermissionsService != null)
return _PermissionsService;
_PermissionsService = new Services.Permissions.Essentials.Permissions();
_PermissionsService = new Services.Permissions.Plugin.Permissions();
return _PermissionsService;
}
}

View file

@ -149,7 +149,7 @@ namespace TINK.View.Account
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
}
}

View file

@ -228,7 +228,10 @@ using TINK.View.MasterDetail;
#if USCSHARP9
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#else
public async Task<IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
/// <summary> Displays user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
/// <returns>User feedback.</returns>
public async Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(co2Saving));
#endif
}
}

View file

@ -88,7 +88,15 @@ namespace TINK.View.Contact
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
#if USEFLYOUT
/// <summary>
/// Delegate to perform navigation.
/// </summary>
public INavigationMasterDetail NavigationMasterDetail { set; private get; }
#endif
#if USEFLYOUT

View file

@ -114,7 +114,7 @@ namespace TINK.View.Contact
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
#if USEFLYOUT

View file

@ -12,11 +12,14 @@
<Grid.RowDefinitions>
<!-- Head and title row -->
<RowDefinition Height="auto"/>
<!--- Co2saving-->
<RowDefinition Height="auto"/>
<!--- checkbox and input elements-->
<RowDefinition Height="*"/>
<!--- ok button-->
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<!-- Head and title -->
<Grid
Padding="30"
BackgroundColor="{DynamicResource primary-back-title-color}">
@ -34,7 +37,16 @@
</Image.Source>
</Image>
</Grid>
<ScrollView Grid.Row="1">
<!-- Co2saving -->
<Frame
x:Name="Co2SavingFrame"
Grid.Row="1">
<Label
x:Name="Co2SavingLabel"
Text=""/>
</Frame>
<!-- Checkbox and input elements -->
<ScrollView Grid.Row="2">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
@ -77,8 +89,9 @@
</StackLayout>
</Grid>
</ScrollView>
<!-- Buttons -->
<Button
Grid.Row="2"
Grid.Row="3"
Clicked="OnOkClicked"
Text="OK"/>
</Grid>

View file

@ -7,9 +7,15 @@ namespace TINK.View
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class FeedbackPopup : Popup<FeedbackPopup.Result>
{
public FeedbackPopup()
/// <summary> Constructs user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
public FeedbackPopup(string co2Saving = null)
{
InitializeComponent();
if (string.IsNullOrEmpty(co2Saving))
Co2SavingFrame.IsVisible = false;
else
Co2SavingLabel.Text = co2Saving;
}
protected override FeedbackPopup.Result GetLightDismissResult()

View file

@ -138,7 +138,10 @@ namespace TINK.View.FindBike
#if USCSHARP9
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#else
public async Task<IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
/// <summary> Displays user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
/// <returns>User feedback.</returns>
public async Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(co2Saving));
#endif
}
}

View file

@ -122,7 +122,7 @@ namespace TINK.View.Info.BikeInfo
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
}
}

View file

@ -116,7 +116,7 @@ namespace TINK.View.Login
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
}
}

View file

@ -120,7 +120,7 @@ namespace TINK.View.Map
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
#if USEFLYOUT
@ -142,6 +142,8 @@ namespace TINK.View.Map
// Pass reference to member Navigation to show bikes at station x dialog.
try
{
Log.ForContext<MapPage>().Verbose("Constructing map page view model.");
#if TRYNOTBACKSTYLE
MapPageViewModel = new MapPageViewModel();
#else
@ -193,7 +195,10 @@ namespace TINK.View.Map
try
{
// Pre move and scanle maps to avoid initial display of map in Rome.
PremoveAndScaleMap();
Log.ForContext<MapPage>().Verbose("Moving and scaling map.");
MapPageViewModel.MoveAndScale(
(mapSpan) => MyMap.MoveToRegion(mapSpan),
App.ModelRoot.MapSpan);
}
catch(Exception exception)
{

View file

@ -89,7 +89,10 @@ namespace TINK.View.MiniSurvey
#if USCSHARP9
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#else
public async Task<IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
/// <summary> Displays user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
/// <returns>User feedback.</returns>
public async Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(co2Saving));
#endif
}
}

View file

@ -163,7 +163,10 @@ namespace TINK.View.MyBikes
#if USCSHARP9
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#else
public async Task<IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
/// <summary> Displays user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
/// <returns>User feedback.</returns>
public async Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(co2Saving));
#endif
}
}

View file

@ -146,7 +146,10 @@ namespace TINK.View.Settings
#if USCSHARP9
public async Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
#else
public async Task<IUserFeedback> DisplayUserFeedbackPopup() => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup());
/// <summary> Displays user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
/// <returns>User feedback.</returns>
public async Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => await Navigation.ShowPopupAsync<FeedbackPopup.Result>(new FeedbackPopup(co2Saving));
#endif
#if USERFEEDBACKDLG_TRYOUT

View file

@ -75,7 +75,7 @@ namespace TINK.View.WhatsNew.Agb
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
}
}

View file

@ -79,7 +79,7 @@ namespace TINK.View.WhatsNew
#if USCSHARP9
public Task<IViewService.IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
#else
public Task<IUserFeedback> DisplayUserFeedbackPopup() => throw new NotSupportedException();
public Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null) => throw new NotSupportedException();
#endif
/// <summary>

View file

@ -0,0 +1,21 @@
using TINK.Model.MiniSurvey;
namespace TINK.Model
{
/// <summary>
/// Holds tasks to be accoumplished/ information shown to user after booking has finished.
/// </summary>
public class BookingFinishedModel
{
/// <summary>
/// Minisurvey to query user.
/// </summary>
public MiniSurveyModel MiniSurvey { get; set; } = new MiniSurveyModel();
/// <summary>
/// Holds info about co2 saving accomplished by using cargo bike.
/// </summary>
public string Co2Saving { get; set; }
}
}

View file

@ -122,13 +122,13 @@ namespace TINK.Model.Connector
Log.ForContext<Command>().Error("Unexpected booking request detected. No user logged in.");
await Task.CompletedTask;
}
public async Task<MiniSurveyModel> DoReturn(
public async Task<BookingFinishedModel> DoReturn(
Bikes.Bike.BluetoothLock.IBikeInfoMutable bike,
LocationDto location,
ISmartDevice smartDevice)
{
Log.ForContext<Command>().Error("Unexpected returning request detected. No user logged in.");
return await Task.FromResult(new MiniSurveyModel());
return await Task.FromResult(new BookingFinishedModel());
}
/// <summary>

View file

@ -248,7 +248,7 @@ namespace TINK.Model.Connector
/// <param name="bike">Bike to return.</param>
/// <param name="locaton">Position of the bike.</param>
/// <param name="smartDevice">Provides info about hard and software.</param>
public async Task<MiniSurveyModel> DoReturn(
public async Task<BookingFinishedModel> DoReturn(
Bikes.Bike.BluetoothLock.IBikeInfoMutable bike,
LocationDto location,
ISmartDevice smartDevice)
@ -258,7 +258,7 @@ namespace TINK.Model.Connector
throw new ArgumentNullException("Can not return bike. No bike object available.");
}
ReservationCancelReturnResponse response;
DoReturnResponse response;
try
{
response = (await CopriServer.DoReturn(bike.Id, location, smartDevice, bike.OperatorUri)).GetIsReturnBikeResponseOk(bike.Id);
@ -270,7 +270,7 @@ namespace TINK.Model.Connector
}
bike.Load(Bikes.Bike.BC.NotifyPropertyChangedLevel.None);
return response?.Create() ?? new MiniSurveyModel();
return response?.Create() ?? new BookingFinishedModel();
}
/// <summary>

View file

@ -50,7 +50,7 @@ namespace TINK.Model.Connector
/// <param name="bike">Bike to return.</param>
/// <param name="location">Geolocation of lock when returning bike.</param>
/// <param name="smartDevice">Provides info about hard and software.</param>
Task<MiniSurveyModel> DoReturn(Bikes.Bike.BluetoothLock.IBikeInfoMutable bike, LocationDto geolocation = null, ISmartDevice smartDevice = null);
Task<BookingFinishedModel> DoReturn(Bikes.Bike.BluetoothLock.IBikeInfoMutable bike, LocationDto geolocation = null, ISmartDevice smartDevice = null);
/// <summary> True if connector has access to copri server, false if cached values are used. </summary>
bool IsConnected { get; }

View file

@ -512,6 +512,46 @@ namespace TINK.Model.Connector
};
}
/// <summary> Creates a booking finished object from response.</summary>
/// <param name="response">Response to create survey object from.</param>
public static BookingFinishedModel Create(this DoReturnResponse response)
{
var bookingFinished = new BookingFinishedModel
{
Co2Saving = response?.co2saving
};
if (response?.user_miniquery == null)
{
return bookingFinished;
}
var miniquery = response.user_miniquery;
bookingFinished.MiniSurvey = new MiniSurveyModel
{
Title = miniquery.title,
Subtitle = miniquery.subtitle,
Footer = miniquery.footer
};
foreach (var question in miniquery?.questions?.OrderBy(x => x.Key) ?? new Dictionary<string, MiniSurveyResponse.Question>().OrderBy(x => x.Key))
{
if (string.IsNullOrEmpty(question.Key.Trim())
|| question.Value.query == null)
{
// Skip invalid entries.
continue;
}
bookingFinished.MiniSurvey.Questions.Add(
question.Key,
new MiniSurveyModel.QuestionModel());
}
return bookingFinished;
}
/// <summary> Creates a survey object from response.</summary>
/// <param name="response">Response to create survey object from.</param>
public static MiniSurveyModel Create(this ReservationCancelReturnResponse response)

View file

@ -3,6 +3,9 @@
namespace TINK.Model.MiniSurvey
{
/// <summary>
/// Holds mini survey.
/// </summary>
public class MiniSurveyModel
{
public enum Type
@ -12,21 +15,17 @@ namespace TINK.Model.MiniSurvey
}
public class QuestionModel
{
public QuestionModel()
{
PossibleAnswers = new Dictionary<string, string>();
}
/// <summary>
/// Holds the query description.
/// </summary>
public string Text { get; set; }
public Type Type { get; set; }
public Dictionary<string, string> PossibleAnswers { get; private set; }
}
public MiniSurveyModel()
{
Questions = new Dictionary<string, QuestionModel>();
/// <summary>
/// Holds the collection of possible answers.
/// </summary>
public Dictionary<string, string> PossibleAnswers { get; private set; } = new Dictionary<string, string>();
}
public string Title { get; set; }
@ -35,6 +34,6 @@ namespace TINK.Model.MiniSurvey
public string Footer { get; set; }
public Dictionary<string, QuestionModel> Questions { get; }
public Dictionary<string, QuestionModel> Questions { get; } = new Dictionary<string, QuestionModel>();
}
}

View file

@ -455,8 +455,13 @@ namespace TINK.Model
AppResources.ChangeLog3_0_250 // Third-party components updated.
},
{
new Version(3, 0, 262),
AppResources.ChangeLog3_0_262
new Version(3, 0, 260),
// Same info as for version 3.0.251 and 3.0.252
AppResources.ChangeLog3_0_231 // Minor improvements.
},
{
new Version(3, 0, 263),
AppResources.ChangeLog3_0_263
}
};

View file

@ -872,11 +872,11 @@ namespace TINK.MultilingualResources {
}
/// <summary>
/// Looks up a localized string similar to Geolocation permission request refactored..
/// Looks up a localized string similar to CO2 saving is displayed for bikes with GPS-lock after returning bike..
/// </summary>
public static string ChangeLog3_0_262 {
public static string ChangeLog3_0_263 {
get {
return ResourceManager.GetString("ChangeLog3_0_262", resourceCulture);
return ResourceManager.GetString("ChangeLog3_0_263", resourceCulture);
}
}

View file

@ -710,7 +710,7 @@ Kleinere Verbesserungen.</value>
Kartenzentrierfehler behoben.
Kleine Verbesserungen.</value>
</data>
<data name="ChangeLog3_0_262" xml:space="preserve">
<value>Anfrage nach Geolocation-Zugriffserlaubnis überarbeitet.</value>
<data name="ChangeLog3_0_263" xml:space="preserve">
<value>Bei Fahrrädern mit GPS-Schloss wird die CO2-Einsparung nach der Rückgabe des Fahrrads angezeigt.</value>
</data>
</root>

View file

@ -805,7 +805,7 @@ Minor fixes.</value>
Center map to current position issue fixed.
Minor improvements.</value>
</data>
<data name="ChangeLog3_0_262" xml:space="preserve">
<value>Geolocation permission request refactored.</value>
<data name="ChangeLog3_0_263" xml:space="preserve">
<value>CO2 saving is displayed for bikes with GPS-lock after returning bike.</value>
</data>
</root>

View file

@ -952,9 +952,9 @@ Minor improvements.</source>
Kartenzentrierfehler behoben.
Kleine Verbesserungen.</target>
</trans-unit>
<trans-unit id="ChangeLog3_0_262" translate="yes" xml:space="preserve">
<source>Geolocation permission request refactored.</source>
<target state="translated">Anfrage nach Geolocation-Zugriffserlaubnis überarbeitet.</target>
<trans-unit id="ChangeLog3_0_263" translate="yes" xml:space="preserve">
<source>CO2 saving is displayed for bikes with GPS-lock after returning bike.</source>
<target state="translated">Bei Fahrrädern mit GPS-Schloss wird die CO2-Einsparung nach der Rückgabe des Fahrrads angezeigt.</target>
</trans-unit>
</group>
</body>

View file

@ -204,7 +204,7 @@ namespace TINK.Repository
/// <param name="smartDevice">Provides info about hard and software.</param>
/// <param name="operatorUri">Holds the uri of the operator or null, in case of single operator setup.</param>
/// <returns>Response on returning request.</returns>
public async Task<ReservationCancelReturnResponse> DoReturn(
public async Task<DoReturnResponse> DoReturn(
string bikeId,
LocationDto location,
ISmartDevice smartDevice,
@ -615,16 +615,16 @@ namespace TINK.Repository
#endif
}
public static async Task<ReservationCancelReturnResponse> DoReturn(
public static async Task<DoReturnResponse> DoReturn(
string copriHost,
string command,
string userAgent = null)
{
#if !WINDOWS_UWP
string cancelOrReturnResponse;
string doReturnResponse;
try
{
cancelOrReturnResponse = await PostAsync(copriHost, command, userAgent);
doReturnResponse = await PostAsync(copriHost, command, userAgent);
}
catch (System.Exception l_oException)
{
@ -642,7 +642,7 @@ namespace TINK.Repository
}
// Extract bikes from response.
return JsonConvertRethrow.DeserializeObject<ResponseContainer<ReservationCancelReturnResponse>>(cancelOrReturnResponse)?.shareejson;
return JsonConvertRethrow.DeserializeObject<ResponseContainer<DoReturnResponse>>(doReturnResponse)?.shareejson;
#else
return null;
#endif

View file

@ -1625,14 +1625,12 @@ namespace TINK.Repository
return null;
}
public Task<ReservationCancelReturnResponse> DoReturn(
public Task<DoReturnResponse> DoReturn(
string bikeId,
LocationDto geolocation,
ISmartDevice smartDevice,
Uri operatorUri)
{
return null;
}
=> null;
public Task<SubmitFeedbackResponse> DoSubmitFeedback(string bikeId, string message, bool isBikeBroken, Uri operatorUri)
=> null;

View file

@ -172,14 +172,12 @@ namespace TINK.Repository
throw new System.Exception("Buchung im Offlinemodus nicht möglich!");
}
public Task<ReservationCancelReturnResponse> DoReturn(
public Task<DoReturnResponse> DoReturn(
string bikeId,
LocationDto geolocation,
ISmartDevice smartDevice,
Uri operatorUri)
{
throw new System.Exception("Rückgabe im Offlinemodus nicht möglich!");
}
=> throw new System.Exception("Rückgabe im Offlinemodus nicht möglich!");
public Task<SubmitFeedbackResponse> DoSubmitFeedback(string bikeId, string message, bool isBikeBroken, Uri operatorUri) =>
throw new System.Exception("Übermittlung von Feedback im Offlinemodus nicht möglich!");

View file

@ -4,7 +4,7 @@ namespace TINK.Repository.Exception
{
public class ReturnBikeException : ResponseException
{
public ReturnBikeException(ReservationCancelReturnResponse response, string message) : base(response, message)
public ReturnBikeException(BikesReservedOccupiedResponse response, string message) : base(response, message)
{ }
}
}

View file

@ -80,7 +80,7 @@ namespace TINK.Repository
/// <param name="smartDevice">Provides info about hard and software.</param>
/// <param name="operatorUri">Holds the uri of the operator or null, in case of single operator setup.</param>
/// <returns>Response on returning request.</returns>
Task<ReservationCancelReturnResponse> DoReturn(
Task<DoReturnResponse> DoReturn(
string bikeId,
LocationDto location,
ISmartDevice smartDevice,

View file

@ -0,0 +1,15 @@
using System.Runtime.Serialization;
namespace TINK.Repository.Response
{
public class DoReturnResponse : BikesReservedOccupiedResponse
{
/// <summary> Mini survey.</summary>
[DataMember]
public MiniSurveyResponse user_miniquery { get; private set; }
[DataMember]
public string co2saving { get; private set; }
}
}

View file

@ -1,5 +1,4 @@

using System.Runtime.Serialization;
namespace TINK.Repository.Response
{

View file

@ -181,8 +181,8 @@ namespace TINK.Repository.Response
/// <param name="textOfAction">Text describing request which is shown if validation fails.</param>
/// <param name="bikeId">Id of bike.</param>
/// <returns>Verified response.</returns>
public static ReservationCancelReturnResponse GetIsReturnBikeResponseOk(
this ReservationCancelReturnResponse returnBikeResponse,
public static DoReturnResponse GetIsReturnBikeResponseOk(
this DoReturnResponse returnBikeResponse,
string bikeId)
{
// Check if bike is at station.

View file

@ -234,14 +234,12 @@ namespace TINK.Model.Services.CopriApi
return await HttpsServer.DoBookAsync(bikeId, guid, batteryPercentage, operatorUri);
}
public async Task<ReservationCancelReturnResponse> DoReturn(
public async Task<DoReturnResponse> DoReturn(
string bikeId,
LocationDto location,
ISmartDevice smartDevice,
Uri operatorUri)
{
return await HttpsServer.DoReturn(bikeId, location, smartDevice, operatorUri);
}
=> await HttpsServer.DoReturn(bikeId, location, smartDevice, operatorUri);
/// <summary>
/// Submits feedback to copri server.

View file

@ -53,14 +53,12 @@ namespace TINK.Model.Services.CopriApi
return await monkeyStore.DoBookAsync(bikeId, guid, batteryPercentage, operatorUri);
}
public async Task<ReservationCancelReturnResponse> DoReturn(
public async Task<DoReturnResponse> DoReturn(
string bikeId,
LocationDto geolocation,
ISmartDevice smartDevice,
Uri operatorUri)
{
return await monkeyStore.DoReturn(bikeId, geolocation, smartDevice, operatorUri);
}
=> await monkeyStore.DoReturn(bikeId, geolocation, smartDevice, operatorUri);
public Task<SubmitFeedbackResponse> DoSubmitFeedback(string bikeId, string messge, bool bIsBikeBroke, Uri operatorUri)
=> throw new NotImplementedException();

View file

@ -0,0 +1,59 @@
using System.Threading.Tasks;
namespace TINK.Services.Permissions.Plugin
{
using global::Plugin.Permissions;
public class Permissions : ILocationPermission
{
/// <summary> Checks the permission status.</summary>
public async Task<Status> CheckStatusAsync()
{
switch (await CrossPermissions.Current.CheckPermissionStatusAsync<LocationPermission>())
{
case global::Plugin.Permissions.Abstractions.PermissionStatus.Denied:
return Status.Denied;
case global::Plugin.Permissions.Abstractions.PermissionStatus.Granted:
return Status.Granted;
case global::Plugin.Permissions.Abstractions.PermissionStatus.Unknown:
return Status.Unknown;
default:
// Comprises
// - PermissionStatus.Disabled and
// - PermissionStatus.Restricted.
return Status.DeniedRequiresSettingsUI;
}
}
/// <summary> Requests location permission.</summary>
/// <returns>Permission status after request.</returns>
public async Task<Status> RequestAsync()
{
switch (await CrossPermissions.Current.RequestPermissionAsync<LocationPermission>())
{
case global::Plugin.Permissions.Abstractions.PermissionStatus.Denied:
return Status.Denied;
case global::Plugin.Permissions.Abstractions.PermissionStatus.Granted:
return Status.Granted;
case global::Plugin.Permissions.Abstractions.PermissionStatus.Unknown:
return Status.Unknown;
default:
// Comprises
// - PermissionStatus.Disabled and
// - PermissionStatus.Restricted.
return Status.DeniedRequiresSettingsUI;
}
}
/// <summary> Opens app settings dialog.</summary>
public bool OpenAppSettings()
=> CrossPermissions.Current.OpenAppSettings();
}
}

View file

@ -50,6 +50,7 @@
</ItemGroup>
<ItemGroup>
<Folder Include="Services\Permissions\Essentials\" />
<Folder Include="Services\Permissions\Plugin\" />
<Folder Include="ViewModel\Info\BikeInfo\" />
<Folder Include="ViewModel\FeesAndBikes\" />
</ItemGroup>

View file

@ -77,7 +77,10 @@ namespace TINK.View
/// <summary> Pushes a page onto the modal stack. </summary>
Task PopModalAsync();
Task<IUserFeedback> DisplayUserFeedbackPopup();
/// <summary> Displays user feedback popup.</summary>
/// <param name="co2Saving"> Co2 saving information.</param>
/// <returns>User feedback.</returns>
Task<IUserFeedback> DisplayUserFeedbackPopup(string co2Saving = null);
#if USCSHARP9
/// <summary>

View file

@ -15,9 +15,9 @@ using TINK.Model.User;
using Xamarin.Essentials;
using TINK.Repository.Request;
using TINK.Model.Device;
using TINK.Model.MiniSurvey;
using System.Collections.Generic;
using System.Threading;
using TINK.Model;
namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
{
@ -162,10 +162,10 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
IsConnected = IsConnectedDelegate();
var feedBackUri = SelectedBike?.OperatorUri;
MiniSurveyModel miniSurvey;
BookingFinishedModel bookingFinished;
try
{
miniSurvey = await ConnectorFactory(IsConnected).Command.DoReturn(
bookingFinished = await ConnectorFactory(IsConnected).Command.DoReturn(
SelectedBike,
currentLocationDto);
@ -250,9 +250,10 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
BikesViewModel.ActionText = AppResources.ActivityTextErrorDisconnect;
}
#if !USERFEEDBACKDLG_OFF
// Do get Feedback
var feedback = await ViewService.DisplayUserFeedbackPopup();
var feedback = await ViewService.DisplayUserFeedbackPopup(bookingFinished?.Co2Saving);
try
{
@ -288,7 +289,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
return RequestHandlerFactory.Create(SelectedBike, IsConnectedDelegate, ConnectorFactory, Geolocation, LockService, ViewUpdateManager, SmartDevice, ViewService, BikesViewModel, ActiveUser);
}
#endif
if (miniSurvey != null && miniSurvey.Questions.Count > 0)
if (bookingFinished != null && bookingFinished.MiniSurvey.Questions.Count > 0)
{
await ViewService.PushModalAsync(ViewTypes.MiniSurvey);
}

View file

@ -15,9 +15,9 @@ using TINK.Model.Bikes.Bike.BluetoothLock;
using TINK.Model.User;
using TINK.Repository.Request;
using TINK.Model.Device;
using TINK.Model.MiniSurvey;
using System.Collections.Generic;
using System.Threading;
using TINK.Model;
namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
{
@ -273,10 +273,10 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
IsConnected = IsConnectedDelegate();
var feedBackUri = SelectedBike?.OperatorUri;
MiniSurveyModel miniSurvey;
BookingFinishedModel bookingFinished;
try
{
miniSurvey = await ConnectorFactory(IsConnected).Command.DoReturn(
bookingFinished = await ConnectorFactory(IsConnected).Command.DoReturn(
SelectedBike,
currentLocation != null
? new LocationDto.Builder
@ -368,7 +368,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
#if !USERFEEDBACKDLG_OFF
// Do get Feedback
var feedback = await ViewService.DisplayUserFeedbackPopup();
var feedback = await ViewService.DisplayUserFeedbackPopup(bookingFinished?.Co2Saving);
try
{
@ -404,7 +404,7 @@ namespace TINK.ViewModel.Bikes.Bike.BluetoothLock.RequestHandler
}
#endif
if (miniSurvey != null && miniSurvey.Questions.Count > 0)
if (bookingFinished != null && bookingFinished.MiniSurvey.Questions.Count > 0)
{
await ViewService.PushModalAsync(ViewTypes.MiniSurvey);
}

View file

@ -314,17 +314,84 @@ namespace TINK.ViewModel.Map
ActiveFilterMap = TinkApp.GroupFilterMapPage;
ActionText = AppResources.ActivityTextRequestingLocationPermissions;
Status status = await RequestLocationPermission();
// Check location permission
var status = await PermissionsService.CheckStatusAsync();
if (TinkApp.CenterMapToCurrentLocation
&& !GeolocationService.IsSimulation
&& status != Status.Granted)
{
var permissionResult = await PermissionsService.RequestAsync();
if (permissionResult != Status.Granted)
{
var dialogResult = await ViewService.DisplayAlert(
AppResources.MessageTitleHint,
AppResources.MessageCenterMapLocationPermissionOpenDialog,
AppResources.MessageAnswerYes,
AppResources.MessageAnswerNo);
if (dialogResult)
{
// User decided to give access to locations permissions.
PermissionsService.OpenAppSettings();
ActionText = "";
IsRunning = false;
IsMapPageEnabled = true;
return;
}
}
}
ActionText = AppResources.ActivityTextMapLoadingStationsAndBikes;
IsConnected = TinkApp.GetIsConnected();
var resultStationsAndBikes = await TinkApp.GetConnector(IsConnected).Query.GetBikesAndStationsAsync();
TinkApp.Stations = resultStationsAndBikes.Response.StationsAll;
if (Pins.Count > 0 && Pins.Count != resultStationsAndBikes.Response.StationsAll.Count)
{
// Either
// - user logged in/ logged out which might lead to more/ less stations beeing available
// - new stations were added/ existing ones remove
Pins.Clear();
}
// Check if there are alreay any pins to the map
// i.e detecte first call of member OnAppearing after construction
if (Pins.Count <= 0)
{
Log.ForContext<MapPageViewModel>().Debug($"{(ActiveFilterMap.GetGroup().Any() ? $"Active map filter is {string.Join(",", ActiveFilterMap.GetGroup())}." : "Map filter is off.")}");
// Map was not yet initialized.
// Get stations from Copri
Log.ForContext<MapPageViewModel>().Verbose("No pins detected on page.");
if (resultStationsAndBikes.Response.StationsAll.CopriVersion < CopriCallsStatic.UnsupportedVersionLower)
{
await ViewService.DisplayAlert(
AppResources.MessageWaring,
string.Format(AppResources.MessageCopriVersionIsOutdated, ContactPageViewModel.GetAppName(TinkApp.Uris.ActiveUri)),
AppResources.MessageAnswerOk);
Log.ForContext<MapPageViewModel>().Error($"Outdated version of app detected. Version expected is {resultStationsAndBikes.Response.StationsAll.CopriVersion}.");
}
if (resultStationsAndBikes.Response.StationsAll.CopriVersion >= CopriCallsStatic.UnsupportedVersionUpper)
{
await ViewService.DisplayAlert(
AppResources.MessageWaring,
string.Format(AppResources.MessageAppVersionIsOutdated, ContactPageViewModel.GetAppName(TinkApp.Uris.ActiveUri)),
AppResources.MessageAnswerOk);
Result<StationsAndBikesContainer> resultStationsAndBikes = await TinkApp.GetConnector(IsConnected).Query.GetBikesAndStationsAsync();
TinkApp.Stations = resultStationsAndBikes.Response.StationsAll;
await SetStationsOnMap(resultStationsAndBikes.Response.StationsAll);
await HandleAuthCookieNotDefinedException(resultStationsAndBikes.Exception);
// COPRI reports an auth cookie error.
await ViewService.DisplayAlert(
AppResources.MessageWaring,
AppResources.MessageMapPageErrorAuthcookieUndefined,
AppResources.MessageAnswerOk);
// Update pin colors.
@ -337,6 +404,31 @@ namespace TINK.ViewModel.Map
// Update pins color form count of bikes located at station.
UpdatePinsColor(colors);
// Move and scale before getting stations and bikes which takes some time.
ActionText = AppResources.ActivityTextCenterMap;
if (TinkApp.CenterMapToCurrentLocation)
{
Location currentLocation = null;
try
{
currentLocation = await GeolocationService.GetAsync();
}
catch (Exception ex)
{
Log.ForContext<MapPageViewModel>().Error("Getting location failed. {Exception}", ex);
}
TinkApp.MapSpan = MapSpan.FromCenterAndRadius(
new Xamarin.Forms.GoogleMaps.Position(currentLocation.Latitude, currentLocation.Longitude),
TinkApp.MapSpan.Radius);
TinkApp.Save();
}
MoveAndScale(m_oMoveToRegionDelegate, TinkApp.MapSpan);
m_oViewUpdateManager = CreateUpdateTask();
Log.ForContext<MapPageViewModel>().Verbose("Update pins color done.");
// Move and scale before getting stations and bikes which takes some time.
@ -375,144 +467,6 @@ namespace TINK.ViewModel.Map
}
}
/// <summary>
/// Invoked when the auth cookie is not defined.
/// </summary>
private async Task HandleAuthCookieNotDefinedException(Exception exception)
{
if (exception?.GetType() == typeof(AuthcookieNotDefinedException))
{
Log.ForContext<MapPageViewModel>().Error("Map page is shown (probable for the first time after startup of app) and COPRI auth cookie is not defined. {@l_oException}", exception);
// COPRI reports an auth cookie error.
await ViewService.DisplayAlert(
AppResources.MessageWaring,
AppResources.MessageMapPageErrorAuthcookieUndefined,
AppResources.MessageAnswerOk);
await TinkApp.GetConnector(IsConnected).Command.DoLogout();
TinkApp.ActiveUser.Logout();
}
}
/// <summary>
/// Sets the available stations on the map.
/// </summary>
private async Task SetStationsOnMap(StationDictionary stations)
{
if (Pins.Count > 0 && Pins.Count != stations.Count)
{
// Either
// - user logged in/ logged out which might lead to more/ less stations beeing available
// - new stations were added/ existing ones remove
Pins.Clear();
}
// Check if there are alreay any pins to the map
// i.e detecte first call of member OnAppearing after construction
if (Pins.Count <= 0)
{
Log.ForContext<MapPageViewModel>().Debug($"{(ActiveFilterMap.GetGroup().Any() ? $"Active map filter is {string.Join(",", ActiveFilterMap.GetGroup())}." : "Map filter is off.")}");
// Map was not yet initialized.
// Get stations from Copri
Log.ForContext<MapPageViewModel>().Verbose("No pins detected on page.");
if (stations.CopriVersion < CopriCallsStatic.UnsupportedVersionLower)
{
await ViewService.DisplayAlert(
AppResources.MessageWaring,
string.Format(AppResources.MessageCopriVersionIsOutdated, ContactPageViewModel.GetAppName(TinkApp.Uris.ActiveUri)),
AppResources.MessageAnswerOk);
Log.ForContext<MapPageViewModel>().Error($"Outdated version of app detected. Version expected is {stations.CopriVersion}.");
}
if (stations.CopriVersion >= CopriCallsStatic.UnsupportedVersionUpper)
{
await ViewService.DisplayAlert(
AppResources.MessageWaring,
string.Format(AppResources.MessageAppVersionIsOutdated, ContactPageViewModel.GetAppName(TinkApp.Uris.ActiveUri)),
AppResources.MessageAnswerOk);
Log.ForContext<MapPageViewModel>().Error($"Outdated version of app detected. Version expected is {stations.CopriVersion}.");
}
// Set pins to their positions on map.
InitializePins(stations);
Log.ForContext<MapPageViewModel>().Verbose("Update of pins done.");
}
}
/// <summary>
/// Moves the map to the current position of the user.
/// If location permission hasn't been granted, the position is not adjusted.
/// </summary>
private async Task MoveMapToCurrentPositionOfUser(Status status)
{
if (status == Status.Granted)
{
ActionText = AppResources.ActivityTextCenterMap;
if (TinkApp.CenterMapToCurrentLocation)
{
Location currentLocation = null;
try
{
currentLocation = await GeolocationService.GetAsync();
}
catch (Exception ex)
{
Log.ForContext<MapPageViewModel>().Error("Getting location failed. {Exception}", ex);
}
TinkApp.MapSpan = MapSpan.FromCenterAndRadius(
new Xamarin.Forms.GoogleMaps.Position(currentLocation.Latitude, currentLocation.Longitude),
TinkApp.MapSpan.Radius);
TinkApp.Save();
}
MoveAndScale(m_oMoveToRegionDelegate, TinkApp.MapSpan);
}
}
/// <summary>
/// Requests the location permission from the user.
/// If the user declines, a dialog prompot is shown, telling the user to toggle the permission in the device settings.
/// </summary>
/// <returns>The permission status.</returns>
private async Task<Status> RequestLocationPermission()
{
// Check location permission
var status = await PermissionsService.CheckStatusAsync();
if (TinkApp.CenterMapToCurrentLocation
&& !GeolocationService.IsSimulation
&& status != Status.Granted)
{
status = await PermissionsService.RequestAsync();
if (status != Status.Granted)
{
var dialogResult = await ViewService.DisplayAlert(
AppResources.MessageTitleHint,
AppResources.MessageCenterMapLocationPermissionOpenDialog,
AppResources.MessageAnswerYes,
AppResources.MessageAnswerNo);
if (dialogResult)
{
// User decided to give access to locations permissions.
PermissionsService.OpenAppSettings();
ActionText = "";
IsRunning = false;
IsMapPageEnabled = true;
}
}
}
return status;
}
/// <summary> Moves map and scales visible region depending on active filter. </summary>
public static void MoveAndScale(
Action<MapSpan> moveToRegionDelegate,
@ -878,7 +832,7 @@ namespace TINK.ViewModel.Map
if (permissionResult != Status.Granted)
{
var dialogResult = await ViewService.DisplayAlert(
AppResources.MessageTitleHint,
AppResources.MessageTitleHint,
AppResources.MessageBikesManagementLocationPermission,
"Ja",
"Nein");

View file

@ -260,7 +260,7 @@ namespace TestFramework.Repository
public Task<ReservationBookingResponse> DoBookAsync(string bikeId, Guid guid, double batteryPercentage, Uri operatorUri)
=> null;
public Task<ReservationCancelReturnResponse> DoReturn(
public Task<DoReturnResponse> DoReturn(
string bikeId,
LocationDto geolocation,
ISmartDevice smartDevice,

View file

@ -57,10 +57,8 @@ namespace TestFramework.Repository
throw new NotImplementedException();
}
public Task<ReservationCancelReturnResponse> DoReturn(string bikeId, LocationDto location, ISmartDevice smartDevice, Uri operatorUri)
{
throw new NotImplementedException();
}
public Task<DoReturnResponse> DoReturn(string bikeId, LocationDto location, ISmartDevice smartDevice, Uri operatorUri)
=> throw new NotImplementedException();
public Task<SubmitFeedbackResponse> DoSubmitFeedback(string bikeId, string message, bool isBikeBroken, Uri operatorUri)
=> throw new NotImplementedException();

View file

@ -77,10 +77,8 @@ namespace TestFramework.Services.CopriApi.Connector
throw new NotImplementedException();
}
public Task<ReservationCancelReturnResponse> DoReturn(string bikeId, LocationDto location, ISmartDevice smartDevice, Uri operatorUri)
{
throw new NotImplementedException();
}
public Task<DoReturnResponse> DoReturn(string bikeId, LocationDto location, ISmartDevice smartDevice, Uri operatorUri)
=> throw new NotImplementedException();
public Task<SubmitFeedbackResponse> DoSubmitFeedback(string bikeId, string message, bool isBikeBroken, Uri operatorUri)
=> throw new NotImplementedException();

View file

@ -0,0 +1,41 @@
using Plugin.Permissions;
using Plugin.Permissions.Abstractions;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace TestFramework.Services.Permissions
{
public class PermissionsMock : IPermissions
{
public async Task<PermissionStatus> CheckPermissionStatusAsync<T>() where T : BasePermission, new()
{
return await Task.FromResult(Plugin.Permissions.Abstractions.PermissionStatus.Granted);
}
public Task<PermissionStatus> CheckPermissionStatusAsync(Permission permission)
{
throw new NotImplementedException();
}
public bool OpenAppSettings()
{
throw new NotImplementedException();
}
public Task<PermissionStatus> RequestPermissionAsync<T>() where T : BasePermission, new()
{
throw new NotImplementedException();
}
public Task<Dictionary<Permission, PermissionStatus>> RequestPermissionsAsync(params Permission[] permissions)
{
throw new NotImplementedException();
}
public Task<bool> ShouldShowRequestPermissionRationaleAsync(Permission permission)
{
throw new NotImplementedException();
}
}
}

View file

@ -25,6 +25,7 @@
<Folder Include="Services\BluetoothLock\" />
<Folder Include="Services\CopriApi\" />
<Folder Include="Services\Geolocation\" />
<Folder Include="Services\Permissions\" />
</ItemGroup>
<ItemGroup>

View file

@ -8,9 +8,6 @@
<Compile Remove="UseCase\Startup\TestTinkApp.cs" />
</ItemGroup>
<ItemGroup>
<None Remove="Xamarin.Essentials" />
</ItemGroup>
<ItemGroup>
<None Include="UseCase\Startup\TestTinkApp.cs" />
</ItemGroup>
@ -18,7 +15,6 @@
<ItemGroup>
<PackageReference Include="NSubstitute" Version="4.2.2" />
<PackageReference Include="NUnit" Version="3.13.2" />
<PackageReference Include="Xamarin.Essentials" Version="1.7.0" />
</ItemGroup>
<ItemGroup>

View file

@ -1059,9 +1059,29 @@ namespace TestTINKLib.Fixtures.Connector
/// COPRI response shortened, part not belonging to user_miniquery discarded.
/// </summary>
[Test]
public void TestCreateMiniSurvey_Co2Saving()
{
var response = JsonConvert.DeserializeObject<ResponseContainer<DoReturnResponse>>(@"
{
""shareejson"" : {
""co2saving"" : ""Einsparung: 1,95 kg CO2 und 3,00 EUR bei einer Strecke von 10 KM""
}
}");
var bookingFinshed = response.shareejson.Create();
Assert.That(
bookingFinshed.Co2Saving,
Is.EqualTo("Einsparung: 1,95 kg CO2 und 3,00 EUR bei einer Strecke von 10 KM"));
}
/// <summary>
/// COPRI response shortened, part not belonging to user_miniquery discarded.
/// </summary>
[Test]
public void TestCreateMiniSurvey()
{
var response = JsonConvert.DeserializeObject<ResponseContainer<ReservationCancelReturnResponse>>(@"
var response = JsonConvert.DeserializeObject<ResponseContainer<DoReturnResponse>>(@"
{
""shareejson"" : {
""user_miniquery"" : {
@ -1108,26 +1128,26 @@ namespace TestTINKLib.Fixtures.Connector
");
var survey = response.shareejson.Create();
var bookingFinished = response.shareejson.Create();
Assert.That(
survey,
bookingFinished,
Is.Not.Null);
Assert.That(
survey.Title,
bookingFinished.MiniSurvey.Title,
Is.EqualTo("Bitte unterstützen Sie unsere Begleitforschung"));
Assert.That(
survey.Subtitle,
bookingFinished.MiniSurvey.Subtitle,
Is.EqualTo("Ihre drei Antworten werden anonym gespeichert."));
Assert.That(
survey.Footer,
bookingFinished.MiniSurvey.Footer,
Is.EqualTo("Herzlichen Dank und viel Spaß bei der nächsten Fahrt!"));
Assert.That(
survey.Questions.Count,
bookingFinished.MiniSurvey.Questions.Count,
Is.EqualTo(3));
}
@ -1137,7 +1157,7 @@ namespace TestTINKLib.Fixtures.Connector
[Test]
public void TestCreateMiniSurvey_Null()
{
var response = JsonConvert.DeserializeObject<ResponseContainer<ReservationCancelReturnResponse>>(@"
var response = JsonConvert.DeserializeObject<ResponseContainer<DoReturnResponse>>(@"
{
""shareejson"" : {
}
@ -1145,22 +1165,26 @@ namespace TestTINKLib.Fixtures.Connector
");
var survey = response.shareejson.Create();
var bookingFinshed = response.shareejson.Create();
Assert.That(
survey,
bookingFinshed,
Is.Not.Null);
Assert.That(
survey.Title,
bookingFinshed.MiniSurvey.Questions.Count,
Is.EqualTo(0));
Assert.That(
bookingFinshed.MiniSurvey.Title,
Is.Null);
Assert.That(
survey.Subtitle,
bookingFinshed.MiniSurvey.Subtitle,
Is.Null);
Assert.That(
survey.Footer,
bookingFinshed.MiniSurvey.Footer,
Is.Null);
}
@ -1170,7 +1194,7 @@ namespace TestTINKLib.Fixtures.Connector
[Test]
public void TestCreateMiniSurvey_EmptyQuery()
{
var response = JsonConvert.DeserializeObject<ResponseContainer<ReservationCancelReturnResponse>>(@"
var response = JsonConvert.DeserializeObject<ResponseContainer<DoReturnResponse>>(@"
{
""shareejson"" : {
""user_miniquery"" : {
@ -1180,22 +1204,22 @@ namespace TestTINKLib.Fixtures.Connector
");
var survey = response.shareejson.Create();
var bookingFinished = response.shareejson.Create();
Assert.That(
survey,
bookingFinished,
Is.Not.Null);
Assert.That(
survey.Title,
bookingFinished.MiniSurvey.Title,
Is.Null);
Assert.That(
survey.Subtitle,
bookingFinished.MiniSurvey.Subtitle,
Is.Null);
Assert.That(
survey.Footer,
bookingFinished.MiniSurvey.Footer,
Is.Null);
}
@ -1205,7 +1229,7 @@ namespace TestTINKLib.Fixtures.Connector
[Test]
public void TestCreateMiniSurvey_InvalidQuestion_KeyNull()
{
var response = JsonConvert.DeserializeObject<ResponseContainer<ReservationCancelReturnResponse>>(@"
var response = JsonConvert.DeserializeObject<ResponseContainer<DoReturnResponse>>(@"
{
""shareejson"" : {
""user_miniquery"" : {
@ -1232,14 +1256,14 @@ namespace TestTINKLib.Fixtures.Connector
");
var survey = response.shareejson.Create();
var bookingFinised = response.shareejson.Create();
Assert.That(
survey,
bookingFinised,
Is.Not.Null);
Assert.That(
survey.Questions.Count,
bookingFinised.MiniSurvey.Questions.Count,
Is.EqualTo(0));
}
@ -1249,7 +1273,7 @@ namespace TestTINKLib.Fixtures.Connector
[Test]
public void TestCreateMiniSurvey_InvalidQuestion_ValueNull()
{
var response = JsonConvert.DeserializeObject<ResponseContainer<ReservationCancelReturnResponse>>(@"
var response = JsonConvert.DeserializeObject<ResponseContainer<DoReturnResponse>>(@"
{
""shareejson"" : {
""user_miniquery"" : {
@ -1266,14 +1290,14 @@ namespace TestTINKLib.Fixtures.Connector
");
var survey = response.shareejson.Create();
var bookingFinished = response.shareejson.Create();
Assert.That(
survey,
bookingFinished,
Is.Not.Null);
Assert.That(
survey.Questions.Count,
bookingFinished.MiniSurvey.Questions.Count,
Is.EqualTo(0));
}
}

View file

@ -12,9 +12,15 @@ namespace TestShareeLib.Model.MiniSurvey
[Test]
public void TestCtor()
{
Assert.That(
new MiniSurveyModel().Questions.Count,
Is.EqualTo(0),
"Question collection must not be null");
Assert.That(
new MiniSurveyModel().Questions,
Is.Not.Null);
Is.EqualTo(0),
"Question collection must not be null");
}
}
}

View file

@ -9,8 +9,8 @@ namespace TestShareeLib.Model.MiniSurvey
public void TestCtro()
{
Assert.That(
new MiniSurveyModel.QuestionModel().PossibleAnswers,
Is.Not.Null);
new MiniSurveyModel.QuestionModel().PossibleAnswers.Count,
Is.EqualTo(1));
}
}
}

Some files were not shown because too many files have changed in this diff Show more