3.0.267 merged

This commit is contained in:
Oliver Hauff 2022-01-04 18:54:03 +01:00
parent b6fb6394db
commit 67999ef4ae
171 changed files with 6473 additions and 1093 deletions

View file

@ -5,6 +5,8 @@ using Android.OS;
using Android.Content;
using Java.Interop;
using Plugin.Permissions;
using Xamarin.Forms.Platform.Android.AppLinks;
using Firebase;
namespace TINK.Droid
{
@ -35,6 +37,9 @@ namespace TINK.Droid
global::Xamarin.Forms.Forms.Init (this, bundle);
FirebaseApp.InitializeApp(this);
AndroidAppLinks.Init(this);
// Initialize xamarin.essentials, see https://docs.microsoft.com/en-us/xamarin/essentials/get-started?tabs=macos%2Candroid.
Xamarin.Essentials.Platform.Init(this, bundle);
@ -66,7 +71,7 @@ namespace TINK.Droid
if (App.PermissionsService.GetType() == typeof(TINK.Services.Permissions.Essentials.Permissions))
{
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.

View file

@ -1,6 +1,6 @@
<?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.257" android:versionCode="257">
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="29" />
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="preferExternal" package="com.hauffware.sharee" android:versionName="3.0.267" android:versionCode="267">
<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. -->
@ -18,5 +18,5 @@
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-feature android:name="android.hardware.bluetooth_le" android:required="true" />
<application android:icon="@drawable/sharee" android:label="sharee.bike" android:allowBackup="false"></application>
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="000000000000000000000000000000000000000" />
<meta-data android:name="com.google.android.geo.API_KEY" android:value="000000000000000000000000000000000000000" />
</manifest>

View file

@ -40,6 +40,6 @@ using Xamarin.Forms;
[assembly: Application(Debuggable = false)]
#endif
[assembly: MetaData("com.google.android.maps.v2.API_KEY", Value = "000000000000000000000000000000000000000")]
[assembly: MetaData("com.google.android.geo.API_KEY", Value = "000000000000000000000000000000000000000")]
[assembly: ExportFont("Font Awesome 5 Free-Solid-900.otf", Alias = "FA-S")]

View file

@ -458,6 +458,8 @@ namespace TINK.Droid
global::Xamarin.CommunityToolkit.Resource.Animator.mtrl_btn_unelevated_state_list_anim = global::TINK.Droid.Resource.Animator.mtrl_btn_unelevated_state_list_anim;
global::Xamarin.CommunityToolkit.Resource.Animator.mtrl_card_state_list_anim = global::TINK.Droid.Resource.Animator.mtrl_card_state_list_anim;
global::Xamarin.CommunityToolkit.Resource.Animator.mtrl_chip_state_list_anim = global::TINK.Droid.Resource.Animator.mtrl_chip_state_list_anim;
global::Xamarin.CommunityToolkit.Resource.Animator.mtrl_extended_fab_change_size_collapse_motion_spec = global::TINK.Droid.Resource.Animator.mtrl_extended_fab_change_size_collapse_motion_spec;
global::Xamarin.CommunityToolkit.Resource.Animator.mtrl_extended_fab_change_size_expand_motion_spec = global::TINK.Droid.Resource.Animator.mtrl_extended_fab_change_size_expand_motion_spec;
global::Xamarin.CommunityToolkit.Resource.Animator.mtrl_extended_fab_hide_motion_spec = global::TINK.Droid.Resource.Animator.mtrl_extended_fab_hide_motion_spec;
global::Xamarin.CommunityToolkit.Resource.Animator.mtrl_extended_fab_show_motion_spec = global::TINK.Droid.Resource.Animator.mtrl_extended_fab_show_motion_spec;
global::Xamarin.CommunityToolkit.Resource.Animator.mtrl_extended_fab_state_list_animator = global::TINK.Droid.Resource.Animator.mtrl_extended_fab_state_list_animator;
@ -1665,6 +1667,18 @@ namespace TINK.Droid
global::Xamarin.CommunityToolkit.Resource.Color.material_on_surface_disabled = global::TINK.Droid.Resource.Color.material_on_surface_disabled;
global::Xamarin.CommunityToolkit.Resource.Color.material_on_surface_emphasis_high_type = global::TINK.Droid.Resource.Color.material_on_surface_emphasis_high_type;
global::Xamarin.CommunityToolkit.Resource.Color.material_on_surface_emphasis_medium = global::TINK.Droid.Resource.Color.material_on_surface_emphasis_medium;
global::Xamarin.CommunityToolkit.Resource.Color.material_on_surface_stroke = global::TINK.Droid.Resource.Color.material_on_surface_stroke;
global::Xamarin.CommunityToolkit.Resource.Color.material_slider_active_tick_marks_color = global::TINK.Droid.Resource.Color.material_slider_active_tick_marks_color;
global::Xamarin.CommunityToolkit.Resource.Color.material_slider_active_track_color = global::TINK.Droid.Resource.Color.material_slider_active_track_color;
global::Xamarin.CommunityToolkit.Resource.Color.material_slider_halo_color = global::TINK.Droid.Resource.Color.material_slider_halo_color;
global::Xamarin.CommunityToolkit.Resource.Color.material_slider_inactive_tick_marks_color = global::TINK.Droid.Resource.Color.material_slider_inactive_tick_marks_color;
global::Xamarin.CommunityToolkit.Resource.Color.material_slider_inactive_track_color = global::TINK.Droid.Resource.Color.material_slider_inactive_track_color;
global::Xamarin.CommunityToolkit.Resource.Color.material_slider_thumb_color = global::TINK.Droid.Resource.Color.material_slider_thumb_color;
global::Xamarin.CommunityToolkit.Resource.Color.material_timepicker_button_background = global::TINK.Droid.Resource.Color.material_timepicker_button_background;
global::Xamarin.CommunityToolkit.Resource.Color.material_timepicker_button_stroke = global::TINK.Droid.Resource.Color.material_timepicker_button_stroke;
global::Xamarin.CommunityToolkit.Resource.Color.material_timepicker_clockface = global::TINK.Droid.Resource.Color.material_timepicker_clockface;
global::Xamarin.CommunityToolkit.Resource.Color.material_timepicker_clock_text_color = global::TINK.Droid.Resource.Color.material_timepicker_clock_text_color;
global::Xamarin.CommunityToolkit.Resource.Color.material_timepicker_modebutton_tint = global::TINK.Droid.Resource.Color.material_timepicker_modebutton_tint;
global::Xamarin.CommunityToolkit.Resource.Color.mtrl_btn_bg_color_selector = global::TINK.Droid.Resource.Color.mtrl_btn_bg_color_selector;
global::Xamarin.CommunityToolkit.Resource.Color.mtrl_btn_ripple_color = global::TINK.Droid.Resource.Color.mtrl_btn_ripple_color;
global::Xamarin.CommunityToolkit.Resource.Color.mtrl_btn_stroke_color_selector = global::TINK.Droid.Resource.Color.mtrl_btn_stroke_color_selector;
@ -2250,6 +2264,9 @@ namespace TINK.Droid
global::Xamarin.CommunityToolkit.Resource.Drawable.abc_textfield_search_default_mtrl_alpha = global::TINK.Droid.Resource.Drawable.abc_textfield_search_default_mtrl_alpha;
global::Xamarin.CommunityToolkit.Resource.Drawable.abc_textfield_search_material = global::TINK.Droid.Resource.Drawable.abc_textfield_search_material;
global::Xamarin.CommunityToolkit.Resource.Drawable.abc_text_cursor_material = global::TINK.Droid.Resource.Drawable.abc_text_cursor_material;
global::Xamarin.CommunityToolkit.Resource.Drawable.abc_text_select_handle_left_mtrl = global::TINK.Droid.Resource.Drawable.abc_text_select_handle_left_mtrl;
global::Xamarin.CommunityToolkit.Resource.Drawable.abc_text_select_handle_middle_mtrl = global::TINK.Droid.Resource.Drawable.abc_text_select_handle_middle_mtrl;
global::Xamarin.CommunityToolkit.Resource.Drawable.abc_text_select_handle_right_mtrl = global::TINK.Droid.Resource.Drawable.abc_text_select_handle_right_mtrl;
global::Xamarin.CommunityToolkit.Resource.Drawable.abc_vector_test = global::TINK.Droid.Resource.Drawable.abc_vector_test;
global::Xamarin.CommunityToolkit.Resource.Drawable.avd_hide_password = global::TINK.Droid.Resource.Drawable.avd_hide_password;
global::Xamarin.CommunityToolkit.Resource.Drawable.avd_show_password = global::TINK.Droid.Resource.Drawable.avd_show_password;
@ -2535,6 +2552,7 @@ namespace TINK.Droid
global::Xamarin.CommunityToolkit.Resource.Id.jumpToEnd = global::TINK.Droid.Resource.Id.jumpToEnd;
global::Xamarin.CommunityToolkit.Resource.Id.jumpToStart = global::TINK.Droid.Resource.Id.jumpToStart;
global::Xamarin.CommunityToolkit.Resource.Id.labeled = global::TINK.Droid.Resource.Id.labeled;
global::Xamarin.CommunityToolkit.Resource.Id.layout = global::TINK.Droid.Resource.Id.layout;
global::Xamarin.CommunityToolkit.Resource.Id.left = global::TINK.Droid.Resource.Id.left;
global::Xamarin.CommunityToolkit.Resource.Id.leftToRight = global::TINK.Droid.Resource.Id.leftToRight;
global::Xamarin.CommunityToolkit.Resource.Id.legacy = global::TINK.Droid.Resource.Id.legacy;
@ -3575,6 +3593,7 @@ namespace TINK.Droid
global::Xamarin.CommunityToolkit.Resource.Style.ThemeOverlay_MaterialComponents_Dialog_Alert = global::TINK.Droid.Resource.Style.ThemeOverlay_MaterialComponents_Dialog_Alert;
global::Xamarin.CommunityToolkit.Resource.Style.ThemeOverlay_MaterialComponents_Dialog_Alert_Framework = global::TINK.Droid.Resource.Style.ThemeOverlay_MaterialComponents_Dialog_Alert_Framework;
global::Xamarin.CommunityToolkit.Resource.Style.ThemeOverlay_MaterialComponents_Light = global::TINK.Droid.Resource.Style.ThemeOverlay_MaterialComponents_Light;
global::Xamarin.CommunityToolkit.Resource.Style.ThemeOverlay_MaterialComponents_Light_Dialog_Alert_Framework = global::TINK.Droid.Resource.Style.ThemeOverlay_MaterialComponents_Light_Dialog_Alert_Framework;
global::Xamarin.CommunityToolkit.Resource.Style.ThemeOverlay_MaterialComponents_MaterialAlertDialog = global::TINK.Droid.Resource.Style.ThemeOverlay_MaterialComponents_MaterialAlertDialog;
global::Xamarin.CommunityToolkit.Resource.Style.ThemeOverlay_MaterialComponents_MaterialAlertDialog_Centered = global::TINK.Droid.Resource.Style.ThemeOverlay_MaterialComponents_MaterialAlertDialog_Centered;
global::Xamarin.CommunityToolkit.Resource.Style.ThemeOverlay_MaterialComponents_MaterialAlertDialog_Picker_Date = global::TINK.Droid.Resource.Style.ThemeOverlay_MaterialComponents_MaterialAlertDialog_Picker_Date;

View file

@ -63,7 +63,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
<PackageReference Include="Microsoft.NETCore.Platforms" Version="5.0.3" />
<PackageReference Include="Microsoft.NETCore.Platforms" Version="5.0.4" />
<PackageReference Include="Microsoft.Win32.Primitives" Version="4.3.0" />
<PackageReference Include="MonkeyCache">
<Version>1.5.2</Version>
@ -162,34 +162,37 @@
<PackageReference Include="Xamarin.Android.Support.v7.RecyclerView" Version="28.0.0.3" />
<PackageReference Include="Xamarin.Android.Support.Vector.Drawable" Version="28.0.0.3" />
<PackageReference Include="Xamarin.AndroidX.Core">
<Version>1.6.0.1</Version>
<Version>1.6.0.3</Version>
</PackageReference>
<PackageReference Include="Xamarin.AndroidX.MediaRouter">
<Version>1.2.5</Version>
<Version>1.2.5.2</Version>
</PackageReference>
<PackageReference Include="Xamarin.AndroidX.Palette">
<Version>1.0.0.8</Version>
<Version>1.0.0.10</Version>
</PackageReference>
<PackageReference Include="Xamarin.AndroidX.RecyclerView">
<Version>1.2.1.1</Version>
<Version>1.2.1.3</Version>
</PackageReference>
<PackageReference Include="Xamarin.Auth" Version="1.7.0" />
<PackageReference Include="Xamarin.Build.Download" Version="0.10.0" />
<PackageReference Include="Xamarin.CommunityToolkit">
<Version>1.2.0</Version>
<Version>1.3.0</Version>
</PackageReference>
<PackageReference Include="Xamarin.Essentials">
<Version>1.7.0</Version>
</PackageReference>
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2125" />
<PackageReference Include="Xamarin.Forms" Version="5.0.0.2196" />
<PackageReference Include="Xamarin.Forms.AppLinks">
<Version>5.0.0.2244</Version>
</PackageReference>
<PackageReference Include="Xamarin.Forms.GoogleMaps">
<Version>3.3.0</Version>
</PackageReference>
<PackageReference Include="Xamarin.Forms.GoogleMaps.Bindings" Version="3.0.0" />
<PackageReference Include="Xamarin.GooglePlayServices.Base" Version="117.6.0" />
<PackageReference Include="Xamarin.GooglePlayServices.Basement" Version="117.6.0.1" />
<PackageReference Include="Xamarin.GooglePlayServices.Maps" Version="117.0.1" />
<PackageReference Include="Xamarin.GooglePlayServices.Tasks" Version="117.2.1" />
<PackageReference Include="Xamarin.GooglePlayServices.Base" Version="117.6.0.1" />
<PackageReference Include="Xamarin.GooglePlayServices.Basement" Version="117.6.0.2" />
<PackageReference Include="Xamarin.GooglePlayServices.Maps" Version="117.0.1.1" />
<PackageReference Include="Xamarin.GooglePlayServices.Tasks" Version="117.2.1.1" />
</ItemGroup>
<ItemGroup>
<Reference Include="Mono.Android" />

View file

@ -49,8 +49,8 @@
<key>CFBundleDisplayName</key>
<string>sharee.bike</string>
<key>CFBundleVersion</key>
<string>257</string>
<string>267</string>
<key>CFBundleShortVersionString</key>
<string>3.0.257</string>
<string>3.0.267</string>
</dict>
</plist>

View file

@ -115,7 +115,7 @@
<ItemGroup>
<PackageReference Include="Microsoft.Bcl.Build" Version="1.0.21" />
<PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
<PackageReference Include="Microsoft.NETCore.Platforms" Version="5.0.3" />
<PackageReference Include="Microsoft.NETCore.Platforms" Version="5.0.4" />
<PackageReference Include="Microsoft.Win32.Primitives" Version="4.3.0" />
<PackageReference Include="MonkeyCache">
<Version>1.5.2</Version>
@ -192,7 +192,7 @@
<PackageReference Include="Xamarin.Auth" Version="1.7.0" />
<PackageReference Include="Xamarin.Build.Download" Version="0.10.0" />
<PackageReference Include="Xamarin.CommunityToolkit">
<Version>1.2.0</Version>
<Version>1.3.0</Version>
</PackageReference>
<PackageReference Include="Xamarin.Essentials">
<Version>1.7.0</Version>
@ -215,7 +215,7 @@
<Version>0.7.104</Version>
</PackageReference>
<PackageReference Include="Xamarin.Forms">
<Version>5.0.0.2125</Version>
<Version>5.0.0.2196</Version>
</PackageReference>
</ItemGroup>
<ItemGroup>

View file

@ -145,7 +145,7 @@ namespace TINK
m_oModelRoot = new TinkApp(
settings,
store, // Manages user account
(isConnected, activeUri, sessionCookie, mail, expiresAfter) => ConnectorFactory.Create(isConnected, activeUri, $"sharee.bike/{appInfoService.Version}", sessionCookie, mail, expiresAfter),
(isConnected, activeUri, sessionCookie, mail, expiresAfter) => ConnectorFactory.Create(isConnected, activeUri, new Repository.AppContextInfo("oiF2kahH", "sharee.bike", appInfoService.Version), sessionCookie, mail, expiresAfter),
GeolocationServicesContainer,
null, /* locksService */
DependencyService.Get<ISmartDevice>(),
@ -307,7 +307,7 @@ namespace TINK
if (_PermissionsService != null)
return _PermissionsService;
_PermissionsService = new Services.Permissions.Plugin.Permissions();
_PermissionsService = new Services.Permissions.Essentials.Permissions();
return _PermissionsService;
}
}

View file

@ -14,19 +14,31 @@
<Frame>
<StackLayout
Orientation="Vertical">
<Label
HorizontalOptions="Center"
FontAttributes="Bold"
Text="{Binding StationDetailText}"/>
<ListView
x:Name="BikesAtStationListView"
SelectionMode="None"
SelectedItem="{Binding SelectedBike}"
IsEnabled="{Binding IsIdle}"
IsVisible="{Binding IsBikesListVisible}"
HasUnevenRows="True"
ItemTemplate="{StaticResource bikeTemplateSelector}"/>
<Label
<!-- Title bar stack layout-->
<StackLayout
Orientation="Vertical">
<Label
HorizontalOptions="Center"
FontAttributes="Bold"
TextColor="{DynamicResource primary-back-title-color}"
Text="{Binding StationDetailText}"/>
<BoxView
HeightRequest="1"
Color="{DynamicResource primary-back-title-color}"/>
</StackLayout>
<!-- Center stack layout -->
<StackLayout
Orientation="Vertical"
VerticalOptions="CenterAndExpand">
<ListView
x:Name="BikesAtStationListView"
SelectionMode="None"
SelectedItem="{Binding SelectedBike}"
IsEnabled="{Binding IsIdle}"
IsVisible="{Binding IsBikesListVisible}"
HasUnevenRows="True"
ItemTemplate="{StaticResource bikeTemplateSelector}"/>
<Label
IsVisible="{Binding IsNoBikesAtStationVisible}"
Text="{Binding NoBikesAtStationText}"/>
</StackLayout>

View file

@ -91,14 +91,6 @@ namespace TINK.View.Contact
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
/// <summary>

View file

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

View file

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

View file

@ -21,6 +21,9 @@ namespace TINK.View.Map
/// <summary> View model to notify about whether page appears or hides. </summary>
private MapPageViewModel MapPageViewModel { get; set; }
/// <summary> Initialization status to ensure initialization logic is not called multiple times. </summary>
private bool isInitializationStarted = false;
/// <summary>
/// Constructs map page instance.
/// </summary>
@ -131,6 +134,10 @@ namespace TINK.View.Map
/// </summary>
protected async override void OnAppearing()
{
// Don't repeat the initialization if it has been completed already.
if (isInitializationStarted) return;
isInitializationStarted = true;
// Pass reference to member Navigation to show bikes at station x dialog.
try
{
@ -144,7 +151,6 @@ namespace TINK.View.Map
}
catch (Exception exception)
{
Log.ForContext<MapPage>().Error("Constructing map page view model failed. {Exception}", exception);
return;
}
@ -187,11 +193,7 @@ namespace TINK.View.Map
try
{
// Pre move and scanle maps to avoid initial display of map in Rome.
Log.ForContext<MapPage>().Verbose("Moving and scaling map.");
MapPageViewModel.MoveAndScale(
(mapSpan) => MyMap.MoveToRegion(mapSpan),
App.ModelRoot.Uris.ActiveUri,
App.ModelRoot.GroupFilterMapPage);
PremoveAndScaleMap();
}
catch (Exception exception)
{

View file

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

View file

@ -20,6 +20,9 @@ namespace TINK.View.MyBikes
/// <summary> Refernce to view model. </summary>
MyBikesPageViewModel m_oViewModel = null;
/// <summary> Initialization status to ensure initialization logic is not called multiple times. </summary>
private bool isInitializationStarted = false;
/// <summary>
/// Constructs a my bikes page.
/// </summary>
@ -33,6 +36,10 @@ namespace TINK.View.MyBikes
/// </summary>
protected async override void OnAppearing()
{
// Don't repeat the initialization if it has been completed already.
if (isInitializationStarted) return;
isInitializationStarted = true;
if (m_oViewModel != null)
{
// No need to create view model, set binding context an items source if already done.