mirror of
https://github.com/bitwarden/mobile
synced 2026-01-10 12:33:28 +00:00
[EC-325] Settings option to allow screen capture on Android (#1914)
* settings option to allow screen capture on Android * Improved code on Screen Capture and added prompt to the user to allow screen capture * EC-325 Removed async on OnCreate of MainActivity given that's not necessary anymore Co-authored-by: Federico Maccaroni <fedemkr@gmail.com>
This commit is contained in:
committed by
GitHub
parent
cb0c52fb26
commit
cf222bd0c3
@@ -148,6 +148,8 @@ namespace Bit.Core.Abstractions
|
||||
Task SetRefreshTokenAsync(string value, bool skipTokenStorage, string userId = null);
|
||||
Task<string> GetTwoFactorTokenAsync(string email = null);
|
||||
Task SetTwoFactorTokenAsync(string value, string email = null);
|
||||
Task<bool> GetScreenCaptureAllowedAsync(string userId = null);
|
||||
Task SetScreenCaptureAllowedAsync(bool value, string userId = null);
|
||||
Task SaveExtensionActiveUserIdToStorageAsync(string userId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -94,11 +94,13 @@ namespace Bit.Core.Models.Domain
|
||||
EnvironmentUrls = copy.EnvironmentUrls;
|
||||
VaultTimeout = copy.VaultTimeout;
|
||||
VaultTimeoutAction = copy.VaultTimeoutAction;
|
||||
ScreenCaptureAllowed = copy.ScreenCaptureAllowed;
|
||||
}
|
||||
|
||||
public EnvironmentUrlData EnvironmentUrls;
|
||||
public int? VaultTimeout;
|
||||
public VaultTimeoutAction? VaultTimeoutAction;
|
||||
public bool ScreenCaptureAllowed;
|
||||
}
|
||||
|
||||
public class AccountVolatileData
|
||||
|
||||
@@ -191,7 +191,7 @@ namespace Bit.Core.Services
|
||||
EnvironmentUrls = environmentUrls,
|
||||
VaultTimeout = vaultTimeout,
|
||||
VaultTimeoutAction =
|
||||
vaultTimeoutAction == "logout" ? VaultTimeoutAction.Logout : VaultTimeoutAction.Lock,
|
||||
vaultTimeoutAction == "logout" ? VaultTimeoutAction.Logout : VaultTimeoutAction.Lock
|
||||
};
|
||||
var state = new State { Accounts = new Dictionary<string, Account> { [userId] = account } };
|
||||
state.ActiveUserId = userId;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Bit.Core.Abstractions;
|
||||
@@ -558,6 +559,27 @@ namespace Bit.Core.Services
|
||||
await SaveAccountAsync(account, reconciledOptions);
|
||||
}
|
||||
|
||||
public async Task<bool> GetScreenCaptureAllowedAsync(string userId = null)
|
||||
{
|
||||
if (CoreHelpers.ForceScreenCaptureEnabled())
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return (await GetAccountAsync(
|
||||
ReconcileOptions(new StorageOptions { UserId = userId }, await GetDefaultStorageOptionsAsync())
|
||||
))?.Settings?.ScreenCaptureAllowed ?? false;
|
||||
}
|
||||
|
||||
public async Task SetScreenCaptureAllowedAsync(bool value, string userId = null)
|
||||
{
|
||||
var reconciledOptions = ReconcileOptions(new StorageOptions { UserId = userId },
|
||||
await GetDefaultStorageOptionsAsync());
|
||||
var account = await GetAccountAsync(reconciledOptions);
|
||||
account.Settings.ScreenCaptureAllowed = value;
|
||||
await SaveAccountAsync(account, reconciledOptions);
|
||||
}
|
||||
|
||||
public async Task<DateTime?> GetLastFileCacheClearAsync()
|
||||
{
|
||||
var options = await GetDefaultStorageOptionsAsync();
|
||||
@@ -1461,6 +1483,7 @@ namespace Bit.Core.Services
|
||||
var existingAccount = state.Accounts[account.Profile.UserId];
|
||||
account.Settings.VaultTimeout = existingAccount.Settings.VaultTimeout;
|
||||
account.Settings.VaultTimeoutAction = existingAccount.Settings.VaultTimeoutAction;
|
||||
account.Settings.ScreenCaptureAllowed = existingAccount.Settings.ScreenCaptureAllowed;
|
||||
}
|
||||
|
||||
// New account defaults
|
||||
|
||||
@@ -34,6 +34,25 @@ namespace Bit.Core.Utilities
|
||||
#endif
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns whether to force enabling the screen capture.
|
||||
/// On Debug it will allow screen capture by default but this method
|
||||
/// makes it easier to test the change on enabling/disabling the feature
|
||||
/// on debug.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// To test enabling/disabling in DEBUG, just return <c>false</c> in the #if condition
|
||||
/// and that's it.
|
||||
/// </remarks>
|
||||
public static bool ForceScreenCaptureEnabled()
|
||||
{
|
||||
#if DEBUG
|
||||
return true;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
public static string GetHostname(string uriString)
|
||||
{
|
||||
var uri = GetUri(uriString);
|
||||
|
||||
Reference in New Issue
Block a user