diff --git a/src/Android/Android.csproj b/src/Android/Android.csproj index bd083e23b..ce4601e20 100644 --- a/src/Android/Android.csproj +++ b/src/Android/Android.csproj @@ -106,10 +106,10 @@ ..\..\packages\Xamarin.Forms.2.3.4.231\lib\MonoAndroid10\FormsViewGroup.dll - ..\..\packages\HockeySDK.Xamarin.4.1.2\lib\MonoAndroid403\HockeySDK.dll + ..\..\packages\HockeySDK.Xamarin.4.1.5\lib\MonoAndroid403\HockeySDK.dll - ..\..\packages\HockeySDK.Xamarin.4.1.2\lib\MonoAndroid403\HockeySDK.AndroidBindings.dll + ..\..\packages\HockeySDK.Xamarin.4.1.5\lib\MonoAndroid403\HockeySDK.AndroidBindings.dll ..\..\packages\CommonServiceLocator.1.3\lib\portable-net4+sl5+netcore45+wpa81+wp8\Microsoft.Practices.ServiceLocation.dll @@ -161,11 +161,11 @@ ..\..\packages\Plugin.Fingerprint.1.4.4\lib\MonoAndroid\Plugin.Fingerprint.Android.Samsung.dll - - ..\..\packages\Xam.Plugins.Settings.2.5.4\lib\MonoAndroid10\Plugin.Settings.dll + + ..\..\packages\Xam.Plugins.Settings.3.0.1\lib\MonoAndroid10\Plugin.Settings.dll - - ..\..\packages\Xam.Plugins.Settings.2.5.4\lib\MonoAndroid10\Plugin.Settings.Abstractions.dll + + ..\..\packages\Xam.Plugins.Settings.3.0.1\lib\MonoAndroid10\Plugin.Settings.Abstractions.dll ..\..\packages\Xam.Plugin.PushNotification.1.2.4\lib\MonoAndroid10\PushNotification.Plugin.dll diff --git a/src/Android/Resources/Resource.Designer.cs b/src/Android/Resources/Resource.Designer.cs index 7b92dd8c3..f70ef35ee 100644 --- a/src/Android/Resources/Resource.Designer.cs +++ b/src/Android/Resources/Resource.Designer.cs @@ -127,10 +127,14 @@ namespace Bit.Android global::HockeyApp.Resource.String.hockeyapp_expiry_info_title = global::Bit.Android.Resource.String.hockeyapp_expiry_info_title; global::HockeyApp.Resource.String.hockeyapp_feedback_attach_file = global::Bit.Android.Resource.String.hockeyapp_feedback_attach_file; global::HockeyApp.Resource.String.hockeyapp_feedback_attach_picture = global::Bit.Android.Resource.String.hockeyapp_feedback_attach_picture; + global::HockeyApp.Resource.String.hockeyapp_feedback_attachment_added = global::Bit.Android.Resource.String.hockeyapp_feedback_attachment_added; global::HockeyApp.Resource.String.hockeyapp_feedback_attachment_button_text = global::Bit.Android.Resource.String.hockeyapp_feedback_attachment_button_text; global::HockeyApp.Resource.String.hockeyapp_feedback_attachment_error = global::Bit.Android.Resource.String.hockeyapp_feedback_attachment_error; global::HockeyApp.Resource.String.hockeyapp_feedback_attachment_loading = global::Bit.Android.Resource.String.hockeyapp_feedback_attachment_loading; + global::HockeyApp.Resource.String.hockeyapp_feedback_attachment_remove_description = global::Bit.Android.Resource.String.hockeyapp_feedback_attachment_remove_description; + global::HockeyApp.Resource.String.hockeyapp_feedback_attachment_removed = global::Bit.Android.Resource.String.hockeyapp_feedback_attachment_removed; global::HockeyApp.Resource.String.hockeyapp_feedback_email_hint = global::Bit.Android.Resource.String.hockeyapp_feedback_email_hint; + global::HockeyApp.Resource.String.hockeyapp_feedback_email_hint_required = global::Bit.Android.Resource.String.hockeyapp_feedback_email_hint_required; global::HockeyApp.Resource.String.hockeyapp_feedback_failed_text = global::Bit.Android.Resource.String.hockeyapp_feedback_failed_text; global::HockeyApp.Resource.String.hockeyapp_feedback_failed_title = global::Bit.Android.Resource.String.hockeyapp_feedback_failed_title; global::HockeyApp.Resource.String.hockeyapp_feedback_fetching_feedback_text = global::Bit.Android.Resource.String.hockeyapp_feedback_fetching_feedback_text; @@ -138,7 +142,9 @@ namespace Bit.Android global::HockeyApp.Resource.String.hockeyapp_feedback_last_updated_text = global::Bit.Android.Resource.String.hockeyapp_feedback_last_updated_text; global::HockeyApp.Resource.String.hockeyapp_feedback_max_attachments_allowed = global::Bit.Android.Resource.String.hockeyapp_feedback_max_attachments_allowed; global::HockeyApp.Resource.String.hockeyapp_feedback_message_hint = global::Bit.Android.Resource.String.hockeyapp_feedback_message_hint; + global::HockeyApp.Resource.String.hockeyapp_feedback_message_hint_required = global::Bit.Android.Resource.String.hockeyapp_feedback_message_hint_required; global::HockeyApp.Resource.String.hockeyapp_feedback_name_hint = global::Bit.Android.Resource.String.hockeyapp_feedback_name_hint; + global::HockeyApp.Resource.String.hockeyapp_feedback_name_hint_required = global::Bit.Android.Resource.String.hockeyapp_feedback_name_hint_required; global::HockeyApp.Resource.String.hockeyapp_feedback_refresh_button_text = global::Bit.Android.Resource.String.hockeyapp_feedback_refresh_button_text; global::HockeyApp.Resource.String.hockeyapp_feedback_response_button_text = global::Bit.Android.Resource.String.hockeyapp_feedback_response_button_text; global::HockeyApp.Resource.String.hockeyapp_feedback_select_file = global::Bit.Android.Resource.String.hockeyapp_feedback_select_file; @@ -147,7 +153,9 @@ namespace Bit.Android global::HockeyApp.Resource.String.hockeyapp_feedback_send_generic_error = global::Bit.Android.Resource.String.hockeyapp_feedback_send_generic_error; global::HockeyApp.Resource.String.hockeyapp_feedback_send_network_error = global::Bit.Android.Resource.String.hockeyapp_feedback_send_network_error; global::HockeyApp.Resource.String.hockeyapp_feedback_sending_feedback_text = global::Bit.Android.Resource.String.hockeyapp_feedback_sending_feedback_text; + global::HockeyApp.Resource.String.hockeyapp_feedback_sent_toast = global::Bit.Android.Resource.String.hockeyapp_feedback_sent_toast; global::HockeyApp.Resource.String.hockeyapp_feedback_subject_hint = global::Bit.Android.Resource.String.hockeyapp_feedback_subject_hint; + global::HockeyApp.Resource.String.hockeyapp_feedback_subject_hint_required = global::Bit.Android.Resource.String.hockeyapp_feedback_subject_hint_required; global::HockeyApp.Resource.String.hockeyapp_feedback_title = global::Bit.Android.Resource.String.hockeyapp_feedback_title; global::HockeyApp.Resource.String.hockeyapp_feedback_validate_email_empty = global::Bit.Android.Resource.String.hockeyapp_feedback_validate_email_empty; global::HockeyApp.Resource.String.hockeyapp_feedback_validate_email_error = global::Bit.Android.Resource.String.hockeyapp_feedback_validate_email_error; @@ -155,11 +163,13 @@ namespace Bit.Android global::HockeyApp.Resource.String.hockeyapp_feedback_validate_subject_error = global::Bit.Android.Resource.String.hockeyapp_feedback_validate_subject_error; global::HockeyApp.Resource.String.hockeyapp_feedback_validate_text_error = global::Bit.Android.Resource.String.hockeyapp_feedback_validate_text_error; global::HockeyApp.Resource.String.hockeyapp_login_email_hint = global::Bit.Android.Resource.String.hockeyapp_login_email_hint; + global::HockeyApp.Resource.String.hockeyapp_login_email_hint_required = global::Bit.Android.Resource.String.hockeyapp_login_email_hint_required; global::HockeyApp.Resource.String.hockeyapp_login_headline_text = global::Bit.Android.Resource.String.hockeyapp_login_headline_text; global::HockeyApp.Resource.String.hockeyapp_login_headline_text_email_only = global::Bit.Android.Resource.String.hockeyapp_login_headline_text_email_only; global::HockeyApp.Resource.String.hockeyapp_login_login_button_text = global::Bit.Android.Resource.String.hockeyapp_login_login_button_text; global::HockeyApp.Resource.String.hockeyapp_login_missing_credentials_toast = global::Bit.Android.Resource.String.hockeyapp_login_missing_credentials_toast; global::HockeyApp.Resource.String.hockeyapp_login_password_hint = global::Bit.Android.Resource.String.hockeyapp_login_password_hint; + global::HockeyApp.Resource.String.hockeyapp_login_password_hint_required = global::Bit.Android.Resource.String.hockeyapp_login_password_hint_required; global::HockeyApp.Resource.String.hockeyapp_paint_dialog_message = global::Bit.Android.Resource.String.hockeyapp_paint_dialog_message; global::HockeyApp.Resource.String.hockeyapp_paint_dialog_negative_button = global::Bit.Android.Resource.String.hockeyapp_paint_dialog_negative_button; global::HockeyApp.Resource.String.hockeyapp_paint_dialog_neutral_button = global::Bit.Android.Resource.String.hockeyapp_paint_dialog_neutral_button; @@ -3740,8 +3750,8 @@ namespace Bit.Android // aapt resource value: 0x7f080047 public const int ApplicationName = 2131230791; - // aapt resource value: 0x7f08008f - public const int AutoFillServiceDescription = 2131230863; + // aapt resource value: 0x7f080099 + public const int AutoFillServiceDescription = 2131230873; // aapt resource value: 0x7f080046 public const int Hello = 2131230790; @@ -3963,160 +3973,190 @@ namespace Bit.Android public const int hockeyapp_feedback_attach_picture = 2131230810; // aapt resource value: 0x7f08005b - public const int hockeyapp_feedback_attachment_button_text = 2131230811; + public const int hockeyapp_feedback_attachment_added = 2131230811; // aapt resource value: 0x7f08005c - public const int hockeyapp_feedback_attachment_error = 2131230812; + public const int hockeyapp_feedback_attachment_button_text = 2131230812; // aapt resource value: 0x7f08005d - public const int hockeyapp_feedback_attachment_loading = 2131230813; + public const int hockeyapp_feedback_attachment_error = 2131230813; // aapt resource value: 0x7f08005e - public const int hockeyapp_feedback_email_hint = 2131230814; + public const int hockeyapp_feedback_attachment_loading = 2131230814; // aapt resource value: 0x7f08005f - public const int hockeyapp_feedback_failed_text = 2131230815; + public const int hockeyapp_feedback_attachment_remove_description = 2131230815; // aapt resource value: 0x7f080060 - public const int hockeyapp_feedback_failed_title = 2131230816; + public const int hockeyapp_feedback_attachment_removed = 2131230816; // aapt resource value: 0x7f080061 - public const int hockeyapp_feedback_fetching_feedback_text = 2131230817; + public const int hockeyapp_feedback_email_hint = 2131230817; // aapt resource value: 0x7f080062 - public const int hockeyapp_feedback_generic_error = 2131230818; + public const int hockeyapp_feedback_email_hint_required = 2131230818; // aapt resource value: 0x7f080063 - public const int hockeyapp_feedback_last_updated_text = 2131230819; + public const int hockeyapp_feedback_failed_text = 2131230819; // aapt resource value: 0x7f080064 - public const int hockeyapp_feedback_max_attachments_allowed = 2131230820; + public const int hockeyapp_feedback_failed_title = 2131230820; // aapt resource value: 0x7f080065 - public const int hockeyapp_feedback_message_hint = 2131230821; + public const int hockeyapp_feedback_fetching_feedback_text = 2131230821; // aapt resource value: 0x7f080066 - public const int hockeyapp_feedback_name_hint = 2131230822; + public const int hockeyapp_feedback_generic_error = 2131230822; // aapt resource value: 0x7f080067 - public const int hockeyapp_feedback_refresh_button_text = 2131230823; + public const int hockeyapp_feedback_last_updated_text = 2131230823; // aapt resource value: 0x7f080068 - public const int hockeyapp_feedback_response_button_text = 2131230824; + public const int hockeyapp_feedback_max_attachments_allowed = 2131230824; // aapt resource value: 0x7f080069 - public const int hockeyapp_feedback_select_file = 2131230825; + public const int hockeyapp_feedback_message_hint = 2131230825; // aapt resource value: 0x7f08006a - public const int hockeyapp_feedback_select_picture = 2131230826; + public const int hockeyapp_feedback_message_hint_required = 2131230826; // aapt resource value: 0x7f08006b - public const int hockeyapp_feedback_send_button_text = 2131230827; + public const int hockeyapp_feedback_name_hint = 2131230827; // aapt resource value: 0x7f08006c - public const int hockeyapp_feedback_send_generic_error = 2131230828; + public const int hockeyapp_feedback_name_hint_required = 2131230828; // aapt resource value: 0x7f08006d - public const int hockeyapp_feedback_send_network_error = 2131230829; + public const int hockeyapp_feedback_refresh_button_text = 2131230829; // aapt resource value: 0x7f08006e - public const int hockeyapp_feedback_sending_feedback_text = 2131230830; + public const int hockeyapp_feedback_response_button_text = 2131230830; // aapt resource value: 0x7f08006f - public const int hockeyapp_feedback_subject_hint = 2131230831; + public const int hockeyapp_feedback_select_file = 2131230831; // aapt resource value: 0x7f080070 - public const int hockeyapp_feedback_title = 2131230832; + public const int hockeyapp_feedback_select_picture = 2131230832; // aapt resource value: 0x7f080071 - public const int hockeyapp_feedback_validate_email_empty = 2131230833; + public const int hockeyapp_feedback_send_button_text = 2131230833; // aapt resource value: 0x7f080072 - public const int hockeyapp_feedback_validate_email_error = 2131230834; + public const int hockeyapp_feedback_send_generic_error = 2131230834; // aapt resource value: 0x7f080073 - public const int hockeyapp_feedback_validate_name_error = 2131230835; + public const int hockeyapp_feedback_send_network_error = 2131230835; // aapt resource value: 0x7f080074 - public const int hockeyapp_feedback_validate_subject_error = 2131230836; + public const int hockeyapp_feedback_sending_feedback_text = 2131230836; // aapt resource value: 0x7f080075 - public const int hockeyapp_feedback_validate_text_error = 2131230837; + public const int hockeyapp_feedback_sent_toast = 2131230837; // aapt resource value: 0x7f080076 - public const int hockeyapp_login_email_hint = 2131230838; + public const int hockeyapp_feedback_subject_hint = 2131230838; // aapt resource value: 0x7f080077 - public const int hockeyapp_login_headline_text = 2131230839; + public const int hockeyapp_feedback_subject_hint_required = 2131230839; // aapt resource value: 0x7f080078 - public const int hockeyapp_login_headline_text_email_only = 2131230840; + public const int hockeyapp_feedback_title = 2131230840; // aapt resource value: 0x7f080079 - public const int hockeyapp_login_login_button_text = 2131230841; + public const int hockeyapp_feedback_validate_email_empty = 2131230841; // aapt resource value: 0x7f08007a - public const int hockeyapp_login_missing_credentials_toast = 2131230842; + public const int hockeyapp_feedback_validate_email_error = 2131230842; // aapt resource value: 0x7f08007b - public const int hockeyapp_login_password_hint = 2131230843; + public const int hockeyapp_feedback_validate_name_error = 2131230843; // aapt resource value: 0x7f08007c - public const int hockeyapp_paint_dialog_message = 2131230844; + public const int hockeyapp_feedback_validate_subject_error = 2131230844; // aapt resource value: 0x7f08007d - public const int hockeyapp_paint_dialog_negative_button = 2131230845; + public const int hockeyapp_feedback_validate_text_error = 2131230845; // aapt resource value: 0x7f08007e - public const int hockeyapp_paint_dialog_neutral_button = 2131230846; + public const int hockeyapp_login_email_hint = 2131230846; // aapt resource value: 0x7f08007f - public const int hockeyapp_paint_dialog_positive_button = 2131230847; + public const int hockeyapp_login_email_hint_required = 2131230847; // aapt resource value: 0x7f080080 - public const int hockeyapp_paint_indicator_toast = 2131230848; + public const int hockeyapp_login_headline_text = 2131230848; // aapt resource value: 0x7f080081 - public const int hockeyapp_paint_menu_clear = 2131230849; + public const int hockeyapp_login_headline_text_email_only = 2131230849; // aapt resource value: 0x7f080082 - public const int hockeyapp_paint_menu_save = 2131230850; + public const int hockeyapp_login_login_button_text = 2131230850; // aapt resource value: 0x7f080083 - public const int hockeyapp_paint_menu_undo = 2131230851; + public const int hockeyapp_login_missing_credentials_toast = 2131230851; // aapt resource value: 0x7f080084 - public const int hockeyapp_permission_dialog_negative_button = 2131230852; + public const int hockeyapp_login_password_hint = 2131230852; // aapt resource value: 0x7f080085 - public const int hockeyapp_permission_dialog_positive_button = 2131230853; + public const int hockeyapp_login_password_hint_required = 2131230853; // aapt resource value: 0x7f080086 - public const int hockeyapp_permission_update_message = 2131230854; + public const int hockeyapp_paint_dialog_message = 2131230854; // aapt resource value: 0x7f080087 - public const int hockeyapp_permission_update_title = 2131230855; + public const int hockeyapp_paint_dialog_negative_button = 2131230855; // aapt resource value: 0x7f080088 - public const int hockeyapp_update_button = 2131230856; + public const int hockeyapp_paint_dialog_neutral_button = 2131230856; // aapt resource value: 0x7f080089 - public const int hockeyapp_update_dialog_message = 2131230857; + public const int hockeyapp_paint_dialog_positive_button = 2131230857; // aapt resource value: 0x7f08008a - public const int hockeyapp_update_dialog_negative_button = 2131230858; + public const int hockeyapp_paint_indicator_toast = 2131230858; // aapt resource value: 0x7f08008b - public const int hockeyapp_update_dialog_positive_button = 2131230859; + public const int hockeyapp_paint_menu_clear = 2131230859; // aapt resource value: 0x7f08008c - public const int hockeyapp_update_dialog_title = 2131230860; + public const int hockeyapp_paint_menu_save = 2131230860; // aapt resource value: 0x7f08008d - public const int hockeyapp_update_mandatory_toast = 2131230861; + public const int hockeyapp_paint_menu_undo = 2131230861; // aapt resource value: 0x7f08008e - public const int hockeyapp_update_version_details_label = 2131230862; + public const int hockeyapp_permission_dialog_negative_button = 2131230862; + + // aapt resource value: 0x7f08008f + public const int hockeyapp_permission_dialog_positive_button = 2131230863; + + // aapt resource value: 0x7f080090 + public const int hockeyapp_permission_update_message = 2131230864; + + // aapt resource value: 0x7f080091 + public const int hockeyapp_permission_update_title = 2131230865; + + // aapt resource value: 0x7f080092 + public const int hockeyapp_update_button = 2131230866; + + // aapt resource value: 0x7f080093 + public const int hockeyapp_update_dialog_message = 2131230867; + + // aapt resource value: 0x7f080094 + public const int hockeyapp_update_dialog_negative_button = 2131230868; + + // aapt resource value: 0x7f080095 + public const int hockeyapp_update_dialog_positive_button = 2131230869; + + // aapt resource value: 0x7f080096 + public const int hockeyapp_update_dialog_title = 2131230870; + + // aapt resource value: 0x7f080097 + public const int hockeyapp_update_mandatory_toast = 2131230871; + + // aapt resource value: 0x7f080098 + public const int hockeyapp_update_version_details_label = 2131230872; // aapt resource value: 0x7f080045 public const int library_name = 2131230789; diff --git a/src/Android/Services/AndroidKeyStoreStorageService.cs b/src/Android/Services/AndroidKeyStoreStorageService.cs index 5cab50af8..b2944e491 100644 --- a/src/Android/Services/AndroidKeyStoreStorageService.cs +++ b/src/Android/Services/AndroidKeyStoreStorageService.cs @@ -76,7 +76,7 @@ namespace Bit.Android.Services return TryGetAndMigrate(key); } - var cs = _settings.GetValueOrDefault(formattedKey); + var cs = _settings.GetValueOrDefault(formattedKey, null); if(string.IsNullOrWhiteSpace(cs)) { return null; @@ -201,7 +201,7 @@ namespace Bit.Android.Services return null; } - var encKey = _settings.GetValueOrDefault(aesKey); + var encKey = _settings.GetValueOrDefault(aesKey, null); if(string.IsNullOrWhiteSpace(encKey)) { return null; @@ -312,7 +312,7 @@ namespace Bit.Android.Services { try { - var cs = _settings.GetValueOrDefault(formattedKeyV1); + var cs = _settings.GetValueOrDefault(formattedKeyV1, null); var value = App.Utilities.Crypto.AesCbcDecrypt(new App.Models.CipherString(cs), aesKeyV1); Store(key, value); return value; diff --git a/src/Android/packages.config b/src/Android/packages.config index 576f8b591..d42d40529 100644 --- a/src/Android/packages.config +++ b/src/Android/packages.config @@ -5,7 +5,7 @@ - + @@ -70,7 +70,7 @@ - + diff --git a/src/App/App.csproj b/src/App/App.csproj index bf634442f..96fed7ab0 100644 --- a/src/App/App.csproj +++ b/src/App/App.csproj @@ -413,8 +413,8 @@ ..\..\packages\Xamarin.FFImageLoading.2.2.9\lib\portable-net45+win8+wpa81+wp8\FFImageLoading.Platform.dll - - ..\..\packages\HockeySDK.Xamarin.4.1.2\lib\portable-net45+wp8+wpa81+win8+MonoAndroid10+MonoTouch10+Xamarin.iOS10\HockeySDK.dll + + ..\..\packages\HockeySDK.Xamarin.4.1.5\lib\portable-net45+wp8+wpa81+win8+MonoAndroid10+MonoTouch10+Xamarin.iOS10\HockeySDK.dll ..\..\packages\CommonServiceLocator.1.3\lib\portable-net4+sl5+netcore45+wpa81+wp8\Microsoft.Practices.ServiceLocation.dll @@ -459,11 +459,11 @@ ..\..\packages\Plugin.Fingerprint.1.4.4\lib\portable-net45+win8+wpa81+wp8\Plugin.Fingerprint.Abstractions.dll - - ..\..\packages\Xam.Plugins.Settings.2.5.4\lib\portable-net45+wp80+win8+wpa81\Plugin.Settings.dll + + ..\..\packages\Xam.Plugins.Settings.3.0.1\lib\netstandard1.0\Plugin.Settings.dll - - ..\..\packages\Xam.Plugins.Settings.2.5.4\lib\portable-net45+wp80+win8+wpa81\Plugin.Settings.Abstractions.dll + + ..\..\packages\Xam.Plugins.Settings.3.0.1\lib\netstandard1.0\Plugin.Settings.Abstractions.dll ..\..\packages\Xam.Plugin.PushNotification.1.2.4\lib\portable-net45+wp8+wpa81+win8+MonoAndroid10+MonoTouch10+Xamarin.iOS10+UAP10\PushNotification.Plugin.dll diff --git a/src/App/Pages/Settings/SettingsSyncPage.cs b/src/App/Pages/Settings/SettingsSyncPage.cs index 6eda27905..4fcedc14e 100644 --- a/src/App/Pages/Settings/SettingsSyncPage.cs +++ b/src/App/Pages/Settings/SettingsSyncPage.cs @@ -77,7 +77,11 @@ namespace Bit.App.Pages private void SetLastSync() { - var lastSyncDate = _settings.GetValueOrDefault(Constants.LastSync, null); + DateTime? lastSyncDate = null; + if(_settings.Contains(Constants.LastSync)) + { + lastSyncDate = _settings.GetValueOrDefault(Constants.LastSync, DateTime.UtcNow); + } try { LastSyncLabel.Text = AppResources.LastSync + " " + lastSyncDate?.ToLocalTime().ToString() ?? AppResources.Never; diff --git a/src/App/Pages/Vault/VaultListLoginsPage.cs b/src/App/Pages/Vault/VaultListLoginsPage.cs index 0d6d0ecf8..abca5e903 100644 --- a/src/App/Pages/Vault/VaultListLoginsPage.cs +++ b/src/App/Pages/Vault/VaultListLoginsPage.cs @@ -239,9 +239,8 @@ namespace Bit.App.Pages var pushPromptShow = _settings.GetValueOrDefault(Constants.PushInitialPromptShown, false); Action registerAction = () => { - var lastPushRegistration = _settings.GetValueOrDefault(Constants.PushLastRegistrationDate, null); - if(!pushPromptShow || !lastPushRegistration.HasValue - || (DateTime.UtcNow - lastPushRegistration) > TimeSpan.FromDays(1)) + var lastPushRegistration = _settings.GetValueOrDefault(Constants.PushLastRegistrationDate, DateTime.MinValue); + if(!pushPromptShow || DateTime.UtcNow - lastPushRegistration > TimeSpan.FromDays(1)) { _pushNotification.Register(); } diff --git a/src/App/Services/AppSettingsService.cs b/src/App/Services/AppSettingsService.cs index 6b8f29138..6e49802e5 100644 --- a/src/App/Services/AppSettingsService.cs +++ b/src/App/Services/AppSettingsService.cs @@ -78,7 +78,7 @@ namespace Bit.App.Services { get { - return _settings.GetValueOrDefault(Constants.SecurityStamp); + return _settings.GetValueOrDefault(Constants.SecurityStamp, null); } set { @@ -90,7 +90,7 @@ namespace Bit.App.Services { get { - return _settings.GetValueOrDefault(Constants.BaseUrl); + return _settings.GetValueOrDefault(Constants.BaseUrl, null); } set { @@ -108,7 +108,7 @@ namespace Bit.App.Services { get { - return _settings.GetValueOrDefault(Constants.WebVaultUrl); + return _settings.GetValueOrDefault(Constants.WebVaultUrl, null); } set { @@ -126,7 +126,7 @@ namespace Bit.App.Services { get { - return _settings.GetValueOrDefault(Constants.ApiUrl); + return _settings.GetValueOrDefault(Constants.ApiUrl, null); } set { @@ -144,7 +144,7 @@ namespace Bit.App.Services { get { - return _settings.GetValueOrDefault(Constants.IdentityUrl); + return _settings.GetValueOrDefault(Constants.IdentityUrl, null); } set { diff --git a/src/App/Services/CryptoService.cs b/src/App/Services/CryptoService.cs index d0f246da2..8185b1da0 100644 --- a/src/App/Services/CryptoService.cs +++ b/src/App/Services/CryptoService.cs @@ -78,7 +78,7 @@ namespace Bit.App.Services { if(_encKey == null && _settings.Contains(EncKeyKey)) { - var encKey = _settings.GetValueOrDefault(EncKeyKey); + var encKey = _settings.GetValueOrDefault(EncKeyKey, null); var encKeyCs = new CipherString(encKey); try { @@ -102,7 +102,7 @@ namespace Bit.App.Services { if(_privateKey == null && _settings.Contains(PrivateKeyKey)) { - var encPrivateKey = _settings.GetValueOrDefault(PrivateKeyKey); + var encPrivateKey = _settings.GetValueOrDefault(PrivateKeyKey, null); var encPrivateKeyCs = new CipherString(encPrivateKey); try { @@ -125,7 +125,7 @@ namespace Bit.App.Services { if((!_orgKeys?.Any() ?? true) && _settings.Contains(OrgKeysKey)) { - var orgKeysEncDictJson = _settings.GetValueOrDefault(OrgKeysKey); + var orgKeysEncDictJson = _settings.GetValueOrDefault(OrgKeysKey, null); if(!string.IsNullOrWhiteSpace(orgKeysEncDictJson)) { _orgKeys = new Dictionary(); diff --git a/src/App/Services/SyncService.cs b/src/App/Services/SyncService.cs index 016c77d28..aff4442b1 100644 --- a/src/App/Services/SyncService.cs +++ b/src/App/Services/SyncService.cs @@ -242,8 +242,8 @@ namespace Bit.App.Services public async Task FullSyncAsync(TimeSpan syncThreshold, bool forceSync = false) { - DateTime? lastSync = _settings.GetValueOrDefault(Constants.LastSync, null); - if(lastSync != null && DateTime.UtcNow - lastSync.Value < syncThreshold) + var lastSync = _settings.GetValueOrDefault(Constants.LastSync, DateTime.MinValue); + if(DateTime.UtcNow - lastSync < syncThreshold) { return false; } @@ -307,11 +307,11 @@ namespace Bit.App.Services private async Task NeedsToSyncAsync() { - DateTime? lastSync = _settings.GetValueOrDefault(Constants.LastSync, null); - if(!lastSync.HasValue) + if(!_settings.Contains(Constants.LastSync)) { return true; } + var lastSync = _settings.GetValueOrDefault(Constants.LastSync, DateTime.MinValue); var accountRevisionDate = await _accountsApiRepository.GetAccountRevisionDateAsync(); if(accountRevisionDate.Succeeded && accountRevisionDate.Result.HasValue && diff --git a/src/App/Utilities/Helpers.cs b/src/App/Utilities/Helpers.cs index 4246f8bee..67e417a9c 100644 --- a/src/App/Utilities/Helpers.cs +++ b/src/App/Utilities/Helpers.cs @@ -44,7 +44,7 @@ namespace Bit.App.Utilities public static bool PerformUpdateTasks(ISettings settings, IAppInfoService appInfoService, IDatabaseService databaseService) { - var lastBuild = settings.GetValueOrDefault(Constants.LastBuildKey); + var lastBuild = settings.GetValueOrDefault(Constants.LastBuildKey, null); if(InDebugMode() || lastBuild == null || lastBuild != appInfoService.Build) { settings.AddOrUpdateValue(Constants.LastBuildKey, appInfoService.Build); diff --git a/src/App/packages.config b/src/App/packages.config index 1c23507f6..e8359ad7b 100644 --- a/src/App/packages.config +++ b/src/App/packages.config @@ -2,7 +2,7 @@ - + @@ -17,7 +17,7 @@ - + diff --git a/src/iOS.Core/iOS.Core.csproj b/src/iOS.Core/iOS.Core.csproj index 57b24f2be..c8f33d1b8 100644 --- a/src/iOS.Core/iOS.Core.csproj +++ b/src/iOS.Core/iOS.Core.csproj @@ -37,21 +37,21 @@ ..\..\packages\Xamarin.Google.iOS.Analytics.3.17.0.1\lib\Xamarin.iOS10\Google.Analytics.dll - - ..\..\packages\HockeySDK.Xamarin.4.1.2\lib\Xamarin.iOS10\HockeySDK.dll + + ..\..\packages\HockeySDK.Xamarin.4.1.5\lib\Xamarin.iOS10\HockeySDK.dll - ..\..\packages\HockeySDK.Xamarin.4.1.2\lib\Xamarin.iOS10\HockeySDK.iOSBindings.dll + ..\..\packages\HockeySDK.Xamarin.4.1.5\lib\Xamarin.iOS10\HockeySDK.iOSBindings.dll ..\..\packages\Newtonsoft.Json.9.0.1\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll True - - ..\..\packages\Xam.Plugins.Settings.2.5.4\lib\Xamarin.iOS10\Plugin.Settings.dll + + ..\..\packages\Xam.Plugins.Settings.3.0.1\lib\Xamarin.iOS10\Plugin.Settings.dll - - ..\..\packages\Xam.Plugins.Settings.2.5.4\lib\Xamarin.iOS10\Plugin.Settings.Abstractions.dll + + ..\..\packages\Xam.Plugins.Settings.3.0.1\lib\Xamarin.iOS10\Plugin.Settings.Abstractions.dll ..\..\packages\sqlite-net-pcl.1.4.118\lib\netstandard1.1\SQLite-net.dll diff --git a/src/iOS.Core/packages.config b/src/iOS.Core/packages.config index f89d059ba..dad5428fe 100644 --- a/src/iOS.Core/packages.config +++ b/src/iOS.Core/packages.config @@ -1,12 +1,12 @@  - + - + diff --git a/src/iOS.Extension/iOS.Extension.csproj b/src/iOS.Extension/iOS.Extension.csproj index 6b5c699c4..a010040d0 100644 --- a/src/iOS.Extension/iOS.Extension.csproj +++ b/src/iOS.Extension/iOS.Extension.csproj @@ -274,11 +274,11 @@ ..\..\packages\Xamarin.Google.iOS.Analytics.3.17.0.1\lib\Xamarin.iOS10\Google.Analytics.dll - - ..\..\packages\HockeySDK.Xamarin.4.1.2\lib\Xamarin.iOS10\HockeySDK.dll + + ..\..\packages\HockeySDK.Xamarin.4.1.5\lib\Xamarin.iOS10\HockeySDK.dll - ..\..\packages\HockeySDK.Xamarin.4.1.2\lib\Xamarin.iOS10\HockeySDK.iOSBindings.dll + ..\..\packages\HockeySDK.Xamarin.4.1.5\lib\Xamarin.iOS10\HockeySDK.iOSBindings.dll ..\..\packages\Newtonsoft.Json.9.0.1\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll @@ -316,11 +316,11 @@ ..\..\packages\Plugin.Fingerprint.1.4.4\lib\Xamarin.iOS10\Plugin.Fingerprint.Abstractions.dll - - ..\..\packages\Xam.Plugins.Settings.2.5.4\lib\Xamarin.iOS10\Plugin.Settings.dll + + ..\..\packages\Xam.Plugins.Settings.3.0.1\lib\Xamarin.iOS10\Plugin.Settings.dll - - ..\..\packages\Xam.Plugins.Settings.2.5.4\lib\Xamarin.iOS10\Plugin.Settings.Abstractions.dll + + ..\..\packages\Xam.Plugins.Settings.3.0.1\lib\Xamarin.iOS10\Plugin.Settings.Abstractions.dll ..\..\packages\SimpleInjector.4.0.7\lib\netstandard1.3\SimpleInjector.dll diff --git a/src/iOS.Extension/packages.config b/src/iOS.Extension/packages.config index 401282e64..988e072c2 100644 --- a/src/iOS.Extension/packages.config +++ b/src/iOS.Extension/packages.config @@ -2,7 +2,7 @@ - + @@ -63,7 +63,7 @@ - + diff --git a/src/iOS/iOS.csproj b/src/iOS/iOS.csproj index 2ec820463..369d31418 100644 --- a/src/iOS/iOS.csproj +++ b/src/iOS/iOS.csproj @@ -289,11 +289,11 @@ ..\..\packages\Xamarin.Google.iOS.Analytics.3.17.0.1\lib\Xamarin.iOS10\Google.Analytics.dll - - ..\..\packages\HockeySDK.Xamarin.4.1.2\lib\Xamarin.iOS10\HockeySDK.dll + + ..\..\packages\HockeySDK.Xamarin.4.1.5\lib\Xamarin.iOS10\HockeySDK.dll - ..\..\packages\HockeySDK.Xamarin.4.1.2\lib\Xamarin.iOS10\HockeySDK.iOSBindings.dll + ..\..\packages\HockeySDK.Xamarin.4.1.5\lib\Xamarin.iOS10\HockeySDK.iOSBindings.dll ..\..\packages\Newtonsoft.Json.9.0.1\lib\portable-net45+wp80+win8+wpa81\Newtonsoft.Json.dll @@ -331,11 +331,11 @@ ..\..\packages\Plugin.Fingerprint.1.4.4\lib\Xamarin.iOS10\Plugin.Fingerprint.Abstractions.dll - - ..\..\packages\Xam.Plugins.Settings.2.5.4\lib\Xamarin.iOS10\Plugin.Settings.dll + + ..\..\packages\Xam.Plugins.Settings.3.0.1\lib\Xamarin.iOS10\Plugin.Settings.dll - - ..\..\packages\Xam.Plugins.Settings.2.5.4\lib\Xamarin.iOS10\Plugin.Settings.Abstractions.dll + + ..\..\packages\Xam.Plugins.Settings.3.0.1\lib\Xamarin.iOS10\Plugin.Settings.Abstractions.dll ..\..\packages\Xam.Plugin.PushNotification.1.2.4\lib\Xamarin.iOS10\PushNotification.Plugin.dll diff --git a/src/iOS/packages.config b/src/iOS/packages.config index 0e5a21def..2aaffc3fb 100644 --- a/src/iOS/packages.config +++ b/src/iOS/packages.config @@ -4,7 +4,7 @@ - + @@ -68,7 +68,7 @@ - + diff --git a/test/App.Test/App.Test.csproj b/test/App.Test/App.Test.csproj index 4cec1bda7..1ee637c27 100644 --- a/test/App.Test/App.Test.csproj +++ b/test/App.Test/App.Test.csproj @@ -68,11 +68,11 @@ ..\..\packages\Plugin.Fingerprint.1.4.4\lib\net45\Plugin.Fingerprint.Abstractions.dll - - ..\..\packages\Xam.Plugins.Settings.2.5.4\lib\net45\Plugin.Settings.dll + + ..\..\packages\Xam.Plugins.Settings.3.0.1\lib\net45\Plugin.Settings.dll - - ..\..\packages\Xam.Plugins.Settings.2.5.4\lib\net45\Plugin.Settings.Abstractions.dll + + ..\..\packages\Xam.Plugins.Settings.3.0.1\lib\net45\Plugin.Settings.Abstractions.dll diff --git a/test/App.Test/packages.config b/test/App.Test/packages.config index 29d5974ac..b3215239d 100644 --- a/test/App.Test/packages.config +++ b/test/App.Test/packages.config @@ -8,7 +8,7 @@ - +