mirror of
https://github.com/moparisthebest/keepass2android
synced 2025-02-07 02:10:10 -05:00
Bug fixes:
- ShowUserNotifications now correctly defaults to true in CreateEntryThenCloseTask - fixed message of donation dialog - fixed problem with exception in TrayTotpHandler when displaying toast
This commit is contained in:
parent
073ae00a6d
commit
388dfd6fb0
@ -7,6 +7,6 @@ namespace PluginTOTP
|
||||
|
||||
interface ITotpPluginAdapter
|
||||
{
|
||||
TotpData GetTotpData(IDictionary<string, string> entryFields, Context ctx);
|
||||
TotpData GetTotpData(IDictionary<string, string> entryFields, Context ctx, bool muteWarnings);
|
||||
}
|
||||
}
|
@ -19,7 +19,7 @@ namespace PluginTOTP
|
||||
const string SizeParameter = "size";
|
||||
|
||||
|
||||
public TotpData GetTotpData(IDictionary<string, string> entryFields, Context ctx)
|
||||
public TotpData GetTotpData(IDictionary<string, string> entryFields, Context ctx, bool muteWarnings)
|
||||
{
|
||||
return new KeeOtpHandler(entryFields, ctx).GetData();
|
||||
}
|
||||
|
@ -17,7 +17,7 @@ namespace keepass2android
|
||||
{
|
||||
foreach (ITotpPluginAdapter adapter in _pluginAdapters)
|
||||
{
|
||||
TotpData totpData = adapter.GetTotpData(App.Kp2a.GetDb().LastOpenedEntry.OutputStrings.ToDictionary(pair => StrUtil.SafeXmlString(pair.Key), pair => pair.Value.ReadString()), Application.Context);
|
||||
TotpData totpData = adapter.GetTotpData(App.Kp2a.GetDb().LastOpenedEntry.OutputStrings.ToDictionary(pair => StrUtil.SafeXmlString(pair.Key), pair => pair.Value.ReadString()), Application.Context, false);
|
||||
if (totpData.IsTotpEnry)
|
||||
{
|
||||
new UpdateTotpTimerTask(Application.Context, adapter).Run();
|
||||
|
@ -1,30 +1,34 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Android.Content;
|
||||
using Android.OS;
|
||||
using Android.Preferences;
|
||||
using Android.Widget;
|
||||
using KeePassLib.Collections;
|
||||
using keepass2android;
|
||||
|
||||
namespace PluginTOTP
|
||||
{
|
||||
class TrayTotpPluginAdapter : ITotpPluginAdapter
|
||||
{
|
||||
public TotpData GetTotpData(IDictionary<string, string> entryFields, Context ctx)
|
||||
public TotpData GetTotpData(IDictionary<string, string> entryFields, Context ctx, bool muteWarnings)
|
||||
{
|
||||
return new TrayTotpHandler(ctx).GetTotpData(entryFields);
|
||||
return new TrayTotpHandler(ctx, new Handler(Looper.MainLooper), muteWarnings).GetTotpData(entryFields);
|
||||
}
|
||||
|
||||
private class TrayTotpHandler
|
||||
{
|
||||
private readonly Context _ctx;
|
||||
private readonly Handler _uiThreadHandler;
|
||||
private readonly bool _muteWarnings;
|
||||
|
||||
private string SeedFieldName { get { return PreferenceManager.GetDefaultSharedPreferences(_ctx).GetString(_ctx.GetString(Resource.String.TrayTotp_SeedField_key), "TOTP Seed"); } }
|
||||
private string SettingsFieldName { get { return PreferenceManager.GetDefaultSharedPreferences(_ctx).GetString(_ctx.GetString(Resource.String.TrayTotp_SettingsField_key), "TOTP Settings"); } }
|
||||
|
||||
public TrayTotpHandler(Context ctx)
|
||||
public TrayTotpHandler(Context ctx, Handler uiThreadHandler, bool muteWarnings)
|
||||
{
|
||||
_ctx = ctx;
|
||||
_uiThreadHandler = uiThreadHandler;
|
||||
_muteWarnings = muteWarnings;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -156,7 +160,18 @@ namespace PluginTOTP
|
||||
|
||||
private void ShowWarning(string warning)
|
||||
{
|
||||
Toast.MakeText(_ctx, warning, ToastLength.Short).Show();
|
||||
if (_muteWarnings)
|
||||
return;
|
||||
try
|
||||
{
|
||||
_uiThreadHandler.Post(() => Toast.MakeText(_ctx, warning, ToastLength.Short).Show());
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Kp2aLog.Log(e.ToString());
|
||||
//ignore, it's only a warning
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private bool SeedValidate(IDictionary<string, string> entryFields, out string invalidCharacters)
|
||||
|
@ -31,7 +31,8 @@ namespace PluginTOTP
|
||||
return; //DB was locked
|
||||
|
||||
Dictionary<string, string> entryFields = App.Kp2a.GetDb().LastOpenedEntry.OutputStrings.ToDictionary(pair => StrUtil.SafeXmlString(pair.Key), pair => pair.Value.ReadString());
|
||||
TotpData totpData = _adapter.GetTotpData(entryFields, _context);
|
||||
//mute warnings to avoid repeated display of the toasts
|
||||
TotpData totpData = _adapter.GetTotpData(entryFields, _context, true /*mute warnings*/);
|
||||
if (totpData.IsTotpEnry)
|
||||
{
|
||||
//generate a new totp
|
||||
|
@ -357,7 +357,7 @@ namespace keepass2android
|
||||
if ((bool) args.NewValue)
|
||||
{
|
||||
new AlertDialog.Builder(ctx)
|
||||
.SetTitle(AppNames.AppName)
|
||||
.SetTitle(ctx.GetString(AppNames.AppNameResource))
|
||||
.SetCancelable(false)
|
||||
.SetPositiveButton(Android.Resource.String.Ok, delegate(object o, DialogClickEventArgs eventArgs)
|
||||
{
|
||||
|
@ -586,6 +586,11 @@ namespace keepass2android
|
||||
/// </summary>
|
||||
public class CreateEntryThenCloseTask: AppTask
|
||||
{
|
||||
public CreateEntryThenCloseTask()
|
||||
{
|
||||
ShowUserNotifications = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// extra key if only a URL is passed. optional.
|
||||
/// </summary>
|
||||
|
Loading…
Reference in New Issue
Block a user