mirror of
https://dev.azure.com/TeilRad/sharee.bike%20App/_git/Code
synced 2025-02-22 02:46:28 +01:00
Manually merged.
This commit is contained in:
parent
d5832e010e
commit
c7c9f252af
112 changed files with 1127 additions and 352 deletions
|
@ -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" />
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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. -->
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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>
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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" />
|
||||
|
|
|
@ -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 -->
|
||||
|
|
224
Meinkonrad/TINK.Android/Resources/Resource.Designer.cs
generated
224
Meinkonrad/TINK.Android/Resources/Resource.Designer.cs
generated
|
@ -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;
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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>
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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 -->
|
||||
|
|
2
TINK/TINK.Android/Resources/Resource.Designer.cs
generated
2
TINK/TINK.Android/Resources/Resource.Designer.cs
generated
|
@ -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
|
||||
{
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
|
@ -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>
|
||||
|
|
21
TINKLib/Model/BookingFinishedModel.cs
Normal file
21
TINKLib/Model/BookingFinishedModel.cs
Normal 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; }
|
||||
|
||||
}
|
||||
}
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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; }
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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>();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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!");
|
||||
|
|
|
@ -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)
|
||||
{ }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
15
TINKLib/Repository/Response/DoReturnResponse.cs
Normal file
15
TINKLib/Repository/Response/DoReturnResponse.cs
Normal 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; }
|
||||
|
||||
}
|
||||
}
|
|
@ -1,5 +1,4 @@
|
|||
|
||||
using System.Runtime.Serialization;
|
||||
|
||||
namespace TINK.Repository.Response
|
||||
{
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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();
|
||||
|
|
59
TINKLib/Services/Permissions/Plugin/Permissions.cs
Normal file
59
TINKLib/Services/Permissions/Plugin/Permissions.cs
Normal 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();
|
||||
}
|
||||
}
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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();
|
||||
|
|
41
TestFramework/Services/Permissions/PermissionsMock.cs
Normal file
41
TestFramework/Services/Permissions/PermissionsMock.cs
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -25,6 +25,7 @@
|
|||
<Folder Include="Services\BluetoothLock\" />
|
||||
<Folder Include="Services\CopriApi\" />
|
||||
<Folder Include="Services\Geolocation\" />
|
||||
<Folder Include="Services\Permissions\" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
Loading…
Add table
Reference in a new issue