bitwarden-android/src/App/Services/AppIdService.cs
2016-08-06 19:03:48 -04:00

41 lines
1.2 KiB
C#

using System;
using Bit.App.Abstractions;
namespace Bit.App.Services
{
public class AppIdService : IAppIdService
{
private const string AppIdKey = "appId";
private const string AnonymousAppIdKey = "anonymousAppId";
private readonly ISecureStorageService _secureStorageService;
private Guid? _appId;
private Guid? _anonymousAppId;
public AppIdService(ISecureStorageService secureStorageService)
{
_secureStorageService = secureStorageService;
}
public string AppId => GetAppId(AppIdKey, ref _appId);
public string AnonymousAppId => GetAppId(AnonymousAppIdKey, ref _anonymousAppId);
private string GetAppId(string key, ref Guid? appId)
{
if(appId.HasValue)
{
return appId.Value.ToString();
}
var appIdBytes = _secureStorageService.Retrieve(key);
if(appIdBytes != null)
{
appId = new Guid(appIdBytes);
return appId.Value.ToString();
}
appId = Guid.NewGuid();
_secureStorageService.Store(key, appId.Value.ToByteArray());
return appId.Value.ToString();
}
}
}