diff --git a/src/Android/MainActivity.cs b/src/Android/MainActivity.cs
index 70f24bd67..bfb9282f3 100644
--- a/src/Android/MainActivity.cs
+++ b/src/Android/MainActivity.cs
@@ -15,6 +15,7 @@ using Bit.Droid.Receivers;
using Bit.App.Models;
using Bit.Core.Enums;
using Android.Nfc;
+using Bit.App.Utilities;
namespace Bit.Droid
{
@@ -56,6 +57,7 @@ namespace Bit.Droid
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
+ UpdateTheme(ThemeManager.GetTheme());
base.OnCreate(savedInstanceState);
if(!CoreHelpers.InDebugMode())
{
@@ -95,6 +97,10 @@ namespace Bit.Droid
{
ListenYubiKey((bool)message.Data);
}
+ else if(message.Command == "updatedTheme")
+ {
+ Recreate();
+ }
});
}
@@ -255,5 +261,17 @@ namespace Bit.Droid
_messagingService.Send("gotYubiKeyOTP", otp);
}
}
+
+ private void UpdateTheme(string theme)
+ {
+ if(theme == "dark")
+ {
+ SetTheme(Resource.Style.DarkTheme);
+ }
+ else
+ {
+ SetTheme(Resource.Style.MainTheme);
+ }
+ }
}
}
diff --git a/src/Android/Resources/Resource.designer.cs b/src/Android/Resources/Resource.designer.cs
index bfbcb96aa..d5178e478 100644
--- a/src/Android/Resources/Resource.designer.cs
+++ b/src/Android/Resources/Resource.designer.cs
@@ -6722,44 +6722,44 @@ namespace Bit.Droid
public partial class Color
{
- // aapt resource value: 0x7f0b007b
- public const int abc_background_cache_hint_selector_material_dark = 2131427451;
+ // aapt resource value: 0x7f0b0082
+ public const int abc_background_cache_hint_selector_material_dark = 2131427458;
- // aapt resource value: 0x7f0b007c
- public const int abc_background_cache_hint_selector_material_light = 2131427452;
+ // aapt resource value: 0x7f0b0083
+ public const int abc_background_cache_hint_selector_material_light = 2131427459;
- // aapt resource value: 0x7f0b007d
- public const int abc_btn_colored_borderless_text_material = 2131427453;
+ // aapt resource value: 0x7f0b0084
+ public const int abc_btn_colored_borderless_text_material = 2131427460;
- // aapt resource value: 0x7f0b007e
- public const int abc_btn_colored_text_material = 2131427454;
+ // aapt resource value: 0x7f0b0085
+ public const int abc_btn_colored_text_material = 2131427461;
- // aapt resource value: 0x7f0b007f
- public const int abc_color_highlight_material = 2131427455;
+ // aapt resource value: 0x7f0b0086
+ public const int abc_color_highlight_material = 2131427462;
- // aapt resource value: 0x7f0b0080
- public const int abc_hint_foreground_material_dark = 2131427456;
+ // aapt resource value: 0x7f0b0087
+ public const int abc_hint_foreground_material_dark = 2131427463;
- // aapt resource value: 0x7f0b0081
- public const int abc_hint_foreground_material_light = 2131427457;
+ // aapt resource value: 0x7f0b0088
+ public const int abc_hint_foreground_material_light = 2131427464;
// aapt resource value: 0x7f0b000c
public const int abc_input_method_navigation_guard = 2131427340;
- // aapt resource value: 0x7f0b0082
- public const int abc_primary_text_disable_only_material_dark = 2131427458;
+ // aapt resource value: 0x7f0b0089
+ public const int abc_primary_text_disable_only_material_dark = 2131427465;
- // aapt resource value: 0x7f0b0083
- public const int abc_primary_text_disable_only_material_light = 2131427459;
+ // aapt resource value: 0x7f0b008a
+ public const int abc_primary_text_disable_only_material_light = 2131427466;
- // aapt resource value: 0x7f0b0084
- public const int abc_primary_text_material_dark = 2131427460;
+ // aapt resource value: 0x7f0b008b
+ public const int abc_primary_text_material_dark = 2131427467;
- // aapt resource value: 0x7f0b0085
- public const int abc_primary_text_material_light = 2131427461;
+ // aapt resource value: 0x7f0b008c
+ public const int abc_primary_text_material_light = 2131427468;
- // aapt resource value: 0x7f0b0086
- public const int abc_search_url_text = 2131427462;
+ // aapt resource value: 0x7f0b008d
+ public const int abc_search_url_text = 2131427469;
// aapt resource value: 0x7f0b000d
public const int abc_search_url_text_normal = 2131427341;
@@ -6770,29 +6770,29 @@ namespace Bit.Droid
// aapt resource value: 0x7f0b000f
public const int abc_search_url_text_selected = 2131427343;
- // aapt resource value: 0x7f0b0087
- public const int abc_secondary_text_material_dark = 2131427463;
-
- // aapt resource value: 0x7f0b0088
- public const int abc_secondary_text_material_light = 2131427464;
-
- // aapt resource value: 0x7f0b0089
- public const int abc_tint_btn_checkable = 2131427465;
-
- // aapt resource value: 0x7f0b008a
- public const int abc_tint_default = 2131427466;
-
- // aapt resource value: 0x7f0b008b
- public const int abc_tint_edittext = 2131427467;
-
- // aapt resource value: 0x7f0b008c
- public const int abc_tint_seek_thumb = 2131427468;
-
- // aapt resource value: 0x7f0b008d
- public const int abc_tint_spinner = 2131427469;
-
// aapt resource value: 0x7f0b008e
- public const int abc_tint_switch_track = 2131427470;
+ public const int abc_secondary_text_material_dark = 2131427470;
+
+ // aapt resource value: 0x7f0b008f
+ public const int abc_secondary_text_material_light = 2131427471;
+
+ // aapt resource value: 0x7f0b0090
+ public const int abc_tint_btn_checkable = 2131427472;
+
+ // aapt resource value: 0x7f0b0091
+ public const int abc_tint_default = 2131427473;
+
+ // aapt resource value: 0x7f0b0092
+ public const int abc_tint_edittext = 2131427474;
+
+ // aapt resource value: 0x7f0b0093
+ public const int abc_tint_seek_thumb = 2131427475;
+
+ // aapt resource value: 0x7f0b0094
+ public const int abc_tint_spinner = 2131427476;
+
+ // aapt resource value: 0x7f0b0095
+ public const int abc_tint_switch_track = 2131427477;
// aapt resource value: 0x7f0b0078
public const int accent = 2131427448;
@@ -6815,8 +6815,8 @@ namespace Bit.Droid
// aapt resource value: 0x7f0b0015
public const int background_material_light = 2131427349;
- // aapt resource value: 0x7f0b0072
- public const int black = 2131427442;
+ // aapt resource value: 0x7f0b006f
+ public const int black = 2131427439;
// aapt resource value: 0x7f0b0079
public const int border = 2131427449;
@@ -6869,17 +6869,17 @@ namespace Bit.Droid
// aapt resource value: 0x7f0b000b
public const int cardview_shadow_start_color = 2131427339;
- // aapt resource value: 0x7f0b0070
- public const int colorAccent = 2131427440;
+ // aapt resource value: 0x7f0b0075
+ public const int colorAccent = 2131427445;
- // aapt resource value: 0x7f0b006e
- public const int colorPrimary = 2131427438;
+ // aapt resource value: 0x7f0b0073
+ public const int colorPrimary = 2131427443;
- // aapt resource value: 0x7f0b006f
- public const int colorPrimaryDark = 2131427439;
+ // aapt resource value: 0x7f0b0074
+ public const int colorPrimaryDark = 2131427444;
- // aapt resource value: 0x7f0b008f
- public const int common_google_signin_btn_text_dark = 2131427471;
+ // aapt resource value: 0x7f0b0096
+ public const int common_google_signin_btn_text_dark = 2131427478;
// aapt resource value: 0x7f0b0000
public const int common_google_signin_btn_text_dark_default = 2131427328;
@@ -6893,8 +6893,8 @@ namespace Bit.Droid
// aapt resource value: 0x7f0b0003
public const int common_google_signin_btn_text_dark_pressed = 2131427331;
- // aapt resource value: 0x7f0b0090
- public const int common_google_signin_btn_text_light = 2131427472;
+ // aapt resource value: 0x7f0b0097
+ public const int common_google_signin_btn_text_light = 2131427479;
// aapt resource value: 0x7f0b0004
public const int common_google_signin_btn_text_light_default = 2131427332;
@@ -6908,14 +6908,35 @@ namespace Bit.Droid
// aapt resource value: 0x7f0b0007
public const int common_google_signin_btn_text_light_pressed = 2131427335;
- // aapt resource value: 0x7f0b0091
- public const int common_google_signin_btn_tint = 2131427473;
+ // aapt resource value: 0x7f0b0098
+ public const int common_google_signin_btn_tint = 2131427480;
+
+ // aapt resource value: 0x7f0b007f
+ public const int dark_accent = 2131427455;
+
+ // aapt resource value: 0x7f0b0080
+ public const int dark_border = 2131427456;
+
+ // aapt resource value: 0x7f0b007c
+ public const int dark_colorAccent = 2131427452;
+
+ // aapt resource value: 0x7f0b007a
+ public const int dark_colorPrimary = 2131427450;
+
+ // aapt resource value: 0x7f0b007b
+ public const int dark_colorPrimaryDark = 2131427451;
+
+ // aapt resource value: 0x7f0b007e
+ public const int dark_darkaccent = 2131427454;
+
+ // aapt resource value: 0x7f0b007d
+ public const int dark_primary = 2131427453;
// aapt resource value: 0x7f0b0077
public const int darkaccent = 2131427447;
- // aapt resource value: 0x7f0b0073
- public const int darkgray = 2131427443;
+ // aapt resource value: 0x7f0b0070
+ public const int darkgray = 2131427440;
// aapt resource value: 0x7f0b0049
public const int design_bottom_navigation_shadow_color = 2131427401;
@@ -6926,8 +6947,8 @@ namespace Bit.Droid
// aapt resource value: 0x7f0b004b
public const int design_default_color_primary_dark = 2131427403;
- // aapt resource value: 0x7f0b0092
- public const int design_error = 2131427474;
+ // aapt resource value: 0x7f0b0099
+ public const int design_error = 2131427481;
// aapt resource value: 0x7f0b004c
public const int design_fab_shadow_end_color = 2131427404;
@@ -6953,8 +6974,8 @@ namespace Bit.Droid
// aapt resource value: 0x7f0b0053
public const int design_snackbar_background_color = 2131427411;
- // aapt resource value: 0x7f0b0093
- public const int design_tint_password_toggle = 2131427475;
+ // aapt resource value: 0x7f0b009a
+ public const int design_tint_password_toggle = 2131427482;
// aapt resource value: 0x7f0b001e
public const int dim_foreground_disabled_material_dark = 2131427358;
@@ -6983,8 +7004,8 @@ namespace Bit.Droid
// aapt resource value: 0x7f0b0025
public const int foreground_material_light = 2131427365;
- // aapt resource value: 0x7f0b0074
- public const int gray = 2131427444;
+ // aapt resource value: 0x7f0b0071
+ public const int gray = 2131427441;
// aapt resource value: 0x7f0b0026
public const int highlighted_text_material_dark = 2131427366;
@@ -7022,14 +7043,14 @@ namespace Bit.Droid
// aapt resource value: 0x7f0b006c
public const int hockeyapp_text_white = 2131427436;
- // aapt resource value: 0x7f0b007a
- public const int ic_launcher_background = 2131427450;
+ // aapt resource value: 0x7f0b0081
+ public const int ic_launcher_background = 2131427457;
// aapt resource value: 0x7f0b006d
public const int launcher_background = 2131427437;
- // aapt resource value: 0x7f0b0075
- public const int lightgray = 2131427445;
+ // aapt resource value: 0x7f0b0072
+ public const int lightgray = 2131427442;
// aapt resource value: 0x7f0b0028
public const int material_blue_grey_800 = 2131427368;
@@ -7067,71 +7088,71 @@ namespace Bit.Droid
// aapt resource value: 0x7f0b0033
public const int material_grey_900 = 2131427379;
- // aapt resource value: 0x7f0b0094
- public const int mtrl_bottom_nav_colored_item_tint = 2131427476;
+ // aapt resource value: 0x7f0b009b
+ public const int mtrl_bottom_nav_colored_item_tint = 2131427483;
- // aapt resource value: 0x7f0b0095
- public const int mtrl_bottom_nav_item_tint = 2131427477;
+ // aapt resource value: 0x7f0b009c
+ public const int mtrl_bottom_nav_item_tint = 2131427484;
// aapt resource value: 0x7f0b0054
public const int mtrl_btn_bg_color_disabled = 2131427412;
- // aapt resource value: 0x7f0b0096
- public const int mtrl_btn_bg_color_selector = 2131427478;
+ // aapt resource value: 0x7f0b009d
+ public const int mtrl_btn_bg_color_selector = 2131427485;
- // aapt resource value: 0x7f0b0097
- public const int mtrl_btn_ripple_color = 2131427479;
+ // aapt resource value: 0x7f0b009e
+ public const int mtrl_btn_ripple_color = 2131427486;
- // aapt resource value: 0x7f0b0098
- public const int mtrl_btn_stroke_color_selector = 2131427480;
+ // aapt resource value: 0x7f0b009f
+ public const int mtrl_btn_stroke_color_selector = 2131427487;
- // aapt resource value: 0x7f0b0099
- public const int mtrl_btn_text_btn_ripple_color = 2131427481;
+ // aapt resource value: 0x7f0b00a0
+ public const int mtrl_btn_text_btn_ripple_color = 2131427488;
// aapt resource value: 0x7f0b0055
public const int mtrl_btn_text_color_disabled = 2131427413;
- // aapt resource value: 0x7f0b009a
- public const int mtrl_btn_text_color_selector = 2131427482;
+ // aapt resource value: 0x7f0b00a1
+ public const int mtrl_btn_text_color_selector = 2131427489;
// aapt resource value: 0x7f0b0056
public const int mtrl_btn_transparent_bg_color = 2131427414;
- // aapt resource value: 0x7f0b009b
- public const int mtrl_chip_background_color = 2131427483;
+ // aapt resource value: 0x7f0b00a2
+ public const int mtrl_chip_background_color = 2131427490;
- // aapt resource value: 0x7f0b009c
- public const int mtrl_chip_close_icon_tint = 2131427484;
+ // aapt resource value: 0x7f0b00a3
+ public const int mtrl_chip_close_icon_tint = 2131427491;
- // aapt resource value: 0x7f0b009d
- public const int mtrl_chip_ripple_color = 2131427485;
+ // aapt resource value: 0x7f0b00a4
+ public const int mtrl_chip_ripple_color = 2131427492;
- // aapt resource value: 0x7f0b009e
- public const int mtrl_chip_text_color = 2131427486;
+ // aapt resource value: 0x7f0b00a5
+ public const int mtrl_chip_text_color = 2131427493;
- // aapt resource value: 0x7f0b009f
- public const int mtrl_fab_ripple_color = 2131427487;
+ // aapt resource value: 0x7f0b00a6
+ public const int mtrl_fab_ripple_color = 2131427494;
// aapt resource value: 0x7f0b0057
public const int mtrl_scrim_color = 2131427415;
- // aapt resource value: 0x7f0b00a0
- public const int mtrl_tabs_colored_ripple_color = 2131427488;
+ // aapt resource value: 0x7f0b00a7
+ public const int mtrl_tabs_colored_ripple_color = 2131427495;
- // aapt resource value: 0x7f0b00a1
- public const int mtrl_tabs_icon_color_selector = 2131427489;
+ // aapt resource value: 0x7f0b00a8
+ public const int mtrl_tabs_icon_color_selector = 2131427496;
- // aapt resource value: 0x7f0b00a2
- public const int mtrl_tabs_icon_color_selector_colored = 2131427490;
+ // aapt resource value: 0x7f0b00a9
+ public const int mtrl_tabs_icon_color_selector_colored = 2131427497;
- // aapt resource value: 0x7f0b00a3
- public const int mtrl_tabs_legacy_text_color_selector = 2131427491;
+ // aapt resource value: 0x7f0b00aa
+ public const int mtrl_tabs_legacy_text_color_selector = 2131427498;
- // aapt resource value: 0x7f0b00a4
- public const int mtrl_tabs_ripple_color = 2131427492;
+ // aapt resource value: 0x7f0b00ab
+ public const int mtrl_tabs_ripple_color = 2131427499;
- // aapt resource value: 0x7f0b00a5
- public const int mtrl_text_btn_text_color_selector = 2131427493;
+ // aapt resource value: 0x7f0b00ac
+ public const int mtrl_text_btn_text_color_selector = 2131427500;
// aapt resource value: 0x7f0b0058
public const int mtrl_textinput_default_box_stroke_color = 2131427416;
@@ -7205,11 +7226,11 @@ namespace Bit.Droid
// aapt resource value: 0x7f0b0043
public const int switch_thumb_disabled_material_light = 2131427395;
- // aapt resource value: 0x7f0b00a6
- public const int switch_thumb_material_dark = 2131427494;
+ // aapt resource value: 0x7f0b00ad
+ public const int switch_thumb_material_dark = 2131427501;
- // aapt resource value: 0x7f0b00a7
- public const int switch_thumb_material_light = 2131427495;
+ // aapt resource value: 0x7f0b00ae
+ public const int switch_thumb_material_light = 2131427502;
// aapt resource value: 0x7f0b0044
public const int switch_thumb_normal_material_dark = 2131427396;
@@ -7223,8 +7244,8 @@ namespace Bit.Droid
// aapt resource value: 0x7f0b0047
public const int tooltip_background_light = 2131427399;
- // aapt resource value: 0x7f0b0071
- public const int white = 2131427441;
+ // aapt resource value: 0x7f0b006e
+ public const int white = 2131427438;
static Color()
{
@@ -11039,8 +11060,8 @@ namespace Bit.Droid
// aapt resource value: 0x7f0e016d
public const int Animation_Design_BottomSheetDialog = 2131624301;
- // aapt resource value: 0x7f0e0205
- public const int AppCompatDialogStyle = 2131624453;
+ // aapt resource value: 0x7f0e0207
+ public const int AppCompatDialogStyle = 2131624455;
// aapt resource value: 0x7f0e009d
public const int Base_AlertDialog_AppCompat = 2131624093;
@@ -11615,6 +11636,12 @@ namespace Bit.Droid
// aapt resource value: 0x7f0e000e
public const int CardView_Light = 2131623950;
+ // aapt resource value: 0x7f0e0205
+ public const int DarkTheme = 2131624453;
+
+ // aapt resource value: 0x7f0e0206
+ public const int DarkTheme_Base = 2131624454;
+
// aapt resource value: 0x7f0e01ff
public const int HockeyApp_ButtonStyle = 2131624447;
diff --git a/src/Android/Resources/values/colors.xml b/src/Android/Resources/values/colors.xml
index f3bb05bad..fa02a8c7a 100644
--- a/src/Android/Resources/values/colors.xml
+++ b/src/Android/Resources/values/colors.xml
@@ -1,16 +1,25 @@
#FFFFFF
- #3c8dbc
- #222d32
- #3883af
#FFFFFF
#000000
#333333
#738182
#efeff4
+
+ #3c8dbc
+ #222d32
+ #3883af
#3c8dbc
#222d32
#3883af
#dddddd
+
+ #52bdfb
+ #222d32
+ #449BCE
+ #52bdfb
+ #222d32
+ #449BCE
+ #545454
diff --git a/src/Android/Resources/values/styles.xml b/src/Android/Resources/values/styles.xml
index ee0e69426..4df4b819a 100644
--- a/src/Android/Resources/values/styles.xml
+++ b/src/Android/Resources/values/styles.xml
@@ -22,6 +22,23 @@
- @style/ThemeOverlay.AppCompat.Light
+
+
+
+
diff --git a/src/App/App.xaml.cs b/src/App/App.xaml.cs
index e029ced9c..18e01535c 100644
--- a/src/App/App.xaml.cs
+++ b/src/App/App.xaml.cs
@@ -62,13 +62,7 @@ namespace Bit.App
_i18nService = ServiceContainer.Resolve("i18nService") as MobileI18nService;
_deviceActionService = ServiceContainer.Resolve("deviceActionService");
- InitializeComponent();
- SetCulture();
- ThemeManager.SetThemeStyle("light");
- MainPage = new HomePage();
- var mainPageTask = SetMainPageAsync();
-
- ServiceContainer.Resolve("platformUtilsService").Init();
+ Bootstrap();
_broadcasterService.Subscribe(nameof(App), async (message) =>
{
if(message.Command == "showDialog")
@@ -257,5 +251,15 @@ namespace Bit.App
var parsedDomain = DomainName.TryParse("https://bitwarden.com", out var domainName);
});
}
+
+ private void Bootstrap()
+ {
+ InitializeComponent();
+ SetCulture();
+ ThemeManager.SetTheme();
+ MainPage = new HomePage();
+ var mainPageTask = SetMainPageAsync();
+ ServiceContainer.Resolve("platformUtilsService").Init();
+ }
}
}
diff --git a/src/App/Pages/Settings/OptionsPageViewModel.cs b/src/App/Pages/Settings/OptionsPageViewModel.cs
index 6a41366e8..e833a1f1d 100644
--- a/src/App/Pages/Settings/OptionsPageViewModel.cs
+++ b/src/App/Pages/Settings/OptionsPageViewModel.cs
@@ -7,6 +7,7 @@ using Bit.Core.Enums;
using Bit.Core.Utilities;
using System.Collections.Generic;
using System.Threading.Tasks;
+using Xamarin.Forms;
namespace Bit.App.Pages
{
@@ -17,6 +18,7 @@ namespace Bit.App.Pages
private readonly IStorageService _storageService;
private readonly ITotpService _totpService;
private readonly IStateService _stateService;
+ private readonly IMessagingService _messagingService;
private bool _disableFavicon;
private bool _disableAutoTotpCopy;
@@ -32,6 +34,7 @@ namespace Bit.App.Pages
_storageService = ServiceContainer.Resolve("storageService");
_totpService = ServiceContainer.Resolve("totpService");
_stateService = ServiceContainer.Resolve("stateService");
+ _messagingService = ServiceContainer.Resolve("messagingService");
PageTitle = AppResources.Options;
@@ -172,7 +175,11 @@ namespace Bit.App.Pages
{
var theme = ThemeOptions[ThemeSelectedIndex].Key;
await _storageService.SaveAsync(Constants.ThemeKey, theme);
- ThemeManager.SetThemeStyle(theme);
+ if(Device.RuntimePlatform == Device.Android)
+ {
+ await _deviceActionService.ShowLoadingAsync(AppResources.Saving);
+ }
+ _messagingService.Send("updatedTheme", theme);
}
}
diff --git a/src/App/Pages/TabsPage.cs b/src/App/Pages/TabsPage.cs
index 781fea707..e1bf67822 100644
--- a/src/App/Pages/TabsPage.cs
+++ b/src/App/Pages/TabsPage.cs
@@ -32,6 +32,10 @@ namespace Bit.App.Pages
Xamarin.Forms.PlatformConfiguration.AndroidSpecific.ToolbarPlacement.Bottom);
Xamarin.Forms.PlatformConfiguration.AndroidSpecific.TabbedPage.SetIsSwipePagingEnabled(this, false);
Xamarin.Forms.PlatformConfiguration.AndroidSpecific.TabbedPage.SetIsSmoothScrollEnabled(this, false);
+ Xamarin.Forms.PlatformConfiguration.AndroidSpecific.TabbedPage.SetBarSelectedItemColor(this,
+ (Color)Application.Current.Resources["TabBarSelectedItemColor"]);
+ Xamarin.Forms.PlatformConfiguration.AndroidSpecific.TabbedPage.SetBarItemColor(this,
+ (Color)Application.Current.Resources["TabBarItemColor"]);
}
protected async override void OnCurrentPageChanged()
diff --git a/src/App/Pages/Vault/AddEditPageViewModel.cs b/src/App/Pages/Vault/AddEditPageViewModel.cs
index c4644f11e..c7646bcba 100644
--- a/src/App/Pages/Vault/AddEditPageViewModel.cs
+++ b/src/App/Pages/Vault/AddEditPageViewModel.cs
@@ -349,7 +349,7 @@ namespace Bit.App.Pages
col.Checked = CollectionIds.Contains(col.Collection.Id);
}
}
- if(Cipher.Login.Uris != null)
+ if(Cipher.Login?.Uris != null)
{
Uris.ResetWithRange(Cipher.Login.Uris);
}
diff --git a/src/App/Services/MobileStorageService.cs b/src/App/Services/MobileStorageService.cs
index c74eb52c4..ce36ecf9d 100644
--- a/src/App/Services/MobileStorageService.cs
+++ b/src/App/Services/MobileStorageService.cs
@@ -12,7 +12,17 @@ namespace Bit.App.Services
private readonly HashSet _preferenceStorageKeys = new HashSet
{
- Constants.LockOptionKey
+ Constants.LockOptionKey,
+ Constants.ThemeKey,
+ Constants.DefaultUriMatch,
+ Constants.DisableAutoTotpCopyKey,
+ Constants.DisableFaviconKey,
+ Constants.ClearClipboardKey,
+ Constants.AccessibilityAutofillPasswordFieldKey,
+ Constants.AccessibilityAutofillPersistNotificationKey,
+ Constants.LastActiveKey,
+ Constants.PushInitialPromptShownKey,
+ Constants.LastFileCacheClearKey
};
public MobileStorageService(
diff --git a/src/App/Services/PreferencesStorageService.cs b/src/App/Services/PreferencesStorageService.cs
index f7a54c3a3..f67b9c621 100644
--- a/src/App/Services/PreferencesStorageService.cs
+++ b/src/App/Services/PreferencesStorageService.cs
@@ -8,7 +8,8 @@ namespace Bit.App.Services
{
public class PreferencesStorageService : IStorageService
{
- private readonly string _keyFormat = "bwPreferencesStorage:{0}";
+ public static string KeyFormat = "bwPreferencesStorage:{0}";
+
private readonly string _sharedName;
private readonly JsonSerializerSettings _jsonSettings = new JsonSerializerSettings
{
@@ -22,7 +23,7 @@ namespace Bit.App.Services
public Task GetAsync(string key)
{
- var formattedKey = string.Format(_keyFormat, key);
+ var formattedKey = string.Format(KeyFormat, key);
if(!Xamarin.Essentials.Preferences.ContainsKey(formattedKey, _sharedName))
{
return Task.FromResult(default(T));
@@ -73,7 +74,7 @@ namespace Bit.App.Services
return RemoveAsync(key);
}
- var formattedKey = string.Format(_keyFormat, key);
+ var formattedKey = string.Format(KeyFormat, key);
var objType = typeof(T);
if(objType == typeof(string))
{
@@ -109,7 +110,7 @@ namespace Bit.App.Services
public Task RemoveAsync(string key)
{
- var formattedKey = string.Format(_keyFormat, key);
+ var formattedKey = string.Format(KeyFormat, key);
if(Xamarin.Essentials.Preferences.ContainsKey(formattedKey, _sharedName))
{
Xamarin.Essentials.Preferences.Remove(formattedKey, _sharedName);
diff --git a/src/App/Styles/Base.xaml b/src/App/Styles/Base.xaml
index 93401d14b..bd17a9585 100644
--- a/src/App/Styles/Base.xaml
+++ b/src/App/Styles/Base.xaml
@@ -2,6 +2,7 @@
@@ -62,6 +63,13 @@
Value="{StaticResource SliderThumbBorderColor}" />
+
+
+
-
+
-
+