mirror of
https://github.com/bitwarden/android.git
synced 2024-12-28 03:48:31 +03:00
PM-3350 Fixed/Updated all MAUI-Migration TODOs
This commit is contained in:
parent
16ada4993c
commit
1a0b52d644
15 changed files with 51 additions and 127 deletions
|
@ -11,10 +11,10 @@
|
||||||
<Grid RowSpacing="0"
|
<Grid RowSpacing="0"
|
||||||
ColumnSpacing="0">
|
ColumnSpacing="0">
|
||||||
<Grid.Behaviors>
|
<Grid.Behaviors>
|
||||||
<!--TODO: [MAUI-Migration] Currently using a "copied" implementation from the github issue in the link until they add this to the Community Toolkit ( https://github.com/CommunityToolkit/Maui/issues/86 ) -->
|
<!--TODO: [TouchEffect] Currently using a "copied" implementation from the github issue in the link until they add this to the Community Toolkit ( https://github.com/CommunityToolkit/Maui/issues/86 ) -->
|
||||||
<behaviors:TouchBehavior NativeAnimation="True"
|
<behaviors:TouchBehavior NativeAnimation="True"
|
||||||
LongPressCommand="{Binding LongPressAccountCommand, Source={x:Reference _accountView}}"
|
LongPressCommand="{Binding LongPressAccountCommand, Source={x:Reference _accountView}}"
|
||||||
LongPressCommandParameter="{Binding .BindingContext, Source={x:Reference _accountView}}" />
|
LongPressCommandParameter="{Binding BindingContext, Source={x:Reference _accountView}}" />
|
||||||
</Grid.Behaviors>
|
</Grid.Behaviors>
|
||||||
<Grid.GestureRecognizers>
|
<Grid.GestureRecognizers>
|
||||||
<TapGestureRecognizer Command="{Binding SelectAccountCommand, Source={x:Reference _accountView}}" CommandParameter="{Binding .}" />
|
<TapGestureRecognizer Command="{Binding SelectAccountCommand, Source={x:Reference _accountView}}" CommandParameter="{Binding .}" />
|
||||||
|
|
|
@ -48,7 +48,7 @@ namespace Bit.App.Controls
|
||||||
|
|
||||||
private Task<Stream> GetStreamAsync(CancellationToken userToken = new CancellationToken())
|
private Task<Stream> GetStreamAsync(CancellationToken userToken = new CancellationToken())
|
||||||
{
|
{
|
||||||
// TODO: [MAUI-Migration] [Critical] now methods are private protected so cannot be used here, figure out workaround
|
// TODO: [MAUI-Avatar] now methods are private protected so cannot be used here, figure out workaround
|
||||||
//OnLoadingStarted();
|
//OnLoadingStarted();
|
||||||
//userToken.Register(CancellationTokenSource.Cancel);
|
//userToken.Register(CancellationTokenSource.Cancel);
|
||||||
var result = Draw();
|
var result = Draw();
|
||||||
|
|
|
@ -6,16 +6,15 @@ namespace Bit.App.Controls
|
||||||
{
|
{
|
||||||
public ExtendedGrid()
|
public ExtendedGrid()
|
||||||
{
|
{
|
||||||
|
#if ANDROID
|
||||||
// Add Android Ripple effect. Eventually we should be able to replace this with the Maui Community Toolkit implementation. (https://github.com/CommunityToolkit/Maui/issues/86)
|
// Add Android Ripple effect. Eventually we should be able to replace this with the Maui Community Toolkit implementation. (https://github.com/CommunityToolkit/Maui/issues/86)
|
||||||
// [MAUI-Migration] When this TouchBehavior is replaced we can delete the existing TouchBehavior support files (which is all the files and folders inside "Core.Behaviors.PlatformBehaviors.MCTTouch.*")
|
// TODO: [TouchEffect] When this TouchBehavior is replaced we can delete the existing TouchBehavior support files (which is all the files and folders inside "Core.Behaviors.PlatformBehaviors.MCTTouch.*")
|
||||||
if (DeviceInfo.Platform == DevicePlatform.Android)
|
|
||||||
{
|
|
||||||
var touchBehavior = new TouchBehavior()
|
var touchBehavior = new TouchBehavior()
|
||||||
{
|
{
|
||||||
NativeAnimation = true
|
NativeAnimation = true
|
||||||
};
|
};
|
||||||
Behaviors.Add(touchBehavior);
|
Behaviors.Add(touchBehavior);
|
||||||
}
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,16 +6,15 @@ namespace Bit.App.Controls
|
||||||
{
|
{
|
||||||
public ExtendedStackLayout()
|
public ExtendedStackLayout()
|
||||||
{
|
{
|
||||||
|
#if ANDROID
|
||||||
// Add Android Ripple effect. Eventually we should be able to replace this with the Maui Community Toolkit implementation. (https://github.com/CommunityToolkit/Maui/issues/86)
|
// Add Android Ripple effect. Eventually we should be able to replace this with the Maui Community Toolkit implementation. (https://github.com/CommunityToolkit/Maui/issues/86)
|
||||||
// [MAUI-Migration] When this TouchBehavior is replaced we can delete the existing TouchBehavior support files (which is all the files and folders inside "Core.Behaviors.PlatformBehaviors.MCTTouch.*")
|
// TODO: [TouchEffect] When this TouchBehavior is replaced we can delete the existing TouchBehavior support files (which is all the files and folders inside "Core.Behaviors.PlatformBehaviors.MCTTouch.*")
|
||||||
if (DeviceInfo.Platform == DevicePlatform.Android)
|
|
||||||
{
|
|
||||||
var touchBehavior = new TouchBehavior()
|
var touchBehavior = new TouchBehavior()
|
||||||
{
|
{
|
||||||
NativeAnimation = true
|
NativeAnimation = true
|
||||||
};
|
};
|
||||||
Behaviors.Add(touchBehavior);
|
Behaviors.Add(touchBehavior);
|
||||||
}
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -248,7 +248,6 @@
|
||||||
AutomationId="SendHideTextByDefaultToggle" />
|
AutomationId="SendHideTextByDefaultToggle" />
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
</StackLayout>
|
</StackLayout>
|
||||||
<!--TODO: [MAUI-Migration] xct:TouchEffect.Command="{Binding ToggleOptionsCommand}" for below ( https://github.com/CommunityToolkit/Maui/issues/86 ) -->
|
|
||||||
<StackLayout
|
<StackLayout
|
||||||
Orientation="Horizontal"
|
Orientation="Horizontal"
|
||||||
Spacing="0"
|
Spacing="0"
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<?xml version="1.0" encoding="utf-8" ?>
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
|
<ResourceDictionary xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||||
x:Class="Bit.App.Styles.Light">
|
x:Class="Bit.App.Styles.Light">
|
||||||
|
@ -35,7 +35,6 @@
|
||||||
<Color x:Key="ListHeaderTextColor">#175DDC</Color>
|
<Color x:Key="ListHeaderTextColor">#175DDC</Color>
|
||||||
<Color x:Key="ListHeaderBackgroundColor">#efeff4</Color>
|
<Color x:Key="ListHeaderBackgroundColor">#efeff4</Color>
|
||||||
|
|
||||||
<!--[MAUI-Migration][Color-default]-->
|
|
||||||
<Color x:Key="SliderThumbColor">#ffffff</Color>
|
<Color x:Key="SliderThumbColor">#ffffff</Color>
|
||||||
<Color x:Key="SliderThumbBorderColor">#b5b5b5</Color>
|
<Color x:Key="SliderThumbBorderColor">#b5b5b5</Color>
|
||||||
<Color x:Key="SliderTrackMinColor">#175DDC</Color>
|
<Color x:Key="SliderTrackMinColor">#175DDC</Color>
|
||||||
|
|
|
@ -64,7 +64,7 @@ namespace Bit.Core.Services
|
||||||
_userId = await ServiceContainer.Resolve<IStateService>("stateService").GetActiveUserIdAsync();
|
_userId = await ServiceContainer.Resolve<IStateService>("stateService").GetActiveUserIdAsync();
|
||||||
_appId = await ServiceContainer.Resolve<IAppIdService>("appIdService").GetAppIdAsync();
|
_appId = await ServiceContainer.Resolve<IAppIdService>("appIdService").GetAppIdAsync();
|
||||||
|
|
||||||
// TODO: [MAUI-Migration] [Critical]
|
// TODO: [Error-Reporting]
|
||||||
//switch (device)
|
//switch (device)
|
||||||
//{
|
//{
|
||||||
// case Enums.DeviceType.Android:
|
// case Enums.DeviceType.Android:
|
||||||
|
|
|
@ -22,7 +22,7 @@ namespace Bit.Core.Services
|
||||||
#if !FDROID
|
#if !FDROID
|
||||||
// just in case the caller throws the exception in a moment where the logger can't be resolved
|
// just in case the caller throws the exception in a moment where the logger can't be resolved
|
||||||
// we need to track the error as well
|
// we need to track the error as well
|
||||||
// [MAUI-Migration] [Critical]
|
// TODO: [Error-Reporting]
|
||||||
//Microsoft.AppCenter.Crashes.Crashes.TrackError(ex);
|
//Microsoft.AppCenter.Crashes.Crashes.TrackError(ex);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -1,14 +1,10 @@
|
||||||
using System;
|
using Bit.App.Abstractions;
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Bit.App.Abstractions;
|
|
||||||
using Bit.App.Models;
|
using Bit.App.Models;
|
||||||
using Bit.Core.Resources.Localization;
|
|
||||||
using Bit.Core.Abstractions;
|
using Bit.Core.Abstractions;
|
||||||
using Bit.Core.Enums;
|
using Bit.Core.Enums;
|
||||||
using Bit.Core.Models.Domain;
|
using Bit.Core.Models.Domain;
|
||||||
|
using Bit.Core.Resources.Localization;
|
||||||
using Bit.Core.Utilities;
|
using Bit.Core.Utilities;
|
||||||
using Microsoft.Maui.Controls;
|
|
||||||
using Microsoft.Maui;
|
|
||||||
|
|
||||||
namespace Bit.App.Utilities.AccountManagement
|
namespace Bit.App.Utilities.AccountManagement
|
||||||
{
|
{
|
||||||
|
@ -145,7 +141,7 @@ namespace Bit.App.Utilities.AccountManagement
|
||||||
switch (message.Command)
|
switch (message.Command)
|
||||||
{
|
{
|
||||||
case AccountsManagerMessageCommands.LOCKED:
|
case AccountsManagerMessageCommands.LOCKED:
|
||||||
await Device.InvokeOnMainThreadAsync(() => LockedAsync(message.Data as Tuple<string, bool>));
|
await MainThread.InvokeOnMainThreadAsync(() => LockedAsync(message.Data as Tuple<string, bool>));
|
||||||
break;
|
break;
|
||||||
case AccountsManagerMessageCommands.LOCK_VAULT:
|
case AccountsManagerMessageCommands.LOCK_VAULT:
|
||||||
await _vaultTimeoutService.LockAsync(true);
|
await _vaultTimeoutService.LockAsync(true);
|
||||||
|
@ -155,7 +151,7 @@ namespace Bit.App.Utilities.AccountManagement
|
||||||
var userId = extras?.Item1;
|
var userId = extras?.Item1;
|
||||||
var userInitiated = extras?.Item2 ?? true;
|
var userInitiated = extras?.Item2 ?? true;
|
||||||
var expired = extras?.Item3 ?? false;
|
var expired = extras?.Item3 ?? false;
|
||||||
await Device.InvokeOnMainThreadAsync(() => LogOutAsync(userId, userInitiated, expired));
|
await MainThread.InvokeOnMainThreadAsync(() => LogOutAsync(userId, userInitiated, expired));
|
||||||
break;
|
break;
|
||||||
case AccountsManagerMessageCommands.LOGGED_OUT:
|
case AccountsManagerMessageCommands.LOGGED_OUT:
|
||||||
// Clean up old migrated key if they ever log out.
|
// Clean up old migrated key if they ever log out.
|
||||||
|
@ -192,7 +188,7 @@ namespace Bit.App.Utilities.AccountManagement
|
||||||
|
|
||||||
var autoPromptBiometric = !userInitiated;
|
var autoPromptBiometric = !userInitiated;
|
||||||
// TODO Xamarin.Forms.Device.RuntimePlatform is no longer supported. Use Microsoft.Maui.Devices.DeviceInfo.Platform instead. For more details see https://learn.microsoft.com/en-us/dotnet/maui/migration/forms-projects#device-changes
|
// TODO Xamarin.Forms.Device.RuntimePlatform is no longer supported. Use Microsoft.Maui.Devices.DeviceInfo.Platform instead. For more details see https://learn.microsoft.com/en-us/dotnet/maui/migration/forms-projects#device-changes
|
||||||
if (autoPromptBiometric && Device.RuntimePlatform == Device.iOS)
|
if (autoPromptBiometric && DeviceInfo.Platform == DevicePlatform.iOS)
|
||||||
{
|
{
|
||||||
var vaultTimeout = await _stateService.GetVaultTimeoutAsync();
|
var vaultTimeout = await _stateService.GetVaultTimeoutAsync();
|
||||||
if (vaultTimeout == 0)
|
if (vaultTimeout == 0)
|
||||||
|
@ -203,13 +199,13 @@ namespace Bit.App.Utilities.AccountManagement
|
||||||
|
|
||||||
await _accountsManagerHost.SetPreviousPageInfoAsync();
|
await _accountsManagerHost.SetPreviousPageInfoAsync();
|
||||||
|
|
||||||
await Device.InvokeOnMainThreadAsync(() => _accountsManagerHost.Navigate(NavigationTarget.Lock, new LockNavigationParams(autoPromptBiometric)));
|
await MainThread.InvokeOnMainThreadAsync(() => _accountsManagerHost.Navigate(NavigationTarget.Lock, new LockNavigationParams(autoPromptBiometric)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task AddAccountAsync()
|
private async Task AddAccountAsync()
|
||||||
{
|
{
|
||||||
await AppHelpers.ClearServiceCacheAsync();
|
await AppHelpers.ClearServiceCacheAsync();
|
||||||
await Device.InvokeOnMainThreadAsync(() =>
|
await MainThread.InvokeOnMainThreadAsync(() =>
|
||||||
{
|
{
|
||||||
Options.HideAccountSwitcher = false;
|
Options.HideAccountSwitcher = false;
|
||||||
_accountsManagerHost.Navigate(NavigationTarget.HomeLogin);
|
_accountsManagerHost.Navigate(NavigationTarget.HomeLogin);
|
||||||
|
@ -234,7 +230,7 @@ namespace Bit.App.Utilities.AccountManagement
|
||||||
private async Task SwitchedAccountAsync()
|
private async Task SwitchedAccountAsync()
|
||||||
{
|
{
|
||||||
await AppHelpers.OnAccountSwitchAsync();
|
await AppHelpers.OnAccountSwitchAsync();
|
||||||
await Device.InvokeOnMainThreadAsync(async () =>
|
await MainThread.InvokeOnMainThreadAsync(async () =>
|
||||||
{
|
{
|
||||||
if (await _vaultTimeoutService.ShouldTimeoutAsync())
|
if (await _vaultTimeoutService.ShouldTimeoutAsync())
|
||||||
{
|
{
|
||||||
|
|
|
@ -8,7 +8,8 @@ using System.ComponentModel;
|
||||||
|
|
||||||
namespace Bit.Core.Utilities
|
namespace Bit.Core.Utilities
|
||||||
{
|
{
|
||||||
// TODO: [MAUI-Migration] CHECK WHEN MIGRATION IS DONE
|
// TODO: Review this from time to time in case this gets added to MAUI or some toolkit, for now the api/feature
|
||||||
|
// has been rejected: https://github.com/CommunityToolkit/dotnet/issues/256
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Represents a dynamic data collection that provides notifications when items get added, removed, or when the whole list is refreshed.
|
/// Represents a dynamic data collection that provides notifications when items get added, removed, or when the whole list is refreshed.
|
||||||
|
|
|
@ -1,27 +0,0 @@
|
||||||
// TODO: [MAUI-Migration] Check if moving this to the main project works for extensions.
|
|
||||||
|
|
||||||
//using Bit.iOS.Core.Effects;
|
|
||||||
//using UIKit;
|
|
||||||
//using Xamarin.Forms;
|
|
||||||
//using Xamarin.Forms.Platform.iOS;
|
|
||||||
|
|
||||||
//[assembly: ResolutionGroupName("Bitwarden")]
|
|
||||||
//[assembly: ExportEffect(typeof(ScrollEnabledEffect), "ScrollEnabledEffect")]
|
|
||||||
//namespace Bit.iOS.Core.Effects
|
|
||||||
//{
|
|
||||||
// public class ScrollEnabledEffect : PlatformEffect
|
|
||||||
// {
|
|
||||||
// protected override void OnAttached()
|
|
||||||
// {
|
|
||||||
// // this can be for any view that inherits from UIScrollView like UITextView.
|
|
||||||
// if (Element != null && Control is UIScrollView scrollView)
|
|
||||||
// {
|
|
||||||
// scrollView.ScrollEnabled = App.Effects.ScrollEnabledEffect.GetIsScrollEnabled(Element);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// protected override void OnDetached()
|
|
||||||
// {
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//}
|
|
|
@ -1,39 +0,0 @@
|
||||||
// TODO: [MAUI-Migration] Check if moving this to the main project works for extensions.
|
|
||||||
|
|
||||||
//using Bit.iOS.Core.Effects;
|
|
||||||
//using UIKit;
|
|
||||||
//using Xamarin.Forms;
|
|
||||||
//using Xamarin.Forms.Platform.iOS;
|
|
||||||
|
|
||||||
//[assembly: ExportEffect(typeof(ScrollViewContentInsetAdjustmentBehaviorEffect), nameof(ScrollViewContentInsetAdjustmentBehaviorEffect))]
|
|
||||||
//namespace Bit.iOS.Core.Effects
|
|
||||||
//{
|
|
||||||
// public class ScrollViewContentInsetAdjustmentBehaviorEffect : PlatformEffect
|
|
||||||
// {
|
|
||||||
// protected override void OnAttached()
|
|
||||||
// {
|
|
||||||
// if (Element != null && Control is UIScrollView scrollView)
|
|
||||||
// {
|
|
||||||
// switch (App.Effects.ScrollViewContentInsetAdjustmentBehaviorEffect.GetContentInsetAdjustmentBehavior(Element))
|
|
||||||
// {
|
|
||||||
// case App.Effects.ScrollContentInsetAdjustmentBehavior.Automatic:
|
|
||||||
// scrollView.ContentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentBehavior.Automatic;
|
|
||||||
// break;
|
|
||||||
// case App.Effects.ScrollContentInsetAdjustmentBehavior.ScrollableAxes:
|
|
||||||
// scrollView.ContentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentBehavior.ScrollableAxes;
|
|
||||||
// break;
|
|
||||||
// case App.Effects.ScrollContentInsetAdjustmentBehavior.Never:
|
|
||||||
// scrollView.ContentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentBehavior.Never;
|
|
||||||
// break;
|
|
||||||
// case App.Effects.ScrollContentInsetAdjustmentBehavior.Always:
|
|
||||||
// scrollView.ContentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentBehavior.Always;
|
|
||||||
// break;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
|
|
||||||
// protected override void OnDetached()
|
|
||||||
// {
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//}
|
|
|
@ -21,7 +21,7 @@ namespace Bit.iOS.Core.Utilities
|
||||||
_logger = ServiceContainer.Resolve<ILogger>("logger");
|
_logger = ServiceContainer.Resolve<ILogger>("logger");
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<UIImage> CreateAvatarImageAsync()
|
public async Task<UIImage?> CreateAvatarImageAsync()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -66,11 +66,11 @@ namespace Bit.iOS.Core.Utilities
|
||||||
overlay.BindingContext = vm;
|
overlay.BindingContext = vm;
|
||||||
overlay.IsVisible = false;
|
overlay.IsVisible = false;
|
||||||
|
|
||||||
// TODO: [MAUI-Migration] [Critical] check how to create a native view here.
|
if (MauiContextSingleton.Instance.MauiContext is null)
|
||||||
//var renderer = Platform.CreateRenderer(overlay.Content);
|
{
|
||||||
//renderer.SetElementSize(new Size(containerView.Frame.Size.Width, containerView.Frame.Size.Height));
|
throw new ArgumentNullException("Maui context should be set to create the account switching overlay view");
|
||||||
|
}
|
||||||
|
|
||||||
//var view = renderer.NativeView;
|
|
||||||
var view = overlay.ToPlatform(MauiContextSingleton.Instance.MauiContext);
|
var view = overlay.ToPlatform(MauiContextSingleton.Instance.MauiContext);
|
||||||
view.TranslatesAutoresizingMaskIntoConstraints = false;
|
view.TranslatesAutoresizingMaskIntoConstraints = false;
|
||||||
|
|
||||||
|
|
|
@ -4,8 +4,6 @@ namespace Bit.iOS.Core.Utilities
|
||||||
{
|
{
|
||||||
public static class FontElementExtensions
|
public static class FontElementExtensions
|
||||||
{
|
{
|
||||||
// TODO: [MAUI-Migration] [Critical] Compiling but big untested change
|
|
||||||
|
|
||||||
public static UIFont ToUIFont(this Microsoft.Maui.Font font)
|
public static UIFont ToUIFont(this Microsoft.Maui.Font font)
|
||||||
{
|
{
|
||||||
var fontSize = font.Size;
|
var fontSize = font.Size;
|
||||||
|
|
|
@ -1,64 +1,64 @@
|
||||||
using Bit.App.Utilities;
|
using Bit.App.Utilities;
|
||||||
using Microsoft.Maui.Controls.Compatibility.Platform.iOS;
|
using Microsoft.Maui.Platform;
|
||||||
using UIKit;
|
using UIKit;
|
||||||
|
|
||||||
namespace Bit.iOS.Core.Utilities
|
namespace Bit.iOS.Core.Utilities
|
||||||
{
|
{
|
||||||
public static class ThemeHelpers
|
public static class ThemeHelpers
|
||||||
{
|
{
|
||||||
public static bool LightTheme = true;
|
public static bool LightTheme { get; private set; } = true;
|
||||||
|
|
||||||
public static UIColor SplashBackgroundColor
|
public static UIColor SplashBackgroundColor
|
||||||
{
|
{
|
||||||
get => ThemeManager.GetResourceColor("SplashBackgroundColor").ToUIColor();
|
get => ThemeManager.GetResourceColor("SplashBackgroundColor").ToPlatform();
|
||||||
}
|
}
|
||||||
public static UIColor BackgroundColor
|
public static UIColor BackgroundColor
|
||||||
{
|
{
|
||||||
get => ThemeManager.GetResourceColor("BackgroundColor").ToUIColor();
|
get => ThemeManager.GetResourceColor("BackgroundColor").ToPlatform();
|
||||||
}
|
}
|
||||||
public static UIColor MutedColor
|
public static UIColor MutedColor
|
||||||
{
|
{
|
||||||
get => ThemeManager.GetResourceColor("MutedColor").ToUIColor();
|
get => ThemeManager.GetResourceColor("MutedColor").ToPlatform();
|
||||||
}
|
}
|
||||||
public static UIColor SuccessColor
|
public static UIColor SuccessColor
|
||||||
{
|
{
|
||||||
get => ThemeManager.GetResourceColor("SuccessColor").ToUIColor();
|
get => ThemeManager.GetResourceColor("SuccessColor").ToPlatform();
|
||||||
}
|
}
|
||||||
public static UIColor DangerColor
|
public static UIColor DangerColor
|
||||||
{
|
{
|
||||||
get => ThemeManager.GetResourceColor("DangerColor").ToUIColor();
|
get => ThemeManager.GetResourceColor("DangerColor").ToPlatform();
|
||||||
}
|
}
|
||||||
public static UIColor PrimaryColor
|
public static UIColor PrimaryColor
|
||||||
{
|
{
|
||||||
get => ThemeManager.GetResourceColor("PrimaryColor").ToUIColor();
|
get => ThemeManager.GetResourceColor("PrimaryColor").ToPlatform();
|
||||||
}
|
}
|
||||||
public static UIColor TextColor
|
public static UIColor TextColor
|
||||||
{
|
{
|
||||||
get => ThemeManager.GetResourceColor("TextColor").ToUIColor();
|
get => ThemeManager.GetResourceColor("TextColor").ToPlatform();
|
||||||
}
|
}
|
||||||
public static UIColor SeparatorColor
|
public static UIColor SeparatorColor
|
||||||
{
|
{
|
||||||
get => ThemeManager.GetResourceColor("SeparatorColor").ToUIColor();
|
get => ThemeManager.GetResourceColor("SeparatorColor").ToPlatform();
|
||||||
}
|
}
|
||||||
public static UIColor ListHeaderBackgroundColor
|
public static UIColor ListHeaderBackgroundColor
|
||||||
{
|
{
|
||||||
get => ThemeManager.GetResourceColor("ListHeaderBackgroundColor").ToUIColor();
|
get => ThemeManager.GetResourceColor("ListHeaderBackgroundColor").ToPlatform();
|
||||||
}
|
}
|
||||||
public static UIColor NavBarBackgroundColor
|
public static UIColor NavBarBackgroundColor
|
||||||
{
|
{
|
||||||
get => ThemeManager.GetResourceColor("NavigationBarBackgroundColor").ToUIColor();
|
get => ThemeManager.GetResourceColor("NavigationBarBackgroundColor").ToPlatform();
|
||||||
}
|
}
|
||||||
public static UIColor NavBarTextColor
|
public static UIColor NavBarTextColor
|
||||||
{
|
{
|
||||||
get => ThemeManager.GetResourceColor("NavigationBarTextColor").ToUIColor();
|
get => ThemeManager.GetResourceColor("NavigationBarTextColor").ToPlatform();
|
||||||
}
|
}
|
||||||
public static UIColor TabBarBackgroundColor
|
public static UIColor TabBarBackgroundColor
|
||||||
{
|
{
|
||||||
get => ThemeManager.GetResourceColor("TabBarBackgroundColor").ToUIColor();
|
get => ThemeManager.GetResourceColor("TabBarBackgroundColor").ToPlatform();
|
||||||
}
|
}
|
||||||
public static UIColor TabBarItemColor
|
public static UIColor TabBarItemColor
|
||||||
{
|
{
|
||||||
get => ThemeManager.GetResourceColor("TabBarItemColor").ToUIColor();
|
get => ThemeManager.GetResourceColor("TabBarItemColor").ToPlatform();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SetAppearance(string theme, bool osDarkModeEnabled)
|
public static void SetAppearance(string theme, bool osDarkModeEnabled)
|
||||||
|
@ -75,8 +75,7 @@ namespace Bit.iOS.Core.Utilities
|
||||||
|
|
||||||
public static UIFont GetDangerFont()
|
public static UIFont GetDangerFont()
|
||||||
{
|
{
|
||||||
// TODO: [MAUI-Migration] [Deprecated] NamedSizes are deprecated on MAUI
|
return Microsoft.Maui.Font.SystemFontOfSize(14, FontWeight.Bold).ToUIFont();
|
||||||
return Microsoft.Maui.Font.SystemFontOfSize(Device.GetNamedSize(NamedSize.Small, typeof(UILabel)), FontWeight.Bold).ToUIFont();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SetThemeVariables(string theme, bool osDarkModeEnabled)
|
private static void SetThemeVariables(string theme, bool osDarkModeEnabled)
|
||||||
|
|
Loading…
Reference in a new issue