1
0
mirror of https://github.com/Kopano-dev/kopano-ol-extension.git synced 2023-10-10 13:37:40 +02:00

[KOE-155] Fixes to recursive setting of send-as address in shared folder dialog

This commit is contained in:
Patrick Simpson 2018-05-02 15:40:51 +03:00
parent 08e50f9e42
commit 46ee553c49
2 changed files with 42 additions and 41 deletions

View File

@ -278,22 +278,7 @@ namespace Acacia.Features.SharedFolders
if (folderNode != null)
{
// See if we can obtain it from a parent
for (KTreeNode current = folderNode.Parent; current is FolderTreeNode; current = current.Parent)
{
FolderTreeNode parentNode = (FolderTreeNode)current;
if (parentNode.SharedFolder == null)
break;
if (parentNode.SharedFolder.FlagSendAsOwner)
{
if (!string.IsNullOrWhiteSpace(parentNode.SharedFolder.SendAsAddress))
{
folder.SendAsAddress = parentNode.SharedFolder.SendAsAddress;
break;
}
}
else break;
}
TryInitSendAsAddressParent(folderNode as FolderTreeNode);
if (!string.IsNullOrWhiteSpace(folder.SendAsAddress))
continue;
@ -787,8 +772,7 @@ namespace Acacia.Features.SharedFolders
checkSendAs.ThreeState = true;
}
textSendAsAddress.Text = "";
TryInitSendAsAddress();
textSendAsAddress.Text = TryInitSendAsAddress();
EnableSendAsAddress();
}
// Reminders shown if any node supports it
@ -896,13 +880,20 @@ namespace Acacia.Features.SharedFolders
}
}
private void TryInitSendAsAddress()
private string TryInitSendAsAddress()
{
// Initialise to the send-as address specified for an existing share, or a simple GAB lookup otherwise
string email =
_optionSendAsNodes[0].SharedFolder?.SendAsAddress ??
_featureSendAs?.FindSendAsAddress(_account, _optionSendAsNodes[0].AvailableFolder.Store);
if (string.IsNullOrEmpty(email))
{
// Try to initialise from the parent
TryInitSendAsAddressParent(_optionSendAsNodes[0]);
email = _optionSendAsNodes[0].SharedFolder?.SendAsAddress;
}
if (!string.IsNullOrEmpty(email))
{
// Set the entry field
@ -923,6 +914,30 @@ namespace Acacia.Features.SharedFolders
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
return email;
}
private void TryInitSendAsAddressParent(FolderTreeNode node)
{
if (node == null)
return;
for (KTreeNode current = node.Parent; current is FolderTreeNode; current = current.Parent)
{
FolderTreeNode parentNode = (FolderTreeNode)current;
if (parentNode.SharedFolder == null)
break;
if (parentNode.SharedFolder.FlagSendAsOwner)
{
if (!string.IsNullOrWhiteSpace(parentNode.SharedFolder.SendAsAddress))
{
node.SharedFolder.SendAsAddress = parentNode.SharedFolder.SendAsAddress;
break;
}
}
else break;
}
}
private void EnableSendAsAddress()
@ -948,25 +963,6 @@ namespace Acacia.Features.SharedFolders
if (node.SharedFolder.SendAsAddress != textSendAsAddress.Text)
{
node.SharedFolder = node.SharedFolder.WithSendAsAddress(textSendAsAddress.Text);
// Try any children
ApplySendAsAddressChildren(node, textSendAsAddress.Text);
}
}
}
private void ApplySendAsAddressChildren(FolderTreeNode node, string address)
{
foreach(FolderTreeNode child in node.Children)
{
if (child.SharedFolder == null || !child.SharedFolder.FlagSendAsOwner)
continue;
if (string.IsNullOrWhiteSpace(child.SharedFolder.SendAsAddress))
{
child.SharedFolder = child.SharedFolder.WithSendAsAddress(address);
ApplySendAsAddressChildren(child, address);
}
}
}

View File

@ -169,7 +169,7 @@ namespace Acacia.ZPush.API.SharedFolders
private SharedFolder DoClone(SoapData newData)
{
SharedFolder clone = new SharedFolder(newData);
clone.SendAsAddress = SendAsAddress;
clone._sendAsAddress = SendAsAddress;
return clone;
}
@ -210,10 +210,15 @@ namespace Acacia.ZPush.API.SharedFolders
#region Send as
private string _sendAsAddress;
public string SendAsAddress
{
get;
set;
get { return _sendAsAddress; }
set
{
this._sendAsAddress = value;
}
}
public SharedFolder WithSendAsAddress(string sendAs)