Merge pull request #2142 from nikoyak/fix-1956

fix crashes/unexpected logouts (#1956, #1936, #1909)
This commit is contained in:
PhilippC
2023-01-04 22:23:31 +01:00
committed by GitHub
3 changed files with 10 additions and 33 deletions

View File

@@ -478,20 +478,24 @@ namespace keepass2android
builder.SetPositiveButton(activity.GetString(Android.Resource.String.Yes), builder.SetPositiveButton(activity.GetString(Android.Resource.String.Yes),
(dlgSender, dlgEvt) => (dlgSender, dlgEvt) =>
{ {
CurrentDb.ReloadRequested = true; CurrentDb.ReloadRequested = true;
activity.SetResult(KeePass.ExitReloadDb); activity.SetResult(KeePass.ExitReloadDb);
activity.Finish(); activity.Finish();
if (actionOnResult != null) if (actionOnResult != null)
{
actionOnResult(true); actionOnResult(true);
actionOnResult = null;
}
}); });
builder.SetNegativeButton(activity.GetString(Android.Resource.String.No), (dlgSender, dlgEvt) => builder.SetNegativeButton(activity.GetString(Android.Resource.String.No), (dlgSender, dlgEvt) =>
{ {
if (actionOnResult != null) if (actionOnResult != null)
{
actionOnResult(false); actionOnResult(false);
actionOnResult = null;
}
}); });
Dialog dialog = builder.Create(); Dialog dialog = builder.Create();

View File

@@ -72,20 +72,7 @@ namespace keepass2android.view
_textView = (TextView)ev.FindViewById(Resource.Id.entry_text); _textView = (TextView)ev.FindViewById(Resource.Id.entry_text);
_textView.TextSize = PrefsUtil.GetListTextSize(groupActivity); _textView.TextSize = PrefsUtil.GetListTextSize(groupActivity);
Database db; Database db = App.Kp2a.FindDatabaseForElement(pw);
try
{
db = App.Kp2a.FindDatabaseForElement(pw);
}
catch (Exception e)
{
//for some reason, since Android 12 we get here when the database is reloaded (after making remote changes and selecting sync)
//we can just ignore this.
Console.WriteLine(e);
return;
}
ev.FindViewById(Resource.Id.entry_icon_bkg).Visibility = db.DrawableFactory.IsWhiteIconSet ? ViewStates.Visible : ViewStates.Gone; ev.FindViewById(Resource.Id.entry_icon_bkg).Visibility = db.DrawableFactory.IsWhiteIconSet ? ViewStates.Visible : ViewStates.Gone;

View File

@@ -81,22 +81,8 @@ namespace keepass2android.view
_pwGroup = pw; _pwGroup = pw;
ImageView iv = (ImageView) gv.FindViewById(Resource.Id.icon); ImageView iv = (ImageView) gv.FindViewById(Resource.Id.icon);
Database db = App.Kp2a.FindDatabaseForElement(pw);
Database db; db.DrawableFactory.AssignDrawableTo(iv, _groupBaseActivity, db.KpDatabase, pw.IconId, pw.CustomIconUuid, true);
try
{
db = App.Kp2a.FindDatabaseForElement(pw);
}
catch (Exception e)
{
//for some reason, since Android 12 we get here when the database is reloaded (after making remote changes and selecting sync)
//we can just ignore this.
Console.WriteLine(e);
return;
}
db.DrawableFactory.AssignDrawableTo(iv, _groupBaseActivity, db.KpDatabase, pw.IconId, pw.CustomIconUuid, true);
gv.FindViewById(Resource.Id.icon).Visibility = ViewStates.Visible; gv.FindViewById(Resource.Id.icon).Visibility = ViewStates.Visible;
gv.FindViewById(Resource.Id.check_mark).Visibility = ViewStates.Invisible; gv.FindViewById(Resource.Id.check_mark).Visibility = ViewStates.Invisible;