mirror of
https://dev.azure.com/TeilRad/sharee.bike%20App/_git/Code
synced 2025-06-21 21:46:27 +02:00
Version 3.0.255
This commit is contained in:
parent
db9c288584
commit
5a26bf273b
1495 changed files with 159465 additions and 5060 deletions
|
@ -12,7 +12,7 @@ using TINK.Model.User;
|
|||
using TINK.View;
|
||||
using TINK.ViewModel.Bikes.Bike;
|
||||
using TINK.ViewModel.Bikes.Bike.BC;
|
||||
using Plugin.Permissions.Abstractions;
|
||||
using TINK.Services.Permissions;
|
||||
using Plugin.BLE.Abstractions.Contracts;
|
||||
using TINK.MultilingualResources;
|
||||
using TINK.Model.Device;
|
||||
|
@ -91,7 +91,7 @@ namespace TINK.ViewModel.Bikes
|
|||
/// <param name="viewService">Interface to actuate methodes on GUI.</param>
|
||||
public BikesViewModel(
|
||||
User user,
|
||||
IPermissions permissions,
|
||||
ILocationPermission permissions,
|
||||
IBluetoothLE bluetoothLE,
|
||||
string runtimPlatform,
|
||||
Func<bool> isConnectedDelegate,
|
||||
|
@ -231,7 +231,7 @@ namespace TINK.ViewModel.Bikes
|
|||
/// <summary>
|
||||
/// Service to manage permissions (location) of the app.
|
||||
/// </summary>
|
||||
protected IPermissions PermissionsService { get; private set; }
|
||||
protected ILocationPermission PermissionsService { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Service to manage bluetooth stack.
|
||||
|
|
|
@ -18,10 +18,9 @@ using TINK.Services.BluetoothLock;
|
|||
using TINK.Model.Services.Geolocation;
|
||||
using TINK.ViewModel.Bikes;
|
||||
using TINK.Services.BluetoothLock.Tdo;
|
||||
using Plugin.Permissions.Abstractions;
|
||||
using Plugin.BLE.Abstractions.Contracts;
|
||||
using TINK.MultilingualResources;
|
||||
using Plugin.Permissions;
|
||||
using TINK.Services.Permissions;
|
||||
using TINK.Model.Station;
|
||||
using TINK.Model.Device;
|
||||
|
||||
|
@ -59,7 +58,7 @@ namespace TINK.ViewModel.BikesAtStation
|
|||
/// <param name="viewService">Interface to actuate methodes on GUI.</param>
|
||||
public BikesAtStationPageViewModel(
|
||||
User user,
|
||||
IPermissions permissions,
|
||||
ILocationPermission permissions,
|
||||
IBluetoothLE bluetoothLE,
|
||||
string runtimPlatform,
|
||||
IStation selectedStation,
|
||||
|
@ -81,6 +80,10 @@ namespace TINK.ViewModel.BikesAtStation
|
|||
Title = string.Format(m_oStation?.StationName != null
|
||||
? m_oStation.StationName
|
||||
: string.Empty);
|
||||
|
||||
StationDetailText = string.Format(m_oStation?.Id != null
|
||||
? string.Format(AppResources.MarkingBikesAtStationStationId, m_oStation.Id)
|
||||
: string.Empty); ;
|
||||
|
||||
CollectionChanged += (sender, eventargs) =>
|
||||
{
|
||||
|
@ -121,8 +124,8 @@ namespace TINK.ViewModel.BikesAtStation
|
|||
public string ContactSupportHintText
|
||||
=> string.Format(AppResources.MarkingContactSupport, m_oStation?.OperatorData?.Name ?? "Operator");
|
||||
|
||||
/// <summary> Returns if info about the fact that user did not request or book any bikes is visible or not.<summary>
|
||||
/// Gets message that logged in user has not booked any bikes.
|
||||
/// <summary>
|
||||
/// Returns if info about the fact that user did not request or book any bikes is visible or not.
|
||||
/// </summary>
|
||||
public bool IsNoBikesAtStationVisible
|
||||
{
|
||||
|
@ -207,6 +210,9 @@ namespace TINK.ViewModel.BikesAtStation
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary> Returns detailed info about the station (station id).<summary>
|
||||
public string StationDetailText { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Invoked when page is shown.
|
||||
/// Starts update process.
|
||||
|
@ -233,10 +239,6 @@ namespace TINK.ViewModel.BikesAtStation
|
|||
.Select(x => x.LockInfo)
|
||||
.ToList();
|
||||
|
||||
Title = string.Format(m_oStation?.StationName != null
|
||||
? m_oStation.StationName
|
||||
: string.Empty);
|
||||
|
||||
if (LockService is ILocksServiceFake serviceFake)
|
||||
{
|
||||
serviceFake.UpdateSimulation(bikesAtStation);
|
||||
|
@ -248,12 +250,12 @@ namespace TINK.ViewModel.BikesAtStation
|
|||
if (bikesAtStation.GetLockIt().Count > 0
|
||||
&& RuntimePlatform == Device.Android)
|
||||
{
|
||||
var status = await PermissionsService.CheckPermissionStatusAsync<LocationPermission>();
|
||||
if (status != PermissionStatus.Granted)
|
||||
var status = await PermissionsService.CheckStatusAsync();
|
||||
if (status != Status.Granted)
|
||||
{
|
||||
var permissionResult = await PermissionsService.RequestPermissionAsync<LocationPermission>();
|
||||
var permissionResult = await PermissionsService.RequestAsync();
|
||||
|
||||
if (permissionResult != PermissionStatus.Granted)
|
||||
if (permissionResult != Status.Granted)
|
||||
{
|
||||
var dialogResult = await ViewService.DisplayAlert(
|
||||
AppResources.MessageTitleHint,
|
||||
|
|
|
@ -15,18 +15,12 @@ using System.Collections.ObjectModel;
|
|||
#if USEFLYOUT
|
||||
using TINK.View.MasterDetail;
|
||||
#endif
|
||||
using TINK.Settings;
|
||||
using TINK.Model.Connector;
|
||||
using TINK.Model.Services.CopriApi;
|
||||
using Plugin.Permissions;
|
||||
using TINK.Services.Permissions;
|
||||
using Xamarin.Essentials;
|
||||
using System.Threading;
|
||||
using TINK.MultilingualResources;
|
||||
using TINK.Services.BluetoothLock;
|
||||
using TINK.Model.Services.CopriApi.ServerUris;
|
||||
using TINK.ViewModel.Info;
|
||||
using TINK.Repository;
|
||||
using Plugin.Permissions.Abstractions;
|
||||
using TINK.Model.Services.Geolocation;
|
||||
|
||||
namespace TINK.ViewModel.Contact
|
||||
|
@ -48,7 +42,7 @@ namespace TINK.ViewModel.Contact
|
|||
/// <summary>
|
||||
/// Service to query/ manage permissions (location) of the app.
|
||||
/// </summary>
|
||||
private IPermissions PermissionsService { get; }
|
||||
private ILocationPermission PermissionsService { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Service to manage bluetooth stack.
|
||||
|
@ -114,7 +108,7 @@ namespace TINK.ViewModel.Contact
|
|||
/// <param name="navigation">Interface to navigate.</param>
|
||||
public SelectStationPageViewModel(
|
||||
ITinkApp tinkApp,
|
||||
IPermissions permissionsService,
|
||||
ILocationPermission permissionsService,
|
||||
Plugin.BLE.Abstractions.Contracts.IBluetoothLE bluetoothService,
|
||||
IGeolocation geolocationService,
|
||||
Action<MapSpan> moveToRegionDelegate,
|
||||
|
@ -288,14 +282,14 @@ namespace TINK.ViewModel.Contact
|
|||
ActionText = AppResources.ActivityTextRequestingLocationPermissions;
|
||||
|
||||
// Check location permission
|
||||
var status = await PermissionsService.CheckPermissionStatusAsync<LocationPermission>();
|
||||
var status = await PermissionsService.CheckStatusAsync();
|
||||
if (TinkApp.CenterMapToCurrentLocation
|
||||
&& !GeolocationService.IsSimulation
|
||||
&& status != Plugin.Permissions.Abstractions.PermissionStatus.Granted)
|
||||
&& status != Status.Granted)
|
||||
{
|
||||
var permissionResult = await PermissionsService.RequestPermissionAsync<LocationPermission>();
|
||||
var permissionResult = await PermissionsService.RequestAsync();
|
||||
|
||||
if (permissionResult != Plugin.Permissions.Abstractions.PermissionStatus.Granted)
|
||||
if (permissionResult != Status.Granted)
|
||||
{
|
||||
var dialogResult = await ViewService.DisplayAlert(
|
||||
AppResources.MessageTitleHint,
|
||||
|
|
|
@ -19,8 +19,7 @@ using TINK.Model;
|
|||
using Xamarin.Forms;
|
||||
using TINK.ViewModel.Bikes;
|
||||
using TINK.Services.BluetoothLock.Tdo;
|
||||
using Plugin.Permissions;
|
||||
using Plugin.Permissions.Abstractions;
|
||||
using TINK.Services.Permissions;
|
||||
using Plugin.BLE.Abstractions.Contracts;
|
||||
using TINK.MultilingualResources;
|
||||
using TINK.Model.Device;
|
||||
|
@ -73,7 +72,7 @@ namespace TINK.ViewModel.FindBike
|
|||
/// <param name="viewService">Interface to actuate methodes on GUI.</param>
|
||||
public FindBikePageViewModel(
|
||||
User p_oUser,
|
||||
IPermissions permissions,
|
||||
ILocationPermission permissions,
|
||||
IBluetoothLE bluetoothLE,
|
||||
string runtimPlatform,
|
||||
Func<bool> isConnectedDelegate,
|
||||
|
@ -144,12 +143,12 @@ namespace TINK.ViewModel.FindBike
|
|||
&& RuntimePlatform == Device.Android)
|
||||
{
|
||||
// Check location permission
|
||||
var status = await PermissionsService.CheckPermissionStatusAsync<LocationPermission>();
|
||||
if (status != PermissionStatus.Granted)
|
||||
var status = await PermissionsService.CheckStatusAsync();
|
||||
if (status != Status.Granted)
|
||||
{
|
||||
var permissionResult = await PermissionsService.RequestPermissionAsync<LocationPermission>();
|
||||
var permissionResult = await PermissionsService.RequestAsync();
|
||||
|
||||
if (permissionResult != PermissionStatus.Granted)
|
||||
if (permissionResult != Status.Granted)
|
||||
{
|
||||
var dialogResult = await ViewService.DisplayAlert(
|
||||
AppResources.MessageTitleHint,
|
||||
|
|
|
@ -18,7 +18,7 @@ using TINK.View.MasterDetail;
|
|||
using TINK.Settings;
|
||||
using TINK.Model.Connector;
|
||||
using TINK.Model.Services.CopriApi;
|
||||
using Plugin.Permissions;
|
||||
using TINK.Services.Permissions;
|
||||
using Xamarin.Essentials;
|
||||
using System.Threading;
|
||||
using TINK.MultilingualResources;
|
||||
|
@ -26,7 +26,6 @@ using TINK.Services.BluetoothLock;
|
|||
using TINK.Model.Services.CopriApi.ServerUris;
|
||||
using TINK.ViewModel.Info;
|
||||
using TINK.Repository;
|
||||
using Plugin.Permissions.Abstractions;
|
||||
using TINK.Model.Services.Geolocation;
|
||||
|
||||
#if !TRYNOTBACKSTYLE
|
||||
|
@ -51,7 +50,7 @@ namespace TINK.ViewModel.Map
|
|||
/// <summary>
|
||||
/// Service to query/ manage permissions (location) of the app.
|
||||
/// </summary>
|
||||
private IPermissions PermissionsService { get; }
|
||||
private ILocationPermission PermissionsService { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Service to manage bluetooth stack.
|
||||
|
@ -121,7 +120,7 @@ namespace TINK.ViewModel.Map
|
|||
/// <param name="navigation">Interface to navigate.</param>
|
||||
public MapPageViewModel(
|
||||
ITinkApp tinkApp,
|
||||
IPermissions permissionsService,
|
||||
ILocationPermission permissionsService,
|
||||
Plugin.BLE.Abstractions.Contracts.IBluetoothLE bluetoothService,
|
||||
IGeolocation geolocationService,
|
||||
Action<MapSpan> moveToRegionDelegate,
|
||||
|
@ -318,14 +317,14 @@ namespace TINK.ViewModel.Map
|
|||
ActionText = AppResources.ActivityTextRequestingLocationPermissions;
|
||||
|
||||
// Check location permission
|
||||
var status = await PermissionsService.CheckPermissionStatusAsync<LocationPermission>();
|
||||
var status = await PermissionsService.CheckStatusAsync();
|
||||
if (TinkApp.CenterMapToCurrentLocation
|
||||
&& !GeolocationService.IsSimulation
|
||||
&& status != Plugin.Permissions.Abstractions.PermissionStatus.Granted)
|
||||
&& status != Status.Granted)
|
||||
{
|
||||
var permissionResult = await PermissionsService.RequestPermissionAsync<LocationPermission>();
|
||||
var permissionResult = await PermissionsService.RequestAsync();
|
||||
|
||||
if (permissionResult != Plugin.Permissions.Abstractions.PermissionStatus.Granted)
|
||||
if (permissionResult != Status.Granted)
|
||||
{
|
||||
var dialogResult = await ViewService.DisplayAlert(
|
||||
AppResources.MessageTitleHint,
|
||||
|
@ -345,22 +344,6 @@ namespace TINK.ViewModel.Map
|
|||
}
|
||||
}
|
||||
|
||||
// Move and scale before getting stations and bikes which takes some time.
|
||||
ActionText = AppResources.ActivityTextCenterMap;
|
||||
Location currentLocation = null;
|
||||
try
|
||||
{
|
||||
currentLocation = TinkApp.CenterMapToCurrentLocation
|
||||
? await GeolocationService.GetAsync()
|
||||
: null;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.ForContext<MapPageViewModel>().Error("Getting location failed. {Exception}", ex);
|
||||
}
|
||||
|
||||
MoveAndScale(m_oMoveToRegionDelegate, TinkApp.Uris.ActiveUri, ActiveFilterMap, currentLocation);
|
||||
|
||||
ActionText = AppResources.ActivityTextMapLoadingStationsAndBikes;
|
||||
IsConnected = TinkApp.GetIsConnected();
|
||||
var resultStationsAndBikes = await TinkApp.GetConnector(IsConnected).Query.GetBikesAndStationsAsync();
|
||||
|
@ -435,6 +418,22 @@ 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;
|
||||
Location currentLocation = null;
|
||||
try
|
||||
{
|
||||
currentLocation = TinkApp.CenterMapToCurrentLocation
|
||||
? await GeolocationService.GetAsync()
|
||||
: null;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.ForContext<MapPageViewModel>().Error("Getting location failed. {Exception}", ex);
|
||||
}
|
||||
|
||||
MoveAndScale(m_oMoveToRegionDelegate, TinkApp.Uris.ActiveUri, ActiveFilterMap, currentLocation);
|
||||
|
||||
m_oViewUpdateManager = CreateUpdateTask();
|
||||
|
||||
Log.ForContext<MapPageViewModel>().Verbose("Update pins color done.");
|
||||
|
@ -854,14 +853,14 @@ namespace TINK.ViewModel.Map
|
|||
Pins.Clear();
|
||||
|
||||
// Check location permission
|
||||
var status = await PermissionsService.CheckPermissionStatusAsync<LocationPermission>();
|
||||
var status = await PermissionsService.CheckStatusAsync();
|
||||
if (TinkApp.CenterMapToCurrentLocation
|
||||
&& !GeolocationService.IsSimulation
|
||||
&& status != Plugin.Permissions.Abstractions.PermissionStatus.Granted)
|
||||
&& status != Status.Granted)
|
||||
{
|
||||
var permissionResult = await PermissionsService.RequestPermissionAsync<LocationPermission>();
|
||||
var permissionResult = await PermissionsService.RequestAsync();
|
||||
|
||||
if (permissionResult != Plugin.Permissions.Abstractions.PermissionStatus.Granted)
|
||||
if (permissionResult != Status.Granted)
|
||||
{
|
||||
var dialogResult = await ViewService.DisplayAlert(
|
||||
AppResources.MessageTitleHint,
|
||||
|
|
|
@ -18,8 +18,7 @@ using TINK.Model;
|
|||
using Xamarin.Forms;
|
||||
using TINK.ViewModel.Bikes;
|
||||
using TINK.Services.BluetoothLock.Tdo;
|
||||
using Plugin.Permissions;
|
||||
using Plugin.Permissions.Abstractions;
|
||||
using TINK.Services.Permissions;
|
||||
using Plugin.BLE.Abstractions.Contracts;
|
||||
using TINK.MultilingualResources;
|
||||
using TINK.Model.Device;
|
||||
|
@ -45,7 +44,7 @@ namespace TINK.ViewModel.MyBikes
|
|||
/// <param name="viewService">Interface to actuate methodes on GUI.</param>
|
||||
public MyBikesPageViewModel(
|
||||
User p_oUser,
|
||||
IPermissions permissions,
|
||||
ILocationPermission permissions,
|
||||
IBluetoothLE bluetoothLE,
|
||||
string runtimPlatform,
|
||||
Func<bool> isConnectedDelegate,
|
||||
|
@ -119,12 +118,12 @@ namespace TINK.ViewModel.MyBikes
|
|||
&& RuntimePlatform == Device.Android)
|
||||
{
|
||||
// Check location permission
|
||||
var status = await PermissionsService.CheckPermissionStatusAsync<LocationPermission>();
|
||||
if (status != PermissionStatus.Granted)
|
||||
var status = await PermissionsService.CheckStatusAsync();
|
||||
if (status != Status.Granted)
|
||||
{
|
||||
var permissionResult = await PermissionsService.RequestPermissionAsync<LocationPermission>();
|
||||
var permissionResult = await PermissionsService.RequestAsync();
|
||||
|
||||
if (permissionResult != PermissionStatus.Granted)
|
||||
if (permissionResult != Status.Granted)
|
||||
{
|
||||
var dialogResult = await ViewService.DisplayAlert(
|
||||
AppResources.MessageTitleHint,
|
||||
|
|
|
@ -127,8 +127,9 @@ namespace TINK.ViewModel
|
|||
Themes = new ServicesViewModel(
|
||||
TinkApp.Themes.Select(x => x.GetType().FullName),
|
||||
new Dictionary<string, string> {
|
||||
{ typeof(Themes.Konrad).FullName, "Konrad" },
|
||||
{ typeof(Themes.ShareeBike).FullName, "sharee.bike" }
|
||||
{ typeof(Themes.Konrad).FullName, "Mein konrad" /* display name in picker */},
|
||||
{ typeof(Themes.ShareeBike).FullName, "sharee.bike" /* display name in picker */},
|
||||
{ typeof(Themes.LastenradBayern).FullName, "LastenradBayern" /* display name in picker */}
|
||||
},
|
||||
TinkApp.Themes.Active.GetType().FullName);
|
||||
|
||||
|
@ -185,7 +186,11 @@ namespace TINK.ViewModel
|
|||
else if (Themes.Active == typeof(Themes.ShareeBike).FullName)
|
||||
{
|
||||
mergedDictionaries.Add(new Themes.ShareeBike());
|
||||
}
|
||||
}
|
||||
else if (Themes.Active == typeof(Themes.LastenradBayern).FullName)
|
||||
{
|
||||
mergedDictionaries.Add(new Themes.LastenradBayern());
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.ForContext<SettingsPageViewModel>().Debug($"No theme {Themes.Active} found.");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue